ESP8266 - Optocoupleur PC817 : Surveiller un Signal d'Entrée 12V/24V DC
Un module optocoupleur PC817 permet à l'ESP8266 de surveiller une ligne 12V ou 24V sans jamais la toucher électriquement, ce qui compte énormément sur une carte dont les broches ne supportent que 3,3V. Ce tutoriel vous explique comment utiliser l'ESP8266 pour lire une entrée numérique isolée construite autour du PC817, et comment brancher cette entrée sur un équipement afin que la carte puisse répondre à la question qui vous intéresse vraiment : cet appareil fonctionne-t-il en ce moment, ou non ? En détail, nous allons apprendre :
- Ce qu'est un module optocoupleur PC817 et à quoi sert chacune de ses bornes.
- Laquelle des trois variantes de module - 12V, 24V ou 3-5V - correspond à la ligne que vous voulez surveiller, et ce qui se passe si vous achetez la mauvaise.
- Comment connecter un module optocoupleur PC817 à l'ESP8266, et comment construire la même entrée à partir de la puce nue à quatre broches.
- Comment câbler le module en parallèle sur l'appareil que vous voulez surveiller, sans couper ni dévier un seul fil existant.
- Quelles broches GPIO de l'ESP8266 peuvent être utilisées sans risque pour cette tâche, et pourquoi les broches de configuration de démarrage ne le peuvent pas.
- Comment savoir si votre module est actif à l'état bas ou actif à l'état haut, et comment inverser le sketch avec une seule constante.

Nous vous suggérons :
Matériel Requis
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
À Propos de l'Optocoupleur PC817
Le PC817 est une puce à quatre broches qui transmet un signal numérique d'un circuit à un autre en utilisant la lumière plutôt qu'un fil. À l'intérieur du boîtier en plastique, une LED infrarouge fait face à un phototransistor, séparés par un espace isolant : lorsque le courant traverse la LED, sa lumière rend le transistor passant, de sorte que le signal traverse sous forme de lumière plutôt que d'électricité. Cet espace est la raison pour laquelle les deux côtés restent électriquement séparés, et il est prévu pour 5000 Vrms pendant une minute.
Pour l'ESP8266, cette séparation n'est pas un luxe. L'ESP8266 fonctionne en 3,3V et ses broches GPIO ne tolèrent pas le 5V, donc un fil 12V ou 24V touchant directement une broche détruit la puce. Avec un PC817 entre les deux, le côté 24V et le côté 3,3V ne partagent jamais un seul conducteur.
Presque plus personne ne soude la puce nue pour cette tâche. Un module d'isolation à optocoupleur PC817 place la même puce sur une petite carte avec sa résistance série, une LED d'état, des borniers à vis pour le côté dangereux et un connecteur pour le côté ESP8266, de sorte que toute l'entrée isolée se résume à trois fils et deux vis. Ce tutoriel est construit autour de ce module ; la puce nue est présentée plus bas pour ceux qui préfèrent la construire eux-mêmes.
Caractéristiques du PC817 à l'intérieur du module :
| Élément | Valeur |
|---|---|
| Boîtier | DIP 4 broches, broche 1 marquée par un point ou une encoche |
| Tension directe de la LED d'entrée (Vf) | environ 1,2 V typique, 1,4 V max |
| Courant direct de la LED d'entrée (If) | 20 mA max en continu, 5-20 mA en usage normal, 10 mA est une bonne cible |
| Tension collecteur-émetteur de sortie (VCEO) | 35 V max |
| Courant de collecteur de sortie (IC) | 50 mA max |
| Dissipation de puissance du collecteur | 150 mW |
| Tension d'isolation | 5000 Vrms pendant 1 minute |
| Taux de transfert de courant (CTR) | 50% à 600% selon la classe (A 80-160%, B 130-260%, C 200-400%, D 300-600%) |
| Vitesse de commutation | temps de montée environ 4 us, temps de descente environ 3 us |
| Température de fonctionnement | -30 C à +100 C |
Brochage du Module Optocoupleur PC817
Le module possède un côté entrée et un côté sortie, et rien d'électrique ne passe entre les deux.
- Borne IN+ (ou +) - le positif du côté entrée. Le positif commuté de la ligne 12V ou 24V que vous voulez surveiller doit être connecté à cette borne à vis.
- Borne IN- (ou -) - le négatif du côté entrée. Elle doit être connectée au retour de ce même circuit externe, PAS au GND de l'ESP8266.
- Broche VCC - l'alimentation de l'étage de sortie. Elle doit être connectée à la broche 3,3V de l'ESP8266.
- Broche GND - la masse du côté sortie. Elle doit être connectée à la broche GND de l'ESP8266.
- Broche OUT (marquée DO, ou OUT1..OUTn sur les cartes multicanaux) - la sortie isolée. Elle doit être connectée à une broche d'entrée numérique de l'ESP8266 disposant d'une résistance de pull-up interne utilisable.
※ Note:
La disposition des broches des modules d'isolation à optocoupleur varie selon les fabricants. Certaines cartes placent VCC au milieu, d'autres inversent GND et OUT, et certaines sérigraphient les bornes d'entrée IN et GND au lieu de + et -. Lisez toujours les marquages imprimés sur la carte que vous avez réellement achetée au lieu de copier une photo. La tension d'entrée pour laquelle une carte est conçue y est généralement imprimée aussi, à côté ou sous les borniers à vis, et c'est le moyen le plus rapide de confirmer que vous avez reçu la variante commandée.
Quel Module Optocoupleur Me Faut-il Pour Une Ligne 12V Ou 24V ?
C'est la seule décision d'achat qui compte, alors prenez-la avant de commander. La résistance série est déjà montée sur le module, et cette résistance est dimensionnée pour UNE seule tension d'entrée - c'est exactement pourquoi ces cartes sont vendues en trois variantes distinctes :
- Module 12V - pour un signal 12V DC. C'est la variante pour l'exemple de la chaudière et du chauffe-eau à thermoplongeur auquel cette page revient régulièrement.
- Module 24V - pour un signal 24V DC : la sortie sirène d'une centrale d'alarme, une sortie d'automate 24V, un circuit de solénoïde ou de contacteur 24V.
- Module 3-5V - pour les signaux logiques 3,3V et 5V. Utile chaque fois que les deux circuits fonctionnent avec des alimentations séparées, sont éloignés l'un de l'autre sur un long câble, ou que l'un d'eux est électriquement bruyant - un driver de moteur pas à pas, un contrôleur de moteur ou la carte de commande basse tension enfouie dans un appareil alimenté par le secteur. L'isolation consiste à couper le chemin de masse, pas seulement à survivre à une haute tension.
Achetez celui qui correspond à votre ligne, et uniquement celui-là. Les variantes ne sont PAS interchangeables :
- Un module 12V alimenté par une ligne 24V reçoit environ le double du courant LED pour lequel il a été conçu, et sa LED d'entrée sera endommagée.
- Un module 24V alimenté par une ligne 12V sous-alimente sa LED, donc la sortie peut commuter en retard, commuter de façon peu fiable, ou ne jamais commuter - la pire des deux défaillances, car elle peut réussir un test sur l'établi puis manquer discrètement des événements dans l'armoire.
Notez aussi que l'entrée du PC817 dépend du courant, et non de ce que l'alimentation pourrait fournir : un rail 12 V capable de débiter de nombreux ampères n'est pas plus dur pour la LED qu'un rail capable de quelques milliampères, car la résistance embarquée fixe le courant de la LED dans tous les cas. Avec un module, il n'y a rien à calculer - choisir la variante EST le calcul de la résistance, déjà fait pour vous en usine.
Comment Ça Fonctionne
Les deux moitiés du module ne font rien d'autre qu'échanger de la lumière :
- Signal externe 12V/24V PRÉSENT : le courant circule dans la LED d'entrée, la LED d'état embarquée s'allume et le phototransistor conduit.
- Signal externe 12V/24V ABSENT : la LED d'entrée est éteinte, la LED d'état est éteinte et le phototransistor est bloqué.
Ce que cela produit sur la broche OUT, et donc sur la valeur lue par l'ESP8266, est le sujet de la section suivante.
Votre Module Optocoupleur Est-il Actif à l'État Haut Ou Actif à l'État Bas ?
Sur la puce nue, c'est une question de physique déjà réglée. Le phototransistor ne peut que tirer une broche VERS LE BAS, donc avec le pull-up de l'ESP8266 qui maintient la broche à HIGH, une ligne externe sous tension se lit LOW et une ligne hors tension se lit HIGH - la lecture est INVERSÉE.
Sur un module, vous devez vérifier, car la polarité de sortie varie selon les fabricants. De nombreuses cartes sortent directement le collecteur du phototransistor, donc OUT se comporte comme la puce nue et passe à LOW lorsque l'entrée est alimentée. D'autres l'inversent sur la carte, donc OUT SUIT l'entrée et passe à HIGH lorsque l'entrée est alimentée. Les deux types sont vendus, parfois sous la même photo de produit, donc la seule réponse fiable est celle que donne votre propre carte.
Le test prend moins d'une minute :
- Câblez le module à l'ESP8266 comme indiqué ci-dessous et téléversez le sketch de ce tutoriel.
- Ouvrez le Moniteur Série sans rien connecté à IN+ et IN-, et notez ce qu'il affiche.
- Mettez la ligne externe sous tension, et notez ce qu'il affiche maintenant.
- L'état qui apparaît PENDANT que le signal est présent est le niveau actif de votre module.
- Utilisez la LED d'état embarquée comme vérification croisée. Elle s'allume chaque fois que le côté entrée est alimenté, donc si la LED est clairement allumée et que le Moniteur Série indique toujours IDLE, votre hypothèse de polarité est inversée.
La correction se fait en une seule modification, pas en réécrivant le code. Le sketch ci-dessous contient une seule constante :
Laissez-la à true pour un module dont la sortie passe à LOW pendant que le signal est présent, mettez-la à false pour un module dont la sortie passe à HIGH, et tout le reste suit.
Construire l'Entrée Isolée à Partir de la Puce PC817 Nue (Optionnel)
Si vous préférez la construire à partir de la puce brute, le PC817 est un DIP à 4 broches avec la broche 1 dans le coin marqué par un point ou une encoche, numérotées dans le sens inverse des aiguilles d'une montre vu de dessus.
- Broche 1 - Anode (A) et Broche 2 - Cathode (K) : la LED d'entrée. Le positif externe doit être connecté à la broche 1 via une résistance série, et la broche 2 doit être connectée UNIQUEMENT à la masse du circuit externe.
- Broche 3 - Émetteur (E) : doit être connectée à la broche GND de l'ESP8266.
- Broche 4 - Collecteur (C) : doit être connectée à la broche d'entrée de l'ESP8266, qui fournit le pull-up.

Ici, c'est à vous de fixer le courant de la LED, avec R = (Vin - 1.2) / 0.01 pour une cible de 10 mA : 220 ohms à 3,3 V, 390 ohms à 5 V, 1 kohm à 12 V et 2,2 kohms à 24 V - cette dernière dissipe environ 0,24 W, utilisez donc un composant de 1/2 W. La puce nue est toujours active à l'état bas, laissez donc MODULE_ACTIVE_LOW à true.
La Règle d'Isolation
NE connectez PAS la masse du circuit 12V/24V à la broche GND de l'ESP8266, et ne la connectez pas non plus à la broche GND du connecteur du module. Ces deux masses doivent rester séparées, et cette séparation est toute la raison d'être du PC817. Si vous les reliez, l'optocoupleur continue de commuter et tout semble fonctionner, mais l'isolation a disparu et un défaut côté 24V dispose désormais d'un chemin direct vers votre carte 3,3V.
Schéma de Câblage
Le sketch de ce tutoriel utilise la broche D7 (GPIO13) pour l'entrée isolée. Sur l'ESP8266, ce choix n'est pas arbitraire : D7 est l'une des GPIO simples et sans risque au démarrage, et elle dispose d'un pull-up interne utilisable, ce qui est exactement ce dont une sortie d'optocoupleur active à l'état bas a besoin. La broche D0 (GPIO16) est la seule broche qui n'a aucun pull-up interne, et les broches D3 (GPIO0), D4 (GPIO2) et D8 (GPIO15) sont des broches de configuration de démarrage dont le niveau à la mise sous tension décide de la façon dont la puce démarre. Utilisez les marquages NodeMCU Dx dans votre sketch plutôt que les numéros GPIO bruts, car sur une carte NodeMCU D7 correspond automatiquement à GPIO13, alors qu'écrire 13 signifie littéralement GPIO13 et ne correspond pas à la sérigraphie.
- Schéma de câblage entre l'ESP8266 et un module d'isolation à optocoupleur PC817

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..
Câblez la ligne externe sur les borniers à vis IN+ et IN-, puis connectez le VCC du module à la broche 3,3V de l'ESP8266, GND à la broche GND de l'ESP8266, et OUT à la broche D7 de l'ESP8266. Alimentez le côté sortie du module en 3,3V plutôt qu'en 5V ou Vin, car la tension qui alimente l'étage de sortie du module est celle qui apparaît sur la broche de l'ESP8266, et l'ESP8266 ne tolère pas le 5V. Il n'y a aucune résistance à monter et aucun courant à calculer - cela a été réglé lorsque vous avez choisi la variante 12V, 24V ou 3-5V. Une fois le câblage terminé, effectuez le test d'une minute ci-dessus pour savoir dans quel sens fonctionne la sortie de votre module.
- Schéma de câblage entre l'ESP8266 et la puce PC817 nue
Avec la puce nue, le positif du signal 12V ou 24V passe par la résistance série (1 kohm pour 12 V, 2,2 kohms pour 24 V) vers la broche 1, et la broche 2 retourne uniquement à la masse de ce circuit externe. Côté sortie, la broche 4 va à la broche D7 de l'ESP8266 et la broche 3 va au GND de l'ESP8266. Le pull-up est activé par logiciel, donc aucune résistance supplémentaire n'est nécessaire côté 3,3V.
Câbler le PC817 en Parallèle Pour Savoir Si un Appareil Est Allumé Ou Éteint
Les deux schémas ci-dessus montrent un signal 12V ou 24V seul, mais dans une installation réelle, ce signal appartient déjà à quelque chose. Dans l'exemple de chauffage auquel cette page revient régulièrement, il s'agit de la ligne de demande de chauffe qu'un thermostat d'ambiance ferme pour démarrer une chaudière ou un chauffe-eau à thermoplongeur. Pour surveiller cette ligne, l'entrée du module se branche EN TRAVERS de celle-ci, en parallèle avec l'appareil, et jamais en série avec lui. Un optocoupleur placé en série ferait passer tout le courant de la charge - la bobine du contacteur de la chaudière, ou sur un circuit de thermoplongeur direct l'élément chauffant lui-même - à travers une LED infrarouge prévue pour 20 mA, et le PC817 serait détruit la première fois que le thermostat demanderait de la chaleur.
Le branchement se fait avec deux vis, et ne coupe rien :
- La borne positive commutée de l'appareil va à la borne IN+ du module.
- La borne négative ou de retour de l'appareil va à la borne IN- du module.
- Chaque fil existant reste exactement là où l'installateur l'a laissé.
Rien ne s'intercale entre les deux. La résistance série dont la puce nue aurait besoin est déjà sur la carte, dimensionnée pour la variante que vous avez achetée, et c'est tout l'intérêt du module : un branchement en parallèle se résume à deux connexions à vis et aucun calcul.
Le branchement ne consomme qu'environ 10 mA, ce qui n'est rien à côté d'une bobine de contacteur, d'une vanne, d'une lampe ou d'un moteur de pompe, de sorte que l'appareil continue de fonctionner exactement comme avant d'être surveillé. Cela garantit que la mesure est en lecture seule, et aussi qu'elle est fidèle : comme l'optocoupleur est placé en travers de l'appareil au lieu d'être devant lui, la lecture suit l'état propre de l'appareil, quel que soit celui qui l'a commandé. Une minuterie de chaudière, un thermostat hors-gel, un thermostat de ballon ou une main sur la commande murale apparaissent tous dans le Moniteur Série, tout comme une demande envoyée qui ne reçoit aucune réponse. Compteurs d'heures de fonctionnement, journaux de temps d'inactivité et alertes « a-t-il vraiment démarré ? » découlent tous de ce simple branchement en parallèle.
Trois détails déterminent si cela fonctionne du premier coup :
- La polarité du branchement. Le côté entrée est une simple LED et ne conduit que dans un sens. Inversez IN+ et IN- et rien n'est endommagé, mais l'optocoupleur ne s'active tout simplement jamais et la LED d'état ne s'allume jamais, alors déterminez quel côté du branchement est positif avant de dénuder le moindre isolant.
- Les courants de fuite. Certaines sorties transistor d'automate, sorties triac et drivers de lampes LED laissent passer un faible courant même à l'état bloqué, et il suffit qu'il soit assez important pour allumer partiellement la LED du PC817. Le symptôme est sans équivoque : la lecture passe à ENERGISED et ne revient jamais à IDLE. Montez une résistance de fuite d'environ 4,7 kohms à 10 kohms entre les bornes IN+ et IN- du module, afin que ce courant de fuite passe par la résistance plutôt que par la LED.
- DC uniquement. L'entrée du PC817 est une seule LED, elle ne répond donc qu'à une seule polarité ; la détection d'une ligne AC nécessite un optocoupleur dont l'étage d'entrée comporte deux LED tête-bêche.
※ Note:
Toute charge inductive - une bobine de relais ou de contacteur, un solénoïde, une vanne motorisée, une pompe de circulation - produit un important pic de tension inverse lorsqu'elle se coupe, et la LED d'entrée du PC817 ne supporte que 6 V en inverse. Montez une diode ordinaire en antiparallèle directement sur les bornes d'entrée du module, avec la cathode de la diode sur IN+ et l'anode de la diode sur IN-. Pendant que l'appareil fonctionne, cette diode est polarisée en inverse et ne fait rien du tout ; lors d'un pic, elle conduit et limite la tension inverse à bien moins d'un volt. Une 1N4148 convient pour les petits branchements, une 1N4007 pour les plus importants.
Ce Que Prouve Une Lecture « Alimenté », Et Ce Qu'elle Ne Prouve Pas
Une limitation mérite d'être énoncée clairement : le branchement vous indique que l'appareil est alimenté, pas qu'il fait son travail. Un chauffe-eau à thermoplongeur avec un élément grillé tire toujours sa ligne de demande de chauffe vers le bas et se lit toujours comme ON, exactement comme le ferait une pompe grippée ou un ventilateur bloqué. Ce que l'ESP8266 peut faire avec cela, c'est comparer la cause et l'effet - deux heures d'alimentation sans aucun résultat constituent une alarme utile en soi, à condition de se rappeler qu'il s'agit d'une déduction et non d'une mesure.
Comment Programmer pour l'Optocoupleur PC817
La première étape consiste à configurer la broche choisie de l'ESP8266 en entrée avec le pull-up interne activé, ce qui maintient la broche à un niveau HIGH défini lorsqu'une sortie d'optocoupleur active à l'état bas est au repos :
La deuxième étape consiste à lire la broche avec la fonction digitalRead() :
La troisième étape consiste à donner un sens à ce niveau brut, à l'aide de la constante unique qui porte la polarité de votre module :
La dernière étape consiste à agir en fonction de ce booléen. Le comparer à la lecture précédente, plutôt que d'afficher à chaque passage de loop(), garde le Moniteur Série lisible et vous donne une ligne par changement réel sur la ligne 12V/24V.
Code ESP8266 pour l'Optocoupleur PC817
Étapes Rapides
Pour démarrer avec l'ESP8266 sur Arduino IDE, suivez ces étapes :
- Consultez le tutoriel Installation du logiciel ESP8266. si c'est la première fois que vous utilisez l'ESP8266.
- Vérifiez que la variante de votre module correspond à votre tension d'entrée : le module 12V sur une ligne 12V, le module 24V sur une ligne 24V, le module 3-5V sur un signal de niveau logique.
- Câblez les composants comme indiqué sur le schéma, en gardant la masse 12V/24V séparée du GND de l'ESP8266.
- Connectez la carte ESP8266 à votre ordinateur à l'aide d'un câble USB.
- Ouvrez Arduino IDE sur votre ordinateur.
- Choisissez la bonne carte ESP8266 (par ex. NodeMCU 1.0 (ESP-12E Module)) et son port COM correspondant.
- Copiez le code ci-dessus et ouvrez-le dans Arduino IDE.
- Cliquez sur le bouton Téléverser dans Arduino IDE pour compiler et téléverser le code vers l'ESP8266.
- Ouvrez le Moniteur Série.
- Allumez et éteignez plusieurs fois la ligne externe 12V/24V.
- Consultez le résultat dans le Moniteur Série.
Si le Moniteur Série indique l'inverse de ce que fait la LED d'état du module, vous avez un module actif à l'état haut : mettez MODULE_ACTIVE_LOW à false et téléversez à nouveau.
Comme l'ESP8266 ne voit jamais qu'un transistor ouvert ou fermé, le même sketch et le même câblage fonctionnent pour une source 12 V et une source 24 V. La seule chose qui change entre les deux est la variante de module que vous avez achetée.
Deux projets auxquels ce circuit convient bien :
- Un moniteur de chauffage bon marché toujours actif : un module 12V surveille la ligne de demande de chauffe 12 V entre un thermostat d'ambiance et une chaudière ou un chauffe-eau à thermoplongeur, et l'ESP8266 enregistre combien de minutes par jour la chaleur est réellement demandée, sans aucune modification du câblage de chauffage lui-même.
- Un chien de garde pour sirène d'alarme 24 V : un module 24V est placé en travers de la sortie sirène 24 V d'une centrale d'alarme, de sorte que l'ESP8266 sait à quel moment la centrale se déclenche, et la centrale conserve sa propre masse isolée.
- Un moniteur général de marche/arrêt d'appareil : branché en parallèle sur n'importe quelle pompe, vanne, contacteur ou lampe alimenté en DC, le même circuit devient un compteur d'heures de fonctionnement, un journal du temps d'inactivité d'une machine et une alerte « le contrôleur l'a demandé mais rien n'a démarré ».
Explication du Code
Consultez l'explication ligne par ligne contenue dans les commentaires du code source !
Vidéo
Connaissances Supplémentaires
Le choix de la broche est la partie de ce projet propre à l'ESP8266, et il vaut la peine de bien le faire avant de visser quoi que ce soit.
L'ESP8266 expose environ onze broches GPIO utilisables, et elles ne sont pas interchangeables. Cinq d'entre elles se comportent comme des entrées numériques ordinaires avec un pull-up interne fonctionnel : D1 (GPIO5), D2 (GPIO4), D5 (GPIO14), D6 (GPIO12) et D7 (GPIO13). N'importe laquelle de ces broches convient bien pour une sortie d'optocoupleur.
Trois autres sont des broches de configuration de démarrage. GPIO0 (D3) et GPIO2 (D4) doivent être à HIGH lorsque la carte est mise sous tension, et GPIO15 (D8) doit être à LOW. Un optocoupleur dont la ligne externe est sous tension au moment où vous appliquez l'alimentation maintient sa sortie à LOW, donc le placer sur D3 ou D4 peut faire passer la carte en mode flash au lieu d'exécuter votre sketch. La panne semble aléatoire, car elle dépend du fait que la ligne 12V/24V était alimentée ou non à la mise sous tension, ce qui en fait un bug pénible à traquer.
GPIO16 (D0) échoue pour une autre raison. C'est une broche séparée sur la puce et, contrairement aux autres, elle n'a pas de pull-up interne : INPUT_PULLUP n'est pas disponible sur celle-ci, seulement INPUT_PULLDOWN_16. Comme un phototransistor nu ne peut que tirer une broche vers le bas, une broche qui ne peut pas être tirée vers le haut n'a rien d'où être tirée vers le bas, et la lecture est flottante. Si vous devez vraiment utiliser D0 avec la puce nue, ajoutez une résistance externe de 10 kohms entre la broche et le 3,3V et configurez la broche en simple INPUT.
Utiliser un module plutôt que la puce nue fait évoluer ces deux problèmes dans des directions opposées. Un module dont l'étage de sortie comporte déjà son propre pull-up pilote la broche dans les deux sens et ne dépend pas du tout du pull-up interne de l'ESP8266, ce qui atténue l'objection concernant D0 - mais seulement une fois que vous avez confirmé sur la carte elle-même que la vôtre est construite ainsi, car de nombreux modules sortent directement le collecteur nu sur le connecteur. Les broches de configuration de démarrage ne bénéficient d'aucun soulagement de ce type. GPIO0 (D3) et GPIO2 (D4) doivent être à HIGH au démarrage de la puce, donc une sortie de module à LOW à cet instant peut empêcher la carte de démarrer normalement, et GPIO15 (D8) doit être à LOW, donc une sortie de module à HIGH peut faire de même. Que la sortie soit à LOW ou à HIGH à la mise sous tension dépend de la polarité du module et du fait que la ligne externe était sous tension ou non, deux choses que vous ne pouvez pas contrôler par logiciel. Gardez D3, D4 et D8 hors de ce circuit, quel que soit le type de module que vous possédez.
La valeur du pull-up elle-même est confortable. Le pull-up interne de l'ESP8266 est de l'ordre de quelques dizaines de kilohms, ce qui ne demande que quelques dizaines de microampères au phototransistor, bien en dessous des 50 mA qu'il peut absorber et facilement atteint même par un PC817 à faible CTR fonctionnant à 10 mA côté LED. Une résistance externe de 10 kohms vers le 3,3V fonctionne tout aussi bien et résiste un peu mieux au bruit électrique sur les longs câbles, ce qui mérite d'être envisagé lorsque le module se trouve à plusieurs mètres dans une armoire de commande.
Il est évident que la configuration la plus sûre sur cette carte est l'une des broches simples numérotées D avec INPUT_PULLUP activé par logiciel, désignée par son marquage Dx afin que le sketch corresponde à la sérigraphie. Tout le reste concernant le PC817 est identique sur n'importe quel microcontrôleur ; le choix de la broche est la seule décision que l'ESP8266 prend pour vous.