Isi kandungan:

Arduino Tarikh / Masa Memplot / Mencatat Log Menggunakan Millis () dan PfodApp: 11 Langkah
Arduino Tarikh / Masa Memplot / Mencatat Log Menggunakan Millis () dan PfodApp: 11 Langkah

Video: Arduino Tarikh / Masa Memplot / Mencatat Log Menggunakan Millis () dan PfodApp: 11 Langkah

Video: Arduino Tarikh / Masa Memplot / Mencatat Log Menggunakan Millis () dan PfodApp: 11 Langkah
Video: It Became Unliveable! ~ Abandoned Home Of The Spenser's In The USA 2024, Julai
Anonim
Arduino Penetapan Tarikh / Masa / Pembalakan Menggunakan Millis () dan PfodApp
Arduino Penetapan Tarikh / Masa / Pembalakan Menggunakan Millis () dan PfodApp

Tidak diperlukan pengaturcaraan Arduino atau Android. Modul RTC dan GPS juga disokong. Pembetulan automatik untuk zon waktu, drift RTC dan GPS hilang saat lompatan

Pengenalan

Tutorial ini menunjukkan kepada anda cara menggunakan cap waktu Arduino millis () anda untuk memplot data dengan tarikh dan waktu di telefon bimbit Android anda menggunakan pfodApp.

Tidak diperlukan pengaturcaraan Arduino atau Android. pfodApp juga mencatat data yang mencukupi sehingga anda kemudian dapat menghasilkan semula plot tarikh / masa dalam hamparan.

TIDAK diperlukan modul RTC atau GPS, namun jika projek Arduino anda mempunyai RTC (Real Time Clock) atau modul GPS, modul tersebut juga dapat digunakan. Dalam kes tersebut, plot pfodApp secara automatik akan memperbetulkan zon waktu, drift RTC dan GPS yang tiada saat lompatan. Tidak diperlukan kod Arduino khas untuk pembetulan ini. Seperti biasa dengan pfodApp, data yang diterima dicatat dengan tepat, tidak diperbetulkan, namun fail log juga mengandungi maklumat yang mencukupi untuk membolehkan anda menerapkan pembetulan ini sendiri semasa anda memuat turun log ke komputer anda. Lihat di bawah untuk contoh pemprosesan pasca ini.

Pelbagai format masa dan tarikh paksi X disokong, semuanya dikendalikan sepenuhnya oleh rentetan teks pendek dalam lakaran Arduino anda. Tidak diperlukan pengaturcaraan Android.

pfodApp akan berhubung melalui WiFi, Bluetooth Classic, BLE dan SMS. PfodDesigner percuma menghasilkan lakaran Arduino lengkap untuk merancang / log tarikh / masa untuk menyambung ke pelbagai papan. Tidak diperlukan pengaturcaraan Arduino.

Pengajaran ini akan menggunakan Adafruit Feather52 sebagai contoh papan Arduino, yang menghubungkan melalui BLE.

Instruksional ini merangkumi tiga kes: - 1) Projek mikropemproses anda hanya mempunyai cap waktu milisaat - milis () 2) Projek mikropemproses anda mempunyai Jam Masa Sebenar (RTC) - pfodApp secara automatik membetulkan drift. 3) Projek mikropemproses anda mempunyai modul GPS - pfodApp secara automatik membetulkan detik lompatan ketika ia berlaku (kini 18 saat pada 2018).

Langkah 1: Menggunakan Cap Masa Arduino Millisecond, Millis ()

Terdapat dua bahagian untuk menggunakan milisaat untuk tarikh dan masa. Salah satunya adalah untuk memplot data terhadap masa atau tarikh / masa yang berlalu dan bahagian yang lain membuat semula tarikh dan masa dari cap waktu milidetik rawdata yang dicatat. pfodApp tidak mengubah data mentah yang diterima dari pfodDevice (mikro Arduino). Ia hanya memasukkan tepat bait yang diterima.

Mula-mula gunakan pfodDesigner percuma untuk menghasilkan lakaran Arduino untuk mikro anda yang akan menghantar milisaat dan pengukuran data ke pfodApp untuk merancang / mencatat. Contoh ini membuat menu untuk papan Adafruit Feather 52 BLE yang berbunyi A0. Tutorial mengenai Adafruit Feather nRF52 LE - Custom Controls dengan pfodApp melalui langkah-langkah pfodDesigner untuk membuat menu untuk Feather nRF52 yang merangkumi butang Chart, jadi periksa untuk maklumat lebih lanjut. Dalam tutorial ini kita akan menambahkan hanya butang carta dan menggunakan pilihan format paksi-X yang baru untuk merancang pembacaan A0 terhadap waktu dan tarikh / waktu yang berlalu.

Bahagian pertama dari tutorial ini akan melalui pfodDesigner percuma untuk membuat contoh carta tarikh / masa di telefon bimbit Android anda. Apabila anda berpuas hati dengan paparan, anda dapat menghasilkan lakaran Arduino yang akan menghasilkan semula apabila anda berhubung dengan pfodApp. Tidak diperlukan Pengaturcaraan Android dan kerana pfodDesigner menghasilkan lakaran Arduino lengkap untuk pelbagai papan Arduino, tidak diperlukan pengaturcaraan Arduino.

Langkah 2: Menambah Carta ke Menu

Menambah Carta ke Menu
Menambah Carta ke Menu
Menambah Carta ke Menu
Menambah Carta ke Menu
Menambah Carta ke Menu
Menambah Carta ke Menu
Menambah Carta ke Menu
Menambah Carta ke Menu

Muat turun aplikasi pfodDesigner dari Google Play, buka dan klik pada "Start new Menu"

Klik pada "Siri Sasaran" dan kemudian pada butang "Tenaga Rendah Bluetooth" untuk memaparkan senarai kira-kira 11 papan BLE (tatal ke bawah untuk melihat pilihan lain). Pilih pada Adafruit Bluefruit Feather52.

Kembali ke menu Penyuntingan dan klik pada "Edit Prompt" dan tetapkan permintaan yang sesuai untuk menu ini, mis. "Feather52" dan teks tebal dan berukuran +7. Warna latar dibiarkan sebagai Putih 'lalai'

Kembali dan klik pada "Add Item Item", tatal ke bawah dan pilih "Chart Button" yang membuka skrin edit butang chart. Anda boleh membuat perubahan pada penampilan butang di sini. Dalam kes ini, teks butang diubah menjadi "Tarikh / Waktu plot A0" dan lalai lain ditinggalkan sebagaimana adanya.

Ini memberi anda butang pada menu yang akan membuka skrin carta.

Langkah 3: Mengedit Plot Source and Lables

Mengedit Sumber Plot dan Label
Mengedit Sumber Plot dan Label
Mengedit Sumber Plot dan Label
Mengedit Sumber Plot dan Label
Menyunting Sumber Plot dan Label
Menyunting Sumber Plot dan Label
Menyunting Sumber Plot dan Label
Menyunting Sumber Plot dan Label

Klik pada butang "Tarikh / Masa plot A0" untuk membuka skrin Penyuntingan Petak, di mana anda boleh mengakses label carta, format paksi X, selang data plot dan (dengan menatal ke bawah) tetapan plot itu sendiri. Edit Label Carta ke sesuatu yang sesuai, mis. "Voltan A0".

Tatal ke bawah dan untuk Plot 2 dan 3 buka Edit Plot dan klik Sembunyikan Plot untuk mengeluarkannya dari paparan carta.

Kemudian klik pada "Edit Plot 1" dan tetapkan label plot (mis. A0), unit yAxis (mis. Volt), paparkan maksimum 3.6V dan sambungkan ke pin I / O A0.

Tatal ke atas dan klik pada "Pratonton Carta" ke 0 titik data sampel terkini, pada selang 1 saat, dirancang untuk masa yang berlalu dalam beberapa minit: saat.

Untuk semua petak masa yang berlalu, unit sifar terkemuka tidak ditunjukkan, jadi dalam plot ini hanya masa> 1 minit yang menunjukkan minit utama ditunjukkan.

Langkah 4: Memilih Format Tarikh / Masa

Memilih Format Tarikh / Masa
Memilih Format Tarikh / Masa
Memilih Format Tarikh / Masa
Memilih Format Tarikh / Masa
Memilih Format Tarikh / Masa
Memilih Format Tarikh / Masa

Untuk plot masa yang berlalu, unit utama terus meningkat seiring dengan berjalannya waktu. Untuk melihat contoh ini, kembali ke skrin "Mengedit Plot" dan tingkatkan selang Data Plot menjadi 15 minit (bahagian bawah skrin ini)

Kemudian klik pada Chart Preview untuk menunjukkan data sampel yang sama tetapi sekarang dengan selang 15minit antara sampel. Seperti yang anda lihat bahagian minit mm: ss terus meningkat.

Sekarang kembali dan klik pada butang paksi-X untuk menunjukkan pilihan kecil dari semua kemungkinan format data / masa paksi-X (tatal ke bawah untuk lebih banyak)

Di atas adalah pilihan pratonton carta menggunakan format paksi-X yang berbeza.

Petak tarikh / masa yang ditunjukkan di sini berada di zon waktu 'tempatan'. Terdapat juga pilihan format untuk merancang tarikh / masa di UTC. Untuk set lengkap pilihan format tarikh / masa yang mungkin, lihat pfodSpecification.pfd.

Langkah 5: Hasilkan dan Uji Lakaran Arduino

Hasilkan dan Uji Lakaran Arduino
Hasilkan dan Uji Lakaran Arduino
Hasilkan dan Uji Lakaran Arduino
Hasilkan dan Uji Lakaran Arduino

Setelah anda puas dengan format carta dan selang data, anda boleh ke skrin "Menu Pengeditan_1" dan tatal ke bawah dan "Hasilkan Kod" untuk papan sasaran yang anda pilih. Berikut adalah contoh lakaran untuk Adafruit Feather52 menggunakan selang data 1 saat dan format masa mm: ss yang berlalu, pfodFeather52_timeplot.ino

Di atas adalah plot A0 dari Feather52

Menukar format ke Hari Minggu jam: min: saat (~ EHH: mm: ss) dan menghasilkan semula kod (pfodFeather52_dateplot.ino) memberikan plot seperti yang kedua di atas.

Anda boleh mengedit format paksi-X secara langsung dalam lakaran Arduino anda, seperti yang dijelaskan seterusnya.

Langkah 6: Bagaimana Tarikh / Masa Plot PfodApp Dari Millis ()?

Apabila pfodApp menyambung, ia mengingati masa 'tempatan' dan UTC dan meminta cap waktu data plot semasa pfodDevice (papan Arduino). Dengan menggunakan maklumat ini, pfodApp kemudian dapat merancang cap waktu milisaat sama ada masa yang berlalu iaitu menukar milisaat menjadi jam mss dsb., Atau merancang tarikh dan masa cap waktu milisaat mewakili relatif ketika sambungan dibuat dan waktu semasa pfodDevice diminta.

Melihat lakaran yang dihasilkan oleh Arduino (mis. PfodFeather52_dateplot.ino), terdapat tiga kod kecil yang menangani bahagian plot Arduino.

Bahagian kod gelung () yang menangani {@} permintaan waktu semasa pfodApp

// menangani {@} request} yang lain jika ('@' == cmd) {// pfodApp meminta 'current' time plot_mSOffset = millis (); // menangkap millis semasa sebagai mengimbangi cap waktu rawdata parser.print (F ("{@` 0} ")); // kembalikan `0 sebagai 'saat' milidetik data mentah

Anda hanya dapat mengembalikan nilai milis (), tetapi milis () membalikkan kembali ke 0 setiap 49.7 hari, yang akan membuat plot melompat ke belakang. Oleh itu, kod tersebut mengingat nilai milis () semasa permintaan {@} dibuat, dan mengembalikan {@ `0} iaitu cap waktu milisaat semasa sifar. Kemudian semasa menghantar poin rawdata lakaran yang digunakan

plot_1_var = analogRead (A0); // baca input ke plot // plot_2_var plot Tersembunyi sehingga tidak ada data yang diberikan di sini // plot_3_var plot Tersembunyi sehingga tidak ada data yang diberikan di sini // hantar data plot dalam format CSV parser.print (milis () - plot_mSOffset); // masa dalam milisaat ….

sehingga cap waktu milisaat yang dihantar dengan data bermula pada 0 dan meningkat hingga 49.7 hari. Sekiranya anda terus berhubung selama 49.7 hari maka anda akan melihat plot melompat ke belakang hingga ~ 50 hari. Putus dan sambungkan semula setiap 49.7 hari mengelakkan ini.

Bahagian ketiga plot tarikh / masa adalah mesej plot.

} lain jika ('A' == cmd) {// pengguna ditekan - 'Tarikh / Masa plot A0' // di Menu utama Menu_1 // msg kembali plot. parser.print (F ("{= A0 Volt ~ E HH: mm: ss | tarikh | A0 ~~~ Volt ||}"));

Apabila pengguna menekan butang "Tarikh / Masa plot A0", pfodApp mengirim {A} cmd ke pfodDevice dan pfodDevice bertindak balas dengan pesanan plot, {=… {= A0 Voltan ~ EHH: mm: ss | tarikh | A0 ~~~ Volt ||} yang mengandungi format sumbu X EHH: mm: ss

Format Java SimpleDateFormat boleh diterima di sini. PfodApp Data Logging and Plotting dan pfodSpecification.pdf mempunyai lebih banyak maklumat mengenai plot plot.

Langkah 7: Menghasilkan semula Tarikh / Masa pada Komputer Anda

Menghasilkan semula Tarikh / Masa Petak di Komputer Anda
Menghasilkan semula Tarikh / Masa Petak di Komputer Anda
Menghasilkan semula Tarikh / Masa Petak di Komputer Anda
Menghasilkan semula Tarikh / Masa Petak di Komputer Anda
Menghasilkan semula Tarikh / Masa Petak di Komputer Anda
Menghasilkan semula Tarikh / Masa Petak di Komputer Anda

Secara lalai, pfodApp mencatat semua data mentah masuk ke fail log di telefon bimbit anda, melainkan anda telah melumpuhkan log masuk ini di skrin edit sambungan, lihat pfodAppForAndroidGettingStarted.pdf

Semasa anda mengedit pfodApp, pesanan ringkas akan dipaparkan dengan lokasi dan nama fail log, mis. /pfodAppRawData/pfod_bluefruit52.txt Fail itu dalam format CSV, dipisahkan koma, dan setelah memindahkannya ke komputer anda (lihat pfodAppForAndroidGettingStarted.pdf untuk pilihan pemindahan), anda boleh membukanya dalam spreadsheet untuk memplot data.

Berikut adalah beberapa baris pertama fail log.

// pfodApp V3.0.360, waktu tempatan, UTC, mS sehari, pfod bluefruit52 waktu semasa (mS), pfod bluefruit52 waktu semasa, // disambungkan pada, 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,, Di atas anda dapat melihat waktu 'tempatan' dan UTC yang dihubungkan oleh pfodApp ke Feather52 dan masa semasa dalam mS yang dilaporkan oleh Feather52 melalui tindak balas {@..}. Lajur terakhir kosong, kerana tidak ada RTC atau GPS dan oleh itu, tidak ada waktu semasa dalam yyyy / MM / dd waktu yang dilaporkan oleh Feather52.

Untuk memplot data dengan masa yang berlalu, tolak masa semasa (mS) dari cap waktu milisaat dan kemudian bahagikan dengan nilai mS sehari. Berikut adalah hamparan dengan formula yang ditambahkan dan hasilnya diplot. Spreadsheet, di bawah, (pfod_bluefruit52.xls) adalah spreadsheet OpenOffice yang disimpan dalam format Excel.

Di OpenOffice, plot adalah sebaran dan paksi-x plot diformat dalam HH: MM: SS Catatan: format tarikh / masa spreadsheet TIDAK sama dengan format plot yang digunakan oleh pfodApp. Contohnya dalam pfodApp, MM adalah bulan dan mm adalah minit.

Untuk merancang tarikh dan waktu, anda hanya perlu menambahkan masa sambungan ke waktu dan penambahan semula spreadsheet. (pfod_bluefruit52_date.xls)

Catatan: Waktu tempatan dan UTC diimport sebagai teks dalam spreadsheet saya, jadi saya perlu mengeluarkan kata kunci 'sebelum menggunakannya dalam formula.

Langkah 8: Cara Mengelakkan Had 49.7 Hari Millis () dan Mengapa Anda Tidak Perlu

Seperti yang disebutkan di atas dalam Bagaimana pfodApp merancang Tarikh / Masa dari milis () ?, jika anda terus berhubung secara berterusan selama lebih dari 49.7 hari cap waktu milisaat akan kembali kembali ke sifar. Beberapa baris kod dapat mengelakkannya tetapi tidak digalakkan.

Pertama bagaimana mengelakkan bungkus. Tambahkan pemboleh ubah int lain yang tidak ditandatangani untuk mengesan berapa kali cap waktu membungkus dan mencetak hasil gabungan dalam HEX.

uint_t mSwrapCount = 0; uint32_t lastTimeStamp = 0;

… Plot_1_var = analogRead (A0); // baca input ke plot // plot_2_var plot Tersembunyi sehingga tidak ada data yang diberikan di sini // plot_3_var plot Tersembunyi sehingga tidak ada data yang diberikan di sini // hantar data plot dalam format CSV uint32_t timeStamp = millis () - plot_mSOffset; if (timeStamp <lastTimeStamp) {// timeStamp dikembalikan ke 0 mSwrapCount ++; // tambah satu untuk dikira} lastTimeStamp = timeStamp; parser.print ("0x"); parser.print (msWrapCount, HEX); parser.print (timeStamp, HEX); // masa dalam milisaat dalam HEX….

Semasa mengembalikan respons {@.., hapus juga mSwrapCount.

// menangani {@} request} yang lain jika ('@' == cmd) {// pfodApp meminta 'current' time plot_mSOffset = millis (); // tangkap millis semasa sebagai cap waktu rawdata mengimbangi mSwrapCount = 0; // bilangan balut yang jelas. parser.print (F ("{@` 0} ")); // kembalikan `0 sebagai 'saat' milidetik data mentah

Cap masa sekarang akan memberikan nilai 'betul' untuk 40.7hari berikutnya * 65536 ~ = 7308 tahun.

pfodApp secara automatik akan menukar cap waktu hex untuk merancang dan mencatatnya tepat seperti yang diterima, iaitu dalam hex. Dalam spreadsheet (OpenOffice) anda menggunakan formula ini untuk menukar rentetan hex, di A2, ke mS (di mana A1 adalah sel kosong) = HEX2DEC (GANTI (A2; 1; 2; A1))

Mengapa anda tidak mahu melakukan ini

Seperti yang ditunjukkan di atas, mudah untuk memanjangkan cap waktu mS hingga lebih dari 50 hari. Walau bagaimanapun, anda mungkin tidak mahu melakukannya kerana mereka semakin tidak tepat. Kristal 16Mhz khas yang digunakan untuk membuat millis () hasil mikro mempunyai ketepatan ~ 50ppm (bahagian per juta). Ini bermakna bahawa selepas 49.7 hari cap waktu milisaat dapat keluar 3 ½ minit dan itu mengabaikan kesan suhu pada ketepatan kristal.

Dalam tempoh sambungan yang pendek, ketepatan ini tidak menjadi masalah kerana respons {@.. menyegerakkan semula cap waktu milisaat dengan tarikh / masa telefon bimbit pada setiap sambungan semula. Walau bagaimanapun, jika anda ingin terus berhubung untuk jangka masa yang panjang (hari) dan terus mencatat data, maka anda harus menggunakan sesuatu yang lebih tepat daripada milis bawaan (), seperti modul RTC atau GPS.

Langkah 9: Menggunakan RTC (Jam Masa Sebenar)

Menggunakan RTC (Jam Masa Nyata)
Menggunakan RTC (Jam Masa Nyata)
Menggunakan RTC (Jam Masa Nyata)
Menggunakan RTC (Jam Masa Nyata)

Terdapat sebilangan modul RTC yang tersedia, salah satu yang lebih tepat adalah DS3231 mis. Modul DS3231 Adafruit. Ketepatan yang dinyatakan ialah +/- 2ppm melebihi 0 hingga 40C. iaitu ~ +/- 5 saat / bulan.

Sekiranya anda ingin memplot data yang mempunyai cap waktu tarikh / waktu, mis. 2019/04/19 20: 4: 34, maka anda perlu mengubah {@ respons untuk mengembalikan tarikh / masa semasa, mis. {@ `0 ~ 2019/4/19 3: 33: 5}. Berikut adalah beberapa contoh perubahan kod untuk diterapkan pada sketsa yang dihasilkan pfodDesigner untuk menggunakan modul RTC, dengan asumsi anda menggunakan perpustakaan RTClib dan telah menambahkan kod yang menginisialisasi modul RTC.

// menangani {@} request} yang lain jika ('@' == cmd) {// pfodApp meminta 'current' time plot_mSOffset = millis (); // tangkap millis semasa sebagai offset rawdata timestamps parser.print (F ("{@` 0 "}); // kembalikan" 0 sebagai 'semasa' data mentah milisaat parser.print ('~'); // rentetan permulaan tarikh / masa DateTime now = rtc.now () sendDateTime (& now); // hantar yyyy / M / d / H: m: s ke parser.print, address pass & as arg. parser.print ('}'); // akhir {@ respons misalnya {@ `0 ~ 2019/4/19 3: 33: 5}….

// hantar waktu tarikh ke penghurai printvoid sendDateTime (DateTime * dt) {parser.print (dt-> tahun (), DEC); parser.print ('/'); parser.print (dt-> bulan (), DEC); parser.print ('/'); parser.print (dt-> hari (), DEC); parser.print (''); parser.print (dt-> jam (), DEC); parser.print (':'); parser.print (dt-> minit (), DEC); parser.print (':'); parser.print (dt-> detik (), DEC); }

batal sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // mulakan semula pemasa data plot, tanpa drift // tetapkan nilai kepada pemboleh ubah plot dari pemboleh ubah gelung anda atau baca input ADC plot_1_var = analogRead (A0); // baca input ke plot // plot_2_var plot Tersembunyi sehingga tidak ada data yang diberikan di sini // plot_3_var plot Tersembunyi sehingga tidak ada data yang diberikan di sini // hantar data plot dalam format CSV DateTime now = rtc.now (); sendDateTime (& sekarang); // hantar yyyy / M / d / H: m: s ke parser.print, alamat pass & as arg. parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // Petak 2 disembunyikan. Tidak ada data yang dihantar. parser.print (','); // Petak 3 disembunyikan. Tidak ada data yang dihantar. parser.println (); // akhir rekod data CSV}}

Bahagian ~ 2019/4/19 3: 33: 5 dari {@ respons membolehkan pfodApp mengetahui apa yang difikirkan oleh pfodDevice adalah tarikh dan masa semasa. Lakaran anda kemudian dapat mengirim data dengan cap waktu yMd Hms dan pfodApp akan memplotnya sama ada sebagai masa berlalu dari waktu sambungan ATAU seperti tarikh dan waktu, bergantung pada format paksi-X yang anda tentukan.

Ketika merancang tarikh dan waktu, rutin plot pfodApp memperbetulkan 'drift' dalam RTC dengan membandingkan masa yang dilaporkan pfodDevice dengan waktu semasa telefon bimbit. Pembetulan ini juga menangani RTC yang ditetapkan ke zon waktu yang berbeza dari zon waktu tempatan telefon bimbit anda. cap masa milis () terus berfungsi seperti dalam Menggunakan cap waktu milisaat Arduino, Langkah 5 di atas.

Berikut adalah contoh spreadsheet suhu bilik selama 8 hari, Office_Temp.xls Apabila fail log diimport lajur pertama ditandakan sebagai YMD untuk menukar teks menjadi tarikh / waktu. Anda masih perlu mengeluarkan borang utama dari entri waktu tempatan, UTC, dan Temp Tempa semasa agar hamparan menafsirkannya sebagai tarikh dan waktu.

Untuk mendapatkan plot yang sama seperti yang ditunjukkan oleh pfodApp, anda perlu mengira "Tarikh / Masa yang Dibetulkan". Dalam hal ini waktu RTC 2 detik di belakang waktu tempatan telefon bimbit, jadi untuk setiap cap waktu RTC ditambahkan (waktu tempatan - waktu Kantor semasa) untuk mendapatkan waktu lokal yang sebenarnya.

Untuk plot masa yang berlalu, buat lajur baru yang mengandungi (cap waktu tarikh / masa - waktu semasa Waktu Pejabat) dan gunakan sebagai paksi-X dalam carta (Office_TempElapsed.xls) Sebenarnya dalam kes ini, pfodApp menghasilkan carta masa yang berlalu lebih baik dalam hari hr: min: saat.

Langkah 10: Menggunakan Modul GPS

Menggunakan modul GPS serupa dengan menggunakan modul RTC, kecuali modul GPS mempunyai milisaat yang tersedia, tahun bermula pada tahun 2000 dan masa tiada detik lompatan UTC (lihat https://tycho.usno.navy.mil/leapsec.html) Tarikh dan waktu GPS kini 18 saat lebih awal daripada UTC, pada Januari 2018.

Perpustakaan Adafruit GPS untuk Adafruit Ultimate GPS, tidak seperti RTClib, tidak menambah pengimbangan 2000 tahun ke tahun GPS, jadi perlu ditambah ketika anda menghantar tarikh dan tarikh waktu. Walaupun perpustakaan GPS membekalkan milisaat yang mempunyai ketepatan jangka panjang yang sangat baik, ia tidak begitu tepat. Kemas kini masa GPS hanya sekali setiap 100mS dan kemudian terdapat kelewatan tambahan untuk menerima data bersiri pada 9600 baud yang perlahan dan kelewatan lain dalam menguraikannya. Kesemuanya menambah ketepatan milisaat ketika pembacaan data cap masa.

Berikut adalah beberapa contoh perubahan kode untuk diterapkan pada sketsa yang dihasilkan pfodDesigner untuk menggunakan modul GPS, dengan asumsi Anda menggunakan perpustakaan GPS Adafruit dan telah menambahkan kod untuk menerima dan mengurai mesej ke dalam objek GPS.

// menangani {@} request} yang lain jika ('@' == cmd) {// pfodApp meminta 'current' time plot_mSOffset = millis (); // tangkap millis semasa sebagai offset rawdata timestamps parser.print (F ("{@` 0 "}); // kembalikan" 0 sebagai 'semasa' data mentah milisaat parser.print ('~'); // rentetan permulaan tarikh / masa sendDateTime (& GPS); // hantar yyyy / M / d / H: m: s ke parser.print, address pass & as arg. parser.print ('}'); // akhir {@ respons mis. {@ `0 ~ 2019/4/19 3: 33: 5}….

// hantar tarikh tarikh ke pengurai printvoid sendDateTime (Adafruit_GPS * gps) {parser.print (F ("20"); // 20.. tahun parser.print (gps-> tahun, DEC); parser.print ('/ '); parser.print (gps-> bulan, DEC); parser.print (' / '); parser.print (gps-> day, DEC); parser.print (' '); parser.print (gps- > jam, DEC); parser.print (':'); parser.print (gps-> minute, DEC); parser.print (':'); parser.print (gps-> second, DEC); // parser.print ('.'); jika menghantar milisaat // jika anda mahu menghantar mS, anda perlu memasukkan nilai gps-> milisaat dengan angka nol terkemuka // iaitu 3 perlu dimasukkan ke 003}

batal sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // mulakan semula pemasa data plot, tanpa drift // tetapkan nilai kepada pemboleh ubah plot dari pemboleh ubah gelung anda atau baca input ADC plot_1_var = analogRead (A0); // baca input ke plot // plot_2_var plot Tersembunyi sehingga tidak ada data yang diberikan di sini // plot_3_var plot Tersembunyi sehingga tidak ada data yang diberikan di sini // hantar data plot dalam format CSV sendDateTime (& GPS); // hantar yyyy / M / d / H: m: s ke parser.print, alamat pass & as arg. parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // Petak 2 disembunyikan. Tidak ada data yang dihantar. parser.print (','); // Petak 3 disembunyikan. Tidak ada data yang dihantar. parser.println (); // akhir rekod data CSV}}

Semasa merancang tarikh dan waktu, pfodApp secara automatik membetulkan detik lompatan. Pada Jan 2018, waktu GPS adalah 18 saat lebih awal daripada UTC. pfodApp memperbaikinya dengan membandingkan tarikh / masa yang dikembalikan oleh GPS pada sambungan, melalui {@ respons, dengan tarikh dan waktu UTC telefon bimbit. Membuat plot dalam hamparan dari fail log pfodApp adalah sama seperti untuk modul RTC, di atas. Menambah (waktu tempatan - waktu semasa Office Temp) ke cap waktu GPS membetulkan detik lompatan.

cap masa milis () terus berfungsi seperti dalam Menggunakan cap waktu milisaat Arduino, Langkah 5 di atas.

Langkah 11: Kesimpulannya

Menggunakan pfodApp pada telefon bimbit Android anda memungkinkan anda memplot data berdasarkan tanggal dan waktu atau waktu yang berlalu, hanya menggunakan fungsi Arduino's millis (). Dengan menggunakan fail log pfodApp, anda dapat menghasilkan semula plot tarikh / masa ini dalam hamparan. Sekiranya projek Arduino anda mempunyai modul RTC, anda boleh log dan merancang tarikh dan cap waktu waktu RTC, secara automatik membetulkan 'drift' RTC. Sekiranya projek Arduino anda mempunyai modul GPS, anda boleh log dan merancang cap masa yang sangat tepat dan pfodApp secara automatik akan memperbaiki detik lompatan GPS yang hilang.

Dalam semua kes, data mentah dari projek Arduino anda dicatat tepat seperti yang diterima, tidak diperbetulkan. Walau bagaimanapun, fail log pfodApp merangkumi data tambahan untuk membolehkan anda menghasilkan semula pembetulan ini dalam hamparan dari fail log yang dimuat turun.

Tidak memerlukan pengekodan Android. Format plot semuanya ditentukan oleh rentetan teks kecil dalam lakaran Arduino anda. PfodDesigner percuma menghasilkan log data Arduino lengkap dan membuat lakaran untuk pelbagai papan Arduino yang menghubungkan melalui WiFi, Bluetooth Klasik, BLE dan SMS

Disyorkan: