This shows you the differences between two versions of the page.
pm:prj2024:sseverin:bianca.popa1106 [2024/05/25 18:14] bianca.popa1106 [Descriere generală] |
pm:prj2024:sseverin:bianca.popa1106 [2024/05/26 18:25] (current) bianca.popa1106 [Software Design] |
||
---|---|---|---|
Line 2: | Line 2: | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | Proiectul își propune prezentarea unui asistent personal, care oferă diverse informații și include un sistem de alarmă. Asistentul personal îți detectează prezența și îți va prezenta informații despre starea camerei în care se află pe mai multe pagini, prin care poți naviga cu ajutorul butoanelor. De asemenea, asistentul personal va trece automat în dark mode în momentul în care detectează întuneric în cameră. | + | Proiectul își propune prezentarea unui asistent personal conectat prin Bluetooth la telefon, care afișează diverse informații și include un sistem de alarmă. Asistentul personal îți detectează prezența și îți va prezenta informații despre starea camerei în care se află pe mai multe pagini, prin care poți naviga cu ajutorul butoanelor. De asemenea, asistentul personal va trece automat în dark mode în momentul în care detectează întuneric în cameră. |
Ideea proiectului a pornit de la dorința de a folosi un display E-Paper, care va fi, de asemenea, și centrul de interes al acestuia. Pornind de la acest display, mi-am dorit să construiesc un proiect care să micșoreze timpul petrecut în fața calculatorului, prin afișarea constantă a diferitor informații de interes ale utilizatorului. | Ideea proiectului a pornit de la dorința de a folosi un display E-Paper, care va fi, de asemenea, și centrul de interes al acestuia. Pornind de la acest display, mi-am dorit să construiesc un proiect care să micșoreze timpul petrecut în fața calculatorului, prin afișarea constantă a diferitor informații de interes ale utilizatorului. | ||
Line 8: | Line 8: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | Asistentul personal afișează informațiile necesare pe display-ul E-Paper, pe mai multe pagini, prin care se poate naviga cu ajutorul butoanelor prev și next. Proiectul are la bază un microcontroller ESP32, la care este legat un modul BME280 cu senzori de temperatură, umiditate și presiune, un senzor ultrasonic HC-SR04, un mini difuzor și un fotorezistor. Modulul BME280 este utilizat pentru obținerea informațiilor despre starea camerei, senzorul ultrasonic va detecta prezența utilizatorului și va afișa un mesaj pe display, fotorezistorul asigură trecerea în dark mode, iar mini difuzorul permite incorporarea sistemului de alarme. | + | Asistentul personal afișează informațiile necesare pe display-ul E-Paper, pe mai multe pagini, prin care se poate naviga cu ajutorul butoanelor prev și next. Proiectul are la bază un microcontroller ESP32, la care este legat un modul BME280 cu senzori de temperatură, umiditate și presiune, un senzor ultrasonic HC-SR04, un mini difuzor și un fotorezistor. Modulul BME280 este utilizat pentru obținerea informațiilor despre starea camerei, senzorul ultrasonic va detecta prezența utilizatorului și va afișa un mesaj pe display, fotorezistorul asigură trecerea în dark mode, iar mini difuzorul permite incorporarea sistemului de alarmă. |
{{:pm:prj2024:sseverin:pm_popabianca.drawio.png?700|700}} | {{:pm:prj2024:sseverin:pm_popabianca.drawio.png?700|700}} | ||
Line 31: | Line 31: | ||
{{:pm:prj2024:sseverin:schematic_popabianca.png?800|800}} | {{:pm:prj2024:sseverin:schematic_popabianca.png?800|800}} | ||
- | Poze proiect: | + | Cutia realizată pentru proiect: |
{{ :pm:prj2024:sseverin:proiect_popabianca.jpg?400 |}} | {{ :pm:prj2024:sseverin:proiect_popabianca.jpg?400 |}} | ||
Line 38: | Line 38: | ||
{{ :pm:prj2024:sseverin:cablaj_popabianca.jpg?400 |}} | {{ :pm:prj2024:sseverin:cablaj_popabianca.jpg?400 |}} | ||
+ | |||
+ | Circuitul înainte de realizarea cablajului imprimat: | ||
+ | |||
+ | {{ :pm:prj2024:sseverin:circuit_popabianca.jpg?400 |}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Mediul de dezvoltare folosit este Arduino IDE, iar bibliotecile incluse sunt: | ||
+ | * pentru modulul BME280: Adafruit_Sensor.h și Adafruit_BME280.h | ||
+ | * pentru display: GxEPD2_BW.h, GxEPD2_display_selection_new_style.h și Fonts/FreeMonoBold9pt7b.h | ||
+ | * pentru conexiunea prin Bluetooth: BluetoothSerial.h | ||
+ | * pentru buzzer am inclus header-ul pitches.h, care conține definirea notelor ce vor fi utilizate de acesta. | ||
- | <note tip> | + | Proiectul conține 3 pagini ce afișează informații diverse, prin care se poate naviga utilizând butoanele prev și next, și o pagină pentru oprirea display-ului, care se afișează utilizând switch-ul on/off. Pentru comunicarea cu display-ul E-Paper s-a folosit protocolul SPI, iar cele 3 butoane sunt controlate folosind întreruperi. Fotorezistorul controlează trecerea în dark mode/light mode în funcție de luminozitatea din cameră și este integrat în proiect folosind ADC. |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | Prima pagină conține informațiile primite de la modulul BME280 (temperatură, umiditate, presiune, altitudine), cu care s-a realizat comunicarea folosind protocolul I2C. Informațiile sunt rescrise odată la 2 minute, folosind un timer. |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | A doua pagină comunică cu senzorul ultrasonic, care, în momentul în care detectează prezența utilizatorului, generează un mesaj pe display. Pagina afișează odată la 5 minute, folosind un timer, un citat, precum și autorul și cartea din care este preluat. |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | A treia pagină reprezintă un TODO list ce poate fi completat folosind aplicația Serial Bluetooth de pe telefonul conectat prin Bluetooth la ESP32. Pe lângă adăugarea de task-uri, este posibilă și ștergerea acestora, iar fiecare schimbare este însoțită de o notificare audio, folosind buzzer-ul controlat prin PWM. |
+ | |||
+ | Pentru debug am folosit interfața serială USART. | ||
+ | |||
+ | |||
+ | În funcția setup() realizez următoarele: | ||
+ | * inițializarea display-ului | ||
+ | * configurarea pinilor pentru butoane și senzorul ultrasonic | ||
+ | * inițializarea modulului BME280 | ||
+ | * inițializarea comunicării Bluetooth | ||
+ | |||
+ | În funcția loop() se realizează următorul curs de execuție: | ||
+ | * citirea valorii de la fotorezistor (dacă aceasta scade sub un prag setat, atunci se face trecerea în dark mode/ dacă crește peste acel prag se face trecerea în light mode) | ||
+ | * se verifică dacă vreunul dintre cele 3 butoane a fost apăsat și se execută acțiunea corespunzătoare fiecăruia (next - se trece la următoarea pagină, prev - se trece la pagina anterioară, power - se trece la pagina de oprire/pornire) | ||
+ | * se verifică pagina curentă și se realizează afișarea ei cu funcționalitățile descrise anterior. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | Pentru rezultate, am adăugat câte o poză cu fiecare pagină prezentată: |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | {{ :pm:prj2024:sseverin:rezultate_popabianca.jpg?500 |}} |
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Pot spune că sunt foarte încântată de rezultatele obținute, mai ales că este primul proiect hardware atât de complex la care am lucrat. Deși realizarea lui a durat destul de mult timp (+ o bună parte din vacanța de Paște :-|), am lucrat la el cu plăcere și consider că am învățat multe din greșelile pe care le-am făcut. Mi se pare că proiectul are un bun potențial de extindere și, pe viitor, poate voi reuși să îi adaug pagini cu alte noi funcționalități. | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | {{:pm:prj2024:sseverin:popa_bianca-asistent_personal.zip|}} |
- | 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**. | ||
- | </note> | ||
- | |||
- | ===== Jurnal ===== | ||
- | |||
- | <note tip> | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
- | </note> | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | * [[https://docs.rs-online.com/308c/A700000008916343.pdf]] |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * [[https://www.waveshare.com/w/upload/b/b6/7.5inch-e-paper-specification.pdf]] |
- | </note> | + | * [[https://cdn-learn.adafruit.com/downloads/pdf/adafruit-bme280-humidity-barometric-pressure-temperature-sensor-breakout.pdf]] |
+ | * [[https://www.handsontec.com/dataspecs/HC-SR04-Ultrasonic.pdf]] | ||
+ | * [[https://hackaday.io/project/189708-esp32-e-paper-weather-display]] | ||
<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> | ||
- |