Cuprins:

Arduino Datalogger: 8 pași (cu imagini)
Arduino Datalogger: 8 pași (cu imagini)

Video: Arduino Datalogger: 8 pași (cu imagini)

Video: Arduino Datalogger: 8 pași (cu imagini)
Video: Tutorial 11 for Arduino: SD Cards and Datalogging 2024, Iulie
Anonim
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger

În acest tutorial, vom face un simplu logger de date folosind Arduino. Ideea este să învățați noțiunile de bază ale utilizării Arduino pentru a capta informații și a imprima pe terminal. Putem folosi această configurare de bază pentru a finaliza o serie de sarcini.

Pentru a incepe:

Veți avea nevoie de un cont Tinkercad (www.tinkercad.com). Mergeți și înscrieți-vă cu contul dvs. de e-mail sau social media.

Conectarea vă duce la Tinkercad Dashboard. Faceți clic pe „Circuite” în stânga și selectați „Creați un circuit nou”. Să începem!

Puteți găsi fișierul complet pe TInkercad Circuits - Vă mulțumim că l-ați verificat!

Pasul 1: Adăugați câteva componente

Adăugați câteva componente
Adăugați câteva componente
Adăugați câteva componente
Adăugați câteva componente
Adăugați câteva componente
Adăugați câteva componente

Veți avea nevoie de câteva componente de bază. Acestea includ:

  • Placa Arduino
  • Pană de pâine

Adăugați-le căutându-le și făcând clic-glisându-le în zona din mijloc.

Așezați panoul de deasupra Arduino. Este mai ușor să vizualizați conexiunile ulterior.

Pasul 2: o notă despre Breadboards

O Notă Despre Breadboards
O Notă Despre Breadboards

Un panou de verificare este un dispozitiv foarte util pentru prototipuri rapide. Îl folosim pentru a conecta componente. Unele lucruri de remarcat.

  1. Punctele sunt conectate vertical, dar linia din mijloc separă această conexiune de coloanele de sus și de jos.
  2. Coloanele nu sunt conectate de la stânga la dreapta, ca în rând. Aceasta înseamnă că toate componentele ar trebui să fie conectate între coloane, mai degrabă decât în jos pe verticală.
  3. Dacă trebuie să utilizați butoane sau comutatoare, conectați-le la pauză în mijloc. Vom vizita acest lucru într-un tutorial ulterior.

Pasul 3: Adăugați doi senzori

Adăugați doi senzori
Adăugați doi senzori

Cei doi senzori pe care îi folosim sunt un senzor fotosensibil și un senzor de temperatură.

Acești senzori evaluează lumina și temperatura. Folosim Arduino pentru a citi valoarea și a o afișa în monitorul serial de pe Arduino.

Căutați și adăugați cei doi senzori. Asigurați-vă că sunt poziționate peste coloanele de pe panou. Puneți suficient spațiu între ele pentru a le facilita vizualizarea.

Pasul 4: senzor fotosensibil

Senzor fotosensibil
Senzor fotosensibil
Senzor fotosensibil
Senzor fotosensibil
Senzor fotosensibil
Senzor fotosensibil
Senzor fotosensibil
Senzor fotosensibil
  1. Pentru senzorul fotosensibil, adăugați un fir de la pinul de 5V de pe Arduino la aceeași coloană ca piciorul drept de pe partea din panou. Schimbați culoarea firului în roșu.
  2. Conectați piciorul stâng prin pinul din aceeași coloană la pinul A0 (A-zero) de pe Arduino. Acesta este pinul analogic, pe care îl vom folosi pentru a citi valoarea de la senzor. Colorează acest fir galben sau altceva decât roșu sau negru.
  3. Plasați un rezistor (căutați și faceți clic-trageți) pe tablă. Aceasta completează circuitul și protejează senzorul și pinul.

    • Întoarceți-l, astfel încât să treacă peste coloane.
    • Conectați un picior la coloana piciorului drept de pe panou
    • Așezați un fir de la celălalt capăt al rezistorului la sol

      Schimbați culoarea firului în negru

  4. Verificați dublu toate conexiunile. Dacă ceva nu este la locul potrivit, acest lucru nu va funcționa corect.

Pasul 5: Porniți codul

Porniți codul
Porniți codul
Porniți codul
Porniți codul
Porniți codul
Porniți codul

Să ne uităm la codul pentru această componentă.

În primul rând, uitați-vă la a treia imagine din acest pas. Conține câteva coduri cu două funcții:

configurare nulă ()

bucla nulă ()

În C ++, toate funcțiile oferă tipul lor de returnare, apoi numele, apoi cele două paranteze rotunde care pot fi folosite pentru a trece în argumente, de obicei ca variabile. În acest caz, tipul de returnare este nul sau nimic. Numele este configurat și funcția nu acceptă argumente.

Funcția de configurare se execută o dată când se pornește Arduino (când îl conectați sau atașați baterii).

Funcția buclă rulează într-o buclă constantă de la milisecunda finalizată de funcția de configurare.

Tot ceea ce puneți în funcția de buclă va rula atunci când rulează Arduino. Tot ce se află în afară va rula numai atunci când este chemat. Ca și cum am defini și am numi o altă funcție în afara buclei.

Sarcină

Deschideți panoul Cod cu butonul din Tinkercad. Schimbați meniul derulant Blocuri la Text. De acord cu caseta de avertizare care apare. Acum, ștergeți tot ce vedeți, cu excepția textului din a treia imagine din acest pas.

Variabile

Pentru a începe, trebuie să atribuim câteva variabile, astfel încât să facem codul nostru cu adevărat eficient.

Variabilele sunt ca niște găleți care pot conține un singur obiect (C ++ este ceea ce numim orientat spre obiect). Da, avem tablouri, dar acestea sunt variabile speciale și vom vorbi despre ele mai târziu. Când atribuim o variabilă, trebuie să-i spunem ce tip este, apoi să-i dăm o valoare. Arată așa:

int someVar = A0;

Deci, am atribuit o variabilă și i-am dat tip int. Un int este un număr întreg sau un număr întreg.

„Dar nu ai folosit un număr întreg!”, Te aud spunând. Este adevărat.

Arduino face ceva special pentru noi, astfel încât să putem folosi A0 ca număr întreg, deoarece într-un alt fișier definește A0 ca un întreg, deci putem folosi constanta A0 pentru a ne referi la acest număr întreg fără a fi nevoie să știm ce este. Dacă am tasta doar 0, ne-am referi la pinul digital din poziția 0, care nu ar funcționa.

Deci, pentru codul nostru vom scrie o variabilă pentru senzorul pe care l-am atașat. Deși îți recomand să îi dai un nume simplu, asta depinde de tine.

Codul dvs. ar trebui să arate astfel:

int lightSensor = A0;

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

Acum, să-i spunem lui Arduino cum să manipuleze senzorul de pe acel pin. Vom rula o funcție în interiorul setării pentru a seta modul pin și pentru a spune Arduino unde să o caute.

int lightSensor = A0;

void setup () {pinMode (lightSensor, INPUT); } bucla nulă () {}

funcția pinMode îi spune lui Arduino că pinul (A0) va fi folosit ca pin INPUT. Rețineți camelCaseUsed (a se vedea fiecare primă literă este cu majuscule, deoarece în ea are cocoașe, deci … camel …!) Pentru variabilele și numele funcțiilor. Aceasta este o convenție și bine să te obișnuiești.

În cele din urmă, să folosim funcția analogRead pentru a obține niște date.

int lightSensor = A0;

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

Veți vedea că am stocat citirea într-o variabilă. Acest lucru este important deoarece trebuie să-l tipărim. Să folosim biblioteca Serial (o bibliotecă este un cod pe care îl putem adăuga la codul nostru pentru a face lucrurile mai rapide să le scriem, doar apelând-o prin definiția sa) pentru a imprima acest lucru pe monitorul serial.

int lightSensor = A0;

void setup () {// Setați modurile pin PinMode (lightSensor, INPUT); // Adăugați biblioteca serială Serial.begin (9600); } void loop () {// Citiți senzorul int reading = analogRead (lightSensor); // Imprimați valoarea pe monitor Serial.print ("Light:"); Serial.println (citire); // întârziere următoarea buclă cu 3 secunde întârziere (3000); }

Câteva lucruri noi! Mai întâi, veți vedea acestea:

// Acesta este un comentariu

Folosim comentarii pentru a le spune altora ce face codul nostru. Ar trebui să le folosiți des. Compilatorul nu le va citi și le va converti în cod.

Acum, am adăugat și biblioteca Serial cu linia

Serial.begin (9600)

Acesta este un exemplu de funcție care acceptă un argument. Ați numit biblioteca Serial, apoi ați rulat o funcție (știm că este o funcție datorită acoladelor rotunde) și ați trecut într-un număr întreg ca argument, setând funcția Serială să funcționeze la 9600baud. Nu vă faceți griji de ce - doar să știți că funcționează, deocamdată.

Următorul lucru pe care l-am făcut a fost să imprimăm pe monitorul serial. Am folosit două funcții:

// Acesta tipărește pe serial fără întrerupere de linie (o intrare la sfârșit)

Serial.print ("Light:"); // Acesta pune în pauza de linie, astfel încât de fiecare dată când citim și scriem, merge pe o nouă linie Serial.println (citire);

Ceea ce este important de văzut este că fiecare are un scop separat. Asigurați-vă că șirurile dvs. utilizează ghilimele duble și că lăsați spațiul după colon. Acest lucru ajută la lizibilitate pentru utilizator.

În cele din urmă, am folosit funcția de întârziere, pentru a ne încetini bucla și a o face să fie citită doar o dată la trei secunde. Acest lucru este scris în mii de secunde. Schimbați-l pentru a citi numai o dată la 5 secunde.

Grozav! Mergem!

Pasul 6: Simulare

Simulare
Simulare
Simulare
Simulare
Simulare
Simulare

Verificați întotdeauna lucrurile funcționând executând simularea. Pentru acest circuit, va trebui, de asemenea, să deschideți simulatorul pentru a verifica dacă funcționează și pentru a vă verifica valorile.

Porniți simularea și verificați monitorul serial. Schimbați valoarea senzorului de lumină făcând clic pe acesta și schimbând valoarea folosind glisorul. Ar trebui să vedeți schimbarea valorii și pe monitorul serial. Dacă nu, sau dacă apăsați butonul Start Simulare primiți erori, reveniți cu atenție și verificați tot codul.

  • Concentrați-vă pe liniile indicate în fereastra roșie de depanare care vă va fi prezentată.
  • Dacă codul dvs. este corect și simularea încă nu funcționează, verificați cablajul.
  • Reîncărcați pagina - este posibil să aveți o eroare de sistem / server fără legătură.
  • Agitați pumnul la computer și verificați din nou. Toți programatorii fac acest lucru. Toate.. Timp.

Pasul 7: Conectați senzorul de temperatură

Conectați senzorul de temperatură
Conectați senzorul de temperatură

Voi presupune că ești pe drumul cel bun acum. Continuați și conectați senzorul de temperatură, așa cum sugerează imaginea. Rețineți amplasarea firelor de 5V și GND în același spațiu cu cele pentru lumină. Este ok. Este ca un circuit paralel și nu va cauza probleme în simulator. Într-un circuit real, ar trebui să utilizați o placă de protecție sau un scut pentru a asigura o mai bună gestionare a energiei și conexiuni.

Acum, să actualizăm codul.

Codul senzorului de temperatură

Acest lucru este puțin mai dificil, dar numai pentru că trebuie să facem câteva calcule pentru a converti citirea. Nu este prea rău.

int lightSensor = A0;

int tempSensor = A1; void setup () {// Setați modurile pin PinMode (lightSensor, INPUT); // Adăugați biblioteca serială Serial.begin (9600); } void loop () {// Senzorul de temperatură // Crearea a două variabile pe o singură linie - oh eficiență! // Float var pentru a stoca o tensiune float zecimală, grade C; // Citiți valoarea pinului și convertiți-o într-o citire de la 0 la 5 // În esență tensiune = (5/1023 = 0,004882814); tensiune = (analogRead (tempSensor) * 0,004882814); // Conversia în grade C gradeC = (tensiune - 0,5) * 100; // Imprimați pe monitorul serial Serial.print ("Temp:"); Serial.print (grade C); Serial.println ("oC"); // Citiți senzorul int reading = analogRead (lightSensor); // Imprimați valoarea pe monitor Serial.print ("Light:"); Serial.println (citire); // întârziere următoarea buclă cu 3 secunde întârziere (3000); }

Am făcut câteva actualizări ale codului. Să ne plimbăm individual.

În primul rând, am adăugat linia

int tempSensor = A1;

La fel ca lightSensor, trebuie să stochez valoarea într-o variabilă pentru a ușura ulterior. Dacă ar fi trebuit să schimb locația acestui senzor (cum ar fi reconectarea plăcii), atunci trebuie să schimb doar o linie de cod, nu să caut în întreaga bază de cod pentru a schimba A0 sau A1 etc.

Apoi, am adăugat o linie pentru a stoca citirea și temperatura într-un float. Notați două variabile pe o singură linie.

tensiune de plutire, grade C;

Acest lucru este foarte util, deoarece reduce numărul de linii pe care trebuie să le scriu și accelerează codul. Cu toate acestea, poate fi mai greu să găsești erori.

Acum, vom face citirea și o vom stoca, apoi o vom converti la valoarea noastră de ieșire.

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

grade C = (tensiune - 0,5) * 100;

Aceste două rânduri arată dificil, dar în prima luăm citirea și o înmulțim cu 0,004 … pentru că convertește 1023 (citirea analogică returnează această valoare) într-o citire din 5.

A doua linie înmulțește citirea cu 100 pentru a muta punctul zecimal. Asta ne dă temperatura. Ingrijit!

Pasul 8: Testare și verificare

Testarea și verificarea
Testarea și verificarea

Toate lucrurile vor fi planificate, ar trebui să aveți un circuit de lucru. Testați executând simularea și utilizând monitorul serial. Dacă aveți erori, verificați, verificați din nou și scuturați pumnul.

Ai reușit? Împărtășește-ne și spune-ne povestea ta!

Acesta este circuitul final încorporat pentru dvs., astfel încât să puteți juca / testa creația finală. Vă mulțumim pentru finalizarea tutorialului!

Recomandat: