Indholdsfortegnelse:

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

Video: ESP32 ADXL345 DATALOGGER MED GPS_EXT RAM_EXT_RTC: 8 trin

Video: ESP32 ADXL345 DATALOGGER MED GPS_EXT RAM_EXT_RTC: 8 trin
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 jer derude, der leger med Wemos 32 LOLIN -tavlen, tænkte jeg, at jeg ville begynde at dokumentere nogle af mine fund hidtil.

Nuværende projekt er at interface til et ADXL345 accelerometer, og som billedet viser ovenfor, har jeg med succes forbundet det til lolin og konfigureret ADXL som en stødsensor.

Registrerne på ADXL er blevet oprettet som den vedhæftede pdf, og afbrydelsen har jeg konfigureret i koden til at spytte koden ud på den serielle port, når et stød er registreret.

Jeg konfigurerede også inaktivitetsregistret som en afbrydelse, og efter at have kontrolleret hvilken afbrydelse der er blevet udløst, spytter jeg de samme data ud.

Jeg bruger I2c -porten på LOLIN, og du vil se, at jeg har en rutine for at spytte registre ud på ADXL, så jeg kan kontrollere konfigurationen, mens fejlfinding. Denne funktion kører i en timerfunktion ved hjælp af tickerbiblioteket. Dette er en nyttig funktion til at konfigurere til fejlfinding og kontrol af registre, hvis du skriver noget derinde, som på mystisk vis får dataene til at gøre nogle mærkelige ting.

Jeg har normaliseret 2's komplimentdata i LOLIN og formateret det, så det kan importeres til excel.

Kig på den vedhæftede PDF med nogle data, jeg har importeret, og jeg har grafet i excel, der viser nogle tryk på ADXL, der udløses af en afbrydelse i triggerregistret ved hjælp af FIFO -tilstand.

FIFO -tilstand er en nyttig funktion, der ikke binder mikrofonen op, og den gemmer 32 prøver på en trigger. Kig igen på mine datadumper, og du kan se, hvor vi starter ved ground zero, og den sidste prøve er på 9,8 ms eller der omkring. X -linje på grafen viser timingen i mikrosekunder, der stiger fra venstre mod højre.

BEMÆRK Jeg har siden ændret den sidste graf for at vise tidslinje fra 9800 mikrosekunder. Første pop i FIFO er de tidligste data, resten er ældre. Visningen skal være fra højre til venstre.

Bemærk de tre ledninger til ADXL -kortet. SDA/SCL og INT fra INT 1. Igen, hvis du ser på registerindstillingerne og krydser databladet, giver det mening.

Dataprøven er fuld tilt ved 3200 prøver, hvilket giver 3125 usekunder mellem prøverne. Og en forudoptagelse af 4 prøver. Se pdf'en af dataene fra enheden i excel, og hver af de grafer, jeg har afbildet, viser mig flytte vinduet til optagelse.

Jeg lægger en kode til konfigurationen og afbryder, hvis nogen er interesseret.

Til I2C bruger jeg trådbiblioteket og har skrevet nogle funktioner omkring det.

Bemærk den lille datasniffer, som jeg har tilsluttet SDA/SDL, og ved hjælp af Sigrok kan jeg afkode I2C -bussen i realtid.

Næste trin er at gemme på SAN -disk, selvom jeg allerede har bevist, at det virker. Når det er gjort, vil jeg interface til det trådløse og uploade til et websted.

Jeg vil tilføje dette, når projektet udvides.

FODNOTE:

For de iagttagende derude vil du bemærke en stor bule i dåsen, der beskytter esp -chippen og en jumper på printkortet. Dette skyldes den hjemmehørende Cocker Spaniel, der inspicerede posten og besluttede at tygge tavlen, før jeg lod mig få adgang til den. Jeg tror, hun er en ikke -espressif fan !.

Som altid er jeg altid klar til spørgsmål, så spørg endelig.

Trin 1: SIGROK OG PULSEVIEW

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

Bare en hurtig omtale af pulsvisning og sigrok.

Dette er gratis software fra nettet, og det lille interfacekort med 8 logiske input er billigt fra ebay et al. Du vil bemærke et par billeder, jeg tog fra bussen, mens ADXL kørte, og det er så nyttigt igen til fejlfinding, da det har en indbygget dekoder til I2C.

Et omfang er fantastisk til at kontrollere signalniveauer, men håndafkodning af I2c er i bedste fald trættende, selvom jeg har oprettet en sløjfe før nu og håndfejlfindet. Du skal have en påskønnelse af lidt banging på havneniveau, som jeg har gjort på mange pic -projekter, men det er tidskrævende og tilbøjeligt til fejl … især om natten !!

Tak til de fyre, der skrev denne app. Det er en gud send til projekter i i2c, Bemærk D4 -linjen, der overvåger afbrydelseslinjen fra ADXL.

Trin 2: Tilføjelse til stødsensoren

Tilføjelse til stødsensoren
Tilføjelse til stødsensoren
Tilføjelse til stødsensoren
Tilføjelse til stødsensoren
Tilføjelse til stødsensoren
Tilføjelse til stødsensoren
Tilføjelse til stødsensoren
Tilføjelse til stødsensoren

Ok her har jeg tilføjet nogle eksterne enheder til stødsensoren for bevis på konceptet.

Undskyld rotterederne for nu, når det virker, vil jeg designe pcb'et, der forbinder alle komponenter og lægge det hele i en smuk kasse. Alle de vedhæftede elementer undtagen SD -kortet arbejder på i2c, som er på spi -bussen.

Til venstre for at vedhæfte er GPS -modulet, som er WIP, men jeg håber at have en løsning inden udgangen af denne uge.

Så det nuværende projekt består af:

ESP32 LOLIN -bord med trådløs.

PCF real -time ur. Holder styr på aktuel dato og tid. Jeg har groft loddet på et gammelt projektbord, jeg tidligere har ætset.

Ekstern blitz. Indeholder blandt andet setup -data for Accelerometer. Kapacitet 132k og kan dumpe nogle webdata på den for at lette menuer osv.

SPI SD -kort til lagring af filaccelerometerdata og logfiler. 8 GB, men kan udvides.

OLED -display til visning af menuer og et par andre ting.

Her er hvad det [i sidste ende] vil gøre

Overvåg stød og aktivitet, der overstiger baggrunden.

Registrer stødene på SD -kortet med tid og dato fra det indbyggede ur.

Stempel placeringen fra GPS til SD -kort, hvis det er muligt

Ved hjælp af et adgangspunkt uploades dataene til en webserver for at analysere dataene … dette kan være en mobiltelefon.

| Scanning efter adgangspunkter er en mulighed for LOLIN32, ligesom det er vært for en webserver til kommandoer og derefter oprette forbindelse som en klient til cloud -webserveren. Du kan altid bare tage sd -kortet ud og uploade det!

Der er stadig meget at gøre, men det går videre.

Trin 3: ADXL ADRESSE

ADXL ADRESSE
ADXL ADRESSE

Nu er her en sjov ting. Jeg købte ADXL 345 -chippen som et lille bord, for det var billigere end at købe en chip på egen hånd ….. hvordan virker det? Anyway efter det gik jeg i gang med at tilslutte den til i2c -bussen og fandt ud af, at jeg havde et sammenstød med eeprom med adresser, der effektivt starter ved 0x53, hvilket oversætter til en skrivning på A6 og en læsning på A7.

Så når du læser bumf, viser det sig, at hvis du tager SDO/ALT ADRESSE HØJ, kan du tvinge den til 1D

Det viser sig, at mit lille bræt er hardwired til jord på pin 12 i ADXL på trods af SDO -stiften, som ser ud til at du kan trække den højt. Prøv ikke dette derhjemme uden en begrænset strømforsyning …. Dette virker og får dig ud af prom -sammenstødet. Heldigvis gjorde de ikke kort under chippen, ellers ville jeg have været snookered og skulle fjerne chippen fra brættet. EEprom, som er en ekstra, jeg havde, er arrangeret som to sider på 64k som adresse 0x52 og 53. Når jeg gjorde dette, blev mit problem løst.

Når man læser websiden igen, siger den, at den er indstillet til 0x53, men den er med småt, så pas på!

Trin 4: Skematisk print af PCB

Her er en hurtig gennemgang af kredsløbet og komponenterne. Dette er i høj grad mit design og stadig WIP [Work In Progress] Skematikken blev designet og derefter oversat til kunstværket for sporene. Jeg har verificeret, at alle komponenter fungerer som forventet ved hjælp af mine rotter rede nærmer sig og samler mig nu på et bræt, der passer ind i en lille kasse [Detaljer følger]

Henviser til shocker.pdf.

Tavlen består af 8 hovedkomponenter

  1. SD -KORT OPBEVARING
  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ØS INTERFACE

Alt afhænger af accelerometeret.

ADXL'en er konfigureret til at afbryde processoren på INT1, som dirigeres til pin 14 på processoren. Koden i mikro'en er konfigureret til at opfange denne afbrydelse og indstille et flag, der aktiveres i hovedrutinen. Jeg tilføjer koden skitserer registrering af afbrydelsesrutinen og tilbagekaldsfunktionen senere.

ADXL understøtter afbrydelser i forskellige tilstande, f.eks. Et stød eller inaktivitet plus et par andre. Du kan maskere dem, der kildrer din fantasi baseret på, hvad du prøver at gøre. ADXL betjenes i FIFO -tilstand, så den gemmer 32 prøver for at fange chokhændelsen som XYZ [96 værdier]

Displayet ADXL RTC og EEPROM er alle drevet fra I2C. SD -kortet er forbundet til SPI I/O, og GPS -modulet er forbundet til de serielle porte på LOLIN mærket X12 X11.

Sekvensen er som følger Grib konstant de 232 data fra GPS -enheden og filtrer. Mens du har en gyldig GPS -tid, opdaterer RTC med indstillede intervaller. Afbryd lagervariabler til SD -kort, f.eks. Tid/Lat_Lng/Speed/Altitude/Store ADXL -registre i råformat 2's kompliment og ikke 2's komplement. Alle data er kommaafgrænset.

Du vil også bemærke, at der er en reset -pin, der er forbundet til pin 13. Denne pin starter den indbyggede webserver, så du kan oprette forbindelse til konfiguratoren for at oprette et adgangspunkt, der er gemt i EEPROM. Ved genstart vil processoren oprette forbindelse til adgangspunktet og få adgang til internettet for at uploade filer fra SD -kortet. Hvis der ikke er nogen data og ingen forbindelsespunkt, udfører enheden bare sin datalogningsproces til sd -kortet, som du kan forhøre ved hjælp af programmet [ShockerView.exe] [WIP] På serveren gemmes dataene i en SQL -database og vises [WIP]

Printkortene er vedhæftet til top og bund.

Trin 5: Kunstværk Etsningsprototype

Kunstværk Etsning Prototype
Kunstværk Etsning Prototype
Kunstværk Etsning Prototype
Kunstværk Etsning Prototype
Kunstværk Etsning Prototype
Kunstværk Etsning Prototype

Her er hvordan jeg producerer mine prototype boards

Print kunstværket på noget kraftigt papir. Jeg bruger 63 GSM fra smede, billige og muntre. Printeren er nøglen her. Du vil have så uigennemsigtigt som muligt og så rent som muligt. Min laserprinter kører nu, men det er godt til at printe ned til 10 tusind, mindre end at du har brug for noget specialudstyr, da kornet af sporingspapiret begynder at komme i vejen. Du kan købe specialpapir, men hey, det er for godt for mig. Jeg forfiner på nogen måde konstant mine designs, så det ville være for dyrt for lille mig. Hvis du har brug for et ordentligt bord, så spørg eksperterne om at gøre det.

Jeg prototype normalt mine tavler i sektioner og producerer derefter en finale med gerbers, som et internetfirma kan producere. Prototypen sorterer alle disse fejl og mangler, før der begås rigtige penge.

Når du har udskrevet billederne på to separate A4 -ark med sporing, skal du derefter klippe dem, så de både ligger over og sælger dem på plads. lad tilstrækkelig plads til, at dit dobbeltsidede bræt klemmer ind mellem lagene og sørg for, at den trykte side er mod printpladen. Lav et par slidser, så du kan skubbe brædderne ind og sælge tape det midlertidigt. Hvis du er forsigtig, kan du overlappe sellotape, så du kan fjerne markeringen uden at ødelægge sporingsbilledet.

Læg brættet med den ene side nedad i din UV -boks. NB Jeg lavede min ved hjælp af fire nye 13W UV -lamper og noget gammelt kontroludstyr og lavede en kasse med et klart glaspanel. Afstand var eksperimentel. Låget klemmes ned og klemmer skummet på bagsiden af brættet og tvinger masken mod glasset. Hvis du ikke gør dette, vil lyset underskære ætsemodstanden. Tænd og udsæt tavlen i 1 minut 40 sekunder pr. Side. Brug dit ur. Faktisk skal jeg ændre dette med en timer på det … åh ikke et andet projekt … måske køber jeg et … du ved, at du ikke plejer det! Tavlerne, jeg køber fra Mega Electronics, er de billige prototype -plader med ætsemodstand. Ætsresistenten er nogle gange lidt ujævn, men jeg har nogle brædder, jeg har haft i fire år, og de producerer stadig gode brædder til prototyper !!

Vær forsigtig, når du vender brættet om, lad det ikke glide, ellers får du noget skrammel.

Forbered nu din udvikler. Jeg bruger 2 hætter ved 18: 1, så det er to hætter udvikler og 36 hætter rent, uforfalsket postevand. Udvikleren kommer i en flaske eller pulverform, og en flaske holder mig normalt omkring 6 år !!. Bland det i en isbeholder OG BÆR HANDSKER. Læg ikke fingrene i det, ellers påvirker fedtet det. Temp kan være et problem om vinteren. Hold vandet ved 20 grader eller deromkring, det er ikke kritisk, men hvis det er koldt kan resultaterne være uforudsigelige. Jeg har gjort dette i januar i min garage med en kedel, så du kan kompensere.

Flyt forsigtigt beholderen fra side til side, når du har lagt dit bræt i den. Hvis du har gjort det rigtigt, vil du se en Magenta -strøm af ætsemodstand blive fjernet fra kobberet og afsløre et dejligt skinnende kobber mellem sporene. Vend det om med dine handsker for at kontrollere den anden side. Denne proces tager normalt cirka et minuts toppe, så når brættet er taget, tages brættet ud og skylles grundigt i varmt vand. Hvis det er kedeligt, er chancerne det mislykkedes.

Jeg har haft dette et par gange, men det er normalt fordi jeg undlod at bruge handsker eller temperaturen var for lav, eller jeg ødelagde eksponeringstiden på grund af en vis distraktion … hvorfor gør de dette midt i noget kritisk….

Vis mig dine raderinger

Ok, så nu har du et bræt med smukke grønne spor beskyttet af ætsemodstand og skal nu udgøre Ferric Chloride. Nu bruger jeg den samme isbeholder til at minimere affald og blande op til noterne på pakken. Jeg køber ferrikloridet i pakker med kugler, som du vejer ud og opløser i en opløsning. Fyld nok op til at fylde iskarret omkring 1/3 af vejen op. Hvis du fylder lige nok op til jobbet, kan du hælde det i en plastbeholder, og det vil holde længe.

DU SKAL BÆRE HANDSKER … ikke på grund af fedt osv., Men fordi hvis du ikke gør det, vil dine hænder være lyse orange i to uger. Jeg gjorde dette engang før et vigtigt møde i London, og det så ud til, at jeg var blevet tangeret. Men vær opmærksom på, at det her er grimt omkring alt kobber … og virkelig noget. Bær gammelt tøj, for hvis det kommer på dem, bliver det skraldespand. Det fastgøres til håndvaske i rustfrit stål og pletter generelt alt. Gør dette udenfor eller i et udhus væk fra alt. Hæld ikke resterne ned i kloakkerne, det er fantastisk til at dræbe bakterier, hvilket ikke er, hvad vandmyndigheden gerne vil fremme i deres septiktanke. For nogle myndigheder er dette også ulovligt, så gør det ikke.

Når du først dypper dit bræt i opløsningen, får det en dejlig rød bronzefarve, når kobberet angribes. Hvis det ikke gør det, kan du stadig have et lag ætsemodstand, der forhindrer ætsemidlet i at fungere, eller din løsning er forkert. Hvis det er tilfældet, så er jeg bange for at vende tilbage til tegnebrættet, men det er ikke sandsynligt, at din ætsemaskine tager fejl, hvis du fulgte ødelæggelserne.

Anyway, hvis alt er godt, har du nogle perfekte spor beskyttet af ætsemodstand.

Normalt på dette tidspunkt ville den professionelle bruge et sæt masker til at udvikle sig rundt om hullerne og puderne og producere via kobber igennem plus bruge en silketryk til at male komponentnumre osv. Desværre har jeg ikke tid eller lyst til at lave mine vias ved hjælp af noget kobbertråd fra lag til lag … åbenbart er flerlag et nej nej ved denne metode. Hvis jeg er i humør, vil jeg omhyggeligt tilføje komponentnumre til printlaget, så du også ætser komponentnumrene. Det kan spare lidt tid i samlingen, men afhænger af, hvor travlt brættet er.

Jeg udsætter nu sporene i yderligere 2 minutter eller deromkring pr. Side og dypper i udvikleren for at fjerne alt ætsemodstanden.

Jeg borer nu viaerne og eventuelle gennemgående huller og tin alle sporene og kontrollerer kontinuiteten med et multimeter. Denne del er en kuglesmerter, og du ville normalt ikke gøre for et professionelt produceret bord med ægte vias, men det er værd at gøre for at undgå via -ledningen bliver kun loddet den ene side … sket så mange gange!

Trin 6: Montering af tavlen

Samling af bestyrelsen
Samling af bestyrelsen
Samling af bestyrelsen
Samling af bestyrelsen
Samling af bestyrelsen
Samling af bestyrelsen

OK, så nu har jeg et bræt klar til at gå, og jeg har boret alle vias og gennem huller.

Tråd alle vias med tråd og loddetin på begge sider. Jeg kan lide at tin alle sporene som en beskyttelse behøver ikke at gøre det, men stopper kobberoxideringen.

Jeg vedhæftede sd -kortet, der er overflademonteret, og tilføjede to landområder for at få en loddetang på det, plus det har et par stifter på undersiden for at forankre det.

Dernæst tilføjet ADXL EEPROM osv.

Planmæssigt er planen at tage 5V fra USB eller ekstern flagermus og føre den gennem 3.3V reg på bordet. Jeg har en lille reg jeg købte fra Ebay, der er samlet som et modul og vurderet til 800mA … thats 300 gretaer end USB kan levere. Jeg har endnu ikke foretaget nogen effektmålinger, som kan justeres i softwaren …. kan bruge INAKTIVITET afbrydelse fra ADXL til at håndtere. [WIP]

… skal tilføje billeder efterhånden som byggeriet skrider frem.

Trin 7: KODING

OK, jeg går ikke igennem alt det arduino, der er oprettet, da en anden har gjort et meget bedre stykke arbejde med det andre steder.

Jeg vil bare udvælge de relevante bits undervejs, som kan bruges i et eget projekt.

Dette er stadig i gang, for så vidt angår upload til webstedet, men lader noget af koden gå igennem.

Ideen er, at den normale funktionalitet er init de enheder, der består af GPS /display /sd -kort /real -time ur /ext_flashmemory og accelerometer.

Derefter går vi ind i en loop og venter på at se, om der trykkes på afbrydelsestasten sw. Hvis den derefter hopper til konfiguratormenuen for at konfigurere wifi -netværket til automatisk at logge ind på en enhed, der er angivet som input til websidekonfiguratoren. Først scanner det alle enheder for en ssid og giver dig derefter mulighed for at vælge en og gemme den til at blinke med et flag for at angive, at indstillingerne fra flash skal indlæses ved næste opstart. Du kan altid tilsidesætte dette ved at indtaste ipaddressen og skrive /killbill for at starte en rensning af flash og indlæse standard.

her er afbrydelsesfunktionen defineret i koden for adxl -accelerometeret og springet til konfiguratoren på to separate ben. Vi bruger ADXL interrupt til at afbryde på SHOCK event. For begge afbrydelser sætter vi et flag, der nulstilles i hoved "loop". sådan ser det ud:

se den vedhæftede kode

Trin 8: Find SDA SCL Pins

brug denne kode:

Serial.println (SDA);

Serial.println (SCL);

udskriver stifterne, der aktuelt er konfigureret i ESP til SDL og SCL

Der er en fil, der bruges til at kortlægge pins til funktioner såsom serielle porte i ESP32

Anbefalede: