Millis () пен PfodApp көмегімен Arduino күнін/уақытын жоспарлау/тіркеу: 11 қадам
Millis () пен PfodApp көмегімен Arduino күнін/уақытын жоспарлау/тіркеу: 11 қадам
Anonim
Millis () пен PfodApp көмегімен Arduino күнін/уақытын жоспарлау/тіркеу
Millis () пен PfodApp көмегімен Arduino күнін/уақытын жоспарлау/тіркеу

Arduino немесе Android бағдарламалау қажет емес. RTC және GPS модульдері де қолдау көрсетеді. Уақыт белдеулерін автоматты түрде түзету, RTC дрейфі және GPS секіру секундтары жоқ

Кіріспе

Бұл оқу құралы pfodApp көмегімен Android ұялы телефонындағы деректерді күн мен уақытқа салыстыру үшін Arduino millis () уақыт белгілерін қалай пайдалану керектігін көрсетеді.

Arduino немесе Android бағдарламалау қажет емес. pfodApp сонымен қатар электрондық кестеде күн/уақыт сюжеттерін қайта шығаруға мүмкіндік беретін жеткілікті деректерді тіркейді.

Ешқандай RTC немесе GPS модулі қажет емес, бірақ егер сіздің Arduino жобаңызда RTC (Real Time Clock) немесе GPS модулі болса, оларды да қолдануға болады. Бұл жағдайда pfodApp сюжеттері уақыт белдеуіне, RTC дрейфіне және GPS жетіспейтін секундтарға автоматты түрде түзетіледі. Бұл түзетулер үшін арнайы Arduino коды қажет емес. Әдеттегідей, pfodApp сияқты, алынған деректер дәл сол күйінде жазылады, бірақ журнал файлында журналдарды компьютерге жүктеген кезде осы түзетулерді өзіңіз қолдануға мүмкіндік беретін жеткілікті ақпарат бар. Осы өңдеуден кейінгі мысалдар үшін төменде қараңыз.

Уақыт пен күннің X-осі форматтауының кең таңдауына қолдау көрсетіледі, олардың барлығы Arduino эскизіндегі қысқа мәтін жолдарымен толық басқарылады. Android бағдарламалау қажет емес.

pfodApp WiFi, Bluetooth Classic, BLE және SMS арқылы қосылады. Ақысыз pfodDesigner тақталардың алуан түріне қосылу үшін күнді/уақытты жоспарлау/тіркеу үшін толық Arduino эскиздерін жасайды. Arduino бағдарламалау қажет емес.

Бұл нұсқаулық Ble арқылы қосылатын Arduino тақтасының мысалы ретінде Adafruit Feather52 пайдаланады.

Бұл нұсқаулық үш жағдайды қамтиды:- 1) Сіздің микропроцессорлық жобаңызда тек миллисекундтық уақыт белгілері бар- millis () 2) Сіздің микропроцессорлық жобаңызда нақты уақыт сағаты (RTC) бар- pfodApp дрейфті автоматты түрде түзетеді. 3) Сіздің микропроцессорлық жобаңызда GPS модулі бар - pfodApp олардың секіру секундтарын автоматты түрде түзетеді (қазіргі уақытта 2018 ж. 18 секунд).

1 -қадам: Arduino Millisecond уақыт белгілерін пайдалану, Millis ()

Күн мен уақыт үшін миллисекундтарды пайдаланудың екі бөлігі бар. Біреуі өткен уақытқа немесе уақытқа/уақытқа қатысты деректерді құруға арналған, ал екінші бөлігі-тіркелген шикізат миллисекундтық уақыт белгілерінен күн мен уақытты қайта жасайды. pfodApp pfodDevice (Arduino micro) алынған бастапқы деректерді өзгертпейді. Ол тек алынған байттарды тіркейді.

Алдымен pfodDesigner тегін микрофоныңыз үшін Arduino эскизін жасау үшін пайдаланыңыз, ол миллисекундтар мен деректерді өлшеуді pfodApp -қа жоспарлау/тіркеу үшін жібереді. Бұл мысал Adafruit Feather 52 BLE тақтасы үшін мәзір жасайды, онда A0 жазылады. Adafruit Feather nRF52 LE бойынша нұсқаулық - pfodApp көмегімен реттелетін басқару элементтері pfodDesigner қадамдарынан өтіп, Диаграмма батырмасы бар Feather nRF52 мәзірін жасайды, сондықтан оны толығырақ қараңыз. Бұл оқулықта біз диаграмма батырмасын қосамыз және A0 көрсеткіштерін өткен уақыт пен күн/уақытқа салыстыру үшін X осінің жаңа форматтық опцияларын қолданамыз.

Бұл оқулықтың бірінші бөлігі Android ұялы телефонында күн/уақыт диаграммасының үлгісін жасау үшін ақысыз pfodDesigner көмегімен өтеді. Егер сіз дисплейге қанағаттансаңыз, сіз Arduino эскизін жасай аласыз, ол pfodApp -пен қосылған кезде оны шығарады. Android бағдарламалаудың қажеті жоқ, және pfodDesigner көптеген Arduino тақталарына арналған толық Arduino эскиздерін шығаратындықтан, Arduino бағдарламалауы да қажет емес.

2 -қадам: Мәзірге диаграмма қосу

Мәзірге диаграмма қосу
Мәзірге диаграмма қосу
Мәзірге диаграмма қосу
Мәзірге диаграмма қосу
Мәзірге диаграмма қосу
Мәзірге диаграмма қосу
Мәзірге диаграмма қосу
Мәзірге диаграмма қосу

PfodDesigner қосымшасын Google Play -ден жүктеп алыңыз, оны ашыңыз және «Жаңа мәзірді бастау» түймесін басыңыз.

Кейбір BLE тақталарының тізімін көрсету үшін «Мақсатты серияны», содан кейін «Bluetooth төмен энергия» түймесін басыңыз (басқа опцияларды көру үшін төмен жылжыңыз). Adafruit Bluefruit қауырсынынан 52 таңдаңыз.

Өңдеу мәзіріне оралыңыз және «Өңдеуді шақыруды» нұқыңыз және осы мәзірге сәйкес шақыруды орнатыңыз, мысалы. «Feather52» және қалың мәтін +7. Фон түсі «әдепкі» ақ болып қалды

Артқа қайтып, «Мәзір элементін қосу» түймесін басыңыз, төмен жылжыңыз және диаграмма түймесін өңдеу экранын ашатын «Диаграмма түймесін» таңдаңыз. Бұл жерде түйменің сыртқы түріне кез келген өзгеріс енгізуге болады. Бұл жағдайда батырманың мәтіні «A0 күн/уақыт сюжеті» болып өзгертілді, ал басқа әдепкі мәндер сол күйінде қалды.

Бұл мәзірде диаграмма экранын ашатын түймені береді.

3 -қадам: Сюжеттің қайнар көзі мен графиктерін өңдеу

Сюжеттің қайнар көзі мен графиктерін өңдеу
Сюжеттің қайнар көзі мен графиктерін өңдеу
Сюжеттің қайнар көзі мен графиктерін өңдеу
Сюжеттің қайнар көзі мен графиктерін өңдеу
Сюжеттің қайнар көзі мен графиктерін өңдеу
Сюжеттің қайнар көзі мен графиктерін өңдеу
Сюжеттің қайнар көзі мен графиктерін өңдеу
Сюжеттің қайнар көзі мен графиктерін өңдеу

«А0 күнінің/уақытының графигі» түймесін басып, диаграмма белгісіне, X осінің форматына, сюжеттік деректер интервалына және (төмен жылжу арқылы) сюжеттік параметрлерге қол жеткізуге болатын «Плиталарды өңдеу» экранын ашу үшін басыңыз. Диаграмма жапсырмасын қолайлы нәрсеге өңдеңіз, мысалы. «A0 вольт».

Төмен қарай жылжып, 2 және 3 -сюжеттер үшін Өңдеу сюжетін ашыңыз және оларды диаграммадан алып тастау үшін Сюжетті жасыру түймешігін басыңыз.

Содан кейін «1 -сюжетті өңдеу» түймесін басып, сюжеттік белгіні (мысалы, A0), yAxis бірліктерін (мысалы, Вольт) орнатыңыз, максимум 3,6В көрсетіңіз және A0 енгізу -шығару штырына қосылыңыз.

Артқа айналдырыңыз және «Диаграмманы алдын ала қарауды» нұқыңыз, соңғы 1 секундтық интервалда, өткен уақытқа қарсы минуттармен есептелген 0 соңғы үлгі нүктелері.

Барлық өткен уақыттар үшін нөлдік бірліктерді көрсететін сюжеттер көрсетілмейді, сондықтан бұл сюжетте тек> 1мин уақыттары көрсетіледі.

4 -қадам: Күн/уақыт форматын таңдау

Күн/уақыт форматын таңдау
Күн/уақыт форматын таңдау
Күн/уақыт форматын таңдау
Күн/уақыт форматын таңдау
Күн/уақыт форматын таңдау
Күн/уақыт форматын таңдау

Өткен уақыт сюжеттерінде жетекші қондырғы уақыт өткен сайын ұлғая береді. Мұның мысалын көру үшін «Сюжеттерді өңдеу» экранына оралыңыз және сюжеттік деректер аралығын 15 минутқа дейін арттырыңыз (осы экранның төменгі жағында)

Содан кейін сол үлгі деректерін көрсету үшін диаграмманы алдын ала қарау түймесін басыңыз, бірақ қазір үлгілер арасындағы 15 минуттық интервалмен. Көріп отырғаныңыздай, мм: s бөлігі минут сайын өсіп келеді.

Енді қайтып оралып, X осінің барлық ықтимал деректері/уақыт форматтарының шағын таңдауын көрсету үшін X осі түймесін басыңыз (толығырақ төмен қарай айналдырыңыз)

Жоғарыда әр түрлі X осі форматтарын қолданатын диаграмманы алдын ала қараудың таңдауы берілген.

Мұнда көрсетілген күн/уақыт кестелері 'жергілікті' уақыт белдеуінде. Сондай -ақ, UTC -те күнді/уақытты жоспарлаудың формат нұсқалары бар. Мүмкін болатын күн/уақыт форматының толық нұсқасын pfodSpecification.pfd қараңыз.

5 -қадам: Arduino эскизін жасаңыз және тексеріңіз

Arduino эскизін жасаңыз және тексеріңіз
Arduino эскизін жасаңыз және тексеріңіз
Arduino эскизін жасаңыз және тексеріңіз
Arduino эскизін жасаңыз және тексеріңіз

Диаграмманың форматы мен деректер интервалына риза болғаннан кейін, сіз «Edit Menu_1» экранына өтіп, төмен қарай жылжып, таңдалған мақсатты тақта үшін «Код жасау» мүмкін болады. Adafruit Feather52 үшін 1сек деректер интервалын және мм: ss өткен уақыт форматын, pfodFeather52_timeplot.ino қолданатын үлгі нобай.

Жоғарыда Feather52 -ден A0 сюжеті орналасқан

Пішімді Weekday hr: mins: sec (~ E HH: mm: ss) етіп өзгерту және кодты қайта құру (pfodFeather52_dateplot.ino) жоғарыдағыдай сюжет береді.

Сіз X осінің пішімін келесіде сипатталғандай Arduino эскизінде тікелей өңдей аласыз.

6 -қадам: PfodApp күні/уақытын Millis () арқылы қалай құрады?

PfodApp қосылған кезде, ол өзінің «жергілікті» және UTC уақытын еске түсіреді және pfodDevice (Arduino тақтасының) ағымдағы сюжет деректерінің уақыт белгілерін сұрайды. Бұл ақпаратты pfodApp қолдана отырып, миллисекундтық уақыт белгілерін өткен уақыт ретінде, яғни миллисекундтарды сағ. Мин. Секундқа түрлендіруге немесе миллисекундтық уақыт белгісінің байланыс пен pfodDevice -тің ағымдағы уақыты сұралған уақытқа сәйкес келетін күні мен уақытын құруға болады.

Arduino жасаған эскизге (мысалы, pfodFeather52_dateplot.ino) қарап, сюжеттердің Arduino жағын өңдейтін кодтың үш шағын биті бар.

PfodApp {@} ағымдағы уақыт сұранысын өңдейтін цикл () код бөлімі

// өңдеу {@} request} else if if ('@' == cmd) {// pfodApp «ағымдағы» уақытты сұрады plot_mSOffset = millis (); // ағымдағы миллистерді өңделмеген шикізат уақыт белгілері ретінде түсіру parser.print (F («{@` 0} »)); // «0» бастапқы деректерді миллисекунд ретінде қайтару

Сіз миллис () ағымдағы мәнін қайтара аласыз, бірақ millis () әр 49,7 күн сайын 0 -ге оралады, бұл сюжеттің артқа қарай секіруіне әкеледі. Оның орнына, код {@} сұранысы жасалған кезде миллис () мәнін есте сақтайды және {@`0} яғни ағымдағы миллисекундтық уақыт белгісін нөлге қайтарады. Содан кейін эскиз пайдаланатын шикізат нүктелерін жіберу кезінде

plot_1_var = analogRead (A0); // сюжетке енгізуді оқыңыз // plot_2_var сюжеті Жасырылған, сондықтан мұнда ешқандай деректер тағайындалмаған // plot_3_var сюжеті Жасырын, сондықтан мұнда ешқандай деректер тағайындалмады // сюжеттік деректерді CSV форматында жіберу parser.print (millis ()-plot_mSOffset); // уақыт миллисекундпен ….

деректермен жіберілетін миллисекундтық уақыт белгісі 0 -ден басталады және 49,7 күнге дейін артады. Егер сіз 49.7 күн бойы үздіксіз байланыста болсаңыз, онда сюжеттің ~ 50 күнге артқа секіргенін көресіз. 49,7 күнде бір рет ажырату және қайта қосу бұған жол бермейді.

Күн/уақыт сюжетінің үшінші бөлігі - сюжеттік хабар.

} if if ('A' == cmd) {// user pressed - 'Date/Time plot of A0' // // Menu_1 негізгі мәзірінде // сюжеттік хабарды қайтарады. parser.print (F («{= A0 Вольт ~ Е HH: мм: ss | күн | A0 ~~~ Вольт ||}»)));

Пайдаланушы «A0 күн/уақыт графигі» түймесін басқанда, pfodApp pfodDevice ішіне {A} cmd жібереді, ал pfodDevice сюжет хабарымен жауап береді, {=… {= A0 Вольт ~ Е HH: мм: ss | күн | A0 ~~~ Вольт ||} құрамында X осі E HH: mm: ss форматы бар

Java SimpleDateFormat форматтары мұнда қолайлы. pfodApp деректерді тіркеу және жоспарлау және pfodSpecification.pdf сюжеттік хабарлама туралы толығырақ мәліметке ие.

7 -қадам: Компьютердегі күн/уақыт кестелерін жаңғырту

Компьютерде Күн/Уақыт кестелерін жаңғырту
Компьютерде Күн/Уақыт кестелерін жаңғырту
Компьютерде Күн/Уақыт кестелерін жаңғырту
Компьютерде Күн/Уақыт кестелерін жаңғырту
Компьютерде Күн/Уақыт кестелерін жаңғырту
Компьютерде Күн/Уақыт кестелерін жаңғырту

Әдепкі бойынша, pfodApp барлық кіріс деректерді ұялы телефондағы журнал файлына тіркейді, егер сіз бұл тіркеуді қосылымды өңдеу экранында өшірмесеңіз, pfodAppForAndroidGettingStarted.pdf қараңыз

PfodApp өңдеген кезде журнал файлының орналасқан жері мен аты көрсетілген қысқа хабарлама шығады, мысалы. /pfodAppRawData/pfod_bluefruit52.txt Бұл файл CSV форматында, үтірмен бөлінген және оны компьютерге жібергеннен кейін (тасымалдау опциялары үшін pfodAppForAndroidGettingStarted.pdf қараңыз), деректерді орналастыру үшін оны электрондық кестеде ашуға болады.

Бұл журнал файлының алғашқы бірнеше жолдары.

// pfodApp V3.0.360, жергілікті уақыт, UTC, тәулігіне mS, pfod bluefruit52 ағымдағы уақыты (mS), pfod bluefruit52 ағымдағы уақыты, // қосылған, 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,, Жоғарыда Feather52 -ге қосылған pfodApp -тың «жергілікті» және UTC уақыты мен Feather52 {@..} жауабы арқылы хабарланған mS -тегі ағымдағы уақытты көруге болады. Соңғы баған бос, өйткені RTC немесе GPS жоқ, сондықтан Feather52 жжж/АА/кк уақытында ағымдағы уақыт туралы хабарлаған жоқ.

Деректерді өткен уақытпен салыстыру үшін миллисекундтық уақыт белгісінен ағымдағы уақытты (mS) алып тастаңыз, содан кейін тәуліктік мс мәніне бөліңіз. Міне формуласы қосылған және нәтижесі салынған электрондық кесте. Төмендегі электрондық кесте (pfod_bluefruit52.xls) - Excel форматында сақталған OpenOffice кестесі.

OpenOffice-те сюжет шашыраңқы сюжет болып табылады және сюжеттің х осі HH: MM: SS форматында пішімделген Ескертпе: электрондық кестенің күн/уақыт форматтары pfodApp қолданатын сюжеттік форматтармен бірдей емес. Мысалы, pfodApp -те ММ - ай, мм - минут.

Күн мен уақытты салыстыру үшін тек кестеге қосылу уақытын қосу және қайта орналастыру қажет. (pfod_bluefruit52_date.xls)

Ескерту: Жергілікті уақыт пен UTC электрондық кестеде мәтін ретінде импортталды, сондықтан оларды формулада қолданбас бұрын жетекшісін алып тастау керек болды.

8 -қадам: 49.7 күндік Millis () лимитінен қалай аулақ болуға болады және неге олай етпеу керек

Жоғарыда айтылғандай, pfodApp millis () -тен күнді/уақытты қалай құрады ?, егер сіз 49,7 күннен артық үздіксіз қосылсаңыз, миллисекундтық уақыт белгілері нөлге оралады. Бірнеше код жолдары бұған жол бермейді, бірақ ұсынылмайды.

Алдымен айналдырудан қалай аулақ болуға болады. Уақыт белгілерінің айналу санын бақылау және біріктірілген нәтижені HEX -те басып шығару үшін басқа белгісіз int айнымалысын қосыңыз.

uint_t mSwrapCount = 0; uint32_t lastTimeStamp = 0;

… Plot_1_var = analogRead (A0); // сюжетке енгізуді оқу // plot_2_var сюжеті Жасырын, сондықтан мұнда ешқандай деректер тағайындалмады // plot_3_var сюжеті Жасырын, сондықтан мұнда ешқандай деректер тағайындалмады // сюжеттік деректерді CSV форматында жіберу uint32_t timeStamp = millis ()-plot_mSOffset; if (timeStamp <lastTimeStamp) {// timeStamp 0 mSwrapCount ++ дейін оралған; // санауға біреуді қосыңыз} lastTimeStamp = timeStamp; parser.print («0x»); parser.print (msWrapCount, HEX); parser.print (timeStamp, HEX); // HEX -те миллисекундтарда уақыт….

{@.. жауабын қайтарған кезде mSwrapCount -ты да өшіріңіз.

// өңдеу {@} request} else if if ('@' == cmd) {// pfodApp «ағымдағы» уақытты сұрады plot_mSOffset = millis (); // ағымдағы миллистерді шикізаттың уақыт белгісі ретінде алу mSwrapCount = 0; // ораудың таза саны. parser.print (F («{@` 0} »)); // «0» бастапқы деректерді миллисекунд ретінде қайтару

Уақыт белгілері енді келесі 40.7күн * 65536 ~ = 7308 жылға «дұрыс» мән береді.

pfodApp сызбаның он алтылық уақыт белгілерін автоматты түрде түрлендіреді және оларды дәл сол сияқты жазады, яғни он алтылықта. (OpenOffice) электрондық кестесінде сіз алты формалы жолды A2 -де mS -ке түрлендіру үшін осы формуланы қолданасыз (мұнда A1 - бос ұяшық) = HEX2DEC (REPLACE (A2; 1; 2; A1))

Неге сіз мұны жасағыңыз келмейді

Жоғарыда көрсетілгендей, mS уақыт белгілерін 50 күннен ұзарту оңай. Бірақ сіз мұны қаламайсыз, себебі олар дәлірек болады. Millis () нәтижелерін жасау үшін қолданылатын 16 МГц типті кристаллдың дәлдігі ~ 50 ppm (миллионға шаққандағы бөлшектер). Бұл 49,7 күннен кейін миллисекундтық уақыт белгісі 3 минуттан кейін шығуы мүмкін екенін білдіреді және бұл температураның кристалды дәлдікке әсерін елемейді.

Қысқа қосылу кезеңінде бұл дәлдік проблема емес, себебі {@.. жауабы миллисекундтық уақыт белгісін ұялы телефонның күн/уақытына қайта қосылу кезінде қайта синхрондайды. Егер сіз ұзақ уақыт (күндер) байланыста болуды және деректерді үздіксіз тіркеуді қаласаңыз, онда RTC немесе GPS модулі сияқты кіріктірілген миллиске () қарағанда дәлірек нәрсені пайдалануыңыз керек.

9 -қадам: RTC пайдалану (нақты уақыт сағаты)

RTC (нақты уақыт сағаты) пайдалану
RTC (нақты уақыт сағаты) пайдалану
RTC (нақты уақыт сағаты) пайдалану
RTC (нақты уақыт сағаты) пайдалану

Бірқатар RTC модульдері бар, дәлірек бірі DS3231. Adafruit DS3231 модулі. Белгіленген дәлдік- +40 градусқа дейін +/- 2 ppm. яғни ~ +/- 5 сек/ай.

Егер сіз күн/уақыт белгісі бар деректерді құрғыңыз келсе, мысалы: 2019/04/19 20: 4: 34, онда сіз ағымдағы күнді/уақытты қайтару үшін {@ жауабын өзгертуіңіз керек, мысалы: {@`0 ~ 2019/4/19 3: 33: 5}. Сіз RTClib кітапханасын қолданасыз және код RTC модулін инициализациялады деп есептесеңіз, RTC модулін қолдануға арналған pfodDesigner эскизіне қолдану үшін кодтың кейбір үлгі өзгерістері.

// өңдеу {@} request} else if if ('@' == cmd) {// pfodApp «ағымдағы» уақытты сұрады plot_mSOffset = millis (); // ағымдағы миллистерді өңделмеген шикізат уақыт белгілері ретінде алу parser.print (F («{@` 0 »}); //« 0 »ағымдағы« шикізат деректері миллисекундтары parser.print ('~') ретінде қайтару; // жолды бастау date/time DateTime now = rtc.now () sendDateTime (& now); // yyyy/M/d/H: m: s жіберу parser.print, мекенжайды & arg. parser.print ('}') ретінде жіберу; // соңы {@ жауаптың мысалы, {@ `0 ~ 2019/4/19 3: 33: 5}….

// күннің уақытын талдаушыға жіберу printvoid sendDateTime (DateTime* dt) {parser.print (dt-> year (), DEC); parser.print ('/'); parser.print (dt-> ай (), DEC); parser.print ('/'); parser.print (dt-> day (), DEC); parser.print (''); parser.print (dt-> сағат (), DEC); parser.print (':'); parser.print (dt-> минут (), DEC); parser.print (':'); parser.print (dt-> second (), DEC); }

void sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // сюжеттік деректер таймерін, дрейфсіз қайта бастау // айнымалыларды цикл айнымалыларынан салу үшін мәндерді тағайындау немесе ADC кірістерін оқу plot_1_var = analogRead (A0); // сюжетке кірісті оқу // plot_2_var сюжеті Жасырын, сондықтан мұнда ешқандай деректер тағайындалмады // plot_3_var сюжеті Жасырын, сондықтан мұнда ешқандай деректер тағайындалмады // сюжеттік деректерді CSV форматында жіберу DateTime now = rtc.now (); sendDateTime (& қазір); // yyyy/M/d/H: m: s жіберу parser.print, мекенжайды & arg ретінде жіберіңіз. parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_ масштабтау + plot_1_varDisplayMin); parser.print (','); // 2 -учаске жасырылған. Деректер жіберілмеді. parser.print (','); // 3 -учаске жасырылған. Деректер жіберілмеді. parser.println (); // CSV деректер жазбасының соңы}}

~ 2019/4/19 3: 33: 5 бөлігі@@ жауаптың pfodApp -қа pfodDevice -тің қазіргі күн мен уақыт деп ойлайтынын білуіне мүмкіндік береді. Сіздің эскизіңіз yMd Hms уақыт белгісімен деректерді жібере алады, ал pfodApp оларды сіз қосқан уақыттан бастап НЕМЕСЕ сіз көрсеткен X осінің форматына байланысты күн мен уақыт ретінде көрсетеді.

Күн мен уақытқа қарсы жоспар құрған кезде, pfodApp сюжеттік жоспары pfodDevice -тің хабарланған ағымдағы уақытын ұялы телефонның ағымдағы уақытымен салыстыру арқылы РТЖ кез келген «дрейфін» түзетеді. Бұл түзету RTC ұялы телефонның жергілікті уақыт белдеуінен басқа уақыт белдеуіне орнатылады. millis () уақыт белгілері Arduino миллисекундтық уақыт белгілерін қолданудағыдай 5 -қадамдағыдай жұмысын жалғастырады.

Міне, 8 күндік кезеңдегі бөлме температурасының электрондық кестесінің мысалы, Office_Temp.xls Журнал файлы импортталған кезде мәтінді күн/уақытқа түрлендіру үшін бірінші баған YMD ретінде белгіленді. Электрондық кесте оларды күндер мен уақыттар ретінде түсіндіруі үшін жергілікті уақытты, UTC және Office Temp ағымдағы уақыт жазбаларын алып тастау қажет.

PfodApp көрсететін сюжетті алу үшін сізге «Түзетілген күн/уақыт» есептелуі керек. Бұл жағдайда RTC уақыты ұялы телефонның жергілікті уақытынан 2 сек артта қалады, сондықтан нақты жергілікті уақытты алу үшін әрбір RTC уақыт белгісі қосылады (жергілікті уақыт - Office Temp ағымдағы уақыты).

Өткен уақыт кестелері үшін (күн/уақыт уақыт белгісі-Office Time ағымдағы уақыты) бар жаңа бағанды жасаңыз және оны диаграммадағы X осі ретінде пайдаланыңыз (Office_TempElapsed.xls) Іс жүзінде бұл жағдайда pfodApp жақсы өткен уақыт кестелерін шығарады. күнде сағ: мин: сек.

10 -қадам: GPS модулін пайдалану

GPS модулін пайдалану RTC модулін қолдануға ұқсас, тек GPS модульдерінде миллисекундтар бар, жылдар 2000 жылдан басталады және UTC секіру секундына жетпейді (https://tycho.usno.navy.mil/leapsec.html қараңыз)) GPS күні мен уақыты қазіргі уақытта 2018 жылдың қаңтарындағы жағдай бойынша UTC -тен 18 сек. Алда.

Adafruit Ultimate GPS үшін Adafruit GPS кітапханасы, RTClib -ден айырмашылығы, GPS жылдарына 2000 жылдық есепке қосылмайды, сондықтан оны күн мен уақыт белгісін жіберген кезде қосу қажет. Сондай -ақ, GPS кітапханасы өте жақсы ұзақ мерзімді дәлдікке ие миллисекундтарды жеткізсе де, олар дәл емес. GPS уақытының жаңартылуы әр 100 мС -те бір рет қана болады, содан кейін сериялық деректерді 9600 байда баяу қабылдауда қосымша кідіріс және оны талдаудың тағы бір кідірісі болады. Осының бәрі деректерді оқуды уақытша белгілеу кезінде миллисекундтық дәлдікке қосылады.

GPS модулін пайдалану үшін pfodDesigner жасаған эскизге қолдану үшін код үлгісінің кейбір өзгерістері, егер сіз Adafruit -тің GPS кітапханасын пайдалансаңыз және GPS объектісіне хабарларды қабылдау мен талдау үшін кодты қоссаңыз.

// өңдеу {@} request} else if if ('@' == cmd) {// pfodApp «ағымдағы» уақытты сұрады plot_mSOffset = millis (); // ағымдағы миллистерді өңделмеген шикізат уақыт белгілері ретінде алу parser.print (F («{@` 0 »}); //« 0 »ағымдағы« шикізат деректері миллисекундтары parser.print ('~') ретінде қайтару; // жолды бастау date/time sendDateTime (& GPS); // yyyy/M/d/H: m: s жіберу parser.print, мекенжайды жіберу және арг. parser.print ('}') ретінде; // {@ жауаптың соңы мысалы {@`0 ~ 2019/4/19 3: 33: 5}….

// датаны талдаудың жіберушіге жіберу датасын жіберу DateTime (Adafruit_GPS* gps) {parser.print (F («20»); // 20.. жылдық парсер.принт (gps-> жыл, DEC); parser.print ('/ '); талдаушы.печат (gps-> ай, DEC); талдаушы.баспа ('/'); талдаушы.баспа (gps-> күн, DEC); талдаушы.баспа (' '); талдаушы.баспа (gps- > сағ, DEC); parser.print (':'); parser.print (gps-> минут, DEC); parser.print (':'); parser.print (gps-> секунд, DEC); // parser.print ('.'); егер миллисекундтар жіберілсе // mS жібергіңіз келсе, gps-> миллисекунд мәнін жетекші нөлдермен толтыру қажет // яғни 003-ке 3 толтыру қажет.

void sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // сюжеттік деректер таймерін, дрейфсіз қайта бастау // айнымалыларды цикл айнымалыларынан салу үшін мәндерді тағайындау немесе ADC кірістерін оқу plot_1_var = analogRead (A0); // сюжетке кірісті оқу // plot_2_var сюжеті Жасырын, сондықтан мұнда ешқандай деректер тағайындалмады // plot_3_var сюжеті Жасырын, сондықтан мұнда ешқандай деректер тағайындалмады // сюжеттік деректерді CSV форматында жіберу sendDateTime (& GPS); // yyyy/M/d/H: m: s жіберу parser.print, мекенжайды & arg ретінде жіберіңіз. parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_ масштабтау + plot_1_varDisplayMin); parser.print (','); // 2 -учаске жасырылған. Деректер жіберілмеді. parser.print (','); // 3 -учаске жасырылған. Деректер жіберілмеді. parser.println (); // CSV деректер жазбасының соңы}}

Күн мен уақытқа қарсы жоспар құрған кезде, pfodApp автоматты түрде секіру секундына түзетеді. 2018 жылдың қаңтарындағы жағдай бойынша GPS уақыты UTC -тен 18 сек. pfodApp мұны {@ жауап арқылы ұялы телефонның UTC күні мен уақытымен байланыстыру кезінде GPS қайтарған күн/уақытты салыстыру арқылы түзетеді. PfodApp журнал файлынан электрондық кестеде сюжеттер құру жоғарыдағы RTC модульдерімен бірдей. GPS уақыт белгілеріне (жергілікті уақыт - Office Temp ағымдағы уақыты) қосу секіру секундтарын түзетеді.

millis () уақыт белгілері Arduino миллисекундтық уақыт белгілерін қолданудағыдай 5 -қадамдағыдай жұмысын жалғастырады.

11 -қадам: Қорытынды

Android мобильді телефонында pfodApp қолдану тек Arduino millis () функциясын қолдана отырып, деректерді күн мен уақытқа немесе өткен уақытқа қарсы құруға мүмкіндік береді. PfodApp журнал файлын қолдана отырып, бұл күн/уақыт кестелерін электрондық кестеде қайта шығаруға болады. Егер сіздің Arduino жобаңызда RTC модулі болса, сіз RTC «дрейфін» автоматты түрде түзете отырып, күн мен RTC уақыт белгілерін тіркей аласыз. Егер сізде Arduino жобасында GPS модулі болса, сіз оның уақыт белгілерін тіркей аласыз және pfodApp GPS -тің жетіспейтін секундтарын автоматты түрде түзетеді.

Барлық жағдайларда сіздің Arduino жобаңыздың бастапқы деректері дәл қабылданған, түзетілмеген түрде жазылады. PfodApp журналының файлында жүктелген журнал файлынан осы түзетулерді электрондық кестеде қайта шығаруға мүмкіндік беретін қосымша деректер бар.

Android кодтау қажет емес. Сюжеттік форматтар Arduino эскизінде шағын мәтін жолдарымен көрсетілген. Ақысыз pfodDesigner WiFi, Classic Bluetooth, BLE және SMS арқылы қосылатын Arduino тақталарының алуан түріне арналған Arduino деректерін толық тіркеу мен схемаларын жасайды.

Ұсынылған: