Kazalo:

Arduino Datalogger: 8 korakov (s slikami)
Arduino Datalogger: 8 korakov (s slikami)

Video: Arduino Datalogger: 8 korakov (s slikami)

Video: Arduino Datalogger: 8 korakov (s slikami)
Video: Lesson 98: Arduino 10 LED Push button Projects, Potentiometer LED Voltmeter and Traffic Light 2024, November
Anonim
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger

V tej vadnici bomo naredili preprost zapisovalnik podatkov z uporabo Arduina. Bistvo je, da se naučimo samih osnov uporabe Arduina za zajem informacij in tiskanje na terminal. S to osnovno nastavitvijo lahko dokončamo vrsto nalog.

Za začetek:

Potrebovali boste račun Tinkercad (www.tinkercad.com). Pojdite in se prijavite s svojim e -poštnim računom ali računom za družabne medije.

Prijava vas popelje na nadzorno ploščo Tinkercad. Kliknite "Vezja" na levi in izberite "Ustvari novo vezje". Začnimo!

Celotno datoteko najdete na TInkercad Circuits - Hvala, ker ste jo preverili!

Korak: Dodajte nekaj komponent

Dodajte nekaj komponent
Dodajte nekaj komponent
Dodajte nekaj komponent
Dodajte nekaj komponent
Dodajte nekaj komponent
Dodajte nekaj komponent

Potrebovali boste nekaj osnovnih komponent. Tej vključujejo:

  • Arduino plošča
  • Ogledna plošča

Dodajte jih tako, da jih poiščete in jih povlečete na sredino.

Ohišje postavite nad Arduino. Omogoča poznejši ogled povezav.

2. korak: Opomba o oglasnih deskah

Opomba o oglasnih deskah
Opomba o oglasnih deskah

Ogledna plošča je zelo uporabna naprava za hitro izdelavo prototipov. Z njim povezujemo komponente. Opozoriti je treba na nekatere stvari.

  1. Pike so povezane navpično, vendar črta na sredini to povezavo loči od zgornjega in spodnjega stolpca.
  2. Stolpci niso povezani levo proti desni, kot v drugi vrsti. To pomeni, da morajo biti vse komponente povezane čez stolpce in ne navpično navzdol.
  3. Če morate uporabiti gumbe ali stikala, jih povežite čez prelom na sredini. To bomo obiskali v kasnejši vadnici.

3. korak: Dodajte dva senzorja

Dodajte dva senzorja
Dodajte dva senzorja

Dva senzorja, ki jih uporabljamo, sta senzor za občutljivost na svetlobo in temperaturni senzor.

Ti senzorji ocenjujejo svetlobo in temperaturo. Arduino uporabljamo za branje vrednosti in njeno prikazovanje v monitorju Serial na Arduinu.

Poiščite in dodajte dva senzorja. Prepričajte se, da so nameščeni čez stolpce na plošči. Med njimi dajte dovolj prostora, da jih boste lažje videli.

4. korak: Senzor za občutljivost na svetlobo

Fotoobčutljiv senzor
Fotoobčutljiv senzor
Fotoobčutljiv senzor
Fotoobčutljiv senzor
Fotoobčutljiv senzor
Fotoobčutljiv senzor
Fotoobčutljiv senzor
Fotoobčutljiv senzor
  1. Za fotoobčutljivi senzor dodajte žico s 5V zatiča na Arduinu v isti stolpec kot desna noga na delu v plošči. Spremenite barvo žice v rdečo.
  2. Levo nogo povežite s čepom v istem stolpcu z zatičem A0 (A-nič) na Arduinu. To je analogni pin, ki ga bomo uporabili za branje vrednosti iz senzorja. Obarvajte to žico rumeno ali kaj drugega kot rdečo ali črno.
  3. Na ploščo postavite upor (poiščite in kliknite in povlecite). To zaključi vezje in zaščiti senzor in pin.

    • Obrnite ga tako, da gre čez stebre.
    • Priključite eno nogo v desni stolpec na plošči
    • Žico z drugega konca upora postavite na tla

      Spremenite barvo žice v črno

  4. Dvakrat preverite vse povezave. Če nekaj ni na pravem mestu, to ne bo delovalo pravilno.

5. korak: Zaženite kodo

Zaženite kodo
Zaženite kodo
Zaženite kodo
Zaženite kodo
Zaženite kodo
Zaženite kodo

Poglejmo kodo za to komponento.

Najprej poglejte tretjo sliko v tem koraku. Vsebuje nekaj kode z dvema funkcijama:

void setup ()

void loop ()

V C ++ vse funkcije zagotavljajo vrsto vrnitve, nato ime, nato dva okrogla oklepaja, ki ju lahko uporabite za podajanje argumentov, običajno kot spremenljivke. V tem primeru je vrsta vračila nična ali nič. Ime je nastavljeno in funkcija ne sprejema argumentov.

Funkcija nastavitve se zažene enkrat, ko se Arduino zažene (ko ga priključite ali priključite baterije).

Funkcija zanke teče v konstantni zanki od milisekunde, ki jo dokonča funkcija nastavitve.

Vse, kar vnesete v funkcijo zanke, se bo zagnalo, ko se zažene Arduino. Vse zunaj tega bo delovalo samo ob klicu. Kot bi definirali in poklicali drugo funkcijo zunaj zanke.

Naloga

Odprite ploščo Koda s tipko v Tinkercadu. Spremenite spustni meni Blokiraj v Besedilo. Strinjajte se z opozorilnim okvirjem, ki se prikaže. Zdaj izbrišite vse, kar vidite, razen besedila na tretji sliki v tem koraku.

Spremenljivke

Za začetek moramo dodeliti nekaj spremenljivk, da bo naša koda res učinkovita.

Spremenljivke so kot vedra, ki lahko vsebujejo samo en predmet (C ++ je tisto, čemur pravimo objektno orientirano). Da, imamo matrike, vendar so to posebne spremenljivke, o njih bomo govorili kasneje. Ko dodelimo spremenljivko, ji moramo povedati, katere vrste je, nato pa ji dati vrednost. Izgleda takole:

int someVar = A0;

Tako smo spremenljivki dodelili tip int. Int je celo število ali celo število.

"Ampak niste uporabili celega števila!", Slišim, da govorite. To je res.

Arduino naredi nekaj posebnega za nas, zato lahko uporabimo A0 kot celo število, saj v drugi datoteki definira A0 kot celo število, zato lahko s konstanto A0 sklicujemo na to celo število, ne da bi morali vedeti, kaj je to. Če bi samo vnesli 0, bi se sklicevali na digitalni zatič na položaju 0, kar ne bi delovalo.

Tako bomo za našo kodo zapisali spremenljivko za senzor, ki smo ga priložili. Čeprav priporočam preprosto ime, je odvisno od vas.

Vaša koda bi morala izgledati tako:

int lightSensor = A0;

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

Zdaj pa povejmo Arduinu, kako ravnati s senzorjem na tem zatiču. V nastavitvah bomo zagnali funkcijo za nastavitev načina zatiča in povedali Arduinu, kje naj jo išče.

int lightSensor = A0;

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

funkcija pinMode pove Arduinu, da se bo pin (A0) uporabljal kot vhod INPUT. Zapomnite si camelCaseUsed (glejte, da je vsaka prva črka velika, saj ima grbe, zato… kamela…!) Za spremenljivke in imena funkcij. To je konvencija in nanjo se je dobro navaditi.

Na koncu uporabimo funkcijo analogRead, da dobimo nekaj podatkov.

int lightSensor = A0;

void setup () {pinMode (lightSensor, INPUT); } void loop () {int reading = analogRead (lightSensor); }

Videli boste, da smo branje shranili v spremenljivko. To je pomembno, saj ga moramo natisniti. Za tiskanje tega na serijski monitor uporabimo knjižnico Serial (knjižnica je koda, ki jo lahko dodamo k naši kodi, da jo pospešimo pri pisanju, samo tako, da jo pokličemo po definiciji).

int lightSensor = A0;

void setup () {// Nastavite pin načine pinMode (lightSensor, INPUT); // dodamo serijsko knjižnico Serial.begin (9600); } void loop () {// Branje senzorja int reading = analogRead (lightSensor); // Natisnite vrednost na monitor Serial.print ("Light:"); Serial.println (branje); // naslednjo zanko zamudimo za 3 sekunde (3000); }

Nekaj novih stvari! Najprej boste videli naslednje:

// To je komentar

S komentarji drugim povemo, kaj počne naša koda. Te bi morali pogosto uporabljati. Prevajalnik teh ne bo prebral in jih pretvoril v kodo.

Zdaj smo s vrstico dodali tudi serijsko knjižnico

Serial.begin (9600)

To je primer funkcije, ki sprejme argument. Poklicali ste knjižnico Serial, nato zagnali funkcijo (vemo, da je funkcija zaradi okroglih oklepajev) in kot argument podali celo število, pri čemer je funkcija Serial nastavila delovanje na 9600baud. Ne skrbite, zakaj - samo vedite, da zaenkrat deluje.

Naslednja stvar, ki smo jo naredili, je bila tiskanje na serijski monitor. Uporabili smo dve funkciji:

// Ta se natisne v serijo brez preloma vrstice (vnos na koncu)

Serial.print ("Svetloba:"); // Ta vstavi prelom vrstice, tako da vsakič, ko beremo in pišemo, gre v novo vrstico Serial.println (branje);

Pomembno je, da ima vsak svoj namen. Prepričajte se, da vaši nizi uporabljajo dvojne narekovaje in da pustite presledek za dvopičjem. To uporabniku pomaga pri berljivosti.

Nazadnje smo uporabili funkcijo zakasnitve, da smo upočasnili zanko in jo brali le enkrat na tri sekunde. To je zapisano v tisočih sekundah. Spremenite ga v branje le enkrat na 5 sekund.

Super! Gremo!

6. korak: Simulacija

Simulacija
Simulacija
Simulacija
Simulacija
Simulacija
Simulacija

Z simulacijo vedno preverite, ali stvari delujejo. Za to vezje boste morali odpreti simulator, da preverite njegovo delovanje in preverite svoje vrednosti.

Zaženite simulacijo in preverite serijski monitor. Spremenite vrednost svetlobnega senzorja tako, da kliknete nanj in vrednost spremenite z drsnikom. Spremembo vrednosti bi morali videti tudi na serijskem monitorju. Če se to ne zgodi, ali če ob pritisku na gumb Start Simulation dobite napake, se previdno vrnite in preverite vso kodo.

  • Osredotočite se na vrstice, označene v rdečem oknu za odpravljanje napak, ki vam bo predstavljeno.
  • Če je vaša koda pravilna in simulacija še vedno ne deluje, preverite ožičenje.
  • Znova naložite stran - morda imate nepovezano napako sistema/strežnika.
  • Stisnite pest proti računalniku in ponovno preverite. To počnejo vsi programerji. Vse. The. Čas.

7. korak: Priključite senzor temp

Priključite temperaturni senzor
Priključite temperaturni senzor

Predvidevam, da ste zdaj na pravi poti. Pojdite naprej in priključite temperaturni senzor, kot kaže slika. Upoštevajte postavitev žic 5V in GND v istem prostoru kot tiste za svetlobo. To je v redu. Je kot vzporedno vezje in ne bo povzročilo težav v simulatorju. V dejanskem vezju morate za boljše upravljanje napajanja in povezave uporabiti odklopno ploščo ali ščit.

Zdaj posodobimo kodo.

Koda senzorja temp

To je nekoliko bolj zapleteno, vendar le zato, ker moramo narediti nekaj matematike, da pretvorimo branje. Ni tako hudo.

int lightSensor = A0;

int tempSensor = A1; void setup () {// Nastavite pin načine pinMode (lightSensor, INPUT); // dodamo serijsko knjižnico Serial.begin (9600); } void loop () {// Temp senzor // Ustvarjanje dveh spremenljivk v eni vrstici - oh učinkovitost! // Float var za shranjevanje decimalne plavajoče napetosti, stopinjC; // preberemo vrednost zatiča in ga pretvorimo v odčitek od 0 - 5 // V bistvu napetost = (5/1023 = 0,004882814); napetost = (analogRead (tempSensor) * 0,004882814); // Pretvori v stopinje C stopinjC = (napetost - 0,5) * 100; // Natisni na serijski monitor Serial.print ("Temp:"); Serijski.tisk (stopinjeC); Serial.println ("oC"); // preberite odčitavanje int senzorja = analogRead (lightSensor); // Natisnite vrednost na monitor Serial.print ("Light:"); Serial.println (branje); // naslednjo zanko zamudimo za 3 sekunde (3000); }

Kodo sem posodobil. Pojdimo skozi njih posamično.

Najprej sem dodal vrstico

int tempSensor = A1;

Tako kot lightSensor moram vrednost shraniti v spremenljivko, da bo pozneje lažje. Če bi moral spremeniti lokacijo tega senzorja (na primer ponovno ožičenje plošče), moram spremeniti samo eno vrstico kode, ne pa iskati po celotni zbirki kod, da spremenim A0 ali A1 itd.

Nato smo dodali vrstico za shranjevanje odčitkov in temp v plavajoči. Upoštevajte dve spremenljivki v eni vrstici.

plavajoča napetost, stopinjeC;

To je zelo koristno, saj zmanjšuje število vrstic, ki jih moram napisati, in pospeši kodo. Napake pa je težje najti.

Zdaj bomo prebrali in shranili, nato pa ga pretvorili v izhodno vrednost.

napetost = (analogRead (tempSensor) * 0,004882814);

stopinjeC = (napetost - 0,5) * 100;

Ti dve vrstici sta videti težki, toda v prvi jemljemo odčitavanje in ga pomnožimo z 0,004…, ker pretvori 1023 (analogno branje vrne to vrednost) v odčitavanje od 5.

Druga vrstica pomnoži to branje s 100 za premik decimalne vejice. To nam daje temperaturo. Lepo!

8. korak: Testiranje in preverjanje

Testiranje in preverjanje
Testiranje in preverjanje

Vse stvari, ki se bodo načrtovale, bi morali imeti delovno vezje. Preizkusite tako, da zaženete simulacijo in uporabite serijski monitor. Če imate napake, preverite, preverite še enkrat in stisnite pest.

Vam je uspelo? Delite in nam povejte svojo zgodbo!

To je zadnje vgrajeno vezje za vas, da lahko igrate/preizkusite končno stvaritev. Hvala, ker ste dokončali vadnico!

Priporočena: