Sadržaj:
- Korak 1: Upotreba Arduino milisekundnih vremenskih oznaka, Millis ()
- Korak 2: Dodavanje grafikona u meni
- Korak 3: Uređivanje izvora grafikona i oznaka
- Korak 4: Odabir formata datuma/vremena
- Korak 5: Generirajte i testirajte Arduino skicu
- Korak 6: Kako PfodApp bilježi datum/vrijeme od Millisa ()?
- Korak 7: Reprodukcija grafikona datuma/vremena na vašem računaru
- Korak 8: Kako izbjeći ograničenje od 49,7 dana (Millis ()) i zašto ne biste trebali
- Korak 9: Korištenje RTC -a (sata u stvarnom vremenu)
- Korak 10: Upotreba GPS modula
- Korak 11: Zaključak
Video: Arduino iscrtavanje datuma/vremena/evidentiranje pomoću Millisa () i PfodAppa: 11 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:06
Nije potrebno Arduino ili Android programiranje. 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 mobilnom uređaju pomoću pfodApp -a.
Nije potrebno Arduino ili Android programiranje. pfodApp također bilježi dovoljno podataka tako da kasnije možete reproducirati grafikone datuma/vremena u proračunskoj tablici.
Nisu potrebni RTC ili GPS modul, ali ako vaš Arduino projekt ima RTC (sat u stvarnom vremenu) ili GPS modul, oni se također mogu koristiti. U tim slučajevima pfodApp grafikoni će se automatski ispraviti za 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 zapisuju točno onakvi kakvi jesu, bez ispravke, međutim datoteka dnevnika također sadrži dovoljno informacija koje vam omogućuju da sami primijenite ove ispravke kada preuzimate zapisnike na 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 Androida.
pfodApp će se povezati putem WiFi -a, Bluetooth Classic -a, BLE -a i SMS -a. Besplatni pfodDesigner generira potpune Arduino skice za iscrtavanje datuma/vremena/evidentiranje za povezivanje sa 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 milisekundne vremenske oznake- millis () 2) Vaš projekt mikroprocesora ima sat u stvarnom vremenu (RTC)- pfodApp automatski ispravlja zanošenja. 3) Vaš projekt mikroprocesora ima GPS modul - pfodApp automatski ispravlja prijelazne sekunde kako se one pojavljuju (trenutno 18 sekundi do 2018).
Korak 1: Upotreba Arduino milisekundnih vremenskih oznaka, Millis ()
Postoje dva dijela upotrebe 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 tač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/evidentiranje. Ovaj primjer stvara izbornik za ploču Adafruit Feather 52 BLE koji čita A0. Vodič o Adafruit Feather nRF52 LE - Prilagođene kontrole s pfodApp -om prolazi kroz pfodDesigner korake 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 kroz korištenje besplatnog pfodDesigner -a za stvaranje uzorka grafikona datuma/vremena na vašem Android mobitelu. Kada ste zadovoljni prikazom, možete generirati Arduino skicu koja će to reproducirati kada se povežete s pfodApp. Nije potrebno Android programiranje, a budući da pfodDesigner generira potpune Arduino skice za veliki broj Arduino ploča, nije potrebno ni Arduino programiranje.
Korak 2: Dodavanje grafikona u meni
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 liste 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 tekst podebljan i veličina +7. Boja pozadine je ostavljena kao 'zadana' bijela
Vratite se nazad i kliknite na „Dodaj stavku menija“, pomaknite se prema dolje i odaberite „Dugme grafikona“koji otvara ekran za uređivanje gumba grafikona. Ovdje možete izmijeniti izgled dugmeta. U ovom slučaju tekst dugmeta je promijenjen u “Datum/vrijeme grafikon A0”, a ostale zadane postavke su ostavljene kakve jesu.
Ovo vam daje dugme u meniju koje će otvoriti ekran grafikona.
Korak 3: Uređivanje izvora grafikona i oznaka
Kliknite na dugme „Datum/vrijeme grafikona A0“da biste otvorili ekran Uređivanje grafikona na kojem možete pristupiti oznaci grafikona, formatu osi X, intervalu podataka grafikona 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 karte.
Zatim kliknite na „Uredi grafikon 1“i postavite oznaku grafikona (npr. A0), jedinice osi y (npr. Volti), pokažite maksimalno 3,6 V i povežite se s U/I pinom A0.
Pomaknite se gore i kliknite na „Pregled karte“do najnovijih 0 tačaka uzorka podataka, u intervalima od 1 sekunde, iscrtanih prema proteklom vremenu u minutama: sek.
Za sva protekla vremenska grafikona vodeće nulte jedinice se ne prikazuju, pa se na ovom grafikonu prikazuju samo ona vremena> 1 min.
Korak 4: 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 ekran “Uređivanje grafikona” i povećajte interval podataka grafikona na 15 minuta (pri dnu ovog ekrana)
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 se samo povećava.
Sada se vratite nazad i kliknite gumb X-osi da prikažete mali izbor svih mogućih formata podataka/vremena na osi X (pomaknite se prema dolje za više)
Gore je odabran pregled pregleda grafikona koristeći različite formate 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
Kada budete zadovoljni formatom grafikona i intervalom podataka, možete otići na ekran „Izbornik za uređivanje_1“i pomaknuti se prema dolje i „Generirati kôd“za odabranu ciljnu ploču. Evo uzorka skice za Adafruit Feather52 koristeći 1sec interval podataka i format mm: ss proteklog vremena, pfodFeather52_timeplot.ino
Iznad je parcela A0 iz Pera52
Promjenom formata u radni dan hr: min: sec (~ E HH: mm: ss) i ponovnom generiranjem koda (pfodFeather52_dateplot.ino) dobija se grafikon poput drugog gore.
Format osi X možete urediti izravno u Arduino skici, kako je opisano u nastavku.
Korak 6: Kako PfodApp bilježi datum/vrijeme od Millisa ()?
Kad se pfodApp poveže, pamti svoje 'lokalno' i UTC vrijeme i traži pfodDevice -ove (Arduino ploče) trenutne vremenske oznake podataka grafikona. Koristeći ove informacije, pfodApp tada može iscrtati vremenske oznake u milisekundama kao proteklo vrijeme, tj. Pretvaranje milisekundi u sati, minuta 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 Arduino generiranu skicu (npr. PfodFeather52_dateplot.ino), postoje tri mala boda koda koji rukuju Arduino stranom grafikona.
Odjeljak petlje () koda koji obrađuje pfodApp -ov {@} zahtjev za trenutno vrijeme
// obrađuje {@} zahtjev} else if ('@' == cmd) {// pfodApp traži 'trenutno' vrijeme plot_mSOffset = millis (); // snima trenutne milise kao pomake vremenskih oznaka rawdata podataka 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 () prilikom {@} zahtjeva i vraća {@`0}, tj. Trenutnu milisekundnu vremensku oznaku od nule. Zatim prilikom slanja rawdata bodova skica koristi
plot_1_var = analogRead (A0); // očitavanje unosa na ploču // plot_2_var plot Skriven tako da ovdje nisu dodijeljeni podaci // plot_3_var plot Skriven tako da ovdje nisu dodijeljeni 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 grafikona datuma/vremena je poruka iscrtavanja.
} else if ('A' == cmd) {// pritisnut korisnik - 'Prikaz datuma/vremena A0' // u glavnom meniju Menu_1 // vrati poruku crtanja. parser.print (F ("{= A0 Volti ~ E HH: mm: ss | datum | A0 ~~~ Volti ||}"));
Kada korisnik pritisne dugme „Datum/vrijeme grafikona A0“, pfodApp šalje {A} cmd na pfodDevice i pfodDevice odgovara sa porukom, {=… {= 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. pfodApp evidentiranje i iscrtavanje podataka i pfodSpecification.pdf imaju više detalja o poruci nacrta.
Korak 7: Reprodukcija grafikona datuma/vremena na vašem računaru
Prema zadanim postavkama, pfodApp zapisuje sve dolazne sirove podatke u datoteku dnevnika na vašem mobilnom telefonu, osim ako niste onemogućili ovo prijavljivanje na ekranu za uređivanje veze, pogledajte pfodAppForAndroidGettingStarted.pdf
Kada uređujete pfodApp, prikazuje se kratka poruka s lokacijom 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 (pogledajte pfodAppForAndroidGettingStarted.pdf za mogućnosti prijenosa), možete je otvoriti u proračunskoj tablici za iscrtavanje podataka.
Evo prvih nekoliko redova datoteke dnevnika.
// pfodApp V3.0.360, lokalno vrijeme, UTC, mS po danu, trenutno vrijeme pfod bluefruit52 (mS), trenutno vrijeme pfod bluefruit52, // povezano, 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,, Iznad možete vidjeti 'lokalno' i UTC vrijeme koje je pfodApp povezao s Feather52 i trenutno vrijeme u mS koje je Feather52 prijavio putem odgovora {@..}. Posljednja kolona je prazna jer nema RTC -a ili GPS -a, pa Feather52 nije prijavio trenutno vrijeme u gggg/MM/dd vremenu.
Da biste iscrtali podatke 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 OpenOffice-u, dijagram je raspršeni grafikon, a os x grafikona je formatirana 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 ponovo 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će '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 Kako pfodApp iscrtava datum/vrijeme iz millis () ?, ako ostanete povezani neprekidno više od 49,7 dana, vremenske oznake u milisekundama će se vratiti na nulu. Nekoliko redaka koda to može 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); // očitavanje unosa na plot // plot_2_var plot Skriven tako da nema podataka dodijeljenih ovdje // plot_3_var plot Skriven tako da ovdje nisu dodijeljeni podaci // slanje podataka grafikona u CSV formatu uint32_t timeStamp = millis ()-plot_mSOffset; if (timeStamp <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 -u….
Prilikom vraćanja odgovora {@.. obrišite i mSwrapCount.
// obrađuje {@} zahtjev} else if ('@' == cmd) {// pfodApp traži 'trenutno' vrijeme plot_mSOffset = millis (); // hvatanje trenutnih milisa 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 će sada 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 koristite ovu formulu 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 duže od 50 dana. Međutim, vjerojatno to ne želite učiniti jer postaju sve netočniji. Tipičan kristal od 16 Mhz koji se koristi za stvaranje millis () rezultata u mikro ima tačnost ~ 50ppm (dijelova na milion). To znači da nakon 49,7 dana vremenska oznaka u milisekundi može biti isključena za 3 ½ minute i da se zanemaruje utjecaj temperature na točnost kristala.
U kratkim periodima povezivanja ova nepreciznost ne predstavlja problem jer odgovor {@.. ponovno sinhronizira milisekundnu vremensku oznaku s datumom/vremenom mobilnog uređaja pri svakoj ponovnoj vezi. Međutim, ako želite ostati povezani na duže vrijeme (dana) i kontinuirano bilježiti podatke, trebali biste koristiti nešto preciznije od ugrađenog millisa (), kao što je RTC ili GPS modul.
Korak 9: Korištenje RTC -a (sata u stvarnom vremenu)
Dostupni su brojni RTC moduli, jedan od preciznijih je DS3231 npr. Adafruit -ov DS3231 modul. Navedena tačnost je +/- 2ppm na 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 vratite 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 traži 'trenutno' vrijeme plot_mSOffset = millis (); // hvatanje trenutnih milisa kao pomak sirovih vremenskih oznaka 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 na parser.print, prođite adresu & kao arg. parser.print ('}'); // kraj {@ odgovora npr. {@ `0 ~ 2019/4/19 3: 33: 5}….
// šalje datum datuma 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 vaših varijabli petlje ili čitanje ADC ulaza plot_1_var = analogRead (A0); // očitavanje unosa na plot // plot_2_var plot Skriven tako da nema podataka dodijeljenih ovdje // plot_3_var plot Skriven tako da ovdje nisu dodijeljeni podaci // slanje podataka grafikona u CSV formatu DateTime now = rtc.now (); sendDateTime (& sada); // šalje yyyy/M/d/H: m: s na parser.print, proslijedi adresu & 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 ~ 2019/4/19 3: 33: 5 odgovora {@ omogućava pfodApp -u da zna šta pfodDevice misli da su trenutni datum i vrijeme. Vaša skica tada može slati podatke pomoću vremenskih oznaka yMd Hms, a pfodApp će ih iscrtati ili kao proteklo vrijeme od vremena povezivanja ILI kao datum i vrijeme, ovisno o formatu osi X koji navedete.
Prilikom iscrtavanja datuma i vremena, rutina iscrtavanja pfodApp -a ispravlja svaki 'drift' u RTC -u upoređujući prijavljeno trenutno vrijeme pfodDevice -a sa trenutnim vremenom mobilnog uređaja. Ova korekcija 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šćenju Arduino milisekundnih vremenskih oznaka, korak 5 gore.
Evo primjera proračunske tablice sobnih temperatura u razdoblju od 8 dana, Office_Temp.xls Kada je datoteka dnevnika uvezena, prva kolona je označena kao YMD za pretvaranje teksta u datum/vrijeme. I dalje morate ukloniti vodeći 'oblik unosa lokalnog vremena, UTC -a i Office Temp -a da bi ih proračunska tablica tumačila kao datume i vremena.
Da biste dobili isti grafikon 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 novu kolonu koja sadrži (datum/vrijeme vremenska oznaka-trenutno vrijeme u Officeu) i koristite je kao os X na grafikonu (Office_TempElapsed.xls) Zapravo u ovom slučaju, pfodApp proizvodi ljepše protekle grafikone u danima hr: min: sek.
Korak 10: Upotreba 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, u januaru 2018.
Adafruit GPS biblioteka 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đe, iako GPS biblioteka isporučuje milisekunde koje imaju vrlo dobru dugoročnu tač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 prijemu serijskih podataka pri sporih 9600 b / h i drugog 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 generiranu od pfodDesigner za korištenje GPS modula, pod pretpostavkom da koristite Adafruit -ovu GPS biblioteku i da ste dodali kôd za primanje i raščlanjivanje poruka u GPS objekt.
// obrađuje {@} zahtjev} else if ('@' == cmd) {// pfodApp traži 'trenutno' vrijeme plot_mSOffset = millis (); // hvatanje trenutnih milisa kao pomak sirovih vremenskih oznaka 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 na parser.print, proslijedite adresu & kao arg. parser.print ('}'); // kraj {@ odgovora npr. {@`0 ~ 2019/4/19 3: 33: 5}….
// šalje datum datuma u parser printvoid sendDateTime (Adafruit_GPS* gps) {parser.print (F ("20"); // 20.. godina parser.print (gps-> godina, DEC); parser.print ('/ '); parser.print (gps-> mesec, 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-> druga, DEC); // parser.print ('.'); ako šaljete milisekunde // ako želite poslati mS morate unijeti vrijednost gps-> milisekundi s vodećim nulama // tj. 3 je potrebno dopuniti na 003}
void sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // ponovno pokretanje mjerača podataka grafikona, bez drifta // dodjeljivanje vrijednosti iscrtavanju varijabli iz vaših varijabli petlje ili čitanje ADC ulaza plot_1_var = analogRead (A0); // očitavanje unosa na plot // plot_2_var plot Skriven tako da ovdje nisu dodijeljeni podaci // plot_3_var plot Skriven tako da ovdje nisu dodijeljeni podaci // slanje podataka grafikona u CSV formatu sendDateTime (& GPS); // šalje yyyy/M/d/H: m: s na parser.print, proslijedi adresu & 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 upoređujući datum/vrijeme koje je GPS vratio pri povezivanju, putem {@ odgovora, s UTC datumom i vremenom mobilnog uređaja. Kreiranje grafikona u proračunskoj tablici iz pfodApp log datoteke isto je kao i za RTC module, gore. Dodavanje (lokalno vrijeme - trenutno temp. Uredske temp.) Vremenskim oznakama GPS -a ispravlja prijestupne sekunde.
millis () vremenske oznake nastavljaju raditi kao u Korišćenju Arduino milisekundnih vremenskih oznaka, korak 5 gore.
Korak 11: Zaključak
Korištenje pfodApp -a na Android mobilnom uređaju omogućuje vam iscrtavanje podataka u odnosu na datum i vrijeme ili proteklo vrijeme, koristeći samo Arduino -ovu funkciju millis (). Koristeći datoteku dnevnika pfodApp možete ponovno izraditi ove grafikone datuma/vremena u proračunskoj tablici. Ako vaš Arduino projekt ima RTC modul, možete evidentirati i iscrtati datum i vremenske oznake RTC -a, automatski ispravljajući RTC 'drift'. 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 sirovi podaci iz vašeg Arduino projekta bilježe se točno onako kako su primljeni, bez ispravke. Međutim, datoteka dnevnika pfodApp uključuje dodatne podatke koji vam omogućuju da ponovo napravite te ispravke u proračunskoj tablici iz preuzete datoteke dnevnika.
Nije potrebno kodiranje Androida. Formati zacrta su specificirani malim tekstualnim nizovima na vašoj Arduino skici. Besplatni pfodDesigner generira kompletne Arduino zapise podataka i skice za širok izbor Arduino ploča koje se povezuju putem WiFi -a, klasičnog Bluetootha, BLE -a i SMS -a
Preporučuje se:
Kako napraviti evidentiranje datuma i vremena - Liono Maker: 5 koraka
Kako napraviti evidentiranje datuma i vremena | Liono Maker: Uvod: -U ovom tutorijalu naučit ćemo kako zapisati datum i vrijeme pomoću Arduina. U tu svrhu koristim DS3231 & Moduli mikro SD kartice. Glavni modul koji se koristi za vrijeme & evidentiranje datuma je DS3231. DS3231 je RTC (pravi ti
Jednostavno bilježenje mobilnih podataka pomoću PfodAppa, Androida i Arduina: 5 koraka
Jednostavno bilježenje mobilnih podataka pomoću PfodAppa, Androida i Arduina: Moblie evidentiranje podataka pojednostavljeno pomoću pfodAppa, vašeg Andriod mobilnog telefona i Arduina. NIJE potrebno Android programiranje. Za iscrtavanje podataka na vašem Androidu pogledajte ovo kasnije Instuctable Jednostavno udaljeno iscrtavanje podataka pomoću Android / Arduino / pfodAppFor Iscrtavanje
Prikaz datuma, vremena i temperature pomoću XinaBox -a: 8 koraka
Prikaz datuma, vremena i temperature pomoću XinaBox -a: Cool OLED ekran koji prikazuje datum, vrijeme i temperaturu u Celzijusima i Farenhajtima koristeći Xinabox x čipove zasnovane na ESP8266
Sat sa IC daljinskim upravljačem za postavke vremena/datuma: 5 koraka
Sat sa IC daljinskim upravljačem za postavke vremena/datuma: Ovo je jednostavan sat napravljen pomoću lako dostupnih komponenti. Korišteni mikrokontroler je jeftin STM32F030F4P6. Ekran je 16x2 LCD sa I2C ruksakom (PCF8574). Satni krug se može izgraditi pomoću malih ploča za izradu prototipova i TSSOP -a
Potiskivanje datuma i vremena za brisanje aplikacije pomoću Wemos D1 Mini Pro: 10 koraka
Guranje datuma i vremena za brisanje aplikacije pomoću Wemos D1 Mini Pro: Koristit ćemo Wemos D1 Mini Pro za pomicanje vremena & datum za aplikaciju Blynk. Za ovu aktivnost nećete morati povezivati nikakve komponente na Wemos D1 Mini Pro