Andrei-Iulian MARDALE (19974) - IOT Wireless Sensor

Autorul poate fi contactat la adresa: Login pentru adresa

[1]

Introducere

Vreau să implementez un senzor general care să capteze informaţii despre sunet, temeperatură, luminozitate şi umiditate pe care să le transmită prin wireless, mai departe, către un PC/Smartphone. Un feature în plus al dispozitivului va fi că poate “asculta” sunetul din mediul înconjurător şi să afişeze un graphic equalizer pe LCD (exemplu: https://www.youtube.com/watch?v=LtkTEtfOW1M).

Dacă am suficient timp aş vrea sa implementez şi un sistem de notificări - astfel în cazul depăşirii unui prag pentru un parametru monitorizat se va trimite un mail unui utilizator.

Cred că acest dispozitiv este util pentru că, prin intermediul lui, se poate afla rapid care este starea parametrilor dintr-o anumită zonă.

Descriere generală

Partea de graphic equalizer poate fi pornită sau oprită printr-un buton.

Hardware Design

Lista piese:

Componenta Cantitate
Placa de bază 1
Senzor Lumină 1
Senzor Temperatură 1
Senzor Umiditate 1
Modul Microfon 1
Modul Wireless 1
Buton on/off pentru equalizer 1

Software Design

Mediul de dezvoltare

  • Sublime
  • Programmers Notepad [WinAvr]
  • Arduino IDE

Biblioteci

Algorimi folositi

  • Stabilirea unui protocol de comunicare prin interfata USART intre controllerul ATMEGA si ESP32
  • Stabilirea unui API de obtinere a datelor de catre clientul web de la serverul HTTP are ruleaza pe ESP32

Probleme aparute

  • PC-ul personal nu imi “vedea” placa de baza ceea ce inseamna ca am putut lucra la proiect doar de la laborator. Suspectez ca acest lucru se datoreaza faptului ca piesele pe care le-am achizitionat individual pot avea mici variatii de la parametrii pentru care a fost configurat circuitul placii de baza.
  • Interfata USART dintre ATMega 324P si ESP32 nu functioneaza corespunzator: ATMega transmite datele cerute, dar odata conectat pinul TX de la ATMega la pinul RX de la ESP32 semnalul nu mai este cel dorit. Suspectez ca acest lucru ar putea fi datorat ori unei erori de conexiuni Hardware ori unui bug din libraria de ESP32 folosita.

Ce am reusit sa obtin in conditiile de mai sus

  • partea hardware a proiectului - placa de baza + divizor rezistiv pentru conexiunea TX(ATMEGA) - RX(ESP32) + senzor de temperatura cu output analog

  • partea software pentru ESP32 care include: pornirea unei acces point wireless + server http + request-uri de tip GET prin care raspund cu datele “citite”
  • datele ar trebui citite prin USART insa din cauza faptului ca nu functioneaza corect am implementat o strategie de fallback unde imi generez random un numar daca nu am destule date disponibile la interfata USART
  • un cod pentru ATMega in care folosesc interfata de ADC pentru a prelua date de la senzorul de temperatura si a le trimite prin USART. Fac acest lucru asincron la un interval de 100ms. Acest cod nu a putut fi destat datorita problemelor enumerate mai sus.
  • am stabilit un protocol de comunicare a datelor intre ATMega si ESP32: trimit prima data indicele senzorului (in cazul meu doar 1 - Temperatura) si apoi valoarea citita: octetul inferior urmat de cel superior. De asemenea acest protocol nu a putut fi testat din considerentele de mai sus.

Jurnal

04.04.2017: Am dat prima comanda pentru toate piesele necesare placii de baza
06.04.2017: Am dat a doua comanda pentru piesele necesare placii de baza
15.04.2017: Am luat piesele si am inceput sa lucrez la partea hardware
21.04.2017: Am realizat divizorul rezistiv si am observat prima problema: PC-ul personal nu imi vedea placa. Am presupus ca acest lucru se datoreaza faptului ca bootloader-ul nu este corect instalat.
22.04.2017: Am reinstalat bootloader-ul si am observat ca doar la PC-ul personal exista aceasta problema. Am petrecut mult prea mult timp in zadar incercand sa rezolv asta.
23.04.2017: Am acceptat faptul ca nu pot lucra decat la laborator si am inceput scrierea partii software. Am observat cea de-a doua problema. Am realizat implementarea pentru ESP si am scris codul pentru ATMega.
24.04.2-17: Mici bugfix-uri in codul de ESP.

Concluzii

  • principala concluzie pe care am tras-o in urma acestei experiente neplacute este ca ar fi trebuit sa ma apuc mai devreme de proiect deoarece presupunerea ca totul va merge aproape bine este foarte des una gresita. Ar fi trebuit sa imi acord mai mult timp pentru a putea raspunde la problemele care au aparut pe parcurs

Download

Logica AVR: avr_logic.zip
Logica ESP: esp_logic.zip

Bibliografie/Resurse

pm/prj2017/mandrei/iot_sensor.txt · Last modified: 2021/04/14 17:07 (external edit)
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