This shows you the differences between two versions of the page.
pm:prj2024:avaduva:adrian.dumitrache02 [2024/05/13 21:01] adrian.dumitrache02 [Bibliografie/Resurse] |
pm:prj2024:avaduva:adrian.dumitrache02 [2024/05/24 23:09] (current) adrian.dumitrache02 [Download] |
||
---|---|---|---|
Line 48: | 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 58: | 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 | * **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**. Evident, aici pot aparea erori daca geolocatia IP-ului este una eronata. Spre exemplu, cand 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, scheme, etc. Un 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 Alin, 331CC -> **: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 plus, exista 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 ===== | ||