Differences

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

Link to this comparison view

pm:prj2024:avaduva:adrian.dumitrache02 [2024/05/13 17:18]
adrian.dumitrache02 [Jurnal]
pm:prj2024:avaduva:adrian.dumitrache02 [2024/05/24 23:09] (current)
adrian.dumitrache02 [Download]
Line 1: Line 1:
 ====== Smart mirror ====== ====== Smart mirror ======
 ===== Introducere ===== ===== Introducere =====
-Proiectul consta intr-o oglinda ​"smart" ​ce afiseaza diverse informatii prin intermediul unui ecran LCD. Aceste informatii includ: ora actuala, vremea de afara si umiditatea camerei, cat si sfaturi bazate pe acestea (e.g. ai nevoie de o jacheta daca iesi din casa, umiditatea camerei tale este prea mica pentru temperatura de afara). Informatia afisata se poate cicla prin intermediul unui buton.+ 
 +**Autor**: Dumitrache Adrian-George 
 + 
 +**Grupa**: 334CC 
 + 
 +Proiectul consta intr-o ​**oglinda smart** ce afiseaza diverse informatii prin intermediul unui **ecran LCD**. Aceste informatii includ: ​**ora** actuala, ​**vremea** de afara si **umiditatea** camerei, cat si **sfaturi** bazate pe acestea (e.g. ai nevoie de o jacheta daca iesi din casa, umiditatea camerei tale este prea mica pentru temperatura de afara). Informatia afisata se poate cicla prin intermediul unui **buton**.
  
 Dispozitivul este perfect pentru diminetile pe fuga in care iti faci rutina de par/machiaj si ai nevoie sa nu pierzi din vedere ora actuala, cat si daca ai nevoie sa iei decizii rapide legate de vestimentatie. Dispozitivul este perfect pentru diminetile pe fuga in care iti faci rutina de par/machiaj si ai nevoie sa nu pierzi din vedere ora actuala, cat si daca ai nevoie sa iei decizii rapide legate de vestimentatie.
Line 8: Line 13:
 ===== Descriere generală ===== ===== Descriere generală =====
  
-La baza, avem un microcontroler cu Wifi ce preia informatii prin cereri de API pentru vreme si citeste valori de la hardware clock si senzorul de umiditate. Aceste informatii sunt afisate prin display-ul LCD, informatia afisata poate fi schimbata prin apasarea unui buton.+La baza, avem un **microcontroler cu Wifi** ce preia informatii prin **cereri de API** pentru vreme si citeste valori de la hardware clock si senzorul de umiditate. Aceste informatii sunt afisate prin display-ul LCD, informatia afisata poate fi schimbata prin apasarea unui buton.
  
 {{https://​i.imgur.com/​ONunQQt.png}} {{https://​i.imgur.com/​ONunQQt.png}}
  
-Display-ul se afla in spatele unei bucati de sticla pe care este aplicata folie cu efect one way mirror ce permite lumina sa treaca prin spatele ei si pastreaza efectul de oglinda in fata. Fenomenul poate fi observat cel mai bine prin imagine:+Display-ul se afla in spatele unei **bucati de sticla** pe care este aplicata ​**folie cu efect one way mirror** ce permite lumina sa treaca prin spatele ei si pastreaza efectul de oglinda in fata. Fenomenul poate fi observat cel mai bine prin imagine:
  
 {{https://​s13emagst.akamaized.net/​products/​68466/​68465870/​images/​res_16ff729f780af3754a87005091a8cb2f.jpg?​width=720&​height=720&​hash=1DD132BFFC1BA377916820EC93E0130D}} {{https://​s13emagst.akamaized.net/​products/​68466/​68465870/​images/​res_16ff729f780af3754a87005091a8cb2f.jpg?​width=720&​height=720&​hash=1DD132BFFC1BA377916820EC93E0130D}}
 ===== Hardware Design ===== ===== Hardware Design =====
  
-Am ales o placuta de dezvoltare cu un modul ESP8266 ce are Wifi deja integrat, un display cat mai puternic care sa poate sa produca destula lumina cat sa treaca prin oglinda si componente standard pentru umiditate si ceas.+Am ales o placuta de dezvoltare cu un microcontroller ​ESP8266 ce are Wifi deja integrat, un display cat mai puternic care sa poate sa produca destula lumina cat sa treaca prin oglinda si componente standard pentru umiditate si ceas.
  
 ==Lista componente== ==Lista componente==
Line 43: Line 48:
  
 {{https://​i.imgur.com/​Olv8iak.jpeg?​600x450}} {{https://​i.imgur.com/​Olv8iak.jpeg?​600x450}}
 +
 +Oglinda in sine:
 +{{https://​i.imgur.com/​auBRUlT.jpeg?​768x1024}}
 +
  
 ==Schematic== ==Schematic==
Line 53: Line 62:
 Am abuzat de faptul ca placuta mea este compatibila cu Arduino IDE din deplin. Astfel, folosesc **Arduino IDE** si urmatorele biblioteci pentru Arduino: Am abuzat de faptul ca placuta mea este compatibila cu Arduino IDE din deplin. Astfel, folosesc **Arduino IDE** si urmatorele biblioteci pentru Arduino:
   * **ESP8266** pentru Wifi si cereri HTTP   * **ESP8266** pentru Wifi si cereri HTTP
 +  * **WiFi Manager** pentru a servi o pagina web ce ajuta la setup-ul oglinzii
 +  * **Arduino JSON** pentru manipulare date primite de la API-uri
   * **AdaFruit ILI9341** pentru display si **AdaFruit GFX** pentru a scrie la display   * **AdaFruit ILI9341** pentru display si **AdaFruit GFX** pentru a scrie la display
-  * **DHT Sensor Library** pentru comunicare cu senzorul de umiditate+  * **Simple ​DHT** pentru comunicare cu senzorul de umiditate
   * **DS3231** pentru RTC   * **DS3231** pentru RTC
 +  * **Clock** pentru a pastra evidenta timpului dupa citirea initiala de la RTC (mai simplu decat sa citim de o mie de ori de la ceas)
  
-===== Rezultate Obţinute =====+Arhitectura de baza a software-ului este strans legata de ce trebuie afisat la ecran, astfel avem urmatoare **masina de stari**: 
 +{{https://​i.imgur.com/​wk4upUl.png}}
  
-<note tip> +In starea **loading screen** se realizeaza: 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +  * setupul tuturor obiectelor din diversele biblioteci folosite 
-</​note>​+  * conectarea la Wifi 
 +  * citirea unor valori initiale de la senzori
  
-===== Concluzii =====+Prima data cand oglinda este folosita, aceasta are nevoie de un mic setup din partea utilizatorului,​ mai exact trebuie configurata **reteaua WiFi** la care se va conecta oglinda. Pentru acest lucru oglinda va deschide un access point numit **SmartMirrorAP** la care se pot care utilizatorul trebuie sa se conecteze de pe telefon/​calculator,​ in aceasta retea este servita o pagina web la adresa IP **192.168.4.1** in care utilizatorul poate alege reteaua dorita: 
 +{{https://​i.imgur.com/​q8CqUwX.png?​800x500}}
  
-===== Download =====+Dupa setup-ul initial, oglinda se va conecta automat reteaua aleasa in urma unui restart.
  
-<note warning>​ +Starea **weather** prezinta informatii despre vreme de pe **OpenWeatherMap** si un sfat pentru o vestimentatie adecvata. Pentru a determina **locatia** despre care sa preluam informatii ​este folosita **geolocatia IP-ului**. Evidentaici pot aparea erori daca geolocatia IP-ului este una eronataSpre exemplucand conectezez oglinda la datele mele mobile am un IP cu geolocatie ​de Brasov.
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, schemeetcUn fişier README, un ChangeLog, un script ​de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+
  
-Fişierele se încarcă pe wiki folosind facilitatea ​**Add Images or other files**. Namespace-ul în care se încarcă fişierele ​este de tipul **:​pm:​prj20??:​c?​** ​sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul)**Exemplu:​** Dumitru Alin331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +Starea ​**humidity info** prezinta procentul de umiditate al camerei si determina daca acest procent ​este adecvat vremii ​de afara sau nu In plusexista si o logica interna de loading deoarece citirile de la senzorul de umiditate sunt lente si inconsistente,​ fiind posibil ​ sa dureze peste 10 secunde de la pornire pana se face o citire cu succes.
-</​note>​+
  
 +Starea **time and date** prezinta ora si data actuala, acestea se actualizeaza la fiecare minut.
 +
 +Am abordat urmatoarele subiecte de laborator:
 +  * **intreruperi**
 +  * **SPI** pentru display
 +  * **I2C** pentru RTC
 +  * **GPIO** pentru buton
 +
 +===== Rezultate Obţinute =====
 +
 +Demo software: https://​youtu.be/​XXP2upEUx5Y
 +
 +Demo produs final: https://​youtu.be/​awK3mPZTxls
 +===== Concluzii =====
 +
 +A fost foarte distractiv si cred ca o sa folosesc aceasta oglinda in continuare. Ar merge extinsa si mai mult, eventual cu o metoda mai smart de a schimba intre ecrane (ma gandeam la un senzor de gesturi), double buffering la ecran si mai multe ecrane.
 +===== Download =====
 +[[https://​www.dropbox.com/​scl/​fi/​yp7gtr9v38cguhgycn2e4/​proiect_pm.ino?​rlkey=rnyrvutzbl0itycblg8nvhmec&​st=at5926zz&​dl=0|Cod sursa]]
 ===== Jurnal ===== ===== Jurnal =====
   * 12 mai pe la ora 12: mi-au venit toate piesele, optimus digital mi-a trimis display-ul gresit, aia e ne descurcam   * 12 mai pe la ora 12: mi-au venit toate piesele, optimus digital mi-a trimis display-ul gresit, aia e ne descurcam
   * 12 mai pe la ora 23: am legat si am testat tot mai putin RTC-ul, pentru care nu am deocamdata o baterie CR2032 (ma voi duce in piata sa cumpar probabil) ​   * 12 mai pe la ora 23: am legat si am testat tot mai putin RTC-ul, pentru care nu am deocamdata o baterie CR2032 (ma voi duce in piata sa cumpar probabil) ​
   * 13 mai: am scris documentatia hardware, am actualizat putin schematic-ul pentru ca n-am legat lucrurile cum am crezut ca o sa le leg si am facut si un symbol dragut pentru placuta   * 13 mai: am scris documentatia hardware, am actualizat putin schematic-ul pentru ca n-am legat lucrurile cum am crezut ca o sa le leg si am facut si un symbol dragut pentru placuta
 +  * 23 mai: am scris si documentat ideea de baza de software, ramane de lipit totul la oglinda si eventual imbunatatit codul pana la PM fair :)
 +  * 24 mai: am atasat totul la oglinda si am facut niste imbunatatiri la partea de software (e.g: access point pentru configurare)
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
Line 85: Line 118:
 <​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>​
  
 +=== Resurse hardware === 
 +  * [[https://​www.makershop.de/​download/​d1-wifi-esp8266-board.pdf|Wemos D1 R2 datasheet]] 
 +  * [[http://​www.nihamkin.com/​2016/​03/​04/​connecting-esp8266-with-ili9341-tft-display/​|Tutorial conectare display la ESP8266]]
pm/prj2024/avaduva/adrian.dumitrache02.1715609937.txt.gz · Last modified: 2024/05/13 17:18 by adrian.dumitrache02
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