![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](https://i.howwhatproduce.com/images/002/image-3710-26-j.webp)
Sisällysluettelo:
- Vaihe 1: Arduinon millisekunnin aikaleimojen käyttäminen, Millis ()
- Vaihe 2: Kaavion lisääminen valikkoon
- Vaihe 3: Kaavion lähteen ja tarrojen muokkaaminen
- Vaihe 4: Päivämäärän/kellonajan muodon valitseminen
- Vaihe 5: Luo ja testaa Arduino -luonnos
- Vaihe 6: Miten PfodApp piirtää päivämäärän/ajan Millis (): sta?
- Vaihe 7: Päivämäärän/kellonajan tulostus tietokoneellasi
- Vaihe 8: Kuinka välttää 49,7 päivän millimetri () raja ja miksi sinun ei pitäisi
- Vaihe 9: Reaaliaikaisen kellon (RTC) käyttäminen
- Vaihe 10: GPS -moduulin käyttö
- Vaihe 11: Johtopäätös
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-23 14:42
![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](https://i.howwhatproduce.com/images/002/image-3710-27-j.webp)
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](https://i.howwhatproduce.com/images/002/image-3710-28-j.webp)
![Kaavion lisääminen valikkoon Kaavion lisääminen valikkoon](https://i.howwhatproduce.com/images/002/image-3710-29-j.webp)
![Kaavion lisääminen valikkoon Kaavion lisääminen valikkoon](https://i.howwhatproduce.com/images/002/image-3710-30-j.webp)
![Kaavion lisääminen valikkoon Kaavion lisääminen valikkoon](https://i.howwhatproduce.com/images/002/image-3710-31-j.webp)
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](https://i.howwhatproduce.com/images/002/image-3710-32-j.webp)
![Kaavion lähteen ja tarrojen muokkaaminen Kaavion lähteen ja tarrojen muokkaaminen](https://i.howwhatproduce.com/images/002/image-3710-33-j.webp)
![Kaavion lähteen ja tarrojen muokkaaminen Kaavion lähteen ja tarrojen muokkaaminen](https://i.howwhatproduce.com/images/002/image-3710-34-j.webp)
![Kaavion lähteen ja tarrojen muokkaaminen Kaavion lähteen ja tarrojen muokkaaminen](https://i.howwhatproduce.com/images/002/image-3710-35-j.webp)
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](https://i.howwhatproduce.com/images/002/image-3710-36-j.webp)
![Päivämäärän/kellonajan muodon valitseminen Päivämäärän/kellonajan muodon valitseminen](https://i.howwhatproduce.com/images/002/image-3710-37-j.webp)
![Päivämäärän/kellonajan muodon valitseminen Päivämäärän/kellonajan muodon valitseminen](https://i.howwhatproduce.com/images/002/image-3710-38-j.webp)
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](https://i.howwhatproduce.com/images/002/image-3710-39-j.webp)
![Luo ja testaa Arduino -luonnos Luo ja testaa Arduino -luonnos](https://i.howwhatproduce.com/images/002/image-3710-40-j.webp)
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](https://i.howwhatproduce.com/images/002/image-3710-41-j.webp)
![Päivämäärän/kellonajan toisto tietokoneessa Päivämäärän/kellonajan toisto tietokoneessa](https://i.howwhatproduce.com/images/002/image-3710-42-j.webp)
![Päivämäärän/kellonajan toisto tietokoneessa Päivämäärän/kellonajan toisto tietokoneessa](https://i.howwhatproduce.com/images/002/image-3710-43-j.webp)
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](https://i.howwhatproduce.com/images/002/image-3710-44-j.webp)
![Reaaliaikaisen kellon (RTC) käyttäminen Reaaliaikaisen kellon (RTC) käyttäminen](https://i.howwhatproduce.com/images/002/image-3710-45-j.webp)
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:
Lämpötila -anturin reaaliaikaisten tietojen piirtäminen (TMP006) MSP432 LaunchPadin ja Pythonin avulla: 9 vaihetta
![Lämpötila -anturin reaaliaikaisten tietojen piirtäminen (TMP006) MSP432 LaunchPadin ja Pythonin avulla: 9 vaihetta Lämpötila -anturin reaaliaikaisten tietojen piirtäminen (TMP006) MSP432 LaunchPadin ja Pythonin avulla: 9 vaihetta](https://i.howwhatproduce.com/images/005/image-13891-j.webp)
Lämpötila -anturin (TMP006) reaaliaikaisten tietojen piirtäminen MSP432 LaunchPadin ja Pythonin avulla: TMP006 on lämpötila -anturi, joka mittaa kohteen lämpötilan ilman tarvetta koskettaa kohdetta. Tässä opetusohjelmassa piirrämme reaaliaikaiset lämpötilatiedot BoosterPackista (TI BOOSTXL-EDUMKII) Pythonin avulla
Valon intensiteetin piirtäminen Arduinon ja Pythonin Arduino -pääkirjaston avulla: 5 vaihetta
![Valon intensiteetin piirtäminen Arduinon ja Pythonin Arduino -pääkirjaston avulla: 5 vaihetta Valon intensiteetin piirtäminen Arduinon ja Pythonin Arduino -pääkirjaston avulla: 5 vaihetta](https://i.howwhatproduce.com/images/010/image-28378-j.webp)
Valon intensiteetin piirtäminen Arduinon ja Pythonin Arduino Master Libraryn avulla: Arduino on taloudellinen mutta erittäin tehokas ja toimiva työkalu, ja sen ohjelmoiminen Embedded C: hen tekee projektien tekemisestä työlästä! Pythonin Arduino_Master -moduuli yksinkertaistaa tätä ja antaa meille mahdollisuuden suorittaa laskelmia, poistaa roska -arvoja
Arduino Ethernet DHT11 Lämpötilan ja kosteuden kirjaaminen, mobiilitilastot: 4 vaihetta
![Arduino Ethernet DHT11 Lämpötilan ja kosteuden kirjaaminen, mobiilitilastot: 4 vaihetta Arduino Ethernet DHT11 Lämpötilan ja kosteuden kirjaaminen, mobiilitilastot: 4 vaihetta](https://i.howwhatproduce.com/images/011/image-31308-j.webp)
Arduino Ethernet DHT11 Lämpötilan ja kosteuden kirjaaminen, mobiilitilastot: Arduino UNO R3: n, Ethernet Shield AND DHT11: n avulla voit kirjata lämpötila- ja kosteustiedot ulos, huoneeseen, kasvihuoneeseen, laboratorioon, jäähdytyshuoneeseen tai mihin tahansa muuhun paikkaan täysin ilmaiseksi. Tässä esimerkissä kirjataan huoneen lämpötila ja kosteus. Laite
Arduino ja SIM900 GSM GPRS 3G Lämpötilan ja kosteuden kirjaaminen, mobiilitilastot: 4 vaihetta
![Arduino ja SIM900 GSM GPRS 3G Lämpötilan ja kosteuden kirjaaminen, mobiilitilastot: 4 vaihetta Arduino ja SIM900 GSM GPRS 3G Lämpötilan ja kosteuden kirjaaminen, mobiilitilastot: 4 vaihetta](https://i.howwhatproduce.com/images/011/image-32904-j.webp)
Arduino ja SIM900 GSM GPRS 3G Lämpötilan ja kosteuden kirjaaminen, mobiilitilastot: Arduino UNO R3: n, SIM900 Shield AND DHT22: n avulla voit kirjata lämpötila- ja kosteustiedot ulos, huoneeseen, kasvihuoneeseen, laboratorioon, jäähdytyshuoneeseen tai mihin tahansa muuhun paikkaan täysin ilmaiseksi. Tässä esimerkissä kirjataan huoneen lämpötila ja kosteus.Laite
Yksinkertainen mobiilidatakirjaus PfodAppin, Androidin ja Arduinon avulla: 5 vaihetta
![Yksinkertainen mobiilidatakirjaus PfodAppin, Androidin ja Arduinon avulla: 5 vaihetta Yksinkertainen mobiilidatakirjaus PfodAppin, Androidin ja Arduinon avulla: 5 vaihetta](https://i.howwhatproduce.com/images/001/image-70-72-j.webp)
Yksinkertainen mobiilidatan kirjaaminen PfodApp-, Android- ja Arduino -sovelluksilla: Moblie -tiedonkeruusta on tehty yksinkertaista käyttämällä pfodAppia, Andriod -matkapuhelinta ja Arduinoa. Android -ohjelmointia ei tarvita. Jos haluat piirtää tietoja Android -laitteellasi, katso tämä myöhemmin avattava yksinkertainen etädatan piirto Android / Arduino / pfodApp -sovelluksella