Inhaltsverzeichnis:
- Schritt 1: Bodensensoren
- Schritt 2: Tiersensor
- Schritt 3: Wasserpumpensteuerung
- Schritt 4: Regensensor
- Schritt 5: Tiersirene
- Schritt 6: Hauptsystem
- Schritt 7: Das Websystem
Video: Drahtloses Gartensystem - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:20
Dieses Projekt basiert auf Arduino und verwendet "Module", um Ihnen zu helfen, Ihre Pflanzen zu gießen und sich bei Temperatur, Boden und Regen anzumelden.
Das System ist drahtlos über 2, 4 GHz und verwendet NRF24L01-Module zum Senden und Empfangen von Daten. Lassen Sie mich ein wenig erklären, wie es funktioniert, PS! Entschuldigen Sie, wenn das Englisch nicht zu 100 % stimmt, ich komme aus Schweden.
Ich benutze dieses System, um meine Pflanzen zu kontrollieren, denn ich habe verschiedene Pflanzen, die ich brauchte, um sie anders zu loggen. Also baue ich ein zonenbasiertes Log-System.
Die Bodensensoren, die die Bodenfeuchtigkeit und -temperatur messen (betrieben mit Batterie), überprüfen stündlich und leiten die Daten an die Basismaschine weiter, die über eine WLAN-Verbindung verfügt. Die Daten werden auf einen Server in meinem Haus hochgeladen und melden sich auf einer Webseite an.
Wenn der Boden Wasser benötigt, wird die richtige Pumpe aktiviert, je nachdem, was der Bodensensor überprüft hat. Aber wenn es regnet, wird es nicht gießen. Und wenn es wirklich heiß ist, wird es etwas mehr gießen.
Nehmen wir an, Sie haben ein Kartoffelland, eines für Tabak und eines für Tomaten, dann können Sie 3 Zonen mit 3 verschiedenen Sensoren und 3 Pumpen haben.
Es gibt auch Pir-Sensoren, die auf Bewegungen prüfen, und wenn sie auf der Webseite aktiviert werden, beginnt eine laute Sirene, das Tier oder die Person, die in der Nähe meiner Pflanzen läuft, zu erschrecken.
Hoffe du verstehst ein wenig. Jetzt können wir mit der Herstellung einiger Sensoren beginnen.
Meine GitHub-Seite, auf der du alles herunterlädst:
Schritt 1: Bodensensoren
Jeder Sensor hat eine eindeutige Nummer, die der Webseite hinzugefügt wird. Wenn also der Bodensensor sendet, werden die Daten von diesem Bodensensor der richtigen Zone hinzugefügt. Wenn der Sensor nicht registriert ist, werden keine Daten übermittelt.
Für diesen Build benötigen Sie:
- 1x Atmega328P-PU-Chip
- 1x nRF24L01-Modul
- 1x 100 uf Kondensator
- 1x NPN BC547 Transistor
- 2x 22 pF Kondensatoren
- 1x 16.000 MHz Quarz
- 1x Bodenfeuchtigkeitssensor
- 1x DS18B20 Temperatursensor
- 1x RGB Led (Common Anode wird von mir verwendet)
- 3x 270 Ohm Widerstände
- 1x 4, 7 K Ohm Widerstand
- Akku (ich verwende 3,7 V Li-Po-Akku)
- Und wenn Li-Po verwendet wird, ein Lademodul für den Akku.
Um die Sensoren lange am Laufen zu halten, verwenden Sie keine vorgefertigten Arduino-Platinen, sie entladen die Batterie schnell. Verwenden Sie stattdessen den Atmega328P-Chip.
Schließen Sie alles an, wie es in meinem elektrischen Blatt zeigt. (Siehe Bild oder PDF-Datei) Es wird empfohlen, auch einen Netzschalter hinzuzufügen, damit Sie den Strom beim Laden unterbrechen können.
Vergessen Sie beim Hochladen des Codes nicht, den Sensor zu definieren, um ihm eine eindeutige ID-Nummer zu geben. Der Code ist auf meiner GitHub-Seite verfügbar.
Um die Bodensensoren lange am Leben zu halten, verwende ich einen NPN-Transistor, um sie nur dann einzuschalten, wenn das Lesen beginnt. Sie sind also nicht ständig aktiviert. Jeder Sensor hat eine ID-Nummer von 45XX bis 5000 (diese kann geändert werden), daher muss jeder Sensor eindeutige Nummern haben, die Sie nur im Code definieren müssen.
Die Sensoren gehen in den Ruhezustand, um Batterie zu sparen.
Schritt 2: Tiersensor
Der Animal Sensor ist ein einfacher Pir-Sensor. Es spürt die Hitze von Tieren oder Menschen. Wenn der Sensor eine Bewegung erkennt. Sie werden an die Basisstation gesendet.
Aber es wird kein Wecker klingeln, dazu müssen Sie ihn auf der Seite aktivieren, oder wenn Sie einen Timer eingerichtet haben, wird er zu dieser Zeit automatisch aktiviert.
Wenn die Basis ein Bewegungssignal vom Tiersensor erhält, leitet sie es an den Sirenensensor weiter und erschreckt (hoffentlich) das Tier. Meine Sirene hat 119 dB.
Der Pir-Sensor läuft mit Batterie und ich habe ihn in ein altes Pir-Sensorgehäuse von einem alten Alarm gelegt. Das Kabel, das vom Tiersensor herauskommt, dient nur zum Aufladen der Batterie.
Für diesen Sensor benötigen Sie:
- ATMEGA328P-PU-Chip
- 1 x 16 000 MHz Quarz
- 2 x 22 pF Kondensator
- 1 x Pir-Sensormodul
- 1 x 100 uF Kondensator
- 1 x NRF24L01-Modul
- 1 x LED (ich verwende hier keine RGB-LED)
- 1 x 220 Ohm Widerstand
- Wenn Sie mit einer Batterie laufen, brauchen Sie das (ich benutze Li-Po)
- Ein Batterielademodul, wenn Sie einen Akku haben.
- Eine Art Netzschalter.
Schließen Sie alles an, wie Sie es auf dem Elektroblech sehen. Überprüfen Sie, ob Sie Ihren Pir-Sensor über Ihre Batterie mit Strom versorgen können (einige benötigen 5 V zum Betrieb).
Holen Sie sich den Code von meinem GitHub und definieren Sie den zu verwendenden Sensor (z. B. SENS1, SENS2 usw.), damit sie eindeutige Nummern erhalten.
Der ATMEGA-Chip wacht nur auf, wenn eine Bewegung registriert wird. Da das Pir-Sensormodul einen eingebauten Timer für die Verzögerung hat, gibt es nichts dafür im Code, also passen Sie den Pot am Pir-Sensor für die Verzögerung an, die er wach ist.
Das war's für den Tiersensor, wir machen weiter.
Schritt 3: Wasserpumpensteuerung
Die Wasserpumpensteuerung dient zum Starten einer Pumpe oder eines Wasserventils, um Ihre Felder zu bewässern. Für dieses System benötigen Sie keine Batterie, da Sie Strom benötigen, um Ihre Pumpe zu betreiben. Ich verwende ein AC 230 bis DC 5 V-Modul, um einen Arduino zu betreiben Nano. Außerdem habe ich verschiedene Pumpentypen, eine, die ein Wasserventil verwendet, das mit 12 V läuft, damit ich ein AC 230 bis DC 12 V-Modul an der Relaisplatine habe.
Der andere ist 230 AC in das Relais, damit ich eine 230 V AC-Pumpe mit Strom versorgen kann.
Das System ist recht einfach, jeder Pumpencontroller hat eindeutige ID-Nummern, also sagen wir, das Kartoffelfeld ist trocken und der Sensor ist auf automatisches Wasser eingestellt, dann wird meine Pumpe für das Kartoffelfeld zu diesem Sensor hinzugefügt, also der Bodensensor teilt dem Basissystem mit, dass die Bewässerung beginnen soll, so dass das Basissystem ein Signal an diese Pumpe sendet, sich zu aktivieren.
Sie können einstellen, wie lange es auf der Webseite laufen soll (zB 5 Minuten), da die Sensoren nur stündlich prüfen. Auch wenn die Pumpe stoppt, wird die Zeit im System gespeichert, damit das automatische System die Pumpe nicht zu früh startet. (Auch auf der Webseite einstellbar).
Sie können auch über die Webseite die Bewässerung während der Nacht/Tag deaktivieren, indem Sie spezielle Zeiten einstellen. Und richten Sie auch Timer für jede Pumpe ein, um mit der Bewässerung zu beginnen. Und wenn es regnet, gießen sie nicht.
Ich hoffe du verstehst:)
Für dieses Projekt benötigen Sie:
- 1 x Arduino Nano
- 1 x NRF24L01-Modul
- 1 x 100 uF Kondensator
- 1 RGB-LED (gemeinsame Anode wird von mir verwendet)
- 3 x 270 Ohm Widerstände
- 1 x Relaisplatine
Schließen Sie alles als Elektroblatt an (siehe PDF-Datei oder Bild)Laden Sie den Code von GitHub herunter und vergessen Sie nicht, die Sensornummer zu definieren.
Und jetzt haben Sie eine Pumpensteuerung, das System kann mehr als nur eine verwalten.
Schritt 4: Regensensor
Der Regensensor wird verwendet, um Regen zu erkennen. Sie brauchen nicht mehr als einen. Es ist jedoch möglich, mehr hinzuzufügen. Dieser Regensensor ist batteriebetrieben und prüft alle 30 Minuten auf Regen. Sie haben auch eine eindeutige Nummer, um sich selbst zu identifizieren.
Der Regensensor verwendet analoge und digitale Pins. Der digitale Pin soll überprüfen, ob es regnet (Die digitale Anzeige nur ja oder nein) und Sie müssen den Topf am Regensensormodul einschalten, wenn es in Ordnung ist, vor "Regen" zu warnen (der Wasserstand am Sensor, der zeigt an, dass es regnet.)
Der analoge Pin wird verwendet, um in Prozent zu informieren, wie nass es auf dem Sensor ist.
Wenn der digitale Pin erkennt, dass es regnet, sendet der Sensor dies an das Basissystem. Und das Basissystem wird die Pflanzen nicht bewässern, solange es "regnet". Der Sensor sendet auch die Nässe und den Batteriestatus.
Wir versorgen den Regensensor nur, wenn es Zeit ist, durch den Transistor zu lesen, der über einen digitalen Pin aktiviert.
Für diesen Sensor benötigen Sie:
- ATMEGA328P-PU-Chip
- 1x 16 000 MHz Quarz
- 2x 22 pF Kondensator
- 1x Regensensormodul
- 1x 100 uF Kondensator
- 1x NRF24L01-Modul
- 1x RGB-LED (ich habe eine gemeinsame Anode verwendet, es ist VCC anstelle von GND)
- 3x 270 Ohm Widerstände
- 1x NPN BC547 Transistor
- 1x Batterie (ich verwende Li-Po)
- 1x Li-Po-Lademodul (sofern verwendeter Li-Po-Akku)
Schließen Sie alles an, wie Sie auf dem Elektroblatt sehen (im PDF oder im Bild) Laden Sie dann den Code auf den ATMEGA-Chip hoch, wie Sie ihn auf meiner GitHub-Seite unter Regensensor finden. Vergessen Sie nicht, den Sensor zu definieren, um die richtige ID-Nummer zu erhalten.
Und jetzt haben Sie einen Regensensor, der alle 30 Minuten läuft. Sie können die Zeit auf diesem ändern, wenn Sie es weniger oder mehr wünschen.
In der Funktion counterHandler() können Sie die Aufwachzeit für den Chip einstellen. Sie berechnen so: Die Chips wachen alle 8 Sekunden auf und jedes Mal wird ein Wert erhöht. Sie erhalten also für 30 Minuten 225 Mal, bevor sie Aktionen ausführen sollten. Es gibt also 1800 Sekunden auf einer halben Stunde. Teilen Sie es also durch 8 (1800 / 8) und Sie erhalten 225. Das bedeutet, dass der Sensor erst dann überprüft wird, wenn er 225 Mal läuft und das ungefähr 30 Minuten dauert. Das gleiche machst du auch beim Bodensensor.
Schritt 5: Tiersirene
Die Tiersirene ist einfach, wenn der Tiersensor eine Bewegung erkennt, wird die Sirene aktiviert. Ich benutze eine echte Sirene, damit ich sogar Leute damit erschrecken kann. Sie können aber auch Sirenen verwenden, die nur Tiere hören.
Ich verwende in diesem Projekt einen Arduino Nano und versorge ihn mit 12V. Die Sirene hat auch 12 V, daher verwende ich anstelle eines Relais einen 2N2222A-Transistor, um die Sirene zu aktivieren. Wenn Sie ein Relais verwenden, wenn Sie die gleiche Masse haben, können Sie Ihr Arduino beschädigen. Deshalb verwende ich stattdessen einen Transistor, um die Sirene zu aktivieren.
Aber wenn Ihre Sirene und Arduino nicht die gleiche Masse verwenden, können Sie stattdessen ein Relais verwenden. Überspringen Sie den Transistor und den 2,2K-Widerstand und verwenden Sie stattdessen eine Relaisplatine. Und auch Änderung des Arduino-Codes, wenn aktiviert, von HIGH auf LOW wechseln und wenn inaktiviert, von LOW auf HIGH wechseln oder digital lesen für den Pin 10, da das Relais LOW zum Aktivieren verwendet und der Transistor HIGH verwendet, also müssen Sie dies schalten.
Für diesen Build benötigen Sie:
- 1x Arduino Nano
- 1x 2,2K Widerstand (Überspringen bei Verwendung einer Relaisplatine)
- 1x 2N2222 Transistor
- 1x Sirene
- 3x 270 Ohm Widerstand
- 1x RGB Led (ich verwende gemeinsame Anode, VCC statt GND)
- 1X NRF24L01-Modul
- 1x 100 uF Kondensator
Verbinden Sie alles, wie Sie auf dem elektrischen Blatt im PDF oder im Bild sehen. Laden Sie den Code auf den Arduino hoch, den Sie auf meiner GitHub-Seite unter Animal Siren finden. Vergessen Sie nicht, den Sensor für die richtige ID-Nummer zu definieren.
Und jetzt haben Sie eine funktionierende Sirene.
Schritt 6: Hauptsystem
Das Hauptsystem ist das wichtigste aller Module. Ohne es können Sie dieses System nicht verwenden. Das Hauptsystem ist mit dem ESP-01-Modul mit dem Internet verbunden und wir verwenden Arduino Megas Serial1-Pins, um es zu verbinden. Der RX auf Mega zu TX auf ESP, aber wir müssen durch zwei Widerstände gehen, um die Volt auf 3,3 zu senken. Und der TX auf Mega zu RX auf ESP.
Einrichten des ESP-Moduls
Um den ESP zu verwenden, müssen Sie zuerst die Baudrate auf 9600 einstellen. Dies habe ich in diesem Projekt verwendet und ich habe festgestellt, dass der ESP am besten funktioniert. Out of the box war es auf 115200 Baudrate eingestellt, Sie können es versuchen, aber meins war nicht so stabil. Dazu benötigen Sie einen Arduino (Mega funktioniert gut) und Sie müssen den TX von ESP (über die Widerstände, wie Sie auf dem Blatt sehen) mit dem Serial TX (nicht Serial1 bei Verwendung von Mega) und RX auf ESP mit Arduino Serial verbinden RX.
Laden Sie die Blink-Skizze (oder jede andere Skizze, die nicht seriell verwendet) hoch und öffnen Sie den seriellen Monitor und stellen Sie die Baudrate auf 115200 und NR & CR auf den Leitungen ein
Schreiben Sie in der Befehlszeile AT und drücken Sie die Eingabetaste. Sie sollten eine Antwort erhalten, die OK sagt, also wissen wir jetzt, dass das ESP funktioniert. (Wenn nicht, liegt ein Verbindungsproblem oder ein fehlerhaftes ESP-01-Modul vor)
Schreiben Sie nun in die Befehlszeile AT+UART_DEF=9600, 8, 1, 0, 0 und drücken Sie die Eingabetaste.
Es antwortet mit einem OK und das bedeutet, dass wir die Baudrate auf 9600 eingestellt haben. Starten Sie den ESP mit dem folgenden Befehl neu: AT+RST und drücken Sie die Eingabetaste. Ändern Sie die Baudrate im seriellen Monitor auf 9600 und geben Sie AT ein und drücken Sie die Eingabetaste. Wenn Sie OK zurückbekommen, ist das ESP für 9600 eingerichtet und Sie können es für das Projekt verwenden.
Das SD-Kartenmodul
Ich möchte, dass es einfach ist, die WLAN-Einstellungen für das System zu ändern, falls ein neues Passwort oder WLAN-Name geändert wird. Deshalb brauchen wir das SD-Kartenmodul. Erstellen Sie auf der SD-Karte eine Textdatei mit dem Namen config.txt und wir verwenden JSON zum Lesen, daher benötigen wir ein JSON-Format. Die Textdatei sollte also folgenden Text haben:
{ "ssid": "IHRE WIFISSID", "losen": "IHRWIFIPASSWORT"
}
Ändern Sie den Text mit den GROSSEN Buchstaben, um ihn für Ihr WLAN-Netzwerk zu korrigieren.
Da wir NRF24L01 verwenden, das SPI verwendet und der SD-Kartenleser auch SPI verwendet, müssen wir die SDFat-Bibliothek verwenden, damit wir SoftwareSPI verwenden können (wir können den SD-Kartenleser an beliebigen Pins hinzufügen).
DHT-Sensor
Dieses System befindet sich im Freien und verfügt über einen DHT-Sensor, damit wir die Luftfeuchtigkeit und Temperatur überprüfen können. Es wird für zusätzliches Gießen an heißen Tagen verwendet.
Für diesen Build benötigen Sie:
- 1x Arduino Mega
- 1x NRF24L01 Modul
- 1x ESP-01-Modul
- 1x SPI Micro-SD-Kartenmodul
- 1x DHT-22-Sensor
- 1x RGB-LED (ich habe gemeinsame Anode verwendet, VCC anstelle von GND)
- 3x 270 Ohm Widerstände
- 1x 22 K Ohm Widerstand
- 2x 10 K Ohm Widerstand
Bitte beachten Sie, dass, wenn Sie Ihr ESP-01-Modul nicht stabil erhalten, versuchen, es von einer externen 3,3-V-Stromquelle zu versorgen.
Schließen Sie alles an, wie Sie im Elektroblatt in der PDF-Datei oder im Bild sehen.
Laden Sie den Code auf Ihren Arduino Mega hoch und vergessen Sie nicht, den gesamten Code auf Kommentare zu überprüfen, da Sie den Host an mehreren Stellen auf den Server einstellen müssen (es ist nicht die beste Lösung, die ich kenne).
Jetzt ist Ihr Basissystem einsatzbereit. Sie müssen keine Variablen im Code für die Bodenfeuchtigkeit ändern, da Sie dies direkt von der Webseite aus tun können.
Schritt 7: Das Websystem
Zur Nutzung des Systems benötigen Sie außerdem einen Webserver. Ich verwende ein Himbeer-Pi mit Apache, PHP, Mysql, Gettext. Das Websystem ist mehrsprachig, sodass Sie es einfach in Ihrer Sprache erstellen können. Es kommt mit Schwedisch und Englisch (das Englisch kann falsches Englisch haben, meine Übersetzung ist nicht 100%.) Sie müssen also Gettext für Ihren Server installiert haben, und auch die Locales.
Ich zeige Ihnen oben einige Screenshots vom System.
Es kommt mit einem einfachen Login-System und das Haupt-Login ist: admin als Benutzer und Wasser als Passwort.
Um es verwenden zu können, müssen Sie drei Cronjobs einrichten (Sie finden sie im Cronjob-Ordner)
Die Datei timer.php müssen Sie alle Sekunden ausführen. Dies beinhaltet die gesamte Automatisierung für das gesamte System. Der Dateiname temperatur.php wird verwendet, um das System anzuweisen, die Lufttemperatur zu lesen und zu protokollieren. Sie müssen also einen Cron-Job einrichten, der festlegt, wie oft Sie ihn ausführen möchten. Ich habe es alle 5 Minuten. Dann sollte die Datei dagstatistik.php nur einmal vor Mitternacht laufen (wie 23:30, 23:30 Uhr). Es nimmt die während des Tages von Sensoren gemeldeten Werte und speichert sie für die Wochen- und Monatsstatik.
Bitte beachten Sie, dass dieses System die Temperatur in Celsius speichert, Sie jedoch auf Fahrenheit umstellen können.
In der Datei db.php richten Sie die MySQL-Datenbankverbindung für das System ein.
Fügen Sie zuerst die Sensoren zum System hinzu. Und dann Zonen erstellen und Sensoren zu den Zonen hinzufügen.
Wenn Sie Fragen haben oder Fehler im System finden, melden Sie diese bitte auf der GitHub-Seite. Sie können das Websystem verwenden und dürfen es nicht verkaufen.
Wenn Sie Probleme mit den Locales für gettext haben, denken Sie bitte daran, dass wenn Sie Raspberry als Server verwenden, diese oft wie en_US. UTF-8 heißen, so dass Sie diese Änderungen in der Datei i18n_setup.php und im locale-Ordner vornehmen müssen. Andernfalls bleiben Sie bei der schwedischen Sprache hängen.
Sie laden es auf der GitHub-Seite herunter.