Innholdsfortegnelse:

Arduino Datalogger: 8 trinn (med bilder)
Arduino Datalogger: 8 trinn (med bilder)

Video: Arduino Datalogger: 8 trinn (med bilder)

Video: Arduino Datalogger: 8 trinn (med bilder)
Video: Amazing arduino project 2024, Juli
Anonim
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger

I denne opplæringen skal vi lage en enkel datalogger ved hjelp av Arduino. Poenget er å lære det grunnleggende om å bruke Arduino for å fange informasjon og skrive ut til terminalen. Vi kan bruke dette grunnleggende oppsettet til å fullføre en rekke oppgaver.

Slik kommer du i gang:

Du trenger en Tinkercad (www.tinkercad.com) konto. Gå over og registrer deg med din e -post eller sosiale medier.

Når du logger deg på, kommer du til Tinkercad Dashboard. Klikk "Kretser" til venstre og velg "Opprett ny krets". La oss komme i gang!

Du finner hele filen på TInkercad Circuits - Takk for at du sjekket den!

Trinn 1: Legg til noen komponenter

Legg til noen komponenter
Legg til noen komponenter
Legg til noen komponenter
Legg til noen komponenter
Legg til noen komponenter
Legg til noen komponenter

Du trenger noen grunnleggende komponenter. Disse inkluderer:

  • Arduino bord
  • Brødbrett

Legg til dem ved å søke etter dem og klikk-dra dem til det midterste området.

Legg brødbrettet over Arduino. Det gjør det lettere å se tilkoblingene senere.

Trinn 2: En merknad om brødbrett

En merknad om brødbrett
En merknad om brødbrett

Et brødbrett er en super nyttig enhet for rask prototyping. Vi bruker den til å koble til komponenter. Noen ting å merke seg.

  1. Prikkene er koblet vertikalt, men linjen i midten skiller denne forbindelsen fra topp- og bunnkolonnen.
  2. Kolonner er ikke koblet til venstre mot høyre, som på tvers av raden. Dette betyr at alle komponenter bør kobles på tvers av kolonnene i stedet for å gå ned dem vertikalt.
  3. Hvis du trenger å bruke knapper eller brytere, kobler du dem på tvers av pausen i midten. Vi besøker dette i en senere opplæring.

Trinn 3: Legg til to sensorer

Legg til to sensorer
Legg til to sensorer

De to sensorene vi bruker er en lysfølsom sensor og temperatursensor.

Disse sensorene evaluerer lys og temperatur. Vi bruker Arduino til å lese verdien og vise den i den serielle skjermen på Arduino.

Søk etter og legg til de to sensorene. Sørg for at de er plassert på tvers av kolonnene på brødbrettet. Legg nok plass mellom dem for å gjøre det lettere å se dem.

Trinn 4: Lysfølsom sensor

Lysfølsom sensor
Lysfølsom sensor
Lysfølsom sensor
Lysfølsom sensor
Lysfølsom sensor
Lysfølsom sensor
Lysfølsom sensor
Lysfølsom sensor
  1. For den lysfølsomme sensoren, legg til en ledning fra 5V -pinnen på Arduino til samme kolonne som høyre ben på delen i brødbrettet. Endre trådfargen til rød.
  2. Koble venstre ben via pinnen i samme kolonne til A0 (A-null) pinnen på Arduino. Dette er den analoge pinnen, som vi vil bruke til å lese verdien fra sensoren. Farg denne tråden gul eller noe annet enn rødt eller svart.
  3. Plasser en motstand (søk og klikk-dra) på brettet. Dette fullfører kretsen og beskytter sensoren og pinnen.

    • Snu den slik at den går over kolonnene.
    • Koble ett ben til høyre benkolonne på brødbrettet
    • Plasser en ledning fra den andre enden av motstanden til bakken

      Endre trådfargen til svart

  4. Dobbeltsjekk alle tilkoblinger. Hvis noe ikke er på rett sted, vil dette ikke fungere som det skal.

Trinn 5: Start koden

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

La oss se på koden for denne komponenten.

Se først på det tredje bildet i dette trinnet. Den inneholder noen kode med to funksjoner:

ugyldig oppsett ()

hulrom ()

I C ++ gir alle funksjoner sin returtype, deretter navnet, deretter de to runde parentesene som kan brukes til å passere i argumenter, vanligvis som variabler. I dette tilfellet er returtypen ugyldig eller ingenting. Navnet er oppsett og funksjonen tar ingen argumenter.

Oppsettfunksjonen kjøres en gang når Arduino starter (når du kobler den til eller setter i batterier).

Sløyfefunksjonen kjøres i en konstant sløyfe fra millisekundet som oppsettfunksjonen fullfører.

Alt du legger i loop -funksjonen vil kjøre når Arduino kjører. Alt utenfor det vil bare kjøre når det blir ringt. Som om vi definerte og kalte en annen funksjon utenfor løkken.

Oppgave

Åpne kodepanelet med knappen i Tinkercad. Endre rullegardinmenyen Blokker til Tekst. Godta advarselsboksen som dukker opp. Slett nå alt du ser bortsett fra teksten i det tredje bildet i dette trinnet.

Variabler

For å komme i gang må vi tildele noen variabler, slik at vi gjør koden vår veldig effektiv.

Variabler er som bøtter som bare kan inneholde ett objekt (C ++ er det vi kaller objektorientert). Ja, vi har matriser, men dette er spesielle variabler, og vi skal snakke om dem senere. Når vi tildeler en variabel, må vi fortelle hvilken type det er, og deretter gi den en verdi. Det ser slik ut:

int someVar = A0;

Så vi tildelte en variabel og ga den int. En int er et helt tall eller et helt tall.

"Men du brukte ikke et helt tall!", Hører jeg deg si. Det er sant.

Arduino gjør noe spesielt for oss, slik at vi kan bruke A0 som et heltall, fordi det i en annen fil definerer A0 som et heltall, så vi kan bruke A0 -konstanten til å referere til dette heltallet uten å måtte vite hva det er. Hvis vi bare skrev 0, ville vi referert til den digitale pinnen i posisjon 0, som ikke ville fungere.

Så for koden vår vil vi skrive en variabel for sensoren vi har festet. Selv om jeg anbefaler å gi det et enkelt navn, er det opp til deg.

Koden din skal se slik ut:

int lightSensor = A0;

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

La oss nå fortelle Arduino hvordan du skal håndtere sensoren på den pinnen. Vi kjører en funksjon inne i oppsettet for å sette pin -modus og fortelle Arduino hvor du skal lete etter den.

int lightSensor = A0;

ugyldig oppsett () {pinMode (lightSensor, INPUT); } void loop () {}

pinMode -funksjonen forteller Arduino at pinnen (A0) vil bli brukt som en INPUT -pinne. Legg merke til camelCaseUsed (se hver første bokstav er en stor bokstav, ettersom den har pukler, derav … kamel …!) For variablene og funksjonsnavnene. Dette er en konvensjon og godt å bli vant til.

Til slutt, la oss bruke analogRead -funksjonen for å få noen data.

int lightSensor = A0;

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

Du vil se at vi lagret avlesningen i en variabel. Dette er viktig da vi trenger å skrive det ut. La oss bruke det serielle biblioteket (et bibliotek er kode vi kan legge til i koden vår for å gjøre ting raskere for oss å skrive, bare ved å kalle det etter definisjonen) for å skrive ut dette til den serielle skjermen.

int lightSensor = A0;

void setup () {// Angi pin -moduser pinMode (lightSensor, INPUT); // Legg til seriebiblioteket Serial.begin (9600); } void loop () {// Les sensoren int reading = analogRead (lightSensor); // Skriv ut verdien til skjermen Serial.print ("Light:"); Serial.println (lesing); // forsink neste sløyfe med 3 sekunders forsinkelse (3000); }

Noen nye ting! Først ser du disse:

// Dette er en kommentar

Vi bruker kommentarer for å fortelle andre mennesker hva koden vår gjør. Du bør bruke disse ofte. Kompilatoren vil ikke lese disse og konvertere dem til kode.

Nå har vi også lagt til det serielle biblioteket med linjen

Serial.begin (9600)

Dette er et eksempel på en funksjon som tar et argument. Du kalte biblioteket Serial og kjørte deretter en funksjon (vi vet at det er en funksjon på grunn av de runde bukseselene) og sendte inn et heltall som et argument, og satte Serial -funksjonen til å fungere på 9600baud. Ikke bekymre deg hvorfor - bare vet at det fungerer, for nå.

Det neste vi gjorde var å skrive ut på den serielle skjermen. Vi brukte to funksjoner:

// Denne skriver ut til føljetonen uten linjeskift (en enter på slutten)

Serial.print ("Lys:"); // Denne setter inn linjeskiftet, så hver gang vi leser og skriver, går den på en ny linje Serial.println (lesing);

Det som er viktig å se er at hver har et eget formål. Sørg for at strengene dine bruker doble anførselstegn og at du forlater mellomrommet etter kolon. Det hjelper lesbarheten for brukeren.

Til slutt brukte vi forsinkelsesfunksjonen, for å bremse sløyfen og bare lese den hvert tredje sekund. Dette er skrevet i tusenvis av et sekund. Endre den til å lese bare en gang hvert 5. sekund.

Flott! Vi går!

Trinn 6: Simulering

Simulering
Simulering
Simulering
Simulering
Simulering
Simulering

Sjekk alltid at ting fungerer ved å kjøre simuleringen. For denne kretsen må du også åpne simulatoren for å kontrollere at den fungerer og kontrollere verdiene dine.

Start simuleringen og sjekk den serielle skjermen. Endre verdien av lyssensoren ved å klikke på den og endre verdien ved hjelp av glidebryteren. Du bør også se verdiendringen i den serielle skjermen. Hvis den ikke gjør det, eller hvis du får feil på Start Simulering -knappen, gå forsiktig tilbake og sjekk all koden.

  • Fokuser på linjene som er angitt i det røde feilsøkingsvinduet som vil bli presentert for deg.
  • Hvis koden din er riktig og simuleringen fremdeles ikke fungerer, må du kontrollere ledningene.
  • Last siden på nytt - du kan ha en ikke -relatert system-/serverfeil.
  • Rist neven mot datamaskinen, og sjekk igjen. Alle programmerere gjør dette. Alle. De. Tid.

Trinn 7: Koble opp temperatursensoren

Koble opp temperatursensoren
Koble opp temperatursensoren

Jeg kommer til å anta at du er på rett spor nå. Fortsett og koble opp temperatursensoren som bildet antyder. Legg merke til plasseringen av 5V- og GND -ledningene i samme plass som de for lyset. Dette er greit. Det er som en parallell krets og vil ikke forårsake problemer i simulatoren. I en faktisk krets bør du bruke et breakout -kort eller skjold for å gi bedre strømstyring og tilkoblinger.

La oss oppdatere koden.

Tempsensorkoden

Dette er litt mer vanskelig, men bare fordi vi må regne litt for å konvertere lesingen. Det er ikke så ille.

int lightSensor = A0;

int tempSensor = A1; ugyldig oppsett () {// Angi pin -moduser pinMode (lightSensor, INPUT); // Legg til seriebiblioteket Serial.begin (9600); } void loop () {// Temp sensor // Opprette to variabler på en linje - oh effektivitet! // Float var for å lagre en desimal flytespenning, graderC; // Les verdien av pinnen og konverter den til en avlesning fra 0 - 5 // I hovedsak spenning = (5/1023 = 0.004882814); spenning = (analogRead (tempSensor) * 0,004882814); // Konverter til grader C graderC = (spenning - 0,5) * 100; // Skriv ut til den serielle skjermen Serial.print ("Temp:"); Serial.print (graderC); Serial.println ("oC"); // Les sensoren int reading = analogRead (lightSensor); // Skriv ut verdien til skjermen Serial.print ("Light:"); Serial.println (lesing); // forsink neste sløyfe med 3 sekunder forsinkelse (3000); }

Jeg har gjort noen oppdateringer av koden. La oss gå gjennom dem individuelt.

Først la jeg til linjen

int tempSensor = A1;

På samme måte som lightSensor, må jeg lagre verdien i en variabel for å gjøre det lettere senere. Hvis jeg måtte endre plasseringen av denne sensoren (som å koble kortet til), trenger jeg bare å endre den ene linjen med kode, ikke søke gjennom hele kodebasen for å endre A0 eller A1, etc.

Deretter la vi til en linje for å lagre avlesningen og temperaturen i et flyte. Legg merke til to variabler på en linje.

flytespenning, graderC;

Dette er veldig nyttig fordi det reduserer antall linjer jeg må skrive og fremskynder koden. Det kan imidlertid være vanskeligere å finne feil.

Nå skal vi lese og lagre den, og deretter konvertere den til vår utgangsverdi.

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

graderC = (spenning - 0,5) * 100;

Disse to linjene ser vanskelige ut, men i den første tar vi avlesningen og multipliserer den med 0,004 … fordi den konverterer 1023 (den analoge lesningen returnerer denne verdien) til en måling av 5.

Den andre linjen der multipliserer lesningen med 100 for å flytte desimaltegnet. Det gir oss temperaturen. Ryddig!

Trinn 8: Testing og kontroll

Testing og kontroll
Testing og kontroll

Alt som planlegges, du bør ha en arbeidskrets. Test ved å kjøre simuleringen og bruke den serielle skjermen. Hvis du har feil, sjekk, sjekk igjen og rist neven.

Klarte du det? Del og fortell oss din historie!

Dette er den siste kretsen som er innebygd for deg, slik at du kan spille/teste den siste opprettelsen. Takk for at du fullførte opplæringen!

Anbefalt: