Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2022:dene:ventilatorinteligent [2022/05/27 21:23]
andreea.costache99 [Scheme electrice]
pm:prj2022:dene:ventilatorinteligent [2022/05/27 23:44] (current)
andreea.costache99 [Listă piese]
Line 12: Line 12:
 ===== Descriere generală ===== ===== Descriere generală =====
  
-Ventilatorul va începe să funcționeze dacă temperatura din cameră depășește un anumit prag setat de către utilizator. Dacă se depășește acest prag, ventilatorul își mărește sau scade turația în funcție de temperatura din cameră. De asemenea, pe ecranul LCD se vor afișa ora, temperatura și umiditatea. În cazul în care sistemul se supraîncălzește și ia foc, flacăra va fi detectată folosind senzorul pentru flăcări iar buzzerul va scoate ​un sunet.+Ventilatorul va începe să funcționeze dacă temperatura din cameră depășește un anumit prag setat de către utilizator. Dacă se depășește acest prag, ventilatorul își mărește sau scade turația în funcție de temperatura din cameră. De asemenea, pe ecranul LCD se vor afișa ora, temperatura și umiditatea. În cazul în care sistemul se supraîncălzește și ia foc, flacăra va fi detectată folosind senzorul pentru flăcări iar buzzerul va emite un sunet.
  
  
Line 24: Line 24:
 ==== Listă piese ==== ==== Listă piese ====
  
-  * Plăcută Arduino UNO R3 ATMEGA328P+  * Plăcuță Arduino UNO R3 ATMEGA328P
   * Breadboard   * Breadboard
   * LCD   * LCD
-  * Potențiometru+  * Potențiometru ​10K
   * DC Motor   * DC Motor
   * Elice   * Elice
Line 36: Line 36:
   * Rezistențe 1KΩ   * Rezistențe 1KΩ
   * Tranzistor NPN 2N2222   * Tranzistor NPN 2N2222
 +  * Condensator 68nF
   * Diodă   * Diodă
   * Buzzer   * Buzzer
Line 41: Line 42:
  
 ==== Scheme electrice ==== ==== Scheme electrice ====
 +Pentru realizarea schemelor am utilizat Fritzing.
  
 == Components == == Components ==
-{{:​pm:​prj2022:​dene:​cst_componente.png?300 |}}+{{:​pm:​prj2022:​dene:​cst_componente.png |}}
 == Schematic == == Schematic ==
 {{:​pm:​prj2022:​dene:​cst_sch_electrica.png |}} {{:​pm:​prj2022:​dene:​cst_sch_electrica.png |}}
Line 49: Line 51:
 ===== Software Design ===== ===== Software Design =====
  
 +== Mediu de dezvoltare ==
 +Pentru dezvoltare am folosit ArduinoIDE.
  
-<note tip+== Biblioteci importate == 
-Descrierea codului aplicaţiei (firmware): +Pentru senzori și ecran LCD am utilizat următoarele biblioteci:​ 
-</​note>​+  * #​include ​<LiquidCrystal.h → pentru ecranul LCD 
 +  * #include "​DHT.h"​ → pentru senzorul de temperatură și umiditate DHT11 
 +  * #include <​SoftwareSerial.h>​ → pentru modulul bluetooth 
 + 
 +== Surse şi funcţii implementate == 
 +În funcția **setup()** se realizează configurările inițiale
 +  * afișare mesaj de început; 
 +  * configurare pini(input, output); 
 +  * inițializare variabile auxiliare;​ 
 +  * introducere parolă + verificare corectitudine valori introduse;​ 
 +  * introducere temperatură de referință și oră + verificare corectitudine valori introduse. 
 + 
 +**Parolă** 
 + 
 +Pentru a introduce parola putem controla joystick-ul pe direcțiile sus-jos-stânga-dreapta folosind funcțiile auxiliare:​ 
 +  * moveRight();​ 
 +  * moveLeft();​ 
 +  * decrease(position);​ 
 +  * increase(position). 
 +Verificarea corectitudinii datelor se realizează cu funcția checkPassword(). 
 + 
 + 
 + 
 +**Temperatura de referință** 
 + 
 + 
 +Pentru setarea temperaturii de referință putem controla joystick-ul pe direcțiile sus-jos-stânga-dreapta folosind funcțiile auxiliare:​ 
 + 
 +- partea întreagă a temperaturii:​ 
 +  * moveRight_temp_intreg();​ 
 +  * moveLeft_temp_intreg();​ 
 +  * decrease_temp_intreg(position);​ 
 +  * increase_temp_intreg(position). 
 + 
 +- partea partea zecimală a temperaturii:​ 
 +  * moveRight_temp_zecimal();​ 
 +  * moveLeft_temp_zecimal();​ 
 +  * decrease_temp_zecimal(position);​ 
 +  * increase_temp_zecimal(position). 
 + 
 +Verificarea corectitudinii se realizează cu ajutorul funcțiilor:​ check_temp_intreg() și check_temp_zecimal(). 
 + 
 + 
 +**Ora curentă** 
 + 
 +Pentru setarea orei curente, atât pentru oră cât și pentru minute, joystick-ul poate fi controlat pe direcțiile sus-jos. 
 + 
 +Pentru setarea orei se folosesc funcțiile:​ 
 + 
 +- pentru primul digit: 
 +  * decrease_hour_first(position);​ 
 +  * increase_hour_first(position). 
 + 
 +- pentru cel de-al doilea digit: 
 +  * decrease_hour_second(position);​ 
 +  * increase_hour_second(position). 
 + 
 +Verificarea corectitudinii datelor se realizează folosind check_hour_first() și check_hour_second(). 
 + 
 + 
 +Pentru minute utilizez funcțiile:​ 
 + 
 +- pentru primul digit: 
 +  * decrease_minute_first(position);​ 
 +  * increase_minute_first(position). 
 + 
 +- pentru cel de-al doilea digit: 
 +  * decrease_minute_second(position);​ 
 +  * increase_minute_second(position). 
 + 
 +Verificarea corectitudinii datelor se realizează folosind: check_min_first() și check_min_second(). 
 + 
 +Tot în funcția setup() se calculează temperatura de referință ca fiind suma dintre partea întreagă și partea zecimală. Asemănător se calculează și ora. 
 + 
 + 
 +În funcția **loop()** are loc citirea temperaturii,​ a umidității,​ se incrementează timpul și se fac verificările pentru ventilator(dacă trebuie să pornească sau nu), pentru detecția flăcărilor și se transmit datele prin Bluetooth.
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
 +== Funcționalitate ==
 +
 +Pentru că nu dorim ca altcineva în afară de noi să configureze ventilatorul,​ acesta are o parolă iar pentru a
 +putea porni ventilatorul trebuie mai întâi să introducem parola și să realizăm câteva configurări.
 +{{ :​pm:​prj2022:​dene:​cst_passwd.jpeg?​300|}}
 +
 +
 +
 +
 +
 +Cu ajutorul joystick-ului vom introduce parola(1234 conform setării făcute în cod) iar dacă a fost introdusă corect atunci vom trece la pasul în care setăm o temperatură de referință,​ altfel ne vom întoarce la introducerea parolei.
 +
 +{{ :​pm:​prj2022:​dene:​cst_passwd_c.jpeg?​300|}}
 +
 +
 +
 +
 +
 +
 +
 +După ce am introdus parola cu succes, se setează temperatura de referință în °C, adică temperatura de la care vrem să pornească ventilatorul,​ în cazul în care temperatura măsurată de senzor e mai mare decât aceasta, în caz contrar, ventilatorul va fi oprit.
 +
 +Pentru o precizie cât mai bună, temperatura de referință va fi un număr zecimal, astfel că mai întâi vom introduce partea întreagă și apoi partea zecimală, pentru fiecare pas făcându-se verificări ca datele să fie valide.
 +{{ :​pm:​prj2022:​dene:​cst_temp.jpeg?​300|}}
 +
 +
 +
 +Dacă datele nu sunt valide, ne întoarcem la pasul în care introducem parola.
 +
 +
 +După ce setăm temperatura de referință va fi nevoie să setăm și timpul(ora & minute), deoarece nu am avut la dispozitie un modul RTC.
 +
 +
 +
 +
 +Atât pentru oră cât și pentru minute, se introduce fiecare digit separat pentru a face verificarea ca datele să fie valide. Secundele vor fi afișate din cod.
 +
 +Dacă datele sunt incorecte ne întoarcem la pasul în care introducem parola.
 +{{ :​pm:​prj2022:​dene:​cst_time.jpeg?​300|}}
 +
 +
 +
 +
 +
 +Dacă data și minutele sunt valide atunci pe ecran se vor afișa temperatura măsurată în °C, umiditatea(în procente) și ora.
 +
 +
 +{{:​pm:​prj2022:​dene:​cst_t_h.jpeg?​300|}}
 +
 +
 +
 +
 +
 +Există 3 trepte de funcționare pentru ventilator, în funcție de diferența dintre cele două temperaturi:​
 +
 +
 +
 +  - diferența este în intervalul [0, 2) => analogWrite(MOTOR,​ 100);
 +  - diferența este în intervalul [2, 5) => analogWrite(MOTOR,​ 150);
 +  - diferența este în intervalul [5, infinit) => analogWrite(MOTOR,​ 200).
 +
 +
 +Cu ajutorul modulului Bluetooth HC-05 și al aplicației //Arduino Temp and Humidity// (din Magazin Play), vom primi următoarele informații pe telefonul mobil conectat prin bluetooth la modul: temperatura,​ umiditatea, dacă ventilatorul este on sau off și dacă senzorul a detectat sau nu flăcări.
 +
 +
 +De asemenea, în cazul în care sistemul ia foc, flacăra va fi detectată cu ajutorul senzorului pentru flăcări KY-026 iar buzzer-ul va scoate un sunet.
 +
 +Funcționarea completă poate fi vizualizată în acest demo:
 +[[https://​www.youtube.com/​watch?​v=qVJyysHzio0&​feature=youtu.be|Demo Ventilator Inteligent]]
 +
 +{{:​pm:​prj2022:​dene:​cst_n.jpeg?​200|}}
 +{{:​pm:​prj2022:​dene:​cst_app.jpeg?​200 |}}
 +
 +
 +
  
-<note tip> 
  
-</​note>​ 
  
 ===== Concluzii ===== ===== Concluzii =====
 +Am reușit să implementez funcționalitățile dorite.
  
-===== Download =====+Am întâmpinat câteva probleme la pornirea motorului deoarece pe ecran apăreau caractere random.
  
-<note warning>+După câteva încercări,​ am reușit să rezolv problema punând un condensator683 (68nF) între VCC și GND pentru a atenua spike-urile.
  
-</​note>​+ 
 + 
 +===== Download ===== 
 + 
 +{{:​pm:​prj2022:​dene:​proiect_pm_costache_andreea_alexandra_334cc.zip| Arhivă proiect}}
 ===== Jurnal ===== ===== Jurnal =====
  
Line 72: Line 229:
   * **28.04.2022** - Creare pagină wiki   * **28.04.2022** - Creare pagină wiki
   * **05.05.2022** - Achiziționare piese   * **05.05.2022** - Achiziționare piese
 +  * **12.05.2022** - Testare module și senzori
 +  * **12-23.05.2022** - Implementare,​ realizare schematic + proiect fizic
 +  * **27.05.2022** - Completare pagină wiki
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​+[[https://​docs.arduino.cc/​learn/​electronics/​lcd-displays|Ecran LCD]] 
 + 
 +[[https://​exploreembedded.com/​wiki/​Analog_JoyStick_with_Arduino|Joystick KY-023]] 
 + 
 +[[https://​arduinogetstarted.com/​tutorials/​arduino-joystick|Joystick KY-023]] 
 + 
 +[[https://​create.arduino.cc/​projecthub/​pibots555/​how-to-connect-dht11-sensor-with-arduino-uno-f4d239|Senzor temperatură și umiditate DHT11]] 
 + 
 +[[https://​diyi0t.com/​flame-sensor-arduino-esp8266-esp32/​|Senzor pentru flăcări KY-026]] 
 + 
 +[[https://​create.arduino.cc/​projecthub/​akshayjoseph666/​interfacing-bluetooth-module-hc-05-with-arduino-uno-f5209b|Modul Bluetooth]] 
 + 
 +[[https://​forum.arduino.cc/​t/​random-characters-on-lcd-while-using-a-dc-motor/​381389|Caractere random]] 
 + 
 +[[https://​forum.arduino.cc/​t/​random-characters-on-16x2-lcd-when-using-a-motor/​649738|Caractere random]] 
  
-</​note>​ 
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
  
pm/prj2022/dene/ventilatorinteligent.1653675791.txt.gz · Last modified: 2022/05/27 21:23 by andreea.costache99
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0