Orodha ya maudhui:

Tarehe ya Arduino / Kupanga Wakati / Kukata Miti Kutumia Millis () na PfodApp: Hatua 11
Tarehe ya Arduino / Kupanga Wakati / Kukata Miti Kutumia Millis () na PfodApp: Hatua 11

Video: Tarehe ya Arduino / Kupanga Wakati / Kukata Miti Kutumia Millis () na PfodApp: Hatua 11

Video: Tarehe ya Arduino / Kupanga Wakati / Kukata Miti Kutumia Millis () na PfodApp: Hatua 11
Video: Leslie Kean on David Grusch (UFO Whistleblower): Non-Human Intelligence, Recovered UFOs, UAP, & more 2024, Julai
Anonim
Tarehe ya Arduino / Kupanga Wakati / Kukata Matumizi Kutumia Millis () na PfodApp
Tarehe ya Arduino / Kupanga Wakati / Kukata Matumizi Kutumia Millis () na PfodApp

Hakuna programu ya Arduino au Android inayohitajika. Moduli za RTC na GPS pia zinasaidiwa. Marekebisho ya moja kwa moja ya maeneo ya saa, RTC drift na GPS kukosa sekunde za kuruka

Utangulizi

Mafunzo haya yanaonyesha jinsi ya kutumia mihuri yako ya Arduino millis () kupanga data dhidi ya tarehe na wakati kwenye simu yako ya Android ukitumia pfodApp.

Hakuna programu ya Arduino au Android inayohitajika. pfodApp pia huweka data ya kutosha ili baadaye uweze kuzaa viwanja vya tarehe / saa kwenye lahajedwali.

HAKUNA RTC au moduli ya GPS inahitajika, hata hivyo ikiwa mradi wako wa Arduino una RTC (Saa Saa Saa) au moduli ya GPS pia inaweza kutumika. Katika visa hivyo viwanja vya pfodApp vitasahihisha kiotomati kwa eneo la saa, RTC drift na GPS kukosa sekunde za kuruka. Hakuna nambari maalum ya Arduino inahitajika kwa marekebisho haya. Kama kawaida na pfodApp, data iliyopokelewa imeingia sawa na ilivyo, haijasahihishwa, hata hivyo faili ya logi pia ina habari ya kutosha kukuwezesha kujisahihisha wakati unapopakua magogo kwenye kompyuta yako. Tazama hapa chini kwa mifano ya usindikaji huu wa baada.

Utengenezaji wa muda na tarehe anuwai ya muundo wa X-axis unasaidiwa, ambayo yote inadhibitiwa kabisa na kamba fupi za maandishi kwenye mchoro wako wa Arduino. Hakuna programu ya Android inahitajika.

pfodApp itaunganisha kupitia WiFi, Bluetooth Classic, BLE na SMS. PfodDesigner ya bure hutengeneza michoro kamili za Arduino za kupanga tarehe / saa / kukata magogo kuungana na bodi anuwai. Hakuna programu ya Arduino inahitajika.

Hii inaweza kufundishwa itatumia Adafruit Feather52 kama mfano bodi ya Arduino, ambayo inaunganisha kupitia BLE.

Hii inashughulikia kesi tatu: - 1) Mradi wako wa microprocessor una tu mihuri ya saa millisecond - millis () 2) Mradi wako wa microprocessor una Saa Saa Saa (RTC) - pfodApp hurekebisha moja kwa moja kwa drift. 3) Mradi wako wa microprocessor una moduli ya GPS - pfodApp hurekebisha kiatomati kwa sekunde za kuruka kama zinavyotokea (kwa sasa sekunde 18 kama 2018).

Hatua ya 1: Kutumia Arduino Millisecond Timestamps, Millis ()

Kuna sehemu mbili za kutumia milliseconds kwa tarehe na wakati. Moja ni kupanga data dhidi ya wakati uliopitiliza au tarehe / saa na sehemu nyingine inaunda tena tarehe na wakati kutoka kwa mihuri ya alama ya rawdata millisecond. pfodApp haibadilishi data ghafi iliyopokelewa kutoka kwa pfodDevice (Arduino micro). Ni kumbukumbu tu haswa zilizopokelewa.

Kwanza tumia pfodDesigner ya bure kutengeneza mchoro wa Arduino kwa micro yako ambayo itatuma millisecond na vipimo vya data kwa pfodApp kwa kupanga / kukata magogo. Mfano huu unaunda menyu ya bodi ya Adafruit Feather 52 BLE inayosoma A0. Mafunzo juu ya Manyoya ya Adafruit nRF52 LE - Udhibiti wa Desturi na pfodApp hupitia hatua za pfodDesigner kuunda menyu ya Manyoya nRF52 ambayo ni pamoja na kitufe cha Chati, kwa hivyo angalia kwa maelezo zaidi. Katika mafunzo haya tutaongeza kitufe cha chati tu na tutumie chaguo mpya za fomati ya X-axis kupanga usomaji wa A0 dhidi ya wakati na tarehe / wakati uliopitiliza.

Sehemu ya kwanza ya mafunzo haya itatumia pfodDesigner ya bure kuunda chati / tarehe ya saa kwenye simu yako ya Android. Unaporidhika na onyesho unaweza kutoa mchoro wa Arduino ambao utazaa tena wakati utaunganisha na pfodApp. Hakuna Programu ya Android inahitajika na kwa kuwa pfodDesigner inazalisha michoro kamili za Arduino kwa anuwai ya bodi za Arduino, hakuna programu ya Arduino inayohitajika pia.

Hatua ya 2: Kuongeza Chati kwenye Menyu

Kuongeza Chati kwenye Menyu
Kuongeza Chati kwenye Menyu
Kuongeza Chati kwenye Menyu
Kuongeza Chati kwenye Menyu
Kuongeza Chati kwenye Menyu
Kuongeza Chati kwenye Menyu
Kuongeza Chati kwenye Menyu
Kuongeza Chati kwenye Menyu

Pakua programu ya pfodDesigner kutoka Google Play, ifungue na ubonyeze kwenye "Anza Menyu mpya"

Bonyeza kwenye "Target Serial" na kisha kwenye kitufe cha "Bluetooth Low Energy" kuonyesha orodha ya bodi 11 za BLE (songa chini ili uone chaguo zingine). Chagua manyoya ya Adafruit Bluefruit52.

Rudi kwenye menyu ya Kubadilisha na bonyeza "Hariri Haraka" na uweke kidokezo kinachofaa kwa menyu hii, k.m. "Feather52" na andika kwa ujasiri na saizi +7. Rangi ya nyuma iliachwa kama Nyeupe 'chaguo-msingi'

Rudi nyuma na ubonyeze kwenye "Ongeza Bidhaa ya Menyu", nenda chini na uchague "Kitufe cha Chati" ambacho kinafungua skrini ya kuhariri kitufe cha chati. Unaweza kufanya mabadiliko yoyote kwa muonekano wa kitufe hapa. Katika maandishi ya kifungo hiki kesi ilibadilishwa kuwa "Tarehe / Wakati njama ya A0" na chaguzi zingine ziliachwa kama ilivyo.

Hii inakupa kitufe kwenye menyu ambayo itafungua skrini ya chati.

Hatua ya 3: Kuhariri Chanzo cha Njama na Lables

Kuhariri Chanzo cha Njama na Lables
Kuhariri Chanzo cha Njama na Lables
Kuhariri Chanzo cha Njama na Lables
Kuhariri Chanzo cha Njama na Lables
Kuhariri Chanzo cha Njama na Lables
Kuhariri Chanzo cha Njama na Lables
Kuhariri Chanzo cha Njama na Lables
Kuhariri Chanzo cha Njama na Lables

Bonyeza kitufe cha "Tarehe / Wakati wa A0" kufungua skrini ya Viwanja vya Kubadilisha, ambapo unaweza kupata lebo ya chati, fomati ya X-axis, muda wa data ya njama na (kwa kusogeza chini) mipangilio ya njama zenyewe. Hariri Lebo ya Chati kuwa kitu kinachofaa, k.m. "A0 Volts".

Tembeza chini na kwa Viwanja 2 na 3 wazi Hariri Njama na bonyeza Ficha Njama ili kuziondoa kwenye onyesho la chati.

Kisha bonyeza "Hariri Plot 1" na uweke lebo ya njama (k.m

Tembeza nakala rudufu na ubonyeze "Uhakiki wa Chati" kwa alama za hivi karibuni za data za sampuli 0, kwa vipindi 1sec, zilizopangwa dhidi ya muda uliopita katika dk: sekunde.

Kwa viwanja vyote vya muda vilivyopita vinavyoongoza vitengo vya sifuri havionyeshwi kwa hivyo katika njama hii tu wakati huo> 1min zina dakika za kuongoza zilizoonyeshwa.

Hatua ya 4: Kuchagua Tarehe / Umbizo la Wakati

Kuchagua Tarehe / Umbizo la Wakati
Kuchagua Tarehe / Umbizo la Wakati
Kuchagua Tarehe / Umbizo la Wakati
Kuchagua Tarehe / Umbizo la Wakati
Kuchagua Tarehe / Umbizo la Wakati
Kuchagua Tarehe / Umbizo la Wakati

Kwa viwanja vya wakati vilivyopita kitengo kinachoongoza kinaendelea kuongezeka kadiri muda unavyoendelea. Kuona mfano wa hii rudi kwenye skrini ya "Viwanja vya Kubadilisha" na uongeze muda wa Takwimu za Plot hadi dakika 15 (chini ya skrini hii)

Kisha bonyeza kwenye hakikisho la Chati ili kuonyesha data sawa ya sampuli lakini sasa na vipindi vya 15min kati ya sampuli. Kama unaweza kuona dakika ni sehemu ya mm: ss inaendelea kuongezeka.

Sasa rudi nyuma na ubonyeze kitufe cha mhimili wa X kuonyesha chaguo ndogo za fomati zote za data za X-axis / wakati (tembeza chini kwa zaidi)

Hapo juu ni uteuzi wa muhtasari wa chati ukitumia fomati tofauti za mhimili wa X.

Viwanja vya tarehe / saa vilivyoonyeshwa hapa viko kwenye eneo la eneo la 'mitaa'. Pia kuna chaguzi za muundo wa kupanga tarehe / saa katika UTC. Kwa seti kamili ya chaguo zinazowezekana za muundo wa tarehe / saa angalia pfodSpecification.pfd.

Hatua ya 5: Tengeneza na Jaribu Mchoro wa Arduino

Tengeneza na Jaribu Mchoro wa Arduino
Tengeneza na Jaribu Mchoro wa Arduino
Tengeneza na Jaribu Mchoro wa Arduino
Tengeneza na Jaribu Mchoro wa Arduino

Mara tu unapofurahi na muundo wa chati yako na muda wa data, unaweza kwenda kwenye skrini ya "Menyu ya Kuhariri_1" na utembeze chini na "Tengeneza Msimbo" kwa bodi uliyochagua. Hapa kuna mfano wa mchoro wa Adafruit Feather52 ukitumia vipindi vya data 1sec na mm: ss format ya muda uliopitiliza, pfodFeather52_timeplot.ino

Hapo juu kuna kiwanja cha A0 kutoka kwa Manyoya52

Kubadilisha muundo kuwa siku ya Wiki hr: mins: sec (~ E HH: mm: ss) na kutengeneza tena nambari (pfodFeather52_dateplot.ino) inatoa kiwanja kama cha pili hapo juu.

Unaweza kuhariri muundo wa mhimili wa X moja kwa moja kwenye mchoro wako wa Arduino, kama ilivyoelezewa hapo baadaye.

Hatua ya 6: Je! Tarehe / Wakati wa PfodApp Plot Tarehe / Wakati Kutoka Millis ()?

Wakati pfodApp ikiunganisha, inakumbuka wakati wake wa 'mitaa' na UTC na inauliza pfodDevice's (bodi ya Arduino) bodi za nyakati za data za njama. Kutumia habari hii pfodApp inaweza kupanga vitambi vya saa kama saa zilizopita yaani kubadilisha milliseconds kuwa hr mins sec nk, au kupanga tarehe na saa mihuri ya muda ya millisecond inawakilisha jamaa na wakati unganisho ulifanywa na wakati wa sasa wa pfodDevice uliombwa.

Kuangalia mchoro wa Arduino (kwa mfano pfodFeather52_dateplot.ino), kuna vipande vidogo vitatu vya nambari ambavyo vinashughulikia upande wa Arduino wa viwanja.

Sehemu ya msimbo () inayoshughulikia ombi la sasa la muda wa pfodApp {@}

// kushughulikia {@} ombi} mwingine ikiwa ('@' == cmd) {// pfodApp ombi 'saa' ya sasa plot_mSOffset = millis (); // kukamata milisisi ya sasa kama mpangilio wa alama za alama za rawdata. (F ("{@` 0} ")); // kurudi "0 kama milisekunde za data za" sasa"

Unaweza kurudisha thamani ya sasa ya millis (), lakini millis () huzunguka kurudi hadi 0 kila siku 49.7, ambayo inaweza kufanya njama iruke nyuma. Kwa hivyo badala yake nambari hiyo inakumbuka thamani ya sasa ya millis () wakati ombi la {@} lilifanywa, na inarudisha {@ `0} i.e. Halafu wakati wa kutuma alama za rawdata mchoro unatumia

njama_1_var = AnalogSoma (A0); // soma pembejeo kwa njama // plot_2_var njama Imefichwa kwa hivyo hakuna data iliyopewa hapa // njama_3_var njama Imefichwa kwa hivyo hakuna data iliyopewa hapa // tuma data ya njama katika fomati ya CSV.print (millis () - plot_mSOffset); // wakati katika milliseconds ….

ili muhuri wa saa millisecond uliotumwa na data uanze saa 0 na kuongezeka hadi siku 49.7. Ikiwa unakaa umeunganishwa kila siku kwa siku 49.7 siku hiyo utaona njama ikiruka nyuma nyuma kwa ~ 50days. Kukatika na kuunganisha tena mara moja kila siku 49.7 huepuka hii.

Sehemu ya tatu ya mpango wa tarehe / saa ni ujumbe wa njama.

} ikiwa mwingine ikiwa ('A' == cmd) {// mtumiaji ameshinikizwa - 'Tarehe / Muda wa saa ya A0' // katika Menyu kuu ya Menyu_1 // ujumbe wa kupanga njama. mchapishaji.print (F ("{= A0 Volts ~ E HH: mm: ss | tarehe | A0 ~~~ Volts ||}"));

Mtumiaji anapobonyeza kitufe cha "Tarehe / Wakati wa A0", pfodApp hutuma {A} cmd kwa pfodDevice na pfodDevice hujibu na ujumbe wa njama, {=… {= A0 Volts ~ E HH: mm: ss | tarehe | A0 ~~~ Volts ||} ambayo ina muundo wa X-axis E HH: mm: ss

Fomati za Java SimpleDateFormat zinakubalika hapa. pfodApp Kukata Takwimu na kupanga mipango na pfodSpecification.pdf ina maelezo zaidi juu ya ujumbe wa njama.

Hatua ya 7: Kuzalisha tena Viwanja vya Tarehe / Wakati kwenye Kompyuta yako

Kuzalisha Viwanja vya Tarehe / Wakati kwenye Kompyuta yako
Kuzalisha Viwanja vya Tarehe / Wakati kwenye Kompyuta yako
Kuzalisha Viwanja vya Tarehe / Wakati kwenye Kompyuta yako
Kuzalisha Viwanja vya Tarehe / Wakati kwenye Kompyuta yako
Kuzalisha Viwanja vya Tarehe / Wakati kwenye Kompyuta yako
Kuzalisha Viwanja vya Tarehe / Wakati kwenye Kompyuta yako

Kwa chaguo-msingi, pfodApp huweka rekodi ya data yote inayoingia kwenye faili ya kumbukumbu kwenye simu yako ya rununu, isipokuwa uwe umezima ukataji huu kwenye skrini ya kuhariri unganisho, angalia pfodAppForAndroidGettingStarted.pdf

Unapohariri pfodApp, ujumbe mfupi unaonyesha na eneo na jina la faili ya kumbukumbu, n.k. /pfodAppRawData/pfod_bluefruit52.txt Faili hiyo iko katika muundo wa CSV, comma imepunguzwa, na baada ya kuihamisha kwa kompyuta yako (tazama pfodAppForAndroidGettingStarted.pdf kwa chaguzi za kuhamisha), unaweza kuifungua kwenye lahajedwali ili kupanga data.

Hapa kuna mistari michache ya kwanza ya faili ya logi.

// pfodApp V3.0.360, wakati wa ndani, UTC, mS kwa siku, pfod bluefruit52 wakati wa sasa (mS), pfod bluefruit52 wakati wa sasa, // iliyounganishwa saa, 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,,

Hapo juu unaweza kuona wakati wa 'mitaa' na UTC ambayo pfodApp imeunganishwa na Manyoya52 na wakati wa sasa katika mS ambayo Manyoya52 yaliripoti kupitia jibu la {@..}. Safu wima ya mwisho ni tupu, kwa sababu hakuna RTC au GPS na kwa hivyo hakuna wakati wa sasa katika muda wa yyyy / MM / dd uliripotiwa na Manyoya52.

Kupanga data dhidi ya wakati uliopita, toa wakati wa sasa (mS) kutoka muhuri wa saa millisecond na kisha ugawanye na mS kwa thamani ya siku. Hapa kuna lahajedwali na fomula imeongezwa na matokeo yamepangwa. Lahajedwali, chini, (pfod_bluefruit52.xls) ni lahajedwali la OpenOffice iliyohifadhiwa katika muundo wa Excel.

Katika OpenOffice, njama hiyo ni njama ya kutawanya na x-axis ya njama hiyo ilibuniwa katika HH: MM: SS Kumbuka: fomati za tarehe / saa ya lahajedwali SIYO sawa na fomati za njama zinazotumiwa na pfodApp. Kwa mfano katika pfodApp, MM ni miezi na mm ni dakika.

Ili kupanga njama dhidi ya tarehe na wakati, unahitaji tu kuongeza wakati wa unganisho kwa wakati wa lahajedwali na upate tena. (pfod_bluefruit52_date.xls)

Kumbuka: Wakati wa ndani na UTC ziliingizwa kama maandishi kwenye lahajedwali langu kwa hivyo nilihitaji kuondoa inayoongoza 'kabla ya kuzitumia katika fomula.

Hatua ya 8: Jinsi ya Kuepuka Kikomo cha Milioni 49.7day () na Kwanini Haupaswi

Kama ilivyoelezwa hapo juu katika Je! PfodApp Inapanga Tarehe / Wakati kutoka millis ()?, Ikiwa utabaki umeunganishwa kwa kuendelea kwa zaidi ya siku 49.7 alama za muda za millisecond zitazunguka hadi sifuri. Mistari michache ya nambari inaweza kuzuia hii lakini haifai.

Kwanza jinsi ya kuzuia kufunika kote. Ongeza mabadiliko mengine yasiyosajiliwa ya int ili kuweka wimbo wa nyakati ambazo mihuri ya nyakati huzunguka na kuchapisha matokeo yaliyojumuishwa katika HEX.

uint_t mSwrapCount = 0; uint32_t lastTimeStamp = 0;

… Plot_1_var = AnalogSoma (A0); // soma pembejeo kwa njama // plot_2_var njama Imefichwa kwa hivyo hakuna data iliyopewa hapa // njama_3_var njama Imefichwa kwa hivyo hakuna data iliyopewa hapa // tuma data ya njama katika muundo wa CSV uint32_t timeStamp = millis () - plot_mSOffset; ikiwa (timeStamp <lastTimeStamp) {// timeStamp imefungwa nyuma hadi 0 mSwrapCount ++; // ongeza moja kuhesabu} lastTimeStamp = timeStamp; mchapishaji.print ("0x"); printa.print (msWrapCount, HEX); parser.print (timeStamp, HEX); // time in milliseconds katika HEX….

Wakati wa kurudisha jibu la {@.. futa mSwrapCount pia.

// kushughulikia {@} ombi} mwingine ikiwa ('@' == cmd) {// pfodApp imeomba wakati wa 'sasa' plot_mSOffset = millis (); // kukamata millis za sasa kama kukabiliana na mihuri ya muda ya rawdata mSwrapCount = 0; // hesabu wazi ya kufunika. mchapishaji.print (F ("{@` 0} ")); // kurudi "0 kama milisekunde za data za" sasa"

Saa za muda sasa zitatoa thamani 'sahihi' kwa siku 40.7 zijazo * 65536 ~ = miaka 7308.

pfodApp itabadilisha moja kwa moja mihuri ya muda ya hex kwa kupanga njama na kuziweka sawa na ilivyopokelewa, yaani katika hex. Katika lahajedwali la (OpenOffice) unatumia fomula hii kubadilisha kamba ya hex, katika A2, hadi mS (ambapo A1 ni seli yoyote tupu) = HEX2DEC (BADILI (A2; 1; 2; A1))

Kwa nini hutaki kufanya hivi

Kama inavyoonyeshwa hapo juu, ni rahisi kupanua mihuri ya muda ya mS kuwa zaidi ya siku 50. Walakini labda hautaki kufanya hivyo kwa sababu wanazidi kuwa sahihi. Kioo cha kawaida cha 16Mhz kinachotumiwa kuunda milisiti () katika kipenyo kina usahihi wa ~ 50ppm (sehemu kwa milioni). Hii inamaanisha kuwa baada ya siku 49.7 muhuri wa saa wa millisecond unaweza kutoka nje kwa dakika 3 and na hiyo inapuuza athari ya joto kwenye usahihi wa kioo.

Kwa vipindi vifupi vya unganisho, usahihi huu sio shida kwani jibu la {@.. linasawazisha tena muhuri wa mwendo wa millisecond hadi tarehe / saa ya rununu kwenye kila unganisho tena. Walakini ikiwa unataka kuendelea kushikamana kwa muda mrefu (siku) na uendelee kuweka data, basi unapaswa kutumia kitu sahihi zaidi kuliko millis zilizojengwa (), kama moduli ya RTC au GPS.

Hatua ya 9: Kutumia RTC (Saa Saa Saa)

Kutumia RTC (Saa Saa Saa)
Kutumia RTC (Saa Saa Saa)
Kutumia RTC (Saa Saa Saa)
Kutumia RTC (Saa Saa Saa)

Kuna moduli kadhaa za RTC zinazopatikana, moja wapo ya sahihi zaidi ni DS3231 k.v. Moduli ya Adafruit DS3231. Usahihi uliotajwa ni +/- 2ppm zaidi ya 0 hadi 40C. i.e. ~ +/- 5 sec / mwezi.

Ikiwa unataka kupanga data ambayo ina mihuri ya tarehe / saa, n.k. 2019/04/19 20: 4: 34, basi unahitaji kurekebisha jibu la {@ kurudisha tarehe / saa ya sasa, n.k. {@ `0 ~ 2019/4/19 3: 33: 5}. Hapa kuna mabadiliko ya nambari ya sampuli ya kutumia kwenye mchoro wa pfodDesigner uliotengenezwa kwa kutumia moduli ya RTC, ukifikiri unatumia maktaba ya RTClib na umeongeza nambari hiyo anzisha moduli ya RTC.

// kushughulikia {@} ombi} mwingine ikiwa ('@' == cmd) {// pfodApp imeomba wakati wa 'sasa' plot_mSOffset = millis (); // kukamata millis za sasa kama mpangilio wa alama za alama za rawdata. F (F ("{@` 0 "}); tarehe / saa DateTime sasa = rtc.now () sendDateTime (& now); // send yyyy / M / d / H: m: s to parser.print, pass address & as arg. parser.print ('}'); // mwisho wa {@ majibu km {@ `0 ~ 2019/4/19 3: 33: 5}….

// tuma tarehe ya saa kuchapisha kuchapisha sentDateTime (DateTime * dt) {parser.print (dt-> year (), DEC); mchapishaji.print ('/'); printa (dt-> mwezi (), DEC); mchapishaji.print ('/'); alama (dt-> siku (), DEC); printa. "("); alama (dt-> saa (), DEC); mchapishaji.print (':'); alama (dt-> dakika (), DEC); mchapishaji.print (':'); alama (dt-> pili (), DEC); }

batili sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // kuanzisha tena kipima muda cha data ya njama, bila drift // toa maadili kwa vigeu vya njama kutoka kwa anuwai yako ya kitanzi au soma pembejeo za ADC plot_1_var = analogRead (A0); // soma pembejeo kwa njama // plot_2_var njama Imefichwa kwa hivyo hakuna data iliyopewa hapa // njama_3_var njama Imefichwa kwa hivyo hakuna data iliyopewa hapa // tuma data ya njama katika muundo wa CSV DateTime sasa = rtc.now (); sendDateTime (& sasa); // tuma yyyy / M / d / H: m: s kwa parser.print, pitisha anwani & as arg. mchapishaji.print (','); printa. mchapishaji.print (','); // Plot 2 imefichwa. Hakuna data iliyotumwa. mchapishaji.print (','); // Plot 3 imefichwa. Hakuna data iliyotumwa. mchunguzi.println (); // mwisho wa rekodi ya data ya CSV}}

Sehemu ya ~ 2019/4/19 3: 33: 5 ya {@ majibu inakuwezesha pfodApp kujua kile pfodDevice inadhani ni tarehe na wakati wa sasa. Mchoro wako unaweza kisha kutuma data na mihuri ya yMd Hms na pfodApp itazipanga kama wakati uliopitiliza kutoka wakati wa unganishi AU kama tarehe na saa, kulingana na fomati ya X-axis unayotaja.

Wakati wa kupanga njama dhidi ya tarehe na wakati, utaratibu wa mpango wa pfodApp hurekebisha "drift" yoyote katika RTC kwa kulinganisha wakati ulioripotiwa wa pfodDevice dhidi ya wakati wa sasa wa rununu. Marekebisho haya pia hushughulikia RTC ikiwekwa kwenye eneo la wakati tofauti na saa ya eneo ya rununu yako. timiti () timestamps zinaendelea kufanya kazi kama katika Kutumia timiti za Arduino millisecond, Hatua ya 5 hapo juu.

Hapa kuna mfano lahajedwali la joto la chumba kwa kipindi cha siku 8, Office_Temp.xls Wakati faili ya logi ililetwa nje safu ya kwanza iliwekwa alama kama YMD kubadilisha maandishi kuwa tarehe / saa. Bado unahitaji kuondoa fomu inayoongoza wakati wa ndani, uingizaji wa wakati wa sasa wa UTC na Ofisi ya Ofisi ili lahajedwali liwatafsiri kama tarehe na nyakati.

Ili kupata njama ile ile ambayo pfodApp inaonyesha, unahitaji kuhesabu "Tarehe / Saa Iliyorekebishwa". Katika kesi hii wakati wa RTC uko sekunde 2 nyuma ya wakati wa ndani wa rununu, kwa hivyo kwa kila muhuri wa muda wa RTC umeongezwa (wakati wa ndani - Wakati wa Ofisi ya sasa) kupata wakati wa kweli wa ndani.

Kwa viwanja vya muda vilivyopita, tengeneza safu mpya iliyo na (stempu ya saa / saa - saa ya Ofisi ya Wakati wa sasa) na uitumie kama mhimili wa X kwenye chati (Office_TempElapsed.xls) Kwa kweli katika kesi hii, pfodApp hutoa chati za wakati zilizopita kwa siku hr: dakika: sec.

Hatua ya 10: Kutumia Moduli ya GPS

Kutumia moduli ya GPS ni sawa na kutumia moduli ya RTC, isipokuwa kuwa moduli za GPS zina milliseconds, miaka huanza saa 2000 na wakati unakosa sekunde za kuruka za UTC (ona https://tycho.usno.navy.mil/leapsec.html Tarehe na wakati wa GPS kwa sasa ni sekunde 18 mbele ya UTC, mnamo Januari 2018.

Maktaba ya GPS ya Adafruit ya GPS ya Adafruit Ultimate, tofauti na RTClib, haionyeshi mwaka wa 2000 kwa miaka ya GPS, kwa hivyo inahitaji kuongezwa wakati unapotuma muhuri wa tarehe na saa. Ingawa maktaba ya GPS inasambaza milliseconds ambazo zina usahihi mzuri sana wa muda mrefu, sio sahihi sana. Sasisho la wakati wa GPS ni mara moja tu kila 100mS halafu kuna ucheleweshaji wa ziada kupokea data ya serial kwa baud polepole ya 9600 na ucheleweshaji mwingine wa kuichambua. Zote ambazo zinaongeza kwa millisecond katika usahihi wakati wa kumaliza alama za usomaji wa data.

Hapa kuna mabadiliko ya nambari ya sampuli ya kutumia kwenye mchoro wa pfodDesigner uliotengenezwa kwa kutumia moduli ya GPS, ukifikiri unatumia maktaba ya GPS ya Adafruit na umeongeza nambari ya kupokea na kuchanganua ujumbe kuwa kitu cha GPS.

// kushughulikia {@} ombi} mwingine ikiwa ('@' == cmd) {// pfodApp imeomba wakati wa 'sasa' plot_mSOffset = millis (); // kukamata millis za sasa kama mpangilio wa alama za alama za rawdata. F (F ("{@` 0 "}); tarehe / saa sendDateTime (& GPS); {@ `0 ~ 2019/4/19 3: 33: 5}….

// tuma wakati wa tarehe ya kuchapisha kuchapisha sentDateTime (Adafruit_GPS * gps) {parser.print (F ("20"); // 20.. mwaka parser.print (gps-> mwaka, DEC); parser.print ('/ printa.print (gps-> mwezi, DEC); mchoraji.print ('/'); parser.print (gps-> siku, DEC); parser.print ("); > saa, DEC); mchoraji.print (':'); mchoraji.print (gps-> dakika, DEC); mchoraji.print (':'); parser.print ('.'); ikiwa unatuma milliseconds // ikiwa unataka kutuma mS unahitaji kuweka gps-> milliseconds value na zero zinazoongoza // yaani 3 inahitaji kubanwa hadi 003}

batili sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // kuanzisha tena kipima muda cha data ya njama, bila drift // toa maadili kwa vigeu vya njama kutoka kwa anuwai yako ya kitanzi au soma pembejeo za ADC plot_1_var = analogRead (A0); // soma pembejeo kwa njama // plot_2_var njama Imefichwa kwa hivyo hakuna data iliyopewa hapa // njama_3_var njama Imefichwa kwa hivyo hakuna data iliyopewa hapa // tuma data ya njama katika muundo wa CSV sendDateTime (& GPS); // tuma yyyy / M / d / H: m: s kwa parser.print, pitisha anwani & as arg. mchapishaji.print (','); printa. mchapishaji.print (','); // Plot 2 imefichwa. Hakuna data iliyotumwa. mchapishaji.print (','); // Plot 3 imefichwa. Hakuna data iliyotumwa. mchunguzi.println (); // mwisho wa rekodi ya data ya CSV}}

Wakati wa kupanga njama dhidi ya tarehe na wakati, pfodApp hurekebisha kiatomati kwa sekunde za kuruka. Kama mnamo Jan 2018, wakati wa GPS ni sekunde 18 mbele ya UTC. pfodApp hurekebisha hii kwa kulinganisha tarehe / saa iliyorudishwa na GPS kwenye unganisho, kupitia {@ majibu, dhidi ya tarehe na wakati wa UTC ya rununu. Kuunda viwanja katika lahajedwali kutoka kwa faili ya logi ya pfodApp ni sawa na kwa moduli za RTC, hapo juu. Kuongeza (wakati wa ndani - Muda wa sasa wa Ofisi) kwa viunga vya muda vya GPS hurekebisha kwa sekunde za kuruka.

timiti () timestamps zinaendelea kufanya kazi kama katika Kutumia timiti za Arduino millisecond, Hatua ya 5 hapo juu.

Hatua ya 11: Hitimisho

Kutumia pfodApp kwenye simu yako ya Android hukuruhusu kupanga data dhidi ya tarehe na wakati au wakati uliopitiliza, ukitumia tu milisiti ya Arduino (). Kutumia faili ya kumbukumbu ya pfodApp unaweza kutengeneza tena viwanja hivi vya tarehe / saa kwenye lahajedwali. Ikiwa mradi wako wa Arduino una moduli ya RTC, unaweza kuingia na kupanga tarehe na mihuri ya muda ya RTC, kurekebisha moja kwa moja kwa 'drift' ya RTC. Ikiwa mradi wa Arduino una moduli ya GPS unaweza kuingia na kupanga mihuri yake sahihi na pfodApp itasahihisha sekunde za kuruka za GPS.

Katika hali zote data ghafi kutoka kwa mradi wako wa Arduino imeingia haswa kama ilivyopokelewa, bila kusahihishwa. Walakini faili ya kumbukumbu ya pfodApp inajumuisha data ya ziada kukuruhusu utoe tena marekebisho haya kwenye lahajedwali kutoka kwa faili ya logi iliyopakuliwa.

Usimbuaji wa Android hauhitajiki. Fomati za njama zote zimeainishwa na nyuzi ndogo za maandishi kwenye mchoro wako wa Arduino. PfodDesigner ya bure hutengeneza ukataji kamili wa data ya Arduino na michoro ya michoro kwa anuwai ya bodi za Arduino zinazounganisha kupitia WiFi, Classic Bluetooth, BLE na SMS

Ilipendekeza: