Millis () və PfodApp istifadə edərək Arduino Tarix/Saat Planlaşdırma/Giriş: 11 Addım
Millis () və PfodApp istifadə edərək Arduino Tarix/Saat Planlaşdırma/Giriş: 11 Addım
Anonim
Millis () və PfodApp istifadə edərək Arduino Tarix/Saat Planlaşdırma/Giriş
Millis () və PfodApp istifadə edərək Arduino Tarix/Saat Planlaşdırma/Giriş

Arduino və ya Android proqramlaşdırma tələb olunmur. RTC və GPS modulları da dəstəklənir. Saat qurşağı, RTC sürüşməsi və GPS üçün sıçrayış saniyələri üçün avtomatik düzəliş

Giriş

Bu təlimat, pfodApp istifadə edərək Android mobil telefonunuzda tarix və saata qarşı məlumat hazırlamaq üçün Arduino millis () zaman damgalarınızı necə istifadə edəcəyinizi göstərir.

Arduino və ya Android proqramlaşdırma tələb olunmur. pfodApp da kifayət qədər məlumatları qeyd edir ki, sonradan bir elektron tabloda tarix/saat sahələrini yenidən yarada biləsiniz.

NO RTC və ya GPS moduluna ehtiyac yoxdur, ancaq Arduino layihənizdə bir RTC (Real Time Clock) və ya GPS modulu varsa istifadə edilə bilər. Bu hallarda, pfodApp planları vaxt zonası, RTC sürüşməsi və GPS -in sıçrayış saniyələri üçün avtomatik olaraq düzəldiləcəkdir. Bu düzəlişlər üçün xüsusi Arduino kodu tələb olunmur. Həmişə olduğu kimi, pfodApp-da, alınan məlumatlar düzəldilmədiyi kimi qeyd olunur, lakin qeyd faylı, qeydləri kompüterinizə yükləyərkən bu düzəlişləri özünüz tətbiq etməyinizə imkan verən kifayət qədər məlumatı da ehtiva edir. Bu sonrakı emal nümunələri üçün aşağıya baxın.

Çox vaxt və tarix X oxu formatlaması dəstəklənir, bunların hamısı Arduino eskizinizdəki qısa mətn sətirləri ilə tamamilə idarə olunur. Android proqramlaşdırma tələb olunmur.

pfodApp WiFi, Bluetooth Classic, BLE və SMS vasitəsilə əlaqə quracaq. Pulsuz pfodDesigner, müxtəlif lövhələrə qoşulmaq üçün tarix/vaxt qurma/giriş üçün tam Arduino eskizləri yaradır. Arduino proqramlaşdırma tələb olunmur.

Bu təlimat, BLE vasitəsilə birləşdirən Arduino lövhəsi olaraq Adafruit Feather52 istifadə edəcək.

Bu təlimat üç vəziyyəti əhatə edir:- 1) Mikroprosessor layihənizdə yalnız milisaniyəlik zaman damgaları var- millis () 2) Mikroprosessor layihənizdə Real Zaman Saatı (RTC) var- pfodApp sürüşməni avtomatik olaraq düzəldir. 3) Mikroprosessor layihənizdə GPS modulu var - pfodApp sıçrayış saniyələri meydana gəldikcə avtomatik olaraq düzəldir (hazırda 2018 -ci ildə olduğu kimi 18 saniyə).

Addım 1: Arduino Millisecond Zaman Damgalarını istifadə edərək, Millis ()

Tarix və saat üçün milisaniyələri istifadə etməyin iki hissəsi var. Biri ya keçmişə, ya da tarixə/saata qarşı məlumat qurmaq üçün, digər hissəsi isə tarixə daxil edilmiş rawdata millisaniyəli zaman damgalarından tarix və saatı yenidən yaratmaqdır. pfodApp, pfodDevice -dən (Arduino mikro) alınan xam məlumatları dəyişdirmir. Sadəcə alınan baytları qeyd edir.

Əvvəlcə mikrofonunuz üçün milisaniyələri və məlumat ölçmələrini pfodApp -a qurmaq/qeyd etmək üçün göndərəcək bir Arduino eskizi yaratmaq üçün pulsuz pfodDesigner istifadə edin. Bu nümunə, A0 oxuyan Adafruit Feather 52 BLE lövhəsi üçün bir menyu yaradır. Adafruit Feather nRF52 LE - PfodApp ilə Xüsusi Nəzarət haqqında təlimat, Qrafik düyməsini ehtiva edən Feather nRF52 üçün bir menyu yaratmaq üçün pfodDesigner addımlarından keçir, buna görə də daha çox məlumat üçün yoxlayın. Bu təlimatda yalnız bir diaqram düyməsini əlavə edəcəyik və A0 oxunuşlarını keçən vaxta və tarixə/vaxta uyğun olaraq qurmaq üçün yeni X oxu format seçimlərindən istifadə edəcəyik.

Bu təlimatın ilk hissəsi Android cibinizdə nümunə bir tarix/vaxt cədvəli yaratmaq üçün pulsuz pfodDesigner -dən istifadə edəcək. Ekrandan razı qaldığınız zaman, pfodApp -a qoşulduqda bunu təkrar edəcək Arduino eskizini yarada bilərsiniz. Android Proqramlaşdırma tələb olunmur və pfodDesigner çoxlu Arduino lövhələri üçün tam Arduino eskizləri hazırladığı üçün heç bir Arduino proqramlaşdırma tələb olunmur.

Addım 2: Menyuya bir qrafik əlavə edin

Menyuya bir qrafik əlavə edin
Menyuya bir qrafik əlavə edin
Menyuya bir qrafik əlavə edin
Menyuya bir qrafik əlavə edin
Menyuya bir qrafik əlavə edin
Menyuya bir qrafik əlavə edin
Menyuya bir qrafik əlavə edin
Menyuya bir qrafik əlavə edin

Google Play -dən pfodDesigner tətbiqini yükləyin, açın və "Yeni Menyu Başlat" düyməsini basın.

Bəzi 11 BLE lövhələrinin siyahısını göstərmək üçün "Hədəf Serialı" na və sonra "Bluetooth Aşağı Enerji" düyməsinə vurun (digər seçimləri görmək üçün aşağı diyirləyin). Adafruit Bluefruit Tüyünü seçin52.

Redaktə menyusuna qayıdın və "Redaktə et" düyməsini basın və bu menyu üçün uyğun bir istək təyin edin, məsələn. "Feather52" və qalın və +7 ölçülü mətn. Arxa fon rəngi 'standart' Ağ olaraq qaldı

Geri qayıdın və "Menyu maddəsi əlavə et" düyməsini basın, aşağı diyirləyin və qrafik düyməsini düzəltmə ekranını açan "Qrafik Düyməsini" seçin. Burada düymənin görünüşündə hər hansı bir dəyişiklik edə bilərsiniz. Bu vəziyyətdə düymənin mətni "Tarix/Saat A0" olaraq dəyişdirildi və digər defoltlar olduğu kimi qaldı.

Bu, menyu üzərində qrafik ekranını açacaq bir düymə verir.

Addım 3: Süjet Mənbə və Lables Düzəliş

Süjet Mənbəsinin və Lablesin Redaktə Edilməsi
Süjet Mənbəsinin və Lablesin Redaktə Edilməsi
Süjet Mənbəsinin və Lablesin Redaktə Edilməsi
Süjet Mənbəsinin və Lablesin Redaktə Edilməsi
Süjet Mənbəsinin və Lablesin Redaktə Edilməsi
Süjet Mənbəsinin və Lablesin Redaktə Edilməsi
Süjet Mənbəsinin və Lablesin Redaktə Edilməsi
Süjet Mənbəsinin və Lablesin Redaktə Edilməsi

Qrafik etiketinə, X oxu formatına, süjet məlumat aralığına və (aşağıya fırladaraq) süjet parametrlərinin özlərinə daxil ola biləcəyiniz Redaktə Edilən Ekranları açmaq üçün "A0-nun Tarix/Saat sahəsi" düyməsini basın. Qrafik etiketini uyğun bir şeyə düzəldin, məsələn. "A0 Volt".

Aşağıya fırladın və 2 və 3 -cü sahələr üçün Düzəliş sahəsini açın və qrafik ekranından çıxarmaq üçün Sahəni Gizlət düyməsini basın.

Sonra "Plot 1 Düzəliş et" düyməsini basın və bir süjet etiketi (məsələn, A0), yAxis ədədləri (məsələn, Voltlar) təyin edin, maksimum 3.6V göstərin və I/O pin A0 -a qoşulun.

Geri çəkin və "Qrafikə Önizləmə" düyməsini vurun, ən son 0 nümunə məlumat nöqtəsinə 1 saniyəlik fasilələrlə, keçən dəqiqə ilə saniyə: saniyə çəkin.

Bütün keçən vaxtlar üçün sıfır vahidləri aparan sahələr göstərilmir, bu səbəbdən bu süjetdə yalnız> 1 dəq olan vaxtlar göstərilir.

Addım 4: Tarix/Saat Formatını Seçin

Tarix/Saat Formatını Seçmək
Tarix/Saat Formatını Seçmək
Tarix/Saat Formatını Seçmək
Tarix/Saat Formatını Seçmək
Tarix/Saat Formatını Seçmək
Tarix/Saat Formatını Seçmək

Keçən zaman sahələri üçün aparıcı bölmə zaman keçdikcə artmağa davam edir. Bunun nümunəsini görmək üçün "Parçaları redaktə et" ekranına qayıdın və Süjet Məlumatı aralığını 15 dəqiqəyə qədər artırın (bu ekranın alt hissəsi)

Sonra eyni nümunə məlumatlarını göstərmək üçün Diaqram Önizləməsinə vurun, lakin indi nümunələr arasında 15 dəqiqəlik fasilələrlə. Gördüyünüz kimi mm: ss -in dəqiqələr hissəsi artmaqda davam edir.

İndi geri qayıdın və mümkün olan bütün X oxu məlumatları/vaxt formatlarının kiçik bir seçimini göstərmək üçün X oxu düyməsini basın (daha çox məlumat üçün aşağı diyirləyin)

Yuxarıda, müxtəlif X oxlu formatlardan istifadə edərək qrafik önizləmələri seçilmişdir.

Burada göstərilən tarix/vaxt sahələri 'yerli' saat dilimindədir. UTC -də tarix/saat qurmaq üçün format seçimləri də var. Mümkün olan tarix/saat format seçimlərinin tam dəsti üçün pfodSpecification.pfd -ə baxın.

Addım 5: Arduino eskizini yaradın və sınayın

Arduino eskizini yaradın və sınayın
Arduino eskizini yaradın və sınayın
Arduino eskizini yaradın və sınayın
Arduino eskizini yaradın və sınayın

Diaqramınızın formatı və məlumat aralığından məmnun olduqdan sonra, "Redaktə Menyu_1" ekranına keçə bilərsiniz və aşağı diyirləyin və seçdiyiniz hədəf lövhəsi üçün "Kod yaradın". Adafruit Feather52 üçün 1sec məlumat aralığı və mm: ss keçən vaxt formatı, pfodFeather52_timeplot.ino istifadə edərək nümunə eskizini təqdim edirik.

Yuxarıda Feather52 -dən A0 -un süjeti var

Formatı Həftə içi saat: dəqiqə: saniyə (~ EHH: mm: ss) olaraq dəyişdirmək və kodu yenidən yaratmaq (pfodFeather52_dateplot.ino) yuxarıdakı kimi bir süjet verir.

X ekseni formatını Arduino eskizində, aşağıda təsvir edildiyi kimi düzəldə bilərsiniz.

Addım 6: PfodApp Millis () tarixini/vaxtını necə qurur?

PfodApp qoşulduqda, 'yerli' və UTC vaxtını xatırlayır və pfodDevice -in (Arduino lövhəsinin) cari süjet məlumatları zaman damgalarını tələb edir. Bu məlumatı istifadə edərək, pfodApp daha sonra millisekundlu zaman damğalarını ya keçmiş vaxt kimi, yəni milisaniyələri saatlarla saniyələrə çevirmək və s. Və ya millisekundlu zaman damgalarının əlaqənin qurulduğu və pfodDevice -in cari vaxtının tələb olunduğu vaxta nisbətdə tarix və saatı qura bilər.

Arduino tərəfindən yaradılan eskizə baxanda (məsələn, pfodFeather52_dateplot.ino), sahələrin Arduino tərəfini idarə edən üç kiçik kod var.

PfodApp -ın {@} cari vaxt sorğusunu idarə edən loop () kodu bölməsi

// idarə {@} sorğu} başqa halda ('@' == cmd) {// pfodApp 'cari' vaxt istədi plot_mSOffset = millis (); // cari milliləri ofset rawdata zaman damgaları kimi ələ keçirin parser.print (F ("{@` 0} ")); // '0' cari 'xam məlumat milisaniyələri olaraq qaytarın

Millis () cari dəyərini qaytara bilərsiniz, ancaq millis () hər 49.7 gündə 0 -a yaxınlaşır, bu da süjetin geriyə atlanmasını təmin edər. Bunun əvəzinə kod, {@} sorğu edildikdə cari millis () dəyərini xatırlayır və {@`0} yəni sıfırın indiki milisaniyəlik zaman damğasını qaytarır. Sonra eskizin istifadə etdiyi rawdata nöqtələrini göndərərkən

plot_1_var = analogOxu (A0); // süjetə girişi oxuyun // plot_2_var süjet Gizlidir, buna görə burada heç bir məlumat verilmir // plot_3_var süjet Gizlidir, buna görə burada heç bir məlumat təyin olunmur // süjet məlumatlarını CSV formatında göndərin parser.print (millis ()-plot_mSOffset); // vaxt milisaniyələrdə ….

məlumatlarla göndərilən milisaniyə zaman damgası 0 -dan başlayır və 49.7 günə qədər artır. 49.7 gün davamlı əlaqə saxlasanız, süjetin ~ 50 gün geriyə sıçradığını görəcəksiniz. Hər 49.7 gündə bir dəfə ayırmaq və yenidən bağlamaq bunun qarşısını alır.

Tarix/vaxt sahəsinin üçüncü hissəsi süjet mesajıdır.

} else if ('A' == cmd) {// user pressed - 'A0 -un Tarix/Saat planı' // // Menu_1 -in əsas Menüsündeki // geri çəkmə msg. parser.print (F ("{= A0 Volts ~ E HH: mm: ss | tarix | A0 ~~~ Volt ||}"));

İstifadəçi "A0 -nun Tarix/Saat sahəsi" düyməsini basdıqda, pfodApp pfodDevice -ə {A} cmd göndərir və pfodDevice süjet mesajı ilə cavab verir, {=… {= A0 Volts ~ E HH: mm: ss | tarix | A0 ~~~ X ekseni E HH: mm: ss formatını ehtiva edən Voltlar ||}

Java SimpleDateFormat formatları burada məqbuldur. pfodApp Məlumat Girişləri və Plotting və pfodSpecification.pdf -də süjet mesajı haqqında daha çox məlumat var.

Addım 7: Kompüterinizdə Tarix/Saat Planlarının Yenidən Yaradılması

Kompüterinizdə Tarix/Saat Planlarının Yenidən Təkmilləşdirilməsi
Kompüterinizdə Tarix/Saat Planlarının Yenidən Təkmilləşdirilməsi
Kompüterinizdə Tarix/Saat Planlarının Təkrarlanması
Kompüterinizdə Tarix/Saat Planlarının Təkrarlanması
Kompüterinizdə Tarix/Saat Planlarının Yenidən Təkmilləşdirilməsi
Kompüterinizdə Tarix/Saat Planlarının Yenidən Təkmilləşdirilməsi

Varsayılan olaraq, pfodApp, bütün daxil olan xam məlumatları cibinizdəki bir günlük faylına qeyd edir, bağlantı redaktə ekranında bu girişi deaktiv etməmisinizsə, pfodAppForAndroidGettingStarted.pdf -ə baxın

PfodApp -ı redaktə edərkən, günlük faylının yeri və adı ilə qısa bir mesaj görünür, məsələn. /pfodAppRawData/pfod_bluefruit52.txt Bu fayl CSV formatındadır, vergüllə ayrılıb və kompüterinizə köçürdükdən sonra (köçürmə variantları üçün pfodAppForAndroidGettingStarted.pdf -ə baxın), məlumatları tərtib etmək üçün elektron tabloda aça bilərsiniz.

Günlük faylının ilk bir neçə sətri burada.

// pfodApp V3.0.360, yerli vaxt, UTC, gündə mS, pfod bluefruit52 cari vaxt (mS), pfod bluefruit52 cari vaxt, // bağlı, 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,, Yuxarıda pfodApp -in Feather52 -ə qoşulduğu 'yerli' və UTC vaxtını və Feather52 -nin {@..} cavabı ilə bildirdiyi mS -də cari vaxtı görə bilərsiniz. Son sütun boşdur, çünki heç bir RTC və ya GPS yoxdur və buna görə də Feather52 tərəfindən yyyy/MM/gg vaxtında cari vaxt bildirilməmişdir.

Verilənləri keçən zamana qarşı tərtib etmək üçün, milisaniyəlik vaxt damğasından cari vaxtı (mS) çıxarın və sonra mS -in gündəlik dəyərinə bölün. İşdə əlavə edilmiş formula və nəticənin cədvəli olan elektron tablo. Aşağıdakı elektron tablo (pfod_bluefruit52.xls) Excel formatında saxlanılan OpenOffice elektron cədvəlidir.

OpenOffice-də süjet səpələnmiş bir süjetdir və süjetin x oxu HH: MM: SS Qeydində qeyd olunur: elektron cədvəlin tarix/saat formatları pfodApp tərəfindən istifadə olunan süjet formatları ilə eyni deyil. Məsələn, pfodApp -da MM aylardır, mm isə dəqiqələrdir.

Tarix və saata qarşı plan qurmaq üçün yalnız əlaqə vaxtını elektron tablo vaxtına əlavə etməli və yenidən yerləşdirməlisiniz. (pfod_bluefruit52_date.xls)

Qeyd: Yerli vaxt və UTC elektron tabloda mətn olaraq idxal edildi, buna görə də onları bir formulda istifadə etməzdən əvvəl "öndə gedənləri" silmək lazım idi.

Addım 8: 49.7 Günlük Millis () Limitindən Necə Qalmaq və Niyə Etməməlisiniz

Yuxarıda qeyd edildiyi kimi, pfodApp tarix/saatı millisdən () necə qurur ?, 49.7 gündən çox davamlı olaraq əlaqəli olsanız, milisaniyə vaxt damgaları sıfıra dönəcəkdir. Bir neçə kod xətası bunun qarşısını ala bilər, amma tövsiyə edilmir.

Əvvəlcə ətrafa sarılmamaq üçün necə. Zaman damgalarının neçə dəfə dolandığını və birləşmiş nəticəni HEX -də çap etdirmək üçün başqa bir imzasız int dəyişəni əlavə edin.

uint_t mSwrapCount = 0; uint32_t lastTimeStamp = 0;

… Plot_1_var = analogOxu (A0); // süjetə girişi oxuyun // plot_2_var süjet Gizlidir, buna görə burada heç bir məlumat təyin olunmur // plot_3_var plot Gizlidir, buna görə burada heç bir məlumat təyin olunmur // süjet məlumatlarını CSV formatında göndərin uint32_t timeStamp = millis ()-plot_mSOffset; if (timeStamp <lastTimeStamp) {// timeStamp 0 mSwrapCount ++ - a geri sarılır; // saymaq üçün birini əlavə edin} lastTimeStamp = timeStamp; parser.print ("0x"); parser.print (msWrapCount, HEX); parser.print (timeStamp, HEX); // HEX -də milisaniyələrdə vaxt….

{@.. cavabını qaytararkən mSwrapCount -u da silin.

// idarə {@} sorğu} başqa halda ('@' == cmd) {// pfodApp 'cari' vaxt istədi plot_mSOffset = millis (); // cari milliləri ofset rawdata zaman damgaları kimi tutmaq mSwrapCount = 0; // təmiz sarğı sayı. parser.print (F ("{@` 0} ")); // '0' cari 'xam məlumat milisaniyəsi olaraq qaytarın

Zaman damgaları, sonrakı 40.7 gün * 65536 ~ = 7308 il üçün 'doğru' dəyəri verəcəkdir.

pfodApp, hex vaxt damgalarını avtomatik olaraq hiylə üçün çevirəcək və tam olaraq alındığı kimi, yəni hex şəklində qeyd edəcək. (OpenOffice) elektron cədvəlində, A2 -də mS -ə çevirmək üçün bu düsturdan istifadə edirsiniz (A1 hər hansı bir boş hüceyrədir) = HEX2DEC (REPLACE (A2; 1; 2; A1))

Niyə bunu etmək istəmirsən

Yuxarıda göstərildiyi kimi, mS zaman damgalarını 50 gündən çox uzatmaq asandır. Ancaq yəqin ki, bunu etmək istəmirsiniz, çünki getdikcə daha dəqiq olurlar. Millis () nəticələrini yaratmaq üçün istifadə olunan tipik bir 16Mhz kristal mikroda ~ 50ppm (milyonda bir hissə) dəqiqliyə malikdir. Bu o deməkdir ki, 49.7 gündən sonra milisaniyəlik zaman damgası 3 dəqiqə yarım qala bilər və bu da temperaturun kristal dəqiqliyinə təsirini nəzərə almır.

Qısa əlaqə müddətlərində, bu dəqiqlik bir problem deyil, çünki {@.. cavabı hər yenidən əlaqədə cib telefonunun tarixinə/vaxtına milisaniyə vaxt damğasını yenidən sinxronlaşdırır. Ancaq uzun müddət (günlər) bağlı qalmaq və məlumatları davamlı olaraq qeyd etmək istəyirsinizsə, RTC və ya GPS modulu kimi daxili millisdən () daha dəqiq bir şey istifadə etməlisiniz.

Addım 9: RTC (Real Time Clock) istifadə edin

Bir RTC (Real Time Clock) istifadə
Bir RTC (Real Time Clock) istifadə
Bir RTC (Real Time Clock) istifadə
Bir RTC (Real Time Clock) istifadə

Bir çox RTC modulu mövcuddur, daha dəqiq olanlardan biri DS3231 e. Adafruit -in DS3231 modulu. Göstərilən dəqiqlik 0 ilə 40C arasında +/- 2ppm-dir. yəni ~ +/- 5 saniyə/ay.

Tarix/vaxt zaman damgası olan məlumatları qurmaq istəyirsinizsə, məsələn. 2019/04/19 20: 4: 34, sonra cari tarixi/saatı qaytarmaq üçün {@ cavabı dəyişdirməlisiniz, məs. {@`0 ~ 2019/4/19 3: 33: 5}. RTClib kitabxanasından istifadə etdiyinizi və kodu RTC modulunu işə saldığınızı güman edərək, bir RTC modulundan istifadə etmək üçün pfodDesigner tərəfindən yaradılan eskizə tətbiq ediləcək bəzi nümunə kod dəyişiklikləri.

// idarə edin {@} sorğu} başqa halda ('@' == cmd) {// pfodApp 'cari' vaxt istədi plot_mSOffset = millis (); // cari milliləri ofset rawdata zaman damgaları kimi ələ keçirin parser.print (F ("{@` 0 "}); //" 0 "ı" cari "xam data milisaniyəsi parser.print ('~') kimi qaytarın; // start string date/time DateTime now = rtc.now () sendDateTime (& now); // yyyy/M/d/H: m: s -ni parser.print -ə göndərin, ünvanı & arg. parser.print ('}') kimi göndərin; // {@ cavabın sonu məsələn {@ `0 ~ 2019/4/19 3: 33: 5}….

// tarix tarixçəsini printvoidə göndərin sendDateTime (DateTime* dt) {parser.print (dt-> il (), DEC); parser.print ('/'); parser.print (dt-> ay (), DEC); parser.print ('/'); parser.print (dt-> gün (), DEC); parser.print (''); parser.print (dt-> saat (), DEC); parser.print (':'); parser.print (dt-> dəqiqə (), DEC); parser.print (':'); parser.print (dt-> saniyə (), DEC); }

etibarsız sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // sürüşmədən süjet məlumatı sayğacını yenidən başladın // döngə dəyişənlərinizdən dəyişənləri çəkmək üçün dəyərlər təyin edin və ya ADC girişlərini oxuyun plot_1_var = analogRead (A0); // süjetə girişi oxuyun // plot_2_var süjet Gizlidir, buna görə burada heç bir məlumat verilmir // plot_3_var plot Gizlidir, buna görə burada heç bir məlumat verilmir // süjet məlumatlarını CSV formatında göndərin DateTime now = rtc.now (); sendDateTime (və indi); // yyyy/M/d/H: m: s -ni parser.print ünvanına göndərin, ünvanı və arg kimi keçin. parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // 2 -ci sahə gizlədilib. Məlumat göndərilməyib. parser.print (','); // 3 -cü sahə gizlədilib. Məlumat göndərilməyib. parser.println (); // CSV məlumat qeydinin sonu}}

~ 2019/4/19 3: 33: 5 {@ cavabının bir hissəsi, pfodApp -a pfodDevice -in cari tarix və vaxt olduğunu düşündüyünü bildirməyə imkan verir. Eskiziniz daha sonra yMd Hms zaman damgası ilə məlumat göndərə bilər və pfodApp, onları təyin etdiyiniz X-ox formatından asılı olaraq ya bağlanma vaxtından keçən müddətə, ya da tarix və saata uyğun olaraq tərtib edəcək.

Tarixə və saata qarşı hiylə qurarkən, pfodApp süjet proqramı, pfodDevice -in cari vaxtını cib telefonunun cari vaxtı ilə müqayisə edərək RTC -də hər hansı bir "sürüşməni" düzəldir. Bu düzəliş, RTC -ni mobil telefonunuzun yerli saat dilimindən fərqli bir saat qurşağına təyin edir. millis () zaman damgaları, Arduino milisaniyəsinin zaman damgalarını istifadə edərkən, 5 -ci addımdakı kimi işləməyə davam edir.

İşdə 8 günlük bir müddət ərzində otaq istiliyinin nümunə bir cədvəli, Office_Temp.xls Günlük faylı idxal edildikdə, mətni bir tarixə/saata çevirmək üçün ilk sütun YMD olaraq qeyd edildi. Elektron cədvəlin tarixlər və saatlar kimi şərh etməsi üçün hələ də aparıcı 'yerli vaxt, UTC və Office Temp cari vaxt girişlərini silməlisiniz.

PfodApp -ın göstərdiyi eyni süjeti əldə etmək üçün "Düzəldilmiş Tarix/Saat" ı hesablamalısınız. Bu vəziyyətdə, RTC vaxtı cib telefonunun yerli vaxtından 2 saniyə geridədir, buna görə də əsl yerli vaxtı əldə etmək üçün hər bir RTC zaman damgası əlavə olunur (yerli vaxt - Office Temp cari vaxtı).

Keçən vaxt sahələri üçün, (tarix/vaxt zaman damgası-Ofis Saatı cari vaxtı) olan yeni bir sütun yaradın və bunu qrafikdəki X oxu olaraq istifadə edin (Office_TempElapsed.xls) Əslində bu halda, pfodApp daha yaxşı keçən vaxt cədvəlləri istehsal edir. günlərdə saat: dəqiqə: saniyə

Addım 10: GPS modulundan istifadə

GPS modulunun istifadəsi, RTC modulunun istifadəsinə bənzəyir, ancaq GPS modullarının milisaniyələri mövcuddur, illər 2000 -ci ildən başlayır və UTC sıçrayış saniyəsi yoxdur (bax https://tycho.usno.navy.mil/leapsec.html) GPS tarixi və saatı, 2018 -ci ilin yanvar ayı kimi UTC -dən 18 saniyə qabaqdadır.

Adafruit Ultimate GPS üçün Adafruit GPS kitabxanası, RTClib -dən fərqli olaraq, 2000 -ci il ofsetini GPS illərinə əlavə etmir, buna görə də tarix və vaxt damğasını göndərdiyiniz zaman əlavə edilməlidir. GPS kitabxanası çox yaxşı uzunmüddətli dəqiqliyə malik milisaniyələri təmin etsə də, çox dəqiq deyil. GPS vaxt yeniləmələri hər 100mS -də yalnız bir dəfə olur və sonra ardıcıl məlumatları yavaş 9600 baudda qəbul etməkdə əlavə gecikmə və onu təhlil etməkdə başqa bir gecikmə olur. Bütün bunlar, məlumatların oxunması üçün zaman damğası vurarkən, milisaniyədə dəqiqlik əlavə edir.

GPS modulundan istifadə etmək üçün pfodDesigner tərəfindən yaradılan eskizə tətbiq etmək üçün Adafruit -in GPS kitabxanasından istifadə etdiyinizi və mesajları bir GPS obyektinə daxil etmək və təhlil etmək üçün kodu əlavə etdiyinizi güman edərək nümunə kod dəyişikliklərini təqdim edirik.

// idarə edin {@} sorğu} başqa halda ('@' == cmd) {// pfodApp 'cari' vaxt istədi plot_mSOffset = millis (); // cari milliləri ofset rawdata zaman damgaları kimi ələ keçirin parser.print (F ("{@` 0 "}); //" 0 "ı" cari "xam məlumat milisaniyəsi parser.print ('~') kimi qaytarın; // start string date/time sendDateTime (& GPS); // yyyy/M/d/H: m: s göndərin parser.print, ünvanı və arg. parser.print ('}') kimi göndərin; // {@ cavabın sonu məs. {@`0 ~ 2019/4/19 3: 33: 5}….

// tarix vaxtını printvoid sendDateTime (Adafruit_GPS* gps) {parser.print (F ("20"); // 20.. il parser.print (gps-> il, DEC); parser.print ('/ parser.print (gps-> ay, DEC); parser.print ('/'); parser.print (gps-> gün, DEC); parser.print (''); parser.print (gps- > saat, DEC); parser.print (':'); parser.print (gps-> dəqiqə, DEC); parser.print (':'); parser.print (gps-> ikinci, DEC); // parser.print ('.'); əgər milisaniyə göndərirsinizsə // mS göndərmək istəyirsinizsə gps-> millisaniyə dəyərini sıfırlarla doldurmalısınız // yəni 3-ü 003} -ə əlavə etmək lazımdır.

etibarsız sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // sürüşmədən süjet məlumatı sayğacını yenidən başladın // döngə dəyişənlərinizdən dəyişənləri çəkmək üçün dəyərlər təyin edin və ya ADC girişlərini oxuyun plot_1_var = analogRead (A0); // süjetə girişi oxuyun // plot_2_var süjet Gizlidir, buna görə burada heç bir məlumat verilmir // plot_3_var plot Gizlidir, buna görə burada heç bir məlumat təyin olunmur // süjet məlumatlarını CSV formatında göndərməkDateTime (& GPS); // yyyy/M/d/H: m: s -ni parser.print ünvanına göndərin, ünvanı və arg kimi keçin. parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // 2 -ci sahə gizlədilib. Məlumat göndərilməyib. parser.print (','); // 3 -cü sahə gizlədilib. Məlumat göndərilməyib. parser.println (); // CSV məlumat qeydinin sonu}}

Tarix və saata qarşı hiylə qurarkən, pfodApp avtomatik olaraq sıçrayış saniyələrini düzəldir. 2018 -ci ilin yanvar ayı vəziyyətinə görə, GPS vaxtı UTC -dən 18 saniyə qabaqdır. pfodApp, telefonun UTC tarix və saatı ilə {@ cavabı vasitəsi ilə, GPS -in əlaqədə olduğu tarix/saatı müqayisə edərək bunu düzəldir. PfodApp günlük faylından bir elektron tabloda sahələr yaratmaq yuxarıdakı RTC modulları ilə eynidir. GPS zaman damgalarına (yerli vaxt - Ofis Temp cari vaxtı) əlavə etmək sıçrayış saniyələrini düzəldir.

millis () zaman damgaları, Arduino milisaniyəsinin zaman damgalarını istifadə edərkən, 5 -ci addımdakı kimi işləməyə davam edir.

Addım 11: Nəticə

Android mobil telefonunuzda pfodApp istifadə edərək, yalnız Arduino millis () funksiyasından istifadə edərək məlumatları tarix və saata və ya keçən zamana qarşı tərtib etməyə imkan verir. PfodApp günlük faylını istifadə edərək, bu tarix/vaxt sahələrini elektron tabloda yenidən istehsal edə bilərsiniz. Arduino layihənizdə bir RTC modulu varsa, avtomatik olaraq RTC 'sürüşməsini' düzəldərək tarixi və RTC vaxt damğalarını daxil edə bilərsiniz. Əgər Arduino layihəsində GPS modulu varsa, daxil ola və son dərəcə dəqiq zaman damgalarını qura bilərsiniz və pfodApp GPS -in itkin sıçrayış saniyələrini avtomatik olaraq düzəldəcək.

Bütün hallarda, Arduino layihənizdəki xam məlumatlar tam olaraq alındığı kimi, düzəldilmədən qeyd olunur. Bununla birlikdə, pfodApp giriş faylı, bu düzəlişləri yüklənmiş qeyd sənədindən elektron tabloda yenidən istehsal etməyinizə imkan verən əlavə məlumatları ehtiva edir.

Android kodlaşdırma tələb olunmur. Süjet formatlarının hamısı Arduino eskizinizdəki kiçik mətn sətirləri ilə müəyyən edilir. Pulsuz pfodDesigner, WiFi, Klassik Bluetooth, BLE və SMS vasitəsilə birləşdirən geniş çeşidli Arduino lövhələri üçün tam Arduino məlumat girişi və eskizləri yaradır.

Tövsiyə: