Despre prima interacțiune cu Arduino am scris în urmă cu câțiva ani în acest articol și știam că va veni ziua când mă vor mânca iar degetele să mă joc cu senzori și module. Mi-am propus să încep să dezvolt câteva proiecte de tip IOT (Internet of Things), iar la provocarea lansată de un prieten, am început primul proiect.

Challenge-ul a fost realizarea unui sistem ce poate detecta prezența fumului într-o cameră cu servere. În plus, dacă se strică aerul condiționat și crește temperatura în cameră, serverele au de suferit și pot apărea probleme mari, la fel și cu umezeala, așa că am stabilit rapid scopurile sistemului ce trebuia proiectat: Dacă temperatura, umiditatea sau nivelul calitatății aerului ies din limita maximă admisă, sistemul trebuie să notifice prin MAIL, pentru a se lua rapid măsuri.

Pentru a realiza acest proiect am avut nevoie de următoarele piese electronice:

  • Placă de dezvoltare Arduino Uno R3 cu chip Atmega328P. Inițial mă gândeam să folosesc o placă Arduino Nano, pentru că este mult mai mică, dar cea pe care o aveam acasă avea chip CH340 și nu am reușit să o fac să comunice cu Mac OS-ul. Am făcut update-uri peste update-uri, nopți pierdute, până la urmă am comandat o placa Arduino Uno R3 Atmega328P, la 26.9 RON
  • Placă de expansiune Ethernet W5100 pentru conectarea sistemului în rețea și pentru a trimite mail-uri. Am încercat la început cu un modul Serial WIFI ESP8266 ESP-01, dar fiindcă mi-a dat bătăi de cap și își lua IP când avea chef, am decis că e mai sigur folosirea unui shield și conectarea sistemului prin cablu UTP la router. Avantajul a fost că sistemul era dedicat unei camere cu servere, deci cablul de net era la o întindere de mână. Costul shield-ului a fost de 31.5 RON
  • Placă expansiune senzori V5.0 la 26.90 RON, pentru atașarea tuturor componentelor la placa de dezvoltare
  • Ecran LCD 1602 IIC/I2C cu pini și modul serial lipite, pentru mai puțină bătaie de cap. Am reușit să „ard” unul, prin alimentare incorectă, și am avut nevoie de al doilea pentru varianta finală a proiectului. Cost ecran: 18.9 RON
  • Modul cu senzor calitate aer MQ 135 . Exact cum îi spune și numele, citește calitatea aerului și poate detecta fum, abur de amoniac, benzen sau gaze alte gaze nocive. Cost: 22 RON
  • Senzor temperatură și umiditate DHT11 . Face ce zice că face și costă 9.9 RON. Ieftin ca braga.
  • Fire Dupont de 10 sau 20 cm, tip mamă-mamă. Nu mai știu exact câte și cum am folosit, să zicem că de 10 RON
  • 2 led-uri . Gratis, că le aveam
  • doză de derivație 10.65 ron din Dedeman. Mi s-a părut perfectă pentru un astfel de proiect și sigur o să mă folosesc de astfel de doze de derivație și în proiectele viitoare pentru că sunt foarte ușor de modificat după bunul plac, se pot tăia sau decupa ușor cu un cutter și arată destul de bine, zic eu. Pentru a fixa toate piesele în doza de derivație m-am folosit de un pistol cu silicon topit.
  • Sistemul l-am alimentat printr-un cablu USB A-B pe durata proiectării, iar după ce l-am fixat pe poziție, am folosit un alimentator de 5V și 3A, la 27 RON

Cost total proiect: ± 183.75 RON

Conectarea pieselor am făcut-o în felul următor:

Pe placa Arduino Uno am pus shield-ul Ethernet, iar pe shield-ul Ethernet am pus placa de expansiune pentru senzori. Am mai tăiat puțin cu un patent din pinii shied-ului Ethernet pentru că înălța mult ansamblul și nu mai puteam pune capacul dozei. Mare grijă să nu se atingă partea metalică a mufei LAN de lipiturile plăcii de expansiune ce vine deasupra, pentru că riscați „să facă scurt” și în cel mai fericit caz, doar se va închide sistemul, placa Arduino Uno detectează și oprește alimentarea. Mi-a luat puțin timp să-mi dau seama de acest lucru. Nu știam de ce se sting LCD-ul și led-urile când puneam capacul 🙂

Ecranul LCD se conectează astfel: 

  • GND (cablul portocaliu) la G din zona pinului analog A5
  • VCC (cablul galben) la V din zona pinului analog A5
  • SDA (cablul verde) la S din zona pinului analog A4
  • SCL (cablul albastru) la S din zona pinului analog A5

Pentru LCD puteți folosi librăriile de aici

Senzorul MQ135 se conectează astfel: 

  • GND (cablul maro) la G din zona pinului analog A0
  • VCC (cablul negru) la V din zona pinului analog A0
  • D0 se lasă liber
  • A0 (cablul roșu) la S din zona pinului analog A0

Senzorul DHT11 se conectează astfel: (numerotarea pinilor se face de la stânga la dreapta, cum ne uităm frontal la senzor)

  • PIN1 reprezintă VCC (cablul alb) la V din zona pinului digital D3 (în poze este la D0, dar l-am mutat ulterior)
  • PIN2 reprezintă DATA (cablul mov) la S din zona pinului digital D3
  • PIN3 se lasă liber
  • PIN4 reprezintă GND (cablul gri) și se conectează la G din zona pinului digital D3

Librărie folosită pentru senzorul DHT11

Led-ul alb l-am conectat la GND și V pe pinul digital 1 și indică faptul că sistemul este ON. Led-ul roșu l-am conectat la GND și S pe pinul digital 2 și se aprinde atunci când unul din parametri (temperatură, umiditate, fum) depășește limita maximă setată.

Mailurile se trimit printr-un server de SMTP, iar userul și parola trebuiesc criptate în BASE64, eu m-am folosit de acest cod.

Am ales să stabilesc temperatura maximă de 25°C, umiditate de 80% și calitate aer de maxim 150. Depășirea oricărui parametru declanșează alarma și dacă timp de 1 minut sistemul nu detectează revenirea la normal, înseamnă că trebuie alarmată persoana de contact și este setat să trimită mail cu valorile înregistrate. Va trimite mail la fiecare minut până când situația va reveni la normal sau până când va fi resetat prin decuplarea alimentării. Aici se putea atașa un buton de reset exterior, poate pe viitor. Sigur, vom renunța la acel colier de plastic și îl vom fixa cu șuruburi în rama metalică.

Sunt sigur că sunt alte piese și alte linii de cod mai potrivite pentru realizarea unui proiect similar, așă că fiecare este liber să aleagă ce crede că i se potrivește, eu sper doar că v-am stârnit interesul în a dezvolta soluții IOT.

Aici găsiți codul sursă pentru acest proiect, l-am comentat în măsura în care am putut, dacă aveți întrebări sau sugestii le aștept în comentarii. Ne auzim la următorul proiect 🙂