Sommario:

Sistema da giardino wireless: 7 passaggi
Sistema da giardino wireless: 7 passaggi

Video: Sistema da giardino wireless: 7 passaggi

Video: Sistema da giardino wireless: 7 passaggi
Video: Ecco come i LADRI entrano a casa tua - Sensore da esterno - Versione migliorata 2024, Novembre
Anonim
Sistema da giardino senza fili
Sistema da giardino senza fili

Questo progetto è basato su Arduino e utilizza "moduli" per aiutarti a innaffiare le tue piante e ottenere il registro di temperatura, suolo e pioggia.

Il sistema è wireless a 2, 4 GHz e utilizza i moduli NRF24L01 per inviare e ricevere dati. Lascia che ti spieghi un po' come funziona, PS! Mi scusi se l'inglese non è corretto al 100%, vengo dalla Svezia.

Uso questo sistema per controllare le mie piante, peccato che ho piante diverse di cui avevo bisogno per registrarle in modo diverso. Quindi costruisco un sistema di registro basato su zone.

I sensori del suolo che leggono l'umidità e la temperatura del suolo (funzionano a batteria) controllano ogni ora e passano i dati alla macchina base che dispone di una connessione wifi. I dati vengono caricati su un server a casa mia e accede a una pagina web.

Se il terreno ha bisogno di acqua, attiverà la pompa corretta a seconda di ciò che il sensore del suolo ha controllato. Ma se piove non annaffierà. E se fa molto caldo, ne annaffierà un po' in più.

Diciamo che hai un terreno di patate, uno per il tabacco e uno per il pomodoro, quindi puoi avere 3 zone con 3 sensori diversi e 3 pompe.

Ci sono anche sensori pir che controllano i movimenti e, se vengono attivati sulla pagina web, una sirena rumorosa inizierà a spaventare l'animale o la persona che cammina vicino alle mie piante.

Spero che tu capisca un po'. Ora iniziamo a creare alcuni sensori.

La mia pagina GitHub dove scarichi tutto:

Passaggio 1: sensori del suolo

Sensori del suolo
Sensori del suolo
Sensori del suolo
Sensori del suolo
Sensori del suolo
Sensori del suolo
Sensori del suolo
Sensori del suolo

Ogni sensore ha un numero univoco che viene aggiunto alla pagina web. Quindi, quando il sensore del suolo sta trasmettendo i dati da quel sensore del suolo verranno aggiunti alla zona corretta. Se il sensore non è registrato, non verrà inviato alcun dato.

Per questa build hai bisogno di:

  • 1x chip Atmega328P-PU
  • 1x modulo nRF24L01
  • 1x condensatore da 100 uf
  • 1x transistor NPN BC547
  • Condensatori 2x 22 pF
  • 1x 16.000 MHz Cristallo
  • 1x sensore di umidità del suolo
  • 1x sensore di temperatura DS18B20
  • 1x LED RGB (l'anodo comune è utilizzato da me)
  • 3 resistenze da 270 ohm
  • 1x resistenza da 4, 7 K ohm
  • Batteria (io uso una batteria Li-Po da 3,7 V)
  • E se si utilizza li-po, un modulo caricabatterie per la batteria.

Per mantenere i sensori in funzione a lungo, non utilizzare alcuna scheda Arduino prefabbricata, svuoteranno rapidamente la batteria. Utilizzare invece il chip Atmega328P.

Collega tutto come mostra il mio foglio elettrico. (Vedi immagine o file PDF) Si consiglia di aggiungere anche un interruttore di alimentazione, in modo da poter interrompere l'alimentazione durante la ricarica.

Quando carichi il codice, non dimenticare di definire il sensore per dare loro un numero ID univoco, il codice è disponibile sulla mia pagina GitHub.

Per mantenere in vita a lungo i sensori del suolo, utilizzo un transistor NPN per accenderli, solo quando inizia la lettura. Quindi non sono sempre attivati, ogni sensore ha un numero ID da 45XX a 5000 (questo può essere cambiato) quindi ogni sensore deve avere numeri univoci, tutto ciò che devi fare è definire nel codice.

I sensori andranno a dormire per risparmiare la batteria.

Passaggio 2: sensore animale

Sensore animale
Sensore animale
Sensore animale
Sensore animale
Sensore animale
Sensore animale
Sensore animale
Sensore animale

L'Animal Sensor è un semplice sensore pir. Percepisce il calore degli animali o dell'uomo. Se il sensore rileva un movimento. Verranno inviati alla stazione base.

Ma non ci sarà nessun allarme, per farlo, nella pagina devi attivarlo, o se hai impostato un timer si attiverà automaticamente quell'ora.

Se la base riceve un segnale di movimento dal sensore Animal, lo trasmetterà al sensore Siren e (spero) spaventerà l'animale. La mia sirena è a 119 db.

Il sensore pir funziona a batteria e l'ho inserito in una vecchia custodia del sensore pir di un vecchio allarme. Il cavo che esce dal sensore animale serve solo per caricare la batteria.

Per questo sensore hai bisogno di:

  • Chip ATMEGA328P-PU
  • 1 x 16.000 MHz Cristallo
  • Condensatore 2 x 22 pF
  • 1 x modulo sensore Pir
  • Condensatore 1 x 100 uF
  • 1 x modulo NRF24L01
  • 1 x Led (non uso alcun led RGB qui)
  • 1 x resistenza da 220 ohm
  • Se utilizzerai una batteria, ne avrai bisogno (io uso Li-Po)
  • Un modulo caricabatteria se si dispone di una batteria di ricarica.
  • Una specie di interruttore di alimentazione.

Collega tutto come vedi nel foglio elettrico. Controlla in modo da poter alimentare il tuo sensore pir dalla batteria (alcuni richiedono 5v per funzionare).

Ottieni il codice dal mio GitHub e definisci il sensore della strega che utilizzerai (Es: SENS1, SENS2 ecc.) In modo che ottengano numeri univoci.

Il chip ATMEGA si riattiva solo quando viene registrato il movimento. Peccato che il modulo del sensore pir abbia un timer integrato per il ritardo, non c'è nulla per questo nel codice, quindi regola il potenziometro sul sensore pir per il ritardo in cui sarà sveglio.

Questo è tutto per il sensore animale, stiamo andando avanti.

Passaggio 3: controller della pompa dell'acqua

Controller della pompa dell'acqua
Controller della pompa dell'acqua
Controller della pompa dell'acqua
Controller della pompa dell'acqua
Controller della pompa dell'acqua
Controller della pompa dell'acqua
Controller della pompa dell'acqua
Controller della pompa dell'acqua

Il controller della pompa dell'acqua serve per avviare una pompa o una valvola dell'acqua per irrigare i campi. nano. Inoltre devo tipi di pompa, una che utilizza una valvola dell'acqua che funziona a 12 v, quindi per questo ho un modulo da AC 230 a DC 12v sulla scheda relè.

L'altro è 230 AC nel relè in modo da poter alimentare una pompa da 230 V AC.

Il sistema è abbastanza semplice, ogni controller della pompa ha numeri ID univoci, quindi diciamo che il campo di patate è asciutto e il sensore è impostato su acqua automatica, quindi la mia pompa per il campo di patate viene aggiunta a quel sensore, quindi il sensore del suolo sta dicendo al sistema di base che l'irrigazione dovrebbe iniziare, quindi il sistema di base invia un segnale a quella pompa per l'attivazione.

Puoi impostare per quanto tempo deve funzionare sulla pagina web (ad esempio 5 minuti) poiché i sensori controllano solo ogni ora. Inoltre, quando la pompa si ferma, memorizzerà l'ora nel sistema in modo che il sistema automatico non avvii la pompa a breve. (Possibile anche l'impostazione sulla pagina web).

È inoltre possibile, tramite la pagina Web, disabilitare l'irrigazione durante la notte/il giorno impostando orari speciali. E anche impostare i timer per ogni pompa per avviare l'irrigazione. E se piove non annaffieranno.

Spero tu capisca:)

Per questo progetto hai bisogno di:

  • 1 x Arduino Nano
  • 1 x modulo NRF24L01
  • Condensatore 1 x 100 uF
  • 1 Led RGB (l'anodo comune è da me utilizzato)
  • 3 resistenze da 270 ohm
  • 1 x scheda relè

Collega tutto come il foglio elettrico (vedi file pdf o immagine) Scarica il codice da GitHub e non dimenticare di definire il numero del sensore.

E ora che hai un controller della pompa, il sistema può gestirne più di uno.

Passaggio 4: sensore pioggia

Sensore di pioggia
Sensore di pioggia
Sensore di pioggia
Sensore di pioggia
Sensore di pioggia
Sensore di pioggia
Sensore di pioggia
Sensore di pioggia

Il sensore pioggia viene utilizzato per rilevare la pioggia. Non te ne serve più di uno. Ma è possibile aggiungerne altri. Questo sensore pioggia è alimentato a batteria e controlla ogni 30 minuti la presenza di pioggia. Hanno anche un numero univoco per identificarsi.

Il sensore pioggia utilizza pin analogici e digitali. Il pin digitale serve per verificare se piove, (Il display digitale solo si o no) e devi impostare il pot sul modulo del sensore pioggia su quando va bene per avvisare di "piove" (il livello dell'acqua sul sensore che indica pioggia.)

Il pin analogico viene utilizzato per informare in percentuale quanto è bagnato sul sensore.

Se il pin digitale rileva che sta piovendo, il sensore lo invierà al sistema di base. E il sistema di base non irrigherà le piante finché "piove". Il sensore invia anche quanto è bagnato e lo stato della batteria.

Alimentiamo il sensore pioggia solo quando è il momento di leggere attraverso il transistor che si attiva tramite un pin digitale.

Per questo sensore hai bisogno di:

  • Chip ATMEGA328P-PU
  • 1x Cristallo da 16000 MHz
  • Condensatore 2x 22 pF
  • 1x modulo sensore pioggia
  • 1x condensatore da 100 uF
  • 1x modulo NRF24L01
  • 1x RGB Led (ho usato un anodo comune, è VCC invece di GND)
  • 3 resistenze da 270 Ohm
  • 1x transistor NPN BC547
  • 1x batteria (io uso Li-Po)
  • 1x modulo caricabatterie Li-Po (se utilizzata batteria Li-Po)

Collega tutto come vedi sul foglio elettrico (in pdf o nell'immagine Quindi carica il codice sul chip ATMEGA come puoi trovare nella mia pagina GitHub sotto Sensore pioggia Non dimenticare di definire il sensore per ottenere il numero ID corretto.

E ora avrai un sensore di pioggia che funziona ogni 30 minuti. Puoi cambiare l'ora su questo se non lo vuoi di meno o di più.

Nella funzione counterHandler() puoi impostare il tempo di sveglia per il chip. Calcola in questo modo: I chip si svegliano ogni 8 secondi e ogni volta aumenterà un valore. Quindi per 30 minuti otterrai 225 volte prima che dovrebbe eseguire azioni. Quindi ci sono 1800 secondi in una mezz'ora. Quindi dividilo per 8 (1800 / 8) otterrai 225. Ciò significa che non controllerà il sensore fino a quando non verrà eseguito 225 volte e saranno circa 30 minuti. Fai lo stesso anche sul sensore del suolo.

Passaggio 5: sirena animale

Sirena animale
Sirena animale
Sirena animale
Sirena animale
Sirena animale
Sirena animale
Sirena animale
Sirena animale

La sirena animale è semplice quando il sensore animale rileva il movimento, la sirena verrà attivata. Uso una vera sirena così posso persino spaventare le persone con essa. Ma puoi anche usare le sirene che solo gli animali sentono.

Uso un Arduino nano in questo progetto e lo alimenta con 12v. Anche la sirena è a 12 V, quindi invece di un relè userò un transistor 2N2222A per abilitare la sirena. Se usi un relè quando hai la stessa massa puoi danneggiare il tuo Arduino. Ecco perché invece uso un transistor per abilitare la sirena.

Ma se la tua sirena e Arduino non usano la stessa terra, puoi invece usare un relè. Salta il transistor e il resistore da 2,2 K e usa invece una scheda relè. E cambia anche il codice Arduino quando attivato cambia da HIGH a LOW e quando inattivato cambia da LOW a HIGH och digital read per il pin 10, peccato che il relè usi LOW per attivarsi e il transistor usa HIGH quindi devi cambiarlo.

Per questa build hai bisogno di:

  • 1x Arduino nano
  • 1x resistenza da 2,2 K (salta se si utilizza la scheda relè)
  • 1x transistor 2N2222
  • 1x sirena
  • Resistore 3x 270 Ohm
  • 1x RGB Led (uso anodo comune, VCC invece di GND)
  • 1X modulo NRF24L01
  • 1x condensatore da 100 uF

Collega tutto come vedi sul foglio elettrico in PDF o nell'immagine. Carica il codice su Arduino che trovi sulla mia pagina GitHub sotto Animal Siren Non dimenticare di definire il sensore per il corretto numero ID.

E ora hai una sirena funzionante.

Passaggio 6: sistema principale

Sistema principale
Sistema principale
Sistema principale
Sistema principale
Sistema principale
Sistema principale

Il sistema principale è il più importante di tutti i moduli. Senza di esso non è possibile utilizzare questo sistema. Il sistema principale è connesso a Internet con il modulo ESP-01 e stiamo utilizzando i pin Arduino Megas Serial1 per collegarlo. Da RX su Mega a TX su ESP, ma dobbiamo passare attraverso due resistori per ridurre il volt a 3,3. E il TX su Mega a RX su ESP.

Configura il modulo ESP

Per utilizzare l'ESP devi prima impostare la velocità di trasmissione su 9600, è quello che ho usato in questo progetto e ho scoperto che l'ESP funziona meglio così. Fuori dalla scatola è impostato su 115200 baud rate, puoi provarlo ma il mio non era così stabile. Per farlo serve un Arduino (Mega funziona bene) e bisogna collegare il TX dell'ESP (tramite le resistenze come vedete sul foglio) al Serial TX (non Serial1 se si usa Mega) e RX su ESP ad Arduino Serial RX.

Carica uno schizzo lampeggiante (o qualsiasi schizzo che non utilizza la seriale) e apri il monitor seriale e imposta la velocità di trasmissione su 115200 e NR e CR sulle linee

Nella riga di comando scrivi AT e premi invio. Dovresti ricevere una risposta che dice OK, quindi ora sappiamo che l'ESP funziona. (In caso contrario, c'è un problema di connessione o un modulo ESP-01 difettoso)

Ora nella riga di comando scrivi AT+UART_DEF=9600, 8, 1, 0, 0 e premi invio.

Risponderà con un OK e questo significa che abbiamo impostato il baud rate a 9600. Riavvia l'ESP con il seguente comando: AT+RST e premi invio. Modificare la velocità di trasmissione nel monitor seriale in 9600, immettere AT e premere invio. Se torni bene, l'ESP è configurato per 9600 e puoi usarlo per il progetto.

Il modulo della scheda SD

Voglio che sia facile modificare le impostazioni WIFI per il sistema, nel caso in cui venga modificata una nuova password o un nome wifi. Ecco perché abbiamo bisogno del modulo SD Card. All'interno della SD Card creiamo un file di testo con il nome config.txt e stiamo usando JSON per leggere, quindi abbiamo bisogno di un formato JSON. Quindi il file di testo dovrebbe avere il seguente testo:

{ "ssid": "YOURWIFISSID", "perso": "LA TUA PASSWIFIP"

}

Modifica il testo con le lettere GRANDI per correggere la tua rete wifi.

Peccato che stiamo usando NRF24L01 che usa SPI e anche il lettore di schede SD usa SPI, dobbiamo usare la libreria SDFat in modo da poter usare SoftwareSPI (possiamo aggiungere il lettore di schede SD su qualsiasi pin)

Sensore DHT

Questo sistema è posizionato all'esterno e dispone di un sensore DHT in modo da poter controllare l'umidità e la temperatura dell'aria. È usato per l'irrigazione extra nelle giornate calde.

Per questa build hai bisogno di:

  • 1x Arduino Mega
  • 1x modulo NRF24L01
  • 1x modulo ESP-01
  • 1x modulo scheda micro SD SPI
  • 1x sensore DHT-22
  • 1x RGB Led (ho usato anodo comune, VCC invece di GND)
  • 3 resistenze da 270 Ohm
  • 1x resistenza da 22 K Ohm
  • 2x resistore da 10 K Ohm

Si prega di notare che se non si ottiene il modulo ESP-01 stabile, provare ad alimentarlo da una fonte di alimentazione esterna da 3,3 V.

Collega tutto come vedi nel foglio elettrico nel file PDF o nell'immagine.

Carica il codice sul tuo Arduino Mega e non dimenticare di controllare l'intero codice per i commenti, perché devi impostare l'host sul server in più posti (non è la soluzione migliore che conosco).

Ora il tuo sistema Base è pronto per l'uso. Non è necessario modificare le variabili nel codice per i peccati di umidità del suolo, puoi farlo direttamente dalla pagina web.

Passaggio 7: il sistema Web

Il sistema web
Il sistema web
Il sistema web
Il sistema web
Il sistema web
Il sistema web
Il sistema web
Il sistema web

Per utilizzare il sistema è necessario anche un server web. Uso un raspberry pi con Apache, PHP, Mysql, Gettext. Il sistema web è multilingua, quindi puoi farlo facilmente nella tua lingua. Viene fornito con lo svedese e l'inglese (l'inglese può avere un inglese errato, la mia traduzione non è al 100%.) Quindi devi avere installato Gettext per il tuo server e anche le impostazioni locali.

Ti mostro alcuni screenshot qui sopra dal sistema.

Viene fornito con un semplice sistema di accesso e il login principale è: admin come utente e water come password.

Per usarlo devi impostare tre cron job (li trovi nella cartella cronjob)

Il file timer.php che devi eseguire ogni secondo. Questo contiene tutta l'automazione per il sistema di fori. Il nome del file temperatur.php viene utilizzato per dire al sistema di leggere la temperatura dell'aria e registrarla. Quindi devi impostare un cron job su quanto spesso lo eseguirai. Ce l'ho ogni 5 minuti. Quindi il file chiamato dagstatistik.php dovrebbe essere eseguito solo una volta prima di mezzanotte (come 23:30, 23:30). Prende i valori riportati dai sensori durante il giorno e li salva per le statistiche settimanali e mensili.

Tieni presente che questo sistema memorizza la temperatura in gradi Celsius, ma puoi cambiare in Fahrenheit.

Nel file db.php si imposta la connessione al database mysql per il sistema.

Innanzitutto, aggiungi i sensori al sistema. E poi crea zone e aggiungi sensori alle zone.

Se hai domande o trovi bug nel sistema, per favore segnalali sulla pagina GitHub. Puoi usare il sistema web e non ti è permesso venderlo.

Se hai problemi con le impostazioni locali per gettext, ricorda che se usi raspberry come server sono spesso denominate come en_US. UTF-8, quindi devi apportare tali modifiche nel file i18n_setup.php e nella cartella locale. Altrimenti rimarrai bloccato con la lingua svedese.

Lo scarichi dalla pagina GitHub.

Consigliato: