Differences

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

Link to this comparison view

pm:prj2021:alazar:seismograf [2021/05/31 18:02]
bogdan.ciobanu1201
pm:prj2021:alazar:seismograf [2021/05/31 20:31] (current)
bogdan.ciobanu1201
Line 7: Line 7:
 care se depaseste un anumit prag. care se depaseste un anumit prag.
 === Descriere generală=== === Descriere generală===
-{{:​pm:​prj2021:​alazar:​image_2021-04-25_004823.png?​700x560|}}\\+{{:​pm:​prj2021:​alazar:​diagrama_bloc_seismograf.png?​700x560|}}\\ 
 Senzorul de vibratii va fi un senzor piezoelectric ceramic, lipit pe capacul unei sticle. 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. Scopul este de a amplifica vibratiile de frecvente foarte joase, specifice cutremurelor.
Line 26: Line 27:
 pinilor disponibili. pinilor disponibili.
 {{:​pm:​prj2021:​alazar:​eagle-schema_seismograf.png?​600x700|}}\\ {{:​pm:​prj2021:​alazar:​eagle-schema_seismograf.png?​600x700|}}\\
-TODO poze 
 === Software Design=== === 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 ''​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 ''​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 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, 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''​.\\ 
-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''​.\\ +---- 
 +Pe partea de display, acesta are o biblioteca cu functionalitati limitate pentru Arduino, data fiind memoria mica de care dispune microcontroller-ul. Aproximativ jumatate din memoria RAM e utilizata de obiect-ul epaper-display,​ cu ajutorul caruia se poate comunica prin SPI cu display-ul. In momentul in care flag-ul ''​draw_pending''​ e setat, se apeleaza functia ''​draw_graph''​. Aceasta va updata o arie de 50x136 pixeli de pe display cu graficul aferent buffer-ului de la senzor. Deoarece display-ul are un DPI destul de mare, ca liniile graficului sa fie clar vazute, acestea sunt practic cvadruplate pe toate 4 directiile, un pixel din grafic fiind inconjurat mereu de alti 4 pe directiile sus-jos-stanga-dreapta. Acest QoL trick vine totusi cu un cost al numarului de sample-uri care incape pe display, intrucat daca acesta nu ar fi fost aplicat, am observat ca empiric ar fi incaput aproximativ 150 de sample-uri in acea arie de pe display, la costul lizibilitatii. ​
 === Rezultate obtinute=== === Rezultate obtinute===
-TODO+Toate componentele asamblate arata in acest fel:\\ 
 +{{:​pm:​prj2021:​alazar:​ansamblu_seismograf.jpeg?​500|}}\\ 
 +Graficul pe display:​\\ 
 +{{:​pm:​prj2021:​alazar:​display_seismograf.jpeg?​500|}}\\ 
 + 
 +La acest [[https://​drive.google.com/​drive/​folders/​1_GL5z8aRfghuG1WuhvAOISKdUJdCx3Kg?​usp=sharing|link]],​ se poate vizualiza un demo al functionalitatii proiectului.
 === Concluzii=== === Concluzii===
-TODO+A fost o experienta foarte buna sa lucrez hands-on pe Arduino, si am avut ocazia sa imi consolidez informatiile obtinute la curs si laborator. Probabil cea mai complicata parte a proiectului a fost lucrul cu display-ul, data fiind resursele reduse ale microcontroller-ului. De asemenea, o alta provocare a fost gasirea unei solutii pentru eliminarea zgomotului de la senzor, care sa fie memory and CPU friendly.
 === Download=== === Download===
-TODO+{{:​pm:​prj2021:​alazar:​proiect_seismograf.zip|Cod Sursa}}
 === Jurnal=== === Jurnal===
-25 Apr 2021: Created page, added hardware design image+25 Apr 2021: Created page, added hardware design image\\ 
 +20 Mai 2021: Finalizare proiect fizic\\ 
 +31 Mai 2021: Adaugat sectiune Hardware Design, adaugat schema EAGLE\\ 
 +31 Mai 2021: Adaugat sectiune Software Design\\ 
 +31 Mai 2021: Adaugat sectiuni Rezultate & Concluzii\\
 === Bibliografie/​Resurse=== === Bibliografie/​Resurse===
-<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Seismograf</​a></​html>​ +<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Seismograf</​a></​html>​\\ 
-TODO+[[https://​www.waveshare.com/​wiki/​1.54inch_e-Paper_Module|Documentatie Display]]
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