This shows you the differences between two versions of the page.
pm:prj2023:iotelea:smartlightsystem [2023/05/17 12:36] alexandra.matei2808 |
pm:prj2023:iotelea:smartlightsystem [2023/05/30 13:37] (current) alexandra.matei2808 |
||
---|---|---|---|
Line 25: | Line 25: | ||
*Senzor ALS | *Senzor ALS | ||
*Ecran LCD | *Ecran LCD | ||
- | *Rezistori 10k | ||
*Condensator | *Condensator | ||
*Fire de legătură mamă-tată și tată-tată | *Fire de legătură mamă-tată și tată-tată | ||
*Breadboard | *Breadboard | ||
+ | *Potențiometru | ||
+ | {{ :pm:prj2023:iotelea:smartlighthardware2.jpg?700 |}} | ||
+ | |||
+ | Circuitul este controlat de Arduino UNO care este alimentat de la laptop. La pinii SCL și SDA am conectat atât senzorul termic AMG8833, cât și ecranul LCD pe care se afișează informațiile. La ecran am legat și un potențiometru pentru a putea reglat insensitatea sa luminoasă. La pinul A0 este conectat senzorul ALS pentru lumina ambientală. Controlul benzii LED se face prin intermediul PWM, cu ajutorul unui tranzistor conectat la pinul 10. Acesta funcționează ca un switch, întrerupând la nevoie tensiunea de 12V ce alimentează banda LED. Am folosit o sursă de tensiune externă, deoarece Arduino UNO nu poate oferi o tensiune mai mare de 5V și nici puterea necesară. Firele de culoare roșie și neagră sunt de alimentare. | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Am declarat global adresa I2C a ecranului LCD, threshold-ul temperaturii de la care se va detecta prezenta unei persoane(setat la 26 grade celsius, conform recomandărilor producătorului), senzorul de temperatura GridEye și matricea de temperaturi folosită de acesta. | ||
+ | |||
+ | În cadrul funcției **setup()** se initializeaza libraria Wire, iar apoi se permite comunicarea cu ecranul LCD prin interfața serială. Tot aici se initializeaza ecranul LCD si senzorul de temperatura matriceal impreuna cu stabilirea modului de utilizare a pinilor de input si output. | ||
+ | |||
+ | În funcția principală **loop()** se cauta prezenta si pozitia unei persoane in camera. | ||
+ | Matricea de temperaturi citita de senzorul termic este suprapusa peste planul camerei. Pozitia unei persoane in camera este deteminata prin functia **getPosition()** care imparte matricea(**tempPixelTable[8][8]**) in 4 zone egale iar apoi **initTemperatureMatrix()** determina daca temperatura citita trece de tresholdul setat. | ||
+ | |||
+ | |||
+ | Realizare și încărcarea codului pe plăcuța Arduino s-a făcut cu ajutorul aplicației Arduino. Bibliotecile folosite au fost SparkFun_GridEYE_Arduino_Library.h(pentru senzorul AMG8833), Wire.h(pentru comunicarea cu dispozitivele I2C) și LiquidCrystal_I2C.h(pentru ecranul LCD cu modul I2C). | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
+ | |||
+ | Design-ul hardware și software se concluzionează într-un sistem inteligent de control al luminii, prin care putem salva o cantitate considerabilă de energie de-a lungul timpului, la un cost minim de implementare. | ||
+ | |||
+ | {{ :pm:prj2023:iotelea:smartlighthardware1.jpg?700 |}} | ||
+ | |||
+ | [[https://youtu.be/55ojUJjlHk8|Demo YouTube]] | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | |||
+ | Proiectul a fost o adevărată provocare în cadrul căreia m-am lovit de multiple probleme pe care nu le-am prevăzut la început. Banda LED a avut nevoie de o tensiune de alimentare considerabil mai mare decât ceea ce putea oferi Arduino, motiv pentru care am adăugat un tranzistor la care am legat o nouă sursă de tensiune și banda LED, tranzistor pe care îl deschid atunci când banda trebuie aprinsă. De asemenea, atunci când am ales această bandă LED nu am luat în considerare că are componente RGB și lumina albă este practic formată din 3 led-uri colorate, nu dintr-un led alb, motiv pentru care atunci când o controlez prin PWM, lumina nu este perfect albă. Un alt impediment a fost că am conectat ecranul și nu reușeam să citesc nimic din ce afișam din cauza luminozității prea mici, astfel a trebuit să adaug un potențiometru prin care să o controlez. Tot legat de ecran, m-am lovit și de afișarea unor caractere random pe lângă cele dorite, iar după mult debugging, verificat fire și circuit și căutat pe internet am ajuns la concluzia că funcția de printare folosită era de vină. | ||
+ | |||
+ | Realizarea proiectului a fost o experință plăcută și distractivă și mă bucur că am avut ocazia să fac o temă practică, hands-on, ce a avut la bază un subiect ce mă pasionează. | ||
===== Download ===== | ===== Download ===== | ||
+ | |||
+ | {{:pm:prj2023:iotelea:proiect_pm_mae.zip|}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
- | 29 aprilie 2023 - Am creat pagina de OCW | + | *29 aprilie 2023 - Am creat pagina de OCW |
- | 7 mai 2023 - Am adăugat Introducerea, Descrierea generală, Schema bloc, Design-ul hardware | + | *7 mai 2023 - Am adăugat Introducerea, Descrierea generală, Schema bloc, Design-ul hardware |
+ | *21 mai 2023 - Am adăugat toate detaliile de implementare Hardware | ||
+ | *29 mai 2023 - Am adăugat toate detaliile de implementare Software și Rezultate și Concluzii | ||
Line 46: | Line 72: | ||
- | <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">SmartLightSystem.pdf</a></html> |
+ | *[[https://ocw.cs.pub.ro/courses/pm/lab/lab1-2023|Laboratorul 1 PM]] | ||
+ | *[[https://ocw.cs.pub.ro/courses/pm/lab/lab3-2023|Laboratorul 3 PM]] | ||
+ | *[[https://ocw.cs.pub.ro/courses/pm/lab/lab6-2023|Laboratorul 6 PM]] | ||
+ | *[[https://learn.adafruit.com/adafruit-amg8833-8x8-thermal-camera-sensor/arduino-wiring-test|Senzor AMG8833]] | ||