INHOUDSOPGAWE:

Arduino datum/tyd plot/aanteken met behulp van Millis () en PfodApp: 11 stappe
Arduino datum/tyd plot/aanteken met behulp van Millis () en PfodApp: 11 stappe

Video: Arduino datum/tyd plot/aanteken met behulp van Millis () en PfodApp: 11 stappe

Video: Arduino datum/tyd plot/aanteken met behulp van Millis () en PfodApp: 11 stappe
Video: Web Programming - Computer Science for Business Leaders 2016 2024, Julie
Anonim
Arduino Datum/tyd plot/aanteken met Millis () en PfodApp
Arduino Datum/tyd plot/aanteken met Millis () en PfodApp

Geen Arduino- of Android -programmering nodig nie. RTC- en GPS -modules word ook ondersteun. Outomatiese regstelling vir tydsones, RTC -wegdrywing en GPS ontbreek sprongsekondes

Inleiding

Hierdie handleiding wys hoe u u Arduino millis () tydstempels kan gebruik om data op datum en tyd op u Android -selfoon met behulp van pfodApp te teken.

Geen Arduino- of Android -programmering nodig nie. pfodApp teken ook genoegsame data aan sodat u later die datum-/tydplotte in 'n sigblad kan weergee.

GEEN RTC- of GPS -module is nodig nie, maar as u Arduino -projek 'n RTC (Real Time Clock) of 'n GPS -module het, kan dit ook gebruik word. In daardie gevalle sal die pfodApp -erwe outomaties regstel vir tydsone, RTC -wegdrywing en ontbrekende sekondes van GPS. Geen spesiale Arduino -kode is nodig vir hierdie regstellings nie. Soos altyd met pfodApp, word die ontvangde data presies aangeteken, ongekorrigeer, maar die loglêer bevat ook voldoende inligting om hierdie regstellings self toe te pas wanneer u die logs na u rekenaar aflaai. Sien voorbeelde van hierdie naverwerking hieronder.

'N Groot verskeidenheid tyd- en datum-X-as-opmaak word ondersteun, wat almal volledig beheer word deur kort teksstringe in u Arduino-skets. Geen Android -programmering is nodig nie.

pfodApp maak verbinding via WiFi, Bluetooth Classic, BLE en SMS. Die gratis pfodDesigner genereer volledige Arduino -sketse om datum/tyd te teken/aan te teken om aan te sluit op 'n wye verskeidenheid borde. Geen Arduino -programmering is nodig nie.

Hierdie instruksies sal 'n Adafruit Feather52 gebruik as die voorbeeld Arduino -bord, wat via BLE verbind kan word.

Hierdie instruksies dek drie gevalle:- 1) Jou mikroverwerkerprojek het slegs tydstempels in millisekonde- millis () 2) Jou mikroverwerkerprojek het 'n Real Time Clock (RTC)- pfodApp maak outomaties reg vir wegdrywing. 3) Jou mikroverwerkerprojek het 'n GPS -module - pfodApp maak outomaties reg vir sprongsekondes soos dit plaasvind (tans 18 sekondes teen 2018).

Stap 1: Gebruik Arduino Millisecond tydstempels, Millis ()

Daar is twee dele om millisekondes vir datum en tyd te gebruik. Die een is om die data op te stel teen verloop van tyd of datum/tyd, en die ander deel is om die datum en tyd uit die aangemelde rou data millisekonde tydstempels te herskep. pfodApp verander nie die rou data wat van die pfodDevice (die Arduino -mikro) ontvang is nie. Dit teken net presies die grepe wat ontvang is aan.

Gebruik eers die gratis pfodDesigner om 'n Arduino -skets vir u mikro te genereer wat die millisekondes en datametings na pfodApp stuur vir plotte/aanteken. Hierdie voorbeeld skep 'n spyskaart vir die Adafruit Feather 52 BLE -bord wat A0 lees. Die tutoriaal oor Adafruit Feather nRF52 LE - Custom Controls met pfodApp gaan deur die pfodDesigner -stappe om 'n spyskaart vir die Feather nRF52 te skep wat 'n kaartknoppie bevat, so kyk gerus vir meer besonderhede. In hierdie handleiding voeg ons slegs 'n grafiekknoppie by en gebruik die nuwe X-as-formaatopsies om die A0-metings te teken teen verloop van tyd en datum/tyd.

Die eerste deel van hierdie tutoriaal word gebruik met die gratis pfodDesigner om 'n voorbeelddatum/tydkaart op u Android -selfoon te skep. As u tevrede is met die vertoning, kan u die Arduino -skets genereer wat dit weergee wanneer u met pfodApp skakel. Geen Android -programmering is nodig nie, en aangesien pfodDesigner volledige Arduino -sketse vir 'n wye verskeidenheid Arduino -borde genereer, is ook geen Arduino -programmering nodig nie.

Stap 2: Voeg 'n grafiek by die spyskaart

Voeg 'n grafiek by die spyskaart
Voeg 'n grafiek by die spyskaart
Voeg 'n grafiek by die spyskaart
Voeg 'n grafiek by die spyskaart
Voeg 'n grafiek by die spyskaart
Voeg 'n grafiek by die spyskaart
Voeg 'n grafiek by die spyskaart
Voeg 'n grafiek by die spyskaart

Laai die pfodDesigner -app van Google Play af, maak dit oop en klik op 'Begin nuwe spyskaart'

Klik op die "Doelreeks" en dan op die "Bluetooth lae energie" -knoppie om die lys van ongeveer 11 BLE -borde te vertoon (blaai af om die ander keuses te sien). Kies op Adafruit Bluefruit Feather52.

Gaan terug na die Editing -kieslys en klik op "Edit Prompt" en stel 'n geskikte prompt vir hierdie spyskaart in, bv. “Feather52” en teks vet en grootte +7. Die agtergrondkleur is gelaat as die 'standaard' wit

Gaan terug en klik op "Voeg menu -item by", blaai af en kies "Grafiek knoppie" wat die wysigingsskerm van die grafiek knoppie oopmaak. U kan die voorkoms van die knoppie hier verander. In hierdie geval word die teks van die knoppie verander na "Datum/tyd plot van A0" en die ander standaardinstellings is soos dit is.

Dit gee u 'n knoppie in die spyskaart wat die grafiekskerm sal oopmaak.

Stap 3: Redigering van die plotbron en etikette

Redigering van die plotbron en etikette
Redigering van die plotbron en etikette
Redigering van die plotbron en etikette
Redigering van die plotbron en etikette
Redigering van die plotbron en etikette
Redigering van die plotbron en etikette
Redigering van die plotbron en etikette
Redigering van die plotbron en etikette

Klik op die "Datum/tyd plot van A0" knoppie om die skerm Editing Plots oop te maak, waar u toegang kan kry tot die kaartetiket, X-as-formaat, plotdata-interval en (deur af te rol) die plot-instellings self. Wysig die kaartetiket na iets wat geskik is, bv. "A0 volt".

Blaai af en maak vir Plotte 2 en 3 oop Plot wysig en klik op Versteek plot om dit uit die grafiekvertoning te verwyder.

Klik dan op "Bewerk plot 1" en stel 'n plotkaart (bv. A0), yAxis -eenhede (bv. Volt), vertoon maksimum van 3,6V en maak verbinding met I/O -pen A0.

Blaai terug en klik op "Voorskou van die grafiek" na die mees onlangse 0 voorbeelddatapunte, met tussenposes van 1 sekonde, geteken teen verloop van tyd in minute: sekondes.

Vir alle verloopte tyd word erwe wat nul is, nie vertoon nie, dus in hierdie grafiek word slegs die tyd> 1 min.

Stap 4: Kies die datum/tydformaat

Kies die datum/tydformaat
Kies die datum/tydformaat
Kies die datum/tydformaat
Kies die datum/tydformaat
Kies die datum/tydformaat
Kies die datum/tydformaat

Vir verloop van tydsplotte neem die leidende eenheid net toe namate die tyd aanstap. Om 'n voorbeeld hiervan te sien, gaan terug na die skerm "Plotte bewerk" en verhoog die plotdata -interval tot 15 minute (onderaan hierdie skerm)

Klik dan op Chart Preview om dieselfde voorbeelddata te wys, maar nou met tussenposes van 15 minute tussen monsters. Soos u die minute -gedeelte van mm: ss kan sien, neem net toe.

Gaan nou terug en klik op die X-as-knoppie om 'n klein seleksie van alle moontlike X-as-data/tydformate te wys (blaai af vir meer)

Hierbo is 'n seleksie van grafiekvoorskoue met verskillende X-asformate.

Die datum/tydplotte wat hier getoon word, is in die 'plaaslike' tydsone. Daar is ook formaatopsies om datum/tyd in UTC te teken. Raadpleeg die pfodSpecification.pfd vir 'n volledige stel moontlike opsies vir datum/tyd.

Stap 5: Genereer en toets die Arduino -skets

Genereer en toets die Arduino -skets
Genereer en toets die Arduino -skets
Genereer en toets die Arduino -skets
Genereer en toets die Arduino -skets

Sodra u tevrede is met die formaat en data -interval van u grafiek, kan u na die "Editing Menu_1" skerm gaan en afrol en "Generate Code" vir u gekose teikenbord. Hier is 'n voorbeeldskets vir die Adafruit Feather52 met behulp van 1sek -data -intervalle en 'n mm: ss tydsformaat, pfodFeather52_timeplot.ino

Hierbo is 'n plot van A0 van die Feather52

As u die formaat verander na Weekday hr: mins: sec (~ E HH: mm: ss) en die generering van die kode (pfodFeather52_dateplot.ino) gee 'n plot soos die tweede een hierbo.

U kan die X-as-formaat direk in u Arduino-skets wysig, soos hieronder beskryf.

Stap 6: Hoe teken PfodApp die datum/tyd van millis () af?

As pfodApp aansluit, onthou dit die 'plaaslike' en UTC -tyd en versoek die tydstempels van die huidige plotdata van die pfodDevice (die Arduino -bord). Deur hierdie inligting te gebruik, kan pfodApp dan millisekonde tydstempels teken as 'n verstreke tyd, dit wil sê omskakel millisekondes in ure minute sek ens, of die datum en tyd wat die millisekonde tydstempels voorstel in verhouding tot wanneer die verbinding gemaak is en die huidige tyd van die pfodDevice aangevra is.

As ons kyk na die Arduino -gegenereerde skets (bv. PfodFeather52_dateplot.ino), is daar drie klein stukkies kode wat die Arduino -kant van die erwe hanteer.

Die lus () kode -afdeling wat die pfodApp se {@} huidige tydsversoek hanteer

// hanteer {@} versoek} anders as ('@' == cmd) {// pfodApp 'huidige' tyd plot_mSOffset = millis () versoek; // neem huidige millis op as verrekening van rou data tydstempels parser.print (F ("{@` 0} ")); // gee '0 as' huidige 'rou data millisekondes terug

U kan die huidige waarde van millis () net teruggee, maar millis () draai elke 49,7 dae terug na 0, wat die plot agteruit laat spring. So in plaas daarvan onthou die kode die huidige millis () waarde toe die {@} versoek gemaak is, en gee {@`0} dit wil sê 'n huidige tydstempel van nul in millisekonde. Die skets gebruik dan die ruwe datapunte

plot_1_var = analogRead (A0); // lees insette tot plot // plot_2_var plot Versteek sodat geen data hier toegewys word // plot_3_var plot Versteek sodat geen data hier toegewys is nie // stuur plotdata in CSV-formaat parser.print (millis ()-plot_mSOffset); // tyd in millisekondes ….

sodat die millisekonde tydstempel wat met die data gestuur word, by 0 begin en tot 49,7 dae styg. As u 49,7 dae voortdurend verbind bly, sien u dat die plot met ~ 50 dae agteruit spring. As u een keer elke 49,7 dae ontkoppel en weer koppel, word dit vermy.

Die derde deel van die datum/tyd plot is die plot boodskap.

} anders as ('A' == cmd) {// gebruiker ingedruk - 'Datum/tyd plot van A0' // in die hoofkieslys van Menu_1 // terugplot msg. parser.print (F ("{= A0 Volt ~ E HH: mm: ss | datum | A0 ~~~ Volt ||}"));

As die gebruiker op die knoppie "Datum/tyd plot van A0" druk, stuur pfodApp die {A} cmd na die pfodDevice en reageer die pfodDevice met die plotboodskap, {= … {= A0 Volt ~ E HH: mm: ss | date | A0 ~~~ Volt ||} wat die X-as-formaat bevat E HH: mm: ss

Java SimpleDateFormat -formate is hier aanvaarbaar. pfodApp Data Logging and Plotting en die pfodSpecification.pdf het meer besonderhede oor die plotboodskap.

Stap 7: Die weergawe van die datum/tydplotte op u rekenaar

Die weergawe van die datum/tydplotte op u rekenaar
Die weergawe van die datum/tydplotte op u rekenaar
Die weergawe van die datum/tydplotte op u rekenaar
Die weergawe van die datum/tydplotte op u rekenaar
Die weergawe van die datum/tydplotte op u rekenaar
Die weergawe van die datum/tydplotte op u rekenaar

PfodApp teken standaard al die inkomende roudata by 'n loglêer op u selfoon aan, tensy u hierdie aanmelding in die verbindingsbewerkingsskerm gedeaktiveer het, sien die pfodAppForAndroidGettingStarted.pdf

As u pfodApp wysig, verskyn 'n kort boodskap met die ligging en naam van die loglêer, bv. /pfodAppRawData/pfod_bluefruit52.txt Die lêer is in CSV -formaat, afgebakend deur kommas, en nadat u dit na u rekenaar oorgeplaas het (sien die pfodAppForAndroidGettingStarted.pdf vir oordragopsies), kan u dit in 'n sigblad oopmaak om die data te teken.

Hier is die eerste paar reëls van 'n log -lêer.

// pfodApp V3.0.360, plaaslike tyd, UTC, mS per dag, pfod bluefruit52 huidige tyd (mS), pfod bluefruit52 huidige tyd, // verbind om, 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,, Hierbo kan u die 'plaaslike' en UTC -tyd sien wat pfodApp aan die Feather52 gekoppel het en die huidige tyd in mS wat die Feather52 aangemeld het via die {@..} reaksie. Die laaste kolom is leeg, want daar is geen RTC of GPS nie en die Feather52 het dus geen huidige tyd in yyyy/MM/dd tyd aangemeld nie.

Trek die huidige tyd (mS) van die tydstempel van millisekondes af om die gegewens teen verloop van tyd te teken en deel dan met die waarde mS per dag. Hier is die sigblad met die formule bygevoeg en die resultaat geteken. Die sigblad hieronder (pfod_bluefruit52.xls) is 'n OpenOffice -sigblad wat in Excel -formaat gestoor is.

In OpenOffice is die plot 'n spreidiagram en die x-as van die plot is geformateer in HH: MM: SS Let wel: die datum/tydformate van die sigblad is NIE dieselfde as die plotformate wat deur pfodApp gebruik word nie. In pfodApp is MM byvoorbeeld maande en mm is minute.

Om 'n plot te maak teen datum en tyd, hoef u slegs die verbindingstyd by die sigbladtyd te voeg en weer oor te plaas. (pfod_bluefruit52_date.xls)

Let wel: die plaaslike tyd en UTC is as teks in my sigblad ingevoer, so ek moes die hoofletter verwyder voordat ek dit in 'n formule gebruik.

Stap 8: Hoe om die limiet van 49,7 dae () te vermy en waarom nie

Soos hierbo genoem in Hoe stel pfodApp datum/tyd vanaf millis () uit ?, as u meer as 49,7 dae aaneenlopend verbind bly, draai die millisekonde tydstempels terug na nul. 'N Paar reëls kode kan dit vermy, maar dit word nie aanbeveel nie.

Eerstens hoe om die omhulsel te vermy. Voeg nog 'n ongetekende int -veranderlike by om die aantal kere wat die tydstempels draai, by te hou en druk die gekombineerde resultaat in HEX.

uint_t mSwrapCount = 0; uint32_t lastTimeStamp = 0;

… plot_1_var = analogRead (A0); // lees insette tot plot // plot_2_var plot Versteek sodat geen data hier toegewys word // plot_3_var plot Versteek sodat geen data hier toegewys word nie // stuur plotdata in CSV-formaat uint32_t timeStamp = millis ()-plot_mSOffset; if (timeStamp <lastTimeStamp) {// timeStamp toegedraai terug na 0 mSwrapCount ++; // voeg een by count} lastTimeStamp = timeStamp; parser.print ("0x"); parser.print (msWrapCount, HEX); parser.print (timeStamp, HEX); // tyd in millisekondes in HEX….

As u die {@.. -antwoord terugstuur, moet u ook die mSwrapCount skoonmaak.

// hanteer {@} versoek} anders as ('@' == cmd) {// pfodApp 'huidige' tyd plot_mSOffset = millis () versoek; // vang huidige millis op as verrekening van roudatatydstempels mSwrapCount = 0; // duidelike wikkeltelling. parser.print (F ("{@` 0} ")); // gee '0 as' huidige 'rou data millisekondes terug

Die tydstempels gee nou die 'korrekte' waarde vir die volgende 40,7 dae * 65536 ~ = 7308 jaar.

pfodApp sal die heks -tydstempels vir plotte outomaties omskakel en dit presies aanteken soos ontvang, dit wil sê in heks. In die (OpenOffice) sigblad gebruik u hierdie formule om die heksstring, in A2, om te skakel na mS (waar A1 'n leë sel is) = HEX2DEC (VERVANG (A2; 1; 2; A1))

Waarom wil u dit nie doen nie?

Soos hierbo getoon, is dit maklik om die mS -tydstempels tot langer as 50 dae te verleng. U wil dit egter waarskynlik nie doen nie, want dit word toenemend onakkuraat. 'N Tipiese 16 Mhz kristal wat gebruik word om die millis () resultate in die mikro te skep, het 'n akkuraatheid van ~ 50ppm (dele per miljoen). Dit beteken dat die tydstempel van millisekondes na 49,7 dae 3 ½ minute kan wees en dit die effek van temperatuur op die kristalnauwkeurigheid ignoreer.

Gedurende kort verbindingsperiodes is hierdie onakkuraatheid geen probleem nie, aangesien die {@.. -reaksie die tydstempel van die millisekonde weer sinchroniseer met die datum/tyd van die selfoon op elke herverbinding. As u egter vir 'n lang tyd (dae) verbind wil bly en die data voortdurend wil aanteken, moet u iets meer akkuraat as die ingeboude millis () gebruik, soos 'n RTC- of GPS-module.

Stap 9: Gebruik 'n RTC (Real Time Clock)

Gebruik 'n RTC (Real Time Clock)
Gebruik 'n RTC (Real Time Clock)
Gebruik 'n RTC (Real Time Clock)
Gebruik 'n RTC (Real Time Clock)

Daar is 'n aantal RTC -modules beskikbaar, een van die meer akkurate modules is DS3231, bv. Adafruit se DS3231 -module. Die vermelde akkuraatheid is +/- 2ppm oor 0 tot 40C. dws ~ +/- 5 sek/maand.

As u data met tydstempels vir datum/tyd wil teken, bv. 2019/04/19 20: 4: 34, dan moet u die {@ reaksie verander om die huidige datum/tyd terug te gee, bv. {@`0 ~ 2019/4/19 3: 33: 5}. Hier is 'n paar voorbeelde van kodeveranderings wat van toepassing is op die pfodDesigner -gegenereerde skets vir die gebruik van 'n RTC -module, as u die RTClib -biblioteek gebruik en die kode bygevoeg het om die RTC -module te initialiseer.

// hanteer {@} versoek} anders as ('@' == cmd) {// pfodApp 'huidige' tyd plot_mSOffset = millis () versoek; // neem huidige millis op as verrekening van roudatatydstempels parser.print (F ("{@` 0 "}); // gee` 0 as 'huidige' rou data millisekondes parser.print ('~'); // begin string van datum/tyd DateTime nou = rtc.now () sendDateTime (& nou); // stuur jjjj/M/d/H: m: s na parser.print, gee adres en as arg. parser.print ('}'); // einde van {@ reaksie bv. {@ `0 ~ 2019/4/19 3: 33: 5}….

// stuur datum tyd na parser printvoid sendDateTime (DateTime* dt) {parser.print (dt-> jaar (), DEC); parser.print ('/'); parser.print (dt-> maand (), DEC); parser.print ('/'); parser.print (dt-> dag (), DEC); parser.print (''); parser.print (dt-> uur (), DEC); parser.print (':'); parser.print (dt-> minute (), DEC); parser.print (':'); parser.print (dt-> second (), DEC); }

void sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // herbegin plotdatatimer, sonder drift // toewys waardes aan plotveranderlikes uit u lusveranderlikes of lees ADC -insette plot_1_var = analogRead (A0); // lees insette tot plot // plot_2_var plot Versteek sodat geen data hier toegewys word // plot_3_var plot Versteek sodat geen data hier toegewys is nie // stuur plotdata in CSV -formaat DateTime nou = rtc.now (); sendDateTime (& nou); // stuur jjjj/M/d/H: m: s na parser.print, gee adres en as arg. parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // Plot 2 is versteek. Geen data gestuur nie. parser.print (','); // Plot 3 is versteek. Geen data gestuur nie. parser.println (); // einde van CSV -datarekord}}

Die ~ 2019/4/19 3: 33: 5 -deel van die {@ -antwoord laat pfodApp weet wat die pfodDevice dink die huidige datum en tyd is. U skets kan dan data stuur met yMd Hms-tydstempels en pfodApp sal dit as verloop van tyd vanaf die verbindingstyd OF as datum en tyd, afhangend van die X-as-formaat wat u spesifiseer.

As u op datum en tyd teken, korrigeer die pfodApp -plotroetine vir enige 'drift' in die RTC deur die gerapporteerde huidige tyd van pfodDevice te vergelyk met die huidige tyd van die selfoon. Hierdie regstelling hanteer ook die RTC wat op 'n ander tydsone as die plaaslike tydsone van u selfoon ingestel is. millis () tydstempels werk steeds soos in die gebruik van Arduino millisekonde tydstempels, stap 5 hierbo.

Hier is 'n voorbeeld van 'n sigblad van kamertemperature oor 'n tydperk van 8 dae, Office_Temp.xls Toe die loglêer ingevoer is, is die eerste kolom gemerk as YMD om die teks na 'n datum/tyd om te skakel. U moet nog steeds die voorste in die plaaslike tyd, UTC en Office Temp huidige tydinskrywings verwyder om die sigblad te laat interpreteer as datums en tye.

Om dieselfde plot te kry as wat pfodApp toon, moet u die 'Gekorrigeerde datum/tyd' bereken. In hierdie geval is die RTC -tyd 2 sekondes agter die plaaslike tyd van die selfoon, sodat elke RTC -tydstempel bygevoeg word (plaaslike tyd - huidige kantoortyd) om die regte plaaslike tyd te kry.

Vir verloop van tydplotte, skep 'n nuwe kolom met die (datum/tyd tydstempel-die kantoortyd huidige tyd) en gebruik dit as die X-as in die grafiek (Office_TempElapsed.xls) In hierdie geval produseer pfodApp mooier verloopte tydkaarte in dae uur: minute: sek.

Stap 10: Gebruik 'n GPS -module

Die gebruik van 'n GPS -module is soortgelyk aan die gebruik van 'n RTC -module, behalwe dat GPS -modules millisekondes beskikbaar het, jare begin by 2000 en die tyd ontbreek die UTC -sprongsekondes (sien https://tycho.usno.navy.mil/leapsec.html) Die GPS -datum en -tyd is tans 18 sekondes voor UTC, soos in Januarie 2018.

Die Adafruit GPS -biblioteek vir die Adafruit Ultimate GPS, in teenstelling met die RTClib, voeg nie die 2000 jaar -offset by die GPS -jare nie, dus dit moet bygevoeg word wanneer u die datum- en tydstempel stuur. Alhoewel die GPS -biblioteek millisekondes lewer met 'n baie goeie akkuraatheid op lang termyn, is dit nie baie presies nie. Die GPS -tydopdaterings is slegs een keer per 100 ms en dan is daar 'n ekstra vertraging om die reeksdata teen 'n stadige 9600 baud te ontvang en 'n verdere vertraging in die ontleding daarvan. Almal dra by tot die akkuraatheid van die millisekonde by die tydstempeling van data.

Hier is 'n paar voorbeelde van kodeveranderings wat van toepassing is op die pfodDesigner -gegenereerde skets vir die gebruik van 'n GPS -module, as u die GPS -biblioteek van Adafruit gebruik en die kode bygevoeg het om die boodskappe te ontvang en te ontleed in 'n GPS -voorwerp.

// hanteer {@} versoek} anders as ('@' == cmd) {// pfodApp 'huidige' tyd plot_mSOffset = millis () versoek; // neem huidige millis op as verrekening van roudatatydstempels parser.print (F ("{@` 0 "}); // gee` 0 as 'huidige' rou data millisekondes parser.print ('~'); // begin string van datum/tyd sendDateTime (& GPS); // stuur jjjj/M/d/H: m: s na parser.print, gee adres en as arg. parser.print ('}'); // einde van {@ reaksie bv. {@`0 ~ 2019/4/19 3: 33: 5}….

// stuur datum tyd na parser printvoid sendDateTime (Adafruit_GPS* gps) {parser.print (F ("20"); // 20.. jaar parser.print (gps-> jaar, DEC); parser.print ('/ '); parser.print (gps-> maand, DEC); parser.print ('/'); parser.print (gps-> dag, DEC); parser.print (' '); parser.print (gps- > uur, DEC); parser.print (':'); parser.print (gps-> minuut, DEC); parser.print (':'); parser.print (gps-> tweede, DEC); // parser.print ('.'); as u millisekondes // stuur, as u mS wil stuur, moet u die waarde gps-> millisekondes opdruk met voorste nulle // dws 3 moet opgevul word na 003}

void sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // herbegin plotdatatimer, sonder drift // toewys waardes aan plotveranderlikes uit u lusveranderlikes of lees ADC -insette plot_1_var = analogRead (A0); // lees insette tot plot // plot_2_var plot Versteek sodat geen data hier toegewys word nie // plot_3_var plot Versteek sodat geen data hier toegewys word nie // stuur plotdata in CSV -formaat sendDateTime (& GPS); // stuur jjjj/M/d/H: m: s na parser.print, gee adres en as arg. parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // Plot 2 is versteek. Geen data gestuur nie. parser.print (','); // Plot 3 is versteek. Geen data gestuur nie. parser.println (); // einde van CSV -datarekord}}

As u op datum en tyd teken, korrigeer die pfodApp outomaties vir skrikkel sekondes. Teen Januarie 2018 is GPS -tyd 18 sekondes voor UTC. pfodApp korrigeer hiervoor deur die datum/tyd wat deur die GPS teruggekeer is by die verbinding, via die {@ reaksie, te vergelyk met die UTC se datum en tyd van die selfoon. Die skep van erwe in 'n sigblad uit die pfodApp -loglêer is dieselfde as vir RTC -modules hierbo. Die byvoeging van die (plaaslike tyd - Huidige tyd vir kantoortempo) by die GPS -tydstempels korrigeer vir die sprongsekondes.

millis () tydstempels werk steeds soos in die gebruik van Arduino millisekonde tydstempels, stap 5 hierbo.

Stap 11: Gevolgtrekking

Deur pfodApp op u Android -selfoon te gebruik, kan u data teken teen datum en tyd of tydsverloop, met slegs die funksie van Arduino's millis (). Deur die pfodApp-loglêer te gebruik, kan u hierdie datum-/tydplotte weer in 'n sigblad vervaardig. As u Arduino -projek 'n RTC -module het, kan u die datum en die tydstempels van die RTC -tyd teken en plot, en dit outomaties regstel vir die RTC 'drift'. As u Arduino -projek 'n GPS -module het, kan u die baie akkurate tydstempels aanteken en teken, en pfodApp sal die ontbrekende sprongsekondes van die GPS outomaties regstel.

In alle gevalle word die rou data van u Arduino -projek presies aangeteken soos ontvang, ongekorrigeer. Die pfodApp-loglêer bevat egter ekstra data om u in staat te stel om hierdie regstellings weer in 'n sigblad uit die afgelaaide loglêer te produseer.

Geen Android -kodering is nodig nie. Die plotformate word almal gespesifiseer deur klein teksstringe in u Arduino -skets. Die gratis pfodDesigner genereer volledige Arduino -datalogging en teken sketse vir 'n wye verskeidenheid Arduino -borde wat via WiFi, Classic Bluetooth, BLE en SMS verbind word

Aanbeveel: