This is an old revision of the document!


Seismograf

Autor: Bogdan Ciobanu
Grupa: 335CA

Introducere

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.

Descriere generală


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.

Hardware Design

Lista de componente:

  1. 1xArduino UNO R3
  2. 1xBuzzer
  3. 1xSenzor piezoelectric
  4. 1xDisplay e-ink 1.54inch
  5. Fire

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

Software Design

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.

Rezultate obtinute

TODO

Concluzii

TODO

Download

TODO

Jurnal

25 Apr 2021: Created page, added hardware design image

Bibliografie/Resurse

Seismograf TODO

pm/prj2021/alazar/seismograf.1622473322.txt.gz · Last modified: 2021/05/31 18:02 by bogdan.ciobanu1201
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