Ce dépôt contient des instructions de construction pour un dispositif de capteur ESP8266 polyvalent multiples pour des projets IoT à domicile.
Board V5, partiellement peuplé. Image générée à Kicad.
Cette carte de capteur répond à la plupart de mes besoins matériels d'automation à domicile. Il tient dans une enceinte bon marché et largement disponible (aucune impression 3D requise), et peut être alimentée soit par une batterie Li-ion (surveillance de tension, charge, polarité inverse et circuits de protection inclus) ou USB, avec un partage électrique approprié si l'USB et la batterie sont connectés simultanés. Côté logiciel, j'ai gardé les choses aussi de haut niveau que possible: Tasmota pour la plupart des scénarios d'utilisation; Micropython si nécessaire. La communication utilise le protocole MQTT sur le Wi-Fi, ou LORA (j'utilise la carte comme un capteur LORA distant et comme un pont LORA-MQTT).
La planche est conçue pour les capteurs suivants, ainsi que pour le contrôle du moteur / pompe (pour l'arrosage automatique des plantes). Les broches GPIO restent facilement accessibles, de sorte que cette carte peut également être utilisée comme base pour de nombreux autres capteurs.
L'utilisation d'un ESP8266 est livrée avec certaines limitations, en particulier autour de GPIO disponible et d'un seul port ADC. Cela signifie que toutes les fonctionnalités potentielles ne sont pas disponibles en même temps. Oui, ces limitations pourraient être surmontées soit avec un séparateur de port, soit en utilisant un microcontrôleur différent tel qu'un ESP32; Cependant, une partie du plaisir pour moi a été de voir à quel point je pouvais faire uniquement avec l'ESP8266, et le résultat final correspond à toutes mes cas d'utilisation.
![]() | ![]() |
|---|---|
| V4, avec BME280 (température, pression et humidité), BH1750 (LUX) et les capteurs d'humidité (via le bouchon audio). Équipé pour la pompe à arrosage (en bas à droite); pas actuellement connecté. | V5, avec les capteurs BME280 et MH-Z19C (CO 2 ) |
![]() |
|---|
| Une nouvelle livraison de planches V5 |
Vous pourriez (devriez ?!) Utiliser autre chose. J'ai initialement conçu cela comme un moyen de découvrir les capteurs IoT et la conception / fabrication de circuits. Je suis resté avec cela car il offre plusieurs avantages par rapport aux planches standard:
La carte peut être alimentée soit directement à partir de l'USB, soit d'une batterie Li-ion. La carte V4 et le micro-USB utilisé précédemment; V5 utilise USB-C. La découpe à gauche de la planche est conçue pour accueillir un boîtier à 1 cellule 18650 comme celui-ci (lien d'achat). Le connecteur de la batterie est un JST-Ph à 2 broches (pas de 2 mm), mais si vous préférez, soudez simplement les fils directement aux connecteurs.
Si la batterie et l'USB sont connectés simultanément, un circuit de partage de puissance garantit que seul l'USB alimente la carte. La batterie est utilisée en conjonction avec une copie du module basé sur 3 puce TP4056 commun pour la charge. Il y a un interrupteur fourni si vous n'utilisez pas de batterie et que vous souhaitez contourner ce circuit (ou si vous ne voulez pas que la batterie se charge pendant que l'USB est connecté). Le module comprend une protection pour la surcharge, la décharge, surintensité et court-circuit. Notez que la protection de surintensité et de court-circuit est contournée pour le reste de la carte (pas la batterie) lorsque l'USB est connecté, et le circuit de partage d'alimentation est donc actif. Le module de charge standard n'inclut pas la protection contre la batterie-polarité, donc j'ai également ajouté cela.
La surveillance de la tension de la batterie est disponible lorsque le cavalier JP5 (avant) ou JP6 (arrière) est ponté. Cela relie la borne de batterie positive, via un diviseur de tension, à la seule broche ADC de l'ESP. Cette connexion est facultative car le capteur d'humidité (et bien sûr d'autres capteurs) a également besoin d'accéder à l'ADC. Pour cette raison, il n'est clairement pas possible de surveiller à la fois la tension de la batterie et un capteur d'humidité du sol en même temps avec la carte V5.
Notes
Il y a une gamme vertigineuse d'éventuels ICS LDO. Je me suis installé sur le XC6203P332PR en raison de sa sortie de courant relativement élevée et de sa faible tension de dépôt. Le conseil d'administration V4 avait des empreintes pour deux régulateurs alternatifs, que je prévoyais de tester la stabilité, mais ceux-ci n'étaient pas nécessaires et ont été supprimés dans la V5.
Sur PCB version 4, j'ai apparié deux condensateurs de tantale 1 μF avec le XC6203, selon la fiche technique. J'ai fait échouer un condensateur sur deux de ces planches après quelques semaines d'utilisation, provoquant un court-circuit et beaucoup de fumée (les planches étaient alimentées par USB à l'époque). Après avoir lu les histoires d'horreur de Tantalum en ligne, j'ai décidé d'expérimenter les échangeant de céramiques sur la V5 et je n'ai rencontré aucun autre problème. J'ai découvert plus tard que les deux échecs étaient de ma faute: j'ai adapté les pièces à l'envers! Je suis sûr qu'il y a une bonne raison pour laquelle le groupe de marqueurs de polarité sur les tantalums désigne le positif, tandis que sur les condensateurs et les diodes en aluminium, il désigne le négatif, mais ils ont déclenché ce débutant.
Idéalement, le XC6203P332PR est également compatible avec les tableaux d'adaptateur ESP-12F blancs. Il est plus petit que l'empreinte fournie, mais peut toujours être soudée avec peu de problèmes. Assurez-vous de retirer la résistance centrale zéro ohm à l'avant de la carte si vous utilisez un régulateur monté sur la carte.
J'ai appris à la dure la sensibilité au bruit électrique de l'ESP8266: sur V3 de la planche, il redémarre chaque fois que le moteur d'arrosage était activé. J'ai surmonté cela en V4 avec le repositionnement des composants (déplaçant le moteur à l'extrémité éloignée du microcontrôleur), ajoutant des condensateurs supplémentaires à côté de la connexion du moteur, augmentant la largeur de trace de puissance par rapport aux traces de signal, minimisant les boucles sur le plan de sol et séparant le chemin de retour du plan du sol du moteur du restant des composants.
La planche est conçue pour un ESP-12F. J'ai tendance à flasher la puce dans une carte programmeur avant de la souder, juste pour vérifier que cela fonctionne.
Lorsqu'il est installé, il peut être flassé de la manière normale en connectant une carte d'interface USB-UART aux broches appropriées.
| Épingle# | Port | Connexion du conseil d'administration | Résistance * |
|---|---|---|---|
| 1 | Premier | Bouton de réinitialisation | |
| 2 | ADC | ADC (humidité ou batterie) | |
| 3 | En | Puce activer | Superviseur ou e-pu |
| 4 | IO16 | En profondeur | |
| 5 | IO14 | I2C SCL, ou SPI SCK | |
| 6 | Io12 | VCC à l'humidité, ou SPI SDO-MISO | |
| 7 | IO13 | I2C SDA, ou Spi Mosi | |
| 8 | VCC | ||
| 15 | GND | ||
| 16 | IO15 | Lora NSS | E-pd |
| 17 | Io2 | LED à bord et SPI SS | |
| 18 | Io0 | Bouton flash | E-PU |
| 19 | Io4 | Commutateur de mode (GND: utilisez le sommeil) | E-PU |
| 20 | Io5 | Pompe à eau, ou Lora Dio | E-pd |
| 21 | Rxd | CO 2 TX | |
| 22 | Txd | CO 2 RX |
* Résistance attachée à la broche: i: interne, e: externe, PU: pull-up, pd: tir-down
Il semble y avoir des débats en ligne sur le moyen optimal de connecter premier à GPIO16 afin d'utiliser la fonctionnalité DeepSleep de l'ESP8266. J'ai commis une erreur du côté de la prudence et ajouté une diode entre les deux.
L'ESP8266 est sensible aux broussailles si la tension est trop faible (une bonne explication de ce problème peut être trouvée ici). En conjonction avec l'augmentation non instantanée de la tension du régulateur lorsque l'alimentation est appliquée pour la première fois, cela peut entraîner des problèmes de démarrage. Pour se protéger contre cela, j'ai inclus un superviseur de tension en option (TPS3839G33DBZ) qui ne définira que la broche à puce élevée lorsque la tension est supérieure à un seuil approprié. Cependant, je n'ai pas encore remarqué que Brown-outs soit un problème, donc je saute parfois ce composant.
Une paire d'appareils équipés de Lora dans leurs enclos
La combinaison d'un ESP8266 avec un module LORA est un étirement en ce qui concerne GPIO disponible. Cette planche est conçue pour fonctionner avec les modules SX1276 LORA (Exemple de lien), et s'appuie fortement sur la conception d'ici, ce qui minimise les ports nécessaires en reliant trois broches du module LORA (Dio0, 1 et 2) à une broche ESP8266 via trois diodes (Pootprits Board Pootprits D9, D10 et D11 respectivement). Cette configuration de partage de dio nécessite une manipulation spéciale dans les logiciels. Cependant, pour les communications LORA simples, seule DiO0 est nécessaire, donc pour mes cartes LORA à ce jour, j'ai ponté D9, et je laisse D10 et D11 déconnecté.
Pour les tests, vous pouvez souder directement les antennes de fil hélicoïdal communes (souvent incluses avec l'achat d'un module) directement à la broche d'antenne du module. La gamme sera nul, cependant. Pour une meilleure gamme, attachez une antenne à gain supérieur (j'utilise des antennes 5DBI achetées ici). J'inclus une empreinte IPEX U.FL-R à AE1. Alternativement, les connecteurs montés sur SMA s'adaptent bien au bord de la planche sur l'empreinte J5. Ceux-ci peuvent être câblés comme suit (cet exemple utilise le tableau V4, mais il en va de même pour V5): en haut et en bas.
Notes
Un seul ADC est disponible sur l'ESP8266, avec une plage de mesure de 0V à 1V. Pour mesurer des tensions plus élevées, un diviseur de tension est donc nécessaire. À bord V5, l'ADC peut être utilisé pour les périphériques connectés à la prise audio, soit pour surveiller la tension de la batterie si JP11 ou JP5 sont fermés.
Les connexions via le cric audio passent par un diviseur avec R1 = 470 kΩ (composant R7), R2 = 200 kΩ (composant R8). Cela permet une mesure de tensions jusqu'à 3,3 V (3,3 V est abaissée à environ 0,985 V; calibrez le signal pour une précision plus élevée).
La connexion de la batterie ajoute une résistance supplémentaire de 330 kΩ (composant R10) en série avec le composant R7, conduisant à R1 = 800 kΩ. Cela augmente la plage de mesure jusqu'à 5 V.
J'ai choisi d'utiliser une prise audio à 4 pôles (modèle PJ313E) pour connecter les capteurs d'humidité à la carte. Pour l'instant, seuls trois des quatre poteaux sont connectés; Le quatrième est une pièce de rechange avec un œil sur les fonctionnalités futures. À partir de la base à la pointe de la prise audio, les connexions actuelles sont:
| Pôle | Connexion |
|---|---|
| 1 | GND |
| 2 | Pas de connexion |
| 3 | 3.3V (de GPIO12, via JP3) |
| 4 | À ADC via un diviseur de tension de 3,3 V |
J'ai rencontré un problème avec ma prise choisie (ou peut-être la combinaison de la prise et des bouchons que j'utilise): par défaut, il ne fait pas de connexion aux quatre pôles. Cela peut être vu dans l'image supérieure ici, où la broche de contact la plus profonde (pôle 4) n'est pas déviée. Pour résoudre le problème, j'ai coupé / déposé la partie avant en plastique en saillie de la prise (image inférieure)
Les petites pompes à eau et les tubes flexibles nécessaires sont largement disponibles. Comme discuté ci-dessus, ce sont des bougres électriques à l'oiseaux; D'où la raison pour laquelle le connecteur de la pompe est dans le coin le plus éloigné de la planche de l'ESP, et a protégé derrière deux condensateurs. Il est normalement alimenté par GPIO5, via un MOSFET à N-canal, ou peut être utilisé manuellement avec le bouton en option SW5.
Pour plus de simplicité, et comme les petites pompes semblent pouvoir fonctionner sur une plage de tension assez large, la pompe est fournie avec la tension qui alimente actuellement la carte (définie par l'état du circuit de partage d'alimentation): si USB est connecté, il sera 5V moins la tension directe entre les diodes D2 et D8; En cas de batterie, ce sera la tension de la batterie moins la goutte D8. En pratique, cela ne fait vraiment pas beaucoup de différence: un peu plus d'eau sera pompée pendant une période donnée lorsqu'il est sur la batterie USB vs.
Pour la connexion de la planche de la pompe, il y a une empreinte pour une prise DC-002. J'ai envisagé d'utiliser une prise USB, mais j'ai décidé que cela était trompeur car la tension de sortie n'est pas toujours le 5V que l'on attendrait de l'USB. Sur la planche illustrée ci-dessus, j'ai sauté la prise de jack d'alimentation et j'ai simplement connecté une prise à double tête à la place.
J'ai choisi cette boîte de projet car elle est bon marché, largement disponible et juste la bonne taille pour le PCB et une batterie 18650.
Des vis de 8 mm M2,6 sont nécessaires pour fixer la carte à la boîte, comme celles-ci.
| Propriété | Module | Connexion du conseil d'administration | Fiche de données | Lien d'achat * |
|---|---|---|---|---|
| Température, pression, humidité | BME280 | Direct (en-têtes de 2,54 mm) | Lien | |
| Lux | BH1750 | En-têtes directs (2,00 mm) | Lien | AliExpress |
| CO 2 | MH-Z19C | Direct (en-têtes de 2,54 mm) | Lien | AliExpress |
| Humidité | «Capteur capacitif du sol en humidité v1.2» | Bouche audio | Lien (version ancienne) | AliExpress |
* J'ai acheté à ces liens dans le passé, mais ils ne sont pas garantis. Je ne prévois pas non plus de les mettre à jour lorsqu'ils expirent inévitablement.
Il s'agit d'un capteur de température, d'humidité et de pression très pratique. Avec le point de montage actuel du capteur, il se trouve partiellement à l'extérieur de l'enceinte. Je trouve cela pratique car je n'ai pas à me soucier du débit d'air dans la boîte. Si la géométrie actuelle vous offense ou si vous avez besoin d'un appareil plus robuste où le capteur ne risque pas d'être endommagé, envisagez une refonte du point de connexion ou choisissez un capteur alternatif avec une cage intégrée.
Vous pourriez constater que les épingles soudées entravent correctement le couvercle du boîtier. Si tel est le cas, vous pouvez les couper avant le soudage, comme je l'ai fait ici.
Le capteur peut communiquer par I2C ou SPI; La plupart des gens semblent utiliser I2C, pour lesquels vous devez apporter aucune modification du conseil d'administration. Si vous voulez l'interface SPI, fermez quelques ponts à souder à l'arrière pour connecter les épingles supplémentaires. À bord V5, l'une de ces connexions alimente également le capteur d'humidité, donc des modifications seraient nécessaires si vous souhaitez exécuter la BME280 (avec interface SPI) et un capteur d'humidité simultanément.
Notes
Il s'agit d'une photodiode simple et fiable, combinée à une interface I2C. Vous pouvez l'acheter dans divers facteurs de forme, la version légère étant particulièrement pratique pour nos fins. Coupez les pièces en plastique du connecteur intégré, et cela peut désormais se brancher directement sur un en-tête de broche de 2 mm standard, comme inclus à bord de la v5. La boule légère peut être sautée du capteur et directement montée dans le haut de l'enceinte.
Notes
C'est le capteur le plus cher que j'utilise, mais je pense que cela en vaut la peine par rapport aux alternatives de COV moins chères. Il communique sur le bus UART (donc ESP8266 PINS RX et TX). Vous souhaitez donc vous assurer que le capteur n'est pas connecté si vous essayez de flasher l'ESP ou d'utiliser son interface série.
Pour utiliser le MH-Z19C sur la carte V5, vous devez connecter deux ponts de soudure à l'arrière. Avec le recul, je ne peux pas penser à un bon cas d'utilisation lorsque vous ne voudriez pas ceux qui sont pontés, donc je vais probablement échanger les coussinets contre des traces continues sur n'importe quelle version future.
Notes
Afin d'arrêter le capteur d'humidité en permanence et de vider la batterie, il est alimenté directement par GPIO12. Pont le coussin droit de JP3 vers le pavé central pour établir cette connexion. Il ne tire pas beaucoup de courant, donc je n'ai eu aucun problème à alimenter directement le capteur directement à partir d'une broche GPIO. S'il s'avérait être un problème de brondice / stabilité à l'avenir, cette connexion devrait être remplacée par un MOSFET.
La planche a été conçue à Kicad et fabriquée par JLCPCB. Les fichiers KICAD et les informations requis par JLCPCB sont fournies dans les répertoires Board_V *.
Veuillez comprendre le schéma; Je sais que c'est laid et désespérément besoin de se diviser en plusieurs parties. N'oubliez pas que c'est ma première conception de PCB!

Board V5 Disposition
Pour plus de commodité, j'utilise Tasmota pour tous les appareils dans la mesure du possible. Tasmota ne peut pas gérer LORA, donc pour ces appareils, j'utilise Micropython.
Lien d'installation Web
Assurez-vous d'installer la version "capteurs" de l'image Tasmota.
Voici quelques captures d'écran Tasmota de l'appareil V4 illustré en haut de cette lecture.
| 
Voici les principaux paramètres que j'ai changés par rapport à leur défaut dans l'interface de contrôle. Lisez à ce sujet et d'autres paramètres ici.
Notes
POWER2 ON la commandeOutput Hi plutôt que Relay 2 . Il sera ensuite réglé haut tôt dans le processus de démarrage de Tasmota et s'éteint toujours lorsque le microcontrôleur passe en profondeur.Recherchez ici mon logiciel et instructions Lora Micropython: https://github.com/brev-dev/lora_esp8266_sensor_mqtt_bridge.
Bien qu'il ne soit pas couvert par ce dépôt, voici quelques notes rapides sur l'endroit où ces appareils se trouvent dans ma configuration complète de la maison.
Ma configuration à domicile est conçue pour atteindre ces objectifs:
Pour permettre le contrôle de la température dans chaque pièce, les radiateurs sont branchés sur des bouchons intelligents ESP8285 tasmotés.
Le "Hub" est un Raspberry Pi 4 équipé de mosquitto, de nœud nœud, affluxdb et de Grafana. Mes flux de nœuds pourraient probablement être simplifiés en le remplaçant une grande partie par, par exemple, à la maison, mais je n'ai pas examiné cela. La combinaison de l'affluxdb et du Grafana est utilisée pour stocker et visualiser les données historiques (exemples ci-dessous), ainsi que l'application "MQTT Dash" sur nos téléphones pour surveiller l'état actuel et changer la température et les niveaux de déclenchement de l'humidité. La pile de logiciels RPI utilise Docker et IoTStack pour faciliter la configuration et la maintenance. Andreas Spiess a d'excellentes vidéos sur le sujet, notamment: # 255, # 295 et # 352.


