This is an old revision of the document!
Autor: Bogdan Ciobanu
Grupa: 335CA
Scopul proiectului este implementarea unui senzor de vibratii, optimizat pentru frecventele cutremurelor, care sa afiseze pe un display o seismograma, si sa alerteze sonor in cazul in care se depaseste un anumit prag.
Senzorul de vibratii va fi un senzor piezoelectric ceramic, lipit pe capacul unei sticle.
Scopul este de a amplifica vibratiile de frecvente foarte joase, specifice cutremurelor.
Output-ul modulului de senzor va fi afisat pe un display e-ink, fiind o piesa ce consuma
curent putin si nu emite lumina. In ultimul rand, alerta sonora va fi pornita in momentul
in care vibratiile trec de un prag predefinit, moment in care se va porni un buzzer pasiv
la o frecventa inalta, astfel incat sa alerteze oamenii din jur.
Lista de componente:
Dat fiind numarul relativ mic de conexiuni, nu a fost nevoie sa folosesc un breadboard sau
placuta de prototipare, ci am conectat toate piesele direct la Arduino, utilizand majoritatea
pinilor disponibili.
TODO poze
In setup()
se initializeaza pinii, timer-ul si objectul e-paper display. Exista o perioada de initializare a memoriei interne display-ului, care dureaza aproximativ 3 secunde, in care display-ul face flicker.
In loop()
se verifica daca s-a ajuns in punctul de updatare a display-ului, caz
in care va desena graficul. In afara de asta, va trimite curent catre buzzer in cazul in care bit-ul de ring_buzzer
este setat pe true.
In acest timp, Timer 1 e setat la o frecventa de 21 de hz, care e frecventa la care am ales sa fac sampling de la senzorul piezo. Aceasta frecventa e data de faptul ca am un buffer de 64 de elemente pentru valorile venite de la senzor, iar in momentul in care buffer-ul se umple, generez graficul si il trimit catre display, fiind cantitatea maxima de date care ar putea incapea pe display care sa fie si lizibila. Asadar, la fiecare 46ms se apeleaza functia add_value
, care preia valoarea obtinuta de la senzor, calculeaza un offset fata de rolling-average-ul buffer-ului (acest pas este necesar datorita zgomotului inerent senzorului, acesta fiind destul de sensibil). Dupa acesta, se verifica daca acest offset trece de un prag prestabilit, caz in care ring_buzzer
e setat pe true. La final, se verifica daca s-a facut loop-around pe buffer, caz in care se seteaza si flag-ul draw_pending
.
TODO
TODO
TODO
25 Apr 2021: Created page, added hardware design image
Seismograf TODO