Satura rādītājs:

Arduino datuma/laika zīmēšana/reģistrēšana, izmantojot Millis () un PfodApp: 11 soļi
Arduino datuma/laika zīmēšana/reģistrēšana, izmantojot Millis () un PfodApp: 11 soļi

Video: Arduino datuma/laika zīmēšana/reģistrēšana, izmantojot Millis () un PfodApp: 11 soļi

Video: Arduino datuma/laika zīmēšana/reģistrēšana, izmantojot Millis () un PfodApp: 11 soļi
Video: Контроллер автоматического пуска-останова с часами реального времени DS3231 2024, Jūlijs
Anonim
Arduino datuma/laika zīmēšana/reģistrēšana, izmantojot Millis () un PfodApp
Arduino datuma/laika zīmēšana/reģistrēšana, izmantojot Millis () un PfodApp

Nav nepieciešama Arduino vai Android programmēšana. Tiek atbalstīti arī RTC un GPS moduļi. Automātiska laika joslu korekcija, RTC novirze un GPS trūkstošās lēciena sekundes

Ievads

Šī apmācība parāda, kā izmantot savus Arduino millis () laika zīmogus, lai attēlotu datus pret datumu un laiku savā Android mobilajā ierīcē, izmantojot pfodApp.

Nav nepieciešama Arduino vai Android programmēšana. pfodApp arī reģistrē pietiekami daudz datu, lai vēlāk varētu izklājlapā reproducēt datuma/laika grafikus.

Nav nepieciešams RTC vai GPS modulis, taču, ja jūsu Arduino projektam ir RTC (reālā laika pulkstenis) vai GPS modulis, tos var arī izmantot. Šādos gadījumos pfodApp grafiki automātiski izlabos laika joslu, RTC novirzi un GPS, kurā trūkst lēciena sekunžu. Šīm korekcijām nav nepieciešams īpašs Arduino kods. Kā vienmēr ar pfodApp, saņemtie dati tiek reģistrēti tieši tādi, kādi tie ir, un tie netiek laboti, tomēr žurnāla failā ir arī pietiekami daudz informācijas, lai ļautu jums pašiem piemērot šos labojumus, lejupielādējot žurnālus savā datorā. Šīs pēcapstrādes piemērus skatiet tālāk.

Tiek atbalstīta plaša laika un datuma X ass formatēšana, un to visu pilnībā kontrolē īsas teksta virknes jūsu Arduino skicē. Android programmēšana nav nepieciešama.

pfodApp izveidos savienojumu, izmantojot WiFi, Bluetooth Classic, BLE un SMS. Bezmaksas pfodDesigner ģenerē pilnīgas Arduino skices datuma/laika zīmēšanai/reģistrēšanai, lai izveidotu savienojumu ar dažādiem dēļiem. Nav nepieciešama Arduino programmēšana.

Šī pamācība izmantos Adafruit Feather52 kā Arduino plates piemēru, kas savienojas, izmantojot BLE.

Šī pamācība aptver trīs gadījumus:- 1) Jūsu mikroprocesoru projektam ir tikai milisekundes laika zīmogi- milis () 2) Jūsu mikroprocesoru projektam ir reālā laika pulkstenis (RTC)- pfodApp automātiski koriģē novirzes. 3) Jūsu mikroprocesoru projektam ir GPS modulis - pfodApp automātiski izlabo lēciena sekundes, kad tās notiek (pašlaik 18 sekundes 2018. gadā).

1. darbība: izmantojot Arduino milisekundes laika zīmogus, Millis ()

Datumam un laikam milisekundes izmantošanai ir divas daļas. Viens no tiem ir paredzēts, lai attēlotu datus pret pagājušo laiku vai datumu/laiku, bet otra daļa no jauna izveido datumu un laiku no reģistrētajiem neapstrādāto datu milisekundes laika zīmogiem. pfodApp nemaina izejas datus, kas saņemti no pfodDevice (Arduino micro). Tas tikai reģistrē saņemtos baitus.

Vispirms izmantojiet bezmaksas pfodDesigner, lai ģenerētu Arduino skici jūsu mikro, kas nosūtīs milisekundes un datu mērījumus uz pfodApp, lai uzzīmētu/reģistrētu. Šajā piemērā tiek izveidota izvēlne Adafruit Feather 52 BLE plāksnei ar uzrakstu A0. Apmācība par Adafruit Feather nRF52 LE - pielāgotas vadīklas ar pfodApp iziet pfodDesigner darbības, lai izveidotu Feather nRF52 izvēlni, kurā ir iekļauta diagrammas poga, tāpēc skatiet to, lai iegūtu sīkāku informāciju. Šajā apmācībā mēs pievienosim tikai diagrammas pogu un izmantosim jaunās X ass formāta opcijas, lai attēlotu A0 rādījumus pret pagājušo laiku un datumu/laiku.

Šīs apmācības pirmā daļa tiks izmantota, izmantojot bezmaksas pfodDesigner, lai Android datora ierīcē izveidotu datuma/laika diagrammas paraugu. Kad esat apmierināts ar displeju, varat ģenerēt Arduino skici, kas to atkārtos, kad izveidosit savienojumu ar pfodApp. Nav nepieciešama Android programmēšana, un, tā kā pfodDesigner ģenerē pilnīgas Arduino skices visdažādākajām Arduino plāksnēm, nav nepieciešama arī Arduino programmēšana.

2. darbība: diagrammas pievienošana izvēlnei

Diagrammas pievienošana izvēlnei
Diagrammas pievienošana izvēlnei
Diagrammas pievienošana izvēlnei
Diagrammas pievienošana izvēlnei
Diagrammas pievienošana izvēlnei
Diagrammas pievienošana izvēlnei
Diagrammas pievienošana izvēlnei
Diagrammas pievienošana izvēlnei

Lejupielādējiet lietotni pfodDesigner no Google Play, atveriet to un noklikšķiniet uz “Sākt jaunu izvēlni”

Noklikšķiniet uz “Mērķa sērija” un pēc tam uz pogas “Bluetooth zema enerģija”, lai parādītu aptuveni 11 BLE paneļu sarakstu (ritiniet uz leju, lai redzētu citas iespējas). Izvēlieties Adafruit Bluefruit Feather52.

Atgriezieties rediģēšanas izvēlnē un noklikšķiniet uz “Rediģēt uzvedni” un iestatiet šai izvēlnei piemērotu uzvedni, piem. “Feather52” un teksts treknrakstā un izmērs +7. Fona krāsa tika atstāta kā noklusējuma balta

Atgriezieties un noklikšķiniet uz “Pievienot izvēlnes vienumu”, ritiniet uz leju un atlasiet “Diagrammas poga”, kas atver diagrammas pogas rediģēšanas ekrānu. Šeit jūs varat mainīt pogas izskatu. Šajā gadījumā pogas teksts tika mainīts uz “A0 datuma/laika grafiks”, un pārējie noklusējuma iestatījumi tika atstāti tādi, kādi tie ir.

Tas dod jums pogu izvēlnē, kas atvērs diagrammas ekrānu.

3. darbība. Sižeta avota un iezīmju rediģēšana

Sižeta avota un iezīmju rediģēšana
Sižeta avota un iezīmju rediģēšana
Sižeta avota un iezīmju rediģēšana
Sižeta avota un iezīmju rediģēšana
Sižeta avota un iezīmju rediģēšana
Sižeta avota un iezīmju rediģēšana
Sižeta avota un iezīmju rediģēšana
Sižeta avota un iezīmju rediģēšana

Noklikšķiniet uz pogas “A0 datums/laiks”, lai atvērtu ekrānu Rediģēšanas diagrammas, kur varat piekļūt diagrammas etiķetei, X ass formātam, diagrammas datu intervālam un (ritinot uz leju) pašiem diagrammas iestatījumiem. Rediģējiet diagrammas etiķeti uz kaut ko piemērotu, piem. "A0 volti".

Ritiniet uz leju un 2. un 3. diagrammai atveriet Rediģēt diagrammu un noklikšķiniet uz Slēpt diagrammu, lai tos noņemtu no diagrammas displeja.

Pēc tam noklikšķiniet uz “Rediģēt diagrammu 1” un iestatiet diagrammas etiķeti (piemēram, A0), yAxis vienības (piemēram, volti), parādiet maksimālo vērtību 3,6 V un izveidojiet savienojumu ar I/O tapu A0.

Ritiniet atpakaļ uz augšu un noklikšķiniet uz “Diagrammas priekšskatījums” līdz pēdējiem 0 parauga datu punktiem ar 1 sekundes intervālu, kas attēlots pēc laika, kas pagājis minūtēs: sekundēs.

Visu pagājušo laiku diagrammas, kas norāda nulles vienības, netiek parādītas, tāpēc šajā diagrammā tikai tie laiki, kas> 1 min, ir parādīti sākuma minūtes.

4. solis: datuma/laika formāta izvēle

Datuma/laika formāta izvēle
Datuma/laika formāta izvēle
Datuma/laika formāta izvēle
Datuma/laika formāta izvēle
Datuma/laika formāta izvēle
Datuma/laika formāta izvēle

Pagājušā laika grafikiem vadošā vienība laika gaitā tikai palielinās. Lai redzētu piemēru, atgriezieties ekrānā “Zīmējumu rediģēšana” un palieliniet diagrammas datu intervālu līdz 15 minūtēm (šī ekrāna apakšdaļā)

Pēc tam noklikšķiniet uz Diagrammas priekšskatījums, lai parādītu tos pašus parauga datus, bet tagad ar 15 minūšu intervālu starp paraugiem. Kā redzat minūšu daļa mm: ss tikai palielinās.

Tagad atgriezieties un noklikšķiniet uz X ass pogas, lai parādītu nelielu visu iespējamo X ass datu/laika formātu izvēli (ritiniet uz leju, lai iegūtu vairāk)

Iepriekš ir diagrammu priekšskatījumu atlase, izmantojot dažādus X ass formātus.

Šeit redzamie datuma/laika grafiki ir norādīti “vietējā” laika joslā. Ir arī formāta opcijas, lai attēlotu datumu/laiku UTC. Pilnu iespējamo datuma/laika formāta opciju kopumu skatiet pfodSpecification.pfd.

5. darbība: ģenerējiet un pārbaudiet Arduino skici

Ģenerējiet un pārbaudiet Arduino skici
Ģenerējiet un pārbaudiet Arduino skici
Ģenerējiet un pārbaudiet Arduino skici
Ģenerējiet un pārbaudiet Arduino skici

Kad esat apmierināts ar diagrammas formātu un datu intervālu, varat atvērt ekrānu “Rediģēšanas izvēlne_1” un ritināt uz leju un “Ģenerēt kodu” jūsu izvēlētajai mērķa dēlei. Šeit ir Adafruit Feather52 skices paraugs, izmantojot 1 sekundes datu intervālus un mm: ss pagājušā laika formātu, pfodFeather52_timeplot.ino

Virs ir A0 gabals no Feather52

Mainot formātu uz nedēļas dienu hr: mins: sec (~ E HH: mm: ss) un atkārtoti ģenerējot kodu (pfodFeather52_dateplot.ino), tiek parādīts grafiks kā otrais iepriekš.

Jūs varat rediģēt X ass formātu tieši savā Arduino skicē, kā aprakstīts tālāk.

6. darbība. Kā PfodApp attēlo datumu/laiku no milis ()?

Kad pfodApp izveido savienojumu, tas atceras savu “vietējo” un UTC laiku un pieprasa pfodDevice (Arduino dēļa) pašreizējos diagrammas datu laika zīmogus. Izmantojot šo informāciju, pfodApp var uzzīmēt milisekundes laika zīmogus kā pagājušo laiku, t.i., pārvēršot milisekundes stundās un minūtēs utt., Vai uzzīmēt datumu un laiku, ko milisekundes laika zīmogi attēlo attiecībā pret savienojuma izveides laiku un pfodDevice pašreizējo laiku.

Skatoties Arduino ģenerētajā skicē (piemēram, pfodFeather52_dateplot.ino), ir trīs mazi koda biti, kas apstrādā zemes gabalu Arduino pusi.

Cilpas () koda sadaļa, kas apstrādā pfodApp {@} pašreizējā laika pieprasījumu

// apstrādāt {@} pieprasījumu} else if ('@' == cmd) {// pfodApp pieprasīja 'current' time plot_mSOffset = millis (); // notvert pašreizējos milis kā nobīdes neapstrādātu datu laika zīmogu parser.print (F ("{@` 0} ")); // atgriež "0" kā "pašreizējos" neapstrādāto datu milisekundes

Jūs varētu vienkārši atgriezt pašreizējo vērtību milis (), bet milis () ik pēc 49,7 dienām apvelk atpakaļ uz nulli, kas ļautu grafikam pāriet atpakaļ. Tā vietā kods atceras pašreizējo milis () vērtību, kad tika iesniegts {@} pieprasījums, un atgriež {@`0}, t.i., pašreizējo milisekundes laika zīmogu nulle. Tad, nosūtot rawdata punktus, skice izmanto

plot_1_var = analogRead (A0); // nolasīt ievadi uz zemes gabalu // plot_2_var plot Slēpts, tāpēc šeit nav piešķirti dati // plot_3_var plot ….

lai milisekundes laika zīmogs, kas nosūtīts kopā ar datiem, sākas ar 0 un palielinās līdz 49,7 dienām. Ja nepārtraukti paliksit savienots 49,7 dienas, tad redzēsit, ka sižets atkāpsies par ~ 50 dienām. Atvienojot un atkārtoti pievienojot reizi 49,7 dienās, tas tiek novērsts.

Datuma/laika grafika trešā daļa ir sižeta ziņojums.

} else if ('A' == cmd) {// lietotājs nospiež - 'Date/Time plot of A0' // izvēlnes_1 galvenajā izvēlnē // // return plotering msg. parser.print (F ("{= A0 volti ~ E HH: mm: ss | datums | A0 ~~~ volti ||}"));

Kad lietotājs nospiež pogu “A0 datuma/laika grafiks”, pfodApp nosūta {A} cmd uz pfodDevice, un pfodDevice atbild ar diagrammas ziņojumu, {=… {= A0 volti ~ E HH: mm: ss | date | A0 ~~~ Volti ||}, kas satur X ass formātu E HH: mm: ss

Šeit ir pieņemami Java SimpleDateFormat formāti. PfodApp datu reģistrēšana un attēlošana un pfodSpecification.pdf satur sīkāku informāciju par diagrammas ziņojumu.

7. darbība. Datuma/laika diagrammu reproducēšana datorā

Datuma/laika grafiku reproducēšana datorā
Datuma/laika grafiku reproducēšana datorā
Datuma/laika grafiku reproducēšana datorā
Datuma/laika grafiku reproducēšana datorā
Datuma/laika grafiku reproducēšana datorā
Datuma/laika grafiku reproducēšana datorā

Pēc noklusējuma pfodApp reģistrē visus ienākošos neapstrādātos datus jūsu mobilā žurnāla failā, ja vien neesat atspējojis šo reģistrēšanu savienojuma rediģēšanas ekrānā, skatiet pfodAppForAndroidGettingStarted.pdf

Rediģējot pfodApp, tiek parādīts īss ziņojums ar žurnāla faila atrašanās vietu un nosaukumu, piem. /pfodAppRawData/pfod_bluefruit52.txt Šis fails ir CSV formātā, atdalīts ar komatu un pēc pārsūtīšanas uz datoru (pārsūtīšanas iespējas skatiet pfodAppForAndroidGettingStarted.pdf), varat atvērt to izklājlapā, lai attēlotu datus.

Šeit ir dažas žurnāla faila rindas.

// pfodApp V3.0.360, vietējais laiks, UTC, mS dienā, pfod bluefruit52 pašreizējais laiks (mS), pfod bluefruit52 pašreizējais laiks, // pievienots, 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,, Augšpusē ir redzams vietējais un UTC laiks, ko pfodApp savienoja ar Feather52, un pašreizējais laiks mS, par kuru Feather52 ziņoja, izmantojot atbildi {@..}. Pēdējā sleja ir tukša, jo nav RTC vai GPS, un tāpēc Feather52 nav ziņojis par pašreizējo laiku gggg/MM/dd laikā.

Lai attēlotu datus par pagājušo laiku, no milisekundes laika spiedoga atņemiet pašreizējo laiku (mS) un pēc tam daliet ar mS dienas vērtību. Šeit ir izklājlapa ar pievienoto formulu un rezultātu. Zemāk esošā izklājlapa (pfod_bluefruit52.xls) ir OpenOffice izklājlapa, kas saglabāta Excel formātā.

Programmā OpenOffice diagramma ir izkliedes diagramma, un diagrammas x ass tika formatēta HH: MM: SS Piezīme: izklājlapas datuma/laika formāti NAV tādi paši kā pfodApp izmantotie diagrammas formāti. Piemēram, pfodApp MM ir mēneši un mm ir minūtes.

Lai uzzīmētu grafiku pret datumu un laiku, izklājlapas laikam jāpievieno tikai savienojuma laiks un jāpārveido. (pfod_bluefruit52_date.xls)

Piezīme. Vietējais laiks un UTC tika importēti kā teksts manā izklājlapā, tāpēc pirms to izmantošanas formulā man bija jānoņem vadošais '.

8. darbība. Kā izvairīties no 49,7 dienu ierobežojuma () un kāpēc nevajadzētu

Kā minēts iepriekš sadaļā Kā pfodApp attēlo datumu/laiku no milis () ?, ja nepārtraukti saglabājat savienojumu ilgāk par 49,7 dienām, milisekundes laika zīmogi tiks apgriezti atpakaļ līdz nullei. Dažas koda rindas to var izvairīties, taču tas nav ieteicams.

Vispirms, kā izvairīties no ietīšanas. Pievienojiet vēl vienu neparakstītu int mainīgo, lai izsekotu, cik reizes laika zīmogi apvijas un izdrukātu kopējo rezultātu HEX.

uint_t mSwrapCount = 0; uint32_t lastTimeStamp = 0;

… Plot_1_var = analogRead (A0); // nolasīt ievadi uz zemes gabalu // plot_2_var plot Slēpts, tāpēc šeit nav piešķirti dati // plot_3_var plot Slēpts, tāpēc šeit nav piešķirti dati // sižeta dati tiek nosūtīti CSV formātā uint32_t timeStamp = millis ()-plot_mSOffset; if (timeStamp <lastTimeStamp) {// timeStamp iesaiņots atpakaļ uz 0 mSwrapCount ++; // pievienot vienu skaitīšanai} lastTimeStamp = timeStamp; parser.print ("0x"); parsētājs.print (msWrapCount, HEX); parser.print (timeStamp, HEX); // laiks milisekundēs HEX….

Atgriežot atbildi {@.., notīriet arī mSwrapCount.

// apstrādāt {@} pieprasījumu} else if ('@' == cmd) {// pfodApp pieprasīja 'current' time plot_mSOffset = millis (); // notvert pašreizējos milis kā nobīdes neapstrādātu datu laika zīmogus mSwrapCount = 0; // skaidrs iesaiņojumu skaits. parser.print (F ("{@` 0} ")); // atgriež "0" kā "pašreizējos" neapstrādāto datu milisekundes

Laika zīmogi tagad sniegs “pareizo” vērtību nākamajām 40,7 dienām * 65536 ~ = 7308 gadiem.

pfodApp automātiski konvertēs sešstūra laika zīmogus zīmēšanai un reģistrēs tos tieši tā, kā tie saņemti, t.i. Izklājlapā (OpenOffice) jūs izmantojat šo formulu, lai heksadecimālo virkni A2 formātā pārvērstu mS (kur A1 ir jebkura tukša šūna) = HEX2DEC (REPLACE (A2; 1; 2; A1))

Kāpēc jūs nevēlaties to darīt

Kā parādīts iepriekš, mS laika zīmogus ir viegli pagarināt līdz vairāk nekā 50 dienām. Tomēr jūs, iespējams, nevēlaties to darīt, jo tie kļūst arvien neprecīzāki. Tipiska 16Mhz kristāla, ko izmanto, lai izveidotu milis () rezultātus mikro, precizitāte ir ~ 50 ppm (daļas uz miljonu). Tas nozīmē, ka pēc 49,7 dienām milisekundes laika zīmogs var izzust par 3½ min un tas neņem vērā temperatūras ietekmi uz kristāla precizitāti.

Īsā savienojuma laikā šī neprecizitāte nav problēma, jo atbilde {@.. atkārtoti sinhronizē milisekundes laika zīmogu ar mobilā tālruņa datumu/laiku katrā atkārtotā savienojuma izveidošanas reizē. Tomēr, ja vēlaties saglabāt savienojumu ilgu laiku (dienas) un nepārtraukti reģistrēt datus, jums vajadzētu izmantot kaut ko precīzāku par iebūvētajiem milis (), piemēram, RTC vai GPS moduli.

9. darbība. RTC (reālā laika pulksteņa) izmantošana

Izmantojot RTC (reālā laika pulksteni)
Izmantojot RTC (reālā laika pulksteni)
Izmantojot RTC (reālā laika pulksteni)
Izmantojot RTC (reālā laika pulksteni)

Ir pieejami vairāki RTC moduļi, viens no precīzākajiem ir DS3231 piem. Adafruit DS3231 modulis. Norādītā precizitāte ir +/- 2ppm virs 0 līdz 40C. i., ~ +/- 5 sekundes mēnesī.

Ja vēlaties uzzīmēt datus ar datuma/laika laika zīmogiem, piem. 2019/04/19 20: 4: 34, tad jums ir jāmaina {@ atbilde, lai atgrieztu pašreizējo datumu/laiku, piem. {@`0 ~ 2019/4/19 3: 33: 5}. Šeit ir dažas koda parauga izmaiņas, kas jāpiemēro pfodDesigner ģenerētajai skicei, lai izmantotu RTC moduli, pieņemot, ka izmantojat RTClib bibliotēku un esat pievienojis kodu, lai inicializētu RTC moduli.

// apstrādāt {@} pieprasījumu} else if ('@' == cmd) {// pfodApp pieprasīja 'current' time plot_mSOffset = millis (); // notver pašreizējos milisus kā nobīdes neapstrādātu datu laika zīmogus parser.print (F ("{@` 0 "}); // atgrieziet 0 kā" pašreizējos "neapstrādāto datu milisekundes parser.print ('~'); // sākuma virkne date/time DateTime now = rtc.now () sendDateTime (& tagad); // sūtīt gggg/M/d/H: m: s uz parser.print, nodot adresi & kā arg. parser.print ('}'); // {@ atbildes beigas, piemēram, {@ `0 ~ 2019/4/19 3: 33: 5}….

// nosūtīt datuma laiku parsētājam printvoid sendDateTime (DateTime* dt) {parser.print (dt-> gads (), DEC); parser.print ('/'); parsētājs.druka (dt-> mēnesis (), DEC); parser.print ('/'); parsētājs.print (dt-> diena (), DEC); parser.print (''); parsētājs.druka (dt-> stunda (), DEC); parser.print (':'); parsētājs.druka (dt-> minūte (), DEC); parser.print (':'); parsētājs.print (dt-> otrais (), DEC); }

void sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // restartēt diagrammas datu taimeri, bez novirzes // piešķirt vērtības diagrammas mainīgajiem no cilpas mainīgajiem vai nolasīt ADC ievades plot_1_var = analogRead (A0); // nolasīt ievadi uz zemes gabalu // plot_2_var plot Slēpts, tāpēc šeit nav piešķirti dati // plot_3_var plot Slēpts, tāpēc šeit nav piešķirti dati // sižeta datus nosūtīt CSV formātā DateTime now = rtc.now (); sendDateTime (& tagad); // nosūtīt yyyy/M/d/H: m: s parsētājam.print, pass address & as arg. parser.print (','); parser.print (((pludiņš) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // 2. diagramma ir paslēpta. Nav nosūtīti dati. parser.print (','); // 3. diagramma ir paslēpta. Nav nosūtīti dati. parsētājs.println (); // CSV datu ieraksta beigas}}

~ 2019/4/19 3: 33: 5 atbildes daļa {@ ļauj pfodApp uzzināt, kāds, pēc pfodDevice domām, ir pašreizējais datums un laiks. Pēc tam jūsu skice var nosūtīt datus ar yMd Hms laika zīmogiem, un pfodApp tos attēlo vai nu kā pagājušo laiku no savienojuma laika VAI kā datumu un laiku, atkarībā no jūsu norādītā X ass formāta.

Plānojot pret datumu un laiku, pfodApp diagrammas rutīna koriģē visus “novirzes” RTC, salīdzinot pfodDevice ziņoto pašreizējo laiku ar mobilā tālruņa pašreizējo laiku. Šī korekcija arī apstrādā RTC iestatīšanu uz citu laika joslu nekā jūsu mobilā tālruņa vietējā laika josla. millis () laika zīmogi turpina darboties tāpat kā iepriekšējā solī Arduino milisekundes laika zīmogu izmantošana.

Šeit ir istabas temperatūras izklājlapas piemērs 8 dienu periodā, Office_Temp.xls Kad žurnāla fails tika importēts, pirmā sleja tika atzīmēta kā YMD, lai tekstu pārvērstu datumā/laikā. Lai izklājlapa tos interpretētu kā datumus un laikus, jums joprojām ir jānoņem vadošā forma no vietējā laika, UTC un Office Temp.

Lai iegūtu to pašu grafiku, ko rāda pfodApp, jums jāaprēķina “Labotais datums/laiks”. Šajā gadījumā RTC laiks ir 2 sekundes aiz mobilā tālruņa vietējā laika, tāpēc katram RTC laika zīmogs tiek pievienots (vietējais laiks - Office Temp pašreizējais laiks), lai iegūtu patieso vietējo laiku.

Pagājušā laika grafikiem izveidojiet jaunu kolonnu, kurā ir (datuma/laika laika zīmogs-Office laika pašreizējais laiks), un izmantojiet to kā diagrammas X asi (Office_TempElapsed.xls) Patiesībā šajā gadījumā pfodApp izveido labākas pagājušā laika diagrammas dienās hr: min: sek.

10. solis: GPS moduļa izmantošana

GPS moduļa izmantošana ir līdzīga RTC moduļa izmantošanai, izņemot to, ka GPS moduļiem ir pieejamas milisekundes, gadi sākas ar 2000. gadu un laika trūkst UTC lēciena sekundes (sk. Https://tycho.usno.navy.mil/leapsec.html) GPS datums un laiks pašlaik ir 18 sekundes pirms UTC, 2018. gada janvārī.

Adafruit GPS bibliotēka Adafruit Ultimate GPS, atšķirībā no RTClib, nepievieno 2000 gadu nobīdi GPS gadiem, tāpēc tas ir jāpievieno, nosūtot datuma un laika zīmogu. Lai gan GPS bibliotēka nodrošina milisekundes, kurām ir ļoti laba ilgtermiņa precizitāte, tās nav ļoti precīzas. GPS laika atjauninājumi tiek veikti tikai reizi 100 mS, un tad ir papildu kavēšanās sērijas datu saņemšanā ar lēnu 9600 bodu un vēl viena kavēšanās to parsēt. Tas viss palielina milisekundes precizitāti, kad tiek rādīti laika rādītāji.

Šeit ir dažas koda parauga izmaiņas, kas jāpiemēro pfodDesigner ģenerētajai skicei, lai izmantotu GPS moduli, pieņemot, ka izmantojat Adafruit GPS bibliotēku un esat pievienojis kodu ziņojumu saņemšanai un parsēšanai GPS objektā.

// apstrādāt {@} pieprasījumu} else if ('@' == cmd) {// pfodApp pieprasīja 'current' time plot_mSOffset = millis (); // uzņemt pašreizējos milisus kā nobīdītus neapstrādātu datu laika zīmogu parser.print (F ("{@` 0 "}); // atgriezt" 0 kā "pašreizējos" neapstrādāto datu milisekundes parser.print ('~'); // sākuma virkne date/time sendDateTime (& GPS); // sūtīt gggg/M/d/H: m: s parsētājam.print, nodot adresi & kā arg. parser.print ('}'); // beigas {@ atbildes piem. {@`0 ~ 2019/4/19 3: 33: 5}….

// nosūtīt datuma laiku parsētājam printvoid sendDateTime (Adafruit_GPS* gps) {parser.print (F ("20"); // 20.. year parser.print (gps-> year, DEC); parser.print ('/ '); parsētājs.print (gps-> mēnesis, DEC); parsētājs.print ('/'); parsētājs.print (gps-> diena, DEC); parsētājs.print (' '); parsētājs.print (gps- > stunda, DEC); parser.print (':'); parser.print (gps-> minute, DEC); parser.print (':'); parser.print (gps-> second, DEC); // parser.print ('.'); ja sūtāt milisekundes // ja vēlaties nosūtīt mS, jums jāaizpilda gps-> milisekundes vērtība ar nullēm //, ti, 3 ir jāaizpilda līdz 003}

void sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // restartēt diagrammas datu taimeri, bez novirzes // piešķirt vērtības diagrammas mainīgajiem no cilpas mainīgajiem vai nolasīt ADC ievades plot_1_var = analogRead (A0); // nolasīt ievadi uz zemes gabalu // plot_2_var plot Slēpts, tāpēc šeit nav piešķirti dati // plot_3_var plot Slēpts, tāpēc šeit nav piešķirti dati // sižeta datu nosūtīšana CSV formātā sendDateTime (& GPS); // nosūtīt yyyy/M/d/H: m: s parsētājam.print, pass address & as arg. parser.print (','); parser.print (((pludiņš) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // 2. diagramma ir paslēpta. Nav nosūtīti dati. parser.print (','); // 3. diagramma ir paslēpta. Nav nosūtīti dati. parsētājs.println (); // CSV datu ieraksta beigas}}

Plānojot datumu un laiku, pfodApp automātiski izlabo lēciena sekundes. 2018. gada janvārī GPS laiks ir 18 sekundes pirms UTC. PfodApp to izlabo, salīdzinot datumu/laiku, ko GPS atgriezās savienojumā, izmantojot {@ atbildi, un mobilā tālruņa UTC datumu un laiku. Zīmējumu izveide izklājlapā no žurnāla faila pfodApp ir tāda pati kā RTC moduļiem iepriekš. Pievienojot (vietējais laiks - pašreizējais biroja laiks) GPS laika zīmogiem, tiek labotas lēciena sekundes.

millis () laika zīmogi turpina darboties tāpat kā iepriekšējā solī Arduino milisekundes laika zīmogu izmantošana.

11. solis. Secinājums

Izmantojot pfodApp savā Android mobilajā ierīcē, varat attēlot datus atbilstoši datumam un laikam vai pagājušajam laikam, izmantojot tikai Arduino milis () funkciju. Izmantojot žurnāla failu pfodApp, jūs varat atkārtoti izveidot šos datuma/laika grafikus izklājlapā. Ja jūsu Arduino projektam ir RTC modulis, varat reģistrēt un uzzīmēt datumu un RTC laika laika zīmogus, automātiski koriģējot RTC “novirzi”. Ja Arduino projektam ir GPS modulis, varat reģistrēties un uzzīmēt tā ļoti precīzos laika zīmogus, un pfodApp automātiski izlabos GPS trūkstošās lēciena sekundes.

Visos gadījumos jūsu Arduino projekta neapstrādātie dati tiek reģistrēti tieši tādi, kādi tie ir saņemti, nekoriģēti. Tomēr pfodApp žurnāla failā ir iekļauti papildu dati, lai jūs varētu atkārtoti veikt šīs korekcijas izklājlapā no lejupielādētā žurnāla faila.

Android kodēšana nav nepieciešama. Sižeta formātus jūsu Arduino skicē nosaka nelielas teksta virknes. Bezmaksas pfodDesigner ģenerē pilnīgas Arduino datu reģistrēšanas un zīmēšanas skices visdažādākajām Arduino plāksnēm, kas savieno, izmantojot WiFi, klasisko Bluetooth, BLE un SMS

Ieteicams: