Turinys:

„Arduino Datalogger“: 8 žingsniai (su nuotraukomis)
„Arduino Datalogger“: 8 žingsniai (su nuotraukomis)

Video: „Arduino Datalogger“: 8 žingsniai (su nuotraukomis)

Video: „Arduino Datalogger“: 8 žingsniai (su nuotraukomis)
Video: Using Micro SD Card and Data logging with Arduino | Arduino Step by Step Course Lesson 106 2024, Lapkritis
Anonim
„Arduino“duomenų katalogas
„Arduino“duomenų katalogas
„Arduino“duomenų katalogas
„Arduino“duomenų katalogas

Šioje pamokoje mes padarysime paprastą duomenų kaupiklį naudodami „Arduino“. Esmė yra išmokti pačius „Arduino“naudojimo pagrindus informacijai fiksuoti ir spausdinti į terminalą. Šią pagrindinę sąranką galime naudoti įvairioms užduotims atlikti.

Pradėti:

Jums reikės „Tinkercad“(www.tinkercad.com) paskyros. Užsukite ir prisiregistruokite naudodami savo el. Pašto ar socialinės žiniasklaidos paskyrą.

Prisijungę pateksite į „Tinkercad“prietaisų skydelį. Kairėje spustelėkite „Grandinės“ir pasirinkite „Sukurti naują grandinę“. Pradėkime!

Visą failą galite rasti „TInkercad Circuits“- ačiū, kad jį patikrinote!

1 žingsnis: pridėkite kai kuriuos komponentus

Pridėkite keletą komponentų
Pridėkite keletą komponentų
Pridėkite keletą komponentų
Pridėkite keletą komponentų
Pridėkite keletą komponentų
Pridėkite keletą komponentų

Jums reikės kai kurių pagrindinių komponentų. Jie apima:

  • „Arduino“lenta
  • Bandomoji Lenta

Pridėkite juos ieškodami ir spustelėkite, vilkdami juos į vidurinę sritį.

Padėkite duonos lentą virš „Arduino“. Vėliau lengviau peržiūrėti ryšius.

2 veiksmas: pastaba apie „Breadboards“

Pastaba apie duonos lentas
Pastaba apie duonos lentas

Duonos lenta yra labai naudingas prietaisas greitam prototipų kūrimui. Mes jį naudojame komponentams sujungti. Į kai kuriuos dalykus reikia atkreipti dėmesį.

  1. Taškai yra sujungti vertikaliai, tačiau viduryje esanti linija atskiria šį ryšį nuo viršutinio ir apatinio stulpelių.
  2. Stulpeliai nėra sujungti iš kairės į dešinę, kaip ir visoje eilutėje. Tai reiškia, kad visi komponentai turi būti sujungti skersai stulpelių, o ne žemyn vertikaliai.
  3. Jei jums reikia naudoti mygtukus ar jungiklius, prijunkite juos per pertrauką viduryje. Mes tai aplankysime vėliau.

3 žingsnis: pridėkite du jutiklius

Pridėkite du jutiklius
Pridėkite du jutiklius

Du mūsų naudojami jutikliai yra šviesai jautrus jutiklis ir temperatūros jutiklis.

Šie jutikliai įvertina šviesą ir temperatūrą. Mes naudojame „Arduino“, norėdami nuskaityti vertę ir parodyti ją „Arduino“serijos monitoriuje.

Ieškokite ir pridėkite du jutiklius. Įsitikinkite, kad jie yra ant duonos lentos stulpelių. Tarp jų palikite pakankamai vietos, kad būtų lengviau juos pamatyti.

4 žingsnis: šviesai jautrus jutiklis

Šviesai jautrus jutiklis
Šviesai jautrus jutiklis
Šviesai jautrus jutiklis
Šviesai jautrus jutiklis
Šviesai jautrus jutiklis
Šviesai jautrus jutiklis
Šviesai jautrus jutiklis
Šviesai jautrus jutiklis
  1. Šviesai jautriam jutikliui prijunkite laidą iš 5 V kištuko ant „Arduino“toje pačioje stulpelyje, kaip ir dešinė kojelė ant duonos lentos. Pakeiskite vielos spalvą į raudoną.
  2. Prijunkite kairę koją per to paties stulpelio kaištį prie „Arduino“kaiščio A0 (A-nulis). Tai yra analoginis kaištis, kurį naudosime skaitydami jutiklio vertę. Nuspalvinkite šią vielą geltona spalva arba kažkuo kitu, išskyrus raudoną ar juodą.
  3. Įdėkite rezistorių (ieškokite ir spustelėkite ir vilkite) ant lentos. Tai užbaigia grandinę ir apsaugo jutiklį ir kaištį.

    • Pasukite jį taip, kad jis eitų per stulpelius.
    • Prijunkite vieną koją prie duonos lentos dešinės kojos stulpelio
    • Įdėkite laidą iš kito rezistoriaus galo į žemę

      Pakeiskite laido spalvą į juodą

  4. Dar kartą patikrinkite visas jungtis. Jei kažkas yra netinkamoje vietoje, tai neveiks tinkamai.

5 veiksmas: paleiskite kodą

Pradėkite kodą
Pradėkite kodą
Pradėkite kodą
Pradėkite kodą
Pradėkite kodą
Pradėkite kodą

Pažvelkime į šio komponento kodą.

Pirmiausia pažvelkite į trečiąjį šio žingsnio vaizdą. Jame yra kodas su dviem funkcijomis:

negaliojanti sąranka ()

tuštumos kilpa ()

Naudojant C ++, visos funkcijos pateikia grąžinimo tipą, tada pavadinimą, tada du apvalius skliaustus, kuriuos galima naudoti perduodant argumentus, dažniausiai kaip kintamuosius. Tokiu atveju grąžinimo tipas yra niekinis arba nieko nėra. Pavadinimas nustatytas ir funkcija nereikalauja jokių argumentų.

Sąrankos funkcija veikia vieną kartą, kai „Arduino“paleidžiama (kai prijungiate arba pridedate baterijas).

Ciklo funkcija veikia pastoviu ciklu nuo milisekundės, kai sąrankos funkcija baigta.

Viskas, ką įdėjote į ciklo funkciją, bus paleista, kai paleidžiamas „Arduino“. Viskas, kas yra lauke, veiks tik paskambinus. Pavyzdžiui, jei mes apibrėžtume ir iškvietėme kitą funkciją už kilpos ribų.

Užduotis

Atidarykite kodo skydelį mygtuku Tinkercad. Pakeiskite išskleidžiamąjį meniu Blokai į Tekstas. Sutikite su iššokančiu įspėjamuoju langeliu. Dabar ištrinkite viską, ką matote, išskyrus trečio paveikslėlio tekstą.

Kintamieji

Norėdami pradėti, turime priskirti kai kuriuos kintamuosius, kad mūsų kodas būtų tikrai efektyvus.

Kintamieji yra tarsi kibirai, kuriuose telpa tik vienas objektas (C ++ yra tai, ką vadiname orientuotu į objektą). Taip, mes turime masyvus, tačiau tai yra specialūs kintamieji ir apie juos kalbėsime vėliau. Kai priskiriame kintamąjį, turime jam pasakyti, kokio tipo jis yra, tada suteikti jam reikšmę. Tai atrodo taip:

int someVar = A0;

Taigi, mes priskyrėme kintamąjį ir davėme jam tipą int. Int yra sveikasis skaičius arba sveikasis skaičius.

„Bet jūs nenaudojote viso skaičiaus!“, - girdžiu jus sakant. Tai tiesa.

„Arduino“mums daro kažką ypatingo, kad galėtume naudoti A0 kaip sveiką skaičių, nes kitame faile jis A0 apibrėžiamas kaip sveikasis skaičius, todėl galime naudoti A0 konstantą, norėdami nurodyti šį sveikąjį skaičių, nežinodami, kas tai yra. Jei ką tik įvestume 0, mes nurodytume skaitmeninį kaištį 0 padėtyje, kuris neveiks.

Taigi, savo kodui mes parašysime kintamąjį jutikliui, kurį pridėjome. Nors aš rekomenduoju suteikti jam paprastą pavadinimą, tai priklauso nuo jūsų.

Jūsų kodas turėtų atrodyti taip:

int lightSensor = A0;

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

Dabar pasakykime „Arduino“, kaip valdyti to kaiščio jutiklį. Sąrankoje paleisime funkciją, kad nustatytume kaiščio režimą ir nurodytume Arduino, kur jo ieškoti.

int lightSensor = A0;

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

„pinMode“funkcija nurodo „Arduino“, kad kaištis (A0) bus naudojamas kaip įvesties kaištis. Atkreipkite dėmesį į kintamuosius ir funkcijų pavadinimus „camelCaseUsed“(žr. Kiekvieną pirmąją raidę yra didžioji, nes joje yra kupros, taigi … kupranugaris …!). Tai yra susitarimas ir gerai priprasti.

Galiausiai, norėdami gauti tam tikrų duomenų, naudokime funkciją analogRead.

int lightSensor = A0;

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

Pamatysite, kad rodmenis išsaugojome kintamajame. Tai svarbu, nes turime ją atspausdinti. Naudokime serijinę biblioteką (biblioteka yra kodas, kurį galime pridėti prie savo kodo, kad greičiau rašytume, tiesiog vadindami ją pagal savo apibrėžimą), kad išspausdintume ją serijiniame monitoriuje.

int lightSensor = A0;

void setup () {// Nustatyti kaiščio režimus pinMode (lightSensor, INPUT); // Pridėti serijinę biblioteką Serial.begin (9600); } void loop () {// Skaityti jutiklį int reading = analogRead (lightSensor); // Spausdinkite vertę į monitorių Serial.print ("Light:"); Serial.println (skaitymas); // atidėti sekančią kilpą 3 sekundžių vėlavimu (3000); }

Keletas naujų dalykų! Pirmiausia pamatysite šiuos dalykus:

// Tai komentaras

Mes naudojame komentarus, kad kitiems žmonėms pasakytume, ką daro mūsų kodas. Turėtumėte juos dažnai naudoti. Kompiliatorius jų neskaitys ir konvertuos į kodą.

Dabar prie eilutės pridėjome serijinę biblioteką

Serial.begin (9600)

Tai yra funkcijos, kuri priima argumentą, pavyzdys. Jūs pavadinote biblioteką „Serial“, tada paleidote funkciją (žinome, kad tai funkcija dėl apvalių skliaustų) ir perduodate sveiku skaičiumi kaip argumentą, nustatydami serijos funkciją veikti 9600baud. Nesijaudinkite kodėl - tiesiog žinokite, kad tai veikia.

Kitas dalykas, kurį mes padarėme, buvo spausdinti į serijinį monitorių. Mes naudojome dvi funkcijas:

// Šis spausdinamas į seriją be eilutės pertraukos (įvesties pabaigoje)

Serial.print („Šviesa:“); // Šis įterpia eilutės pertrauką, todėl kiekvieną kartą, kai skaitome ir rašome, ji eina į naują eilutę Serial.println (skaitymas);

Svarbu pamatyti, kad kiekvienas turi atskirą tikslą. Įsitikinkite, kad eilutėse naudojamos dvigubos kabutės ir ar paliekate tarpą po dvitaškio. Tai padeda vartotojui skaityti.

Galiausiai, mes panaudojome atidėjimo funkciją, kad sulėtintume ciklą ir priverstume jį skaityti tik kartą per tris sekundes. Tai parašyta per tūkstančius sekundžių. Pakeiskite, kad skaitytumėte tik kartą per 5 sekundes.

Puiku! Važiuojam!

6 žingsnis: modeliavimas

Modeliavimas
Modeliavimas
Modeliavimas
Modeliavimas
Modeliavimas
Modeliavimas

Visada patikrinkite, ar viskas veikia, atlikdami modeliavimą. Šiai grandinei taip pat turėsite atidaryti simuliatorių, kad patikrintumėte, ar jis veikia, ir patikrinti savo vertes.

Pradėkite modeliavimą ir patikrinkite serijinį monitorių. Pakeiskite šviesos jutiklio vertę spustelėdami jį ir naudodami slankiklį. Taip pat turėtumėte matyti vertės pasikeitimą serijiniame monitoriuje. Jei ne, arba jei paspaudę mygtuką Pradėti modeliavimą gaunate klaidų, atsargiai grįžkite atgal ir patikrinkite visą savo kodą.

  • Sutelkite dėmesį į eilutes, nurodytas raudoname derinimo lange, kuris jums bus pateiktas.
  • Jei jūsų kodas yra teisingas ir modeliavimas vis tiek neveikia, patikrinkite laidus.
  • Įkelkite puslapį iš naujo - gali būti nesusijusi sistemos/serverio klaida.
  • Papurtykite kumštį prie kompiuterio ir dar kartą patikrinkite. Visi programuotojai tai daro. Visi. The. Laikas.

7 žingsnis: prijunkite temperatūros jutiklį

Prijunkite temperatūros jutiklį
Prijunkite temperatūros jutiklį

Manau, kad dabar einate teisingu keliu. Eikite į priekį ir prijunkite temperatūros jutiklį, kaip parodyta paveikslėlyje. Atkreipkite dėmesį į 5V ir GND laidų išdėstymą toje pačioje erdvėje kaip ir šviesai. Tai yra gerai. Tai panašu į lygiagrečią grandinę ir nesukels problemų simuliatoriuje. Faktinėje grandinėje turėtumėte naudoti pertraukimo plokštę arba skydą, kad galėtumėte geriau valdyti energiją ir prijungti.

Dabar atnaujinkime kodą.

Temperatūros jutiklio kodas

Tai šiek tiek sudėtingiau, bet tik todėl, kad turime atlikti tam tikrus skaičiavimus, kad perskaičiuotume rodmenis. Tai nėra labai blogai.

int lightSensor = A0;

int tempSensor = A1; void setup () {// Nustatyti kaiščio režimus pinMode (lightSensor, INPUT); // Pridėti serijinę biblioteką Serial.begin (9600); } void loop () {// Temperatūros jutiklis // Dviejų kintamųjų sukūrimas vienoje eilutėje - o efektyvumas! // Float var, norint išsaugoti dešimtainę plūdės įtampą, laipsnių C; // Perskaitykite kaiščio vertę ir konvertuokite ją į rodmenį nuo 0 iki 5 // Iš esmės įtampa = (5/1023 = 0,004882814); įtampa = (analogRead (tempSensor) * 0,004882814); // Konvertuoti į laipsnius C laipsniųC = (įtampa - 0,5) * 100; // Spausdinti į serijinį monitorių Serial.print ("Temp:"); Serijinis atspaudas (laipsniai C); Serial.println ("oC"); // Skaityti jutiklį int reading = analogRead (lightSensor); // Spausdinkite vertę į monitorių Serial.print ("Light:"); Serial.println (skaitymas); // atidėti sekančią kilpą 3 sekundžių vėlavimu (3000); }

Atnaujinau kodą. Eikime per juos atskirai.

Pirmiausia pridėjau eilutę

int tempSensor = A1;

Kaip ir „lightSensor“, turiu išsaugoti vertę kintamajame, kad vėliau būtų lengviau. Jei turėčiau pakeisti šio jutiklio vietą (pvz., Prijungti plokštę iš naujo), turiu pakeisti tik vieną kodo eilutę, o ne ieškoti visoje kodų bazėje, kad pakeistumėte A0 arba A1 ir pan.

Tada pridėjome eilutę, skirtą rodmenims ir tempui laikyti plūdėje. Atkreipkite dėmesį į du kintamuosius vienoje eilutėje.

plūdės įtampa, laipsnių C;

Tai tikrai naudinga, nes sumažina eilučių, kurias turiu parašyti, skaičių ir pagreitina kodą. Vis dėlto gali būti sunkiau rasti klaidų.

Dabar mes nuskaitysime ir išsaugosime, tada konvertuosime į išvesties vertę.

įtampa = (analogRead (tempSensor) * 0,004882814);

laipsniųC = (įtampa - 0,5) * 100;

Šios dvi eilutės atrodo sunkios, tačiau iš pradžių imame rodmenis ir dauginame juos iš 0,004, nes 1023 konvertuojamas (analoginis rodmuo grąžina šią vertę) į rodmenis iš 5.

Antroji eilutė padaugina tą rodmenį iš 100, kad perkeltų dešimtainį tašką. Tai mums suteikia temperatūrą. Tvarkinga!

8 žingsnis: bandymas ir tikrinimas

Testavimas ir tikrinimas
Testavimas ir tikrinimas

Jei planuojate viską, turėtumėte turėti veikiančią grandinę. Patikrinkite atlikdami modeliavimą ir naudodami nuoseklųjį monitorių. Jei turite klaidų, patikrinkite, patikrinkite dar kartą ir pakratykite kumštį.

Ar pavyko? Pasidalinkite ir papasakokite mums savo istoriją!

Tai yra paskutinė jums įterpta grandinė, kad galėtumėte žaisti/išbandyti galutinį kūrinį. Dėkojame, kad baigėte mokymo programą!

Rekomenduojamas: