Innholdsfortegnelse:

ESP32 ADXL345 DATALOGGER MED GPS_EXT RAM_EXT_RTC: 8 trinn
ESP32 ADXL345 DATALOGGER MED GPS_EXT RAM_EXT_RTC: 8 trinn

Video: ESP32 ADXL345 DATALOGGER MED GPS_EXT RAM_EXT_RTC: 8 trinn

Video: ESP32 ADXL345 DATALOGGER MED GPS_EXT RAM_EXT_RTC: 8 trinn
Video: ESP32 - Vibration Data Logger (Fourier Transform) 2024, Juli
Anonim
ESP32 ADXL345 DATALOGGER MED GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER MED GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER MED GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER MED GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER MED GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER MED GPS_EXT RAM_EXT_RTC

For dere der ute som lekte med Wemos 32 LOLIN -brettet, tenkte jeg at jeg ville begynne å dokumentere noen av funnene mine så langt.

Gjeldende prosjekt er å koble til et ADXL345 akselerometer, og som bildet viser ovenfor, har jeg lykkes med å koble det til lolin og konfigurert ADXL som en støtsensor.

Registerene på ADXL er satt opp som den vedlagte pdf -filen og avbruddet jeg har konfigurert i koden for å spytte ut koden på den serielle porten når et sjokk er oppdaget.

Jeg konfigurerte også inaktivitetsregisteret som et avbrudd, og etter å ha sjekket hvilket avbrudd som er utløst, spytter jeg ut de samme dataene.

Jeg bruker I2c -porten på LOLIN, og du vil se at jeg har en rutine for å spytte ut registerene på ADXL, slik at jeg kan sjekke konfigurasjonen mens jeg feilsøker. Denne funksjonen kjører i en tidtakerfunksjon ved hjelp av tickerbiblioteket. Dette er en nyttig funksjon for å konfigurere for feilsøking og kontroll av registrene i tilfelle du skriver noe der inne som på mystisk vis får dataene til å gjøre noen rare ting.

Jeg har normalisert 2s komplimentdata i LOLIN og formatert det slik at det kan importeres til excel.

Ta en titt på den vedlagte PDF -filen med noen data jeg har importert, og jeg har grafet i excel som viser noen trykk på ADXL som utløses av et avbrudd i triggerregisteret ved bruk av FIFO -modus.

FIFO -modus er en nyttig funksjon som ikke binder mikron, og den lagrer 32 prøver på en utløser. Se igjen på datadumpene mine, og du kan se hvor vi starter ved bakkenull og den siste prøven er på 9,8 ms eller der omtrent. X -linje på grafen viser timingen i mikrosekunder som øker fra venstre til høyre.

MERK Jeg har siden den siste grafen endret for å vise tidslinje fra 9800 mikrosekunder. Første pop av FIFO er de tidligste dataene resten er eldre. Visningen skal være fra høyre til venstre.

Legg merke til de tre ledningene til ADXL -kortet. SDA/SCL og INT fra INT 1. Igjen hvis du ser på registerinnstillingene og krysser databladet, vil det være fornuftig.

Dataprøven er full tilt på 3200 prøver, noe som gir 3125 sekunder mellom prøvene. Og en forhåndsinnfanging av 4 prøver. Se på pdf -en til dataene fra enheten i excel, og hver av grafene jeg har tegnet viser meg ved å flytte vinduet for fangst.

Jeg legger opp en kode til konfigurasjonen og avbryter hvis noen er interessert.

For I2C bruker jeg trådbiblioteket og har skrevet noen funksjoner rundt det.

Legg merke til den lille datasnifferen som jeg har koblet til SDA/SDL, og ved å bruke Sigrok kan jeg dekode I2C -bussen i sanntid.

Neste trinn er å lagre på SAN -disk, selv om jeg allerede har bevist at det fungerer. Når det er gjort, vil jeg grensesnittet til det trådløse og laste opp til et nettsted.

Jeg vil legge til dette etter hvert som prosjektet utvides.

FOTNOTE:

For de observante der ute vil du legge merke til et stort hull i boksen som beskytter esp -brikken og en jumper på kretskortet. Dette skyldes den bosatte Cocker Spaniel som inspiserte posten og bestemte seg for å tygge brettet før jeg lot meg få tilgang til den. Jeg tror hun er en ikke -espressif fan !.

Selvfølgelig, som alltid, har jeg alltid spørsmål, så spør.

Trinn 1: SIGROK OG PULSEVIEW

SIGROK OG PULSEVIEW
SIGROK OG PULSEVIEW
SIGROK OG PULSEVIEW
SIGROK OG PULSEVIEW

Bare en kort omtale av pulsvisning og sigrok.

Dette er gratis programvare fra nettet og det lille grensesnittkortet med 8 logiske innganger er billig fra ebay et al. Du vil legge merke til et par bilder jeg tok av bussen mens ADXL kjørte, og det er så nyttig igjen for feilsøking som det har en innebygd dekoder for I2C.

Et omfang er flott for å kontrollere signalnivåer, men håndkoding av I2c er i beste fall slitsomt, selv om jeg har satt opp en sløyfe før nå og feilsøkt for hånd. Du må ha en forståelse for litt banking på havnenivå som jeg har gjort på mange bildeprosjekter, men det er tidkrevende og utsatt for feil … spesielt om natten!

Takk til gutta som skrev denne appen. Det er en gud sende for prosjekter i i2c, Legg merke til D4 -linjen som overvåker avbruddslinjen fra ADXL.

Trinn 2: Legge til i støtsensoren

Legger til i støtsensoren
Legger til i støtsensoren
Legger til i støtsensoren
Legger til i støtsensoren
Legger til i støtsensoren
Legger til i støtsensoren
Legger til i støtsensoren
Legger til i støtsensoren

Ok, her har jeg lagt til noen eksterne enheter for støtsensoren for bevis på konseptet.

Unnskyld rottene hekker for nå når det fungerer. Jeg skal designe kretskortet som kobler alle komponenter og putte det hele i en pen eske. Alle elementene som er festet bortsett fra SD -kortet jobber på i2c som er på spi -bussen.

Venstre å legge ved er GPS -modulen som er WIP, men jeg håper å ha en løsning innen slutten av denne uken.

Så nåværende prosjekt består av:

ESP32 LOLIN -bord med trådløs.

PCF sanntidsklokke. Holder oversikt over gjeldende dato og klokkeslett. Jeg har grovloddet på et gammelt prosjektbrett jeg har etset tidligere.

Ekstern blits. Holder oppsettdata for blant annet Accelerometer. Kapasitet 132k og kan dumpe noen webdata på den for å lette menyer osv.

SPI SD -kort for lagring av filakselometerdata og logger. 8 GB, men kan utvides.

OLED -skjerm for å vise menyer og et par andre ting.

Her er hva den [til slutt] vil gjøre

Overvåk støt og aktivitet som overstiger bakgrunnen.

Registrer støtene til SD -kortet med tid og dato fra ombordklokken.

Stempel plasseringen fra GPS til SD -kort hvis tilgjengelig

Last opp dataene til en webserver for å analysere dataene ved å bruke et tilgangspunkt … dette kan være en mobiltelefon.

| Å søke etter tilgangspunkter er en mulighet for LOLIN32, som å være vert for en webserver for kommandoer og deretter koble til en sky -webserver som en klient. Du kan alltid bare koble fra sd -kortet og laste det opp!

Fortsatt mye å gjøre, men det går videre.

Trinn 3: ADXL ADRESSE

ADXL ADRESSE
ADXL ADRESSE

Nå er det en morsom ting. Jeg kjøpte ADXL 345 -brikken som et lite brett, for den var billigere enn å kjøpe en brikke på egen hånd … hvordan fungerer det? Uansett etter det begynte jeg å koble den til i2c -bussen og fant at jeg hadde et sammenstøt med eeprom med adresser som effektivt starter på 0x53, noe som betyr at en skriver på A6 og en lesning på A7.

Så når du leser bumf, viser det seg at hvis du tar SDO/ALT ADRESSEN HØY, kan du tvinge den til 1D

Det viser seg at det lille brettet mitt er hardwired til jord på pin 12 i ADXL til tross for SDO -pin som ser ut som om du kan trekke det høyt. Ikke prøv dette hjemme uten en begrenset strømforsyning ….. Dette fungerer og får deg ut av ballkampen. Heldigvis gjorde de ikke kort under brikken, ellers hadde jeg blitt snookered og måtte fjerne brikken fra brettet. EEprom som er en ekstra jeg hadde, er arrangert som to sider på 64k som adresse 0x52 og 53. Når jeg gjorde dette ble problemet mitt løst.

Når du leser nettsiden igjen, sier den at den er satt til 0x53, men den er med liten skrift, så pass på!

Trinn 4: Skjematisk PCB -utskrift

Her er en rask gjennomgang av kretsen og komponentene. Dette er veldig mye mitt design og fortsatt WIP [Work In Progress] Skjematikken ble designet og deretter oversatt til kunstverket for sporene. Jeg har bekreftet at alle komponentene fungerer som forventet ved hjelp av rottene mine hekker og nærmer meg nå på et brett som vil passe inn i en liten eske [Detaljer følger]

Henviser til shocker.pdf.

Brettet består av 8 hovedkomponenter

  1. Lagring av SD -kort
  2. ADXL ACCELEROMETER
  3. DISPLAY OLED
  4. 3,3 V REG
  5. GPS1 -MODUL
  6. EEPROM
  7. TIMER RTC
  8. ESP32 LOLIN CHIP MED RF TRÅDLøst grensesnitt

Alt henger på akselerometeret.

ADXL er konfigurert for å avbryte prosessoren på INT1, som blir dirigert til pin 14 på prosessoren. skisserer registrering av avbruddsrutinen og tilbakeringingsfunksjonen senere.

ADXL støtter avbrudd i forskjellige tilstander, for eksempel sjokk eller inaktivitet pluss noen andre. Du kan maskere ut de som kiler din fantasi basert på hva du prøver å gjøre. ADXL opereres i FIFO -modus slik at den lagrer 32 prøver for å fange sjokkhendelsen som XYZ [96 verdier]

Displayet ADXL RTC og EEPROM er alle drevet fra I2C. SD -kortet er koblet til SPI I/O og GPS -modulen er koblet til serieportene på LOLIN merket X12 X11.

Sekvensen er som følger Hent hele tiden de 232 dataene fra GPS -enheten og filtrer. Mens du har gyldig GPS -tid, oppdaterer du RTC med angitte intervaller. Avbryt lagervariabler til SD -kort, for eksempel time/Lat_Lng/Speed/Altitude/Store ADXL -register i råformat 2s kompliment og ikke 2s komplement. Alle data er kommaavgrenset.

Du vil også merke at det er en tilbakestillingspinne som er koblet til pinne 13. Denne pinnen starter den innebygde webserveren slik at du kan koble til konfiguratoren for å sette opp et tilgangspunkt som er lagret i EEPROM. Ved Reboot vil prosessoren koble til tilgangspunktet og få tilgang til internett for å laste opp filer fra SD -kortet. Hvis det ikke er data og ingen tilkoblingspunkt, utfører enheten bare sin dataloggingsprosess til sd -kortet som du kan avhøre med programmet [ShockerView.exe] [WIP] På serveren lagres dataene i en SQL -database og vises [WIP]

PCB -utskriftene er vedlagt for topp og bunn.

Trinn 5: Kunstverk etsningsprototype

Kunstverk Etseprototype
Kunstverk Etseprototype
Kunstverk Etseprototype
Kunstverk Etseprototype
Kunstverk Etseprototype
Kunstverk Etseprototype

Her er hvordan jeg produserer prototypebrettene mine

Skriv ut kunstverket på tykt papir. Jeg bruker 63 GSM fra smeder, billig og munter. Skriveren er nøkkelen her. Du vil ha så ugjennomsiktig som mulig og så rent som mulig. Laserskriveren min får det bra nå, men det er godt å skrive ut til 10 tusen, mindre enn at du trenger spesialutstyr da kornet på papiret begynner å komme i veien. Du kan kjøpe spesialpapir, men hei, det er for bra for meg. Jeg forbedrer designene mine hele tiden, så det ville bli for dyrt for meg. Hvis du trenger et skikkelig brett, kan du be ekspertene om å gjøre det.

Jeg prototyper normalt brettene mine i seksjoner og produserer deretter en finale med gerbers for et internettselskap å produsere. Prototypen sorterer ut alle disse feilene og utelatelsene før jeg begår ekte penger.

Etter at du har skrevet ut bildene på to separate A4 -ark med spor, klipp dem deretter slik at de både overlapper og selger dem på plass. la det være nok plass til at det dobbeltsidige brettet ditt presses inn mellom lagene og sørger for at den trykte siden er mot kretskortet. Lag et par slisser slik at du kan skyve brettene inn og selge tape det midlertidig. Hvis du er forsiktig, kan du overlappe sellotape slik at du kan fjerne den uten å ødelegge sporingsbildet.

Legg brettet med den ene siden ned i UV -boksen. NB Jeg lagde min ved hjelp av fire nye 13W UV -lamper og litt gammelt kontrollutstyr og laget en eske med et klart glasspanel. Avstanden var eksperimentell. Lokket klemmes ned og klemmer skummet på baksiden av brettet og tvinger masken mot glasset. Hvis du ikke klarer dette, vil lyset undergrave etsemotstanden. Slå på og avslå brettet i 1 minutt 40 sekunder per side. Bruk klokken din. Egentlig må jeg endre dette med en tidtaker på det … åh ikke et annet prosjekt … kanskje jeg skal kjøpe et … du vet at du ikke gjør det! Bordene jeg kjøper fra Mega Electronics er de billige prototypebrettene med etsemotstand. Etsemotstanden er noen ganger litt ujevn, men jeg har noen brett jeg har hatt i fire år, og de produserer fortsatt gode brett for prototyping!

Vær forsiktig når du snur brettet, ikke la det skli, ellers får du litt søppel.

Forbered nå utvikleren din. Jeg bruker 2 hetter ved 18: 1, så det er to lokker utvikler og 36 hetter rent, uforfalsket vann fra springen. Utvikleren kommer i en flaske eller pulverform, og en flaske varer vanligvis omtrent 6 år !! Bland det i en iskrembeholder OG BRUK HANSKER. Ikke legg fingrene i det, ellers påvirker fettet det. Temperaturen kan være et problem om vinteren. Hold vannet på 20 grader eller deromkring, det er ikke kritisk, men hvis det er kaldt kan resultatene være uforutsigbare. Jeg har gjort dette i januar i garasjen min med en vannkoker, slik at du kan kompensere.

Flytt beholderen forsiktig fra side til side når du har lagt brettet i den. Hvis du har gjort det riktig, vil du se en Magenta -strøm av etsemotstand som blir fjernet fra kobberet og avsløre et nydelig skinnende kobber mellom sporene. Snu den med hanskene for å sjekke den andre siden. Denne prosessen tar vanligvis omtrent et minutt, så ta brettet ut og skyll grundig i varmt vann når det er ferdig. Hvis den er kjedelig, er sjansen stor for at den mislyktes.

Jeg har hatt dette et par ganger, men det er vanligvis fordi jeg ikke klarte å bruke hansker eller temperaturen var for lav eller jeg rotet eksponeringstiden på grunn av litt distraksjon … hvorfor gjør de dette midt i noe kritisk….

Vis meg dine etsninger

Ok, så nå har du et brett med vakre grønne spor beskyttet av etsemotstand og må nå utgjøre Ferric Chloride. Nå bruker jeg den samme iskrembeholderen for å minimere avfall og blande meg til notatene på pakken. Jeg kjøper ferrikloridet i pakker med kuler som du veier ut og løser opp i en løsning. Gjør opp nok til å fylle iskremen omtrent 1/3 av veien opp. Hvis du sminker akkurat nok til jobben, kan du helle den i en plastbeholder og den vil holde lenge.

DU MÅ BARE HANSKER … ikke på grunn av fett osv., Men fordi hvis du ikke gjør det, vil hendene dine være lyse oransje i fjorten dager. Jeg gjorde dette en gang før et viktig møte i London, og det så ut som jeg hadde blitt tangoert. Vær imidlertid oppmerksom på at dette er ekkelt rundt alt kobber … og alt egentlig. Bruk gamle klær, for hvis det kommer på dem, blir de kastet. Den fester seg til vasker i rustfritt stål og flekker generelt alt. Gjør dette ute eller i et uthus borte fra alt. Ikke hell rester ned i kloakkene, det er flott å drepe bakterier som ikke er det vannmyndigheten ønsker å fremme i sine septiktanker. For noen myndigheter er dette også ulovlig, så ikke gjør det.

Når du først dypper brettet ditt i løsningen, vil det få en nydelig rød bronsefarge når kobberet blir angrepet. Hvis den ikke gjør det, kan det hende at du fortsatt har et lag etsemotstand som hindrer etseren i å fungere, eller at løsningen din er feil. Hvis det er tilfelle, så er jeg redd for å komme tilbake til tegnebrettet, men det er ikke sannsynlig at etseren din tar feil hvis du fulgte ødeleggelsene.

Uansett, hvis alt er bra, har du noen perfekte spor beskyttet av etsemotstand.

Vanligvis på dette tidspunktet ville profesjonelle bruke et sett med masker for å utvikle seg rundt hullene og putene og produsere via kobber gjennom pluss bruk av en silke for å male komponentnumre osv. Dessverre har jeg ikke tid eller lyst til å gjøre mine veier bruke litt kobbertråd fra lag til lag … åpenbart er flerlag et nei nei med denne metoden. Hvis jeg er i humør, vil jeg omhyggelig legge til komponentnumre i utskriftslaget slik at du også kan etse komponentnumrene. Det kan spare tid i monteringen, men avhenger av hvor travelt brettet er.

Jeg avslører nå sporene i ytterligere 2 minutter eller så per side og dypper i utvikleren for å fjerne alt etsemotstanden.

Jeg borer nå viasene og eventuelle gjennomgående hull og tenner alle sporene og sjekker kontinuiteten med et multimeter. Denne delen er en ballsmerte, og du ville normalt ikke gjort for et profesjonelt produsert brett med ekte vias, men det er verdt å gjøre for å unngå via -ledningen blir bare loddet på den ene siden … skjedd så mange ganger!

Trinn 6: Montering av brettet

Montering av styret
Montering av styret
Montering av styret
Montering av styret
Montering av styret
Montering av styret

OK, så nå har jeg et brett klart til å gå, og jeg har boret alle vias og gjennom hull.

Tre alle vias med wire og loddetinn på begge sider. jeg liker å tinne alle sporene som en beskyttelse trenger ikke å gjøre det, men stopper kobberet å oksidere.

Jeg festet sd -kortet som er overflatemontert og la til to landinger for å få et loddetinn på det pluss at det har et par pinner på undersiden for å forankre det.

Deretter la vi til ADXL EEPROM etc.

Planmessig er planen å ta 5V fra USB eller ekstern flaggermus og mate den gjennom 3.3V reg på brettet. Jeg har en liten reg jeg kjøpte fra Ebay som er satt sammen som en modul og vurdert til 800mA … det er 300 gretaer enn USB kan gi. Jeg har ikke utført noen effektmålinger ennå som kan finjustere i programvaren …. kan bruke INAKTIVITET avbrudd fra ADXL for å håndtere. [WIP]

… trenger å legge til bilder etter hvert som bygget skrider frem.

Trinn 7: KODING

OK, jeg kommer ikke til å gå igjennom hele arduino -oppsettet ettersom noen andre har gjort en mye bedre jobb med det andre steder.

Jeg vil bare plukke ut de relevante bitene mens vi går, som kan brukes i et eget prosjekt.

Dette pågår fortsatt så langt opplasting til nettstedet er vurdert, men lar oss gå gjennom noen av koden.

Tanken er at den normale funksjonaliteten er init enhetene som består av GPS /display /sd -kort /sanntidsklokke /ext_flashmemory og akselerometer.

Etter det går vi inn i en sløyfe som venter på å se om avbruddstasten sw er trykket. Hvis det er så hoppe til konfigurator -menyen for å konfigurere wifi -nettverket til automatisk å logge på en enhet som er angitt som en inngang til nettsidekonfiguratoren. Først skanner den alle enheter for en ssid og lar deg deretter velge en og lagre den til å blinke med et flagg for å indikere at ved neste oppstart laste innstillingene fra flash. Du kan alltid overstyre dette ved å skrive inn ipaddress og skrive /killbill for å starte en rensing av blitsen og laste inn standard.

her er interrupt -funksjonen definert i koden for adxl -akselerometeret og hoppet til konfiguratoren på to separate pins. Vi bruker ADXL -interrupt for å avbryte på SHOCK -hendelsen. For begge interruptene setter vi et flagg som tilbakestilles i hoved "loop". slik ser det ut:

se på vedlagte kode

Trinn 8: Finne SDA SCL -pinner

bruk denne koden:

Serial.println (SDA);

Serial.println (SCL);

skriver ut pinnene som for øyeblikket er konfigurert i ESP for SDL og SCL

Det er en fil som brukes til å kartlegge pins til funksjoner som serielle porter i ESP32

Anbefalt: