Sisällysluettelo:

Arduino -päivämäärän/-ajan piirtäminen/kirjaaminen Millisin () ja PfodAppin avulla: 11 vaihetta
Arduino -päivämäärän/-ajan piirtäminen/kirjaaminen Millisin () ja PfodAppin avulla: 11 vaihetta

Video: Arduino -päivämäärän/-ajan piirtäminen/kirjaaminen Millisin () ja PfodAppin avulla: 11 vaihetta

Video: Arduino -päivämäärän/-ajan piirtäminen/kirjaaminen Millisin () ja PfodAppin avulla: 11 vaihetta
Video: Использование карты Micro SD и регистрация данных с Arduino | Пошаговый курс Arduino, урок 106 2024, Heinäkuu
Anonim
Arduinon päivämäärän/kellonajan piirtäminen/kirjaaminen Millisin () ja PfodAppin avulla
Arduinon päivämäärän/kellonajan piirtäminen/kirjaaminen Millisin () ja PfodAppin avulla

Arduino- tai Android -ohjelmointia ei tarvita, myös RTC- ja GPS -moduuleja tuetaan

Johdanto

Tämä opetusohjelma näyttää, kuinka voit käyttää Arduino millis () -leimaasi datan piirtämiseen päivämäärän ja kellonajan mukaan Android -matkapuhelimellasi pfodApp -sovelluksella.

Arduino- tai Android -ohjelmointia ei tarvita. pfodApp kirjaa myös riittävästi tietoja, jotta voit myöhemmin toistaa päivämäärä- ja aikakaaviot laskentataulukossa.

Ei RTC- tai GPS -moduulia, mutta jos Arduino -projektissasi on RTC (Real Time Clock) tai GPS -moduuli, niitä voidaan myös käyttää. Näissä tapauksissa pfodApp -käyrät korjaavat automaattisesti aikavyöhykkeen, RTC -siirtymän ja GPS: n puuttuvat harppaukset. Näitä korjauksia varten ei tarvita erityistä Arduino -koodia. Kuten aina pfodAppissa, vastaanotetut tiedot kirjataan täsmälleen sellaisinaan, korjaamatta, mutta lokitiedosto sisältää myös riittävästi tietoja, jotta voit tehdä nämä korjaukset itse, kun lataat lokit tietokoneellesi. Alla on esimerkkejä tästä jälkikäsittelystä.

Tuetaan monenlaisia ajan ja päivämäärän X-akselin muotoiluja, joita kaikkia ohjataan täysin Arduino-luonnoksesi lyhyillä tekstimerkkijonoilla. Android -ohjelmointia ei tarvita.

pfodApp muodostaa yhteyden WiFi: n, Bluetooth Classicin, BLE: n ja tekstiviestien kautta. Ilmainen pfodDesigner luo täydelliset Arduino -luonnokset päivämäärän/kellonajan piirtämistä/kirjaamista varten ja muodostaa yhteyden moniin erilaisiin levyihin. Arduino -ohjelmointia ei tarvita.

Tässä ohjeessa käytetään Adafruit Feather52: ta esimerkkinä Arduino -korttina, joka yhdistää BLE: n kautta.

Tämä opas kattaa kolme tapausta:- 1) mikroprosessoriprojektillasi on vain millisekunnin aikaleimat- millis () 2) mikroprosessoriprojektillasi on reaaliaikainen kello (RTC)- pfodApp korjaa automaattisesti ajon. 3) Mikroprosessoriprojektissasi on GPS -moduuli - pfodApp korjaa automaattisesti karkaus sekuntit niiden ilmetessä (tällä hetkellä 18 sekuntia vuonna 2018).

Vaihe 1: Arduinon millisekunnin aikaleimojen käyttäminen, Millis ()

Millisekuntien päivämäärän ja kellonajan käyttäminen koostuu kahdesta osasta. Toinen on tietojen piirtäminen joko kuluneen ajan tai päivämäärän/ajan mukaan, ja toinen osa luo päivämäärän ja ajan uudelleen kirjatuista raakatietojen millisekunnin aikaleimoista. pfodApp ei muuta pfodDevice -laitteesta (Arduino micro) vastaanotettua raakatietoa. Se vain kirjaa täsmälleen vastaanotetut tavut.

Käytä ensin ilmaista pfodDesigneria luodaksesi Arduino -luonnoksen mikroillesi, joka lähettää millisekunnit ja datamittaukset pfodAppille piirtämistä/kirjaamista varten. Tämä esimerkki luo valikon Adafruit Feather 52 BLE -levylle, jossa lukee A0. Opetusohjelma Adafruit Feather nRF52 LE - mukautetut säätimet pfodApp -ohjelmalla käy läpi pfodDesigner -vaiheet luodakseen Feather nRF52 -valikon valikon, joka sisältää kaavion painikkeen, joten tarkista se saadaksesi lisätietoja. Tässä opetusohjelmassa lisäämme vain kaavion painikkeen ja käytämme uusia X-akselin muotoiluvaihtoehtoja A0-lukemien piirtämiseen kuluneen ajan ja päivämäärän/ajan mukaan.

Tämän opetusohjelman ensimmäinen osa suoritetaan ilmaisen pfodDesigner -ohjelman avulla luomaan esimerkkipäivämäärä- ja aikakaavion Android -mobiililaitteellesi. Kun olet tyytyväinen näyttöön, voit luoda Arduinon luonnoksen, joka toistaa sen, kun muodostat yhteyden pfodAppiin. Android -ohjelmointia ei tarvita, ja koska pfodDesigner luo täydelliset Arduino -luonnokset monenlaisille Arduino -levyille, Arduino -ohjelmointia ei myöskään tarvita.

Vaihe 2: Kaavion lisääminen valikkoon

Kaavion lisääminen valikkoon
Kaavion lisääminen valikkoon
Kaavion lisääminen valikkoon
Kaavion lisääminen valikkoon
Kaavion lisääminen valikkoon
Kaavion lisääminen valikkoon
Kaavion lisääminen valikkoon
Kaavion lisääminen valikkoon

Lataa pfodDesigner -sovellus Google Playsta, avaa se ja napsauta "Aloita uusi valikko"

Napsauta "Target Serial" ja sitten "Bluetooth Low Energy" -painiketta näyttääksesi luettelon noin 11 BLE -levystä (vieritä alas nähdäksesi muut vaihtoehdot). Valitse Adafruit Bluefruit Feather52.

Palaa Editointi -valikkoon ja napsauta "Muokkaa kehotetta" ja aseta sopiva kehote tälle valikolle, esim. "Feather52" ja teksti lihavoitu ja koko +7. Taustaväri jätettiin oletusarvoiseksi valkoiseksi

Palaa takaisin ja napsauta "Lisää valikkokohta", vieritä alas ja valitse "Karttapainike", joka avaa kaavion painikkeen muokkausnäytön. Voit muuttaa painikkeen ulkonäköä täällä. Tässä tapauksessa painikkeen tekstiksi muutettiin “Date/Time plot of A0” ja muut oletusasetukset jätettiin ennalleen.

Tämä antaa sinulle painikkeen valikossa, joka avaa kaavionäytön.

Vaihe 3: Kaavion lähteen ja tarrojen muokkaaminen

Kaavion lähteen ja tarrojen muokkaaminen
Kaavion lähteen ja tarrojen muokkaaminen
Kaavion lähteen ja tarrojen muokkaaminen
Kaavion lähteen ja tarrojen muokkaaminen
Kaavion lähteen ja tarrojen muokkaaminen
Kaavion lähteen ja tarrojen muokkaaminen
Kaavion lähteen ja tarrojen muokkaaminen
Kaavion lähteen ja tarrojen muokkaaminen

Napsauta”A0-päivämäärä/kellonaika” -painiketta avataksesi Editointipiirrokset-näytön, josta pääset kaavion otsikkoon, X-akselin muotoon, kuvaajan dataväliin ja (vierittämällä alaspäin) itse kaavioasetuksiin. Muokkaa kaavion otsikkoa sopivaksi, esim. "A0 volttia".

Vieritä alas ja tontit 2 ja 3 avaa Muokkaa kuvaajaa ja poista ne kaavionäkymästä napsauttamalla Piilota kuvaaja.

Napsauta sitten "Muokkaa käyrää 1" ja aseta kuvaajan etiketti (esim. A0), yAkseliyksiköt (esim. Volttia), näyttö enintään 3,6 V ja yhdistä I/O -nastaan A0.

Vieritä ylöspäin ja napsauta "Kaavion esikatselu", niin näet viimeisimmät 0 näytetietopistettä 1 sekunnin välein, jotka on piirretty kuluneeseen minuuttiin: sekuntiin.

Kaikkien kuluneiden aikojen käyrät, jotka osoittavat nollayksiköitä, eivät näy, joten tässä kaaviossa vain ne ajat, jotka ovat> 1 min, näyttävät alkaminuutit.

Vaihe 4: Päivämäärän/kellonajan muodon valitseminen

Päivämäärän/kellonajan muodon valitseminen
Päivämäärän/kellonajan muodon valitseminen
Päivämäärän/kellonajan muodon valitseminen
Päivämäärän/kellonajan muodon valitseminen
Päivämäärän/kellonajan muodon valitseminen
Päivämäärän/kellonajan muodon valitseminen

Kuluneen ajan käyrien osalta johtava yksikkö vain kasvaa ajan myötä. Jos haluat nähdä esimerkin tästä, palaa "Kaavioiden muokkaaminen" -näyttöön ja lisää piirtotietojen aikaväli 15 minuuttiin (tämän näytön alareuna)

Napsauta sitten kaavion esikatselua näyttääksesi samat näytetiedot, mutta nyt 15 minuutin välein näytteiden välillä. Kuten näette minuuttiosa mm: ss kasvaa vain.

Palaa nyt ja napsauta X-akseli -painiketta näyttääksesi pienen valikoiman kaikkia mahdollisia X-akselin data-/aikamuotoja (selaa alaspäin nähdäksesi lisää)

Yllä on valikoima kaavion esikatseluja eri X-akselin muodoissa.

Tässä näkyvät päivämäärän ja kellonajan kuvaajat ovat paikallisessa aikavyöhykkeessä. Päivämäärän ja kellonajan piirtämiseen UTC -muodossa on myös muotoasetuksia. Täydelliset päivämäärän ja kellonajan muotoiluvaihtoehdot ovat osoitteessa pfodSpecification.pfd.

Vaihe 5: Luo ja testaa Arduino -luonnos

Luo ja testaa Arduino -luonnos
Luo ja testaa Arduino -luonnos
Luo ja testaa Arduino -luonnos
Luo ja testaa Arduino -luonnos

Kun olet tyytyväinen kaavion muotoon ja tietoväleihin, voit siirtyä”Muokkausvalikko_1” -näyttöön ja vierittää alaspäin ja”Luo koodi” valitsemallesi kohdetaululle. Tässä on esimerkkiluonnos Adafruit Feather52: sta käyttäen 1 sekunnin aikavälejä ja mm: s: n kuluneen ajan muoto, pfodFeather52_timeplot.ino

Yllä on tontti A0 Feather52: sta

Muuttamalla muotoksi viikonpäivä hr: mins: sec (~ E HH: mm: ss) ja muodostamalla koodi uudelleen (pfodFeather52_dateplot.ino) antaa kaavion, kuten toinen yllä.

Voit muokata X-akselin muotoa suoraan Arduino-luonnoksessasi seuraavassa kuvatulla tavalla.

Vaihe 6: Miten PfodApp piirtää päivämäärän/ajan Millis (): sta?

Kun pfodApp muodostaa yhteyden, se muistaa paikallisen ja UTC -aikansa ja pyytää pfodDevice -laitteen (Arduino -kortin) nykyisiä juonitietojen aikaleimoja. Näiden tietojen avulla pfodApp voi sitten piirtää millisekunnin aikaleimat joko kuluneeksi ajaksi eli muuntaa millisekuntituntia minuutteina sekunteiksi jne. Tai piirtää päivämäärän ja ajan, jonka millisekunnin aikaleimat edustavat suhteessa yhteyden muodostamiseen ja pfodDevice -laitteen nykyiseen aikaan.

Tarkasteltaessa Arduinon luomaa luonnosta (esim. PfodFeather52_dateplot.ino) on kolme pientä koodibittiä, jotka käsittelevät juonien Arduinon puolta.

Silmukka () -koodi -osa, joka käsittelee pfodAppin {@} nykyisen aikapyynnön

// käsitellä {@} request} else if ('@' == cmd) {// pfodApp pyysi 'current' time plot_mSOffset = millis (); // kaapata nykyiset millimetrit offset -raakatietojen aikaleimojen parser.print (F ("{@` 0} ")); // palauta `0 'nykyisenä' raakadatana millisekunteina

Voisit vain palauttaa nykyisen arvon millis (), mutta millis () kääntyy takaisin 0: een 49,7 päivän välein, mikä saisi juonen hypätä taaksepäin. Joten koodi muistaa sen sijaan nykyisen millis () -arvon, kun {@} pyyntö tehtiin, ja palauttaa {@`0} eli nykyisen millisekunnin aikaleiman nolla. Sitten luonnos käyttää raakadatapisteitä lähetettäessä

plot_1_var = analoginenLue (A0); // lukea syötettä kuvaajalle // plot_2_var-käyrä Piilotettu, joten tietoja ei ole määritetty tänne // plot_3_var-käyrä Piilotettu, joten tietoja ei ole määritetty tänne // lähetä kuvaajatiedot CSV-muodossa jäsennin.print (millis ()-plot_mSOffset); // aika millisekunteina ….

niin, että tietojen kanssa lähetetty millisekunnin aikaleima alkaa nollasta ja kasvaa 49,7 päivään. Jos pysyt jatkuvasti yhteydessä 49,7 päivän ajan, näet juoni hypätä taaksepäin ~ 50 päivää. Yhteyden katkaiseminen ja uudelleen yhdistäminen kerran 49,7 päivän välein välttää tämän.

Päivämäärä/aika -kaavion kolmas osa on juoniviesti.

} else if ('A' == cmd) {// käyttäjä painettu - 'Date/Time plot of A0' // // Menu_1 -päävalikossa // // palaa piirtoviesti. parser.print (F ("{= A0 volttia ~ E HH: mm: ss | päivämäärä | A0 ~~~ volttia ||}"));

Kun käyttäjä painaa”A0 -päivämäärä/aikakaavio” -painiketta, pfodApp lähettää {A} cmd: n pfodDevice -laitteelle ja pfodDevice vastaa kaaviosanomalla, {=… {= A0 volttia ~ E HH: mm: ss | date | A0 ~~~ Volttia ||}, joka sisältää X-akselin muodon E HH: mm: ss

Java SimpleDateFormat -muodot ovat tässä hyväksyttäviä. pfodApp Data Logging and Plotting ja pfodSpecification.pdf sisältävät lisätietoja kaaviosanomasta.

Vaihe 7: Päivämäärän/kellonajan tulostus tietokoneellasi

Päivämäärän/kellonajan toisto tietokoneessa
Päivämäärän/kellonajan toisto tietokoneessa
Päivämäärän/kellonajan toisto tietokoneessa
Päivämäärän/kellonajan toisto tietokoneessa
Päivämäärän/kellonajan toisto tietokoneessa
Päivämäärän/kellonajan toisto tietokoneessa

Oletuksena pfodApp kirjaa kaikki saapuvat raakatiedot mobiilitiedostosi lokitiedostoon, ellet ole poistanut tätä kirjausta käytöstä yhteyden muokkausnäytössä, katso pfodAppForAndroidGettingStarted.pdf

Kun muokkaat pfodAppia, näyttöön tulee lyhyt viesti, jossa on lokitiedoston sijainti ja nimi, esim. /pfodAppRawData/pfod_bluefruit52.

Tässä on lokitiedoston ensimmäiset rivit.

// pfodApp V3.0.360, paikallinen aika, UTC, mS päivässä, pfod bluefruit52 nykyinen aika (mS), pfod bluefruit52 nykyinen aika, // yhdistetty, 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,, Yllä näet 'paikallisen' ja UTC -ajan, jonka pfodApp on yhdistänyt Feather52: een, ja senhetkisen kellonajan mS: ssä, jonka Feather52 ilmoitti {@..} -vastauksen kautta. Viimeinen sarake on tyhjä, koska RTC: tä tai GPS: ää ei ole, joten Feather52 ei ilmoittanut nykyistä aikaa vvvv/kk/pp.

Jos haluat piirtää tiedot kuluneen ajan suhteen, vähennä nykyinen aika (mS) millisekunnin aikaleimasta ja jaa sitten mS / päivä -arvolla. Tässä on laskentataulukko, johon on lisätty kaava ja tulos piirretty. Alla oleva laskentataulukko (pfod_bluefruit52.xls) on Excel -muodossa tallennettu OpenOffice -laskentataulukko.

OpenOffice-sovelluksessa kuvaaja on sirontakaavio ja kaavion x-akseli on muotoiltu HH: MM: SS Huomautus: laskentataulukon päivämäärä/aika-muodot EIVÄT ole samat kuin pfodAppin käyttämät plot-muodot. Esimerkiksi pfodAppissa MM on kuukausia ja mm minuutteja.

Jos haluat piirtää päivämäärän ja kellonajan mukaan, sinun on vain lisättävä yhteysaika laskentataulukon aikaan ja tehtävä uudelleen. (pfod_bluefruit52_date.xls)

Huomautus: Paikallinen aika ja UTC tuotiin laskentataulukkoni tekstinä, joten jouduin poistamaan alkuosan ennen kuin käytin niitä kaavassa.

Vaihe 8: Kuinka välttää 49,7 päivän millimetri () raja ja miksi sinun ei pitäisi

Kuten edellä mainittiin Miten pfodApp piirtää päivämäärän/kellonajan millisekunteista ()?, Jos pysyt jatkuvasti yhteydessä yli 49,7 päivän ajan, millisekuntien aikaleimat kiertyvät takaisin nollaan. Muutama koodirivi voi välttää tämän, mutta sitä ei suositella.

Ensin miten välttää kietoutumista. Lisää toinen allekirjoittamaton int -muuttuja seurataksesi kuinka monta kertaa aikaleimat kiertyvät ja tulosta yhdistetty tulos HEX -muodossa.

uint_t mSwrapCount = 0; uint32_t lastTimeStamp = 0;

… Plot_1_var = analoginenLue (A0); // lukea syötettä kuvaajalle // plot_2_var-käyrä Piilotettu, joten tietoja ei ole määritetty tänne // plot_3_var-käyrä Piilotettu, joten tietoja ei ole määritetty tänne // lähettää tontitiedot CSV-muodossa uint32_t timeStamp = millis ()-plot_mSOffset; if (timeStamp <lastTimeStamp) {// timeStamp kääritty takaisin arvoon 0 mSwrapCount ++; // lisää yksi laskuun} lastTimeStamp = timeStamp; parser.print ("0x"); parser.print (msWrapCount, HEX); parser.print (timeStamp, HEX); // aika millisekunteina HEX….

Kun palautat {@.. -vastauksen, tyhjennä myös mSwrapCount.

// käsitellä {@} pyyntö} else if ('@' == cmd) {// pfodApp pyysi 'current' time plot_mSOffset = millis (); // kaapata nykyiset millimetrit offset -raakatietojen aikaleimoiksi mSwrapCount = 0; // selkeä kääreiden määrä. parser.print (F ("{@` 0} ")); // palauta `0 'nykyisenä' raakadatana millisekunteina

Aikaleimat antavat nyt oikean arvon seuraaville 40,7 päivälle * 65536 ~ = 7308 vuotta.

pfodApp muuntaa automaattisesti piirtämisen heksadesimaalileimat ja kirjaa ne täsmälleen sellaisina kuin ne on vastaanotettu eli heksadesimaaleina. (OpenOffice) -laskentataulukossa käytät tätä kaavaa muuntaaksesi heksadesimaalijonon A2: ssa mS: ksi (jossa A1 on mikä tahansa tyhjä solu) = HEX2DEC (VAIHDA (A2; 1; 2; A1))

Miksi et halua tehdä tätä

Kuten yllä on esitetty, mS -aikaleimoja on helppo pidentää yli 50 päivään. Et kuitenkaan luultavasti halua tehdä sitä, koska ne ovat yhä epätarkempia. Tyypillisen 16 MHz: n kiteen, jota käytetään millis () -tulosten luomiseen, on mikrotarkkuus ~ 50 ppm (miljoonasosaa). Tämä tarkoittaa, että 49,7 päivän kuluttua millisekunnin aikaleima voi olla poissa 3½ minuuttia ja se jättää huomiotta lämpötilan vaikutuksen kiteen tarkkuuteen.

Lyhyiden yhteysjaksojen aikana tämä epätarkkuus ei ole ongelma, koska {@..-vastaus synkronoi uudelleen millisekunnin aikaleiman matkapuhelimen päivämäärän/ajan kanssa jokaisen uudelleenyhteyden yhteydessä. Jos kuitenkin haluat pysyä yhteydessä pitkiä aikoja (päiviä) ja kirjata tietoja jatkuvasti, käytä jotain tarkempaa kuin sisäänrakennettu millisekunti (), kuten RTC- tai GPS-moduulia.

Vaihe 9: Reaaliaikaisen kellon (RTC) käyttäminen

Reaaliaikaisen kellon (RTC) käyttäminen
Reaaliaikaisen kellon (RTC) käyttäminen
Reaaliaikaisen kellon (RTC) käyttäminen
Reaaliaikaisen kellon (RTC) käyttäminen

Saatavilla on useita RTC -moduuleja, yksi tarkimmista on DS3231, esim. Adafruitin DS3231 -moduuli. Ilmoitettu tarkkuus on +/- 2 ppm 0-40 ° C: n lämpötilassa. eli ~ +/- 5 sek/kk.

Jos haluat piirtää tietoja, joissa on päivämäärän/kellonajan aikaleimat, esim. 2019/04/19 20: 4: 34, sinun on muokattava {@ -vastausta palauttaaksesi nykyisen päivämäärän/ajan, esim. {@`0 ~ 2019/4/19 3: 33: 5}. Tässä on joitain esimerkkikoodimuutoksia, joita sovelletaan pfodDesignerin luomaan luonnokseen RTC -moduulin käyttämiseksi, olettaen, että käytät RTClib -kirjastoa ja olet lisännyt koodin RTC -moduulin alustamiseen.

// käsitellä {@} pyyntö} else if ('@' == cmd) {// pfodApp pyysi 'current' time plot_mSOffset = millis (); // kaapata nykyiset millimetrit offset -raakatietojen aikaleimoiksi parser.print (F ("{@` 0 "}); // palauttaa` 0 'nykyisenä' raakadatana millisekuntia parser.print ('~'); // aloitusjono date/time DateTime now = rtc.now () sendDateTime (& now); // lähetä yyyy/M/d/H: m: s jäsentäjälle.print, välitä osoite & kuten arg. parser.print ('}'); // {@ vastauksen loppu esim. {@ `0 ~ 2019/4/19 3: 33: 5}….

// lähetä päivämäärä ja aika jäsentimelle printvoid sendDateTime (DateTime* dt) {parser.print (dt-> vuosi (), DEC); parser.print ('/'); parser.print (dt-> kuukausi (), DEC); parser.print ('/'); parser.print (dt-> päivä (), DEC); parser.print (''); parser.print (dt-> tunti (), DEC); parser.print (':'); parser.print (dt-> minuutti (), DEC); parser.print (':'); parser.print (dt-> toinen (), DEC); }

void sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // käynnistä uudelleen piirtotietojen ajastin ilman ajautumista // määritä arvot piirrosmuuttujille piirimuuttujistasi tai lue ADC -tulot plot_1_var = analogRead (A0); // lukea syötettä kuvaajalle // plot_2_var -käyrä Piilotettu, joten tietoja ei ole määritetty tänne // plot_3_var -käyrä Piilotettu, joten tietoja ei ole määritetty tänne // lähetä piirtotiedot CSV -muodossa DateTime now = rtc.now (); sendDateTime (& nyt); // lähetä yyyy/M/d/H: m: s jäsentäjälle. print, pass address & as arg. parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // Tontti 2 on piilotettu. Tietoja ei lähetetty. parser.print (','); // Tontti 3 on piilotettu. Tietoja ei lähetetty. parser.println (); // CSV -tietueen loppu}}

~ 2019/4/19 3: 33: 5 osa {@ vastauksesta kertoo pfodAppille, mikä pfodDevice mielestä on nykyinen päivämäärä ja kellonaika. Luonnoksesi voi sitten lähettää tietoja yMd Hms -aikaleimoilla, ja pfodApp piirtää ne joko kuluneena ajankohtana yhteysajankohdasta TAI päivämääränä ja kellonaikana, riippuen määrittämästäsi X-akselin muodosta.

Kun piirtää päivämäärää ja kellonaikaa vastaan, pfodApp -kuvaajarutiini korjaa RTC: n mahdollisen "ajelehtimisen" vertaamalla pfodDevice -laitteen raportoitua kellonaikaa matkapuhelimen nykyiseen aikaan. Tämä korjaus käsittelee myös RTC: n asettamisen eri aikavyöhykkeeseen kuin matkapuhelimesi paikallinen aikavyöhyke. millis () aikaleimat toimivat edelleen kuten Arduinon millisekunnin aikaleimojen käyttämisessä, vaihe 5 yllä.

Tässä on esimerkki laskentataulukosta huoneenlämpötiloista kahdeksan päivän aikana, Office_Temp.xls Kun lokitiedosto tuotiin, ensimmäinen sarake merkittiin YMD -muotoon tekstin muuntamiseksi päivämäärään/aikaan. Sinun on vielä poistettava johtava 'lomake paikallisen ajan, UTC- ja Office Temp -hetken aikamerkinnät, jotta laskentataulukko tulkitsee ne päivämääriksi ja kellonaikoiksi.

Jos haluat saada saman kaavion, jonka pfodApp näyttää, sinun on laskettava "Korjattu päivämäärä/aika". Tässä tapauksessa RTC -aika on 2 sekuntia jäljessä matkapuhelimen paikallisesta ajasta, joten jokaiseen RTC -aikaleimaan lisätään (paikallinen aika - Office Temp -aika), jotta saadaan oikea paikallinen aika.

Luo kuluneen ajan käyrille uusi sarake, joka sisältää (päivämäärä/aika-aikaleiman-Office-ajan nykyisen ajan), ja käytä sitä kaavion X-akselina (Office_TempElapsed.xls) Itse asiassa tässä tapauksessa pfodApp tuottaa mukavammat kuluneen ajan kaaviot päivinä hr: mins: sec.

Vaihe 10: GPS -moduulin käyttö

GPS -moduulin käyttäminen on samanlaista kuin RTC -moduulin käyttö, paitsi että GPS -moduuleilla on käytettävissä millisekunteja, vuodet alkavat vuodesta 2000 ja kellonaika puuttuu UTC -harppauksista (katso https://tycho.usno.navy.mil/leapsec.html) GPS -päivämäärä ja -aika on tällä hetkellä 18 sekuntia ennen UTC -aikaa tammikuussa 2018.

Adafruit Ultimate GPS: n Adafruit -GPS -kirjasto, toisin kuin RTClib, ei lisää 2000 vuoden siirtymää GPS -vuosiin, joten se on lisättävä, kun lähetät päivämäärän ja kellonajan. Vaikka GPS -kirjasto toimittaa millisekunteja, joilla on erittäin hyvä pitkän aikavälin tarkkuus, ne eivät ole kovin tarkkoja. GPS -ajan päivitykset tapahtuvat vain kerran 100 ms: n välein, ja sitten sarjatietojen vastaanottaminen hitaalla 9600 baudilla on ylimääräisellä viiveellä ja toinen jäsennysviive. Kaikki tämä lisää millisekunnin tarkkuutta, kun datalukemat ajastetaan.

Seuraavassa on muutamia esimerkkikoodimuutoksia, joita sovelletaan pfodDesignerin luomaan luonnokseen GPS -moduulin käyttämiseksi, olettaen, että käytät Adafruitin GPS -kirjastoa ja olet lisännyt koodin viestien vastaanottamiseksi ja jäsentämiseksi GPS -objektiin.

// käsitellä {@} pyyntö} else if ('@' == cmd) {// pfodApp pyysi 'current' time plot_mSOffset = millis (); // kaapata nykyiset millimetrit offset -raakatietojen aikaleimoiksi parser.print (F ("{@` 0 "}); // palauttaa` 0 'nykyisenä' raakadatana millisekuntia parser.print ('~'); // aloitusjono date/time sendDateTime (& GPS); // lähetä yyyy/M/d/H: m: s jäsentäjälle. print, pass address & as arg. parser.print ('}'); // lopussa {@ vastaus esim. {@`0 ~ 2019/4/19 3: 33: 5}….

// lähetä päivämäärä ja aika jäsentimelle printvoid sendDateTime (Adafruit_GPS* gps) {parser.print (F ("20"); // 20.. year parser.print (gps-> year, DEC); parser.print ('/ '); parser.print (gps-> kuukausi, DEC); parser.print ('/'); parser.print (gps-> päivä, DEC); parser.print (' '); parser.print (gps- > tunti, DEC); parser.print (':'); parser.print (gps-> minute, DEC); parser.print (':'); parser.print (gps-> second, DEC); // parser.print ('.'); jos lähetät millisekuntia // jos haluat lähettää mS: n, sinun on kirjoitettava gps-> millisekuntiarvo etunollilla // eli 3 on täytettävä 003}

void sendData () {if (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // käynnistä uudelleen piirtotietojen ajastin ilman ajautumista // määritä arvot piirrosmuuttujille piirimuuttujistasi tai lue ADC -tulot plot_1_var = analogRead (A0); // lukea syötettä kuvaajalle // plot_2_var -käyrä Piilotettu, joten tietoja ei ole määritetty tänne // plot_3_var -käyrä Piilotettu, joten tietoja ei ole määritetty tänne // lähetä kuvaajatiedot CSV -muodossa sendDateTime (& GPS); // lähetä yyyy/M/d/H: m: s jäsentäjälle. print, pass address & as arg. parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // Tontti 2 on piilotettu. Tietoja ei lähetetty. parser.print (','); // Tontti 3 on piilotettu. Tietoja ei lähetetty. parser.println (); // CSV -tietueen loppu}}

Kun piirtää päivämäärää ja aikaa vastaan, pfodApp korjaa automaattisesti harppaus sekuntia. Tammikuussa 2018 GPS -aika on 18 sekuntia ennen UTC -aikaa. pfodApp korjaa tämän vertaamalla GPS -yhteyden palauttamaa päivämäärää/aikaa {@ -vastauksen kautta matkapuhelimen UTC -päivämäärään ja -aikaan. Kaavioiden luominen laskentataulukkoon pfodApp -lokitiedostosta on sama kuin yllä olevissa RTC -moduuleissa. (Paikallinen aika - Office Temp. Nykyinen aika) lisääminen GPS -aikaleimoihin korjaa harppaukset.

millis () aikaleimat toimivat edelleen kuten Arduinon millisekunnin aikaleimojen käyttämisessä, vaihe 5 yllä.

Vaihe 11: Johtopäätös

Kun käytät pfodAppia Android -mobiililaitteellasi, voit piirtää tietoja päivämäärän ja ajan tai kuluneen ajan mukaan käyttämällä vain Arduinon millis () -toimintoa. Käyttämällä pfodApp-lokitiedostoa voit tuottaa nämä päivämäärä- ja aikakaaviot uudelleen laskentataulukossa. Jos Arduino -projektissasi on RTC -moduuli, voit kirjata ja piirtää päivämäärän ja RTC -aikamerkit, jotka korjaavat automaattisesti RTC: n 'driftin'. Jos Arduino -projektissa on GPS -moduuli, voit kirjata ja piirtää sen erittäin tarkat aikaleimat, ja pfodApp korjaa automaattisesti GPS: n puuttuvat harppaus sekunnit.

Kaikissa tapauksissa Arduino -projektisi raakatiedot kirjataan täsmälleen sellaisina kuin ne on vastaanotettu, korjaamatta. PfodApp-lokitiedosto sisältää kuitenkin ylimääräisiä tietoja, joiden avulla voit tehdä nämä korjaukset uudelleen laskentataulukkona ladatusta lokitiedostosta.

Android -koodausta ei tarvita. Kaavion muodot on määritetty pienillä tekstijonoilla Arduino -luonnoksessasi. Ilmainen pfodDesigner luo täydelliset Arduino -tietojen kirjaus- ja piirtosuunnitelmat monenlaisille Arduino -levyille, jotka yhdistävät WiFi: n, klassisen Bluetoothin, BLE: n ja tekstiviestien kautta

Suositeltava: