Asistent personal

Introducere

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.

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 alarmă.

700

Hardware Design

Componente folosite:

800

Cutia realizată pentru proiect:

Cablajul imprimat a fost realizat folosind un cablaj de cupru dublu placat, clorură ferică și un marker pentru cablaj. Acesta are două linii principale, una pentru 3V3 și una pentru GND, aduse de pe microcontroller și la care sunt legate componentele. Pe cablaj am mutat și circuitele fotorezistorului și difuzorului, pentru care am făcut un amplificator folosind tranzistorul BD139. La baza acestuia am legat pinul 2 al microcontrollerului și o rezistență de 270K, colectorul este legat la un condensator de 1000uF și o rezistență de 1K, iar emitorul este conectat direct la GND.

Circuitul înainte de realizarea cablajului imprimat:

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.

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.

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.

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.

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

Pentru rezultate, am adăugat câte o poză cu fiecare pagină prezentată:

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

Bibliografie/Resurse

pm/prj2024/sseverin/bianca.popa1106.txt · Last modified: 2024/05/26 18:25 by bianca.popa1106
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