Differences

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

Link to this comparison view

pm:prj2024:iotelea:dragos.filipescu [2024/05/19 15:56]
dragos.filipescu [Descriere generală]
pm:prj2024:iotelea:dragos.filipescu [2024/05/28 21:07] (current)
dragos.filipescu [Software Design]
Line 8: Line 8:
 ===== Introducere ===== ===== Introducere =====
  
-Un seismograf este un aparat care măsoară și înregistrează mișcările solului, în scopul analizei mișcărilor seismice provocate de cutremure de pământ, explozii și alte surse. Scopul acestui proiect este implementarea unui astfel de aparat pentru uz personal, al carui functie principala va fi avertizarea persoanelor de cutremure sufcient de puternice, pentru ca acestea sa poata lua masurile corespunzatoare.+Un seismograf este un aparat care măsoară și înregistrează mișcările solului, în scopul analizei mișcărilor seismice provocate de cutremure de pământ, explozii și alte surse. Scopul acestui proiect este implementarea unui astfel de aparat pentru uz personal, al carui functie principala va fi avertizarea persoanelor de cutremure sufcient de puternice, pentru ca acestea sa poata lua masurile corespunzatoare, precum si scrierea masuratorilor pe un mediu de stocare extern (un card SD in acest caz), pentru o posibila analiza asupra lor.
 ===== Descriere generală ===== ===== Descriere generală =====
  
-{{ :​pm:​prj2024:​iotelea:​schema_bloc_seismograf.png |}}+{{ :​pm:​prj2024:​iotelea:​schema_bloc_seismograf.drawio.png?​direct&​600 ​|}}
  
-La pornirea placutei, accelerometrul va lua un numar de masuratori pentru a determina acceleratiile initiale, fata de care va calcula modificari ale acceleratiilor pe cele 3 axe pentru a determina intensitatea unui cutremur.+La pornirea placutei, ​se vor initializa display-ul LCD si cardul SD, iar accelerometrul va lua un numar de masuratori pentru a determina acceleratiile initiale, fata de care va calcula modificari ale acceleratiilor pe cele 3 axe pentru a determina intensitatea unui cutremur.
  
 Dupa terminarea fazei de "​calibrare",​ placa va cere continuu date de la accelerometru,​ si va face diferenta intre ele si masuratorile initiale pentru a determina intensitatea unui cutremur. Daca intensitatea cutremurului este considerata suficient de mare, placa va activa un buzzer pentru a alerta persoanele din jur. De asemenea, placa va afisa, pe un  display LCD, un grafic prin care sa se poata vizualiza activitatea seismica masurata, si va scrie periodic masuratorile pe un card SD. Dupa terminarea fazei de "​calibrare",​ placa va cere continuu date de la accelerometru,​ si va face diferenta intre ele si masuratorile initiale pentru a determina intensitatea unui cutremur. Daca intensitatea cutremurului este considerata suficient de mare, placa va activa un buzzer pentru a alerta persoanele din jur. De asemenea, placa va afisa, pe un  display LCD, un grafic prin care sa se poata vizualiza activitatea seismica masurata, si va scrie periodic masuratorile pe un card SD.
  
-Determinarea intensitatii activitaii seismice se va face conform acestui tabel de pe Wikipedia:+<​note>​ 
 + 
 +Determinarea intensitatii activitaii seismice se face conform acestui tabel de pe Wikipedia:
  
 [[https://​en.wikipedia.org/​wiki/​Peak_ground_acceleration#​Correlation_with_the_Mercalli_scale.]] [[https://​en.wikipedia.org/​wiki/​Peak_ground_acceleration#​Correlation_with_the_Mercalli_scale.]]
  
 +</​note>​
 ===== Hardware Design ===== ===== Hardware Design =====
  
Line 26: Line 29:
   * 1x Arduino UNO   * 1x Arduino UNO
   * 1x Accelerometru ADXL345   * 1x Accelerometru ADXL345
-  * 1x Display LCD +  * 1x Display LCD Adafruit ILI9431 cu slot de card SD 
-  * 1x Card SD+  * 1x Card SD Hama de 32GB 
 +  * 1x LED 
 +  * 1x Rezistenta de 200Ω
   * 1x Buzzer   * 1x Buzzer
   * 1x Breadboard   * 1x Breadboard
   * Cabluri   * Cabluri
  
-**Schema ​electrica**+**Schema ​hardware**
  
-{{ :​pm:​prj2024:​iotelea:​seismograf_schem.png?​direct&​600 |}}+{{ :​pm:​prj2024:​iotelea:​schema_hardware_seismograf.drawio.png?​direct&​600 |}}
  
-** +**Prima versiune functionala (test LCD)** 
-Schema hardware**+ 
 +{{ :​pm:​prj2024:​iotelea:​seismograf.gif?​direct&​600 |}} 
 + 
 +**Versiunea finala (seismograma pe dsiplay LCD)** 
 + 
 +{{ :​pm:​prj2024:​iotelea:​seismograf2.gif?​direct&​600 |}}
  
-{{ :​pm:​prj2024:​iotelea:​seismograf_bb.png?​direct&​600 |}} 
 ===== Software Design ===== ===== Software Design =====
  
 +Codul pentru placuta a fost dezvoltat in [[https://​www.arduino.cc/​en/​software|Arduino IDE]], folosind bibliotecile Adafruit_GFX.h,​ Adafruit_ILI9341.h,​ Wire.h, SD.h si SPI.h.
  
-<note tip> +Pentru o precizie mai buna, am folosit algoritmul [[https://en.wikipedia.org/​wiki/​Kahan_summation_algorithm#​The_algorithm|Kahan Summation]] pentru a face media primelor ''​SAMPLE_SIZE''​ valori masurate de accelerometruastfel incat masuratorile ulterioare sa aiba un punct de referinta cat mai precis.
-Descrierea codului aplicaţiei (firmware): +
-  * mediu de dezvoltare (if any) (e.gAVR StudioCodeVisionAVR) +
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate +
-</​note>​+
  
-===== Rezultate Obţinute =====+{{ :​pm:​prj2024:​iotelea:​seismograf_-_kahan_summation.png?​direct&​600 |}}
  
-<note tip> +Pe langa procesul de calibrare, in setup se initializeaza si timer-ul 1, care va emite o intrerupere software la fiecare secunda, iar la ''​FILE_SAVE_INTERVAL''​ secunde, se vor scrie date in cardul SD. 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+ 
-</​note>​+{{ :​pm:​prj2024:​iotelea:​seismograf_-_timer.png?​direct&​600 |}} 
 + 
 +LED-ul se va aprinde pentru a semnala scrierea datelor pe card, pentru ca acesta sa nu fie scos din slot, ceea ce ar risca coruperea cardului. LED-ul se va stinge cand datele ​au fost scrise si fisierul inchis
 + 
 +In vederea scrierii datelor in cardul SD, masuratorile sunt pastrate in 4 buffere de 20 de valori fiecare, care vor stoca valorile acceleratiilor pe cele 3 axe, precum si magnitudinea vectorului V = X + Y + Z, unde X, Y si Z sunt vectorii ce reprezinta acceleratiile pe cele 3 axe. 
 + 
 +{{ :​pm:​prj2024:​iotelea:​seismograf_-_buffere.png?​direct&​600 |}}
  
 ===== Concluzii ===== ===== Concluzii =====
 +
 +Per total, a fost un proiect interesant, insa precizia redusa a accelerometrului folosit lasa de dorit in ce priveste estimarea intensitatii unui cutremur real. Daca ar fi sa refac proiectul, as folosi un accelerometru pe 32 de biti, ceea ce ar oferi destula precizie pentru a lucra cu scala Mercalli folosita in cod. De asemenea, as incerca sa implementez functiile de afisaj si scriere in card "de mana", fara bibliotecile mentionate anterior, pentru a reduce consumul de memorie. Astfel as putea stoca mai multe valori in buffere, ceea ce ar insemna mai multe valori salvate pe card.
  
 ===== Download ===== ===== Download =====
  
-<note warning>​ +{{:pm:​prj2024:​iotelea:​seismograf.zip|}}
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectuluisurse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+
  
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +===== Bibliografie/Resurse =====
-</note>+
  
-===== Jurnal =====+[[https://​app.diagrams.net/​|draw.io,​ site-ul utilizat pentru schema bloc si schema hardware]]
  
-<note tip> +[[https://​www.arduino.cc/reference/​en/​libraries/​sd/​|SD.h,​ biblioteca pentru cardul SD]]
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. +
-</note>+
  
-===== Bibliografie/Resurse =====+[[https://​www.arduino.cc/​reference/​en/​libraries/​adafruit-ili9341/​|Adafruit_ILI9341.h,​ biblioteca pentru dsiplay-ul LCD]]
  
-<​note>​ +[[https://​www.arduino.cc/​reference/​en/​libraries/​adafruit-gfx-library/​|Adafruit_GFX.hdependinta pentru Adafruit_ILI9341.h]] 
-Listă cu documente, datasheet-uriresurse Internet folositeeventual grupate pe **Resurse Software** şi **Resurse Hardware**+ 
-</note>+[[https://​www.arduino.cc/​reference/​en/​language/​functions/​communication/​spi/​|SPI.hdependinta pentru Adafruit_GFX.h si SD.h]] 
 + 
 +[[https://​www.arduino.cc/​reference/​en/​language/​functions/​communication/​wire/​|Wire.h,​ biblioteca folosita pentru comunicarea cu accelerometrul]]
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
  
pm/prj2024/iotelea/dragos.filipescu.txt · Last modified: 2024/05/28 21:07 by dragos.filipescu
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