ESP8266 - Module MOSFET
Ce tutoriel vous explique comment utiliser l'ESP8266 NodeMCU pour contrôler une charge DC 12V, comme un ruban LED ou un ventilateur, avec un module MOSFET. Une broche du NodeMCU ne fournit que 3,3V, elle ne peut donc jamais alimenter seule un appareil 12V. Ici, la broche indique simplement au module quoi faire, et le module déplace la vraie puissance. En détail, nous allons apprendre :
- Ce qu'il y a sur les cartes AOD4184, LR7843 et FR120N, et pourquoi une broche 3,3V suffit pour les piloter
- Comment câbler ensemble la broche D5 (GPIO14) du NodeMCU, le module, un adaptateur 12V et un ruban LED 12V
- Comment écrire un code ESP8266 qui allume la charge à fond et l'éteint complètement
- Comment changer la puissance de la charge pas à pas avec la fonction analogWrite() de l'ESP8266
Nous suggérons :
- D'utiliser un ESP8266 - Relais. si l'appareil à commander est alimenté par le secteur AC. Le module MOSFET est uniquement pour le courant continu (DC).
- D'utiliser un ESP8266 - Optocoupleur PC817 : Surveiller un Signal d'Entrée 12V/24V DC si votre but est l'inverse : laisser l'ESP8266 détecter un signal DC de 12V ou 24V.
Matériel Requis
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
À Propos du Module MOSFET
Imaginez le module MOSFET comme un robinet pour le courant continu. L'ESP8266 tourne le robinet, et l'adaptateur 12V fournit le débit. Le robinet peut être grand ouvert, complètement fermé, ou ouvert et fermé très vite avec le PWM. Ce dernier mode permet au NodeMCU de régler la luminosité d'un ruban LED ou la vitesse d'un ventilateur. Parmi les autres charges que vous pouvez piloter ainsi : un moteur DC, une pompe à eau, une électrovanne et un petit chauffage.
La même page convient à trois produits : AOD4184 (parfois imprimé D4184), LR7843 et FR120N. Leurs cartes ont la même taille, le même brochage et le même câblage, et elles utilisent le même programme. La seule chose qui change est la puce MOSFET soudée au milieu.
| AOD4184 | LR7843 | FR120N | |
|---|---|---|---|
| MOSFET | AOD4184A (canal N) | IRLR7843 (canal N) | IRFR120N (canal N) |
| Tension de charge max (valeur du MOSFET) | 40V DC | 30V DC | 100V DC |
| Courant max (valeur du MOSFET) | 50A | 161A | 9,4A |
| Résistance à l'état passant RDS(on) | environ 7 mΩ | environ 3,3 mΩ | environ 210 mΩ |
| Courant pratique sans dissipateur | environ 10–15A | environ 15A | environ 2A |
| Signal de commande | logique 3,3V / 5V, actif à l'état HAUT | logique 3,3V / 5V, actif à l'état HAUT | logique 3,3V / 5V, actif à l'état HAUT |
| Isolation | optocoupleur PC817 | optocoupleur PC817 | optocoupleur PC817 |
| PWM | oui, rester ≤ ~1 kHz | oui, rester ≤ ~1 kHz | oui, rester ≤ ~1 kHz |
| Type de charge | DC uniquement | DC uniquement | DC uniquement |
Lisez la ligne « Courant max » avec attention. Ces chiffres décrivent la puce seule avec un refroidissement parfait. Une petite carte de module chauffe bien avant d'atteindre ces valeurs, alors prévoyez votre projet d'après la ligne « sans dissipateur ».
Le Brochage du Module MOSFET

Il y a cinq points de connexion au total. Deux sont du côté du NodeMCU, et trois sont du côté du circuit 12V.
Connecteur de signal (2 broches, pas de 2,54mm, compatible avec une breadboard) :
- Broche PWM : doit être connectée à un GPIO du NodeMCU. Dans ce projet, c'est D5, qui est GPIO14 dans la puce.
- Broche GND : doit être connectée à une broche G (GND) du NodeMCU, afin que le signal ait un chemin de retour.
Borniers à vis d'alimentation :
- + : doit être connecté au fil plus venant de l'adaptateur 12V ET au fil plus du ruban LED. Les deux fils entrent dans ce même bornier.
- LOAD : doit être connecté au fil moins du ruban LED. Le drain du MOSFET se trouve ici, c'est donc le fil qui est réellement commuté.
- − : doit être connecté au fil moins venant de l'adaptateur 12V
※ Note:
La disposition des broches d'un module peut différer d'un fabricant à l'autre, et même deux lots du même vendeur peuvent avoir des étiquettes légèrement différentes. Il est essentiel de toujours se référer aux étiquettes imprimées sur le module lorsque vous l'utilisez. Regardez bien !
Pourquoi une Broche 3,3V du NodeMCU Peut le Piloter
De nombreux MOSFET de puissance ont besoin de 5V à 10V sur la grille, ce que l'ESP8266 ne peut pas fournir. Ce module résout ce problème avec un optocoupleur PC817 à son entrée. Le signal doit suivre cette chaîne : D5 → broche PWM → petite résistance → LED à l'intérieur du PC817 → lumière → phototransistor à l'intérieur du PC817 → grille du MOSFET. Une résistance sur la grille la tire à 0V dès que le PC817 est éteint.
Comme la lumière transporte le signal à travers le PC817, le côté 3,3V et le côté 12V n'ont aucun fil en commun. Le module garde séparés le GND du signal et le GND de la charge.
Le MOSFET est un composant à canal N placé côté bas, entre le bornier LOAD et le bornier −. Il coupe le fil moins de la charge, et le fil plus reste connecté en permanence. Voici ce qui se passe pour chaque signal que le NodeMCU peut mettre sur D5.
D5 à l'état BAS (0V) : la Charge est ÉTEINTE
- Aucun courant n'entre dans le PC817, sa LED interne reste donc éteinte.
- Le phototransistor reste bloqué, et la résistance de grille maintient la grille du MOSFET à 0V.
- Le MOSFET est BLOQUÉ. Il se comporte comme un interrupteur ouvert entre LOAD et −.
- Le fil moins du ruban LED n'a aucun chemin vers le − de l'adaptateur, donc aucun courant ne circule et le ruban reçoit 0V.
- Dans le code : analogWrite(MOSFET_PIN, 0), ce qui correspond à un rapport cyclique de 0%.
D5 à l'état HAUT (3,3V) : la Charge est Complètement ALLUMÉE
- La broche 3,3V envoie quelques milliampères dans la LED du PC817. Elle s'allume à l'intérieur de la puce, où vous ne pouvez pas la voir. Un GPIO 3,3V supporte facilement ce courant.
- Le phototransistor devient passant et envoie environ la moitié de l'alimentation de la charge vers la grille du MOSFET. Avec un adaptateur 12V, la grille reçoit environ 6V, et non les 3,3V de la carte.
- Le MOSFET est complètement PASSANT. Il agit comme un interrupteur fermé de très faible résistance : quelques mΩ pour l'AOD4184 et le LR7843, environ 0,2Ω pour le FR120N.
- Le courant circule maintenant en boucle : + de l'adaptateur → bornier + → ruban LED → bornier LOAD → MOSFET → bornier − → − de l'adaptateur.
- Le ruban reçoit presque les 12V complets et fonctionne à pleine puissance.
- Dans le code : analogWrite(MOSFET_PIN, 255), ce qui correspond à un rapport cyclique de 100%.
D5 Sort un PWM : la Charge Reçoit une Partie de la Puissance
- Avec analogWrite(MOSFET_PIN, value), D5 passe de BAS à HAUT environ 1000 fois par seconde. La valeur va de 0 à 255, et le rapport cyclique est value / 255.
- Le MOSFET copie le signal. Il est PASSANT pendant chaque partie HAUTE et BLOQUÉ pendant chaque partie BASSE, donc la charge reçoit de courtes impulsions de 12V.
- Le rapport cyclique est la part du temps où le signal reste HAUT. La tension moyenne et la puissance moyenne sont le rapport cyclique multiplié par la valeur maximale.
| Valeur analogWrite | Rapport cyclique | Tension moyenne (alimentation 12V) | Ce que vous voyez |
|---|---|---|---|
| 51 | 20% | environ 2,4V | le ruban brille faiblement |
| 102 | 40% | environ 4,8V | le ruban à un peu moins de la moitié |
| 153 | 60% | environ 7,2V | le ruban à un peu plus de la moitié |
| 204 | 80% | environ 9,6V | le ruban presque à fond |
- Le ruban LED paraît plus faible. En réalité il clignote, mais trop vite pour que l'œil le remarque. Un ventilateur, un moteur ou une pompe tourne plus lentement, car sa masse en rotation lisse les impulsions. Un ventilateur peut ne pas démarrer à un faible rapport cyclique.
- Le PC817 est un composant lent. Si la fréquence PWM devient trop élevée, le MOSFET ne commute pas complètement, la charge ne reçoit pas des impulsions propres, et le MOSFET chauffe. C'est pourquoi la bonne plage est d'environ 500 Hz à 1 kHz.
- Une serrure ou une vanne à solénoïde doit recevoir uniquement BAS ou HAUT, jamais du PWM.
Une règle de plus découle de cette conception. Comme la grille ne reçoit que la moitié de la tension de la charge, l'alimentation de la charge doit être d'au moins 6V environ. Choisissez 9V ou plus quand la charge consomme plus de quelques ampères. Une alimentation 5V est trop faible, donc les broches 5V ou 3,3V du NodeMCU ne peuvent pas alimenter la charge.
Schéma de Câblage
Le NodeMCU envoie seulement un signal depuis D5 et partage son GND avec le connecteur du module, tandis que tout le courant 12V circule entre l'adaptateur, les borniers à vis et le ruban LED.

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Pour plus d'informations, consultez Brochage ESP8266. et Comment alimenter l'ESP8266..
| ESP8266 NodeMCU / côté 12V | Module MOSFET |
|---|---|
| D5 (GPIO14) | PWM |
| G (GND) | GND |
| + de l'adaptateur 12V (via la prise d'alimentation DC) | + |
| − de l'adaptateur 12V (via la prise d'alimentation DC) | − |
| + du ruban LED | + (même bornier que le + de l'adaptateur) |
| − du ruban LED | LOAD |
WARNING
L'ESP8266 est une puce 3,3V, et 12V sur n'importe laquelle de ses broches, même la broche VIN, peut la détruire. Seuls les fils PWM et GND du connecteur du module vont au NodeMCU. Les fils 12V restent sur les borniers à vis.
Choisir une autre broche du NodeMCU
Les étiquettes imprimées sur le NodeMCU (D0, D1, D2 ...) ne sont pas les mêmes que les numéros GPIO de la puce. Par exemple, D5 est GPIO14, D6 est GPIO12 et D7 est GPIO13. Dans le code, écrivez l'étiquette D (comme D5) et le core ESP8266 trouve le bon GPIO pour vous.
Si D5 est occupée, D1, D2, D6 et D7 sont aussi de bons choix. Évitez D3 (GPIO0), D4 (GPIO2) et D8 (GPIO15), car la puce vérifie ces broches au démarrage, et votre charge peut clignoter ou la carte peut ne pas démarrer. Évitez aussi D0 (GPIO16), car elle ne peut pas sortir de PWM.
Connecter d'Autres Appareils 12V aux Borniers à Vis
Les fils D5 et G sur le NodeMCU restent exactement comme montré plus haut pour tous les appareils ci-dessous. Seul le côté des borniers à vis change. Chaque appareil suit la même règle :
| Fil | Bornier à vis |
|---|---|
| + de l'adaptateur | + |
| − de l'adaptateur | − |
| Fil + de l'appareil | + (même bornier que le + de l'adaptateur) |
| Fil − de l'appareil | LOAD |
Deux points valent pour tous :
- L'adaptateur doit fournir la tension pour laquelle l'appareil est conçu (un appareil 12V a besoin d'un adaptateur 12V), et jamais moins de 6V, qui est le minimum accepté par le module.
- Vérifiez quel courant l'appareil consomme. Le FR120N convient seulement aux petites charges d'environ 2A sans dissipateur. Pour tout ce qui est plus gros, choisissez l'AOD4184 ou le LR7843.
Le programme ESP8266 ne change pas d'un appareil à l'autre. La seule exception est un solénoïde : pour lui, écrivez seulement HIGH ou LOW (100% ou 0%) et supprimez la partie de variation progressive.
Ruban LED 12V (Une Seule Couleur)

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
- Le fil + du ruban (souvent marqué 12V) va sur +, et le fil − du ruban va sur LOAD.
- Un ruban LED n'est pas une bobine, il n'a donc pas besoin de diode.
- Le PWM règle la luminosité. Un ruban plus long consomme plus de courant, lisez donc son courant nominal avant de choisir un module.
- Ce câblage est valable seulement pour un ruban monocolore. Les rubans RVB et adressables se câblent différemment.
Diode de Roue Libre (Flyback) pour les Appareils à Bobine
Les exemples de ventilateur, moteur, pompe et solénoïde ci-dessous sont tous construits autour d'une bobine. Le module n'a pas de diode de roue libre (flyback) sur la carte, donc un appareil à bobine doit avoir la sienne. Une 1N5819 ou une 1N4007 convient. Placez-la entre les deux fils de l'appareil, avec l'extrémité rayée (cathode) sur le + de l'appareil et l'autre extrémité (anode) sur le − de l'appareil. Plus bas, on l'appelle simplement « la diode ».
Ventilateur de Refroidissement 12V

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
- Le fil rouge est le +, et le fil noir est le −.
- Un troisième fil (jaune) transporte le signal de vitesse. Laissez-le non connecté.
- Installez aussi la diode ici. Elle coûte très peu et ne fait aucun mal.
- Le PWM règle la vitesse. Certains ventilateurs ne démarrent pas à un très faible rapport cyclique, commencez donc au-dessus d'environ 30%.
Moteur DC 12V

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
- Connectez le + du moteur à + et le − du moteur à LOAD, avec la diode entre les deux fils du moteur.
- Le PWM règle la vitesse.
- Le moteur tourne dans un seul sens. Pour le faire tourner dans les deux sens, un pilote de moteur est nécessaire. Voir ESP8266 - Moteur à courant continu., qui utilise le L298N.
Pompe à Eau 12V

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
- La pompe est un appareil à bobine, la diode est donc obligatoire.
- Le PWM règle le débit.
- Ne laissez jamais la pompe tourner à sec.
Électrovanne à Solénoïde 12V (Normalement Fermée)

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
- Ajoutez la diode entre les fils de la vanne.
- Complètement ALLUMÉE, la vanne s'ouvre, et ÉTEINTE, elle se ferme.
- Pilotez-la seulement avec ON et OFF. Le PWM n'est pas utilisé.
Serrure à Solénoïde 12V

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
- La serrure est une bobine, la diode doit donc être présente.
- Utilisez seulement complètement ALLUMÉ (100%) ou complètement ÉTEINT (0%). Ne la variez pas avec le PWM.
- Elle chauffe si elle reste ALLUMÉE longtemps. Donnez-lui une courte impulsion ON pour déverrouiller, puis éteignez-la.
Comment Programmer pour le Module MOSFET
Il n'y a rien à installer. Le core ESP8266 pour Arduino IDE contient déjà toutes les fonctions dont le programme a besoin.
- La première étape est de donner un nom à la broche du NodeMCU câblée à la broche PWM du module. Utiliser l'étiquette D garde le code en accord avec ce qui est imprimé sur la carte :
- Ensuite, la broche est configurée en sortie, et une valeur de 0 est écrite pour que la charge démarre à l'état ÉTEINT :
- Un pourcentage est plus facile à lire qu'un nombre brut, donc le code transforme 0–100% en une valeur de 0–255 avec map(), puis la passe à analogWrite() :
- Si vous n'avez besoin que de ON et OFF, digitalWrite(MOSFET_PIN, HIGH) et digitalWrite(MOSFET_PIN, LOW) fonctionnent aussi.
Sur l'ESP8266, analogWrite() est un PWM logiciel qui tourne à 1 kHz par défaut. Cette valeur convient bien au PC817 lent, il n'est donc pas nécessaire d'appeler analogWriteFreq(). Le core ESP8266 3.x utilise par défaut une plage de 0–255. Les très anciens cores (2.x) utilisaient 0–1023, mettez donc à jour votre core ESP8266 si la charge n'atteint jamais la pleine puissance.
Code ESP8266 NodeMCU pour le Module MOSFET
Le programme joue un seul motif en boucle. D'abord, la charge est complètement ALLUMÉE pendant 2 secondes et complètement ÉTEINTE pendant 2 secondes. Ensuite, la puissance monte de 10% à 100%, en ajoutant 10% toutes les demi-secondes. Puis elle redescend de 90% à 0% au même rythme. Enfin, la carte attend 1 seconde avant de recommencer.
Étapes Rapides
- Si c'est la première fois que vous utilisez l'ESP8266, consultez Installation du logiciel ESP8266..
- Câblez les composants comme indiqué sur le schéma, mais gardez l'adaptateur 12V débranché de la prise murale pour l'instant.
- Connectez la carte ESP8266 NodeMCU à votre ordinateur avec un câble USB.
- Ouvrez Arduino IDE sur votre ordinateur.
- Choisissez la carte NodeMCU 1.0 (ESP-12E Module) et le port COM de votre NodeMCU.
- Copiez le code ci-dessus et collez-le dans un nouveau croquis dans Arduino IDE.
- Appuyez sur le bouton Téléverser et attendez la fin du téléversement.
- Branchez maintenant l'adaptateur 12V sur la prise murale.
- Ouvrez le Moniteur Série et choisissez 9600 bauds.
- Regardez le ruban LED. Il brille à pleine puissance pendant 2 secondes, s'éteint pendant 2 secondes, monte lentement en luminosité, puis redescend lentement.
- Le Moniteur Série affiche des lignes comme celles-ci :
Avec un ventilateur 12V sur les borniers, vous entendez la même histoire : vitesse maximale, silence, puis une lente montée en vitesse et une lente descente. N'oubliez pas la diode de roue libre pour le ventilateur.
Connaissances Supplémentaires
AOD4184 vs LR7843 vs FR120N : Choisir selon Votre Charge
Chaque module se câble au NodeMCU exactement de la même façon, partez donc de la tension et du courant de votre charge :
| Votre charge | Meilleur module | Raison |
|---|---|---|
| 12V ou 24V, courant élevé (long ruban LED, gros moteur) | LR7843 | Résistance la plus faible (environ 3,3 mΩ), reste le plus frais, mais 30V max |
| 12V, 24V ou 36V, courant moyen à élevé | AOD4184 | Polyvalent, jusqu'à 40V, environ 10–15A sans dissipateur |
| 24V ou 48V, faible courant | FR120N | Le seul prévu jusqu'à 100V, mais environ 210 mΩ, donc environ 2A sans dissipateur |
Il est évident que le LR7843 gagne quand le courant est élevé et la tension basse, que le FR120N est la seule option au-dessus de 40V, et que l'AOD4184 couvre la plupart des cas entre les deux.
La chaleur est la vraie limite sur les trois cartes. Laissez la charge tourner quelques minutes, puis touchez le MOSFET avec précaution. Si vous ne pouvez pas garder le doigt dessus, réduisez la charge ou installez un dissipateur.
Module MOSFET ou Relais ?
Un relais ferme un contact métallique avec un aimant. Un module MOSFET commute avec une puce. Cela donne des différences claires :
| Question | Module MOSFET | Relais |
|---|---|---|
| Peut-il commuter le secteur AC ? | Non, DC uniquement | Oui |
| Peut-il varier ou changer la vitesse (PWM) ? | Oui | Non |
| Fait-il du bruit ? | Non, il est silencieux | Oui, il claque |
| Quelle est sa vitesse de commutation ? | Très rapide | Lente |
| Combien de temps dure-t-il ? | Longtemps, rien ne s'use | Limité par l'usure des contacts |
Il est évident que le module MOSFET est le bon outil pour les charges DC dans un projet ESP8266, surtout quand vous voulez de la variation ou un contrôle de vitesse. Pour une lampe ou tout appareil sur le secteur AC, choisissez plutôt le ESP8266 - Relais..