Sadržaj:

Arduino iscrtavanje datuma/vremena/evidentiranje pomoću Millisa () i PfodAppa: 11 koraka
Arduino iscrtavanje datuma/vremena/evidentiranje pomoću Millisa () i PfodAppa: 11 koraka

Video: Arduino iscrtavanje datuma/vremena/evidentiranje pomoću Millisa () i PfodAppa: 11 koraka

Video: Arduino iscrtavanje datuma/vremena/evidentiranje pomoću Millisa () i PfodAppa: 11 koraka
Video: Светодиодная матрица 8х8 2024, Studeni
Anonim
Arduino iscrtavanje datuma/vremena/bilježenje pomoću Millisa () i PfodAppa
Arduino iscrtavanje datuma/vremena/bilježenje pomoću Millisa () i PfodAppa

Nije potrebno programiranje Arduina ili Androida. Podržani su i RTC i GPS moduli. Automatska korekcija vremenskih zona, zanošenja RTC -a i GPS -a nedostaju prijestupne sekunde

Uvod

Ovaj vodič vam pokazuje kako koristiti vremenske oznake Arduino millis () za iscrtavanje podataka u odnosu na datum i vrijeme na vašem Android mobitelu pomoću pfodApp -a.

Nije potrebno Arduino ili Android programiranje. pfodApp također bilježi dovoljno podataka kako biste kasnije mogli reproducirati grafikone datuma/vremena u proračunskoj tablici.

Nisu potrebni RTC ili GPS modul, no ako vaš Arduino projekt ima RTC (sat u stvarnom vremenu) ili GPS modul, oni se također mogu koristiti. U tim će slučajevima pfodApp zacrtati automatski ispraviti vremensku zonu, RTC pomak i GPS koji nedostaju prijestupne sekunde. Za ove ispravke nije potreban poseban Arduino kôd. Kao i uvijek s pfodApp-om, primljeni se podaci bilježe točno onakvi kakvi jesu, bez ispravka, no datoteka dnevnika također sadrži dovoljno podataka koji vam omogućuju da sami primijenite ove ispravke kada preuzimate zapisnike na svoje računalo. U nastavku pogledajte primjere ove naknadne obrade.

Podržano je mnogo različitih vremenskih i datumskih oblikovanja osi X, a sve je u potpunosti kontrolirano kratkim tekstualnim nizovima na vašoj Arduino skici. Nije potrebno programiranje za Android.

pfodApp će se povezati putem WiFi -ja, Bluetooth Classic -a, BLE -a i SMS -a. Besplatni pfodDesigner generira potpune Arduino skice za iscrtavanje datuma/vremena/bilježenje radi povezivanja s raznim pločama. Nije potrebno Arduino programiranje.

Ovaj instruktor će koristiti Adafruit Feather52 kao primjer Arduino ploče, koja se povezuje putem BLE -a.

Ovo uputstvo pokriva tri slučaja:- 1) Vaš projekt mikroprocesora ima samo vremenske oznake u milisekundama- millis () 2) Vaš projekt mikroprocesora ima sat u stvarnom vremenu (RTC)- pfodApp automatski ispravlja pomake. 3) Vaš projekt mikroprocesora ima GPS modul - pfodApp automatski ispravlja prijelazne sekunde kako se one pojavljuju (trenutno 18 sekundi do 2018).

Korak 1: Korištenje Arduino milisekundnih vremenskih oznaka, Millis ()

Postoje dva dijela korištenja milisekundi za datum i vrijeme. Jedan je za crtanje podataka u odnosu na proteklo vrijeme ili datum/vrijeme, a drugi dio je ponovno stvaranje datuma i vremena iz evidentiranih milisekundnih vremenskih oznaka. pfodApp ne mijenja neobrađene podatke primljene od pfodDevice (Arduino mikro). Samo zapisuje točno primljene bajtove.

Prvo upotrijebite besplatni pfodDesigner za generiranje Arduino skice za vaš mikro koji će poslati milisekunde i mjerenja podataka u pfodApp za crtanje/bilježenje. Ovaj primjer stvara izbornik za ploču Adafruit Feather 52 BLE koja glasi A0. Vodič o Adafruit Feather nRF52 LE - Prilagođene kontrole s pfodAppom prolazi kroz korake pfodDesigner za stvaranje izbornika za Feather nRF52 koji uključuje gumb Chart, pa ga provjerite za više detalja. U ovom ćemo vodiču dodati samo gumb grafikona i upotrijebiti nove opcije formata osi X za iscrtavanje očitanja A0 u odnosu na proteklo vrijeme i datum/vrijeme.

Prvi dio ovog vodiča proći će pomoću besplatnog programa pfodDesigner za izradu uzorka grafikona datuma/vremena na vašem Android mobitelu. Kada ste zadovoljni prikazom, možete generirati Arduino skicu koja će to reproducirati pri povezivanju s pfodApp -om. Nije potrebno Android programiranje, a budući da pfodDesigner generira potpune Arduino skice za širok izbor Arduino ploča, nije potrebno niti Arduino programiranje.

Korak 2: Dodavanje grafikona u izbornik

Dodavanje grafikona u izbornik
Dodavanje grafikona u izbornik
Dodavanje grafikona u izbornik
Dodavanje grafikona u izbornik
Dodavanje grafikona u izbornik
Dodavanje grafikona u izbornik
Dodavanje grafikona u izbornik
Dodavanje grafikona u izbornik

Preuzmite aplikaciju pfodDesigner s Google Playa, otvorite je i kliknite "Pokreni novi izbornik"

Kliknite na “Target Serial”, a zatim na “Bluetooth Low Energy” za prikaz popisa nekih 11 BLE ploča (pomaknite se prema dolje da vidite ostale mogućnosti). Odaberite na Adafruit Bluefruit Feather52.

Vratite se na izbornik Uređivanje i kliknite na "Uredi upit" i postavite odgovarajući upit za ovaj izbornik, npr. "Pero52" i podebljani tekst i veličina +7. Boja pozadine ostavljena je kao "zadana" bijela

Vratite se nazad i kliknite na „Dodaj stavku izbornika“, pomaknite se prema dolje i odaberite „Gumb grafikona“koji otvara zaslon za uređivanje gumba grafikona. Ovdje možete promijeniti izgled gumba. U ovom slučaju tekst gumba promijenjen je u "Datum/vrijeme grafikon A0", a ostale zadane postavke ostavljene su kakve jesu.

To vam daje gumb na izborniku koji će otvoriti zaslon s grafikonom.

Korak 3: Uređivanje izvora karte i oznaka

Uređivanje izvora karte i oznaka
Uređivanje izvora karte i oznaka
Uređivanje izvora karte i oznaka
Uređivanje izvora karte i oznaka
Uređivanje izvora karte i oznaka
Uređivanje izvora karte i oznaka
Uređivanje izvora karte i oznaka
Uređivanje izvora karte i oznaka

Pritisnite gumb “Datum/vrijeme grafikona A0” da biste otvorili zaslon Uređivanje grafikona na kojem možete pristupiti oznaci grafikona, formatu osi X, intervalu podataka iscrtavanja i (pomicanjem prema dolje) samim postavkama grafikona. Uredite oznaku grafikona na nešto prikladno, npr. "A0 volti".

Pomaknite se prema dolje i za grafikone 2 i 3 otvorite Edit Plot i kliknite Hide Plot da biste ih uklonili s prikaza grafikona.

Zatim kliknite na "Uredi grafikon 1" i postavite oznaku grafikona (npr. A0), jedinice osi y (npr. Volti), pokažite maksimalno 3,6 V i spojite se na I/O pin A0.

Pomaknite se prema gore i kliknite "Pregled karte" do najnovijih 0 točaka uzorka podataka, u intervalima od 1 sekunde, iscrtanih prema proteklom vremenu u minutama: sekundama.

Za sva protekla vremenska grafikona vodeće nulte jedinice se ne prikazuju pa se na ovom grafikonu prikazuju samo one minute> 1min koje pokazuju vodeće minute.

Korak 4: Odabir formata datuma/vremena

Odabir formata datuma/vremena
Odabir formata datuma/vremena
Odabir formata datuma/vremena
Odabir formata datuma/vremena
Odabir formata datuma/vremena
Odabir formata datuma/vremena

Za grafikone proteklog vremena vodeća jedinica se samo povećava kako vrijeme prolazi. Da biste vidjeli primjer ovoga, vratite se na zaslon "Uređivanje grafikona" i povećajte interval podataka grafikona na 15 minuta (pri dnu ovog zaslona)

Zatim kliknite na Pregled grafikona za prikaz istih podataka uzorka, ali sada s intervalima od 15 minuta između uzoraka. Kao što vidite, minutni dio mm: ss samo se povećava.

Sada se vratite i kliknite gumb X-osi za prikaz malog izbora svih mogućih formata podataka/vremena na osi X (pomaknite se prema dolje za više)

Gore se nalazi izbor pregleda grafikona pomoću različitih formata osi X.

Ovdje prikazani grafikoni datuma/vremena nalaze se u 'lokalnoj' vremenskoj zoni. Postoje i opcije formata za iscrtavanje datuma/vremena u UTC -u. Za potpuni skup mogućih opcija formata datuma/vremena pogledajte pfodSpecification.pfd.

Korak 5: Generirajte i testirajte Arduino skicu

Generirajte i testirajte Arduino skicu
Generirajte i testirajte Arduino skicu
Generirajte i testirajte Arduino skicu
Generirajte i testirajte Arduino skicu

Nakon što ste zadovoljni s formatom grafikona i intervalom podataka, možete otići na zaslon “Izbornik za uređivanje_1” i pomaknuti se prema dolje i “Generirati kôd” za odabranu ciljanu ploču. Evo uzorka skice za Adafruit Feather52 koristeći 1sec interval podataka i format mm: ss proteklog vremena, pfodFeather52_timeplot.ino

Iznad je ploha A0 iz Pera52

Promjenom formata u radni dan hr: min: sec (~ E HH: mm: ss) i ponovnom generiranjem koda (pfodFeather52_dateplot.ino) dobivate grafikon poput drugog gore.

Format osi X možete urediti izravno u Arduino skici, kako je dalje opisano.

Korak 6: Kako PfodApp bilježi datum/vrijeme od tvrtke Millis ()?

Kad se pfodApp poveže, pamti svoje 'lokalno' i UTC vrijeme i traži pfodDevice -ove (na Arduino ploči) trenutne vremenske oznake podataka o grafikonu. Koristeći ove informacije, pfodApp tada može iscrtati vremenske oznake u milisekundama kao proteklo vrijeme, tj. Pretvaranje milisekundi u sate, minute itd., Ili iscrtati datum i vrijeme koje vremenske oznake u milisekundama predstavljaju u odnosu na vrijeme uspostavljanja veze i traženje trenutnog vremena pfodDevice.

Gledajući skicu generiranu Arduinom (npr. PfodFeather52_dateplot.ino), postoje tri mala boda koda koji rukuju Arduino stranom ploha.

Odjeljak koda loop () koji obrađuje pfodApp -ov {@} zahtjev za trenutnim vremenom

// obrađuje {@} zahtjev} else if ('@' == cmd) {// pfodApp je zatražio 'trenutno' vrijeme plot_mSOffset = millis (); // snimiti trenutne milise kao pomak vremenskih oznaka rawdata parser.print (F ("{@` 0} ")); // vraća `0 kao 'trenutne' sirove podatke u milisekundama

Mogli biste samo vratiti trenutnu vrijednost millis (), ali millis () se vraća unatrag na 0 svakih 49,7 dana, što bi dovelo do toga da grafikon skoči unatrag. Umjesto toga, kôd pamti trenutnu vrijednost millis () kada je upućen {@} zahtjev i vraća {@`0}, tj. Trenutnu milisekundnu vremensku oznaku od nule. Zatim prilikom slanja rawdata točaka skica koristi

plot_1_var = analogRead (A0); // očitavanje unosa na ploču // plot_2_var plot Skriven tako da se ovdje ne dodjeljuju podaci // plot_3_var plot Skriven tako da se ovdje ne dodjeljuju podaci // slanje podataka grafikona u CSV formatu parser.print (millis ()-plot_mSOffset); // vrijeme u milisekundama ….

tako da vremenska oznaka u milisekundama poslana s podacima počinje od 0 i povećava se do 49,7 dana. Ako ostanete povezani neprekidno 49,7 dana, vidjet ćete kako se radnja preskače unatrag za ~ 50 dana. Isključivanjem i ponovnim povezivanjem jednom svakih 49,7 dana to se izbjegava.

Treći dio datuma/vremena iscrtava poruku poruke.

} else if ('A' == cmd) {// pritisnut korisnik - 'Prikaz datuma/vremena A0' // u glavnom izborniku izbornika_1 // vrati poruku crtanja. parser.print (F ("{= A0 Volti ~ E HH: mm: ss | datum | A0 ~~~ Volti ||}"));

Kada korisnik pritisne gumb "Datum/vrijeme grafikona A0", pfodApp šalje {A} cmd na pfodDevice, a pfodDevice odgovara porukom crtanja, {=… {= A0 volti ~ E HH: mm: ss | datum | A0 ~~~ Volti ||} koji sadrži format X-osi E HH: mm: ss

Ovdje su prihvatljivi Java SimpleDateFormat formati. Zapisivanje podataka i iscrtavanje podataka pfodApp i pfodSpecification.pdf imaju više pojedinosti o poruci nacrta.

Korak 7: Reprodukcija grafikona datuma/vremena na vašem računalu

Reprodukcija grafikona datuma/vremena na vašem računalu
Reprodukcija grafikona datuma/vremena na vašem računalu
Reprodukcija grafikona datuma/vremena na vašem računalu
Reprodukcija grafikona datuma/vremena na vašem računalu
Reprodukcija grafikona datuma/vremena na vašem računalu
Reprodukcija grafikona datuma/vremena na vašem računalu

Prema zadanim postavkama, pfodApp bilježi sve dolazne sirove podatke u datoteku dnevnika na vašem mobitelu, osim ako ste onemogućili to zapisivanje na zaslonu za uređivanje veze, pogledajte pfodAppForAndroidGettingStarted.pdf

Kad uređujete pfodApp, prikazuje se kratka poruka s mjestom i nazivom datoteke dnevnika, npr. /pfodAppRawData/pfod_bluefruit52.txt Ta je datoteka u CSV formatu, razgraničena zarezima, a nakon što je prenesete na računalo (za mogućnosti prijenosa pogledajte pfodAppForAndroidGettingStarted.pdf), možete je otvoriti u proračunskoj tablici za iscrtavanje podataka.

Evo prvih nekoliko redaka log datoteke.

// pfodApp V3.0.360, lokalno vrijeme, UTC, mS dnevno, trenutno vrijeme pfod bluefruit52 (mS), trenutno vrijeme pfod bluefruit52, // povezano na, 2019./04/20 11: 32: 50.238, 2019/04/20 01: 32: 50.238, 86400000, 0, 366, 0.25,, 1366, 0.29,, 2366, 0.31,, 3366, 0.33,, 4366, 0.33,, Gore možete vidjeti 'lokalno' i UTC vrijeme koje je pfodApp povezao s Feather52 i trenutno vrijeme u mS koje je Feather52 prijavio putem odgovora {@..}. Posljednji stupac je prazan jer nema RTC -a ili GPS -a pa Feather52 nije prijavio trenutno vrijeme u gggg/MM/dd vremenu.

Za iscrtavanje podataka u odnosu na proteklo vrijeme oduzmite trenutno vrijeme (mS) od vremenske oznake u milisekundi, a zatim ga podijelite s vrijednošću mS po danu. Ovdje je proračunska tablica s dodanom formulom i iscrtanim rezultatom. Tablica u nastavku (pfod_bluefruit52.xls) je OpenOffice proračunska tablica spremljena u Excel formatu.

U OpenOfficeu iscrtavanje je raspršivanje, a os x crteža oblikovana je u HH: MM: SS Napomena: formati datuma/vremena proračunske tablice NISU isti kao formati grafikona koje koristi pfodApp. Na primjer u pfodApp -u, MM su mjeseci, a mm minute.

Da biste iscrtali datum i vrijeme, samo trebate dodati vrijeme povezivanja u vrijeme proračunske tablice i ponovno ga postaviti. (pfod_bluefruit52_date.xls)

Napomena: Lokalno vrijeme i UTC uvezeni su kao tekst u moju proračunsku tablicu pa sam morao ukloniti vodeći 'prije nego što sam ih upotrijebio u formuli.

Korak 8: Kako izbjeći ograničenje od 49,7 dana (Millis ()) i zašto ne biste trebali

Kao što je gore spomenuto u odjeljku Kako pfodApp iscrtava datum/vrijeme iz millis () ?, ako ostanete stalno povezani više od 49,7 dana, vremenske oznake u milisekundama će se vratiti na nulu. Nekoliko redaka koda može to izbjeći, ali se ne preporučuje.

Prvo kako izbjeći zamotavanje. Dodajte još jednu nepotpisanu int varijablu kako biste pratili koliko se puta vremenske oznake obilaze i ispisali kombinirani rezultat u HEX -u.

uint_t mSwrapCount = 0; uint32_t lastTimeStamp = 0;

… Plot_1_var = analogRead (A0); // čitanje unosa na ploču // plot_2_var plot Skriven tako da ovdje nema dodijeljenih podataka // plot_3_var plot Skriven tako da ovdje nema dodijeljenih podataka // slanje podataka grafikona u CSV formatu uint32_t timeStamp = millis ()-plot_mSOffset; if (vremenska oznaka <lastTimeStamp) {// vremenska oznaka vraćena na 0 mSwrapCount ++; // dodamo jedan za brojanje} lastTimeStamp = timeStamp; parser.print ("0x"); parser.print (msWrapCount, HEX); parser.print (timeStamp, HEX); // vrijeme u milisekundama u HEX ….

Prilikom vraćanja odgovora {@.. očistite i mSwrapCount.

// obrađuje {@} zahtjev} else if ('@' == cmd) {// pfodApp je zatražio 'trenutno' vrijeme plot_mSOffset = millis (); // snimiti trenutne milise kao pomak vremenskih oznaka rawdata mSwrapCount = 0; // brisanje broja omota. parser.print (F ("{@` 0} ")); // vraća `0 kao 'trenutne' sirove podatke u milisekundama

Vremenske oznake sada će dati 'ispravnu' vrijednost za sljedećih 40,7 dana * 65536 ~ = 7308 godina.

pfodApp će automatski pretvoriti heksadecimalne vremenske oznake za crtanje i zapisati ih točno onako kako su primljene, tj. u heksadecimalnom obliku. U (OpenOffice) proračunskoj tablici ovu formulu koristite za pretvaranje šesterokutnog niza u A2 u mS (gdje je A1 bilo koja prazna ćelija) = HEX2DEC (ZAMJENA (A2; 1; 2; A1))

Zašto to ne želite učiniti

Kao što je gore prikazano, lako je produžiti vremenske oznake mS na dulje od 50 dana. Međutim, vjerojatno to ne želite učiniti jer postaju sve netočniji. Tipični kristal od 16 Mhz koji se koristi za stvaranje millis () rezultata u mikro ima točnost od ~ 50ppm (dijelova na milijun). To znači da se nakon 49,7 dana vremenska oznaka u milisekundi može ugasiti za 3 ½ minute i da se zanemaruje utjecaj temperature na točnost kristala.

Tijekom kratkih razdoblja povezivanja ta nepreciznost ne predstavlja problem jer odgovor {@.. ponovno sinkronizira milisekundnu vremensku oznaku s datumom/vremenom mobilnog uređaja pri svakoj ponovnoj vezi. Međutim, ako želite ostati povezani dulje vrijeme (dana) i neprestano bilježiti podatke, trebali biste koristiti nešto točnije od ugrađenog millisa (), poput RTC ili GPS modula.

Korak 9: Korištenje RTC -a (sata u stvarnom vremenu)

Korištenje RTC -a (sata u stvarnom vremenu)
Korištenje RTC -a (sata u stvarnom vremenu)
Korištenje RTC -a (sata u stvarnom vremenu)
Korištenje RTC -a (sata u stvarnom vremenu)

Dostupni su brojni RTC moduli, jedan od točnijih je DS3231, npr. Adafruit -ov DS3231 modul. Navedena točnost je +/- 2ppm pri 0 do 40C. tj. ~ +/- 5 sec/mjesec.

Ako želite iscrtati podatke koji imaju vremenske oznake datuma/vremena, npr. 2019/04/19 20: 4: 34, tada morate izmijeniti odgovor {@ da biste vratili trenutni datum/vrijeme, npr. {@`0 ~ 2019./4/19 3: 33: 5}. Evo nekoliko primjera promjena koda koje treba primijeniti na skicu generiranu od pfodDesigner za korištenje RTC modula, pod pretpostavkom da koristite biblioteku RTClib i da ste dodali kôd za inicijalizaciju RTC modula.

// obrađuje {@} zahtjev} else if ('@' == cmd) {// pfodApp je zatražio 'trenutno' vrijeme plot_mSOffset = millis (); // hvatanje trenutnih milisa kao pomak vremenskih oznaka rawdata parser.print (F ("{@` 0 "}); // vraćanje` 0 kao 'trenutnih' sirovih podataka u milisekundama parser.print ('~'); // početni niz od date/time DateTime now = rtc.now () sendDateTime (& now); // pošaljite gggg/M/d/H: m: s u parser.print, prođite adresu & kao arg. parser.print ('}'); // kraj {@ odgovora npr. {@ `0 ~ 2019/4/19 3: 33: 5}….

// slanje datuma i vremena u parser printvoid sendDateTime (DateTime* dt) {parser.print (dt-> godina (), DEC); parser.print ('/'); parser.print (dt-> mjesec (), DEC); parser.print ('/'); parser.print (dt-> dan (), DEC); parser.print (''); parser.print (dt-> sat (), DEC); parser.print (':'); parser.print (dt-> minuta (), DEC); parser.print (':'); parser.print (dt-> drugi (), DEC); }

void sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // ponovno pokretanje mjerača podataka grafikona, bez drifta // dodjeljivanje vrijednosti iscrtavanju varijabli iz varijabli petlje ili čitanje ADC ulaza plot_1_var = analogRead (A0); // očitavanje unosa na ploču // plot_2_var plot Skriven tako da se ovdje ne dodjeljuju podaci // plot_3_var plot Skriven tako da ovdje nisu dodijeljeni nikakvi podaci // slanje podataka grafikona u CSV formatu DateTime now = rtc.now (); sendDateTime (& sada); // pošaljite gggg/M/d/H: m: s u parser.print, proslijedite adresu i kao arg. parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // Parcela 2 je skrivena. Nisu poslani podaci. parser.print (','); // Parcela 3 je skrivena. Nisu poslani podaci. parser.println (); // kraj zapisa CSV podataka}}

Dio odgovora@@ ~ 2019./4/19 3: 33: 5 omogućuje pfodApp -u da zna što pfodDevice misli o trenutnom datumu i vremenu. Vaša skica tada može slati podatke s vremenskim oznakama yMd Hms, a pfodApp će ih iscrtati bilo kao proteklo vrijeme od vremena povezivanja ILI kao datum i vrijeme, ovisno o formatu osi X koji navedete.

Prilikom iscrtavanja prema datumu i vremenu, rutina iscrtavanja pfodApp ispravlja svaki "drift" u RTC -u uspoređujući prijavljeno trenutno vrijeme pfodDevice s trenutnim vremenom mobilnog uređaja. Ova ispravka također rukuje postavljanjem RTC -a na drugu vremensku zonu od lokalne vremenske zone vašeg mobilnog telefona. millis () vremenske oznake nastavljaju raditi kao u Korištenje Arduino milisekundnih vremenskih oznaka, korak 5 gore.

Evo primjera proračunske tablice sobnih temperatura tijekom razdoblja od 8 dana, Office_Temp.xls Kad je datoteka dnevnika uvezena, prvi je stupac označen kao YMD za pretvaranje teksta u datum/vrijeme. I dalje morate ukloniti vodeći 'oblik unosa lokalnog vremena, UTC -a i Office Temp -a kako bi ih proračunska tablica tumačila kao datume i vremena.

Da biste dobili isti crtež koji prikazuje pfodApp, morate izračunati "Ispravljeni datum/vrijeme". U ovom slučaju RTC vrijeme je 2 sekunde iza lokalnog vremena mobilnog telefona, pa se svakoj RTC vremenskoj oznaci dodaje (lokalno vrijeme - trenutno temp. Uredske temp.) Kako bi se dobilo pravo lokalno vrijeme.

Za grafikone proteklog vremena stvorite novi stupac koji sadrži (datum/vrijeme vremenska oznaka-trenutno vrijeme ureda) i upotrijebite to kao os X na grafikonu (Office_TempElapsed.xls) Zapravo u ovom slučaju, pfodApp proizvodi ljepše protekle vremenske grafikone u danima hr: min: sek.

Korak 10: Korištenje GPS modula

Korištenje GPS modula slično je korištenju RTC modula, samo što GPS moduli imaju dostupne milisekunde, godine počinju od 2000, a u vremenu nedostaju skočne sekunde UTC (vidi https://tycho.usno.navy.mil/leapsec.html) GPS datum i vrijeme trenutno su 18 sekundi ispred UTC -a, u siječnju 2018.

Knjižnica Adafruit GPS za Adafruit Ultimate GPS, za razliku od RTCliba, ne dodaje pomak od 2000 godina GPS godinama, pa je to potrebno dodati kada pošaljete vremensku oznaku datuma i vremena. Također, iako GPS knjižnica daje milisekunde koje imaju vrlo dobru dugoročnu točnost, one nisu baš precizne. Ažuriranje GPS -a vrši se samo jednom na svakih 100 ms, a zatim dolazi do dodatnog kašnjenja u primanju serijskih podataka pri sporih 9600 bauda i još jednog kašnjenja u njihovom raščlanjivanju. Sve to dodaje milisekundnu nepreciznost pri očitanju podataka s vremenskim žigom.

Evo nekoliko primjera izmjena koda koje treba primijeniti na skicu koju je generirao pfodDesigner za korištenje GPS modula, pod pretpostavkom da koristite Adafruit GPS biblioteku i da ste dodali kôd za primanje i raščlanjivanje poruka u GPS objekt.

// obrađuje {@} zahtjev} else if ('@' == cmd) {// pfodApp je zatražio 'trenutno' vrijeme plot_mSOffset = millis (); // hvatanje trenutnih milisa kao pomak vremenskih oznaka rawdata parser.print (F ("{@` 0 "}); // vraćanje` 0 kao 'trenutnih' sirovih podataka u milisekundama parser.print ('~'); // početni niz od datum/vrijeme sendDateTime (& GPS); // pošaljite gggg/M/d/H: m: s u parser.print, proslijedite adresu & kao arg. parser.print ('}'); // kraj {@ odgovora npr. {@`0 ~ 2019./4/19 3: 33: 5}….

// slanje datuma i vremena u parser printvoid sendDateTime (Adafruit_GPS* gps) {parser.print (F ("20"); // 20.. godina parser.print (gps-> godina, DEC); parser.print ('/ '); parser.print (gps-> mjesec, DEC); parser.print ('/'); parser.print (gps-> dan, DEC); parser.print (' '); parser.print (gps- > sat, DEC); parser.print (':'); parser.print (gps-> minuta, DEC); parser.print (':'); parser.print (gps-> drugi, DEC); // parser.print ('.'); ako šaljete milisekunde // ako želite poslati mS morate unijeti vrijednost gps-> milisekundi s početnim nulama // tj. 3 je potrebno nadopuniti na 003}

void sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // ponovno pokretanje mjerača podataka grafikona, bez drifta // dodjeljivanje vrijednosti iscrtavanju varijabli iz varijabli petlje ili čitanje ADC ulaza plot_1_var = analogRead (A0); // očitavanje unosa na ploču // plot_2_var plot Skriven tako da se ovdje ne dodjeljuju nikakvi podaci // plot_3_var plot Skriven tako da se ovdje ne dodjeljuju nikakvi podaci // šalju podatke grafikona u CSV formatu sendDateTime (& GPS); // pošaljite gggg/M/d/H: m: s u parser.print, proslijedite adresu i kao arg. parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // Parcela 2 je skrivena. Nisu poslani podaci. parser.print (','); // Parcela 3 je skrivena. Nisu poslani podaci. parser.println (); // kraj zapisa CSV podataka}}

Prilikom iscrtavanja datuma i vremena, pfodApp se automatski ispravlja za prijestupne sekunde. U siječnju 2018. GPS vrijeme je 18 sekundi ispred UTC -a. pfodApp to ispravlja uspoređujući datum/vrijeme koje GPS vraća pri povezivanju, putem odgovora {@, s UTC datumom i vremenom na mobilnom uređaju. Stvaranje grafikona u proračunskoj tablici iz zapisničke datoteke pfodApp isto je kao i za RTC module, gore. Dodavanje (lokalno vrijeme - trenutno temp. Ureda) u vremenske oznake GPS -a ispravlja prijestupne sekunde.

millis () vremenske oznake nastavljaju raditi kao u Korištenje Arduino milisekundnih vremenskih oznaka, korak 5 gore.

Korak 11: Zaključak

Korištenje pfodApp -a na Android mobitelu omogućuje vam iscrtavanje podataka u odnosu na datum i vrijeme ili proteklo vrijeme, koristeći samo Arduinovu funkciju millis (). Pomoću datoteke dnevnika pfodApp možete ponovno izraditi ove grafikone datuma/vremena u proračunskoj tablici. Ako vaš Arduino projekt ima RTC modul, možete zapisati i iscrtati datum i vremenske oznake RTC -a, automatski ispravljajući "zanošenje" RTC -a. Ako vaš Arduino projekt ima GPS modul, možete zapisati i iscrtati njegove vrlo točne vremenske oznake, a pfodApp će automatski ispraviti nedostajuće sekunde prijelaznih sekundi GPS -a.

U svim slučajevima neobrađeni podaci iz vašeg Arduino projekta bilježe se točno onako kako su primljeni, bez ispravka. Međutim, datoteka dnevnika pfodApp uključuje dodatne podatke koji će vam omogućiti da ponovno napravite te ispravke u proračunskoj tablici iz preuzete datoteke dnevnika.

Kodiranje za Android nije potrebno. Formati zacrta su specificirani malim nizovima teksta na vašoj Arduino skici. Besplatni pfodDesigner generira cjelovito Arduino bilježenje podataka i skice za širok izbor Arduino ploča koje se povezuju putem WiFi -a, klasičnog Bluetootha, BLE -a i SMS -a

Preporučeni: