Բովանդակություն:
- Քայլ 1. Օգտագործելով Arduino Millisecond Timestamps, Millis ()
- Քայլ 2. Գծապատկեր ավելացնելը ընտրացանկին
- Քայլ 3: Հողամասի աղբյուրի և ընդհատումների խմբագրում
- Քայլ 4: Ընտրելով ամսաթվի/ժամի ձևաչափը
- Քայլ 5. Ստեղծեք և փորձարկեք Arduino ուրվագիծը
- Քայլ 6. Ինչպե՞ս է PfodApp- ը գծում Միլիսից ():
- Քայլ 7: Ձեր համակարգչի վրա ամսաթվի/ժամի գծագրերի վերարտադրումը
- Քայլ 8. Ինչպես խուսափել 49.7 օրվա Millis () սահմանաչափից և ինչու չպետք է դա անել
- Քայլ 9: Օգտագործելով RTC (իրական ժամանակի ժամացույց)
- Քայլ 10: Օգտագործելով GPS մոդուլ
- Քայլ 11: Եզրակացություն
Video: Arduino ամսաթիվ/ժամ գծագրում/մուտքագրում ՝ օգտագործելով Millis () և PfodApp: 11 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Arduino կամ Android ծրագրավորում չի պահանջվում: RTC և GPS մոդուլներ նույնպես ապահովված են: zամային գոտիների, RTC- ի շարժումների և GPS- ի բացակայող թռիչքային վայրկյանների ավտոմատ ուղղում
Ներածություն
Այս ձեռնարկը ցույց է տալիս, թե ինչպես օգտագործել ձեր Arduino millis () ժամանակային դրոշմակնիքները ՝ ձեր Android բջջային սարքի ամսաթվի և ժամի տվյալների հիման վրա ՝ օգտագործելով pfodApp:
Arduino կամ Android ծրագրավորում չի պահանջվում: pfodApp- ը նաև գրանցում է բավարար տվյալներ, որպեսզի հետագայում կարողանաք վերարտադրել ամսաթվի/ժամի գծագրերը աղյուսակում:
RTC կամ GPS մոդուլ անհրաժեշտ չէ, սակայն եթե ձեր Arduino նախագիծը ունի RTC (Իրական ժամանակի ժամացույց) կամ GPS մոդուլ, դրանք նույնպես կարող են օգտագործվել: Այդ դեպքերում pfodApp- ի գծապատկերներն ավտոմատ կերպով կուղղվեն ժամային գոտու, RTC- ի շեղման և GPS- ի բացակայող թռիչքային վայրկյանների համար: Այս ուղղումների համար հատուկ Arduino կոդ չի պահանջվում: Ինչպես միշտ pfodApp- ի դեպքում, ստացված տվյալները գրանցվում են այնպես, ինչպես որ կան, չշտկված, սակայն տեղեկամատյան ֆայլը պարունակում է նաև բավարար տեղեկատվություն, որը թույլ կտա ինքներդ կիրառել այդ ուղղումները, երբ տեղեկամատյանները ներբեռնում եք ձեր համակարգչում: Այս հետամշակման օրինակների համար տե՛ս ստորև:
Isամանակի և ամսաթվի X առանցքի ձևաչափման լայն տեսականի ապահովված է, որոնք բոլորն ամբողջությամբ վերահսկվում են ձեր Arduino էսքիզի կարճ տեքստային տողերով: Android ծրագրավորում չի պահանջվում:
pfodApp- ը կկապվի WiFi- ի, Bluetooth Classic- ի, BLE- ի և SMS- ի միջոցով: Անվճար pfodDesigner- ը ստեղծում է Arduino- ի ամբողջական էսքիզներ ամսաթվի/ժամի գծագրման/գրանցման համար `մի շարք տախտակներին միանալու համար: Arduino ծրագրավորում չի պահանջվում:
Այս հրահանգը կօգտագործի Adafruit Feather52- ը որպես Arduino տախտակի օրինակ, որը միանում է BLE- ի միջոցով:
Այս հրահանգը ներառում է երեք դեպք. 3) Ձեր միկրոպրոցեսորային նախագիծը ունի GPS մոդուլ.
Քայլ 1. Օգտագործելով Arduino Millisecond Timestamps, Millis ()
Միլիվայրկյանների օգտագործման ամսաթվի և ժամի երկու մաս կա. Մեկը նախատեսված է անցած ժամանակի կամ ամսաթվի/ժամի դեմ տվյալների գծագրման համար, իսկ մյուս մասը `ամսաթիվը և ժամը նորից ստեղծելու մուտքագրված հում տվյալների միլիվայրկյան ժամկետային նշաններից: pfodApp- ը չի փոփոխում pfodDevice- ից (Arduino միկրո) ստացված հում տվյալները: Այն պարզապես գրանցում է ստացված բայթերը:
Նախ օգտագործեք անվճար pfodDesigner- ը ՝ ձեր միկրո համակարգի համար Arduino ուրվագիծ ստեղծելու համար, որը միլիվայրկյաններ և տվյալների չափումներ կուղարկի pfodApp- ին ՝ գծագրման/մուտքագրման համար: Այս օրինակը ստեղծում է մենյու Adafruit Feather 52 BLE տախտակի համար, որը կարդում է A0: Adafruit Feather nRF52 LE - Custom Controls with pfodApp- ը անցնում է pfodDesigner- ի քայլերով ՝ Փետուրի համար nRF52 փետուրի համար ընտրացանկ ստեղծելու համար, որը ներառում է Գծապատկեր կոճակ, ուստի մանրամասն տեղեկությունների համար ստուգեք այն: Այս ձեռնարկում մենք կավելացնենք ընդամենը գծապատկերի կոճակ և կօգտագործենք X- առանցքի ձևաչափի նոր ընտրանքները ՝ A0- ի ընթերցումները գծված ժամանակի և ամսաթվի/ժամի հետ համեմատելու համար:
Այս ձեռնարկի առաջին մասը կանցնի անվճար pfodDesigner- ի միջոցով ՝ ձեր Android բջջայինի վրա ամսաթվի/ժամի օրինակելի աղյուսակ ստեղծելու համար: Երբ գոհ եք ցուցադրումից, կարող եք ստեղծել Arduino էսքիզ, որը կվերարտադրի այն, երբ միանաք pfodApp- ի հետ: Android ծրագրավորում չի պահանջվում, և քանի որ pfodDesigner- ը ստեղծում է Arduino- ի էսքիզներ Arduino տախտակների լայն տեսականի համար, Arduino ծրագրավորում նույնպես չի պահանջվում:
Քայլ 2. Գծապատկեր ավելացնելը ընտրացանկին
Ներբեռնեք pfodDesigner ծրագիրը Google Play- ից, բացեք այն և կտտացրեք «Սկսել նոր ընտրացանկ»
Կտտացրեք «Թիրախային սերիա», այնուհետև «Bluetooth ցածր էներգիա» կոճակին ՝ մոտ 11 BLE տախտակների ցուցակը ցուցադրելու համար (ոլորեք ներքև ՝ այլ ընտրանքները տեսնելու համար): Ընտրեք Adafruit Bluefruit Feather52- ում:
Վերադարձեք Խմբագրման ընտրացանկ և կտտացրեք «Խմբագրել հուշում» և այս ցանկի համար համապատասխան հուշում սահմանեք, օրինակ. «Փետուր 52» և տեքստը համարձակ և չափ +7: Ֆոնի գույնը մնացել է որպես «կանխադրված» Սպիտակ
Վերադարձեք և կտտացրեք «Ավելացնել ընտրացանկի տարր», ոլորեք ներքև և ընտրեք «Գծապատկեր կոճակ», որը բացում է գծապատկերի կոճակի խմբագրման էկրանը: Դուք կարող եք ցանկացած փոփոխություն կատարել կոճակի արտաքին տեսքում: Այս դեպքում կոճակի տեքստը փոխվում է «A0 ամսաթիվ/ժամ», իսկ մնացած կանխադրվածները մնում են այնպես, ինչպես կա:
Սա ձեզ տալիս է ցանկի կոճակ, որը կբացի գծապատկերի էկրանը:
Քայլ 3: Հողամասի աղբյուրի և ընդհատումների խմբագրում
Կտտացրեք «A0 ամսաթվի/ժամի գծապատկերին» կոճակին ՝ Խմբագրման սյուժեների էկրանը բացելու համար, որտեղ կարող եք մուտք գործել գծապատկերային պիտակը, X առանցքի ձևաչափը, գծապատկերի տվյալների միջակայքը և (ներքև ոլորելով) սյուժեի կարգավորումները: Խմբագրել Գծապատկերային պիտակը համապատասխան բանի, օրինակ. «A0 վոլտ»:
Ոլորեք ներքև և 2 և 3 սյուժեների համար բացեք «Խմբագրել սյուժեն» և կտտացրեք «Թաքցնել գծապատկերը» ՝ դրանք գծապատկերից հեռացնելու համար:
Այնուհետև կտտացրեք «Խմբագրել սյուժեն 1» -ին և սահմանեք գծապատկեր (օրինակ ՝ A0), yAxis միավորներ (օրինակ ՝ վոլտ), ցուցադրեք առավելագույնը 3.6 Վ և միացեք I/O կապի A0- ին:
Ոլորեք դեպի հետ և կտտացրեք «Գծապատկերների նախադիտում» ՝ դեպի ամենավերջին 0 ընտրանքային տվյալների կետերը ՝ 1 վայրկյան ընդմիջումներով ՝ գծված րոպեների ընթացքում ՝ վայրկյանների ընթացքում:
Բոլոր անցած ժամանակաշրջանների համար զրո միավոր միավորները չեն ցուցադրվում, այնպես որ այս գծապատկերում միայն այն ժամանակները, որոնք ցույց են տալիս 1 րոպե առաջատար րոպեները:
Քայլ 4: Ընտրելով ամսաթվի/ժամի ձևաչափը
Անցած ժամանակային սյուժեների համար առաջատար միավորը պարզապես շարունակում է աճել ժամանակի ընթացքում: Դրա օրինակը տեսնելու համար վերադարձեք «Հողամասերի խմբագրում» էկրան և ավելացրեք Հողամասի տվյալների միջակայքը մինչև 15 րոպե (այս էկրանի ներքևում)
Այնուհետև կտտացրեք Գծապատկերային նախադիտմանը ՝ նույն նմուշի տվյալները ցույց տալու համար, բայց այժմ ՝ նմուշների միջև 15 րոպե ընդմիջումով: Ինչպես տեսնում եք, mm: ss- ի րոպեների հատվածը պարզապես աճում է:
Այժմ հետ գնացեք և կտտացրեք X առանցքի կոճակին ՝ X- առանցքի տվյալների/ժամանակի բոլոր հնարավոր ձևաչափերի փոքր ընտրությունը ցուցադրելու համար (ավելին ոլորեք ներքև)
Վերևում ներկայացված է գծապատկերի նախադիտումների ընտրություն ՝ օգտագործելով X առանցքի տարբեր ձևաչափեր:
Այստեղ ցուցադրված ամսաթվի/ժամի գծապատկերները գտնվում են «տեղական» ժամային գոտում: Կան նաև UTC- ում ամսաթիվ/ժամ գծագրելու ձևաչափի տարբերակներ: Ամսաթիվ/ժամ ձևաչափի հնարավոր ընտրանքների ամբողջական փաթեթի համար տե՛ս pfodSpecification.pfd:
Քայլ 5. Ստեղծեք և փորձարկեք Arduino ուրվագիծը
Երբ գոհ եք ձեր գծապատկերի ձևաչափից և տվյալների ընդմիջումից, կարող եք անցնել «Խմբագրման ընտրացանկ_1» էկրանին և ոլորել ներքև և «Ստեղծել ծածկագիր» `ձեր ընտրած թիրախային տախտակի համար: Ահա Adafruit Feather52- ի օրինակելի ուրվագիծը `օգտագործելով 1 վրկ տվյալների միջակայքեր և մմ. Ss անցած ժամանակի ձևաչափ, pfodFeather52_timeplot.ino
Վերևում փետուրից A0 սյուժե է 52
Ֆորմատը շաբաթվա օր փոխելով ՝ hr: mins: sec (~ E HH: mm: ss) և ծածկագրի վերարտադրումը (pfodFeather52_dateplot.ino) տալիս է վերևի երկրորդի նման սյուժե:
Դուք կարող եք X առանցքի ձևաչափը խմբագրել անմիջապես ձեր Arduino էսքիզում, ինչպես նկարագրված է հաջորդում:
Քայլ 6. Ինչպե՞ս է PfodApp- ը գծում Միլիսից ():
Երբ pfodApp- ը միանում է, հիշում է իր «տեղական» և UTC ժամանակը և խնդրում է pfodDevice- ի (Arduino տախտակի) ընթացիկ գծապատկերի տվյալների ժամկետները: Օգտագործելով այս տեղեկատվությունը pfodApp- ն այնուհետև կարող է գծել միլիվայրկյան ժամանակային նշաններ ՝ որպես անցած ժամանակ, այսինքն ՝ միլիվայրկյանների ժամվա փոխակերպում ժամվա վայրկյան և այլն, կամ գծել այն ամսաթիվը և ժամը, երբ միլիվայրկյան ժամանակային նշանները ներկայացնում են կապի հաստատման և pfodDevice- ի ներկայիս ժամանակի պահանջի համեմատ:
Նայելով Arduino- ի ստեղծած ուրվագծին (օրինակ ՝ pfodFeather52_dateplot.ino) ՝ կան երեք փոքր կոդ, որոնք կարգավորում են սյուժեների Arduino կողմը:
The loop () կոդի բաժինը, որը կարգավորում է pfodApp- ի {@} ընթացիկ ժամանակի հարցումը
// կարգավորել {@} հարցումը} այլ դեպքում, եթե ('@' == cmd) {// pfodApp- ը պահանջել է 'ընթացիկ' ժամանակը plot_mSOffset = millis (); // ֆիքսել ընթացիկ միլիարդները որպես օֆսեթ rawdata timestamps parser.print (F ("{@` 0} ")); // վերադարձնել «0 -ը որպես« ընթացիկ »հումքի տվյալների միլիվայրկյաններ
Դուք կարող եք պարզապես վերադարձնել millis () ներկայիս արժեքը, սակայն millis () -ը յուրաքանչյուր 49,7 օրվա ընթացքում պտտվում է 0 -ի վրա, ինչը կստիպի հողամասը հետ թռչել: Այսպիսով, կոդը հիշում է ընթացիկ millis () արժեքը, երբ {@} հարցումն արվել է, և վերադարձնում է {@`0}, այսինքն` զրոյական միլիվայրկյան ժամանակային նշանը: Այնուհետև հում տվյալների տողերն ուղարկելիս էսքիզն օգտագործում է
plot_1_var = analogRead (A0); // կարդալ մուտքագրումը սյուժեի // plot_2_var սյուժեի համար ….
այնպես, որ տվյալների հետ ուղարկված միլիվայրկյան ժամկետային նշանը սկսվի 0 -ից և ավելանա մինչև 49,7 օր: Եթե շարունակաբար կապված լինեք 49.7 օր, ապա կտեսնեք, որ սյուժեն հետընթաց է թռչում 50 ֆունտով: 49,7 օրը մեկ անգամ անջատվելն ու նորից միանալը խուսափում է դրանից:
Ամսաթվի/ժամի սյուժեի երրորդ մասը սյուժեի հաղորդագրությունն է:
} else if ('A' == cmd) {// օգտվողը սեղմված է `'A0 ամսաթիվ/ժամ գծագիր' // Menu_1- ի հիմնական ընտրացանկում // վերադառնալ գծապատկերների հաղորդագրություն: parser.print (F ("{= A0 վոլտ ~ E HH: մմ: սս | ամսաթիվ | A0 ~~~ վոլտ ||}"));
Երբ օգտվողը սեղմում է «A0 ամսաթիվ/ժամ գծապատկերը» կոճակը, pfodApp- ն ուղարկում է {A} cmd- ը pfodDevice- ին, իսկ pfodDevice- ը պատասխանում է գծապատկերային հաղորդագրությամբ, {=… {= A0 վոլտ ~ E HH: մմ: ss | ամսաթիվ | A0 ~~~ Վոլտ ||} որը պարունակում է X առանցքի ձևաչափ E HH: մմ: սս
Այստեղ ընդունելի են Java SimpleDateFormat ձևաչափերը: pfodApp Data Logging and Plotting- ը և 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,, Վերևում կարող եք տեսնել «տեղական» և UTC ժամանակը, երբ pfodApp- ը միացրել է Feather52- ին և ներկա ժամանակը mS- ում, որը Feather52- ը հայտնել է {@..} պատասխանի միջոցով: Վերջին սյունակը դատարկ է, քանի որ չկա RTC կամ GPS և, հետևաբար, փետուրի կողմից yyyy/MM/dd ժամանակի ընթացիկ ժամանակը չի հաղորդվել:
Տվյալներն անցած ժամանակի դեմ գծելու համար միլիվայրկյան ժամանակային կնիքից հանեք ընթացիկ ժամանակը (mS) և այնուհետ բաժանեք օրական արժեքի mS- ի: Ահա աղյուսակը `ավելացված բանաձևով և արդյունքի գծապատկերով: Ստորև ներկայացված աղյուսակը (pfod_bluefruit52.xls) հանդիսանում է OpenOffice աղյուսակ, որը պահվում է Excel ձևաչափով:
OpenOffice- ում սյուժեն ցրված սյուժե է, և սյուժեի x առանցքը ձևաչափվել է HH: MM: SS Նշում. Աղյուսակի ամսաթվի/ժամի ձևաչափերը նույնը չեն, ինչ pfodApp- ի կողմից օգտագործվող սյուժեի ձևաչափերը: Օրինակ, pfodApp- ում, MM- ն ամիսներ են, իսկ մմ -ը `րոպեներ:
Ամսաթվի և ժամի դեմ գծագրելու համար հարկավոր է միայն ավելացնել աղյուսակի ժամանակին միացման ժամանակը և վերաբեռնել: (pfod_bluefruit52_date.xls)
Նշում. Տեղական ժամանակը և UTC- ն ներմուծվել են որպես տեքստ իմ աղյուսակում, այնպես որ ես պետք է հեռացնեի առաջատարը `դրանք բանաձևում օգտագործելուց առաջ:
Քայլ 8. Ինչպես խուսափել 49.7 օրվա Millis () սահմանաչափից և ինչու չպետք է դա անել
Ինչպես նշվեց վերևում, ինչպես է pfodApp- ը գծում ամսաթիվը/ժամը millis () -ից: Կոդի մի քանի տող կարող է խուսափել դրանից, բայց խորհուրդ չի տրվում:
Նախ, ինչպես խուսափել շրջապատումից: Ավելացրեք մեկ այլ անստորագիր int փոփոխական ՝ հետևելու համար, թե քանի անգամ են դրոշմակնիքները պտտվում և տպում համակցված արդյունքը HEX- ով:
uint_t mSwrapCount = 0; uint32_t lastTimeStamp = 0;
… Plot_1_var = analogRead (A0); // կարդալ մուտքագրումը սյուժեի // plot_2_var սյուժեի համար if (timeStamp <lastTimeStamp) {// timeStamp- ը վերադարձվեց 0 mSwrapCount ++; // ավելացնել մեկը հաշվելու համար} lastTimeStamp = timeStamp; parser.print («0x»); parser.print (msWrapCount, HEX); parser.print (timeStamp, HEX); // ժամանակը HEX- ում միլիվայրկյաններով….
{@.. պատասխանը վերադարձնելիս մաքրեք նաև mSwrapCount- ը:
// կարգավորել {@} հարցումը} այլ դեպքում, եթե ('@' == cmd) {// pfodApp- ը պահանջել է 'ընթացիկ' ժամանակը plot_mSOffset = millis (); // գրավել ընթացիկ միլիարդները որպես փոխհատուցվող հում տվյալների ժամանակային նշաններ mSwrapCount = 0; // մաքուր փաթաթման հաշվարկ: parser.print (F ("{@` 0} ")); // վերադարձնել «0 -ը որպես« ընթացիկ »հումքի տվյալների միլիվայրկյաններ
Estամկետային նշանները այժմ կտան «ճիշտ» արժեքը հաջորդ 40.7 օրվա համար * 65536 ~ = 7308 տարի:
pfodApp- ը ինքնաբերաբար կվերածի գծագրման վեցանկյուն ժամկետները և դրանք կգրանցի այնպես, ինչպես ստացվել է, այսինքն ՝ վեցանկյուն: (OpenOffice) աղյուսակում դուք օգտագործում եք այս բանաձևը ՝ A2 տողում վեցանկյուն տողը փոխելու համար mS (որտեղ A1- ն ցանկացած դատարկ բջիջ է) = HEX2DEC (ՓՈՓՈԽՈԹՅՈ (Ն (A2; 1; 2; A1))
Ինչու չեք ուզում դա անել
Ինչպես ցույց է տրված վերևում, հեշտ է երկարացնել mS- ի ժամկետները մինչև 50 օրից ավելի: Այնուամենայնիվ, դուք հավանաբար չեք ուզում դա անել, քանի որ դրանք դառնում են ավելի ճշգրիտ: Տիպիկ 16 ՄՀց բյուրեղը, որն օգտագործվում է միլիս () արդյունքները ստեղծելու համար, ունի միկրո, ունի pp 50ppm ճշգրտություն (մասեր միլիոնից): Սա նշանակում է, որ 49.7 օր հետո միլիվայրկյան ժամկետային նշանը կարող է դուրս գալ 3 ½ րոպեով, և դա անտեսում է ջերմաստիճանի ազդեցությունը բյուրեղների ճշգրտության վրա:
Միացման կարճ ժամանակահատվածների ընթացքում այս ճշգրտությունը խնդիր չէ, քանի որ յուրաքանչյուր վերամիացման դեպքում {@.. պատասխանը նորից համաժամացնում է միլիվայրկյան ժամանակային նշանը բջջայինի ամսաթվի/ժամի հետ: Այնուամենայնիվ, եթե ցանկանում եք երկար ժամանակ կապ ունենալ (օրեր) և անընդհատ գրանցել տվյալները, ապա պետք է օգտագործեք ավելի ճշգրիտ բան, քան ներկառուցված միլիլոսը (), օրինակ ՝ RTC կամ GPS մոդուլը:
Քայլ 9: Օգտագործելով RTC (իրական ժամանակի ժամացույց)
Կան մի շարք RTC մոդուլներ, որոնցից առավել ճշգրիտներից մեկը DS3231 է, օրինակ. Adafruit- ի DS3231 մոդուլը: Հայտարարված ճշգրտությունը +/- 2ppm 0-ից 40C- ից բարձր է: այսինքն ~ +/- 5 վրկ/ամիս:
Եթե ցանկանում եք գծել տվյալներ, որոնք ունեն ամսաթվի/ժամի ժամկետային նշաններ, օրինակ. 2019/04/19 20: 4: 34, ապա դուք պետք է փոփոխեք {@ պատասխանը ՝ ընթացիկ ամսաթիվը/ժամը վերադարձնելու համար, օրինակ. {@«0 ~ 2019/4/19 3: 33: 5}. Ահա մի քանի նմուշային փոփոխություններ, որոնք պետք է կիրառվեն pfodDesigner- ի ստեղծած ուրվագծի վրա ՝ RTC մոդուլ օգտագործելու համար, ենթադրելով, որ դուք օգտագործում եք RTClib գրադարանը և ավելացրել եք կոդը RTC մոդուլը նախաստորագրելու համար:
// կարգավորել {@} հարցումը} այլ դեպքում, եթե ('@' == cmd) {// pfodApp- ը պահանջել է 'ընթացիկ' ժամանակը plot_mSOffset = millis (); // գրավել ընթացիկ միլիարդները որպես փոխհատուցված rawdata timestamps parser.print (F ("{@" 0 "}); // վերադարձնել« 0 -ը որպես «ընթացիկ» հումքի տվյալների միլիվայրկյանների parser.print ('~'); // սկսել տող ամսաթիվ/ժամ DateTime այժմ = rtc.now () sendDateTime (& այժմ); // ուղարկել 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-> տարի (), DEC); parser.print ('/'); parser.print (dt-> ամիս (), DEC); parser.print ('/'); parser.print (dt-> օր (), DEC); parser.print (''); parser.print (dt-> ժամ (), DEC); parser.print (':'); parser.print (dt-> րոպե (), DEC); parser.print (':'); parser.print (dt-> երկրորդ (), 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_scaling + 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- ի գծապատկերային ռեժիմը շտկում է RTC- ի ցանկացած «շեղում» ՝ համեմատելով pfodDevice- ի հաղորդած ընթացիկ ժամանակը բջջայինի ներկայիս ժամանակի հետ: Այս ուղղումը նաև կարգավորում է RTC- ի ՝ ձեր բջջայինի տեղական ժամային գոտուց այլ ժամային գոտի սահմանելը: millis () timestamps շարունակում են աշխատել, ինչպես Arduino- ի millisecond timestamps- ում, վերը նշված 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- ի ամսաթիվը և ժամը ներկայումս 18 վայրկյան առաջ են UTC- ից, 2018 թվականի հունվարի դրությամբ:
Adafruit Ultimate GPS- ի համար Adafruit GPS գրադարանը, ի տարբերություն RTClib- ի, չի ավելացնում 2000 տարվա փոխհատուցումը GPS տարիներին, այնպես որ այն պետք է ավելացվի, երբ ուղարկում եք ամսաթիվը և ժամը: Նաև չնայած GPS գրադարանը ապահովում է միլիվայրկյաններ, որոնք ունեն շատ լավ երկարաժամկետ ճշգրտություն, դրանք շատ ճշգրիտ չեն: GPS- ի ժամանակի թարմացումներն ամեն 100mS- ն են միայն մեկ անգամ, այնուհետև լրացուցիչ ուշացում է ստացվում սերիական տվյալների դանդաղ 9600 բաուդ արագությամբ և ևս մեկ ուշացում դրանց վերլուծման մեջ: Դրանք բոլորը ավելացնում են միլիվայրկյան ճշգրիտ տվյալների ընթերցումների ժամանակային նշման ժամանակ:
Ահա մի քանի նմուշային փոփոխություններ, որոնք պետք է կիրառվեն pfodDesigner- ի ստեղծած ուրվագծում ՝ GPS մոդուլ օգտագործելու համար, ենթադրելով, որ օգտագործում եք Adafruit- ի GPS գրադարանը և ավելացրել եք հաղորդագրությունները GPS օբյեկտի մեջ ընդունելու և վերլուծելու ծածկագիրը:
// կարգավորել {@} հարցումը} այլ դեպքում, եթե ('@' == cmd) {// pfodApp- ը պահանջել է 'ընթացիկ' ժամանակը plot_mSOffset = millis (); // գրավել ընթացիկ միլիարդները որպես փոխհատուցված rawdata timestamps parser.print (F ("{@" 0 "}); // վերադարձնել« 0 -ը որպես «ընթացիկ» հումքի տվյալների միլիվայրկյանների parser.print ('~'); // սկսել տող ամսաթիվ/ժամ sendDateTime (& GPS); // ուղարկել yyyy/M/d/H: m: s parser.print, փոխանցել հասցեն և որպես arg. parser.print ('}'); // {@ պատասխանի ավարտը, օրինակ. {@«0 ~ 2019/4/19 3: 33: 5}…
// ուղարկել ամսաթիվը վերլուծիչին printvoid sendDateTime (Adafruit_GPS* gps) {parser.print (F ("20"); // 20.. տարի parser.print (gps-> տարի, DEC); parser.print ('/ '); parser.print (gps-> ամիս, DEC); parser.print ('/'); parser.print (gps-> օր, DEC); parser.print (' '); parser.print (gps- > ժամ, DEC); parser.print (':'); parser.print (gps-> րոպե, DEC); parser.print (':'); parser.print (gps-> երկրորդ, DEC); // parser.print (''.
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_scaling + plot_1_varDisplayMin); parser.print (','); // Հողամաս 2 -ը թաքնված է: Տվյալներ չեն ուղարկվել: parser.print (','); // Հողամաս 3 -ը թաքնված է: Տվյալներ չեն ուղարկվել: parser.println (); // CSV տվյալների գրանցման ավարտը}}
Ամսաթվի և ժամի դեմ գծագրելիս pfodApp- ն ինքնաբերաբար ուղղում է թռիչքային վայրկյանները: 2018 թվականի հունվարի դրությամբ GPS ժամանակը UTC- ից 18 վայրկյան առաջ է: pfodApp- ը դա ուղղում է ՝ համեմատելով GPS- ի կողմից վերադարձված ամսաթիվը/ժամը, {@ պատասխանի միջոցով, բջջայինի UTC ամսաթվի և ժամի հետ: PfodApp տեղեկամատյանից աղյուսակներում սյուժեներ ստեղծելը նույնն է, ինչ վերը նշված RTC մոդուլների համար: GPS- ի ժամանակային նշանների վրա (տեղական ժամանակ - Office Temp ընթացիկ ժամանակը) ավելացնելը շտկում է թռիչքային վայրկյանները:
millis () timestamps շարունակում են աշխատել, ինչպես Arduino- ի millisecond timestamps- ում, վերը նշված 5 -րդ քայլում:
Քայլ 11: Եզրակացություն
Android բջջային հեռախոսում pfodApp- ի օգտագործումը թույլ է տալիս տվյալները գծել ամսաթվի և ժամի կամ անցած ժամանակի համեմատ ՝ օգտագործելով միայն Arduino- ի millis () գործառույթը: Օգտագործելով pfodApp տեղեկամատյան ֆայլը, կարող եք նորից արտադրել այս ամսաթվի/ժամի գծագրերը աղյուսակում: Եթե ձեր Arduino նախագիծը ունի RTC մոդուլ, կարող եք մուտքագրել և գծագրել ամսաթիվը և RTC ժամային նշանները ՝ ինքնաբերաբար ուղղելով RTC- ի «շեղումը»: Եթե դուք Arduino նախագիծն ունի GPS մոդուլ, կարող եք մուտք գործել և գծագրել դրա չափազանց ճշգրիտ ժամկետները, և pfodApp- ը ինքնաբերաբար կուղղի GPS- ի բացակայող թռիչքային վայրկյանները:
Բոլոր դեպքերում ձեր Arduino նախագծի հում տվյալները գրանցվում են այնպես, ինչպես ստացվել են, չշտկված: Այնուամենայնիվ, pfodApp տեղեկամատյանը ներառում է լրացուցիչ տվյալներ, որոնք թույլ կտան ձեզ նորից ուղղել ներբեռնված տեղեկամատյանից աղյուսակում այս ուղղումները:
Android կոդավորում չի պահանջվում: Սյուժեի ձևաչափերը բոլորը նշված են ձեր Arduino էսքիզի փոքր տեքստային տողերով: Անվճար pfodDesigner- ը ստեղծում է Arduino- ի տվյալների ամբողջական մուտքագրում և գծագրեր ուրվագծերի համար Arduino տախտակների լայն տեսականիով, որոնք կապվում են WiFi- ի, դասական Bluetooth- ի, BLE- ի և SMS- ի միջոցով:
Խորհուրդ ենք տալիս:
Android- ի / Arduino / PfodApp- ի միջոցով հեռակա տվյալների պարզ գծագրում ՝ 6 քայլ
Android- ի/Arduino- ի/PfodApp- ի միջոցով տվյալների հավաքագրման համար. Ամսաթվի/ժամի տվյալների միայն Arduino- ի միլիլիսների միջոցով () տե՛ս այս հրահանգը: Android բջջային և գրեք այն
Ամսաթիվ, ժամ և ջերմաստիճանի ցուցադրում XinaBox- ի միջոցով. 8 քայլ
Ամսաթիվ, ժամ և ջերմաստիճանի ցուցադրում XinaBox- ի միջոցով. Cool OLED էկրան, որը ցույց է տալիս ամսաթիվը, ժամանակը և ջերմաստիճանը elsելսիուսում և Ֆարենհեյթում ՝ օգտագործելով Xinabox xChips- ը ՝ ESP8266- ի հիման վրա:
Բարձր ճշգրտության տվյալների հեռավոր մուտքագրում `օգտագործելով բազմաչափ/Arduino/pfodApp: 10 քայլ (նկարներով)
Բարձր ճշգրտության տվյալների հեռավոր մուտքագրում ՝ օգտագործելով բազմաչափ/Arduino/pfodApp. Թարմացվել է 2017 թ. Ապրիլի 26 -ին Վերանայված միացում և տախտակ 4000ZC USB հաշվիչներով օգտագործելու համար: Android- ի կոդավորում չի պահանջվում: Այս հրահանգը ցույց է տալիս, թե ինչպես մուտք գործել ձեր Arduino- ի բարձր ճշգրտության չափումների լայն տեսականի, ինչպես նաև դրանք հեռակա ուղարկել անտառահատումների և
Մի գեղեցիկ ամսաթիվ, ժամ և ջերմաստիճան Displayուցադրման միավոր ՝ 3 քայլ
Dateարմանալի ամսաթվի, ժամի և ջերմաստիճանի ցուցադրման միավոր. Բարև ընկերներ, այս ուսանելի ծրագրում ես պատրաստվում եմ բացատրել ամսաթվի, ժամի և ընթացիկ ջերմաստիճանի ցուցադրման միավորի պատրաստման կարգը `օգտագործելով Arduino pro mini, RTC և ութանիշ յոթ հատվածանոց էկրան: շատ կոմպակտ միավորի մեջ, որը օգտակար շեղում է
Blynk հավելվածին ամսաթիվ և ժամ մղելը ՝ օգտագործելով Wemos D1 Mini Pro ՝ 10 քայլ
Wemos D1 Mini Pro- ի միջոցով Blynk հավելվածի վրա ամսաթվի և ժամի հրում. Մենք կօգտագործենք Wemos D1 Mini Pro- ն ՝ ժամանակը մղելու համար & ամսաթիվը Blynk հավելվածին: Այս գործունեության համար ձեզ հարկավոր չէ որևէ բաղադրիչ միացնել Wemos D1 Mini Pro- ին: