Innholdsfortegnelse:
- Trinn 1: Legg til noen komponenter
- Trinn 2: En merknad om brødbrett
- Trinn 3: Legg til to sensorer
- Trinn 4: Lysfølsom sensor
- Trinn 5: Start koden
- Trinn 6: Simulering
- Trinn 7: Koble opp temperatursensoren
- Trinn 8: Testing og kontroll
Video: Arduino Datalogger: 8 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
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
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
Et brødbrett er en super nyttig enhet for rask prototyping. Vi bruker den til å koble til komponenter. Noen ting å merke seg.
- Prikkene er koblet vertikalt, men linjen i midten skiller denne forbindelsen fra topp- og bunnkolonnen.
- 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.
- 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
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
- 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.
- 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.
-
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
- Dobbeltsjekk alle tilkoblinger. Hvis noe ikke er på rett sted, vil dette ikke fungere som det skal.
Trinn 5: 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
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
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
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:
DIY GPS -datalogger for deg neste kjøretur/tursti: 11 trinn (med bilder)
DIY GPS -datalogger for deg neste kjøretur/tursti: Dette er en GPS -datalogger som du kan bruke til flere formål, si at hvis du vil logge den lange kjøreturen du tok i løpet av helgen for å sjekke høstfargene. eller du har en favorittsti du besøker i løpet av høsten hvert år, og du
Alaska Datalogger: 5 trinn (med bilder)
Alaska Datalogger: Alaska er på kanten til å fremme klimaendringer. Den unike posisjonen til å ha et ganske uberørt landskap befolket med en rekke kullgruve -kanarifugler muliggjør mange forskningsmuligheter. Vår venn Monty er en arkeolog som hjelper
Hvordan lage en datalogger for temperatur, PH og oppløst oksygen: 11 trinn (med bilder)
Hvordan lage en datalogger for temperatur, PH og oppløst oksygen: Mål: Lag en datalogger for ≤ $ 500. Den lagrer data for temperatur, pH og DO med et tidsstempel og bruker I2C -kommunikasjon. Hvorfor I2C (interintegrert krets)? Man kan stable opp så mange sensorer på samme linje gitt at hver av dem har
Raspberry Pi Zero W Datalogger: 8 trinn (med bilder)
Raspberry Pi Zero W Datalogger: Ved hjelp av en Raspberry Pi Zero W kan du lage en billig og brukervennlig datalogger, som enten kan kobles til et lokalt wifi -nettverk, eller fungere som et tilgangspunkt i feltet som lar deg laste ned data trådløst med smarttelefonen din. Jeg presenterer
Lag en datalogger med Raspberry Pi: 3 trinn (med bilder)
Lage en datalogger med Raspberry Pi: Denne enkle dataloggeren tar regelmessige lysmålinger med en analog LDR (fotoresistor) og lagrer dem i en tekstfil på din Raspberry Pi. Denne dataloggeren måler og registrerer lysnivået hvert 60. sekund, slik at du kan overvåke ho