Sisällysluettelo:

Arduino Datalogger: 8 vaihetta (kuvilla)
Arduino Datalogger: 8 vaihetta (kuvilla)

Video: Arduino Datalogger: 8 vaihetta (kuvilla)

Video: Arduino Datalogger: 8 vaihetta (kuvilla)
Video: Arduino nano, ads1115, lcd2004, rtc ds1307, SD card shield, 8-16ch adc data logger 2024, Heinäkuu
Anonim
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger

Tässä opetusohjelmassa aiomme tehdä yksinkertaisen dataloggerin Arduinolla. Tarkoitus on oppia Arduinon käytön perusteet tietojen tallentamiseen ja tulostamiseen päätelaitteeseen. Voimme käyttää tätä perusasetusta monenlaisten tehtävien suorittamiseen.

Aloita näin:

Tarvitset Tinkercad (www.tinkercad.com) -tilin. Päätä ja rekisteröidy sähköpostilla tai sosiaalisen median tililläsi.

Kirjautuminen vie sinut Tinkercad -hallintapaneeliin. Napsauta "Piirit" vasemmalla ja valitse "Luo uusi piiri". Aloitetaan!

Löydät koko tiedoston TInkercad Circuitsista - Kiitos tarkistamisesta!

Vaihe 1: Lisää joitain komponentteja

Lisää joitain komponentteja
Lisää joitain komponentteja
Lisää joitain komponentteja
Lisää joitain komponentteja
Lisää joitain komponentteja
Lisää joitain komponentteja

Tarvitset joitain peruskomponentteja. Nämä sisältävät:

  • Arduino -levy
  • Leipälauta

Lisää ne etsimällä niitä ja vetämällä niitä keskialueelle.

Aseta leipälauta Arduinon päälle. Se helpottaa yhteyksien tarkastelua myöhemmin.

Vaihe 2: Huomautus leipälevyistä

Huomautus leipälevyistä
Huomautus leipälevyistä

Leipälauta on erittäin hyödyllinen laite nopeaan prototyyppien luomiseen. Käytämme sitä komponenttien liittämiseen. Muutamia huomioitavia asioita.

  1. Pisteet on yhdistetty pystysuoraan, mutta keskellä oleva viiva erottaa tämän yhteyden ylä- ja alasarakkeista.
  2. Sarakkeita ei yhdistetä vasemmalta oikealle, kuten rivin poikki. Tämä tarkoittaa sitä, että kaikki komponentit on liitettävä sarakkeiden poikki, eikä niitä alaspäin pystysuunnassa.
  3. Jos haluat käyttää painikkeita tai kytkimiä, kytke ne keskellä olevan tauon poikki. Vierailemme tässä myöhemmin opetusohjelmassa.

Vaihe 3: Lisää kaksi anturia

Lisää kaksi anturia
Lisää kaksi anturia

Kaksi käyttämäämme anturia ovat valoherkkä anturi ja lämpötila -anturi.

Nämä anturit arvioivat valoa ja lämpötilaa. Käytämme Arduinoa arvon lukemiseen ja sen näyttämiseen Arduinon sarjamittarissa.

Etsi ja lisää kaksi anturia. Varmista, että ne ovat leipälaudan sarakkeiden poikki. Jätä niiden väliin riittävästi tilaa, jotta heidät on helpompi nähdä.

Vaihe 4: Valoherkkä anturi

Valoherkkä anturi
Valoherkkä anturi
Valoherkkä anturi
Valoherkkä anturi
Valoherkkä anturi
Valoherkkä anturi
Valoherkkä anturi
Valoherkkä anturi
  1. Lisää valoherkälle anturille lanka Arduinon 5 V: n nastasta samaan sarakkeeseen kuin leipälaudan osan oikea jalka. Vaihda langan väri punaiseksi.
  2. Liitä vasen jalka saman sarakkeen tapin kautta Arduinon A0 (A-nolla) -tappiin. Tämä on analoginen nasta, jota käytämme arvon lukemiseen anturista. Väritä tämä lanka keltaiseksi tai jotain muuta kuin punaiseksi tai mustaksi.
  3. Aseta vastus (etsi ja napsauta ja vedä) taululle. Tämä täydentää piirin ja suojaa anturia ja tappia.

    • Käännä se ympäri niin, että se kulkee sarakkeiden poikki.
    • Yhdistä toinen jalka leipälaudan oikeanpuoleiseen sarakkeeseen
    • Aseta johto vastuksen toisesta päästä maahan

      Vaihda langan väri mustaksi

  4. Tarkista kaikki liitännät. Jos jokin ei ole oikeassa paikassa, tämä ei toimi oikein.

Vaihe 5: Käynnistä koodi

Käynnistä koodi
Käynnistä koodi
Käynnistä koodi
Käynnistä koodi
Käynnistä koodi
Käynnistä koodi

Katsotaanpa tämän komponentin koodia.

Katso ensin tämän vaiheen kolmatta kuvaa. Se sisältää koodin kahdella toiminnolla:

mitätön asennus ()

tyhjä silmukka ()

C ++: ssa kaikki toiminnot antavat palautustyypin, sitten nimen ja sitten kaksi pyöreää aaltosulkua, joita voidaan käyttää argumenttien syöttämiseen, yleensä muuttujina. Tässä tapauksessa palautustyyppi on mitätön tai ei mitään. Nimi on asetettu eikä toiminto ota argumentteja.

Asennustoiminto toimii kerran, kun Arduino käynnistyy (kun kytket sen tai liität paristot).

Silmukkatoiminto toimii jatkuvassa silmukassa millisekunnista, kun asennustoiminto on valmis.

Kaikki silmukkatoimintoon asettamasi toimii, kun Arduino toimii. Kaikki ulkopuolinen toimii vain kutsuttaessa. Kuten jos määrittäisimme ja kutsuisimme toisen funktion silmukan ulkopuolelle.

Tehtävä

Avaa Koodipaneeli Tinkercadissa olevalla painikkeella. Muuta avattavasta Lohkot -valikosta teksti. Hyväksy avautuva varoituslaatikko. Poista nyt kaikki näkemäsi paitsi kolmannen kuvan teksti tässä vaiheessa.

Muuttujat

Aluksi meidän on määritettävä muuttujia, jotta voimme tehdä koodistamme todella tehokkaan.

Muuttujat ovat kuin kauhoja, joihin mahtuu vain yksi objekti (C ++ on objektipohjainen). Kyllä, meillä on taulukkoja, mutta nämä ovat erityisiä muuttujia ja puhumme niistä myöhemmin. Kun määritämme muuttujan, meidän on kerrottava sille, minkä tyyppinen se on, ja annettava sille arvo. Se näyttää tältä:

int someVar = A0;

Niinpä annoimme muuttujan ja annoimme sille tyypin int. Int on kokonaisluku tai kokonaisluku.

"Mutta et käyttänyt kokonaislukua!", Kuulen sinun sanovan. Se on totta.

Arduino tekee meille jotain erityistä, jotta voimme käyttää A0: ta kokonaislukuna, koska toisessa tiedostossa se määrittelee A0: n kokonaislukuna, joten voimme käyttää A0 -vakioa viittaamaan tähän kokonaislukuun tarvitsematta tietää, mitä se on. Jos kirjoittaisimme vain 0, viittaisimme digitaaliseen nastaan kohdassa 0, joka ei toimi.

Joten koodillemme kirjoitamme muuttujan anturillemme, jonka olemme liittäneet. Vaikka suosittelen antamaan sille yksinkertaisen nimen, se on sinun tehtäväsi.

Koodisi pitäisi näyttää tältä:

int lightSensor = A0;

void setup () {} void loop () {}

Kerro nyt Arduinolle, kuinka käsitellä anturia kyseisessä tapissa. Suoritamme toiminnon asetusten sisällä asettaaksesi pin -tilan ja kertoa Arduinolle, mistä sitä etsiä.

int lightSensor = A0;

void setup () {pinMode (lightSensor, INPUT); } void loop () {}

pinMode -toiminto kertoo Arduinolle, että tappia (A0) käytetään INPUT -nastana. Huomaa muuttujien ja toimintojen nimet (katso jokainen ensimmäinen kirjain on iso kirjain, koska siinä on kuoppia, joten… kameli…!). Tämä on sopimus ja siihen on hyvä tottua.

Lopuksi, käytämme analogRead -toimintoa tietojen hankkimiseen.

int lightSensor = A0;

void setup () {pinMode (lightSensor, INPUT); } void loop () {int luku = analoginenLue (lightSensor); }

Näet, että olemme tallentaneet lukeman muuttujaan. Tämä on tärkeää, koska meidän on tulostettava se. Käytämme sarjakirjastoa (kirjasto on koodi, jonka voimme lisätä koodiin nopeuttaaksemme kirjoittamistamme vain kutsumalla sitä määritelmänsä mukaisesti) tämän tulostamiseen sarjamonitorille.

int lightSensor = A0;

void setup () {// Aseta pin -tilat pinMode (lightSensor, INPUT); // Lisää sarjakirjasto Serial.begin (9600); } void loop () {// Lue anturi int reading = analoginenLue (lightSensor); // Tulosta arvo monitorille Serial.print ("Light:"); Serial.println (lukeminen); // viivyttää seuraavaa silmukkaa 3 sekunnin viiveellä (3000); }

Muutama uusi juttu! Näet ensin nämä:

// Tämä on kommentti

Käytämme kommentteja kertoaksemme muille, mitä koodimme tekee. Näitä kannattaa käyttää usein. Kääntäjä ei lue näitä ja muuntaa ne koodiksi.

Nyt lisäsimme myös sarjan kirjaston rivillä

Sarja.alku (9600)

Tämä on esimerkki funktiosta, joka ottaa argumentin. Kutsuit kirjastoa Serialiksi ja suoritit sitten funktion (tiedämme, että se on funktio pyöreiden aaltosulkeiden takia) ja annoit kokonaisluvun argumenttina ja asetit sarjatoiminnon toimimaan 9600baud. Älä huoli miksi - tiedä vain, että se toimii toistaiseksi.

Seuraava asia, jonka teimme, oli tulostus sarjamonitoriin. Käytimme kahta toimintoa:

// Tämä tulostaa sarjaan ilman rivinvaihtoa (enter lopussa)

Serial.print ("Light:"); // Tämä lisää rivinvaihdon, joten joka kerta kun luemme ja kirjoitamme, se siirtyy uudelle riville Serial.println (luku);

Tärkeintä on nähdä, että jokaisella on oma tarkoitus. Varmista, että merkkijonoissasi on lainausmerkit ja että jätät tilan kaksoispisteen jälkeen. Tämä parantaa luettavuutta käyttäjälle.

Lopuksi käytimme viivästystoimintoa hidastaaksemme silmukkaa ja saamaan sen vain kerran kolmen sekunnin välein. Tämä kirjoitetaan tuhansissa sekunneissa. Vaihda se lukemaan vain kerran 5 sekunnin välein.

Loistava! Mennään!

Vaihe 6: Simulaatio

Simulointi
Simulointi
Simulointi
Simulointi
Simulointi
Simulointi

Tarkista aina, että asiat toimivat suorittamalla simulaatio. Tätä piiriä varten sinun on myös avattava simulaattori, jotta voit tarkistaa sen toimivuuden ja arvot.

Käynnistä simulaatio ja tarkista sarjamonitori. Muuta valoanturin arvoa napsauttamalla sitä ja muuttamalla arvoa liukusäätimellä. Sinun pitäisi nähdä arvon muutos myös sarjamonitorissa. Jos ei, tai jos saat virheitä, kun painat Käynnistä simulaatio -painiketta, palaa varovasti taaksepäin ja tarkista kaikki koodisi.

  • Keskity punaisen virheenkorjausikkunan riveihin, jotka näytetään sinulle.
  • Jos koodisi on oikea eikä simulaatio vieläkään toimi, tarkista johdotus.
  • Lataa sivu uudelleen - sinulla saattaa olla liittymätön järjestelmä-/palvelinvirhe.
  • Ravista nyrkkiä tietokonetta kohti ja tarkista uudelleen. Kaikki ohjelmoijat tekevät tämän. Kaikki.. Aika.

Vaihe 7: Kytke lämpötila -anturi

Kytke lämpötila -anturi
Kytke lämpötila -anturi

Oletan, että olet nyt oikealla tiellä. Mene eteenpäin ja johda lämpötila -anturi kuvan mukaisesti. Huomaa, että 5V- ja GND -johdot on sijoitettu samaan tilaan kuin valot. Tämä on ok. Se on kuin rinnakkaispiiri eikä aiheuta ongelmia simulaattorissa. Todellisessa piirissä sinun tulisi käyttää katkaisulautaa tai suojaa paremman virranhallinnan ja yhteyksien aikaansaamiseksi.

Päivitetään nyt koodi.

Lämpötila -anturin koodi

Tämä on hieman hankalampaa, mutta vain siksi, että meidän on tehtävä jonkin verran laskutoimitusta lukeman muuntamiseksi. Se ei ole liian huono.

int lightSensor = A0;

int tempSensor = A1; void setup () {// Aseta pin -tilat pinMode (lightSensor, INPUT); // Lisää sarjakirjasto Serial.begin (9600); } void loop () {// Lämpötila -anturi // Kahden muuttujan luominen yhdelle riville - tehokkuus! // Float var tallentaa desimaalin kelluntajännitteen, ° C; // Lue nastan arvo ja muunna se lukemaksi 0 - 5 // Pohjimmiltaan jännite = (5/1023 = 0,004882814); jännite = (analoginen lukema (lämpötila -anturi) * 0,004882814); // Muunna asteiksi C astettaC = (jännite - 0,5) * 100; // Tulosta sarjamonitoriin Serial.print ("Temp:"); Sarjajälki (astetta C); Serial.println ("oC"); // Lue anturi int reading = analogRead (lightSensor); // Tulosta arvo monitorille Serial.print ("Light:"); Serial.println (lukeminen); // viivyttää seuraavaa silmukkaa 3 sekunnin viiveellä (3000); }

Olen tehnyt päivityksiä koodiin. Käydään ne läpi yksitellen.

Aluksi lisäsin rivin

int tempSensor = A1;

Aivan kuten lightSensor, minun on tallennettava arvo muuttujaan helpottaakseni sitä myöhemmin. Jos minun piti muuttaa tämän anturin sijaintia (kuten johdottaa levy uudelleen), minun on vaihdettava vain yksi koodirivi, ei etsittävä koko koodikannasta A0: n tai A1: n vaihtamiseksi jne.

Sitten lisäsimme rivin lukeman ja lämpötilan tallentamiseen kellukkeeseen. Huomaa kaksi muuttujaa yhdellä rivillä.

kelluva jännite, astetta C;

Tämä on todella hyödyllistä, koska se vähentää kirjoittamieni rivien määrää ja nopeuttaa koodia. Virheiden löytäminen voi kuitenkin olla vaikeampaa.

Nyt teemme lukemisen ja tallennamme sen ja muunnamme sen sitten lähtöarvoksi.

jännite = (analoginen lukema (lämpötila -anturi) * 0,004882814);

astetta C = (jännite - 0,5) * 100;

Nämä kaksi riviä näyttävät vaikeilta, mutta ensin otamme lukeman ja kerromme sen 0,004: llä … koska se muuntaa 1023 (analoginen lukema palauttaa tämän arvon) lukemaksi viidestä.

Toinen rivi kertoo lukeman 100: lla desimaalipisteen siirtämiseksi. Se antaa meille lämpötilan. Siisti!

Vaihe 8: Testaus ja tarkistus

Testaus ja tarkistus
Testaus ja tarkistus

Kaikki asiat suunnitellaan, sinulla pitäisi olla toimiva piiri. Testaa suorittamalla simulaatio ja käyttämällä sarjamonitoria. Jos sinulla on virheitä, tarkista, tarkista uudelleen ja ravista nyrkkiäsi.

Teitkö sinä sen? Jaa ja kerro tarinasi!

Tämä on viimeinen piiri, joka on upotettu sinulle, jotta voit pelata/testata lopullista luomista. Kiitos opetusohjelman suorittamisesta!

Suositeltava: