Cuprins:

ESP32 ADXL345 DATALOGGER CU GPS_EXT RAM_EXT_RTC: 8 pași
ESP32 ADXL345 DATALOGGER CU GPS_EXT RAM_EXT_RTC: 8 pași

Video: ESP32 ADXL345 DATALOGGER CU GPS_EXT RAM_EXT_RTC: 8 pași

Video: ESP32 ADXL345 DATALOGGER CU GPS_EXT RAM_EXT_RTC: 8 pași
Video: How To Track Orientation with Arduino | ADXL345 Accelerometer Tutorial 2024, Noiembrie
Anonim
ESP32 ADXL345 DATALOGGER CU GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER CU GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER CU GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER CU GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER CU GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER CU GPS_EXT RAM_EXT_RTC

Pentru cei dintre voi care jucați cu placa Wemos 32 LOLIN, m-am gândit că voi începe să documentez câteva descoperiri ale mele până acum.

Proiectul actual este de a interfața cu un accelerometru ADXL345 și așa cum arată fotografia de mai sus, l-am conectat cu succes la lolin și am configurat ADXL ca un senzor de șoc.

Registrele de pe ADXL au fost configurate ca fișier pdf atașat și întreruperea pe care am configurat-o în cod pentru a scuipa codul de pe portul serial odată ce este detectat un șoc.

De asemenea, am configurat registrul de inactivitate ca întrerupere și după ce am verificat ce întrerupere a fost declanșată, apoi am scuipat aceleași date.

Folosesc portul I2c de pe LOLIN și veți vedea că am o rutină de a scuipa registrele de pe ADXL, astfel încât să pot verifica configurarea în timp ce depanați. Această funcție rulează într-o funcție de cronometru utilizând biblioteca de marcaje. Aceasta este o funcție utilă pentru a configura pentru depanare și verificarea registrelor în cazul în care scrieți ceva acolo, care determină misterios datele să facă unele lucruri ciudate.

Am normalizat datele de compliment ale celor 2 în LOLIN și le-am formatat astfel încât să poată fi importate în Excel.

Aruncați o privire la PDF-ul atașat cu câteva date pe care le-am importat și am grafic în Excel, arătând câteva atingeri pe ADXL care sunt declanșate de o întrerupere în registrul de declanșare folosind modul FIFO.

Modul FIFO este o caracteristică utilă care nu leagă micro-ul și stochează 32 de eșantioane pe un declanșator. Uită-te din nou la depozitele mele de date și poți vedea de unde începem de la zero și ultimul eșantion este la 9,8 ms sau aproximativ. Linia X din grafic arată sincronizarea în microsecuri crescând de la stânga la dreapta.

NOTĂ DE CÂND AM MODIFICAT ULTIMUL GRAFIC PENTRU AFIȘAREA CELULUI DE LA MINUS 9800 microsecuri. Primul pop din FIFO este cel mai vechi de date, restul este mai vechi. Vizualizarea ar trebui să fie de la dreapta la stânga.

Rețineți cele trei fire către placa ADXL. SDA / SCL și INT de la INT 1. Din nou, dacă vă uitați la setările registrului și refaceți foaia de date, va avea sens.

Eșantionul de date este complet înclinat la 3200 de eșantioane, ceea ce oferă 3125 de secunde între eșantioane și o pre-captură de 4 eșantioane. Uită-te la pdf-ul datelor de pe dispozitiv în Excel și fiecare dintre graficele pe care le-am trasat arătându-mi mișcarea ferestrei de captare.

Voi pune un cod al configului și îl întrerup dacă cineva este interesat.

Pentru I2C folosesc biblioteca de fire și am scris câteva funcții în jurul acesteia.

Observați micul sniffer de date pe care l-am conectat la SDA / SDL și folosind Sigrok pot decoda autobuzul I2C în timp real.

Următorul pas este să salvați pe discul SAN, deși am dovedit deja că funcționează. Odată ce ați terminat, voi interfața la wireless și o voi încărca pe un site web.

Voi adăuga la acest lucru pe măsură ce proiectul se extinde.

NOTĂ DE SUBSOL:

Pentru cei care observă acolo, veți observa o adâncitură mare în cutie care protejează cipul esp și un jumper pe PCB. Acest lucru s-a datorat rezidentului Cocker Spaniel care a inspectat corespondența și a decis să mestece placa înainte de a-mi permite să am acces la ea. Cred că este o fană non espressif !.

Desigur, ca întotdeauna, sunt întotdeauna pregătit pentru întrebări, așa că vă rugăm să întrebați.

Pasul 1: SIGROK ȘI PULSEVIEW

SIGROK ȘI PULSEVIEW
SIGROK ȘI PULSEVIEW
SIGROK ȘI PULSEVIEW
SIGROK ȘI PULSEVIEW

Doar o mențiune rapidă despre pulseview și sigrok.

Acesta este un software gratuit de pe net, iar placa de interfață mică cu 8 intrări logice este ieftină de la eBay și colab. Veți observa câteva imagini pe care le-am luat de pe autobuz în timp ce ADXL rulează și este atât de util din nou pentru depanare are un decodor încorporat pentru I2C.

Un scop este excelent pentru verificarea nivelurilor semnalului, dar decodarea manuală a I2c este obositoare în cel mai bun caz, deși am configurat o buclă înainte și am depanat manual. Trebuie să aveți o apreciere a loviturilor de biți la nivelul portului, pe care le-am făcut în multe proiecte pic, dar consumă mult timp și este predispus la erori … mai ales noaptea !!

Mulțumesc băieților care au scris această aplicație. Este un trimis de Dumnezeu pentru proiecte în i2c, Rețineți linia D4 care monitorizează linia de întrerupere din ADXL.

Pasul 2: Adăugarea la senzorul de șoc

Adăugarea la senzorul de șoc
Adăugarea la senzorul de șoc
Adăugarea la senzorul de șoc
Adăugarea la senzorul de șoc
Adăugarea la senzorul de șoc
Adăugarea la senzorul de șoc
Adăugarea la senzorul de șoc
Adăugarea la senzorul de șoc

Ok aici am adăugat câteva periferice la senzorul de șoc pentru dovada conceptului.

Scuzați cuiburile de șobolani pentru moment, odată ce funcționează, voi proiecta PCB care leagă toate componentele și le voi pune într-o cutie frumoasă. Toate articolele atașate, cu excepția cardului SD, funcționează pe i2c care se află pe busul spi.

Lăsat să fie atașat este modulul GPS care este WIP, dar sper să am o soluție până la sfârșitul acestei săptămâni.

Deci, proiectul actual constă din:

Placa ESP32 LOLIN cu wireless.

Ceas PCF în timp real. Păstrează urmărirea datei și orei curente. Am lipit brut pe o placă de proiect veche pe care am gravat-o anterior.

Bliț extern. Deține, printre altele, date de configurare pentru accelerometru. Capacitate 132k și poate arunca unele date web pe acesta pentru a facilita meniurile etc.

Card SD SPI pentru stocarea datelor și jurnalelor accelerometrului de fișiere. 8 GB, dar se poate extinde.

Afișaj OLED pentru a afișa meniuri și câteva alte lucruri.

Iată ce va face [în cele din urmă]

Monitorizați șocurile și activitatea care depășesc fundalul.

Înregistrați șocurile pe cardul SD cu ora și data de la ceasul de la bord.

Ștampilați locația de pe GPS pe cardul SD, dacă este disponibil

Folosind un punct de acces încărcați datele pe un server web pentru a analiza datele … acesta poate fi un telefon mobil.

| Căutarea punctelor de acces este o capacitate a LOLIN32, deoarece găzduiește un server web pentru comenzi și apoi se conectează ca client la serverul web cloud. Puteți oricând să deconectați cardul SD și să îl încărcați!

Mai sunt multe de făcut, dar continuă.

Pasul 3: ADRESAREA ADXL

ADRESĂ ADXL
ADRESĂ ADXL

Iată un lucru amuzant. Am achiziționat cipul ADXL 345 ca o placă mică, era mai ieftin decât aprovizionarea cu un cip singur … cum funcționează? Oricum, după aceea, am început să-l conectez la autobuzul i2c și am constatat că am avut o ciocnire cu eeprom cu adrese care încep efectiv de la 0x53, ceea ce se traduce printr-o scriere la A6 și o citire la A7.

Deci, citind bumf se dovedește că, dacă luați ADRESA SDO / ALT HIGH, îl puteți forța la 1D

Se pare că placa mea mică este conectată la masă pe pinul 12 al ADXL, în ciuda pinului SDO, care pare că îl puteți trage sus. Nu încercați acest lucru acasă fără o sursă de alimentare limitată curentă … din fericire am avut ceea ce m-a determinat să scot multimetrul și să verific pinul la masă.. Acest lucru funcționează și te scoate din ciocnirea balului. Din fericire, ei nu au făcut scurtmetrajul sub cip sau altfel aș fi fost snooker și ar fi trebuit să scot cipul de pe placă. EEprom, care este unul de rezervă pe care l-am avut, este aranjat ca două pagini de 64k ca adresă 0x52 și 53. Odată ce am făcut acest lucru, problema mea a fost rezolvată.

Citind din nou pagina web, spune că este setat la 0x53, dar este în format mic, așa că fii atent!

Pasul 4: Schematic PCB Prints

Iată o trecere rapidă a circuitului și a componentelor. Acesta este foarte mult designul meu și încă WIP [Work In Progress] Schema a fost proiectată și apoi tradusă în opera de artă pentru piese. Am verificat toate componentele funcționează așa cum era de așteptat folosind șobolanii mei se apropie și acum mă asamblu pe o scândură care se va potrivi într-o cutie mică [Detalii de urmat]

Referindu-vă la shocker.pdf.

Placa este formată din 8 componente principale

  1. DEPOZITARE CARTE SD
  2. ACCELEROMETRU ADXL
  3. DISPLAY OLED
  4. 3,3 V REG
  5. MODUL GPS1
  6. EEPROM
  7. TIMER RTC
  8. CIP ESP32 LOLIN CU INTERFAȚĂ RF FĂRĂ FĂRĂ

Totul depinde de accelerometru.

ADXL este configurat pentru a întrerupe procesorul pe INT1 care este direcționat către pinul 14 al procesorului. Codul din micro este configurat pentru a intercepta această întrerupere și pentru a seta un semnal pe care se acționează în rutina principală. Voi adăuga codul schițând înregistrarea ulterioară a rutinei de întrerupere și a funcției de apel invers.

ADXL acceptă întreruperi în diferite stări, cum ar fi un șoc sau inactivitate plus câteva altele. Puteți masca cele care vă gâdilă fantezia în funcție de ceea ce încercați să faceți. ADXL este operat în modul FIFO, astfel încât să stocheze 32 de probe pentru a surprinde evenimentul de șoc ca XYZ [96 valori]

Afișajul ADXL RTC și EEPROM sunt toate pornite de la I2C. SD CARD este conectat la SPI I / O, iar modulul GPS este conectat la porturile seriale de pe LOLIN marcat X12 X11.

Secvența este după cum urmează: Prindeți în mod constant cele 232 de date de pe unitatea GPS și filtrați-le. În timp ce aveți GPS timp valabil actualizați RTC la intervale stabilite. La întreruperea stocării variabilelor pe cardul SD, cum ar fi time / Lat_Lng / Speed / Altitude / Store ADXL registers in complement brut format 2 și complement non 2. Toate datele sunt delimitate prin virgulă.

Veți observa, de asemenea, că există un pin de resetare care este conectat la pinul 13. Acest pin va porni serverul web încorporat, permițându-vă să vă conectați la configurator pentru a configura un punct de acces stocat în EEPROM. La repornire, procesorul se va conecta la punctul de acces și va accesa internetul pentru a încărca fișiere de pe cardul SD. Dacă nu există date și nici un punct de conectare, atunci unitatea își efectuează procesul de înregistrare a datelor pe cardul SD pe care îl puteți interoga folosind programul [ShockerView.exe] [WIP] Pe server datele sunt stocate într-o bază de date SQL și afișate [WIP]

Imprimatele PCB sunt atașate pentru partea superioară și inferioară.

Pasul 5: Prototip de gravură de artă

Prototip de gravură
Prototip de gravură
Prototip de gravură
Prototip de gravură
Prototip de gravură
Prototip de gravură

Iată cum îmi produc plăcile prototip

Imprimați opera de artă pe o hârtie de calc greu. Folosesc 63 GSM de la smiths, ieftin și vesel. Imprimanta este cheia aici. Vrei cât mai opac posibil și cât mai curat posibil. Imprimanta laser este pornită acum, dar este bună pentru a tipări până la 10 mii, mai puțin de atât, ai nevoie de niște echipamente de specialitate pe măsură ce bobul de hârtie de calc începe să-ți împiedice. Puteți cumpăra hârtie specializată, dar hei, asta este prea bun pentru cei care îmi plac. Dacă aveți nevoie de un consiliu adecvat, atunci cereți experților să o facă.

În mod normal, îmi protejez tablourile în secțiuni și apoi produc o finală cu gerbers pentru ca o companie de internet să o producă. Prototipul sortează toate acele erori și omisiuni înainte de a comite bani reali.

După ce ați imprimat imaginile pe două coli A4 separate de urmărire, apoi tăiați-le astfel încât să se suprapună și să le vândă pe bandă în poziție. lăsați suficient spațiu pentru ca placa dvs. dublă să se strângă între straturi și asigurați-vă că fața imprimată este împotriva plăcii. Faceți câteva fante pentru a vă permite să glisați plăcile și să le vindeți temporar. Dacă aveți grijă, puteți suprapune caseta de vânzare pentru a vă permite să o desfaceți fără a distruge imaginea de urmărire.

Așezați placa cu o parte în jos în cutia UV. NB Am făcut-o pe a mea folosind patru lămpi UV noi de 13W și niște echipamente de control vechi și am făcut o cutie cu un panou din sticlă transparentă. Distanța a fost experimentală. Capacul se fixează în jos și strânge spuma pe spatele plăcii forțând masca împotriva sticlei. Dacă nu reușiți să faceți acest lucru, lumina va reduce rezistența la etch. Porniți și expuneți placa timp de 1 minut 40 secunde pe fiecare parte. Folosește-ți ceasul. De fapt, trebuie să modific acest lucru cu un cronometru pe el … oh, niciun alt proiect … poate că voi cumpăra unul … știți că nu veți obține! Rezistența la etch este uneori cam neuniformă, dar am niște plăci pe care le am de patru ani și încă produc plăci bune pentru prototipare !!

Aveți grijă când întoarceți placa, nu o lăsați să alunece sau veți avea niște junk.

Acum pregătește-ți dezvoltatorul. Folosesc 2 capace la 18: 1, astfel încât sunt două capace de revelator și 36 capace de apă pură de la robinet neadulterată. Dezvoltatorul vine sub formă de sticlă sau pulbere, iar o sticlă durează de obicei cam 6 ani !!. Se amestecă într-un recipient pentru înghețată ȘI PORTĂ MĂNUȘI. Nu puneți degetele în el, altfel grăsimea îl va afecta. Temperatura poate fi o problemă iarna. Păstrați apa la 20 de grade sau în jur, nu este critic, dar dacă este rece, rezultatele pot fi imprevizibile. Am făcut asta în ianuarie în garajul meu cu un ceainic, astfel încât să puteți compensa.

Mutați ușor recipientul dintr-o parte în alta odată ce ați pus placa în ea, dacă ați făcut-o corect, veți vedea că un flux Magenta de etch rezistă la eliminarea din cupru, dezvăluind un cupru strălucitor minunat între șenile. Întoarceți-l cu mănușile pentru a verifica cealaltă parte. Acest proces durează în mod normal aproximativ un minut, așa că, când este complet, scoateți placa și clătiți bine în apă caldă. Dacă este plictisitor, atunci șansele sunt eșuate.

Am avut asta de câteva ori, dar, de obicei, pentru că nu am reușit să port mănuși sau temperatura a fost prea mică sau am încurcat timpul de expunere din cauza unor distrageri … de ce fac asta în mijlocul a ceva critic …

Arată-mi gravurile tale

Ok, așa că acum aveți o placă cu frumoase urme verzi protejate de etch resist și acum trebuie să alcătuiți clorura ferică. Acum folosesc același recipient pentru înghețată pentru a minimiza risipa și amestec cu notele de pe pachet. Cumpăr clorură ferică în pachete de bile pe care le cântăriți și le dizolvați într-o soluție. Compuneți suficient pentru a umple cada de înghețată la aproximativ 1/3 din drum. Dacă compuneți suficient pentru muncă, puteți turna într-un recipient de plastic și se va păstra pentru o perioadă lungă de timp.

TREBUIE SĂ PORTEȚI MĂNUȘI … nu din cauza grăsimii etc. ci din cauza faptului că dacă nu aveți mâinile vor fi portocalii strălucitoare timp de două săptămâni. Odată am făcut asta înainte de o întâlnire importantă la Londra și se părea că fusesem tango. Cu toate acestea, fiți conștienți că aceste lucruri sunt urâte în jurul oricărui cupru … și a oricărui lucru cu adevărat. Purtați haine vechi, pentru că, dacă se încadrează pe ele, acestea sunt aruncate la gunoi. Se atașează la chiuvetele din oțel inoxidabil și, în general, patează totul. Faceți acest lucru în afara sau într-un depozit departe de orice. Nu turnați resturile în canalizare, este excelent la uciderea bacteriilor, ceea ce autoritatea apei nu ar dori să promoveze în fosele lor septice. Pentru unele autorități, acest lucru este, de asemenea, ilegal, așa că nu o faceți.

Când vă scufundați prima oară în soluție, aceasta va avea o culoare roșie de bronz, pe măsură ce cuprul este atacat. Dacă nu, este posibil să aveți în continuare un strat de rezistență etch care împiedică funcționarea etchantului sau soluția dvs. este greșită. Dacă acesta este cazul, atunci mă întorc la planșă de desen, mi-e teamă, dar este puțin probabil ca știința dvs. să fie greșită dacă ați urmat distrugerile.

Oricum, dacă totul este bine, aveți câteva piese perfecte protejate de etch resist.

În mod normal, în acest moment, profesionistul ar folosi un set de măști pentru a se dezvolta în jurul găurilor și tampoanelor și a produce via cupru prin plus, ar folosi un ecran de mătase pentru pictarea numerelor de componente etc. folosind niște fire de cupru de la strat la strat … în mod evident, multistratul este un nu nu prin această metodă. Dacă sunt în dispoziție, voi adăuga cu atenție numerele componentelor la stratul de imprimare, astfel încât să gravați și numerele componentelor. Poate economisi ceva timp la asamblare, dar depinde de cât de ocupată este placa.

Acum expun piesele pentru încă 2 minute sau cam așa pe fiecare parte și mă scufund în dezvoltator pentru a elimina toată rezistența etch.

Acum găuresc via-urile și oricare dintre găuri și staniu toate pistele și verific continuitatea cu un multimetru. Această parte este o durere de bilă și nu o veți face în mod normal pentru o placă produsă profesional cu adevărate via-uri, dar merită să o faceți pentru a evita cablul via fiind lipit doar o parte … sa întâmplat de atâtea ori!

Pasul 6: Asamblarea consiliului

Adunarea consiliului
Adunarea consiliului
Adunarea consiliului
Adunarea consiliului
Adunarea consiliului
Adunarea consiliului

OK, așa că acum am o placă pregătită și am forat toate canalele și găurile prin.

Filetați toate canalele cu fir și lipiți ambele părți. Îmi place să cos toate pistele ca o protecție nu trebuie să o fac, dar oprește oxidarea cuprului.

Am atașat cardul SD, care este montat pe suprafață și am adăugat două terenuri pentru a obține o lipire de lipit pe el, plus că are câțiva pini în partea de jos pentru a-l ancora în jos.

Apoi a adăugat ADXL EEPROM etc.

Din punct de vedere al planului, planul este de a lua 5V de pe USB sau Bat extern și să-l alimentez prin regul de 3.3V de pe bord. decât poate oferi USB. Nu am făcut încă nicio măsurare a puterii, așa cum s-ar putea modifica în software ….. ar putea folosi întreruperea INACTIVITĂȚII de la ADXL pentru a face față. [WIP]

… trebuie să adăugați imagini pe măsură ce construirea progresează.

Pasul 7: CODIFICARE

OK Nu voi trece prin toate arduino-urile configurate, deoarece altcineva a făcut o treabă mult mai bună în altă parte.

Voi alege doar piesele pertinente pe măsură ce putem merge într-un proiect propriu.

Acest lucru este încă în curs de desfășurare în măsura în care este luată în considerare încărcarea pe site, dar permite parcurgerea unora dintre coduri.

Ideea este că funcționalitatea normală este inițierea dispozitivelor care constau din GPS / display / card SD / ceas în timp real / ext_flashmemory și accelerometru.

După aceea, intrăm într-o buclă care așteaptă să vedem dacă se apasă tasta de întrerupere sw. Dacă este apoi săriți la meniul configuratorului pentru a configura rețeaua wifi pentru a se conecta automat la un dispozitiv specificat ca intrare în configuratorul paginii web. Mai întâi scanează toate dispozitivele pentru un ssid și apoi vă permite să selectați unul și să îl salvați pe flash cu un steag pentru a indica faptul că la următoarea încărcare încărcați setările de la bliț. Puteți oricând să înlocuiți acest lucru introducând adresa IP și tastând / killbill pentru a iniția o curățare a blițului și încărcarea implicită.

aici este funcția de întrerupere definită în codul pentru accelerometrul adxl și saltul la configurator pe doi pini separați. Folosim întreruperea ADXL pentru a întrerupe evenimentul SHOCK. Pentru ambele întreruperi, setăm un semnalizator care este resetat în „bucla” principală. iată cum arată:

uită-te la codul atașat

Pasul 8: Găsirea pinilor SDA SCL

folosiți acest cod:

Serial.println (SDA);

Serial.println (SCL);

imprimă pinii configurați în prezent în ESP pentru SDL și SCL

Există un fișier care este utilizat pentru maparea pinilor la funcții precum porturile seriale din ESP32

Recomandat: