ESP8266 - Módulo MOSFET
Este tutorial ensina você a usar o ESP8266 NodeMCU para controlar uma carga DC de 12V, como uma fita LED ou um ventilador, com um módulo MOSFET. Um pino do NodeMCU fornece apenas 3.3V, então ele nunca consegue alimentar sozinho um dispositivo de 12V. Aqui, o pino apenas diz ao módulo o que fazer, e o módulo move a potência de verdade. Em detalhes, vamos aprender:
- O que há nas placas AOD4184, LR7843 e FR120N, e por que um pino de 3.3V é suficiente para acioná-las
- Como ligar juntos o pino D5 (GPIO14) do NodeMCU, o módulo, um adaptador de 12V e uma fita LED de 12V
- Como escrever um código ESP8266 que liga a carga totalmente e a desliga totalmente
- Como mudar a potência da carga passo a passo com a função analogWrite() do ESP8266
Sugerimos:
- Utilizar um relé se o dispositivo que você quer comutar for alimentado pela rede elétrica AC. O módulo MOSFET é somente para DC.
- Utilizar um módulo optoacoplador PC817 se o seu objetivo for o inverso: deixar o ESP8266 detectar um sinal DC de 12V ou 24V.
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Módulo MOSFET
Pense no módulo MOSFET como uma torneira para a eletricidade DC. O ESP8266 gira a torneira, e o adaptador de 12V fornece o fluxo. A torneira pode ficar totalmente aberta, totalmente fechada, ou abrir e fechar muito rápido com PWM. Esse último modo permite que o NodeMCU defina o brilho de uma fita LED ou a velocidade de um ventilador. Outras cargas que você pode acionar assim incluem um motor DC, uma bomba de água, uma válvula solenoide e um pequeno aquecedor.
A mesma página serve para três produtos: AOD4184 (às vezes impresso como D4184), LR7843 e FR120N. As placas deles são idênticas em tamanho, disposição dos pinos e ligação, e rodam o mesmo sketch. A única coisa que muda é o chip MOSFET soldado no meio.
| AOD4184 | LR7843 | FR120N | |
|---|---|---|---|
| MOSFET | AOD4184A (canal N) | IRLR7843 (canal N) | IRFR120N (canal N) |
| Tensão máx. da carga (especificação do MOSFET) | 40V DC | 30V DC | 100V DC |
| Corrente máx. (especificação do MOSFET) | 50A | 161A | 9.4A |
| Resistência ligado RDS(on) | cerca de 7 mΩ | cerca de 3.3 mΩ | cerca de 210 mΩ |
| Corrente prática sem dissipador | cerca de 10–15A | cerca de 15A | cerca de 2A |
| Sinal de controle | lógica de 3.3V / 5V, ativo em HIGH | lógica de 3.3V / 5V, ativo em HIGH | lógica de 3.3V / 5V, ativo em HIGH |
| Isolamento | optoacoplador PC817 | optoacoplador PC817 | optoacoplador PC817 |
| PWM | sim, mantenha ≤ ~1 kHz | sim, mantenha ≤ ~1 kHz | sim, mantenha ≤ ~1 kHz |
| Tipo de carga | somente DC | somente DC | somente DC |
Leia a linha "Corrente máx." com cuidado. Esses números descrevem o chip sozinho em um resfriador perfeito. Uma pequena placa de módulo esquenta muito antes disso, então planeje o seu projeto com base na linha "sem dissipador".
Pinagem do Módulo MOSFET

Há cinco pontos de conexão no total. Dois deles ficam voltados para o NodeMCU, e três ficam voltados para o circuito de 12V.
Conector de sinal (2 pinos, passo de 2.54mm, encaixa em uma protoboard):
- Pino PWM: deve ser conectado a um GPIO do NodeMCU. Neste projeto é o D5, que é o GPIO14 dentro do chip.
- Pino GND: deve ser conectado a um pino G (GND) do NodeMCU, para que o sinal tenha um caminho de retorno.
Bornes de parafuso de alimentação:
- +: deve ser conectado ao fio positivo vindo do adaptador de 12V E ao fio positivo da fita LED. Os dois fios entram neste único terminal.
- LOAD: deve ser conectado ao fio negativo da fita LED. O dreno do MOSFET fica aqui, então este é o fio que realmente é comutado.
- −: deve ser conectado ao fio negativo vindo do adaptador de 12V
※ Nota:
A disposição dos pinos em um módulo pode ser diferente de um fabricante para outro, e até dois lotes do mesmo vendedor podem trazer rótulos um pouco diferentes. É essencial sempre consultar os rótulos impressos no módulo ao usá-lo. Olhe bem de perto!
Por Que um Pino de 3.3V do NodeMCU Consegue Acioná-lo
Muitos MOSFETs de potência precisam de 5V a 10V no gate, o que o ESP8266 não consegue fornecer. Este módulo resolve esse problema com um optoacoplador PC817 na entrada. O sinal precisa passar por esta cadeia: D5 → pino PWM → pequeno resistor → LED dentro do PC817 → luz → fototransistor dentro do PC817 → gate do MOSFET. Um resistor no gate o puxa para 0V sempre que o PC817 está desligado.
Como a luz leva o sinal através do PC817, o lado de 3.3V e o lado de 12V não têm nenhum fio em comum. O módulo mantém o GND do sinal e o GND da carga separados.
O MOSFET é uma peça de canal N colocada no lado baixo, entre o terminal LOAD e o terminal −. Ele corta o fio negativo da carga, e o fio positivo fica conectado o tempo todo. Abaixo está o que acontece para cada sinal que o NodeMCU pode colocar no D5.
D5 em LOW (0V): a Carga Está DESLIGADA
- Nenhuma corrente entra no PC817, então o LED interno dele fica apagado.
- O fototransistor fica desligado, e o resistor do gate mantém o gate do MOSFET em 0V.
- O MOSFET está DESLIGADO. Ele se comporta como uma chave aberta entre LOAD e −.
- O fio negativo da fita LED não tem caminho até o − do adaptador, então nenhuma corrente flui e a fita recebe 0V.
- No código: analogWrite(MOSFET_PIN, 0), que é um ciclo de trabalho de 0%.
D5 em HIGH (3.3V): a Carga Está Totalmente LIGADA
- O pino de 3.3V empurra alguns miliampères pelo LED do PC817. Ele acende dentro do chip, onde você não consegue ver. Um GPIO de 3.3V lida com essa corrente com facilidade.
- O fototransistor liga e passa cerca de metade da alimentação da carga para o gate do MOSFET. Com um adaptador de 12V, o gate recebe cerca de 6V, não os 3.3V da placa.
- O MOSFET liga totalmente. Ele age como uma chave fechada com resistência muito baixa: alguns mΩ para o AOD4184 e o LR7843, cerca de 0.2Ω para o FR120N.
- Agora a corrente flui em um laço: + do adaptador → terminal + → fita LED → terminal LOAD → MOSFET → terminal − → − do adaptador.
- A fita recebe quase os 12V completos e funciona com potência total.
- No código: analogWrite(MOSFET_PIN, 255), que é um ciclo de trabalho de 100%.
D5 Envia PWM: a Carga Recebe Parte da Potência
- Com analogWrite(MOSFET_PIN, value), o D5 alterna entre LOW e HIGH cerca de 1000 vezes por segundo. O valor vai de 0 a 255, e o ciclo de trabalho é value / 255.
- O MOSFET copia o sinal. Ele fica LIGADO em cada parte HIGH e DESLIGADO em cada parte LOW, então a carga recebe pulsos curtos de 12V.
- O ciclo de trabalho é a parte do tempo em que o sinal fica em HIGH. A tensão média e a potência média são o ciclo de trabalho vezes o valor total.
| Valor de analogWrite | Ciclo de trabalho | Tensão média (alimentação de 12V) | O que você vê |
|---|---|---|---|
| 51 | 20% | cerca de 2.4V | a fita brilha fracamente |
| 102 | 40% | cerca de 4.8V | a fita um pouco abaixo da metade |
| 153 | 60% | cerca de 7.2V | a fita um pouco acima da metade |
| 204 | 80% | cerca de 9.6V | a fita quase no máximo |
- A fita LED parece mais fraca. Ela na verdade pisca, mas rápido demais para o olho notar. Um ventilador, motor ou bomba gira mais devagar, porque sua massa em rotação suaviza os pulsos. Um ventilador pode não dar partida com um ciclo de trabalho baixo.
- O PC817 é uma peça lenta. Se a frequência do PWM ficar alta demais, o MOSFET não comuta totalmente, a carga não recebe pulsos limpos e o MOSFET esquenta. Por isso, de cerca de 500 Hz a 1 kHz é a faixa certa.
- Uma trava ou válvula solenoide deve receber somente LOW ou HIGH, nunca PWM.
Mais uma regra vem desse projeto. Como o gate recebe apenas metade da tensão da carga, a alimentação da carga precisa de pelo menos cerca de 6V. Escolha 9V ou mais quando a carga puxar mais do que alguns ampères. Uma alimentação de 5V é fraca demais, então os próprios pinos de 5V ou 3.3V do NodeMCU não podem alimentar a carga.
Diagrama de Ligação
O NodeMCU apenas envia um sinal do D5 e compartilha o seu GND com o conector do módulo, enquanto toda a corrente de 12V flui entre o adaptador, os bornes de parafuso e a fita LED.

This image is created using Fritzing. Click to enlarge image
Para mais informações, veja Pinagem do ESP8266 e como alimentar o ESP8266 e outros componentes.
| ESP8266 NodeMCU / lado de 12V | Módulo MOSFET |
|---|---|
| D5 (GPIO14) | PWM |
| G (GND) | GND |
| + do adaptador de 12V (através do conector de alimentação DC) | + |
| − do adaptador de 12V (através do conector de alimentação DC) | − |
| + da fita LED | + (mesmo terminal do + do adaptador) |
| − da fita LED | LOAD |
WARNING
O ESP8266 é um chip de 3.3V, e 12V em qualquer um de seus pinos, até mesmo o pino VIN, pode destruí-lo. Somente os fios PWM e GND do conector do módulo vão para o NodeMCU. Os fios de 12V ficam nos bornes de parafuso.
Escolhendo outro pino do NodeMCU
Os rótulos impressos no NodeMCU (D0, D1, D2 ...) não são iguais aos números GPIO do chip. Por exemplo, D5 é o GPIO14, D6 é o GPIO12 e D7 é o GPIO13. No código, escreva o rótulo D (como D5) e o core do ESP8266 encontra o GPIO certo para você.
Se o D5 estiver ocupado, D1, D2, D6 e D7 também são boas escolhas. Tente evitar D3 (GPIO0), D4 (GPIO2) e D8 (GPIO15), porque o chip verifica esses pinos na inicialização, e sua carga pode piscar ou a placa pode não iniciar. Também pule o D0 (GPIO16), porque ele não consegue enviar PWM.
Conectando Outros Dispositivos de 12V aos Bornes de Parafuso
Os fios D5 e G no NodeMCU ficam exatamente como mostrado acima para todos os dispositivos abaixo. Só o lado dos bornes de parafuso muda. Cada dispositivo segue a mesma regra:
| Fio | Borne de parafuso |
|---|---|
| + do adaptador | + |
| − do adaptador | − |
| Fio + do dispositivo | + (mesmo terminal do + do adaptador) |
| Fio − do dispositivo | LOAD |
Dois pontos valem para todos eles:
- O adaptador deve fornecer a tensão para a qual o dispositivo foi feito (um dispositivo de 12V precisa de um adaptador de 12V), e nunca menos de 6V, que é o mínimo que o módulo aceita.
- Verifique quanta corrente o dispositivo consome. O FR120N serve somente para cargas pequenas, de cerca de 2A sem dissipador. Para qualquer coisa maior, escolha o AOD4184 ou o LR7843.
O sketch do ESP8266 não muda de um dispositivo para outro. A única exceção é um solenoide: para ele, escreva somente HIGH ou LOW (100% ou 0%) e remova a parte do fade.
Fita LED de 12V (Cor Única)

This image is created using Fritzing. Click to enlarge image
- O fio + da fita (muitas vezes impresso 12V) vai para +, e o fio − da fita vai para LOAD.
- Uma fita LED não é uma bobina, então não precisa de diodo.
- O PWM define o brilho. Uma fita mais longa puxa mais corrente, então leia a especificação de corrente dela antes de escolher um módulo.
- Esta ligação é somente para fita de cor única. Fitas RGB e endereçáveis são ligadas de outra forma.
Diodo Flyback para Dispositivos com Bobina
Os exemplos de ventilador, motor, bomba e solenoide abaixo são todos construídos em torno de uma bobina. O módulo não tem diodo flyback na placa, então um dispositivo com bobina precisa ter o seu próprio. Um 1N5819 ou 1N4007 serve. Coloque-o entre os dois fios do dispositivo, com a ponta listrada (catodo) no + do dispositivo e a outra ponta (anodo) no − do dispositivo. Abaixo, ele é chamado simplesmente de "o diodo".
Ventilador de Refrigeração de 12V

This image is created using Fritzing. Click to enlarge image
- O fio vermelho é +, e o fio preto é −.
- Um terceiro fio (amarelo) leva o sinal de velocidade. Deixe-o desconectado.
- Coloque o diodo aqui também. Ele custa muito pouco e não faz mal.
- O PWM define a velocidade. Alguns ventiladores não dão partida com um ciclo de trabalho muito baixo, então comece acima de cerca de 30%.
Motor DC de 12V

This image is created using Fritzing. Click to enlarge image
- Conecte o + do motor a + e o − do motor a LOAD, com o diodo entre os dois fios do motor.
- O PWM define a velocidade.
- O motor gira em uma única direção. Para fazê-lo girar nos dois sentidos, é necessário um driver de motor. Veja ESP8266 - Motor DC, que usa o L298N.
Bomba de Água de 12V

This image is created using Fritzing. Click to enlarge image
- A bomba é um dispositivo com bobina, então o diodo é obrigatório.
- O PWM define a vazão.
- Nunca deixe a bomba funcionar a seco.
Válvula Solenoide de 12V (Normalmente Fechada)

This image is created using Fritzing. Click to enlarge image
- Adicione o diodo entre os fios da válvula.
- LIGADO total abre a válvula, e DESLIGADO a fecha.
- Acione-a somente com LIGADO e DESLIGADO. O PWM não é usado.
Trava Solenoide de 12V

This image is created using Fritzing. Click to enlarge image
- A trava é uma bobina, então o diodo deve estar lá.
- Use somente totalmente LIGADO (100%) ou totalmente DESLIGADO (0%). Não reduza a intensidade com PWM.
- Ela esquenta se ficar LIGADA por muito tempo. Dê a ela um pulso curto de LIGADO para destravar, e depois DESLIGUE.
Como Programar o Módulo MOSFET
Não há nada para instalar. O core do ESP8266 para o Arduino IDE já tem todas as funções de que o sketch precisa.
- O primeiro passo é dar um nome ao pino do NodeMCU que está ligado ao pino PWM do módulo. Usar o rótulo D mantém o código de acordo com o que está impresso na placa:
- Em seguida, o pino é configurado como saída, e um duty de 0 é escrito para que a carga comece no estado DESLIGADO:
- Uma porcentagem é mais fácil de ler do que um número bruto, então o código transforma 0–100% em um valor de duty de 0–255 com map(), e depois o passa para analogWrite():
- Se você só precisa de LIGADO e DESLIGADO, digitalWrite(MOSFET_PIN, HIGH) e digitalWrite(MOSFET_PIN, LOW) também funcionam.
No ESP8266, analogWrite() é um PWM por software que roda a 1 kHz por padrão. Esse valor combina bem com o PC817 lento, então não é preciso chamar analogWriteFreq(). O core 3.x do ESP8266 usa uma faixa de 0–255 por padrão. Cores muito antigos (2.x) usavam 0–1023, então atualize o seu core do ESP8266 se a carga nunca chegar à potência total.
Código ESP8266 NodeMCU para o Módulo MOSFET
O sketch repete um padrão sem parar. Primeiro, a carga fica totalmente LIGADA por 2 segundos e totalmente DESLIGADA por 2 segundos. Depois, a potência sobe de 10% a 100%, somando 10% a cada meio segundo. Em seguida, ela cai de 90% até 0% no mesmo ritmo. Por fim, a placa espera 1 segundo antes de começar de novo.
Passos Rápidos
- Se esta for a primeira vez que você usa o ESP8266, veja como configurar o ambiente para o ESP8266 no Arduino IDE.
- Faça a ligação dos componentes como mostrado no diagrama, mas mantenha o adaptador de 12V fora da tomada por enquanto.
- Conecte a placa ESP8266 NodeMCU ao seu computador usando um cabo USB.
- Abra o Arduino IDE no seu computador.
- Escolha a placa NodeMCU 1.0 (ESP-12E Module) e a porta COM do seu NodeMCU.
- Copie o código acima e cole-o em um novo sketch no Arduino IDE.
- Pressione o botão Upload e espere até o upload terminar.
- Agora conecte o adaptador de 12V à tomada.
- Abra o Serial Monitor e escolha 9600 baud.
- Olhe para a fita LED. Ela brilha com potência total por 2 segundos, fica escura por 2 segundos, aumenta o brilho devagar e depois o diminui devagar.
- O Serial Monitor imprime linhas como estas:
Com um ventilador de 12V nos bornes, você ouve a mesma história: velocidade máxima, silêncio, depois uma aceleração lenta e uma desaceleração lenta. Não esqueça o diodo flyback para o ventilador.
Conhecimento Adicional
AOD4184 vs LR7843 vs FR120N: Escolhendo pela sua Carga
Todo módulo se liga ao NodeMCU exatamente do mesmo jeito, então comece pela tensão e pela corrente da sua carga:
| Sua carga | Melhor módulo | Motivo |
|---|---|---|
| 12V ou 24V, corrente alta (fita LED longa, motor grande) | LR7843 | Menor resistência (cerca de 3.3 mΩ), fica mais frio, mas máx. 30V |
| 12V, 24V ou 36V, corrente média a alta | AOD4184 | Versátil, até 40V, cerca de 10–15A sem dissipador |
| 24V ou 48V, corrente pequena | FR120N | O único especificado até 100V, mas cerca de 210 mΩ, então cerca de 2A sem dissipador |
É evidente que o LR7843 vence quando a corrente é alta e a tensão é baixa, o FR120N é a única opção acima de 40V, e o AOD4184 cobre a maioria dos trabalhos no meio.
O calor é o limite real nas três placas. Deixe a carga funcionar por alguns minutos e depois toque no MOSFET com cuidado. Se você não consegue manter o dedo sobre ele, diminua a carga ou instale um dissipador.
Módulo MOSFET ou Relé?
Um relé fecha um contato metálico com um ímã. Um módulo MOSFET comuta com um chip. Isso leva a diferenças claras:
| Pergunta | Módulo MOSFET | Relé |
|---|---|---|
| Pode comutar a rede elétrica AC? | Não, somente DC | Sim |
| Pode reduzir a intensidade ou mudar a velocidade (PWM)? | Sim | Não |
| Faz barulho? | Não, é silencioso | Sim, ele clica |
| Com que rapidez comuta? | Muito rápido | Lento |
| Quanto tempo dura? | Muito, nada se desgasta | Limitado pelo desgaste dos contatos |
É evidente que o módulo MOSFET é a ferramenta certa para cargas DC em um projeto com ESP8266, principalmente quando você quer fade ou controle de velocidade. Para uma lâmpada ou qualquer dispositivo na rede elétrica AC, use o relé.