Përmbajtje:
- Hapi 1: Përdorimi i Argino Millisecond Timestamps, Millis ()
- Hapi 2: Shtimi i një Grafiku në Meny
- Hapi 3: Redaktimi i Burimit të Komplotit dhe Detyrimeve
- Hapi 4: Zgjedhja e formatit të datës/kohës
- Hapi 5: Gjeneroni dhe Provoni Skicën Arduino
- Hapi 6: Si komploton data/ora e PfodApp nga Millis ()?
- Hapi 7: Riprodhimi i Komploteve të datës/orës në kompjuterin tuaj
- Hapi 8: Si të shmangni kufirin prej 49.7ditë Millis () dhe pse nuk duhet
- Hapi 9: Përdorimi i një RTC (Ora në kohë reale)
- Hapi 10: Përdorimi i një moduli GPS
- Hapi 11: Përfundim
Video: Data/Koha e Arduino Komplotimi/Regjistrimi duke përdorur Millis () dhe PfodApp: 11 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:18
Asnjë programim Arduino ose Android nuk kërkohet. Modulet RTC dhe GPS gjithashtu mbështeten. Korrigjimi automatik për zonat kohore, zhvendosja RTC dhe GPS që mungojnë sekonda të brishtë
Prezantimi
Ky tutorial ju tregon se si të përdorni afatet kohore Arduino millis () për të komplotuar të dhënat sipas datës dhe kohës në celularin tuaj Android duke përdorur pfodApp.
Nuk kërkohet programim Arduino ose Android. pfodApp gjithashtu regjistron të dhëna të mjaftueshme në mënyrë që më vonë të riprodhoni komplotet e datës/kohës në një spreadsheet.
Asnjë modul RTC ose GPS nuk është i nevojshëm, megjithatë nëse projekti juaj Arduino ka një RTC (Ora në kohë reale) ose një modul GPS ato gjithashtu mund të përdoren. Në ato raste, komplotet e pfodApp do të korrigjohen automatikisht për zonën kohore, zhvendosjen RTC dhe GPS që humbin sekondat e brishtë. Për këto korrigjime nuk kërkohet asnjë kod i veçantë Arduino. Si gjithmonë me pfodApp, të dhënat e marra regjistrohen saktësisht siç janë, të pa korrigjuara, megjithatë skedari i regjistrit përmban gjithashtu informacion të mjaftueshëm për t'ju lejuar t'i zbatoni vetë këto korrigjime kur shkarkoni regjistrat në kompjuterin tuaj. Shihni më poshtë për shembuj të këtij përpunimi pas.
Mbështetet një larmi e madhe e formatimit të boshtit X të datës dhe datës, të cilat kontrollohen plotësisht nga vargjet e tekstit të shkurtër në skicën tuaj Arduino. Asnjë programim Android nuk kërkohet.
pfodApp do të lidhet nëpërmjet WiFi, Bluetooth Classic, BLE dhe SMS. PfodDesigner falas gjeneron skica të plota Arduino për komplotimin/regjistrimin e datës/kohës për t'u lidhur me një larmi të madhe bordesh. Asnjë programim Arduino nuk kërkohet.
Ky udhëzues do të përdorë një Adafruit Feather52 si shembull bordi Arduino, i cili lidhet nëpërmjet BLE.
Ky udhëzues mbulon tre raste:- 1) Projekti juaj i mikroprocesorit ka vetëm vija kohore të milisekondës- millis () 2) Projekti juaj i mikroprocesorit ka një orë në kohë reale (RTC)- pfodApp korrigjon automatikisht për zhvendosje. 3) Projekti juaj mikroprocesor ka një modul GPS - pfodApp korrigjon automatikisht për sekonda të brishtë kur ndodhin (aktualisht 18 sekonda në 2018).
Hapi 1: Përdorimi i Argino Millisecond Timestamps, Millis ()
Ekzistojnë dy pjesë për të përdorur milisekonda për datën dhe kohën. Njëra është për komplotimin e të dhënave kundrejt kohës së kaluar ose datës/orës dhe pjesa tjetër është rikrijimi i datës dhe kohës nga vulat kohore të regjistruara të të dhënave të papërpunuara të regjistruara në milisekonda. pfodApp nuk modifikon të dhënat e papërpunuara të marra nga pfodDevice (mikro Arduino). Thjesht regjistron saktësisht bajtët e marrë.
Së pari përdorni pfodDesigner falas për të krijuar një skicë Arduino për mikro tuaj që do të dërgojë milisekonda dhe matjet e të dhënave te pfodApp për komplotimin/regjistrimin. Ky shembull krijon një menu për tabelën Adafruit Feather 52 BLE që lexon A0. Udhëzuesi mbi Adafruit Feather nRF52 LE - Kontrollet e personalizuara me pfodApp kalon nëpër hapat pfodDesigner për të krijuar një meny për Feather nRF52 që përfshin një buton Grafik, kështu që shikojeni për më shumë detaje. Në këtë tutorial ne do të shtojmë vetëm një buton grafiku dhe do të përdorim opsionet e reja të formatit të boshtit X për të vizatuar leximet A0 kundrejt kohës së kaluar dhe datës/kohës.
Pjesa e parë e këtij tutoriali do të kalojë duke përdorur pfodDesigner falas për të krijuar një tabelë shembull të datës/kohës në celularin tuaj Android. Kur të jeni të kënaqur me ekranin, mund të krijoni skicën Arduino që do ta riprodhojë atë kur lidheni me pfodApp. Asnjë programim Android nuk kërkohet dhe meqenëse pfodDesigner gjeneron skica të plota Arduino për një larmi të madhe të bordeve Arduino, nuk kërkohet as programim Arduino.
Hapi 2: Shtimi i një Grafiku në Meny
Shkarkoni aplikacionin pfodDesigner nga Google Play, hapeni dhe klikoni në "Fillo menunë e re"
Klikoni në "Target Serial" dhe pastaj në butonin "Bluetooth Low Energy" për të shfaqur listën e disa 11 bordeve BLE (lëvizni poshtë për të parë zgjedhjet e tjera). Zgjidhni në Adafruit Bluefruit Feather52.
Kthehuni te menyja Redaktimi dhe klikoni në "Edit Prompt" dhe vendosni një kërkesë të përshtatshme për këtë meny, p.sh. "Feather52" dhe teksti i theksuar dhe madhësia +7. Ngjyra e sfondit u la si e bardhë 'e paracaktuar'
Kthehuni mbrapa dhe klikoni në "Shto artikullin e menusë", lëvizni poshtë dhe zgjidhni "Butoni i grafikut" i cili hap ekranin e redaktimit të butonit të grafikut. Këtu mund të bëni ndonjë ndryshim në pamjen e butonit. Në këtë rast, teksti i butonit u ndryshua në "Komploti i datës/kohës i A0" dhe parazgjedhjet e tjera u lanë ashtu siç është.
Kjo ju jep një buton në menunë që do të hapë ekranin e grafikut.
Hapi 3: Redaktimi i Burimit të Komplotit dhe Detyrimeve
Klikoni në butonin "Komploti i datës/kohës i A0" për të hapur ekranin Editing Plots, ku mund të hyni në etiketën e grafikut, formatin e boshtit X, intervalin e të dhënave të komplotit dhe (duke lëvizur poshtë) vetë cilësimet e komplotit. Ndryshoni Etiketën e Grafikut në diçka të përshtatshme, p.sh. "A0 Volt".
Shkoni poshtë dhe për Komplotet 2 dhe 3 hapni Edit Plot dhe klikoni Hide Plot për t'i hequr ato nga shfaqja e grafikut.
Pastaj klikoni në "Edit Plot 1" dhe vendosni një etiketë komploti (p.sh. A0), njësitë yAxis (p.sh. Volt), shfaqni maksimumin prej 3.6V dhe lidheni me pinin I/O A0.
Lëvizni përsëri dhe klikoni në "Paraqitjen e grafikut" në 0 pikat më të fundit të të dhënave të mostrës, në intervale 1sek, të vizatuara sipas kohës së kaluar në minuta: sekonda.
Për të gjitha kohët e kaluara komplotet që udhëheqin me njësitë zero nuk shfaqen kështu që në këtë komplot vetëm ato kohë> 1min kanë treguar minutat kryesore.
Hapi 4: Zgjedhja e formatit të datës/kohës
Për komplotet e kohës së kaluar, njësia drejtuese vetëm vazhdon të rritet me kalimin e kohës. Për të parë një shembull të kësaj kthehuni në ekranin "Editing Plote" dhe rrisni intervalin e të dhënave të komplotit në 15 minuta (në fund të këtij ekrani)
Pastaj klikoni në Preview Chart për të treguar të njëjtat të dhëna të mostrës, por tani me intervale 15min midis mostrave. Siç mund ta shihni minutat pjesë e mm: ss vetëm vazhdon të rritet.
Tani kthehuni dhe klikoni në butonin e boshtit X për të treguar një përzgjedhje të vogël të të gjitha formateve të mundshme të të dhënave/kohës të boshtit X (lëvizni poshtë për më shumë)
Më sipër është një përzgjedhje e pamjeve paraprake të grafikut duke përdorur formate të ndryshme të boshtit X.
Komplotet e datës/kohës të paraqitura këtu janë në zonën kohore 'lokale'. Ekzistojnë gjithashtu mundësi formatimi për të vizatuar datën/kohën në UTC. Për një grup të plotë të opsioneve të mundshme të formatit të datës/kohës shihni pfodSpecification.pfd.
Hapi 5: Gjeneroni dhe Provoni Skicën Arduino
Pasi të jeni të kënaqur me formatin dhe intervalin e të dhënave të grafikut tuaj, mund të shkoni në ekranin "Menyja e redaktimit" dhe lëvizni poshtë dhe "Gjeneroni kodin" për tabelën e zgjedhur. Këtu është një skicë shembullore për Adafruit Feather52 duke përdorur intervale të të dhënave 1sek dhe një format: ss të kohës së kaluar ss, pfodFeather52_timeplot.ino
Mbi të është një komplot i A0 nga Feather52
Ndryshimi i formatit në ditën e javës orë: min: sek (~ E HH: mm: ss) dhe ri-gjenerimi i kodit (pfodFeather52_dateplot.ino) jep një komplot si i dyti më lart.
Ju mund të redaktoni formatin e boshtit X drejtpërdrejt në skicën tuaj Arduino, siç përshkruhet më poshtë.
Hapi 6: Si komploton data/ora e PfodApp nga Millis ()?
Kur lidhet pfodApp, ai kujton kohën e tij "lokale" dhe UTC dhe kërkon afatet kohore të të dhënave të komplotit të pfodDevice (bordit Arduino). Përdorimi i këtij informacioni pfodApp më pas mund të vizatojë shenja kohore të milisekondës ose si kohë të kaluar, domethënë shndërrim të milisekondave në orë mins sek.
Duke parë skicën e krijuar nga Arduino (p.sh. pfodFeather52_dateplot.ino), ka tre pjesë të vogla të kodit që trajtojnë anën Arduino të komploteve.
Seksioni i kodit loop () që trajton kërkesën aktuale të pfodApp {@} për kohën
// trajtoni {@} kërkesën} tjetër nëse ('@' == cmd) {// pfodApp kërkoi kohën "aktuale" plot_mSOffset = millis (); // kap milis aktuale si kompensuar kohëzgjatjet kohore të të dhënave parser.print (F ("{@` 0} ")); // ktheni `0 si të dhëna të papërpunuara 'aktuale' në milisekonda
Ju thjesht mund të ktheni vlerën aktuale të millis (), por millis () përfundon në 0 çdo 49.7 ditë, gjë që do ta bënte komplotin të hidhej prapa. Pra, në vend të kësaj kodi kujton vlerën aktuale millis () kur u bë kërkesa {@} dhe kthen {@`0} dmth një vulë kohore aktuale të milisekondës zero. Pastaj kur dërgon pikat e të dhënave të para, skica përdor
plot_1_var = analogRead (A0); // lexoni hyrjen në komplot // plot_2_var komplot Fshihet kështu që nuk ka të dhëna të caktuara këtu // komploti_3_var komplot Fshihet kështu që nuk jepen të dhëna këtu // dërgoni të dhëna të komplotit në format CSV parser.print (millis ()-plot_mSOffset); // koha në milisekonda …
kështu që afati kohor i milisekondës i dërguar me të dhënat fillon në 0 dhe rritet deri në 49.7 ditë. Nëse qëndroni të lidhur vazhdimisht për 49.7 ditë, atëherë do të shihni që komploti të kërcejë prapa me 50 ditë. Shkëputja dhe lidhja përsëri një herë në 49.7 ditë e shmang këtë.
Pjesa e tretë e komplotit të datës/kohës është mesazhi i komplotit.
} else if ('A' == cmd) {// përdoruesi i shtypur - 'Komploti i datës/kohës i A0' // në Menunë kryesore të Meny_1 // // kthe mesazhet e vizatimit. parser.print (F ("{= A0 Volt ~ E HH: mm: ss | data | A0 ts Volt ||}"));
Kur përdoruesi shtyp butonin "Data/Koha e komplotit A0", pfodApp dërgon {A} cmd në pajisjen pfod dhe pajisja pfod përgjigjet me mesazhin e grafikut, {=… {= A0 Volt ~ E HH: mm: ss | data | A0 ~~~ Volt ||} i cili përmban formatin e boshtit X E HH: mm: ss
Formatet Java SimpleDateFormat janë të pranueshme këtu. PfodApp Regjistrimi dhe Komplotimi i të Dhënave dhe pfodSpecification.pdf kanë më shumë detaje mbi mesazhin e komplotit.
Hapi 7: Riprodhimi i Komploteve të datës/orës në kompjuterin tuaj
Si parazgjedhje, pfodApp regjistron të gjitha të dhënat e papërpunuara në hyrje në një skedar regjistri në celularin tuaj, përveç nëse e keni çaktivizuar këtë regjistrim në ekranin e modifikimit të lidhjes, shihni pfodAppForAndroidGettingStarted.pdf
Kur redaktoni pfodApp, shfaqet një mesazh i shkurtër me vendndodhjen dhe emrin e skedarit të regjistrit, p.sh. /pfodAppRawData/pfod_bluefruit52.txt Ky skedar është në formatin CSV, i kufizuar me presje, dhe pasi ta transferoni në kompjuterin tuaj (shikoni pfodAppForAndroidGettingStarted.pdf për opsionet e transferimit), mund ta hapni në një spreadsheet për të komplotuar të dhënat.
Këtu janë rreshtat e parë të një skedari regjistri.
// pfodApp V3.0.360, koha lokale, UTC, mS në ditë, pfod bluefruit52 koha aktuale (mS), pfod bluefruit52 koha aktuale, // e lidhur në, 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,,
Mbi ju mund të shihni kohën "lokale" dhe UTC që pfodApp lidhte me Feather52 dhe kohën aktuale në mS që Feather52 raportoi përmes përgjigjes {@..}. Kolona e fundit është bosh, sepse nuk ka RTC ose GPS dhe kështu që asnjë kohë aktuale në yyyy/MM/dd nuk është raportuar nga Feather52.
Për të vizatuar të dhënat kundër kohës së kaluar, zbres kohën aktuale (mS) nga vula kohore e milisekondës dhe pastaj ndaje me vlerën mS në ditë. Këtu është tabela me formulën e shtuar dhe rezultati i vizatuar. Tabela më poshtë, (pfod_bluefruit52.xls) është një spreadsheet i OpenOffice i ruajtur në formatin Excel.
Në OpenOffice, komploti është një komplot shpërndarës dhe boshti x i komplotit u formatua në HH: MM: SS Shënim: formatet e datës/kohës të spreadsheet NUK janë të njëjta me formatet e komplotit të përdorura nga pfodApp. Për shembull në pfodApp, MM është muaj dhe mm është minuta.
Për të komplotuar kundër datës dhe kohës, ju vetëm duhet të shtoni kohën e lidhjes në kohën e spreadsheet dhe të ribotoni. (pfod_bluefruit52_date.xls)
Shënim: Ora lokale dhe UTC u importuan si tekst në spreadsheet -in tim, kështu që më duhej të hiqja kryesuesin 'para se t'i përdorja në një formulë.
Hapi 8: Si të shmangni kufirin prej 49.7ditë Millis () dhe pse nuk duhet
Siç u përmend më lart në Si planifikon data/ora pfodApp nga millis () ?, nëse qëndroni të lidhur vazhdimisht për më shumë se 49.7 ditë, pikat kohore të milisekondës do të përfundojnë përsëri në zero. Disa rreshta të kodit mund ta shmangin këtë, por nuk rekomandohet.
Së pari si të shmangni përfundimin rreth. Shtoni një variabël tjetër int të panënshkruar për të mbajtur gjurmët e numrit të kohës kur vulat kohore përfundojnë dhe printoni rezultatin e kombinuar në HEX.
uint_t mSwrapCount = 0; uint32_t lastTimeStamp = 0;
… Plot_1_var = analogRead (A0); // lexoni hyrjen në komplot // plot_2_var komplot Fshihet kështu që nuk jepen të dhëna këtu // komploti_3_var komploti Fshihet kështu që nuk jepen të dhëna këtu // dërgoni të dhëna të komplotit në formatin CSV uint32_t timeStamp = millis ()-plot_mSOffset; if (timeStamp <lastTimeStamp) {// timeStamp përfundoi përsëri në 0 mSwrapCount ++; // shtoni një për të numëruar} lastTimeStamp = timeStamp; parser.print ("0x"); parser.print (msWrapCount, HEX); parser.print (timeStamp, HEX); // koha në milisekonda në HEX….
Kur ktheni përgjigjen {@.. pastroni edhe mSwrapCount.
// trajtoni {@} kërkesën} tjetër nëse ('@' == cmd) {// pfodApp kërkoi kohën "aktuale" plot_mSOffset = millis (); // kap milis aktuale si kompensuar kohëzgjatjet kohore të të dhënave të papërpunuara mSwrapCount = 0; // numërimi i qartë i mbështjellësve. parser.print (F ("{@` 0} ")); // ktheni `0 si të dhëna të papërpunuara 'aktuale' në milisekonda
Vulat kohore tani do të japin vlerën 'e saktë' për 40.7 ditët e ardhshme * 65536 ~ = 7308 vjet.
pfodApp do të konvertojë automatikisht afatet kohore gjashtëkëndore për vizatim dhe do t'i regjistrojë ato saktësisht siç janë marrë, domethënë në gjashtëkëndësh. Në spreadsheet -in (OpenOffice) përdorni këtë formulë për të kthyer vargun gjashtëkëndësh, në A2, në mS (ku A1 është çdo qelizë bosh) = HEX2DEC (Zëvendësim (A2; 1; 2; A1))
Pse nuk doni ta bëni këtë
Siç u tregua më lart, është e lehtë të zgjasësh afatet kohore të mS në më shumë se 50 ditë. Sidoqoftë, ndoshta nuk doni ta bëni këtë sepse ato bëhen gjithnjë e më të pasakta. Një kristal tipik 16Mhz i përdorur për të krijuar rezultatet millis () në mikro ka një saktësi prej pp 50ppm (pjesë për milion). Kjo do të thotë që pas 49,7 ditësh stema kohore e milisekondës mund të dalë për 3 ½ minuta dhe që injoron efektin e temperaturës në saktësinë e kristalit.
Gjatë periudhave të shkurtra të lidhjes, kjo pasaktësi nuk është problem pasi përgjigja {@.. sinkronizon vulën kohore të milisekondës me datën/orën e celularit në çdo lidhje të rilidhur. Sidoqoftë, nëse doni të qëndroni të lidhur për periudha të gjata kohore (ditë) dhe të regjistroni vazhdimisht të dhënat, atëherë duhet të përdorni diçka më të saktë se sa millis e integruar (), siç është një modul RTC ose GPS.
Hapi 9: Përdorimi i një RTC (Ora në kohë reale)
Ekzistojnë një numër modulesh RTC, një nga ato më të sakta është DS3231 p.sh. Moduli DS3231 i Adafruit. Saktësia e deklaruar është +/- 2ppm mbi 0 deri në 40C. dmth ~ +/- 5 sek/muaj.
Nëse doni të vizatoni të dhëna që kanë shenja kohore të datës/kohës, p.sh. 2019/04/19 20: 4: 34, atëherë duhet të modifikoni përgjigjen {@ për të kthyer datën/kohën aktuale, p.sh. {@`0 ~ 2019/4/19 3: 33: 5}. Këtu janë disa ndryshime të kodit shembull për t'u zbatuar në skicën e krijuar nga pfodDesigner për përdorimin e një moduli RTC, duke supozuar se jeni duke përdorur bibliotekën RTClib dhe keni shtuar kodin e inicializuar modulin RTC.
// trajtoni {@} kërkesën} tjetër nëse ('@' == cmd) {// pfodApp kërkoi kohën "aktuale" plot_mSOffset = millis (); // kap milis aktuale si kompensuar kohëzgjatjet kohore të të dhënave parser.print (F ("{@` 0 "}); // ktheje '0 si të dhëna të papërpunuara' aktuale 'milisekonda parser.print (' ~ '); // fillo vargun e data/ora DataTime tani = rtc.now () sendDateTime (& tani); // dërgoni yyyy/M/d/H: m: s te parser.print, kaloni adresën & si arg. parser.print ('}'); // fundi i {@ përgjigjes p.sh. {@ `0 ~ 2019/4/19 3: 33: 5}….
// dërgoni datën e kohës në analizues printvoid sendDateTime (DateTime* dt) {parser.print (dt-> vit (), DEC); parser.print ('/'); parser.print (dt-> muaj (), DEC); parser.print ('/'); parser.print (dt-> ditë (), DEC); parser.print (''); parser.print (dt-> orë (), DEC); parser.print (':'); parser.print (dt-> minutë (), DEC); parser.print (':'); parser.print (dt-> e dyta (), DEC); }
void sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // rinisni kohëmatësin e të dhënave të komplotit, pa lëvizje // caktoni vlera për të vizatuar variablat nga variablat tuaj të lakut ose lexoni inputet ADC plot_1_var = analogRead (A0); // lexo hyrjen në komplot // plot_2_var komplot Fshihet kështu që nuk jepen të dhëna këtu // komploti_3_var komploti Fshihet kështu që nuk jepen të dhëna këtu // dërgo të dhënat e komplotit në formatin CSV DataTime tani = rtc.now (); sendDateTime (& tani); // dërgoni yyyy/M/d/H: m: s në parser.print, kaloni adresën & si arg. parser.print (','); parser.print (((noton) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // Komploti 2 është i fshehur. Asnjë e dhënë nuk është dërguar. parser.print (','); // Komploti 3 është i fshehur. Asnjë e dhënë nuk është dërguar. parser.println (); // fundi i regjistrimit të të dhënave CSV}}
Pjesa ~ 2019/4/19 3: 33: 5 e përgjigjes {@ lejon pfodApp të dijë se çfarë mendon se pajisja pfod është data dhe ora aktuale. Skica juaj pastaj mund të dërgojë të dhëna me vulat kohore yMd Hms dhe pfodApp do t'i vizatojë ato si kohë të kaluar nga koha e lidhjes OSE si datë dhe kohë, në varësi të formatit të boshtit X që ju specifikoni.
Kur komplotoni kundër datës dhe kohës, rutina e komplotit pfodApp korrigjon çdo "shtyrje" në RTC duke krahasuar kohën aktuale të raportuar të pfodDevice me kohën aktuale të celularit. Ky korrigjim gjithashtu merret me vendosjen e RTC në një zonë kohore të ndryshme nga zona kohore lokale e celularit tuaj. millis () timestamps vazhdojnë të punojnë si në Përdorimin e Arduino millisekond timestamps, Hapi 5 më lart.
Këtu është një tabelë shembull e temperaturave të dhomës gjatë një periudhe 8 ditore, Office_Temp.xls Kur skedari log u importua, kolona e parë u shënua si YMD për të konvertuar tekstin në një datë/kohë. Ju ende duhet të hiqni formularin kryesor në kohën lokale, shënimet e kohës aktuale në UTC dhe Office Temp për të pasur që spreadsheet t'i interpretojë ato si data dhe orë.
Për të marrë të njëjtën komplot që tregon pfodApp, duhet të llogaritni "Data/Koha e Korrigjuar". Në këtë rast koha RTC është 2 sekonda prapa kohës lokale të celularit, kështu që secilës etiketë kohore RTC i shtohet (ora lokale - Koha aktuale e Zyrës së Temp) për të marrë kohën e vërtetë lokale.
Për komplotet e kohës së kaluar, krijoni një kolonë të re që përmban kohëzgjatjen (data/ora kohore-Koha aktuale e Zyrës së Zyrës) dhe përdorni atë si boshtin X në tabelë (Office_TempElapsed.xls) Në të vërtetë në këtë rast, pfodApp prodhon tabela më të mira kohore të kaluara në ditë orë: min: sek.
Hapi 10: Përdorimi i një moduli GPS
Përdorimi i një moduli GPS është i ngjashëm me përdorimin e një moduli RTC, përveç se modulet GPS kanë milisekonda të disponueshme, vitet fillojnë në 2000 dhe koha mungon në sekondat e brishtë të UTC (shiko https://tycho.usno.navy.mil/leapsec.html) Data dhe koha e GPS është aktualisht 18 sekonda përpara UTC, në janar 2018.
Biblioteka e Adafruit GPS për Adafruit Ultimate GPS, ndryshe nga RTClib, nuk shton kompensimin e vitit 2000 në vitet GPS, kështu që duhet të shtohet kur dërgoni datën dhe orën kohore. Gjithashtu edhe pse biblioteka GPS furnizon milisekonda të cilat kanë saktësi shumë të mirë afatgjatë, ato nuk janë shumë të sakta. Përditësimet e kohës GPS janë vetëm një herë çdo 100mS dhe pastaj ka një vonesë shtesë në marrjen e të dhënave serike me një shpejtësi të ngadaltë 9600 dhe një vonesë tjetër në analizimin e tyre. Të gjitha këto i shtohen milisekondës në saktësi kur vulosin leximet e të dhënave.
Këtu janë disa ndryshime të kodit të mostrës për t'u zbatuar në skicën e krijuar nga pfodDesigner për përdorimin e një moduli GPS, duke supozuar se jeni duke përdorur bibliotekën GPS të Adafruit dhe keni shtuar kodin për të marrë dhe analizuar mesazhet në një objekt GPS.
// trajtoni {@} kërkesën} tjetër nëse ('@' == cmd) {// pfodApp kërkoi kohën "aktuale" plot_mSOffset = millis (); // kap milis aktuale si kompensuar kohëzgjatjet kohore të të dhënave parser.print (F ("{@` 0 "}); // ktheje '0 si të dhëna të papërpunuara' aktuale 'milisekonda parser.print (' ~ '); // fillo vargun e data/ora sendDateTime (& GPS); // dërgoni yyyy/M/d/H: m: s te parser.print, kaloni adresën & si arg. parser.print ('}'); // fundi i {@ përgjigjes p.sh. {@`0 ~ 2019/4/19 3: 33: 5}….
// dërgoni kohën e datës në analizues printvoid sendDateTime (Adafruit_GPS* gps) {parser.print (F ("20"); // 20.. vit parser.print (gps-> vit, DEC); parser.print ('/ '); parser.print (gps-> muaj, DEC); parser.print ('/'); parser.print (gps-> ditë, DEC); parser.print (' '); parser.print (gps- > orë, DEC); parser.print (':'); parser.print (gps-> minutë, DEC); parser.print (':'); parser.print (gps-> e dyta, DEC); // parser.print ('.'); nëse dërgoni milisekonda // nëse doni të dërgoni mS ju duhet të mbushni vlerën gps-> milisekonda me zero kryesore // dmth. 3 duhet të mbushet në 003}
void sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // rinisni kohëmatësin e të dhënave të komplotit, pa lëvizje // caktoni vlera për të vizatuar variablat nga variablat tuaj të lakut ose lexoni inputet ADC plot_1_var = analogRead (A0); // lexo hyrjen në komplot // plot_2_var komplot Fshihet kështu që nuk jepen të dhëna këtu // komploti_3_var komploti Fshihet kështu që nuk jepen të dhëna këtu // dërgo të dhënat e komplotit në formatin CSV sendDateTime (& GPS); // dërgoni yyyy/M/d/H: m: s në parser.print, kaloni adresën & si arg. parser.print (','); parser.print (((noton) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // Komploti 2 është i fshehur. Asnjë e dhënë nuk është dërguar. parser.print (','); // Komploti 3 është i fshehur. Asnjë e dhënë nuk është dërguar. parser.println (); // fundi i regjistrimit të të dhënave CSV}}
Kur komplotoni kundër datës dhe kohës, pfodApp korrigjohet automatikisht për sekonda të brishtë. Në Janar 2018, koha GPS është 18 sek para UTC. pfodApp e korrigjon këtë duke krahasuar datën/orën e kthyer nga GPS në lidhje, nëpërmjet përgjigjes {@, me datën dhe orën UTC të celularit. Krijimi i komploteve në një spreadsheet nga skedari i regjistrit pfodApp është i njëjtë me modulet RTC, më lart. Shtimi i (ora lokale - Koha aktuale e Temp Office) në pikat kohore të GPS korrigjon sekondat e brishtë.
millis () timestamps vazhdojnë të punojnë si në Përdorimin e Arduino millisekond timestamps, Hapi 5 më lart.
Hapi 11: Përfundim
Përdorimi i pfodApp në celularin Android ju lejon të vizatoni të dhëna kundrejt datës dhe kohës ose kohës së kaluar, duke përdorur vetëm funksionin millis () të Arduino. Duke përdorur skedarin e regjistrit pfodApp, ju mund të riprodhoni këto komplote të datës/kohës në një spreadsheet. Nëse projekti juaj Arduino ka një modul RTC, ju mund të regjistroni dhe vizatoni datën dhe afatet kohore të kohës RTC, duke korrigjuar automatikisht për 'zhvendosjen' e RTC. Nëse projekti Arduino ka një modul GPS, mund të regjistroheni dhe të vizatoni afatet kohore të tij shumë të sakta dhe pfodApp automatikisht do të korrigjojë sekondat e kërcimit të humbur të GPS.
Në të gjitha rastet, të dhënat e papërpunuara nga projekti juaj Arduino regjistrohen saktësisht siç janë marrë, të pakorrigjuara. Sidoqoftë, skedari i regjistrit pfodApp përfshin të dhëna shtesë për t'ju lejuar të riprodhoni këto korrigjime në një spreadsheet nga skedari i regjistrit të shkarkuar.
Asnjë kodim Android nuk kërkohet. Formatet e komplotit specifikohen të gjitha me vargje të vogla teksti në skicën tuaj Arduino. PfodDesigner falas gjeneron regjistrime të plota të të dhënave Arduino dhe vizaton skica për një larmi të gjerë bordesh Arduino që lidhen përmes WiFi, Bluetooth Classic, BLE dhe SMS
Recommended:
Komplotimi i të dhënave të drejtpërdrejta të një sensori të temperaturës (TMP006) duke përdorur MSP432 LaunchPad dhe Python: 9 hapa
Komplotimi i të dhënave të drejtpërdrejta të një sensori të temperaturës (TMP006) Duke përdorur MSP432 LaunchPad dhe Python: TMP006 është një sensor i temperaturës që mat temperaturën e një objekti pa pasur nevojë të bëjë kontakt me objektin. Në këtë tutorial ne do të vizatojmë të dhëna të drejtpërdrejta të temperaturës nga BoosterPack (TI BOOSTXL-EDUMKII) duke përdorur Python
Monitorimi i përshpejtimit duke përdorur Raspberry Pi dhe AIS328DQTR duke përdorur Python: 6 hapa
Monitorimi i përshpejtimit duke përdorur Raspberry Pi dhe AIS328DQTR Duke përdorur Python: Përshpejtimi është i kufizuar, mendoj sipas disa ligjeve të Fizikës.- Terry Riley Një cheetah përdor përshpejtim të mahnitshëm dhe ndryshime të shpejta në shpejtësi kur ndiqni. Krijesa më e shpejtë në breg, herë pas here, përdor ritmin e saj të lartë për të kapur prenë.
Komplotimi i thjeshtë i të dhënave në distancë duke përdorur Android / Arduino / PfodApp: 6 hapa
Komplotimi i thjeshtë i të dhënave në distancë duke përdorur Android/Arduino/PfodApp: Për komplotimin e të dhënave kundrejt datës/orës duke përdorur vetëm millis të Arduino () shihni këtë InstructableArduino Data/Time Komplotimi/Regjistrimi duke përdorur Millis () dhe PfodApp Android celular dhe kapeni atë për
Regjistrimi i thjeshtë i të dhënave celulare duke përdorur PfodApp, Android dhe Arduino: 5 hapa
Regjistrimi i thjeshtë i të dhënave celulare duke përdorur PfodApp, Android dhe Arduino: Regjistrimi i të dhënave Moblie u bë i thjeshtë duke përdorur pfodApp, celularin tuaj Andriod dhe Arduino. NUK kërkohet programim Android. Për Komplotimin e të Dhënave në Android tuaj shikoni këtë Komplotim të mëvonshëm të Instruktueshëm të Thjeshtë të Të Dhënave duke përdorur Android / Arduino / pfodAppPër Komplotimin
Regjistrimi i të dhënave në distancë me saktësi të lartë duke përdorur multimetër/Arduino/pfodApp: 10 hapa (me fotografi)
Regjistrimi i të dhënave në distancë me saktësi të lartë duke përdorur multimetër/Arduino/pfodApp: Përditësuar më 26 Prill 2017 Qarku dhe bordi i rishikuar për përdorim me matësa USB 4000ZC. Asnjë kodim Android nuk kërkohet Ky udhëzues ju tregon sesi keni qasje në një gamë të gjerë të matjeve me saktësi të lartë nga Arduino juaj dhe gjithashtu i dërgoni ato nga distanca për prerje dhe