Differences

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

Link to this comparison view

pm:prj2025:fstancu:cristian.lazar1512 [2025/05/18 23:57]
cristian.lazar1512
pm:prj2025:fstancu:cristian.lazar1512 [2025/06/02 22:16] (current)
cristian.lazar1512 [Flow-ul programului]
Line 1: Line 1:
-====== Alarmă controlată prin voce ======+====== Alarmă controlată prin voce - Lazăr Cristian ​======
 ===== Introducere ===== ===== Introducere =====
  
Line 56: Line 56:
  
 - 5V, 3V3 sunt iesiri de 5V, respectiv 3V3. - 5V, 3V3 sunt iesiri de 5V, respectiv 3V3.
 +
 +==== Descrierea componentelor ====
 +
 +Placa arduino R3 Uno se ocupa de gestionarea sistemului, concret preluarea datelor audio de la ADC, stocarea lor intr-un buffer in SRAM-ul extern, ajustarea gain-ului in functie de ultimele N sample-uri, preluarea datelor din buffer si trimiterea lor prin WI-FI, receptionarea comenzii vocale prelucrate de la modulul WI-FI, setarea datei curente a modulului RTC, setarea alarmei in modulul RTC si sunarea buzzer-ului.
 +
 +Datele de la microfon trec prin trei stagii de prelucrare:
 +
 +- Preamplificare:​ Output-ul microfonului este amplificat de un amplificator operational configurat non inverting pentru a ajunge in jurul range-ului de -0.8V - 0.8V.
 +
 +- Automatic gain control: Un alt amplificator operational,​ acesta cu un potentiometru digital in loc de rezistenta de feedback, este folosit pentru a ajusta amplificarea in functie de noise, prim modificarea potentiometrului.
 +
 +- Filtrare: Semnalul este filtrat de catre un filtu bandpass Sallen Key la range-ul de frecvente 330Hz - 4kHz.
 +
 +Modulul WI-FI realizeaza comunicarea cu server-ul de recunoastere vocala.
 +
 +Memoria SRAM externa stocheaza datele de la microfon temporar, pana ca acestea sa fie trimise server-ului.
 +
 +Modulul RTC este folosit pentru a mentine timpul si a seta alarme.
 +
 +Buzzer-ul este folosit ca sunetul alarmei.
 +
 +Stabilizatorul de tensiune este folosit pentru a obtine tensiunea de 5V pentru alimentarea Arduino-ului.
 +
 +==== Starea proiectului ====
 +
 +In starea actuala, este implementat stabilizatorul de tensiune, evident prin faptul ca placuta arduino este alimentate. In lucru sunt prelucrarea semnalului microfonului si controlul buzzer-ului.
 +
 +{{ :​pm:​prj2025:​fstancu:​ldo_merge.jpg?​700 |}}
 +
 +==== Design Software ====
 +
 +In design-ul acestui proiect, au fost folosite bibliotecile de baza avz, impreuna cu SoftwareSerial.h pentru a trimite mesaje de logging si realizare de debugging. Stadiul actual al implementarii este incomplet, proiectul oprindu-se la trimiterea de date audio catre server-ul remote.
 +
 +==== Flow-ul programului ====
 +
 +Initial, se realizeaza initializarea un UART0 si a modulului Wi-Fi, care se conecteaza la un AP static, iar apoi deschide 2 conexiuni, una UDP si una TCP, cu server-ul remote. Se foloseste un timeout la citirea raspunsurilor de la modulul Wi-Fi in initializare si, apoi, in transmisiile de date, timeout care se realizaeza cu un timer setat sa masoare milisecunde. Dupa initializarea modulului Wi-Fi, se initializeaza ADC-ul, care ruleaza in Free Running Mode, la o frecventa de 125kHz.
 +
 +Dupa initializare,​ bucla de program asteapta ca datele de la ADC sa depaseasca un threshold de intensitate audio (media ultimelor N valori in modul citite de ADC sa fie mai mare de un threshold), apoi incepe sa socheze date intr-un buffer de 508 bytes. Cand acesta se incarca, datele sunt trimise prin UDP print-un pachet cu formatul `<​packet_index>​(4 bytes):<​data>​(508 bytes)`. Odata trimise datele, programul asteapta un acknowledgement de la server si apoi va verifica daca inca mai exista intensitate audio; daca da, va continua sa colecteze date si sa trimita pachete; daca nu, va trimite un pachet cu formatul `FFFF:<​filler>​(508 bytes)`, care indica server-ului ca a primit ultimul pachet.
 +
 +Server-ul este un program in python, care asteapta datele de la MC, apoi foloseste functionalitati din biblioteca `wave` pentru a realiza un fisier .wav, si apoi repeta pasii.
 +
 +Se remarca folosirea timer-ului pentru masurarea milisecundelor,​ a ADC-ului pentru citirea de date, si a UART-ului pentru comunicarea cu modulul Wi-Fi. Validare sistemului s-a realizat prin testare manuala a diverselor situatii de functionare.
 +
 +Calibrarea sensitivitatii microfonului s-a realizat hardware, prin schimbarea amplificarii amplificatorului operational.
  
pm/prj2025/fstancu/cristian.lazar1512.1747601855.txt.gz · Last modified: 2025/05/18 23:57 by cristian.lazar1512
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