Dieses Repo enthält Build-Anweisungen für ein Mehrzweck-ESP8266-Sensorgerät für IoT-Projekte zu Hause.
Board V5, teilweise besiedelt. Bild erzeugt in Kicad.
Diese Sensorboard erfüllt die meisten meiner Hardware-Anforderungen für die Heimatomation. Es passt in ein billiges, weit verbreitetes Gehäuse (kein 3D-Druck erforderlich) und kann entweder durch eine Li-Ionen-Batterie (Spannungsüberwachung, Ladung, Rückwärtspolarität und Schutzkreislauf) oder USB mit angemessener Stromversorgung angetrieben werden, wenn der USB und die Batterie gleichzeitig angeschlossen sind. Auf der Softwareseite habe ich die Dinge so hoch wie möglich gehalten: Tasmota für die meisten Nutzungsszenarien; Micropython, wo erforderlich. Die Kommunikation nutzt das MQTT-Protokoll über Wi-Fi oder Lora (ich benutze das Board sowohl als Remote-Lora-Sensor als auch als Lora-Mqtt-Brücke).
Die Platine ist für die folgenden Sensoren sowie für Motor-/Pumpensteuerung (für automatische Anlagenbewässerung) ausgelegt. GPIO-Stifte bleiben leicht zugänglich, sodass dieses Board auch als Grundlage für viele andere Sensoren verwendet werden kann.
Die Verwendung eines ESP8266 verfügt über einige Einschränkungen, insbesondere um den verfügbaren GPIO und nur einen ADC -Anschluss. Dies bedeutet, dass nicht alle potenziellen Funktionen gleichzeitig verfügbar sind. Ja, diese Einschränkungen könnten entweder mit einem Portsplitter oder mit einem anderen Mikrocontroller wie einem ESP32 überwunden werden. Ein Teil des Spaßes für mich war jedoch, zu sehen, wie viel ich nur mit dem ESP8266 machen konnte, und das Endergebnis passt zu allen meinen Anwendungsfällen.
![]() | ![]() |
|---|---|
| V4, mit BME280 (Temperatur, Druck und Luftfeuchtigkeit), BH1750 (Lux) und Feuchtigkeitssensoren (über die Audio -Stecker). Ausgestattet für die Bewässerungspumpe (unten rechts); Derzeit nicht verbunden. | V5, mit den Sensoren BME280 und MH-Z19C (CO 2 ) |
![]() |
|---|
| Eine neue Lieferung von V5 -Boards |
Sie könnten (sollten?!) Etwas anderes benutzen. Ich habe dies zunächst so entworfen, um etwas über IoT -Sensoren und Schaltungsdesign/Herstellung zu erfahren. Ich habe es festgehalten, weil es gegenüber den Schelfbrettern mehrere Vorteile bietet:
Das Board kann entweder direkt von USB oder von einer Li-Ionen-Batterie betrieben werden. Board V4 und früher verwendete Micro-USB; V5 verwendet USB-C. Der Ausschnitt links vom Board ist so konzipiert, dass er ein 1-Zell-Fall von 18650-Batterie wie diesen (Kaufverbindlichkeit) unterbringt. Der Batterieanschluss ist ein 2-polige JST-Ph (2-mm-Tonhöhe), aber wenn Sie es vorziehen, löten Sie die Drähte einfach direkt an die Anschlüsse.
Wenn sowohl Batterie als auch USB gleichzeitig angeschlossen sind, stellt eine Stromversorgungsschaltung sicher, dass nur der USB die Platine betreibt. Die Batterie wird in Verbindung mit einer Kopie des gemeinsamen 3-Chip-TP4056-Moduls zum Ladung verwendet. Es gibt einen Schalter, wenn Sie keine Batterie verwenden und diese Schaltung umgehen möchten (oder wenn der Akku nicht geladen wird, während USB angeschlossen ist). Das Modul umfasst Schutz für Überladung, Überstieg, Überstrom und Kurzschluss. Beachten Sie, dass der Überstrom- und Kurzschlussschutz für den Rest der Platine (nicht die Batterie) umgangen wird, wenn USB angeschlossen ist, und der Stromversorgungsschaltkreis ist daher aktiv. Das Standard-Lademodul beinhaltet keinen batteriebetonischen Schutz, daher habe ich auch hinzugefügt.
Die Überwachung der Batteriespannung ist erhältlich, wenn entweder JP5 (vorne) oder JP6 (Rückseite) überbrückt wird. Dadurch verbindet das positive Batterieanschluss über einen Spannungsteiler mit dem alleinigen ADC -Pin des ESP. Diese Verbindung ist optional, da der Feuchtigkeitssensor (und natürlich auch andere Sensoren) auch Zugriff auf die ADC benötigt. Aus diesem Grund ist es eindeutig nicht möglich, sowohl die Batteriespannung als auch einen Bodenfeuchtigkeitssensor gleichzeitig mit der V5 -Platte zu überwachen.
Notizen
Es gibt eine schwindelerregende Auswahl möglicher LDO -ICs. Ich habe mich aufgrund seines relativ hohen Stromausgangs und einer niedrigen Ausfallspannung für den XC6203P32PR entschieden. Board V4 hatte Fußabdrücke für zwei alternative Aufsichtsbehörden, die ich auf Stabilität testen wollte, diese jedoch nicht benötigt und in V5 entfernt wurden.
Auf der PCB -Version 4 habe ich zwei 1 μF -Tantal -Kondensatoren mit dem XC6203 gemäß dem Datenblatt gepaart. Ich hatte einen Kondensator in zwei dieser Boards nach ein paar Wochen aus dem Gebrauch, was einen Kurzschluss und viel Rauch verursachte (die Bretter wurden zu dieser Zeit USB-Antrieb). Nachdem ich online Tantal-Horror-Geschichten gelesen hatte, beschloss ich, mit dem Tausch gegen Keramik gegen V5 zu experimentieren und keine weiteren Probleme zu haben. Ich entdeckte später, dass die beiden Fehler meine Schuld waren: Ich habe die Teile umgekehrt eingebaut! Ich bin sicher, es gibt einen guten Grund, warum die Polarity-Marker-Band auf Tantalums das Positive bezeichnet, während es auf Aluminiumkondensatoren und Dioden das Negative bezeichnet, aber sie haben diesen Neuling gestolpert.
Praktischerweise ist der XC6203P332PR auch mit den weißen ESP-12F-Adapterplatten kompatibel. Es ist kleiner als der bereitgestellte Fußabdruck, kann aber immer noch mit wenig Schwierigkeiten darauf gelötet werden. Stellen Sie sicher, dass Sie den Central Zero-Ohm-Widerstand an der Vorderseite der Platine entfernen, wenn Sie einen vom Plattern montierten Regler verwenden.
Ich lernte den harten Weg über die Empfindlichkeit der elektrischen Nr. Ich habe dies in V4 mit der Repositionierung der Komponenten überwunden (den Motor vom Mikrocontroller auf das äußerste Ende zu bewegen), zusätzliche Kondensatoren neben der motorischen Verbindung hinzugefügt, die Breite der Leistungsspuren und die Signalspuren, die Schleifen auf der Erdungsebene minimiert und den motorischen Grundflugzeugrückweg vom Rest der Komponenten trennen.
Das Board ist für einen ESP-12F ausgelegt. Ich neige dazu, den Chip in einem Programmierer -Board zu blinken, bevor ich ihn einlötet, nur um zu überprüfen, ob er funktioniert.
Bei der Installation kann es normal blinken, indem eine USB-UART-Schnittstelle mit den entsprechenden Stiften angeschlossen wird.
| Stift# | Hafen | Board -Verbindung | Widerstand* |
|---|---|---|---|
| 1 | RST | Taste zurücksetzen | |
| 2 | ADC | ADC (Feuchtigkeit oder Batterie) | |
| 3 | En | Chip aktivieren | Vorgesetzter oder E-pu |
| 4 | Io16 | DeepSleep | |
| 5 | Io14 | I2c scl oder spi sck | |
| 6 | Io12 | Feuchtigkeit VCC oder SPI SDO-MISO | |
| 7 | Io13 | I2C SDA oder SPI Mosi | |
| 8 | VCC | ||
| 15 | GND | ||
| 16 | Io15 | Lora NSS | E-PD |
| 17 | Io2 | An Bord der LED & spi ss | |
| 18 | Io0 | Flash -Taste | E-pu |
| 19 | Io4 | Modusschalter (GND: Sleep verwenden) | E-pu |
| 20 | Io5 | Wasserpumpe oder Lora Dio | E-PD |
| 21 | Rxd | CO 2 TX | |
| 22 | Txd | CO 2 RX |
* Am Stift gebunden
Es scheint einige Online -Debatten über die optimale Möglichkeit zu geben, die Erste mit GPIO16 zu verbinden, um die DeepSleep -Funktionalität des ESP8266 zu verwenden. Ich habe auf der Seite der Vorsicht gegründet und eine Diode zwischen den beiden hinzugefügt.
Der ESP8266 ist anfällig für Brown-Outs, wenn die Spannung zu niedrig ist (eine gute Erklärung für dieses Problem finden Sie hier). In Verbindung mit der nicht-instantanen Erhöhung der Spannung des Reglers beim ersten Anbringen kann dies zu Stiefelproblemen führen. Um dagegen zu schützen, habe ich einen optionalen Spannungsleiter (TPS3839G333DBZ) aufgenommen, der den chip-fähigen Stift nur hoch einstellt, wenn die Spannung über einem geeigneten Schwellenwert liegt. Ich habe jedoch noch nicht bemerkt, dass Brown-Outs ein Problem sind, daher überspringe ich diese Komponente manchmal.
Ein Paar Lora-ausgestattete Geräte in ihren Gehäusen
Das Kombinieren eines ESP8266 mit einem LORA -Modul ist eine Strecke, wenn es um den verfügbaren GPIO geht. Diese Karte ist so konzipiert, dass sie mit SX1276 LORA -Modulen (Beispiel -Link) arbeitet, und stützt sich stark auf das Design, das die erforderlichen Ports minimiert, indem drei der Pins des LORA -Moduls (DIO0, 1 und 2) über ein ESP8266 -PIN über drei Dioden (Board Footprints D9, D10 und D11) verknüpft werden. Diese DIO-Sharing-Konfiguration benötigt eine spezielle Handhabung in der Software. Für einfache LORA -Kommunikation ist jedoch nur DIO0 benötigt, sodass meine bisherigen LORA -Boards D9 überbrückt und D10 und D11 getrennt gelassen habe.
Zum Testen können Sie die gängigen Helical-Wire-Antennen (häufig mit dem Kauf eines Moduls enthalten) direkt an den Antennenstift des Moduls gelötet. Reichweite wird jedoch saugen. Für eine bessere Reichweite befestigen Sie eine Antenne mit höherer Gewinn (ich verwende 5DBI-Antennen, die hier gekauft wurden). Ich füge einen IPEX U.FL-R-Fußabdruck bei AE1 hinzu. Alternativ passen die SMA-Randverbinder über den Fußabdruck J5 gut am Rande des Bretts. Diese können wie folgt verdrahtet werden (in diesem Beispiel wird Board V4 verwendet, aber dasselbe funktioniert für V5): oben und unten.
Notizen
Auf dem ESP8266 ist ein einzelner ADC mit einem Messbereich von 0V bis 1 V erhältlich. Für die Messung höherer Spannungen ist daher ein Spannungsteiler erforderlich. An Bord V5 kann der ADC entweder für Peripheriegeräte verwendet werden, die mit der Audiobuchse verbunden sind, oder um die Batteriespannung zu überwachen, wenn entweder JP11 oder JP5 geschlossen ist.
Verbindungen über die Audio -Buchse gehen durch einen Teiler mit R1 = 470 kΩ (Komponente R7), R2 = 200 kΩ (Komponente R8). Dies ermöglicht die Messung von Spannungen bis zu 3,3 V (3,3 V wird auf ungefähr 0,985 V gesenkt; das Signal für eine höhere Genauigkeit kalibrieren).
Die Batterieverbindung fügt einen zusätzlichen Widerstand von 330 kΩ (Komponente R10) in Reihe mit Komponenten R7 hinzu, was zu R1 = 800 kΩ führt. Dies erhöht den Messbereich auf 5 V.
Ich habe mich für eine 4-pole-Audiobuchse (Modell PJ313E) entschieden, um die Feuchtigkeitssensoren mit der Platine zu verbinden. Im Moment sind nur drei der vier Pole verbunden; Der vierte ist ein Ersatz mit Blick auf die zukünftige Funktionalität. Ausgehend von der Basis bis zur Spitze des Audiostopfens sind die aktuellen Verbindungen:
| Pole | Verbindung |
|---|---|
| 1 | GND |
| 2 | Keine Verbindung |
| 3 | 3,3 V (aus GPIO12, über JP3) |
| 4 | Über einen 3,3 -V -Spannungsteiler ADC |
Ich habe ein Problem mit meinem ausgewählten Socket (oder vielleicht der Kombination aus der Steckdose und den Steckern, die ich verwende) erlebt: Standardmäßig ist es nicht, eine Verbindung zu allen vier Polen herzustellen. Dies ist hier im oberen Bild zu sehen, wo das tiefste Kontaktpin (Pol 4) nicht abgelenkt wird. Um das Problem zu beheben, habe ich den vorspringenden Plastikteil der Steckdose (Bodenbild) abgelegt/abgereicht).
Kleine Wasserpumpen und der notwendige flexible Schlauch sind weit verbreitet. Wie oben erläutert, sind sie elektrisch ohne Buggers; Daher befindet sich der Anschluss für die Pumpe in der äußersten Ecke des Brettes vom ESP und schützt hinter zwei eigenen Kondensatoren. Es wird normalerweise von GPIO5 über ein N-Kanal-MOSFET angetrieben oder kann manuell mit dem optionalen Taste SW5 betrieben werden.
Der Einfachheit halber und da die kleinen Pumpen in der Lage zu sein scheinen, über einen ziemlich weiten Spannungsbereich zu funktionieren, wird die Pumpe mit der derzeitigen Spannung geliefert, die die Karte betreibt (definiert durch den Zustand der Stromversorgungsschaltung): Wenn USB angeschlossen ist, wird sie 5 V abzüglich der Vorwärtsspannung über DioDes D2 und D8 beträgt. Bei batteriebetriebener Batterie ist es die Batteriespannung abzüglich des D8-Tropfens. In der Praxis macht es wirklich keinen großen Unterschied: Etwas mehr Wasser wird während einer bestimmten Zeit auf USB gegenüber batteriebetriebenen Zeiten gepumpt.
Für die Brettverbindung der Pumpe gibt es einen Fußabdruck für einen DC-002-Sockel. Ich überlegte, ob ich einen USB -Socket verwendet habe, entschied aber, dass dies irreführend war, da die Ausgangsspannung nicht immer der 5V ist, den man von USB erwarten würde. Auf der oben abgebildeten Brett habe ich den Power-Jack-Sockel übersprungen und stattdessen einfach eine Doppelstift-Header-Sockel angeschlossen.
Ich habe mich für diese Projektbox entschieden, weil sie billig, weit verbreitet ist und genau die richtige Größe für die Leiterplatte und eine Batterie von 18650.
8mm M2.6 -Schrauben werden benötigt, um die Platine an der Box wie diese anzubringen.
| Eigentum | Modul | Board -Verbindung | Datenblatt | Kauflink* |
|---|---|---|---|---|
| Temperatur, Druck, Luftfeuchtigkeit | BME280 | Direkt (2,54 mm Header) | Link | |
| Lux | BH1750 | Direkt (2,00 mm Header) | Link | Aliexpress |
| CO 2 | MH-Z19C | Direkt (2,54 mm Header) | Link | Aliexpress |
| Feuchtigkeit | "Kapazitiver Bodenfeuchtigkeitssensor v1.2" | Audiostopfen | Link (ältere Version) | Aliexpress |
* Ich habe in der Vergangenheit bei diesen Links gekauft, aber sie haben keine Garantie. Ich habe auch nicht vor, sie zu aktualisieren, wenn sie unweigerlich ablaufen.
Dies ist eine sehr praktische Temperatur, Feuchtigkeit und Drucksensor. Mit dem aktuellen Mountspunkt des Sensors befindet es sich teilweise außerhalb des Gehäuses. Ich finde das bequem, weil ich mir keine Sorgen um den Luftstrom in der Box machen muss. Wenn die aktuelle Geometrie Sie beleidigt oder Sie ein robusteres Gerät benötigen, bei dem der Sensor nicht gefährdet, beschädigt zu werden, sollten Sie ein Neugestaltung am Verbindungspunkt in Betracht ziehen oder einen alternativen Sensor mit integriertem Käfig auswählen.
Möglicherweise stellen Sie fest, dass die Lötstifte dem Schließen des Gehäusedeckels ordnungsgemäß im Wege stehen. Wenn dies der Fall ist, können Sie sie vor dem Löten abschneiden, wie ich es hier getan habe.
Der Sensor kann mit I2C oder SPI kommunizieren; Die meisten Menschen scheinen I2C zu verwenden, für die Sie keine Änderungen des Boards vornehmen müssen. Wenn Sie die SPI -Schnittstelle wünschen, schließen Sie ein paar Lötbrücken auf der Rückseite, um die zusätzlichen Stifte anzuschließen. An Bord V5 führt eine dieser Verbindungen auch den Feuchtigkeitssensor an, sodass Änderungen erforderlich sind, wenn Sie sowohl den BME280 (mit SPI -Schnittstelle) als auch einen Feuchtigkeitssensor gleichzeitig ausführen möchten.
Notizen
Dies ist eine einfache und zuverlässige Fotodiode, kombiniert mit einer I2C -Schnittstelle. Sie können es in verschiedenen Formfaktoren kaufen, wobei die Light-Ball-Version für unsere Zwecke besonders bequem ist. Schneiden Sie die Kunststoffteile des eingebauten Steckers ab, und dies kann nun direkt in einen Standard-Stift-Header mit 2 mm Stift angeschlossen werden, wie auf Bord V5 enthalten. Der leichte Ball kann vom Sensor gestoßen und direkt in die Oberseite des Gehäuses montiert werden.
Notizen
Dies ist der teurste Sensor, den ich benutze, aber ich denke, es lohnt sich gegenüber den billigeren VOC -Alternativen. Es kommuniziert über den UART -Bus (ESP8266 Pins RX und TX). Sie möchten daher sicherstellen, dass der Sensor nicht angeschlossen ist, wenn Sie versuchen, das ESP zu blinken oder seine serielle Schnittstelle zu verwenden.
Um den MH-Z19C auf dem Board V5 zu verwenden, müssen Sie zwei Lötbrücken auf der Rückseite anschließen. Im Nachhinein kann ich mir keinen guten Anwendungsfall vorstellen, wenn Sie diese nicht wollen, also werde ich die Pads wahrscheinlich nur für kontinuierliche Spuren in einer zukünftigen Version austauschen.
Notizen
Um den Feuchtigkeitssensor zu stoppen, der ständig läuft und die Batterie entwässert, wird er direkt von GPIO12 angetrieben. Brücken Sie das rechte Pad von JP3 in das Mittelpad, um diese Verbindung herzustellen. Es zeichnet nicht viel Strom, daher hatte ich keine Probleme, den Sensor direkt von einem GPIO -Pin zu betreiben. Wenn sich herausstellte, dass es sich in Zukunft um ein Braun-/Stabilitätsproblem handelte, müsste diese Verbindung durch ein MOSFET ersetzt werden.
Das Board wurde in Kicad entworfen und von JLCPCB hergestellt. KICAD -Dateien und die von JLCPCB erforderlichen Informationen finden Sie in den Verzeichnissen board_v*.
Bitte verstehen Sie mit dem Schema; Ich weiß, dass es hässlich und dringend in mehrere Teile aufgeteilt werden muss. Denken Sie daran, dies ist mein erstes PCB -Design!

Board V5 Layout
Zur Bequemlichkeit benutze ich Tasmota für alle Geräte, wo möglich. Tasmota kann Lora nicht bewältigen, daher verwende ich für diese Geräte Micropython.
Web -Install -Link
Stellen Sie sicher, dass Sie die "Sensors" -Version des Tasmota -Bildes installieren.
Hier sind einige Tasmota -Screenshots aus dem V4 -Gerät, das oben in diesem Readme abgebildet ist.
| 
Hier sind die Haupteinstellungen, die ich von ihrer Standardeinstellung in der Steuerschnittstelle geändert habe. Lesen Sie hier über diese und andere Einstellungen.
Notizen
POWER2 ON Befehl hinzuOutput Hi und Relay 2 auszugeben. Es wird dann früh in Tasmotas Boot -Prozess hoch eingestellt und schalten trotzdem aus, wenn der Mikrocontroller in einen tiefen Schlaf geht.Schauen Sie sich hier nach meiner Lora Micropython-Software und -anweisungen: https://github.com/brev-dev/lora_esp8266_sensor_mqtt_bridge.
Obwohl nicht von diesem Repo abgedeckt, finden Sie hier einige kurze Notizen darüber, wo diese Geräte in meinem vollständigen Heim -Setup sitzen.
Mein Heim -Setup soll diese Ziele erreichen:
Um die Temperaturregelung in jedem Raum zu aktivieren, werden die Kühler an tasmotisierte ESP8285 -Smart -Stecker eingesteckt.
Der "Hub" ist ein Raspberry Pi 4, der mit Mosquitto, Namled, InfluxDB und Grafana ausgestattet ist. Meine namierten Ströme könnten wahrscheinlich vereinfacht werden, indem vieles durch den Homasise -stellvertretenden viel ersetzt wurde, aber ich habe mich nicht damit befasst. Die Kombination von InfluxDB und Grafana wird verwendet, um die historischen Daten (Beispiele unten) zusammen mit der "MQTT -Dash" -App auf unseren Telefonen zu speichern und zu visualisieren, um den aktuellen Status zu überwachen und die Temperatur- und Feuchtigkeitsauslöser -Pegel zu ändern. Der RPI -Software -Stack verwendet Docker und IoTStack zur einfachen Konfiguration und Wartung. Andreas Spiess hat einige großartige Videos zu diesem Thema, darunter: #255, #295 und #352.


