Sadržaj:

Arduino Datalogger: 8 koraka (sa slikama)
Arduino Datalogger: 8 koraka (sa slikama)

Video: Arduino Datalogger: 8 koraka (sa slikama)

Video: Arduino Datalogger: 8 koraka (sa slikama)
Video: Текстовые LCD дисплей на контроллере HD44780, Уроки Arduino 2024, Studeni
Anonim
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger

U ovom ćemo vodiču napraviti jednostavan zapisnik podataka pomoću Arduina. Poanta je naučiti same osnove korištenja Arduina za hvatanje informacija i ispis na terminalu. Ovim osnovnim postavljanjem možemo dovršiti niz zadataka.

Započeti:

Trebat će vam Tinkercad (www.tinkercad.com) račun. Pređite i prijavite se svojom e -poštom ili računom na društvenim mrežama.

Prijava će vas odvesti na nadzornu ploču Tinkercada. Kliknite "Krugovi" s lijeve strane i odaberite "Izradi novi krug". Započnimo!

Cijelu datoteku možete pronaći na TInkercad Circuits - Hvala što ste je provjerili!

Korak 1: Dodajte neke komponente

Dodajte neke komponente
Dodajte neke komponente
Dodajte neke komponente
Dodajte neke komponente
Dodajte neke komponente
Dodajte neke komponente

Trebat će vam neke osnovne komponente. To uključuje:

  • Arduino ploča
  • Oglasna ploča

Dodajte ih tako da ih potražite i kliknete i povučete u srednje područje.

Postavite ploču iznad Arduina. Olakšava kasnije pregled veza.

Korak 2: Napomena o oglasnim pločama

Napomena o oglasnim pločama
Napomena o oglasnim pločama

Matična ploča je izuzetno koristan uređaj za brzu izradu prototipova. Koristimo ga za povezivanje komponenti. Neke stvari treba napomenuti.

  1. Točke su povezane okomito, ali linija u sredini razdvaja ovu vezu od gornjeg i donjeg stupca.
  2. Stupci nisu povezani slijeva nadesno, kao u drugom redu. To znači da bi sve komponente trebale biti povezane preko stupova, a ne okomito prema njima.
  3. Ako trebate koristiti gumbe ili prekidače, spojite ih preko razdora u sredini. Ovo ćemo posjetiti u kasnijem vodiču.

Korak 3: Dodajte dva senzora

Dodajte dva senzora
Dodajte dva senzora

Dva senzora koja koristimo su fotoosjetljivi senzor i temperaturni senzor.

Ti senzori procjenjuju svjetlost i temperaturu. Koristimo Arduino za čitanje vrijednosti i prikaz u serijskom monitoru na Arduinu.

Potražite i dodajte dva senzora. Provjerite jesu li postavljeni preko stupaca na ploči. Između njih ostavite dovoljno prostora kako biste ih lakše vidjeli.

Korak 4: Fotoosjetljivi senzor

Fotoosjetljivi senzor
Fotoosjetljivi senzor
Fotoosjetljivi senzor
Fotoosjetljivi senzor
Fotoosjetljivi senzor
Fotoosjetljivi senzor
Fotoosjetljivi senzor
Fotoosjetljivi senzor
  1. Za fotoosjetljivi senzor dodajte žicu s 5V pina na Arduinu u isti stupac kao i desna noga na dijelu u ploči za izradu kruga. Promijenite boju žice u crvenu.
  2. Spojite lijevu nogu preko pina u istom stupcu s pinom A0 (A-nula) na Arduinu. Ovo je analogni pin, kojim ćemo očitati vrijednost sa senzora. Obojite ovu žicu u žuto ili u nešto drugo osim u crveno ili crno.
  3. Postavite otpornik (pretražite i kliknite i povucite) na ploču. Time se dovršava krug i štite senzor i pin.

    • Okrenite ga tako da ide preko stupova.
    • Spojite jednu nogu u desnu kolonu na ploči
    • Postavite žicu s drugog kraja otpornika na masu

      Promijenite boju žice u crnu

  4. Dvaput provjerite sve veze. Ako nešto nije na pravom mjestu, to neće raditi ispravno.

Korak 5: Pokrenite kôd

Pokrenite kôd
Pokrenite kôd
Pokrenite kôd
Pokrenite kôd
Pokrenite kôd
Pokrenite kôd

Pogledajmo kod za ovu komponentu.

Najprije pogledajte treću sliku u ovom koraku. Sadrži kôd s dvije funkcije:

void setup ()

void loop ()

U C ++, sve funkcije pružaju svoj povratni tip, zatim ime, zatim dvije okrugle zagrade koje se mogu koristiti za prosljeđivanje argumenata, obično kao varijable. U ovom slučaju, tip povratka je ništavan ili ništa. Naziv je postavljen i funkcija ne uzima argumente.

Funkcija postavljanja pokreće se jednom pri pokretanju Arduina (kada ga priključite ili priključite baterije).

Funkcija petlje radi u konstantnoj petlji od milisekunde koju funkcija postavljanja dovršava.

Sve što stavite u funkciju petlje pokrenut će se kada se pokrene Arduino. Sve izvan toga će se pokrenuti samo kada se pozove. Kao kad bismo definirali i pozvali drugu funkciju izvan petlje.

Zadatak

Otvorite ploču Kôd s gumbom u Tinkercadu. Promijenite padajući izbornik Blokovi u Tekst. Prihvatite okvir upozorenja koji će se pojaviti. Sada izbrišite sve što vidite osim teksta na trećoj slici u ovom koraku.

Varijable

Za početak moramo dodijeliti neke varijable kako bismo naš kod učinili doista učinkovitim.

Varijable su poput kanti koje mogu držati samo jedan objekt (C ++ je ono što nazivamo objektno orijentirano). Da, imamo nizove, ali to su posebne varijable i o njima ćemo kasnije govoriti. Kad dodjeljujemo varijablu, moramo joj reći koje je vrste, a zatim joj dati vrijednost. Izgleda ovako:

int someVar = A0;

Dakle, dodijelili smo varijablu i dali joj tip int. Int je cijeli broj ili cijeli broj.

"Ali niste koristili cijeli broj!", Čujem vas kako govorite. To je istina.

Arduino čini nešto posebno za nas pa možemo koristiti A0 kao cijeli broj, jer u drugoj datoteci definira A0 kao cijeli broj, tako da možemo koristiti konstantu A0 za pozivanje na ovaj cijeli broj bez da moramo znati što je to. Kad bismo samo upisali 0, pozvali bismo se na digitalni pin na poziciji 0, što ne bi funkcioniralo.

Dakle, za naš kôd napisat ćemo varijablu za senzor koji smo priključili. Iako preporučujem da mu date jednostavno ime, to ovisi o vama.

Vaš kod bi trebao izgledati ovako:

int svjetlosni senzor = A0;

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

Sada, recimo Arduinu kako se rukuje sa senzorom na tom pinu. Pokrenut ćemo funkciju unutar postavki za postavljanje pin načina i reći Arduinu gdje ga treba tražiti.

int svjetlosni senzor = A0;

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

funkcija pinMode govori Arduinu da će se pin (A0) koristiti kao ulaz INPUT. Zabilježite camelCaseUsed (pogledajte svako prvo slovo veliko, jer ima grbe, stoga … deva …!) Za varijable i nazive funkcija. Ovo je konvencija i na nju se dobro naviknuti.

Konačno, upotrijebimo funkciju analogRead za dobivanje podataka.

int svjetlosni senzor = A0;

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

Vidjet ćete da smo čitanje spremili u varijablu. Ovo je važno jer ga moramo ispisati. Upotrijebimo Serijsku knjižnicu (knjižnica je kôd koji možemo dodati u svoj kôd kako bismo ubrzali pisanje, samo pozivanjem po svojoj definiciji) za ispis na serijski monitor.

int svjetlosni senzor = A0;

void setup () {// Postavite pin načine pinMode (lightSensor, INPUT); // Dodavanje serijske knjižnice Serial.begin (9600); } void loop () {// Očitavanje int očitanja senzora = analogRead (lightSensor); // Ispisuje vrijednost na monitor Serial.print ("Svjetlo:"); Serial.println (čitanje); // odgoditi sljedeću petlju za 3 sekunde odgode (3000); }

Nekoliko novih stvari! Prvo ćete vidjeti ove:

// Ovo je komentar

Koristimo komentare kako bismo drugim ljudima rekli što naš kôd radi. Ove biste trebali često koristiti. Prevodilac ih neće pročitati i pretvoriti u kod.

Sada smo linijom dodali i serijsku biblioteku

Serial.begin (9600)

Ovo je primjer funkcije koja uzima argument. Nazvali ste knjižnicu Serial, a zatim pokrenuli funkciju (znamo da je to funkcija zbog okruglih zagrada) i proslijedili cijeli broj kao argument, postavljajući funkciju Serial da radi na 9600baud. Ne brinite zašto - samo znajte da radi, za sada.

Sljedeće što smo učinili je ispis na serijski monitor. Koristili smo dvije funkcije:

// Ovaj se ispisuje u seriju bez prijeloma retka (unos na kraju)

Serial.print ("Svjetlo:"); // Ovaj stavlja prelom retka pa svaki put kad čitamo i pišemo, ide na novi redak Serial.println (čitanje);

Ono što je važno vidjeti je da svaki ima zasebnu svrhu. Pazite da vaši nizovi koriste dvostruke navodnike i da ostavite razmak iza dvotočke. To korisniku pomaže u čitljivosti.

Konačno, upotrijebili smo funkciju odgode, kako bismo usporili petlju i učinili da se čita samo jednom u tri sekunde. Ovo je zapisano u tisućama sekundi. Promijenite ga u čitanje samo jednom svakih 5 sekundi.

Sjajno! Idemo!

Korak 6: Simulacija

Simulacija
Simulacija
Simulacija
Simulacija
Simulacija
Simulacija

Uvijek provjerite rade li simulacije. Za ovaj krug također ćete morati otvoriti simulator da provjerite radi li i provjeriti svoje vrijednosti.

Pokrenite simulaciju i provjerite serijski monitor. Promijenite vrijednost svjetlosnog senzora klikom na nju i promjenom vrijednosti pomoću klizača. Trebali biste vidjeti promjenu vrijednosti i na serijskom monitoru. Ako se to ne dogodi, ili ako pritisnete gumb Pokreni simulaciju dobijete pogreške, pažljivo se vratite i provjerite sav svoj kôd.

  • Usredotočite se na linije označene u crvenom prozoru za otklanjanje pogrešaka koji će vam se prikazati.
  • Ako je vaš kôd ispravan, a simulacija i dalje ne radi, provjerite ožičenje.
  • Ponovno učitajte stranicu - možda imate grešku sustava/poslužitelja koji nije povezan.
  • Protresite šakom računalo i provjerite ponovo. To rade svi programeri. Svi. The. Vrijeme.

Korak 7: Povežite senzor temperature

Povežite senzor temperature
Povežite senzor temperature

Pretpostavit ću da ste sada na pravom putu. Samo naprijed i priključite senzor temperature kao što slika sugerira. Obratite pozornost na postavljanje žica 5V i GND u isti prostor kao i one za svjetlo. Ovo je u redu. To je poput paralelnog kruga i neće uzrokovati probleme u simulatoru. U stvarnom strujnom krugu trebali biste upotrijebiti zaštitnu ploču ili štit za bolje upravljanje napajanjem i povezivanjem.

Ajmo sada ažurirati kod.

Kod senzora temperature

Ovo je malo zeznutije, ali samo zato što moramo malo izračunati da pretvorimo čitanje. Nije tako loše.

int svjetlosni senzor = A0;

int tempSensor = A1; void setup () {// Postavite pin načine pinMode (lightSensor, INPUT); // Dodavanje serijske knjižnice Serial.begin (9600); } void loop () {// Temp senzor // Stvaranje dvije varijable u jednom retku - oh učinkovitost! // Float var za spremanje decimalnog plivajućeg napona, stupnjevaC; // Očitajte vrijednost pina i pretvorite je u očitanje od 0 - 5 // U biti napon = (5/1023 = 0,004882814); napon = (analogno čitanje (tempSensor) * 0,004882814); // Pretvori u stupnjeve C stupnjevaC = (napon - 0,5) * 100; // Ispis na serijski monitor Serial.print ("Temp:"); Serijski.ispis (stupnjeviC); Serial.println ("oC"); // Očitavanje int očitanja osjetnika = analogRead (lightSensor); // Ispisuje vrijednost na monitor Serial.print ("Svjetlo:"); Serial.println (čitanje); // odgoditi sljedeću petlju za 3 sekunde odgode (3000); }

Uradio sam neke izmjene u kodu. Prođimo kroz njih pojedinačno.

Prvo sam dodao redak

int tempSensor = A1;

Baš kao i lightSensor, moram pohraniti vrijednost u varijablu kako bih kasnije olakšala. Ako moram promijeniti mjesto ovog senzora (poput ponovnog ožičenja ploče), moram promijeniti samo jedan red koda, a ne pretraživati cijelu bazu kodova da bih promijenio A0 ili A1 itd.

Zatim smo dodali redak za spremanje očitanja i temp u plutajući. Zabilježite dvije varijable u jednom retku.

plivajući napon, stupnjeviC;

Ovo je jako korisno jer smanjuje broj redaka koje moram napisati i ubrzava kod. Ipak, može biti teže pronaći pogreške.

Sada ćemo pročitati i spremiti ga, a zatim ga pretvoriti u našu izlaznu vrijednost.

napon = (analogno čitanje (tempSensor) * 0,004882814);

stupnjeviC = (napon - 0,5) * 100;

Ta dva retka izgledaju teško, ali u prvom uzimamo očitanje i množimo ga s 0,004 … jer pretvara 1023 (analogno očitanje vraća ovu vrijednost) u očitanje od 5.

Drugi redak pomnoži to očitanje sa 100 za pomicanje decimalne točke. To nam daje temperaturu. Uredan!

Korak 8: Testiranje i provjera

Testiranje i provjera
Testiranje i provjera

Sve što se planira, trebali biste imati radni krug. Testirajte pokretanjem simulacije i korištenjem serijskog monitora. Ako imate grešaka, provjerite, provjerite ponovo i protresite šakom.

Jeste li uspjeli? Podijelite i ispričajte nam svoju priču!

Ovo je posljednji sklop ugrađen za vas pa možete igrati/testirati konačnu kreaciju. Hvala što ste dovršili vodič!

Preporučeni: