Inhoudsopgave:

Draadloos tuinsysteem: 7 stappen
Draadloos tuinsysteem: 7 stappen

Video: Draadloos tuinsysteem: 7 stappen

Video: Draadloos tuinsysteem: 7 stappen
Video: What it takes to start a Consumer Electronics Business: an interview with Kien 2024, November
Anonim
Draadloos tuinsysteem
Draadloos tuinsysteem

Dit project is gebaseerd op Arduino en maakt gebruik van "modules" om u te helpen uw planten water te geven, en om in te loggen op temperatuur en grond en regen.

Het systeem is draadloos via 2, 4 GHz en gebruikt NRF24L01-modules om gegevens te verzenden en te ontvangen. Laat me een beetje uitleggen hoe het werkt, PS! Excuseer me als het Engels niet 100% correct is, ik kom uit Zweden.

Ik gebruik dit systeem om mijn planten te controleren, zonden Ik heb verschillende planten die ik nodig had om ze anders te loggen. Dus ik bouw een zonegebaseerd logsysteem.

De Bodemsensoren die het bodemvocht en de temperatuur aflezen, (werkt op batterij) controleren elk uur en geven de gegevens door aan de basismachine die een wifi-verbinding heeft. De gegevens worden geüpload naar een server in mijn huis en loggen in op een webpagina.

Als de bodem water nodig heeft, wordt de juiste pomp geactiveerd, afhankelijk van wat de bodemsensor heeft gecontroleerd. Maar als het regent, geeft het geen water. En als het echt warm is, geeft het wat extra water.

Laten we zeggen dat je een aardappelland hebt, een voor tabak en een voor tomaat, dan heb je 3 zones met 3 verschillende sensoren en 3 pompen.

Er zijn ook pir-sensoren die op bewegingen controleren, en als ze op de webpagina worden geactiveerd, begint een luide sirene het dier of de persoon die dicht bij mijn planten loopt te schrikken.

Hoop dat je het een beetje begrijpt. Laten we nu beginnen met het maken van sensoren.

Mijn GitHub-pagina waar je alles download:

Stap 1: Bodemsensoren

Bodemsensoren
Bodemsensoren
Bodemsensoren
Bodemsensoren
Bodemsensoren
Bodemsensoren
Bodemsensoren
Bodemsensoren

Elke sensor heeft een uniek nummer dat aan de webpagina wordt toegevoegd. Dus wanneer de bodemsensor zendt, worden de gegevens van die bodemsensor toegevoegd aan de juiste zone. Als de sensor niet is geregistreerd, worden er geen gegevens ingediend.

Voor deze build heb je nodig:

  • 1x Atmega328P-PU-chip
  • 1x nRF24L01-module
  • 1x 100 uf condensator
  • 1x NPN BC547 Transistor
  • 2x 22 pF condensatoren
  • 1x 16.000 MHz kristal
  • 1x Bodemvochtsensor
  • 1x DS18B20 Temperatuursensor
  • 1x RGB Led (Gemeenschappelijke Anode wordt door mij gebruikt)
  • 3x 270 ohm weerstanden
  • 1x 4, 7 K ohm weerstand
  • Batterij (ik gebruik 3.7v Li-Po-batterij)
  • En als li-po wordt gebruikt, een oplaadmodule voor batterij.

Om de sensoren lang te laten werken, gebruik geen vooraf gemaakt Arduino-bord, ze zullen de batterij snel leegmaken. Gebruik in plaats daarvan de Atmega328P-chip.

Sluit alles aan zoals het in mijn elektrische blad staat. (Zie afbeelding of PDF-bestand) Aanbevolen is om ook een aan / uit-schakelaar toe te voegen, zodat u de stroom kunt uitschakelen tijdens het opladen.

Vergeet bij het uploaden van de code niet de sensor te definiëren om ze een uniek ID-nummer te geven, de code is beschikbaar op mijn GitHub-pagina.

Om de bodemsensoren lang in leven te houden, gebruik ik een NPN-transistor om ze aan te zetten, alleen als het uitlezen begint. Ze zijn dus niet de hele tijd geactiveerd. Elke sensor heeft een ID-nummer van 45XX tot 5000 (dit kan worden gewijzigd) dus elke sensor moet unieke nummers hebben, het enige wat u hoeft te doen is in de code te definiëren.

De sensoren gaan in slaapstand om de batterij te sparen.

Stap 2: Diersensor

Dierlijke sensor
Dierlijke sensor
Dierlijke sensor
Dierlijke sensor
Dierlijke sensor
Dierlijke sensor
Dierlijke sensor
Dierlijke sensor

De Animal Sensor is een eenvoudige pir-sensor. Het voelt de warmte van dieren of mensen. Als de sensor beweging detecteert. Ze zullen naar het basisstation sturen.

Maar er zal geen alarm afgaan, hiervoor moet je op de pagina het alarm activeren, of als je een timer hebt ingesteld, wordt het op dat moment automatisch geactiveerd.

Als de basis een bewegingssignaal van de diersensor krijgt, geeft hij dit door aan de sirenesensor en (hoop ik) het dier weg te jagen. Mijn sirene staat op 119 db.

De pir-sensor werkt op batterij en ik heb hem in een oude pir-sensorbehuizing van een oud alarm geplaatst. De kabel die uit de diersensor komt is alleen om de batterij op te laden.

Voor deze sensor heb je nodig:

  • ATMEGA328P-PU-chip
  • 1 x 16 000 MHz kristal
  • 2 x 22 pF condensator
  • 1 x Pir-sensormodule
  • 1 x 100 uF condensator
  • 1 x NRF24L01-module
  • 1 x Led (ik gebruik hier geen RGB-led)
  • 1 x 220 ohm weerstand
  • Als je op een batterij werkt, heb je die nodig (ik gebruik Li-Po)
  • Een batterijladermodule als u een oplaadbare batterij heeft.
  • Een soort stroomschakelaar.

Sluit alles aan zoals je ziet op de elektrische plaat. Controleer zodat u uw pir-sensor van uw batterij kunt voorzien (sommige heeft 5v nodig om te werken).

Haal de code van mijn GitHub en definieer de sensor die je gaat gebruiken (bijvoorbeeld: SENS1, SENS2 enz.), zodat ze unieke nummers krijgen.

De ATMEGA-chip wordt pas wakker als er beweging wordt geregistreerd. Sins de pir sensor module heeft een ingebouwde timer voor vertraging daar staat niets voor in de code, dus pas de pot op de pir sensor aan voor de vertraging dat hij wakker zal zijn.

Dat was het voor de diersensor, we gaan verder.

Stap 3: Waterpompregelaar

Waterpompcontroller
Waterpompcontroller
Waterpompcontroller
Waterpompcontroller
Waterpompcontroller
Waterpompcontroller
Waterpompcontroller
Waterpompcontroller

De waterpompcontroller is om een pomp of waterklep te starten om uw velden te besproeien. Voor dit systeem heb je geen batterij nodig, je hebt stroom nodig om je pomp te laten werken. Ik gebruik een AC 230 naar DC 5 v-module om een Arduino te laten werken nano. Ook moet ik typen pompen, een die een waterklep gebruikt die op 12 v werkt, dus daarvoor heb ik een AC 230 naar DC 12v-module op het relaisbord.

De andere is 230 AC in het relais, dus ik kan een 230 V AC-pomp van stroom voorzien.

Het systeem is vrij eenvoudig, elke pompcontroller heeft unieke ID-nummers, dus laten we zeggen dat het aardappelveld droog is en de sensor is ingesteld op automatisch water, dan wordt mijn pomp voor het aardappelveld aan die sensor toegevoegd, dus de bodemsensor vertelt het basissysteem dat de bewatering moet beginnen, dus het basissysteem stuurt een signaal naar die pomp om te activeren.

Op de webpagina kun je instellen hoe lang deze moet draaien (bijvoorbeeld 5 minuten) de sensoren controleren alleen elk uur. Ook als de pomp stopt, wordt de tijd in het systeem opgeslagen, zodat het automatische systeem de pomp niet te snel start. (Ook mogelijk om op de webpagina in te stellen).

U kunt ook via de webpagina de besproeiing gedurende de nacht/dag uitschakelen door speciale tijden in te stellen. En ook timers instellen voor elke pomp om te beginnen met water geven. En als het regent, geven ze geen water.

Hoop dat je het begrijpt:)

Voor dit project heb je nodig:

  • 1 x Arduino Nano
  • 1 x NRF24L01-module
  • 1 x 100 uF condensator
  • 1 RGB Led (gemeenschappelijke anode wordt door mij gebruikt)
  • 3 x 270 ohm weerstanden
  • 1 x relaiskaart

Sluit alles aan als de elektrische plaat (zie pdf-bestand of afbeelding) Download de code van GitHub en vergeet niet het sensornummer te definiëren.

En nu je een pompcontroller hebt, kan het systeem er meer dan één aan.

Stap 4: Regensensor

Regen sensor
Regen sensor
Regen sensor
Regen sensor
Regen sensor
Regen sensor
Regen sensor
Regen sensor

De regensensor wordt gebruikt om regen te detecteren. Je hebt er niet meer dan één nodig. Maar het is mogelijk om meer toe te voegen. Deze regensensor werkt op batterijen en controleert elke 30 minuten op regen. Ze hebben ook een uniek nummer om ze zelf te identificeren.

De regensensor maakt gebruik van analoge en digitale pinnen. De digitale pin is om te controleren of het regent (het digitale geeft alleen ja of nee weer) en je moet de pot op de regensensormodule aanzetten als het goed is om te waarschuwen voor "regenen" (het waterniveau op de sensor dat geeft aan dat het regent.)

De analoge pin wordt gebruikt om in procenten te informeren hoe nat het is op de sensor.

Als de digitale pin detecteert dat het regent, stuurt de sensor deze naar het basissysteem. En het basissysteem geeft de planten geen water zolang het "regent". De sensor geeft ook aan hoe nat het is en de batterijstatus.

We voeden de regensensor alleen wanneer het tijd is om via de transistor te lezen die via een digitale pin mogelijk is.

Voor deze sensor heb je nodig:

  • ATMEGA328P-PU-chip
  • 1x 16 000 MHz kristal
  • 2x 22 pF condensator
  • 1x Regensensormodule
  • 1x 100 uF condensator
  • 1x NRF24L01-module
  • 1x RGB Led (ik gebruikte gemeenschappelijke anode, het is VCC in plaats van GND)
  • 3x 270 Ohm weerstanden
  • 1x NPN BC547-transistor
  • 1x Batterij (ik gebruik Li-Po)
  • 1x Li-Po-oplaadmodule (indien gebruikt Li-Po-batterij)

Sluit alles aan zoals je ziet op de elektrische plaat (in pdf of in de afbeelding Upload vervolgens de code naar de ATMEGA-chip zoals je kunt vinden op mijn GitHub-pagina onder RegensensorVergeet niet de sensor te definiëren om het juiste id-nummer te krijgen.

En nu heb je een regensensor die elke 30 minuten werkt. Je kunt de tijd hierop wijzigen als je dat niet meer of minder wilt.

In de functie counterHandler() kun je de wektijd voor de chip instellen. Je berekent als volgt: De chips worden elke 8 seconden wakker en elke keer dat het een waarde verhoogt. Dus gedurende 30 minuten krijg je 225 keer voordat het acties moet doen. Er zitten dus 1800 seconden op een half uur. Dus deel het door 8 (1800 / 8) dan krijg je 225. Dat betekent dat het de sensor pas 225 keer zal controleren en dat zal ongeveer 30 minuten zijn. Hetzelfde doe je ook op de bodemsensor.

Stap 5: Dierensirene

Dierensirene
Dierensirene
Dierensirene
Dierensirene
Dierensirene
Dierensirene
Dierensirene
Dierensirene

De dierensirene is eenvoudig wanneer de diersensor beweging detecteert, de sirene wordt geactiveerd. Ik gebruik een echte sirene, zodat ik er zelfs mensen mee kan schrikken. Maar je kunt ook sirenes gebruiken die alleen dieren horen.

Ik gebruik een Arduino nano in dit project en voed het met 12v. De sirene is ook 12v, dus in plaats van een relais zal ik een 2N2222A-transistor gebruiken om de sirene in te schakelen. Als je een relais gebruikt terwijl je dezelfde aarde hebt, kun je je Arduino beschadigen. Dus daarom gebruik ik in plaats daarvan een transistor om de sirene in te schakelen.

Maar als je sirene en Arduino niet dezelfde aarde gebruiken, kun je in plaats daarvan een relais gebruiken. Sla de transistor en de 2.2K-weerstand over en gebruik in plaats daarvan een relaisbord. En verander ook in de Arduino-code bij geactiveerde verandering van HOOG naar LAAG en bij inactivatie verander van LAAG naar HOOG en digitaal lezen voor de pin 10, sins het relais gebruikt LAAG om te activeren en de transistor gebruikt HOOG, dus je moet dit schakelen.

Voor deze build heb je nodig:

  • 1x Arduino nano
  • 1x 2.2K-weerstand (overslaan bij gebruik van relaiskaart)
  • 1x 2N2222 Transistor
  • 1x Sirene
  • 3x 270 Ohm Weerstand
  • 1x RGB Led (ik gebruik gemeenschappelijke anode, VCC in plaats van GND)
  • 1X NRF24L01-module
  • 1x 100 uF condensator

Sluit alles aan zoals je ziet op de elektrische plaat in PDF of in de afbeelding. Upload de code naar de Arduino die je op mijn GitHub-pagina vindt onder Dierensirene. Vergeet niet de sensor te definiëren voor het juiste ID-nummer.

En nu heb je een werkende sirene.

Stap 6: Hoofdsysteem

Hoofdsysteem
Hoofdsysteem
Hoofdsysteem
Hoofdsysteem
Hoofdsysteem
Hoofdsysteem

Het hoofdsysteem is het belangrijkste van alle modules. Zonder dit kun je dit systeem niet gebruiken. Het hoofdsysteem is verbonden met internet met de ESP-01-module en we gebruiken Arduino Megas Serial1-pinnen om het aan te sluiten. De RX op Mega naar TX op ESP, maar we moeten door twee weerstanden gaan om de volt naar 3,3 te krijgen. En de TX op Mega naar RX op ESP.

De ESP-module instellen

Om de ESP te gebruiken, moet je eerst de baudrate erop instellen op 9600, dit is wat ik in dit project heb gebruikt en ik heb ontdekt dat de ESP het beste werkt. Out of the box was het ingesteld op 115200 baudrate, je kunt het proberen, maar de mijne was niet zo stabiel. Om dit te doen heb je een Arduino nodig (Mega werkt goed) en je moet de TX van ESP (via de weerstanden zoals je op het blad ziet) verbinden met de Serial TX (niet Serial1 als je Mega gebruikt) en RX op ESP naar Arduino Serial RX.

Upload knipperschets (of een schets die geen serieel gebruikt) en open de seriële monitor en stel de baudrate in op 115200 en NR & CR op lijnen

Schrijf in de opdrachtregel AT en druk op enter. U zou een antwoord moeten krijgen dat zegt OK, dus nu weten we dat de ESP werkt. (Als dit niet het geval is, is er een verbindingsprobleem of een slechte ESP-01-module)

Schrijf nu in de opdrachtregel AT+UART_DEF=9600, 8, 1, 0, 0 en druk op enter.

Het zal reageren met een OK en dit betekent dat we de baudrate hebben ingesteld op 9600. Start de ESP opnieuw met het volgende commando: AT+RST en druk op enter. Wijzig de baudrate in de seriële monitor naar 9600 en voer AT in en druk op enter. Als je OK terug krijgt, is de ESP ingesteld voor 9600 en kun je hem voor het project gebruiken.

De SD-kaartmodule

Ik wil dat het gemakkelijk is om de WIFI-instellingen voor het systeem te wijzigen, voor het geval er een nieuw wachtwoord of wifi-naam wordt gewijzigd. Daarom hebben we de SD-kaartmodule nodig. Maak in de SD-kaart een tekstbestand met de naam config.txt en we gebruiken JSON om te lezen, dus we hebben een JSON-indeling nodig. Het tekstbestand zou dus de volgende tekst moeten hebben:

{ "ssid": "UWWIFISSID", "losen": "UWWIFIPASWOORD"

}

Wijzig de tekst met de GROTE letters om te corrigeren voor uw wifi-netwerk.

Zonden we gebruiken NRF24L01 die SPI gebruikt en de SD-kaartlezer gebruikt ook SPI, we moeten de SDFat-bibliotheek gebruiken zodat we SoftwareSPI kunnen gebruiken (we kunnen de SD-kaartlezer op elke pinnen toevoegen)

DHT-sensor

Dit systeem is buiten geplaatst en heeft een DHT-sensor zodat we de vochtigheid en temperatuur van de lucht kunnen controleren. Het wordt gebruikt voor extra water op warme dagen.

Voor deze build heb je nodig:

  • 1x Arduino Mega
  • 1x NRF24L01-module
  • 1x ESP-01-module
  • 1x SPI Micro SD-kaartmodule
  • 1x DHT-22-sensor
  • 1x RGB Led (ik gebruikte gemeenschappelijke anode, VCC in plaats van GND)
  • 3x 270 Ohm weerstanden
  • 1x 22 K Ohm weerstand
  • 2x 10 K Ohm weerstand

Houd er rekening mee dat als u de ESP-01-module niet stabiel krijgt, deze moet worden gevoed via een externe 3,3 V-stroombron.

Sluit alles aan zoals je ziet in de elektrische fiche in het pdf-bestand of in de afbeelding.

Upload de code naar je Arduino Mega, en vergeet niet de hele code te controleren op opmerkingen, want je moet de host op meerdere plaatsen op de server instellen (het is niet de beste oplossing die ik ken).

Nu is uw Base-systeem klaar voor gebruik. U hoeft geen variabelen in de code voor bodemvochtzonden te wijzigen, u kunt dit rechtstreeks vanaf de webpagina doen.

Stap 7: Het websysteem

Het websysteem
Het websysteem
Het websysteem
Het websysteem
Het websysteem
Het websysteem
Het websysteem
Het websysteem

Om het systeem te gebruiken heeft u ook een webserver nodig. Ik gebruik een Raspberry Pi met Apache, PHP, Mysql, Gettext. Het websysteem is meertalig, dus je kunt het gemakkelijk in jouw taal maken. Het wordt geleverd met Zweeds en Engels (het Engels kan onjuist Engels hebben, mijn vertaling is niet 100%.) Dus je moet Gettext voor je server hebben geïnstalleerd, en ook voor de landinstellingen.

Ik laat je hierboven enkele screenshots van het systeem zien.

Het wordt geleverd met een eenvoudig inlogsysteem en de hoofdlogin is: admin als gebruiker en water als wachtwoord.

Om het te gebruiken moet je drie cronjobs instellen (je vindt ze onder de cronjob-map)

Het timer.php-bestand dat u elke seconden moet uitvoeren. Dit bevat alle automatisering voor het gatensysteem. De bestandsnaam temperatur.php wordt gebruikt om het systeem te vertellen de luchttemperatuur te lezen en te loggen. Dus je moet een cron-taak instellen over hoe vaak je het gaat uitvoeren. Ik heb het elke 5 minuten. Dan zou het bestand met de naam dagstatistik.php maar één keer voor middernacht moeten worden uitgevoerd (zoals 23:30, 23:30 uur). Het neemt waarden op die gedurende de dag door sensoren worden gerapporteerd en slaat deze op voor week- en maandstatistieken.

Houd er rekening mee dat dit systeem de temperatuur opslaat in Celsius, maar u kunt dit wijzigen in Fahrenheit.

In het db.php-bestand stelt u de mysql-databaseverbinding voor het systeem in.

Voeg eerst de sensoren toe aan het systeem. En maak vervolgens zones, en voeg sensoren toe aan de zones.

Als je vragen hebt of bugs in het systeem vindt, meld deze dan op de GitHub-pagina. Je kunt het websysteem gebruiken en het is niet toegestaan om het te verkopen.

Als je problemen hebt met de landinstellingen voor gettext, onthoud dan dat als je raspberry als server gebruikt, ze vaak de naam en_US. UTF-8 hebben, dus je moet die wijzigingen aanbrengen in het bestand i18n_setup.php en onder de map locale. Anders zit je vast met de Zweedse taal.

Je downloadt het op de GitHub-pagina.

Aanbevolen: