Kazalo:

Arduino načrtovanje datuma/časa/beleženje z uporabo Millisa () in PfodAppa: 11 korakov
Arduino načrtovanje datuma/časa/beleženje z uporabo Millisa () in PfodAppa: 11 korakov

Video: Arduino načrtovanje datuma/časa/beleženje z uporabo Millisa () in PfodAppa: 11 korakov

Video: Arduino načrtovanje datuma/časa/beleženje z uporabo Millisa () in PfodAppa: 11 korakov
Video: CS50 2015 - Week 4 2024, November
Anonim
Arduino načrtovanje datuma/časa/beleženje z uporabo Millisa () in PfodAppa
Arduino načrtovanje datuma/časa/beleženje z uporabo Millisa () in PfodAppa

Programiranje Arduino ali Android ni potrebno. Podprti so tudi moduli RTC in GPS. Samodejno popravljanje časovnih pasov, odmika RTC in GPS manjkajoče prestopne sekunde

Uvod

Ta vadnica vam prikazuje, kako s časovnimi žigi Arduino millis () za prikaz podatkov in datuma na mobilnem telefonu Android s pomočjo pfodApp.

Arduino ali Android programiranje ni potrebno. pfodApp zabeleži tudi dovolj podatkov, tako da lahko pozneje reproducirate datumske/časovne ploskev v preglednici.

Modul RTC ali GPS ni potreben, če pa ima vaš projekt Arduino RTC (ura v realnem času) ali modul GPS, jih lahko uporabite tudi. V teh primerih se grafikoni pfodApp samodejno popravijo glede na časovni pas, premik RTC in GPS manjkajoče preskočne sekunde. Za te popravke ni potrebna posebna koda Arduino. Kot vedno pri pfodApp-u se prejeti podatki beležijo takšni, kot so, nepopravljeni, vendar pa dnevnik vsebuje tudi dovolj informacij, ki vam omogočajo, da te popravke uporabite sami, ko dnevnike prenesete v računalnik. Za primere te naknadne obdelave glejte spodaj.

Podprto je veliko različnih časovnih in datumskih oblikovanj osi X, ki so v celoti nadzorovane s kratkimi besedilnimi nizi v skici Arduino. Programiranje za Android ni potrebno.

pfodApp se bo povezal prek WiFi, Bluetooth Classic, BLE in SMS. Brezplačni pfodDesigner ustvarja popolne skice Arduino za načrtovanje datuma/časa/beleženje za povezavo z različnimi ploščami. Arduino programiranje ni potrebno.

Ta navodila bodo za primer plošče Arduino uporabljala Adafruit Feather52, ki se poveže prek BLE.

To navodilo zajema tri primere:- 1) Vaš projekt mikroprocesorja ima le milisekundne časovne žige- millis () 2) Vaš projekt mikroprocesorja ima uro v realnem času (RTC)- pfodApp samodejno popravi premik. 3) Vaš projekt mikroprocesorja ima modul GPS - pfodApp samodejno popravi preskočne sekunde, ko se pojavijo (trenutno 18 sekund, kot je bilo leta 2018).

Korak: Uporaba časovnih oznak Arduino v milisekundah, Millis ()

Milisekunde za datum in čas uporabljata dva dela. Eden je za risanje podatkov glede na pretečeni čas ali datum/čas, drugi del pa je ponovno ustvarjanje datuma in časa iz zabeleženih milisekundnih časovnih žigov. pfodApp ne spreminja surovih podatkov, prejetih iz pfodDevice (mikro Arduino). Samo zabeleži točno prejete bajte.

Najprej uporabite brezplačni pfodDesigner, da ustvarite Arduino skico za vaš mikro, ki bo milisekunde in meritve podatkov poslala v pfodApp za risanje/beleženje. Ta primer ustvari meni za ploščo Adafruit Feather 52 BLE, ki se glasi A0. Vadnica o Adafruit Feather nRF52 LE - Kontrolniki po meri s pfodAppom sledi korakom pfodDesigner, da ustvari meni za Feather nRF52, ki vključuje gumb Chart, zato si oglejte več podrobnosti. V tej vadnici bomo dodali samo gumb grafikona in uporabili nove možnosti oblike osi X, da izmerimo odčitke A0 glede na pretečeni čas in datum/čas.

Prvi del te vadnice bo potekal z uporabo brezplačnega programa pfodDesigner za ustvarjanje vzorčnega grafikona datuma/časa na vašem mobilnem telefonu Android. Ko ste zadovoljni s prikazom, lahko ustvarite skico Arduino, ki jo bo reproducirala, ko se povežete s pfodApp. Programiranje za Android ni potrebno in ker pfodDesigner ustvarja popolne skice Arduino za najrazličnejše plošče Arduino, tudi programiranje Arduino ni potrebno.

2. korak: Dodajanje grafikona v meni

Dodajanje grafikona v meni
Dodajanje grafikona v meni
Dodajanje grafikona v meni
Dodajanje grafikona v meni
Dodajanje grafikona v meni
Dodajanje grafikona v meni
Dodajanje grafikona v meni
Dodajanje grafikona v meni

Prenesite aplikacijo pfodDesigner iz Googla Play, jo odprite in kliknite »Začni nov meni«

Kliknite na “Target Serial” in nato na “Bluetooth Low Energy”, da prikažete seznam kakih 11 plošč BLE (pomaknite se navzdol, če si želite ogledati druge možnosti). Izberite na Adafruit Bluefruit Feather52.

Vrnite se v meni Urejanje in kliknite »Uredi poziv« ter nastavite ustrezen poziv za ta meni, npr. “Pero52” in besedilo krepko ter velikost +7. Barva ozadja je ostala kot privzeta bela

Vrnite se nazaj in kliknite »Dodaj element menija«, se pomaknite navzdol in izberite »Gumb grafikona«, ki odpre zaslon za urejanje gumba grafikona. Tukaj lahko spremenite videz gumba. V tem primeru je bilo besedilo gumba spremenjeno v "Datum/čas grafikon A0", ostale privzete nastavitve pa so ostale nespremenjene.

Tako dobite gumb v meniju, ki odpre zaslon grafikona.

3. korak: Urejanje vira ploskve in oznak

Urejanje vira ploskve in oznak
Urejanje vira ploskve in oznak
Urejanje vira ploskve in oznak
Urejanje vira ploskve in oznak
Urejanje vira ploskve in oznak
Urejanje vira ploskve in oznak
Urejanje vira ploskve in oznak
Urejanje vira ploskve in oznak

Kliknite gumb »Datum/čas grafikona A0«, da odprete zaslon Urejanje ploskev, kjer lahko dostopate do oznake grafikona, oblike osi X, intervala podatkov ploskve in (s pomikanjem navzdol) samih nastavitev ploskve. Uredite oznako grafikona na nekaj primernega, npr. "A0 volti".

Pomaknite se navzdol in za ploskvi 2 in 3 odprite Edit Plot in kliknite Hide Plot, da jih odstranite s prikaza grafikona.

Nato kliknite »Uredi ploskev 1« in nastavite oznako ploskve (npr. A0), enote osi y (npr. Volti), prikažite največ 3,6 V in se povežite z V/I pin A0.

Pomaknite se navzgor in kliknite »Predogled grafikona« do zadnjih 0 vzorčnih podatkovnih točk v presledkih 1 s, narisanih glede na pretečeni čas v minutah: sekundah.

Za vse pretekle časovne ploskve začetne ničelne enote niso prikazane, zato so v tem grafikonu prikazani le tisti čas> 1 min, ki vodijo minute.

4. korak: Izbira oblike datuma/časa

Izbira oblike datuma/časa
Izbira oblike datuma/časa
Izbira oblike datuma/časa
Izbira oblike datuma/časa
Izbira oblike datuma/časa
Izbira oblike datuma/časa

Za pretekle časovne ploskev se vodilna enota s časom samo povečuje. Če si želite ogledati primer tega, se vrnite na zaslon »Urejanje ploskev« in povečajte interval podatkov ploskve na 15 minut (na dnu tega zaslona)

Nato kliknite na Predogled grafikona, da prikažete iste vzorčne podatke, vendar zdaj s presledki 15 minut med vzorci. Kot lahko vidite, se minutni del mm: ss samo povečuje.

Zdaj se vrnite in kliknite gumb na osi X, da prikažete majhen izbor vseh možnih oblik podatkov/časa osi X (pomaknite se navzdol za več)

Zgoraj je izbor predogledov grafikonov v različnih oblikah osi X.

Tu prikazani grafikoni datuma/časa so v "lokalnem" časovnem pasu. Obstajajo tudi možnosti oblikovanja datuma/časa v UTC. Za celoten nabor možnih možnosti zapisa datuma/časa glejte pfodSpecification.pfd.

5. korak: Ustvarite in preizkusite Arduino skico

Ustvarite in preizkusite Arduino skico
Ustvarite in preizkusite Arduino skico
Ustvarite in preizkusite Arduino skico
Ustvarite in preizkusite Arduino skico

Ko ste zadovoljni z obliko grafikona in podatkovnim intervalom, se lahko pomaknete na zaslon »Meni za urejanje_1« in se pomaknete navzdol in »Ustvari kodo« za izbrano ciljno ploščo. Tukaj je vzorčna skica za Adafruit Feather52 z 1 -sekundnimi podatkovnimi intervali in mm: ss pretečenim časovnim formatom, pfodFeather52_timeplot.ino

Zgoraj je ploskev A0 iz Peresa52

Če spremenite obliko v tedenski ur: min: sek (~ E HH: mm: ss) in znova ustvarite kodo (pfodFeather52_dateplot.ino), dobite ploskev, podobno drugi zgoraj.

Oblika osi X lahko uredite neposredno v skici Arduino, kot je opisano v nadaljevanju.

6. korak: Kako PfodApp nariše datum/čas iz Millisa ()?

Ko se pfodApp poveže, si zapomni svoj 'lokalni' in čas UTC ter zahteva trenutne časovne žige podatkov ploskve pfodDevice (plošča Arduino). S temi informacijami lahko pfodApp nato nariše milisekundne časovne žige kot bodisi pretečeni čas, to je pretvorbo milisekund v urne minute itd itd. Ali nariše datum in čas, ki jih predstavljajo milisekundni časovni žig glede na to, kdaj je bila povezava vzpostavljena in je bil zahtevan trenutni čas pfodDevice.

Če pogledamo skico, ustvarjeno z Arduinom (npr. PfodFeather52_dateplot.ino), obstajajo trije majhni kodi kode, ki obravnavajo Arduino stran ploskev.

Odsek kode zanke (), ki obravnava trenutno zahtevo časa pfodApp {@}

// obravnava {@} zahtevo} drugače, če ('@' == cmd) {// pfodApp zahteva 'trenutni' čas plot_mSOffset = millis (); // zajame trenutne milise kot odmik časovnih žigov rawdata parser.print (F ("{@` 0} ")); // vrne "0 kot" trenutne "surove podatke v milisekundah

Lahko bi samo vrnili trenutno vrednost millis (), vendar se millis () vsakih 49,7 dni vrne nazaj na 0, zaradi česar se ploskev skoči nazaj. Namesto tega si koda zapomni trenutno vrednost millis (), ko je bila poslana {@} zahteva, in vrne {@`0}, to je trenutni milisekundni časovni žig nič. Nato skica uporabi pri pošiljanju točk rawdata

plot_1_var = analogRead (A0); // preberite vnos v ploskev // plot_2_var plot Skrita, zato tukaj niso dodeljeni podatki // plot_3_var plot Skrita, zato tukaj niso dodeljeni podatki // pošljite podatke ploskve v formatu CSV parser.print (millis ()-plot_mSOffset); // čas v milisekundah ….

tako da se milisekundni časovni žig, ki je poslan s podatki, začne pri 0 in se poveča do 49,7 dni. Če ostanete neprekinjeno povezani 49,7 dni, boste videli, da se ploskev skoči nazaj za ~ 50 dni. Prekinitev in ponovna povezava enkrat na 49,7 dni se temu izogne.

Tretji del ploskev datuma/časa je sporočilo ploskev.

} else if ('A' == cmd) {// pritisnjen uporabnik - 'Datum/čas grafikon A0' // v glavnem meniju Menu_1 // vrne sporočilo načrtovanja. parser.print (F ("{= A0 voltov ~ E HH: mm: ss | datum | A0 ~~~ voltov ||}"));

Ko uporabnik pritisne gumb »Datum/čas grafikona A0«, pfodApp pošlje {A} cmd na pfodDevice in pfodDevice se odzove s sporočilom ploskve, {=… {= A0 voltov ~ E HH: mm: ss | datum | A0 ~~~ Volti ||}, ki vsebuje format osi X E HH: mm: ss

Formati Java SimpleDateFormat so tukaj sprejemljivi. PfodApp beleženje in risanje podatkov ter pfodSpecification.pdf vsebujeta več podrobnosti o sporočilu ploskve.

7. korak: Reprodukcija grafikonov datuma/časa v računalniku

Reprodukcija grafikonov datuma/časa na vašem računalniku
Reprodukcija grafikonov datuma/časa na vašem računalniku
Reprodukcija grafikonov datuma/časa na vašem računalniku
Reprodukcija grafikonov datuma/časa na vašem računalniku
Reprodukcija grafikonov datuma/časa na vašem računalniku
Reprodukcija grafikonov datuma/časa na vašem računalniku

Privzeto pfodApp beleži vse dohodne surove podatke v datoteko dnevnika na vašem mobilnem telefonu, razen če ste to onemogočili na zaslonu za urejanje povezave, glejte pfodAppForAndroidGettingStarted.pdf

Ko urejate pfodApp, se prikaže kratko sporočilo z lokacijo in imenom datoteke dnevnika, npr. /pfodAppRawData/pfod_bluefruit52.txt Ta datoteka je v formatu CSV, ločena z vejicami, in potem, ko jo prenesete v računalnik (glejte pfodAppForAndroidGettingStarted.pdf za možnosti prenosa), jo lahko odprete v preglednici, da narišete podatke.

Tu je prvih nekaj vrstic datoteke dnevnika.

// pfodApp V3.0.360, lokalni čas, UTC, mS na dan, pfod bluefruit52 trenutni čas (mS), pfod bluefruit52 trenutni čas, // povezan ob, 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,,

Zgoraj si lahko ogledate "lokalni" in UTC čas, ki ga je pfodApp povezal s Feather52, in trenutni čas v mS, ki ga je Feather52 poročal prek odgovora {@..}. Zadnji stolpec je prazen, ker ni RTC ali GPS, zato Feather52 ni poročal o trenutnem času v letih llll/MM/dd.

Če želite izrisati podatke glede pretečenega časa, od milisekundnega časovnega žiga odštejte trenutni čas (mS) in ga nato delite z mS na dnevno vrednost. Tukaj je preglednica z dodano formulo in izrisanim rezultatom. Spodnja preglednica (pfod_bluefruit52.xls) je preglednica OpenOffice, shranjena v Excelovi obliki.

V OpenOfficeu je risba razpršena ploskev in os x ploskve je bila oblikovana v HH: MM: SS Opomba: formati datuma/časa preglednice niso enaki kot formati ploskev, ki jih uporablja pfodApp. Na primer v pfodApp je MM mesec, mm pa minute.

Če želite izrisati datum in čas, morate času časov preglednice dodati le čas povezave in ga znova namestiti. (pfod_bluefruit52_date.xls)

Opomba: Lokalni čas in UTC sta bila uvožena kot besedilo v mojo preglednico, zato sem morala odstraniti začetnico ', preden sem jih uporabila v formuli.

Korak 8: Kako se izogniti omejitvi 49,7 dni (Millis ()) in zakaj ne bi smeli

Kot je omenjeno zgoraj v razdelku Kako pfodApp nariše datum/čas iz millis () ?, če ste neprekinjeno povezani več kot 49,7 dni, se bodo milisekundni časovni žig vrnili nazaj na nič. Nekaj vrstic kode se temu lahko izogne, vendar to ni priporočljivo.

Najprej, kako se izogniti ovijanju. Dodajte še eno nespremenljivo int spremenljivko, da boste spremljali, kolikokrat se časovni žig ovije, in združeni rezultat natisnili v HEX.

uint_t mSwrapCount = 0; uint32_t lastTimeStamp = 0;

… Plot_1_var = analogRead (A0); // prebere vnos v ploskev // plot_2_var plot Skrita, zato tukaj niso dodeljeni podatki // plot_3_var plot Skrita, zato tukaj niso dodeljeni podatki // pošiljanje podatkov ploskve v formatu CSV uint32_t timeStamp = millis ()-plot_mSOffset; if (timeStamp <lastTimeStamp) {// časovni žig zavit nazaj na 0 mSwrapCount ++; // dodamo eno za štetje} lastTimeStamp = timeStamp; parser.print ("0x"); parser.print (msWrapCount, HEX); parser.print (timeStamp, HEX); // čas v milisekundah v HEX….

Ko vrnete odgovor {@.., počistite tudi mSwrapCount.

// obravnava {@} zahtevo} drugače, če ('@' == cmd) {// pfodApp zahteva 'trenutni' čas plot_mSOffset = millis (); // zajema trenutne milise kot odmik časovnih žigov rawdata mSwrapCount = 0; // počisti število zavitkov. parser.print (F ("{@` 0} ")); // vrne "0 kot" trenutne "surove podatke v milisekundah

Časovni žigi bodo zdaj dali "pravilno" vrednost za naslednjih 40,7 dni * 65536 ~ = 7308 let.

pfodApp bo samodejno pretvoril šestnajstiške časovne žige za risanje in jih zapisal točno tako, kot jih je prejel, to je v šestnajstiško. V preglednici (OpenOffice) uporabite to formulo za pretvorbo šestnajstiškega niza v A2 v mS (kjer je A1 katera koli prazna celica) = HEX2DEC (REPLACE (A2; 1; 2; A1))

Zakaj tega ne želite storiti

Kot je prikazano zgoraj, je časovne žige mS enostavno podaljšati na več kot 50 dni. Vendar tega verjetno ne želite storiti, ker postajajo vse bolj nenatančni. Tipičen 16Mhz kristal, ki se uporablja za ustvarjanje milis () rezultatov v mikro, ima natančnost ~ 50ppm (dele na milijon). To pomeni, da se lahko po 49,7 dneh milisekundni časovni žig izklopi za 3 ½ minute, kar zanemarja vpliv temperature na natančnost kristala.

V kratkih obdobjih povezave ta nenatančnost ni problem, saj odziv {@.. ponovno sinhronizira milisekundni časovni žig z datumom/časom mobilnega telefona pri vsaki ponovni povezavi. Če pa želite ostati povezani dalj časa (dni) in neprekinjeno beležiti podatke, potem uporabite nekaj natančnejšega od vgrajenega millis (), na primer modul RTC ali GPS.

9. korak: Uporaba RTC (ura v realnem času)

Uporaba ure RTC (ura v realnem času)
Uporaba ure RTC (ura v realnem času)
Uporaba RTC (ura v realnem času)
Uporaba RTC (ura v realnem času)

Na voljo je več modulov RTC, eden bolj natančnih je DS3231 npr. Adafruit -ov modul DS3231. Navedena natančnost je +/- 2ppm nad 0 do 40C. torej ~ +/- 5 sekund/mesec.

Če želite narisati podatke, ki imajo časovne oznake datuma/časa, npr. 2019/04/19 20: 4: 34, nato morate spremeniti odgovor {@, da vrnete trenutni datum/čas, npr. {@`0 ~ 2019/4/19 3: 33: 5}. Tukaj je nekaj vzorčnih sprememb kode, ki jih je treba uporabiti za skico, ki jo ustvari pfodDesigner za uporabo modula RTC, ob predpostavki, da uporabljate knjižnico RTClib in ste dodali kodo, ki inicializira modul RTC.

// obravnava {@} zahtevo} drugače, če ('@' == cmd) {// pfodApp zahteva 'trenutni' čas plot_mSOffset = millis (); // zajame trenutne milise kot odmik časovnih žigov rawdata parser.print (F ("{@` 0 "}); // vrne" 0 kot "trenutne" surove podatke v milisekundah parser.print ('~ "); // začetni niz date/time DateTime now = rtc.now () sendDateTime (& now); // pošljite llll/M/d/H: m: s v parser.print, naslov za prenos & kot arg. parser.print ('}'); // konec {@ odziva, npr. {@ `0 ~ 2019/4/19 3: 33: 5}….

// pošiljanje datuma in časa razčlenjevalniku printvoid sendDateTime (DateTime* dt) {parser.print (dt-> leto (), DEC); parser.print ('/'); parser.print (dt-> mesec (), DEC); parser.print ('/'); parser.print (dt-> dan (), DEC); parser.print (''); parser.print (dt-> ura (), DEC); parser.print (':'); parser.print (dt-> minuta (), DEC); parser.print (':'); parser.print (dt-> drugo (), DEC); }

void sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // znova zaženite časovnik podatkov za ploskev, brez odmika // dodelite vrednosti za risanje spremenljivk iz spremenljivk zanke ali preberite vhode ADC plot_1_var = analogRead (A0); // branje vnosa v ploskev // plot_2_var plot Skrita, zato tukaj niso dodeljeni podatki // plot_3_var plot Skrita, zato tukaj niso dodeljeni podatki // pošiljanje podatkov ploskve v formatu CSV DateTime now = rtc.now (); sendDateTime (& zdaj); // pošljite yyyy/M/d/H: m: s v parser.print, naslov za prenos & kot arg. parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // Parcela 2 je skrita. Podatki niso poslani. parser.print (','); // Parcela 3 je skrita. Podatki niso poslani. parser.println (); // konec zapisa podatkov CSV}}

Del ~ 2019/4/19 3: 33: 5 odziva {@ omogoča pfodApp -u vedeti, kaj meni pfodDevice za trenutni datum in uro. Vaša skica lahko nato pošlje podatke s časovnimi žigi yMd Hms in pfodApp jih prikaže kot čas, ki je pretekel od časa povezave ALI kot datum in čas, odvisno od oblike osi X, ki jo določite.

Pri načrtovanju glede na datum in čas rutina načrtovanja pfodApp popravi morebitne "premike" v RTC s primerjavo trenutnega časa, ki ga poroča pfodDevice, s trenutnim časom mobilnega telefona. Ta popravek obravnava tudi nastavitev časovnega pasu RTC na drugačen časovni pas od lokalnega časovnega pasu vašega mobilnega telefona. časovni žig millis () še naprej deluje, kot pri uporabi milisekundnih časovnih žigov Arduino, korak 5 zgoraj.

Tukaj je primer preglednice sobnih temperatur v 8 -dnevnem obdobju, Office_Temp.xls Ko je bila datoteka dnevnika uvožena, je bil prvi stolpec označen kot YMD za pretvorbo besedila v datum/čas. Še vedno morate odstraniti začetni 'obrazec za lokalni čas, UTC in vnos trenutnega časa Office Temp, da jih preglednica razlaga kot datume in ure.

Če želite dobiti isto ploskev, ki jo prikazuje pfodApp, morate izračunati »Popravljen datum/čas«. V tem primeru čas RTC zaostaja 2 sekundi za lokalnim časom mobilnega telefona, zato se vsakemu časovnemu žigu RTC doda (lokalni čas - trenutni čas Office Temp), da dobite pravi lokalni čas.

Za grafikone preteklega časa ustvarite nov stolpec, ki vsebuje (datumski/časovni žig-trenutni čas uradnega časa) in ga uporabite kot os X v grafikonu (Office_TempElapsed.xls) Pravzaprav v tem primeru pfodApp izdela lepše pretečene časovne grafikone v dneh hr: min: sek.

10. korak: Uporaba modula GPS

Uporaba modula GPS je podobna uporabi modula RTC, le da imajo moduli GPS na voljo milisekunde, leta se začnejo pri letu 2000 in čas manjka skokovnih sekund UTC (glej https://tycho.usno.navy.mil/leapsec.html) Datum in čas GPS sta trenutno 18 sekund pred UTC, januarja 2018.

Knjižnica Adafruit GPS za Adafruit Ultimate GPS za razliko od RTCliba ne dodaja 2000 -letnega zamika letom GPS, zato ga je treba dodati, ko pošljete časovni žig datuma in časa. Čeprav knjižnica GPS zagotavlja milisekunde, ki imajo zelo dolgoročno natančnost, niso zelo natančne. Posodobitve časa GPS so samo enkrat na vsakih 100 mS, nato pa pride do dodatne zamude pri sprejemu serijskih podatkov pri počasnih 9600 baudih in še ene zamude pri njihovi razčlenitvi. Vse to prispeva k milisekundni natančnosti pri odčitkih podatkov s časovnim žigom.

Tukaj je nekaj vzorčnih sprememb kode, ki jih je treba uporabiti za skico, ki jo ustvari pfodDesigner za uporabo modula GPS, ob predpostavki, da uporabljate Adafruitovo knjižnico GPS in ste dodali kodo za sprejem in razčlenitev sporočil v objekt GPS.

// obravnava {@} zahtevo} drugače, če ('@' == cmd) {// pfodApp zahteva 'trenutni' čas plot_mSOffset = millis (); // zajame trenutne milise kot odmik časovnih žigov rawdata parser.print (F ("{@` 0 "}); // vrne" 0 kot "trenutne" surove podatke v milisekundah parser.print ('~ "); // začetni niz datum/čas sendDateTime (& GPS); // pošljite llll/M/d/H: m: s v parser.print, naslov mimo & kot arg. parser.print ('}'); // konec {@ odgovora npr. {@`0 ~ 2019/4/19 3: 33: 5}….

// pošiljanje datuma in časa razčlenjevalniku printvoid sendDateTime (Adafruit_GPS* gps) {parser.print (F ("20"); // 20.. leto parser.print (gps-> leto, DEC); parser.print ('/ '); parser.print (gps-> mesec, DEC); parser.print ('/'); parser.print (gps-> dan, DEC); parser.print (' '); parser.print (gps- > ura, DEC); parser.print (':'); parser.print (gps-> minuta, DEC); parser.print (':'); parser.print (gps-> druga, DEC); // parser.print ('.'); če pošiljate milisekunde // če želite poslati mS, morate vrednost gps-> milisekunde vnesti z vodilnimi ničlami // tj. 3 je treba dodati na 003}

void sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // znova zaženite časovnik podatkov za ploskev, brez odmika // dodelite vrednosti za risanje spremenljivk iz spremenljivk zanke ali preberite vhode ADC plot_1_var = analogRead (A0); // preberite vnos na ploskev // plot_2_var plot Skrita, zato tukaj niso dodeljeni podatki // plot_3_var plot Skrita, zato tukaj niso dodeljeni podatki // pošljite podatke ploskve v formatu CSV sendDateTime (& GPS); // pošljite yyyy/M/d/H: m: s v parser.print, naslov za prenos & kot arg. parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // Parcela 2 je skrita. Podatki niso poslani. parser.print (','); // Parcela 3 je skrita. Podatki niso poslani. parser.println (); // konec zapisa podatkov CSV}}

Pri načrtovanju glede na datum in čas se pfodApp samodejno popravi za prestopne sekunde. Januarja 2018 je čas GPS 18 sekund pred UTC. pfodApp to popravi tako, da primerja datum/čas, ki ga GPS vrne ob vzpostavljeni povezavi prek odziva {@, z datumom in uro UTC na mobilnem telefonu. Ustvarjanje ploskev v preglednici iz datoteke dnevnika pfodApp je enako kot zgoraj za module RTC. Dodajanje (lokalni čas - trenutni čas Office Temp) časovnim žigom GPS popravi prestopne sekunde.

časovni žig millis () še naprej deluje, kot pri uporabi milisekundnih časovnih žigov Arduino, korak 5 zgoraj.

11. korak: Zaključek

Uporaba pfodApp -a na mobilnem telefonu Android vam omogoča, da narišete podatke glede na datum in čas ali pretečeni čas, samo z uporabo funkcije Arduino millis (). Z uporabo dnevniške datoteke pfodApp lahko te grafikone datuma in časa znova ustvarite v preglednici. Če ima vaš projekt Arduino modul RTC, lahko zapišete datum in začrtate časovne žige RTC ter samodejno popravite "premik" RTC. Če ima vaš Arduino projekt modul GPS, ga lahko zapišete in narišete njegove zelo natančne časovne žige, pfodApp pa bo samodejno popravil manjkajoče preskočne sekunde GPS -a.

V vseh primerih se surovi podatki iz vašega projekta Arduino beležijo točno tako, kot so bili prejeti, nepopravljeni. Vendar datoteka dnevnika pfodApp vsebuje dodatne podatke, ki vam omogočajo, da te popravke znova ustvarite v preglednici iz prenesene datoteke dnevnika.

Kodiranje za Android ni potrebno. Vse oblike zapisa ploskev so določene z majhnimi besedilnimi nizi v skici Arduino. Brezplačni pfodDesigner ustvarja popolno Arduino beleženje podatkov in skice za najrazličnejše Arduino plošče, ki se povezujejo prek WiFi, Classic Bluetooth, BLE in SMS

Priporočena: