Агуулгын хүснэгт:

Millis () ба PfodApp ашиглан Arduino Огноо/Цагийн зураглал/Бүртгэл: 11 алхам
Millis () ба PfodApp ашиглан Arduino Огноо/Цагийн зураглал/Бүртгэл: 11 алхам

Видео: Millis () ба PfodApp ашиглан Arduino Огноо/Цагийн зураглал/Бүртгэл: 11 алхам

Видео: Millis () ба PfodApp ашиглан Arduino Огноо/Цагийн зураглал/Бүртгэл: 11 алхам
Видео: FLProg8:установка часов реального времени с помощью ЖК-меню| Визуальное программирование для Arduino 2024, Долдугаар сарын
Anonim
Millis () ба PfodApp ашиглан Arduino Огноо/Цагийн зураглал/Бүртгэл
Millis () ба PfodApp ашиглан Arduino Огноо/Цагийн зураглал/Бүртгэл

Arduino эсвэл Android програмчлал шаардлагагүй. RTC болон GPS модулиудыг дэмждэг. Цагийн бүс, RTC дрифт, GPS -ийн үсрэлт секунд байхгүй автомат залруулга

Танилцуулга

Энэхүү гарын авлагад pfodApp ашиглан Андройд гар утсан дээрх огноо, цагийн эсрэг өгөгдлийг гаргахын тулд Arduino millis () цагийн тэмдгээ хэрхэн ашиглахыг харуулав.

Arduino эсвэл Android програмчлал шаардлагагүй. pfodApp нь хангалттай өгөгдлийг бүртгэдэг бөгөөд ингэснээр та хожим нь хүснэгтэд огноо/цагийн графикийг хуулбарлах боломжтой болно.

RTC эсвэл GPS модуль шаардлагагүй, гэхдээ хэрэв таны Arduino төсөл RTC (Real Time Clock) эсвэл GPS модультай бол тэдгээрийг бас ашиглаж болно. Ийм тохиолдолд pfodApp -ийн графикууд нь цагийн бүс, RTC шилжилт, GPS -ийн үсрэх секунд дутуу байгааг автоматаар засах болно. Эдгээр залруулгад тусгай Arduino код шаардлагагүй болно. PfodApp-ийн нэгэн адил хүлээн авсан өгөгдлийг яг засч залруулаагүй хэвээр бүртгэдэг боловч бүртгэлийн файл нь бүртгэлээ компьютер дээрээ татаж авахдаа эдгээр залруулгыг өөрөө хэрэгжүүлэх хангалттай мэдээллийг агуулдаг. Энэхүү дараах боловсруулалтын жишээг доороос үзнэ үү.

Олон төрлийн цаг, огнооны X тэнхлэгийн форматыг дэмждэг бөгөөд эдгээрийг Arduino-ийн ноорог дээрх богино текстийн мөрөөр бүрэн хянадаг. Андройд програмчлал шаардлагагүй.

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 Timestamps, Millis () ашиглах

Огноо, цагийг миллисекундээр ашиглах хоёр хэсэг байдаг. Нэг нь өнгөрсөн хугацаа, огноо/цагийн аль алинд нь өгөгдлийг төлөвлөхөд зориулагдсан бөгөөд нөгөө хэсэг нь бүртгэгдсэн rawdata миллисекундын цаг хугацааны тэмдэгээс огноо, цагийг дахин үүсгэж байна. pfodApp нь pfodDevice (Arduino micro) -ээс хүлээн авсан түүхий өгөгдлийг өөрчилдөггүй. Энэ нь яг хүлээн авсан байтуудыг бүртгэдэг.

Эхлээд үнэгүй pfodDesigner -ийг ашиглана уу. Энэ жишээ нь Adafruit Feather 52 BLE самбарын цэсийг үүсгэдэг бөгөөд энэ нь A0 гэж уншдаг. Adafruit Feather nRF52 LE - pfodApp -ийн тусгай хяналт дээрх заавар нь pfodDesigner -ийн алхмуудаар Feart nRF52 -ийн диаграм товчийг агуулсан цэсийг бүтээдэг тул дэлгэрэнгүйг үзнэ үү. Энэхүү гарын авлагад бид зөвхөн диаграмын товчлуурыг нэмж, X тэнхлэгийн форматын шинэ сонголтуудыг ашиглан A0-ийн уншилтыг өнгөрсөн хугацаа, огноо/цагтай харьцуулах болно.

Энэхүү гарын авлагын эхний хэсэг нь үнэгүй pfodDesigner ашиглан Android гар утсан дээрээ огноо/цагийн диаграмын загварыг гаргах болно. Дэлгэц танд сэтгэл хангалуун байгаа бол та pduodApp -тэй холбогдохдоо үүнийг хуулбарлах Arduino ноорог үүсгэж болно. Андройд програмчлал шаардлагагүй бөгөөд pfodDesigner нь Arduino -ийн олон янзын самбаруудад зориулан Arduino -ийн иж бүрэн зургийг гаргадаг тул Arduino програмчлал шаардлагагүй болно.

Алхам 2: Цэс рүү диаграм нэмэх

Цэс рүү диаграм нэмэх
Цэс рүү диаграм нэмэх
Цэс рүү диаграм нэмэх
Цэс рүү диаграм нэмэх
Цэс рүү диаграм нэмэх
Цэс рүү диаграм нэмэх
Цэс рүү диаграм нэмэх
Цэс рүү диаграм нэмэх

Google Play дээрээс pfodDesigner програмыг татаж аваад нээгээд "Шинэ цэс эхлүүлэх" дээр дарна уу.

"Зорилтот цуваа", дараа нь "Bluetooth бага энерги" товчлуур дээр дарж зарим BLE 11 самбаруудын жагсаалтыг харуулна уу (бусад сонголтыг харахын тулд доош гүйлгэнэ үү). Adafruit Bluefruit Feather52 дээр сонгоно уу.

Засварлах цэс рүү буцаж очоод "Засах мөр" дээр дарж энэ цэсэнд тохирох хүсэлтийг тохируулна уу. "Feather52" ба тод текст, +7 хэмжээтэй. Арын дэвсгэр өнгийг "анхдагч" Цагаан болгож үлдээсэн

Буцаад "Цэсийн зүйл нэмэх" дээр дарна уу, доош гүйлгээд диаграмын товчлуурыг засах дэлгэцийг нээнэ үү. Та энд товчлуурын гадаад төрхийг өөрчлөх боломжтой. Энэ тохиолдолд товчлуурын текстийг "Онооны огноо/цагийн график" болгон өөрчилж, бусад өгөгдмөлийг хэвээр үлдээсэн болно.

Энэ нь цэс дээр диаграмын дэлгэцийг нээх товчлуурыг танд өгөх болно.

Алхам 3: Хэсгийн эх сурвалж, линкийг засварлах

Хэсгийн эх сурвалж, лаблуудыг засварлах
Хэсгийн эх сурвалж, лаблуудыг засварлах
Хэсгийн эх сурвалж, лаблуудыг засварлах
Хэсгийн эх сурвалж, лаблуудыг засварлах
Хэсгийн эх сурвалж, лаблуудыг засварлах
Хэсгийн эх сурвалж, лаблуудыг засварлах
Хэсгийн эх сурвалж, лаблуудыг засварлах
Хэсгийн эх сурвалж, лаблуудыг засварлах

"A0-ийн огноо/цагийн график" товчлуур дээр дарж засварлах дэлгэцийг нээнэ үү, та диаграмын шошго, X тэнхлэгийн формат, график өгөгдлийн интервал, (доош гүйлгэх замаар) график тохиргоог үзэх боломжтой. Диаграммын шошгыг тохирох зүйл болгон өөрчил. "A0 вольт".

Доошоо гүйлгээд 2, 3 -р талбайнуудыг засварлах хэсгийг нээгээд Диаграмыг нуух дээр дарж диаграмын дэлгэцээс хасна уу.

Дараа нь "1 -р хэсгийг засварлах" дээр дарж график шошго (жишээлбэл A0), yAxis нэгж (жишээлбэл, вольт), хамгийн их 3.6V үзүүлээд I/O зүү A0 -тэй холбоно уу.

Дээш дээшээ гүйлгээд "Графикийг урьдчилан харах" дээр дарж хамгийн сүүлийн 0 дээжийн өгөгдлийн цэгийг 1 секундын интервалтайгаар өнгөрүүлсэн цагийг минут: секундын дотор зурна.

Өнгөрсөн бүх хугацааны хувьд тэг нэгжийг тэргүүлдэг хэсгүүдийг харуулдаггүй тул энэ хэсэгт зөвхөн> 1мин -ийн цагийг харуулсан болно.

Алхам 4: Огноо/цагийн форматыг сонгох

Огноо/цагийн форматыг сонгох
Огноо/цагийн форматыг сонгох
Огноо/цагийн форматыг сонгох
Огноо/цагийн форматыг сонгох
Огноо/цагийн форматыг сонгох
Огноо/цагийн форматыг сонгох

Цаг хугацаа өнгөрөх тусам тэргүүлэх нэгж нь цаг хугацаа өнгөрөх тусам нэмэгдсээр байна. Үүний жишээг харахын тулд "Газар засварлах" дэлгэц рүү буцаж очоод өгөгдлийн интервалыг 15 минут болгон нэмэгдүүлнэ үү (энэ дэлгэцийн доод талд).

Дараа нь диаграмын урьдчилж харах дээр дарж ижил дээжийн өгөгдлийг харуулна, гэхдээ одоо дээж хоорондын 15 минутын зайтай байна. Таны харж байгаагаар мм: ss -ийн хэсэг нэмэгдсээр байна.

Одоо буцаж очоод X тэнхлэг товчлуур дээр дарж X тэнхлэгийн өгөгдөл/цагийн форматын боломжит сонголтуудыг харуулаарай (доош гүйлгэж үзнэ үү)

Дээрх нь янз бүрийн X тэнхлэгтэй форматыг ашиглан диаграмыг урьдчилан харах сонголт юм.

Энд үзүүлсэн огноо/цагийн графикууд нь 'орон нутгийн' цагийн бүсэд байна. UTC дээр огноо/цагийг дүрслэх форматын сонголтууд бас байдаг. Боломжтой огноо/цагийн форматын бүрэн сонголтыг pfodSpecification.pfd дээрээс үзнэ үү.

Алхам 5: Arduino Sketch үүсгэж, туршиж үзээрэй

Arduino Sketch үүсгэж, туршиж үзээрэй
Arduino Sketch үүсгэж, туршиж үзээрэй
Arduino Sketch -ийг үүсгэж, туршиж үзээрэй
Arduino Sketch -ийг үүсгэж, туршиж үзээрэй

Диаграмын формат, өгөгдлийн интервалд сэтгэл хангалуун байгаа бол та "Засварлах цэс_1" дэлгэц рүү доош гүйлгэж, сонгосон зорилтот самбартаа "Код үүсгэх" боломжтой болно. Adafruit Feather52 -ийн 1 секундын өгөгдлийн интервал ба мм: ss цаг хугацааны формат, pfodFeather52_timeplot.ino -ийн загварыг энд оруулав.

Дээрх өд52 -аас авсан А0 -ийн зураг

Форматыг 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 -ийн {@} одоогийн цагийн хүсэлтийг зохицуулдаг loop () кодын хэсэг

// зохицуулах {@} request} else if if ('@' == cmd) {// pfodApp нь 'одоогийн' цагийн хүсэлтийг хүсэв plot_mSOffset = millis (); // өнөөгийн миллисийг офсет түүхий өгөгдлийн цаг хугацааны тамга хэлбэрээр буулгах parser.print (F ("{@` 0} ")); // "0" түүхий өгөгдлийн миллисекундээр буцаана

Та миллис () -ийн одоогийн утгыг буцааж өгч болно, гэхдээ millis () нь 49.7 хоног тутамд 0 рүү буцаагдах бөгөөд энэ нь зураг ухрах болно. Үүний оронд код нь {@} хүсэлт гаргах үед одоогийн millis () утгыг санаж, {@`0} өөрөөр хэлбэл одоогийн миллисекундын цагийн тэмдгийг тэг болгон буцаана. Дараа нь түүхий өгөгдлийн цэгүүдийг илгээхдээ ноорог ашиглана

plot_1_var = analogRead (A0); // plot-д оруулах оролтыг уншина уу ….

Тиймээс өгөгдөлтэй хамт илгээсэн миллисекундийн цаг тэмдэг 0 -ээс эхэлж 49.7 хоног хүртэл нэмэгддэг. Хэрэв та 49.7 хоногийн турш тасралтгүй холбогдсон бол уг талбай ~ 50 хоногоор ухарч байгааг харах болно. 49.7 хоног тутамд нэг удаа салгаж, дахин холбох нь үүнээс зайлсхийдэг.

Огноо/цагийн схемийн гурав дахь хэсэг нь зургийн зурвас юм.

} else if ('A' == cmd) {// хэрэглэгч дарагдсан - 'Date/Time plot of A0' // // Menu_1 -ийн үндсэн цэсэнд // төлөвлөгөө зурвасыг буцаана. parser.print (F ("{= A0 Volts ~ E HH: mm: ss | огноо | A0 ~~~ Вольт ||}"));

Хэрэглэгч "A0 -ийн огноо/цагийн график" товчлуурыг дарахад pfodApp нь {A} cmd -ийг pfodDevice руу илгээдэг бөгөөд pfodDevice нь зурвасын зурвасаар хариулдаг, {=… {= A0 вольт ~ E HH: mm: 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,, Дээрээс та pfodApp -ийн Feather52 -тэй холбогдсон 'орон нутгийн' болон UTC цаг, мөн Feather52 -ийн {@..} хариултаар мэдээлсэн mS -ийн одоогийн цагийг харж болно. Сүүлийн багана нь хоосон байна, учир нь RTC эсвэл GPS байхгүй тул yyyy/MM/dd -ийн одоогийн цагийг Feather52 мэдээлээгүй болно.

Өгөгдлийг өнгөрсөн хугацаатай харьцуулахын тулд миллисекундын цагийн тэмдэгээс одоогийн цагийг (mS) хасаад дараа нь өдрийн mS -ээр хуваана. Энд томъёог нэмж, үр дүнг харуулсан хүснэгтийг энд харуулав. Доорх хүснэгт (pfod_bluefruit52.xls) нь Excel форматаар хадгалагдсан OpenOffice хүснэгт юм.

OpenOffice дээр уг график нь тархай бутархай бөгөөд талбайн x тэнхлэгийг HH: MM: SS форматаар форматласан болно. Хүснэгтийн огноо/цагийн формат нь pfodApp-ийн ашигладаг график форматтай адил биш юм. Жишээлбэл, pfodApp дээр MM нь сар, мм нь минут юм.

Огноо, цагийг тооцоолохын тулд та зөвхөн хүснэгтийн цагийн холболтын хугацааг нэмж, дахин байршуулах хэрэгтэй. (pfod_bluefruit52_date.xls)

Тэмдэглэл: Орон нутгийн цаг болон UTC -ийг миний хүснэгтэд текст болгон импортлосон тул томъёонд ашиглахаасаа өмнө тэргүүлэгчийг устгах шаардлагатай болсон.

Алхам 8: 49.7 хоногийн Millis () хязгаараас хэрхэн зайлсхийх вэ, яагаад болохгүй гэж

Дээр дурдсанчлан pfodApp нь миллис () -ээс огноо/цагийг хэрхэн төлөвлөдөг вэ ?, хэрэв та 49.7 хоногоос дээш хугацаанд тасралтгүй холбогдсон бол миллисекундын цагийн тэмдэг нь тэг болж эргэнэ. Хэд хэдэн мөр код үүнээс зайлсхийх боломжтой боловч үүнийг ашиглахыг зөвлөдөггүй.

Эхлээд боож боохоос хэрхэн зайлсхийх вэ. Цагийн тэмдгийг хэдэн удаа ороож, нэгтгэсэн үр дүнг HEX дээр хэвлэхийн тулд өөр гарын үсэг зураагүй int хувьсагч нэмнэ үү.

uint_t mSwrapCount = 0; uint32_t lastTimeStamp = 0;

… Plot_1_var = analogRead (A0); // талбайд оруулах оролтыг уншина уу // plot_2_var plot Нууцлагдсан тул энд өгөгдөл өгөгдөөгүй // plot_3_var plot нуугдсан тул энд өгөгдөл өгөөгүй байна // зургийн өгөгдлийг 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 -ийг мөн арилгана уу.

// зохицуулах {@} хүсэлт} өөр тохиолдолд ('@' == cmd) {// pfodApp нь 'одоогийн' цагийн хүсэлтийг хүсэв plot_mSOffset = millis (); // одоогийн millis -ийг түүхий өгөгдлийн цагийн тэмдэг болгон авах mSwrapCount = 0; // боодлын тодорхой тоо. parser.print (F ("{@` 0} ")); // "0" түүхий өгөгдлийн миллисекундээр буцаана

Цагийн тэмдэг нь дараагийн 40.7days * 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 модуль. Тодорхойлсон нарийвчлал нь 0-ээс 40С хүртэл +/- 2ppm байна. өөрөөр хэлбэл ~ +/- 5 сек/сар.

Хэрэв та огноо/цагийн тэмдэг бүхий өгөгдлийг төлөвлөхийг хүсч байвал, жишээ нь. 2019/04/19 20: 4: 34, дараа нь одоогийн огноо/цагийг буцаахын тулд {@ хариултыг өөрчлөх шаардлагатай болно. {@`0 ~ 2019/4/19 3: 33: 5}. RTClib номын санг ашиглаж байгаа бөгөөд RTC модулийг эхлүүлсэн кодыг нэмсэн гэж үзвэл RTC модулийг ашиглах pfodDesigner үүсгэсэн тоймд ашиглах кодын зарим жишээг энд оруулав.

// зохицуулах {@} хүсэлт} өөр тохиолдолд ('@' == cmd) {// pfodApp нь 'одоогийн' цагийн хүсэлтийг хүсэв plot_mSOffset = millis (); // одоогийн миллисийг офсет түүхий өгөгдлийн цагийн тэмдэг болгон авах, parser.print (F ("{@" 0 "}); //" 0 "-ийг" одоогийн "түүхий өгөгдлийн миллисекунд parser.print ('~') болгон буцаах; // мөрийг эхлүүлэх огноо/цаг 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 (dt-> сар (), DEC); задлагч.хэвлэх ('/'); parser.print (dt-> day (), DEC); parser.print (''); parser.print (dt-> hour (), DEC); parser.print (':'); parser.print (dt-> минут (), DEC); parser.print (':'); parser.print (dt-> second (), DEC); }

хүчингүй sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // драфтын өгөгдөл таймерыг дрифтгүйгээр дахин эхлүүлэх // давталтын хувьсагчдаас хувьсагчдыг дүрслэх эсвэл ADC оролтыг унших утгыг хуваарилах plot_1_var = analogRead (A0); // талбайд оруулах оролтыг уншина уу // plot_2_var plot Нууцлагдсан тул энд өгөгдөл өгөгдөөгүй // plot_3_var plot нуугдсан тул энд өгөгдөл өгөгдөөгүй байна // талбай өгөгдлийг CSV форматаар илгээх DateTime now = rtc.now (); sendDateTime (& одоо); // yyyy/M/d/H: m: s -ийг parser.print руу илгээнэ үү, хаягийг дамжуулна уу. задлагч.хэвлэх (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_ масштабтай + plot_1_varDisplayMin); задлагч.хэвлэх (','); // 2 -р хэсэг далд байна. Өгөгдөл илгээгээгүй. parser.print (','); // 3 -р хэсэг далд байна. Өгөгдөл илгээгээгүй. parser.println (); // CSV өгөгдлийн бүртгэлийн төгсгөл}}

~@ 2019/4/19 3: 33: 5 -ийн {@ хариултын хэсэг нь pfodApp -д pfodDevice -ийн одоогийн огноо, цаг гэж юу бодож байгааг мэдэх боломжийг олгодог. Дараа нь таны ноорог өгөгдлийг yMd Hms цагийн тэмдэгээр илгээх боломжтой бөгөөд pfodApp нь таны зааж өгсөн X тэнхлэгийн форматаас хамааран тэдгээрийг холболтын хугацаанаас хойш эсвэл огноо, цаг хэлбэрээр төлөвлөх болно.

Огноо, цагийн эсрэг зураг зурахдаа pfodApp схемийн схем нь pfodDevice -ийн мэдээлсэн одоогийн цагийг гар утасны одоогийн цагтай харьцуулж RTC дахь аливаа "хазайлтыг" засдаг. Энэхүү залруулга нь RTC -ийг таны гар утасны орон нутгийн цагийн бүсээс өөр цагийн бүсээр тохируулах болно. millis () timestamps нь Arduino миллисекундын цагийн тэмдгийг ашиглахтай адил 5 -р алхам дээр үргэлжлүүлэн ажилладаг.

Office_Temp.xls -ийн 8 хоногийн хугацаанд өрөөний температурын хүснэгтийн жишээг энд оруулав. Бүртгэлийн файлыг импортлох үед текстийг огноо/цаг болгон хөрвүүлэхийн тулд эхний баганыг YMD гэж тэмдэглэсэн болно. Та хүснэгтийг огноо, цаг гэж тайлбарлахын тулд орон нутгийн цаг, UTC болон Office Temp -ийн одоогийн цагийн оруулгуудыг устгах шаардлагатай хэвээр байна.

PfodApp -ийн үзүүлсэн ижил схемийг авахын тулд та "Залруулсан огноо/цаг" -ыг тооцоолох хэрэгтэй. Энэ тохиолдолд RTC цаг нь гар утасны орон нутгийн цагаар 2 секундын хоцорч байгаа тул орон нутгийн жинхэнэ цагийг авахын тулд RTC цагийн тэмдэг бүрт (орон нутгийн цаг - Office Temp одоогийн цаг) нэмж оруулна.

Цаг хугацаа өнгөрөхөд (огноо/цагийн тамга-Оффисын цагийн одоогийн цаг) агуулсан шинэ багана үүсгэн диаграмын X тэнхлэг болгон ашиглана уу өдрийн дотор цаг: минут: сек.

Алхам 10: GPS модулийг ашиглах

GPS модулийг ашиглах нь RTC модулийг ашиглахтай адил бөгөөд зөвхөн GPS модулиуд нь миллисекунд ашиглах боломжтой, 2000 он эхэлж, UTC үсрэлтийн секунд дутуу байгаагаас бусад тохиолдолд https://tycho.usno.navy.mil/leapsec.html -ийг үзнэ үү.) GPS -ийн огноо, цаг нь 2018 оны 1 -р сарын байдлаар UTC -ээс 18 секундын өмнө байна.

Adafruit Ultimate GPS -ийн Adafruit GPS номын сан нь RTClib -ээс ялгаатай нь 2000 жилийн офсетийг GPS -ийн жилүүдэд нэмдэггүй тул огноо, цагийн тэмдгийг илгээхдээ үүнийг нэмэх шаардлагатай байдаг. Хэдийгээр GPS номын сан нь урт хугацааны нарийвчлал сайтай миллисекундээр хангадаг боловч тийм ч нарийвчлалтай байдаггүй. GPS -ийн цагийн шинэчлэлт нь 100mS тутамд нэг л удаа хийгддэг бөгөөд дараа нь цуврал өгөгдлийг удаан 9600 baud -аар хүлээн авахад нэмэлт хоцрогдол, түүнийг задлахад удаашралтай байдаг. Эдгээр нь өгөгдлийг унших хугацааг тэмдэглэхдээ миллисекундийн нарийвчлалыг нэмэгдүүлдэг.

Adafruit -ийн GPS номын санг ашиглаж байгаа бөгөөд зурвасуудыг GPS объект болгон задлах кодоо нэмсэн гэж үзвэл GPS модулийг ашиглах pfodDesigner -ийн үүсгэсэн ноорог дээр ашиглах кодын зарим жишээг энд оруулав.

// зохицуулах {@} хүсэлт} өөр тохиолдолд ('@' == cmd) {// pfodApp нь 'одоогийн' цагийн хүсэлтийг хүсэв plot_mSOffset = millis (); // одоогийн millis -ийг түүхий өгөгдлийн цаг хугацааны тамгуудаар нөхөх.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 ('.'); хэрэв миллисекунд илгээж байвал // хэрэв та mS илгээхийг хүсвэл gps-> миллисекундын утгыг тэргүүлэх тэгээр оруулах шаардлагатай // өөрөөр хэлбэл 3-ийг 003 руу бөглөх шаардлагатай.

хүчингүй sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // драфтын өгөгдөл таймерыг дрифтгүйгээр дахин эхлүүлэх // давталтын хувьсагчдаас хувьсагчдыг дүрслэх эсвэл ADC оролтыг унших утгыг хуваарилах plot_1_var = analogRead (A0); // талбайд оруулах оролтыг уншина уу // plot_2_var plot Нууцлагдсан тул энд өгөгдөл өгөгдөөгүй // plot_3_var plot нуугдсан тул энд өгөгдөл өгөгдөөгүй байна // зургийн өгөгдлийг CSV форматаар илгээх sendDateTime (& GPS); // yyyy/M/d/H: m: s -ийг parser.print руу илгээнэ үү, хаягийг дамжуулна уу. 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 оны 1 -р сарын байдлаар GPS цаг нь UTC -ээс 18 секундын өмнө байна. pfodApp нь үүнийг залгахад GPS -ийн буцааж өгсөн огноо/цагийг {@ хариултаар дамжуулан гар утасны UTC огноо, цагтай харьцуулж засдаг. PfodApp бүртгэлийн файлаас хүснэгтэд график үүсгэх нь дээрх RTC модулиудтай адил юм. GPS -ийн цагийн тэмдэг дээр (орон нутгийн цаг - Оффисын цагийн одоогийн цаг) нэмэх нь үсрэлтийн секундыг засдаг.

millis () timestamps нь Arduino миллисекундын цагийн тэмдгийг ашиглахтай адил 5 -р алхам дээр үргэлжлүүлэн ажилладаг.

Алхам 11: Дүгнэлт

Андройд гар утсан дээр pfodApp -ийг ашиглах нь зөвхөн Arduino -ийн миллис () функцийг ашиглан өгөгдөл, огноо, цаг эсвэл өнгөрсөн хугацааны эсрэг график гаргах боломжийг олгодог. PfodApp бүртгэлийн файлыг ашиглан эдгээр огноо/цагийн хуваарийг хүснэгтэд дахин гаргах боломжтой. Хэрэв таны Arduino төсөл нь RTC модультай бол та RTC -ийн дрифтийг автоматаар залруулж, огноо, RTC цагийн тэмдгийг бичиж, төлөвлөж болно. Хэрэв та Arduino төсөлд GPS модуль байгаа бол та цаг хугацааны тэмдэглэгээг маш нарийвчлалтай бүртгэж, төлөвлөх боломжтой бөгөөд pfodApp нь GPS -ийн алга болсон секундыг автоматаар засах болно.

Бүх тохиолдолд таны Arduino төслийн түүхий өгөгдлийг залруулаагүй байдлаар хүлээн авдаг. Гэсэн хэдий ч pfodApp бүртгэлийн файл нь татаж авсан бүртгэлийн файлаас эдгээр залруулгыг хүснэгтэд дахин гаргах боломжийг олгох нэмэлт өгөгдлийг агуулдаг.

Андройд кодлох шаардлагагүй. Зургийн форматыг Arduino ноорог дээрх жижиг текстийн мөрөөр зааж өгсөн болно. Үнэгүй pfodDesigner нь WiFi, Сонгодог Bluetooth, BLE болон SMS -ээр холбогдсон олон төрлийн Arduino самбаруудад зориулагдсан Arduino -ийн өгөгдлийг бүрэн бүртгэх, зурах тоймыг гаргадаг.

Зөвлөмж болгож буй: