Table of Contents

Smart Home

Student: Coconu Taisia-Maria

Grupa: 331CC

:!: :!: :!: Drive Proiect Coconu Taisia-Maria :!: :!: :!:

Introducere

Prezentarea succintă a proiectului:

Am ales realizarea unei case inteligente pentru a simula existența anumitor facilități într-un mediu de trai favorabil din zilele noastre. Din acest motiv, consider relevantă crearea unei machete care să reflecte principalele operații inteligente pe care un arhitect le poate avea în vedere atunci când construiește o casă modernă.

:!: De ce este utilă o astfel de casă pentru omul modern? :!:

Simplifică extrem de mult anumite procese obositoare și obișnuite din casele tradiționale, sporind totodată curiozitatea și interesul utilizatorului prin diverse inovații ce aduc noutate și prosperitate în propria locuință.

Descriere generală

Prin acest proiect, se vor simula următoarele funcționalități:

Schema bloc

Hardware Design

Lista de piese :-P

Scheme electrice :-D

Pentru implementarea funcționalității de aprindere a ledului atunci când este detectată voce și este noapte:

Se utilizează:

Pentru implementarea funcționalității de închidere automată a ferestrelor atunci când este detectat un nivel ridicat de apă pe acoperișul casei:

Se utilizează:

Pentru implementarea funcționalității de deschidere a garajului atunci când este introdusă o monedă:

Se utilizează:

Pentru implementarea funcționalității de intrare în casă:

Se utilizează:

Pentru implementarea funcționalității de deschidere a ventilatorului atunci când este o temperatură prea ridicată:

Se utilizează:

Pentru implementarea funcționalității de aprindere a ventilatorului atunci când flacăra este detectată:

Se utilizează:

Pentru implementarea funcționalității de monitorizare a plantelor:

Se utilizează:

Schema hardware finală:

whatsapp_image_2023-04-26_at_21.15.15.jpeg

Alimentarea se face cu ajutorul a doi acumulatori 18650LI-ION. De asemenea, se folosește un modul bluetooth cu ajutorul căruia se pot comanda anumite funcționalități ale casei.

Schema hardware pentru mașina de poliție:

Se utilizează:

Software Design

Mediul de dezvoltare utilizat pentru realizarea proiectului a fost: https://www.arduino.cc/en/software/ - versiunea 2.1.0

Pentru SMART HOME

Librăriile folosite au fost:

  1. =) <Servo.h> - utilizată pentru a putea lucra cu cele 3 servomotoare puse la dispoziție
  2. :-D “DHT.h” - utilizată pentru senzorul de temperatură și umiditate
  3. :-O <Wire.h> și <LiquidCrystal_I2C.h> - utilizate pentru a putea folosi LCD-ul în afișarea diverselor informații necesare
  4. :!: <SoftwareSerial.h> - utilizată pentru a putea folosi SerialMonitor
  5. ^_^ <TimeLib.h> - utilizată pentru a putea afișa ora și data

În cele ce urmează, se va prezenta o descriere succintă a codului scris atât pentru casă, cât și pentru mașina de poliție.

Datorită faptului că la intrarea în casă se aude o melodie specifică, am definit notele muzicale necesare astfel:

note muzicale pentru crearea melodiei la intrarea în casă

   #define NOTE_C4  262
   #define NOTE_E4  330
   #define NOTE_G4  392
   #define NOTE_A3  220
   #define NOTE_G3  196
   #define NOTE_B3  247
   #define NOTE_D4  294

În cadrul codului, am folosit mai multe variabile, iar acestea au fost definite astfel:

variabile utilizate pentru aprinderea ledului in functie de sunet, luminozitate și numărul de secunde

   int relay_close_led_flag;
   int relay_close_led_count;

variabila care contorizeaza câți oameni intră în casă

   int counter_people;

variabilă care, atunci când devine multiplu de 3, activează alarma casei

   int counter_police;

variabila care opreste alarma dupa un anumit timp

   int cate_sec = 0;
   int i;

variabila care contorizeaza câte încercări mai are utilizatorul de ghicire a parolei

   int tries = 3;

utilizați în comunicarea serială

   char txbuf[20];
   char rxbuf[20];
   int index = 0;
   long ts = 0;

aprinde și stinge LED-ul după un interval

   short blink_on = 0;
   int ok;

activare/dezactivare alarmă

   int ok1 = 0;

variabile pentru reținerea luminozității/zgomotului extern

   volatile int Brightness;
   volatile int Environmental_sound;

variabilă care permite sau nu intrarea în garaj

   int pass;

servomotoarele

   Servo servo_9;
   Servo servo_10;
   Servo servo_11;

variabilă care reține nivelul apei pentru o plantă

   int water_level;

variabilă care reține umiditatea solului unei plante

   int Soil_moisture;

variabilă care detectează dacă este sau nu foc

   int flame;

variabile care contorizează câte grade sunt afară, respectiv care este umiditatea mediului

   int temperature;
   int humidity;
   DHT dht12(12, 11);

butoane folosite în scrierea parolei

   int Button_Red;
   int Button_Green;

contorizare de câte ori a fost apăsat un anumit buton

   int Red_num_time;
   int Green_num_time;

parola casei

   String password;

variabile care deschid sau închid ușa, în funcție de parolă sau dacă este detectat sau nu incendiu

   int door_flag;
   boolean key_door_flag;

LCD

   LiquidCrystal_I2C mylcd(0x27,16,2);

variabile care ajută în conectarea aplicației pentru ușă, mașină, LED, geam, parcare, parolă

   int BLE_door_flag;
   int BLE_car_flag;
   String BLE_value;
   int BLE_LED_flag;
   int BLE_window_flag;
   int BLE_fan_flag;
   String sensor_data;
   String app_password;
   int re_string_len;

Pentru modularizarea codului, am decis împărțirea acestuia în mai multe funcții, fiecare fiind specifică unei anumite funcționalități pe care le implementează proiectul.

Funcția soil() este auxiliară pornirii sistemului de detecție a nivelului de apă pentru sol și al umidității acestuia, întrucât acesta va porni doar atunci când se introduce de la tastatură String-ul “on”. Această funcție va fi mai apoi apelată în loop(), acolo unde se testează umiditatea pe o anumită plantă. Dacă planta necesită a fi udată, atunci buzzer-ul va alarma utilizatorul cu privire la acest lucru (doar când se începe utilizarea sistemului), iar un LED va blink-ui pe tot parcursul utilizării acestui senzor, doar atunci când este cazul.

Funcția Storm_warning() este ajutătoare atunci când se detectează o cantitate ridicată de apă pe acoperișul casei și pornește blink-urile unui LED alb ce are ca scop avertizarea oamenilor cu privire la furtună. Funcția este apelată apoi în loop() și pornește semnalul luminos atunci când cantitatea de apă detectată este mult prea mare. De asemenea, în acest caz, servomotorul aferent geamului produce o mișcare corespunzătoare cu un numpr de grade necesar pentru închiderea lui. În caz contrar, geamul rămâne în permanență deschis.

Funcția fan_motor_pwm() a fost special creată pentru a putea porni ventilatorul în cazul în care este o temperatură prea ridicată sau este detectat foc în apropierea casei. Funcția este apelată în loop() în cazul în care se depășește o temperatură specificată și în bucata de cod în care se pregătește evacuarea casei în caz de incendiu (caz în care se deschide și ușa casei pentru a putea părăsi incinta).

Funcția key_voice() definește sunetul ce este emanat atunci când se apasă butoanele ce compun parola/validarea parolei și se apelează pentru fiecare pas din definirea parolei (caracterele 1, 2, 3, ștergerea unui anumit caracter).

Funcția Password_Confirmation() ajută la deschidere/închiderea/blocarea ușii în caz că parola a fost introdusă corect sau nu. În această funcție se fac diverse afisări pe LCD cu diferite mesaje, se cheamă poliția, se contorizează numărul de încercări și se blochează ușa pentru un număr specificat de secunde (principiul pe care funcționează alarma este similar cu cel al unei parole de la telefon). Funcția este din nou apelată în loop(), acolo unde se și specifică date despre parolă cum ar fi: cifra 1 este corespunzătoare apăsării unui anumit interval de secunde, cifrele 2 și 3 analog, iar pentru a șterge un caracter trebuie apăsat un număr îndelungat de secunde pe butonul verde. Se contorizează numărul de persoane ce intră în casă, încercările rămase, se afișează mesaje corespunzătoare, parola etc.

Funcția setup_melody_door() este folosită numai pentru momentul în care parola este introdusă corect și un nou oaspete este poftit în casă. Melodia este inspirată din Laboratorul 2.

Funcția printDigits este folosită pentru afișarea corespunzătoare a datei și a orei în funcția de setup(), atunci când se afișează pentru prima oară informații corespunzătoare pe LCD. (temperatura, data, ora).

În funcție de setup() se specifică informații precum: la început, ușa este închisă, geamul este deschis, pe LCD se afișează temperatura, data și ora, contoarele sunt inițializate cu 0, String-urile cu ”” etc.

În funcția de loop() sunt executate toate funcționalitățile mai sus menționate. Mai multe detalii se regăsesc în comentariile din cadrul codului din arhivă.

În arhiva alăturată se găsește codul pentru casa SMART, alături de README și biblioteca utilizată pentru senzorul de temperatură și umiditate:

smarthome.zip

Pentru MAȘINA DE POLIȚIE

Pentru a realiza mașinuța de poliție, am avut nevoie principial de un senzor ultrasonic și un buzzer. În realizarea codului, am avut în special grijă de deplasarea mașinii în toate direcțiile de mers. Se verifică distanța până la obstacole și se caută de fiecare dată o rută corespunzătoare unor obstacole cât mai îndepărtate. Mai multe detalii se regăsesc în comentariile din codul din arhivă.

În arhiva alăturată se găsește codul pentru mașina de poliție:

masinapolitie.zip

Rezultate Obţinute

Rezultatele obținute în urma realizării proiectului:

 1. Interfața de început a casei 

 2. Aprinderea ledului noaptea, când se apropie cineva de casă

 3. Ridicarea barierei

 4. Introducerea corectă a parolei și contorizarea persoanelor care intră în casă

whatsapp_image_2023-05-18_at_23.11.42_1_.jpeg whatsapp_image_2023-05-18_at_23.11.43.jpeg

 5. Atunci când parola este introdusă greșit de 3 ori, se activează alarma, iar poliția este înștiințată

 6. Mașina de poliție

 7. Atunci când plouă, geamul se închide

 8. Sistemul de monitorizare al plantelor

whatsapp_image_2023-05-18_at_23.39.58_1_.jpeg whatsapp_image_2023-05-18_at_23.39.58.jpeg

 9. Atunci când se detectează focul, ventilatorul pornește și stinge acest foc, ușa se deschide pentru a se putea evacua încăperea și ambulanța este chemată:

whatsapp_image_2023-05-22_at_12.49.26_2_.jpeg whatsapp_image_2023-05-22_at_12.49.26.jpeg

 10. Interfața aplicației

whatsapp_image_2023-05-18_at_23.33.34.jpeg

Toate celelalte funcționalități, dar și cele prezentate mai sus sunt experimentate într-un demo atașat.

În drive-ul de mai jos poate fi observat un videoclip cu funcționalitatea completă a casei inteligente.

https://drive.google.com/drive/folders/16ODZVYwotw0ONRuD644CYl7uKrvmNkHw?usp=sharing

Concluzii

:-D Realizând acest proiect, am identificat multe lucruri practice care pot fi făcute cu ajutorul unui Arduino. Acest proiect a reprezentat o introducere interesantă în microprocesoare, utilă și care a necesitat foarte mult efort. Smart Home-ul construit are ca fundament vizualizarea unei machete pentru o casă din zilele noastre, modernă, cu diferite funcționalități și care ar putea fi de mare interes pentru toți cei care doresc să își proiecteze și realizeze o casă protejată (datorită cifrului de la intrarea în casă și a alarmei care se pornește atunci când este greșită parola), cu funcționalități intelgente multiple precum închiderea ferestrei atunci când plouă sau pornirea aerului condiționat când temperatura nu este una benefică ambientului.

8-) Casa este, de asemenea, impresionantă prin siguranța pe care o oferă în cazul unui incendiu, garantând o evacuare imediată. Dispune de un sistem de udare inteligent, cu ajutorul căruia utilizatorul este înștiințat care plante necesită a fi udate și care este situația lor cu privire la umiditate.

:-P Toate aceste informații sunt afișate atât pe un LCD, cât și monitorizate cu ajutorul unei aplicații pe telefon (conectată prin Bluetooth) și pot fi la îndemâna utilizatorului în orice moment.

:-O Pentru a simula și o mașină de poliție ce vine în ajutor atunci când parola este introdusă greșit, am construit si o mașină Arduino cu un senzor ultrasonic, al cărei scop nu este altul decât a evita obstacolele și a ajunge la destinație fără a face vreun accident.

;-) Doresc a continua lucrul la acest proiect, îmbunătățind interfața aplicației și conectând cele două Arduino utilizate astfel încât mașina de poliție să pornească singură doar atunci când alarma casei este activată.

Download

Arhiva conține:

  • codurile sursă
  • imagini cu toate funcționalitățile căsuței
  • diagramele electrice ale casei și mașinuței
  • schema bloc

Arhiva poate fi descărcată de mai jos:

Jurnal

05.04.2023 – alegere temă proiect

12.04.2023 – comandare piese

28.04.2023 – creare pagină OCW

12.05.2023 - finalizare Hardware Smart Home

18.05.2023 - finalizare Hardware mașinuță

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

  1. Aplicație PM (dosar din cadrul drive-ului pus la dispoziție pentru vizualizarea filmulețului): https://drive.google.com/drive/folders/1GgBk_8Gc3Awr077DrV8IP0D3y9sx0l7M

Export to PDF