Inhaltsverzeichnis:

Solar Bodenfeuchtemesser mit ESP8266 - Gunook
Solar Bodenfeuchtemesser mit ESP8266 - Gunook

Video: Solar Bodenfeuchtemesser mit ESP8266 - Gunook

Video: Solar Bodenfeuchtemesser mit ESP8266 - Gunook
Video: Selbstbewässerung Blumentopf für Pflanzen. Solar USB Akku. ESP8266 zum Nachbauen mit Code Tutorial 2024, Juli
Anonim

In diesem Instructable machen wir einen solarbetriebenen Bodenfeuchtigkeitsmonitor. Es verwendet einen ESP8266-WLAN-Mikrocontroller mit einem Low-Power-Code, und alles ist wasserdicht, sodass es draußen bleiben kann. Sie können dieses Rezept genau befolgen oder daraus nützliche Techniken für Ihre eigenen Projekte entnehmen.

Wenn Sie neu in der Mikrocontroller-Programmierung sind, sehen Sie sich bitte meine Arduino-Klasse und die Internet der Dinge-Klasse an, um sich mit den Grundlagen der Verkabelung, Codierung und Verbindung mit dem Internet zu vertraut zu machen.

Dieses Projekt ist Teil meines kostenlosen Solarkurses, in dem Sie mehr Möglichkeiten erfahren, wie Sie die Energie der Sonne durch Gravuren und Sonnenkollektoren nutzen können.

Folgen Sie mir auf YouTube, Instagram, Twitter, Pinterest und abonnieren Sie meinen Newsletter, um auf dem Laufenden zu bleiben, woran ich arbeite.

Schritt 1: Was Sie brauchen

Was du brauchen wirst
Was du brauchen wirst

Sie benötigen eine Solarbatterie-Ladeplatine und einen ESP8266-Breakout wie den NodeMCU ESP8266 oder Huzzah sowie einen Bodensensor, eine Batterie, einen Netzschalter, ein Kabel und ein Gehäuse, um Ihre Schaltung darin zu platzieren.

Hier sind die Komponenten und Materialien, die für den Bodenfeuchtemonitor verwendet werden:

  • ESP8266 NodeMCU Mikrocontroller (oder ähnlich, Vin muss bis zu 6V tolerieren)
  • Adafruit Solarladeboard mit optionalem Thermistor und 2,2K Ohm Widerstand
  • 2200mAh Lithium-Ionen-Akku
  • Perma-Protoboard
  • Bodenfeuchte-/Temperatursensor
  • 2 Kabelverschraubungen
  • Wasserdichtes Gehäuse
  • Wasserdichtes Gleichstromkabelpaar
  • Schrumpfschlauch
  • 3.5W Solarpanel
  • Ein-/Ausschalter auf Knopfdruck
  • Doppelstick-Schaumband

Hier sind die Werkzeuge, die Sie benötigen:

  • Lötkolben und Lot
  • Helfende Hände Werkzeug
  • Abisolierzangen
  • Spülschere
  • Pinzette (optional)
  • Heißluftpistole oder Feuerzeug
  • Multimeter (optional, aber praktisch für die Fehlersuche)
  • USB-A-microB-Kabel
  • Schere
  • Stufenbohrer

Sie benötigen kostenlose Konten auf den Cloud-Datenseiten io.adafruit.com und IFTTT.

Als Amazon-Partner verdiene ich an qualifizierten Käufen, die Sie über meine Affiliate-Links tätigen.

Schritt 2: Steckbrett-Prototyp

Steckbrett-Prototyp
Steckbrett-Prototyp

Es ist wichtig, für Projekte wie dieses einen lötfreien Breadboard-Prototyp zu erstellen, damit Sie sicherstellen können, dass Ihr Sensor und Ihr Code funktionieren, bevor Sie dauerhafte Verbindungen herstellen.

Bild
Bild
Bild
Bild
Bild
Bild
Bild
Bild

In diesem Fall hat der Bodensensor Litzendrähte, so dass es notwendig war, vorübergehend feste Kopfstücke mit Lötmittel, helfenden Händen und etwas Schrumpfschlauch an den Enden der Sensordrähte zu befestigen.

Bild
Bild

Folgen Sie dem Schaltplan, um die Strom-, Masse-, Takt- und Datenpins des Sensors zu verdrahten (die Daten erhalten auch einen 10K-Pull-up-Widerstand, der mit dem Bodensensor geliefert wird).

  • Sensor grünes Kabel an GND
  • Sensor rotes Kabel an 3.3V
  • Sensor gelber Draht zu NodeMCU Pin D5 (GPIO 14)
  • Blaues Kabel des Sensors zu NodeMCU-Pin D6 (GPIO 12)
  • 10K Pull-Up-Widerstand zwischen blauem Datenpin und 3.3V

Sie können dies in Ihren bevorzugten Mikrocontroller übersetzen. Wenn Sie ein Arduino Uno oder ähnliches verwenden, wird Ihr Board bereits von der Arduino-Software unterstützt. Wenn Sie den ESP8266 verwenden, sehen Sie sich bitte meine Internet of Things-Klasse an, um Schritt-für-Schritt-Hilfe bei der Einrichtung des ESP8266 in Arduino zu erhalten (indem Sie zusätzliche URLs zum Feld URLs des zusätzlichen Boards-Managers in den Arduino-Einstellungen hinzufügen und dann nach und suchen Auswahl neuer Boards aus dem Board-Manager). Ich neige dazu, den Adafruit ESP8266 Huzzah-Board-Typ zu verwenden, um das NodeMCU ESP8266-Board zu programmieren, aber Sie können auch die generische ESP8266-Board-Unterstützung installieren und verwenden. Außerdem benötigen Sie den SiLabs-USB-Kommunikationschip-Treiber (verfügbar für Mac/Windows/Linux).

Um den Sensor mit meinem Arduino-kompatiblen Board zum Laufen zu bringen, habe ich die SHT1x Arduino-Bibliothek von der Github-Seite von Practical Arduino heruntergeladen, dann die Datei entpackt und den Bibliotheksordner in meinen Arduino / Bibliotheken-Ordner verschoben und dann in SHT1x umbenannt. Öffnen Sie die Beispielskizze ReadSHT1xValues und ändern Sie die Pinnummern auf 12 (dataPin) und 14 (clockPin), oder kopieren Sie die modifizierte Skizze hier:

#enthalten

#define dataPin 12 // NodeMCU-Pin D6 #define clockPin 14 // NodeMCU-Pin D5 SHT1x sht1x (dataPin, clockPin); // SHT1x-Objekt instanziieren void setup () { Serial.begin (38400); // Öffnen Sie die serielle Verbindung, um Werte an den Host Serial.println ("Starting up"); aufrechtzuerhalten. Void Schleife () { Float temp_c; Schwimmertemp_f; Schwebefeuchtigkeit; temp_c = sht1x.readTemperatureC(); // Werte vom Sensor lesen temp_f = sht1x.readTemperatureF (); Feuchtigkeit = sht1x.readHumidity(); Serial.print ("Temperatur: "); // Die Werte an den seriellen Port ausgeben Serial.print (temp_c, DEC); Serial.print("C/"); Serial.print (temp_f, DEC); Serial.print ("F. Luftfeuchtigkeit: "); Serial.print (Luftfeuchtigkeit); Serial.println("%"); Verzögerung (2000); }

Laden Sie diesen Code auf Ihr Board hoch und öffnen Sie den seriellen Monitor, um den Sensordatenstrom anzuzeigen.

Wenn Ihr Code nicht kompiliert wird und sich darüber beschwert, dass SHT1x.h nicht gefunden wird, haben Sie die erforderliche Sensorbibliothek nicht richtig installiert. Überprüfen Sie Ihren Arduino / Bibliotheken-Ordner auf einen namens SHT1x, und wenn er sich woanders befindet, wie in Ihrem Download-Ordner, verschieben Sie ihn in Ihren Arduino-Bibliotheken-Ordner und benennen Sie ihn bei Bedarf um.

Wenn Ihr Code kompiliert, aber nicht auf Ihr Board hochgeladen wird, überprüfen Sie Ihre Board-Einstellungen, stellen Sie sicher, dass Ihr Board angeschlossen ist, und wählen Sie den richtigen Port aus dem Menü Extras aus.

Wenn Ihr Code hochgeladen wird, Ihr serieller Monitoreingang jedoch nicht erkannt wird, überprüfen Sie, ob Ihre Baudrate mit der in Ihrer Skizze angegebenen übereinstimmt (in diesem Fall 38400).

Wenn Ihr serieller Monitoreingang nicht korrekt erscheint, überprüfen Sie Ihre Verkabelung anhand des Schaltplans. Befindet sich Ihr 10K-Pull-up-Widerstand zwischen dem Datenpin und 3,3 V? Sind Daten und Takt an die richtigen Pins angeschlossen? Sind Strom und Masse im gesamten Stromkreis so verbunden, wie sie sein sollten? Fahren Sie nicht fort, bis diese einfache Skizze funktioniert!

Der nächste Schritt ist spezifisch für den ESP8266 und konfiguriert den optionalen drahtlosen Sensorberichtsteil des Beispielprojekts. Wenn Sie einen standardmäßigen (nicht drahtlosen) Arduino-kompatiblen Mikrocontroller verwenden, entwickeln Sie Ihre endgültige Arduino-Skizze weiter und fahren Sie mit Vorbereiten der Solarladeplatine fort.

Schritt 3: Software-Setup

Software-Setup
Software-Setup

Um den Code für dieses Projekt mit dem ESP8266 zu kompilieren, müssen Sie einige weitere Arduino-Bibliotheken installieren (verfügbar über den Bibliotheksmanager):

  • Adafruit IO Arduino
  • Adafruit MQTT
  • ArduinoHttpClient

Laden Sie den diesem Schritt beigefügten Code herunter, entpacken Sie die Datei und öffnen Sie Solar_Powered_Soil_Moisture_Monitor_Tutorial in Ihrer Arduino-Software.

#enthalten

#include #include #include #include // Daten- und Taktverbindungen angeben und SHT1x-Objekt instanziieren #define dataPin 12 // NodeMCU-Pin D6 #define clockPin 14 // NodeMCU-Pin D5 SHT1x sht1x (dataPin, clockPin); // Feed einrichten AdafruitIO_Feed *humidity = io.feed("humidity"); AdafruitIO_Feed *temperature = io.feed("temperatur"); const int sleepTime = 15; // 15 Minuten

Void-Setup ()

{Seriell.begin(115200); // Öffnen Sie die serielle Verbindung, um Werte an den Host Serial.println ("Starting up"); // Verbindung zu io.adafruit.com Serial.print ("Verbindung mit Adafruit IO herstellen"); io.connect(); // auf eine Verbindung warten während (io.status () < AIO_CONNECTED) { Serial.print ("."); Verzögerung (500); } // wir sind verbunden Serial.println (); Serial.println (io.statusText()); }

Leere Schleife ()

{io.run(); // io.run(); hält den Client in Verbindung und ist für alle Skizzen erforderlich. float temp_c; Schwimmertemp_f; schweben Feuchtigkeit; temp_c = sht1x.readTemperatureC(); // Werte vom Sensor lesen temp_f = sht1x.readTemperatureF (); Feuchtigkeit = sht1x.readHumidity(); Serial.print ("Temperatur: "); // Die Werte an den seriellen Port ausgeben Serial.print (temp_c, DEC); Serial.print("C/"); Serial.print (temp_f, DEC); Serial.print ("F. Luftfeuchtigkeit: "); Serial.print (Feuchtigkeit); Serial.println("%"); Feuchtigkeit->Speichern (Feuchtigkeit); Temperatur->Speichern(temp_f); Serial.println ("ESP8266 schläft …"); ESP.deepSleep(sleepTime * 1000000 * 60); // Schlaf }

Dieser Code ist ein Mashup des Sensorcodes von früher in diesem Tutorial und ein einfaches Beispiel aus dem Cloud-Datendienst Adafruit IO. Das Programm wechselt in den Energiesparmodus und schläft die meiste Zeit, wacht aber alle 15 Minuten auf, um die Temperatur und Luftfeuchtigkeit des Bodens abzulesen und meldet seine Daten an Adafruit IO. Navigieren Sie zur Registerkarte config.h und geben Sie Ihren Adafruit IO-Benutzernamen und -Schlüssel sowie Ihren lokalen WLAN-Netzwerknamen und Ihr Passwort ein. Laden Sie dann den Code auf Ihren ESP8266-Mikrocontroller hoch.

Bild
Bild

Auf io.adafruit.com müssen Sie sich ein wenig vorbereiten. Nachdem Sie Feeds für Temperatur und Luftfeuchtigkeit erstellt haben, können Sie ein Dashboard für Ihren Monitor erstellen, das eine Grafik der Sensorwerte und der Daten der beiden eingehenden Feeds enthält. Wenn Sie eine Auffrischung der ersten Schritte mit Adafruit IO benötigen, sehen Sie sich diese Lektion in meinem Internet der Dinge-Kurs an.

Schritt 4: Solarladeplatine vorbereiten

Solarladeplatine vorbereiten
Solarladeplatine vorbereiten

Bereiten Sie die Solarladeplatine vor, indem Sie ihren Kondensator und einige Drähte an die Lastausgangspads löten. Ich passe meinen so an, dass er mit einem optionalen Zusatzwiderstand (2,2K über PROG gelötet) schneller aufgeladen wird und es sicherer ist, unbeaufsichtigt zu bleiben, indem ich den SMD-Widerstand durch einen 10K-Thermistor ersetzt, der an der Batterie selbst angebracht ist. Dadurch wird das Laden auf einen sicheren Temperaturbereich begrenzt. Ich habe diese Änderungen in meinem Solar-USB-Ladegerät-Projekt ausführlicher behandelt.

Schritt 5: Mikrocontroller-Schaltung aufbauen

Mikrocontroller-Schaltung aufbauen
Mikrocontroller-Schaltung aufbauen
Bild
Bild
Bild
Bild

Löten Sie die Mikrocontroller-Platine und den Netzschalter auf eine Perma-Proto-Platine.

Bild
Bild

Verbinden Sie den Stromausgang des Solarladegeräts mit dem Eingang Ihres Schalters, der für mindestens 1 Ampere ausgelegt sein sollte.

Bild
Bild

Erstellen und löten Sie die im Schaltplan oben beschriebenen Steckbrett-Drahtverbindungen (oder nach den Spezifikationen Ihrer persönlichen Version), einschließlich des 10K-Pull-up-Widerstands an der Datenleitung des Sensors.

Die Load-Pins des Solarladegeräts liefern 3,7 V Batteriestrom, wenn kein Solarstrom vorhanden ist, werden jedoch direkt vom Solarpanel mit Strom versorgt, wenn es eingesteckt und sonnig ist. Daher muss der Mikrocontroller in der Lage sein, eine Vielzahl von Spannungen zu tolerieren, so niedrig wie 3,7 V und bis zu 6 V DC. Für diejenigen, die 5 V benötigen, kann ein PowerBoost (500 oder 1000, je nach benötigtem Strom) verwendet werden, um die Lastspannung auf 5 V zu modulieren (wie im Projekt Solar USB Charger gezeigt). Hier sind einige gängige Boards und ihre Eingangsspannungsbereiche:

  • NodeMCU ESP8266 (hier verwendet): 5V USB oder 3,7V-10V Vin
  • Arduino Uno: 5V USB oder 7-12V Vin
  • Adafruit Huzzah ESP8266 Breakout: 5V USB oder 3,4-6V VBat

Um eine möglichst lange Akkulaufzeit zu erreichen, sollten Sie sich etwas Zeit nehmen, um den Gesamtstrom Ihrer Stromaufnahme zu berücksichtigen und zu optimieren. Der ESP8266 verfügt über eine Deep-Sleep-Funktion, die wir in der Arduino-Skizze verwendet haben, um seinen Stromverbrauch drastisch zu reduzieren. Es wacht auf, um den Sensor zu lesen und zieht mehr Strom, während es sich mit dem Netzwerk verbindet, um den Wert des Sensors zu melden, und geht dann für eine bestimmte Zeit wieder in den Ruhezustand. Wenn Ihr Mikrocontroller viel Strom verbraucht und nicht leicht in den Ruhezustand versetzt werden kann, sollten Sie Ihr Projekt auf ein kompatibles Board portieren, das weniger Strom verbraucht. Schreiben Sie eine Frage in die Kommentare unten, wenn Sie Hilfe benötigen, um herauszufinden, welches Board das richtige für Ihr Projekt sein könnte.

Schritt 6: Kabelverschraubungen installieren

Bild
Bild

Um wetterfeste Einführungspunkte für das Solarmodulkabel und das Sensorkabel zu schaffen, installieren wir zwei Kabelverschraubungen an der Seite des wetterfesten Gehäuses.

Bild
Bild
Bild
Bild

Passen Sie Ihre Komponenten an, um die ideale Platzierung zu ermitteln, und markieren und bohren Sie dann mit einem Stufenbohrer Löcher in einem wasserdichten Gehäuse. Installieren Sie die beiden Kabelverschraubungen.

Bild
Bild

Schritt 7: Komplette Schaltungsbaugruppe

Komplette Schaltungsbaugruppe
Komplette Schaltungsbaugruppe

Stecken Sie die Anschlussseite eines wasserdichten Stromkabels in eines und löten Sie es an den DC-Eingang des Solarladegeräts (rot an + und schwarz an -).

Bild
Bild

Bodensensor durch die andere Verschraubung stecken und gemäß Schaltplan an perma-proto anschließen.

Bild
Bild

Kleben Sie die Thermistorsonde an die Batterie. Dadurch wird das Laden auf einen sicheren Temperaturbereich begrenzt, während das Projekt unbeaufsichtigt draußen bleibt.

Bild
Bild

Das Aufladen bei zu hoher oder zu kalter Temperatur kann den Akku beschädigen oder einen Brand auslösen. Extreme Temperaturen können Schäden verursachen und die Lebensdauer des Akkus verkürzen. Bringen Sie ihn also ins Haus, wenn er unter dem Gefrierpunkt oder über 45℃/113F liegt.

Bild
Bild

Ziehen Sie die Kabelverschraubungen fest, um eine wetterfeste Abdichtung um die entsprechenden Kabel zu gewährleisten.

Schritt 8: Sonnenkollektor vorbereiten

Sonnenkollektor vorbereiten
Sonnenkollektor vorbereiten

Folgen Sie meinem Instructable, um das Kabel für Ihr Solarpanel mit der Steckerseite des wasserdichten Gleichstromkabelsatzes zu spleißen.

Schritt 9: Testen Sie es

Probier es aus
Probier es aus

Stecken Sie Ihre Batterie ein und schalten Sie den Stromkreis ein, indem Sie den Netzschalter drücken.

Bild
Bild

Testen Sie es und stellen Sie sicher, dass es an das Internet meldet, bevor Sie das Gehege schließen und den Sensor in Ihrem Kräutergarten, einer wertvollen Topfpflanze oder einem anderen Boden innerhalb der Signalreichweite Ihres WLAN-Netzwerks installieren.

Bild
Bild

Sobald die Daten des Sensors online protokolliert wurden, ist es einfach, ein Rezept für E-Mail- oder Textwarnungen auf der API-Gateway-Site If This Then That einzurichten. Ich habe meine so konfiguriert, dass sie mir eine E-Mail sendet, wenn die Bodenfeuchtigkeit unter 50 sinkt.

Um es zu testen, ohne darauf zu warten, dass meine Pflanze austrocknet, habe ich manuell einen Datenpunkt zu meinem Feuchtigkeitsfeed auf Adafruit IO eingegeben, der unter den Schwellenwert fiel. Wenige Augenblicke später kommt die E-Mail! Wenn der Bodenwert unter meinen angegebenen Wert fällt, erhalte ich jedes Mal eine E-Mail, wenn der Feed aktualisiert wird, bis ich den Boden bewässere. Aus Gründen der Vernunft habe ich meinen Code aktualisiert, um den Boden viel seltener als alle 15 Minuten zu beproben.

Schritt 10: Verwenden Sie es draußen

Verwenden Sie es draußen!
Verwenden Sie es draußen!
Verwenden Sie es draußen!
Verwenden Sie es draußen!

Dies ist ein unterhaltsames Projekt, das an den Flüssigkeitsbedarf Ihrer Anlage angepasst werden kann, und es ist einfach, Sensoren auszutauschen oder hinzuzufügen oder die Solarstromfunktionen in Ihre anderen Arduino-Projekte zu integrieren.

Danke fürs Mitmachen! Ich würde gerne hören, was Sie denken; bitte in die Kommentare posten. Dieses Projekt ist Teil meiner kostenlosen Solar Class, in der Sie einfache Hinterhofprojekte und weitere Lektionen zur Arbeit mit Sonnenkollektoren finden. Schauen Sie rein und melden Sie sich an!

Wenn Ihnen dieses Projekt gefällt, interessieren Sie sich vielleicht für einige meiner anderen:

  • kostenlose Internet-of-Things-Klasse
  • YouTube-Abonnentenzähler mit ESP8266
  • Social Stats Tracker-Display mit ESP8266
  • WiFi-Wetteranzeige mit ESP8266
  • Internet-Valentinstag

Folgen Sie mir auf YouTube, Instagram, Twitter, Pinterest und Snapchat, um auf dem Laufenden zu bleiben, woran ich arbeite.

Empfohlen: