Sistem IOT monitorizare temperatura si umiditatea solului

 

Obiectiv 

Am dezvoltat acest sistem pentru un prieten care are o casa la tara, unde are o mica gradina. Nu locuieste acolo tot timpul, si vrea sa stie daca este sau nu cazul sa irige gradina.

Arhitectura

Ca sa aiba acces la date de oriunde, am ales sa trimit datele in Internet folosind http://iot.robofun.ro .

Mai jos este graficul temperaturii, in timp real :

http://iot.robofun.ro/public/senzor/8rr6e9r8sag76t0vnkrcrnp4ml

In acest moment datele masurate sunt publice. Intra pe http://iot.robofun.ro si foloseste “Testeaza Cont Demo”.

Pentru nodul care face efectiv masurarea valorilor am ales :

Arduino Pro Mini 3.3 V https://www.robofun.ro/arduino_pro_mini_328_8mhz 

  • am ales asta pentru ca este o placa care consuma extrem de putin in sleep mode, ceea ce imi permite sa o alimentez pe baterii

Modul Radio RFM69  – https://www.robofun.ro/sparkfun-rfm69-breakout-434mhz-

Senzor Umiditate Sol https://www.robofun.ro/soil-moisture-sensor

Senzor de Temperatura Inlantuibil Brick – https://www.robofun.ro/senzor-temperatura-inlantuibil-brick-DS18B20-motherboard

Senzor de Temperatura DS18B20+ – https://www.robofun.ro/senzor-temperatura-DS18B20

  • am ales senzorii de temperatura inlantuibili pentru ca folosind doar 3 fire pot monta oricat de multi senzori (pe aceleasi 3 fire).  Distanta intre Arduino si senzori poate ajunge la cateva sute de metri.

Cutie 6 baterii AA – https://www.robofun.ro/cutie-6-baterii

As fi putut sa pun direct un modul wifi si sa renunt la WIFI, dar m-am gandit ca poate in viitor voi vrea sa extind sistemul cu mai multi senzori pus in zone in care nu bate WIFI-ul din casa.

 

Pentru gateway (sistemul catre trimite valorile in cloud) am ales :

Arduino YUN  – https://www.robofun.ro/arduino_yun

Sunt multe lucruri care imi plac tare la acest dispozitiv :

  • este foarte robusta, de fiecare data a mers exact cum trebuie, in toate proiectele unde am folosit-o; libraria este bine scrisa, simplu de folosit
  • are atat conectivitate WIFI cat si prin fir de retea
  • setarea datelor de retea WIFI se face foarte foarte simplu, fara sa fie nevoie sa reprogramez placa; acest punct a fost unul esential pentru mine, pentru ca era cam aiurea sa ii cer amicului sa-mi dea parola lui de WIFI ca sa o pun eu in cod; folosind Arduino YUN, te conectezi la o retea generata chiar de placa si din interfata web de configurare (intri folosind telefonul mobil intr-un site web) setezi tot ce vrei; un exemplu mai clar aici – https://www.youtube.com/watch?v=9-hPhWHWnvs 

Modul Radio RFM69  – https://www.robofun.ro/sparkfun-rfm69-breakout-434mhz-

  • pentru receptia datelor trimise de nod

Arduino Pro Mini 3.3 V https://www.robofun.ro/arduino_pro_mini_328_8mhz 

  • dat fiind ca modulul radio functioneaza maxim la 3.3V, iar Arduino YUN functioneaza la 5V, am mai folosit inca un Arduino Pro Mini 3.3V pentru interfatare; Arduino Pro Mini este conectat la modulul radio (3.3V ambele), iar apoi trimite datele printr-o conexiune SoftwareSerial catre Arduino YUN. Dat fiind ca doar trimite date catre YUN (si nu si receptioneaza date inapoi), este OK din punct de vedere al nivelelor de tensiune. “1” logic este trimis de catre Arduino Pro Mini ca 3.3V, iar YUN interpreteaza si el tot ca “1” logic acest nivel, chiar daca functioneaza la 5V.

 

  • folosirea unui Arduino Pro Mini pe post de convertor de nivel logic (asa cum am facut eu) nu este chiar cea mai desteapta idee 🙂 Iti recomand sa folosesti un device special gandit pentru asta – https://www.robofun.ro/logic-level-convertor-4-canale-bidirectional . Daca folosesti un logic level convertor poti sa faci transmisie radio in ambele sensuri (si de la nod catre YUN si de la YUN catre nod). Eu nu l-am folosit pentru ca in momentul in care am realizat proiectul nu am avut unul la indemana.

 

Nodul care citeste datele

Conexiunile Arduino Pro Mini – modul radio

Senzorul de temperatura (motherboard – https://www.robofun.ro/senzor-temperatura-inlantuibil-brick-DS18B20-motherboard) l-am conectat cu pinul DQ la pinul 6 digital Arduino Pro Mini. GND si 5V le-am conectat la GND, respectiv 3.3 V (chiar daca pe placa este specificat 5V ca tensiune de alimentare, senzorul merge foarte OK si la 3.3 V).

Senzorul de umiditate a solului l-am cuplat pe pinul analogic 0 (VCC la 3.3 V, GND la GND si SIG la pinul analog 0 al placii Arduino Pro Mini).

Sistemul l-am alimentat folosind cutia de baterii (pinii GND si RAW).

Pentru a citi nivelul bateriei (ca sa stiu cand trebuie sa le schimb), am realizat un divizor de tensiune 1:3. Am folosit 3 rezistoare de 100 de K inseriate (legate unul in continuarea celuilalt). Capetele extreme le-am legat la pinul RAW si la pinul GND. Pinul analog 7 (se afla pe zona interioara a placii Arduino Pro Mini) l-am conectat dupa primul rezistor (numarand de la GND). Vezi poza de mai jos.

In acest mod voltajul bateriei (de 9V) este redus de 3 ori, pana la cel mult 3 V, astfel incat tensiunea sa poata fi citita de catre Arduino Pro Mini.

 

Codul sursa pentru nod

Codul sursa pentru nod este bazat pe exemplu Node din libraria pentru modulul radio RFM69.

Este disponibil integral, aici – https://github.com/viorelspinu/iot-sol-umiditate/blob/master/nod/nod.ino

Gateway-ul

Pentru gateway (sistemul care primeste datele prin radio si trimite in Internet) am folosit un Arduino Pro Mini + un modul radio RFM69 pe post de receptor radio, si un Arduino YUN pentru a trimite in Internet.

Am conectat pinul digital 8 al placii Arduino Pro Mini cu pinul digital 8 al placii Arduino YUN pentru a putea trimite datele receptionate prin radio de catre Arduino Pro Mini catre Arduino YUN.

Disclaimer :

  • folosirea unui Arduino Pro Mini pe post de convertor de nivel logic (asa cum am facut eu) nu este chiar cea mai desteapta idee 🙂 Iti recomand sa folosesti un device special gandit pentru asta – https://www.robofun.ro/logic-level-convertor-4-canale-bidirectional . Daca folosesti un logic level convertor poti sa faci transmisie radio in ambele sensuri (si de la nod catre YUN si de la YUN catre nod). Eu nu l-am folosit pentru ca in momentul in care am realizat proiectul nu am avut unul la indemana.

 

Codul sursa Arduino Pro Mini din gateway este disponibil integral, aici – https://github.com/viorelspinu/iot-sol-umiditate/blob/master/gateway/gateway.ino

 

Codul sursa Arduino YUN din gateway este disponibil integral, aici – https://github.com/viorelspinu/iot-sol-umiditate/blob/master/yun/yun.ino

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s