Indholdsfortegnelse:

Arduino Datalogger: 8 trin (med billeder)
Arduino Datalogger: 8 trin (med billeder)

Video: Arduino Datalogger: 8 trin (med billeder)

Video: Arduino Datalogger: 8 trin (med billeder)
Video: DIY Temperature Data Logger, 4 - channels 2024, Juli
Anonim
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger

I denne vejledning skal vi lave en simpel datalogger ved hjælp af Arduino. Pointen er at lære det grundlæggende ved at bruge Arduino til at indsamle information og udskrive til terminalen. Vi kan bruge denne grundlæggende opsætning til at fuldføre en række opgaver.

Sådan kommer du i gang:

Du skal bruge en Tinkercad (www.tinkercad.com) konto. Gå over og tilmeld dig med din e -mail- eller sociale mediekonto.

Når du logger ind, kommer du til Tinkercad Dashboard. Klik på "Kredsløb" til venstre, og vælg "Opret nyt kredsløb". Lad os komme igang!

Du kan finde den komplette fil på TInkercad Circuits - Tak fordi du tjekkede den!

Trin 1: Tilføj nogle komponenter

Tilføj nogle komponenter
Tilføj nogle komponenter
Tilføj nogle komponenter
Tilføj nogle komponenter
Tilføj nogle komponenter
Tilføj nogle komponenter

Du skal bruge nogle grundlæggende komponenter. Disse omfatter:

  • Arduino bord
  • Brødbræt

Tilføj dem ved at søge efter dem og klikke og trække dem til det midterste område.

Læg brødbrættet over Arduino. Det gør det lettere at se forbindelserne senere.

Trin 2: En note om brødbrætter

En bemærkning om brødbrætter
En bemærkning om brødbrætter

Et brødbræt er en super nyttig enhed til hurtig prototyping. Vi bruger det til at forbinde komponenter. Nogle ting at bemærke.

  1. Prikkerne er forbundet lodret, men linjen i midten adskiller denne forbindelse fra den øverste og nederste kolonne.
  2. Kolonner er ikke forbundet fra venstre mod højre, som på tværs af rækken. Det betyder, at alle komponenter skal forbindes på tværs af søjlerne frem for ned ad dem lodret.
  3. Hvis du har brug for knapper eller kontakter, skal du forbinde dem på tværs af pausen i midten. Vi besøger dette i en senere vejledning.

Trin 3: Tilføj to sensorer

Tilføj to sensorer
Tilføj to sensorer

De to sensorer, vi bruger, er en lysfølsom sensor og temperatursensor.

Disse sensorer evaluerer lys og temperatur. Vi bruger Arduino til at læse værdien og vise den i den serielle skærm på Arduino.

Søg efter og tilføj de to sensorer. Sørg for, at de er placeret på tværs af søjlerne på brødbrættet. Afsæt nok plads mellem dem for at gøre det lettere at se dem.

Trin 4: Fotosensitiv sensor

Fotosensitiv sensor
Fotosensitiv sensor
Fotosensitiv sensor
Fotosensitiv sensor
Fotosensitiv sensor
Fotosensitiv sensor
Fotosensitiv sensor
Fotosensitiv sensor
  1. For den lysfølsomme sensor skal du tilføje en ledning fra 5V -stiften på Arduino til den samme søjle som det højre ben på delen i brødbrættet. Skift trådfarve til rød.
  2. Forbind det venstre ben via stiften i samme kolonne til A0 (A-zero) stiften på Arduino. Dette er den analoge pin, som vi vil bruge til at aflæse værdien fra sensoren. Farvelæg denne tråd gul eller andet end rødt eller sort.
  3. Placer en modstand (søg og klik-træk) på tavlen. Dette fuldender kredsløbet og beskytter sensoren og stiften.

    • Vend det rundt, så det går på tværs af søjlerne.
    • Forbind det ene ben til den højre benkolonne på brødbrættet
    • Placer en ledning fra den anden ende af modstanden til jorden

      Skift trådfarve til sort

  4. Dobbelttjek alle forbindelser. Hvis noget ikke er det rigtige sted, fungerer det ikke korrekt.

Trin 5: Start koden

Start koden
Start koden
Start koden
Start koden
Start koden
Start koden

Lad os se på koden til denne komponent.

Se først på det tredje billede i dette trin. Den indeholder en kode med to funktioner:

ugyldig opsætning ()

hulrum ()

I C ++ giver alle funktioner deres returtype, derefter navnet, derefter de to runde seler, der kan bruges til at videregive i argumenter, normalt som variabler. I dette tilfælde er returtypen ugyldig eller ingenting. Navnet er opsat, og funktionen tager ingen argumenter.

Opsætningsfunktionen kører en gang, når Arduino starter (når du sætter den i eller sætter batterier i).

Loop -funktionen kører i en konstant loop fra det millisekund, som opsætningsfunktionen fuldfører.

Alt, hvad du putter i loop -funktionen, kører, når Arduino kører. Alt udenfor kører kun, når det kaldes. Ligesom hvis vi definerede og kaldte en anden funktion uden for sløjfen.

Opgave

Åbn Kode -panelet med knappen i Tinkercad. Skift rullemenuen Blokke til Tekst. Accepter advarselsboksen, der dukker op. Slet nu alt, hvad du ser, undtagen teksten i det tredje billede i dette trin.

Variabler

For at komme i gang skal vi tildele nogle variabler, så vi gør vores kode virkelig effektiv.

Variabler er som spande, der kun kan indeholde et objekt (C ++ er det, vi kalder objektorienteret). Ja, vi har arrays, men det er specielle variabler, og vi taler om dem senere. Når vi tildeler en variabel, skal vi fortælle den, hvilken type det er, og derefter give den en værdi. Det ser sådan ud:

int someVar = A0;

Så vi tildelte en variabel og gav den type int. Et int er et helt tal eller et helt tal.

”Men du brugte ikke et helt tal!”, Hører jeg dig sige. Det er rigtigt.

Arduino gør noget særligt for os, så vi kan bruge A0 som et heltal, fordi det i en anden fil definerer A0 som et helt tal, så vi kan bruge A0 -konstanten til at referere til dette heltal uden at skulle vide, hvad det er. Hvis vi bare skrev 0, ville vi henvise til den digitale pin i position 0, hvilket ikke ville fungere.

Så for vores kode skriver vi en variabel for den sensor, vi har knyttet. Selvom jeg anbefaler at give det et simpelt navn, er det op til dig.

Din kode skal se sådan ud:

int lightSensor = A0;

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

Lad os nu fortælle Arduino, hvordan du håndterer sensoren på den pin. Vi kører en funktion inde i opsætningen for at indstille pin -tilstanden og fortælle Arduino, hvor han skal lede efter den.

int lightSensor = A0;

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

pinMode -funktionen fortæller Arduino, at stiften (A0) vil blive brugt som en INPUT -pin. Bemærk camelCaseUsed (se hvert første bogstav er et stort, da det har pukler, derfor … kamel …!) For variablerne og funktionsnavnene. Dette er en konvention og god at vænne sig til.

Lad os endelig bruge analogRead -funktionen til at hente nogle data.

int lightSensor = A0;

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

Du vil se, at vi gemte læsningen i en variabel. Dette er vigtigt, da vi skal udskrive det. Lad os bruge det serielle bibliotek (et bibliotek er kode, vi kan tilføje til vores kode for at gøre tingene hurtigere for os at skrive, bare ved at kalde det efter dets definition) til at udskrive dette til den serielle skærm.

int lightSensor = A0;

void setup () {// Indstil pin -modes pinMode (lightSensor, INPUT); // Tilføj det serielle bibliotek Serial.begin (9600); } void loop () {// Læs sensoren int reading = analogRead (lightSensor); // Udskriv værdien til skærmen Serial.print ("Light:"); Serial.println (læsning); // forsink den næste sløjfe med 3 sekunders forsinkelse (3000); }

Et par nye ting! Først ser du disse:

// Dette er en kommentar

Vi bruger kommentarer til at fortælle andre mennesker, hvad vores kode gør. Du bør bruge disse ofte. Kompilatoren læser ikke disse og konverterer dem til kode.

Nu har vi også tilføjet det serielle bibliotek med linjen

Serial.begin (9600)

Dette er et eksempel på en funktion, der tager et argument. Du kaldte biblioteket Serial og kørte derefter en funktion (vi ved, at det er en funktion på grund af de runde seler) og sendte et heltal som et argument, og indstillede Serial -funktionen til at fungere på 9600baud. Bare rolig hvorfor - bare ved, at det virker, lige nu.

Den næste ting, vi gjorde, var at udskrive til den serielle skærm. Vi brugte to funktioner:

// Denne udskriver til føljetonen uden linjeskift (en indtastning i slutningen)

Serial.print ("Lys:"); // Denne indsætter linjeskiftet, så hver gang vi læser og skriver, går den på en ny linje Serial.println (læsning);

Det, der er vigtigt at se, er, at hver har et særskilt formål. Sørg for, at dine strenge bruger dobbelte anførselstegn, og at du forlader rummet efter tyktarmen. Det hjælper læsbarheden for brugeren.

Endelig brugte vi forsinkelsesfunktionen til at bremse vores loop og få den til kun at blive læst en gang hvert tredje sekund. Dette er skrevet i tusinder af et sekund. Skift til kun at læse en gang hvert 5. sekund.

Store! Vi kører!

Trin 6: Simulering

Simulering
Simulering
Simulering
Simulering
Simulering
Simulering

Kontroller altid, at tingene fungerer ved at køre simuleringen. For dette kredsløb skal du også åbne simulatoren for at kontrollere, at den fungerer og kontrollere dine værdier.

Start simuleringen, og kontroller den serielle skærm. Skift værdien af lyssensoren ved at klikke på den og ændre værdien ved hjælp af skyderen. Du bør også se værdien ændres på den serielle skærm. Hvis det ikke gør det, eller hvis du får fejl, når du trykker på knappen Start simulation, skal du forsigtigt gå tilbage og kontrollere al din kode.

  • Fokuser på de linjer, der er angivet i det røde fejlfindingsvindue, der vil blive præsenteret for dig.
  • Hvis din kode er korrekt, og simuleringen stadig ikke fungerer, skal du kontrollere dine ledninger.
  • Genindlæs siden - du har muligvis en ikke -relateret system-/serverfejl.
  • Ryst din knytnæve ved computeren, og tjek igen. Alle programmerere gør dette. Alle. Det. Tid.

Trin 7: Tilslut temp.sensoren

Tråd op temp sensor
Tråd op temp sensor

Jeg går ud fra, at du er på rette vej nu. Fortsæt med at tilslutte temperatursensoren som billedet antyder. Bemærk placeringen af 5V- og GND -ledningerne i samme rum som dem til lyset. Det er ok. Det er som et parallelt kredsløb og forårsager ikke problemer i simulatoren. I et egentligt kredsløb skal du bruge et breakout board eller skjold til at levere bedre strømstyring og forbindelser.

Lad os nu opdatere koden.

Temp sensor kode

Dette er lidt mere vanskeligt, men kun fordi vi skal lave noget matematik for at konvertere læsningen. Det er ikke så slemt.

int lightSensor = A0;

int tempSensor = A1; void setup () {// Indstil pin -modes pinMode (lightSensor, INPUT); // Tilføj det serielle bibliotek Serial.begin (9600); } void loop () {// Temp sensoren // Oprettelse af to variabler på en linje - åh effektivitet! // Float var for at gemme en decimal flydespænding, graderC; // Læs værdien af nålen, og konverter den til en måling fra 0 - 5 // I det væsentlige spænding = (5/1023 = 0,004882814); spænding = (analogRead (tempSensor) * 0,004882814); // Konverter til grader C graderC = (spænding - 0,5) * 100; // Udskriv til den serielle skærm Serial.print ("Temp:"); Serial.print (graderC); Serial.println ("oC"); // Læs sensoren int aflæsning = analogRead (lightSensor); // Udskriv værdien til skærmen Serial.print ("Light:"); Serial.println (læsning); // forsink den næste sløjfe med 3 sekunders forsinkelse (3000); }

Jeg har lavet nogle opdateringer til koden. Lad os gå gennem dem individuelt.

Først tilføjede jeg linjen

int tempSensor = A1;

Ligesom lightSensor skal jeg gemme værdien i en variabel for at gøre det lettere senere. Hvis jeg skulle ændre placeringen af denne sensor (som f.eks. At genoprette kortet), skal jeg kun ændre den ene linje med kode, ikke søge gennem hele kodebasen for at ændre A0 eller A1 osv.

Derefter tilføjede vi en linje til at gemme aflæsningen og temperaturen i en flyder. Bemærk to variabler på en linje.

flydespænding, graderC;

Dette er virkelig nyttigt, fordi det reducerer antallet af linjer, jeg skal skrive og fremskynder koden. Det kan dog være sværere at finde fejl.

Nu skal vi læse og gemme det og derefter konvertere det til vores outputværdi.

spænding = (analogRead (tempSensor) * 0,004882814);

graderC = (spænding - 0,5) * 100;

Disse to linjer ser svære ud, men i den første tager vi læsningen og multiplicerer den med 0,004 … fordi den konverterer 1023 (den analoge læsning returnerer denne værdi) til en måling ud af 5.

Den anden linje der multiplicerer denne læsning med 100 for at flytte decimalpunktet. Det giver os temperaturen. Pænt!

Trin 8: Test og kontrol

Test og kontrol
Test og kontrol

Alle ting, der planlægges, skal have et arbejdskredsløb. Test ved at køre simuleringen og bruge den serielle skærm. Hvis du har fejl, skal du kontrollere, kontrollere igen og ryste knytnæve.

Klarede du det? Del og fortæl os din historie!

Dette er det sidste kredsløb, der er integreret for dig, så du kan afspille/teste den sidste oprettelse. Tak fordi du gennemførte selvstudiet!

Anbefalede: