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
Biblioteci
avr/io.h
util/delay.h
avr/interrupt.h
-
Algorimi folositi
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 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
Download
Bibliografie/Resurse