Obsah:

Datalogger Arduino: 8 kroků (s obrázky)
Datalogger Arduino: 8 kroků (s obrázky)

Video: Datalogger Arduino: 8 kroků (s obrázky)

Video: Datalogger Arduino: 8 kroků (s obrázky)
Video: Using Micro SD Card and Data logging with Arduino | Arduino Step by Step Course Lesson 106 2024, Červenec
Anonim
Datalogger Arduino
Datalogger Arduino
Datalogger Arduino
Datalogger Arduino

V tomto tutoriálu vytvoříme jednoduchý záznamník dat pomocí Arduina. Jde o to, naučit se úplně základy používání Arduina k získávání informací a tisku na terminál. Toto základní nastavení můžeme použít k dokončení řady úkolů.

Začít:

Budete potřebovat účet Tinkercad (www.tinkercad.com). Přejděte a zaregistrujte se pomocí svého e -mailu nebo účtu sociálních médií.

Přihlášením se dostanete na hlavní panel Tinkercad. Vlevo klikněte na „Okruhy“a vyberte „Vytvořit nový obvod“. Začněme!

Kompletní soubor najdete na TInkercad Circuits - Děkujeme za kontrolu!

Krok 1: Přidejte některé součásti

Přidejte některé komponenty
Přidejte některé komponenty
Přidejte některé komponenty
Přidejte některé komponenty
Přidejte některé komponenty
Přidejte některé komponenty

Budete potřebovat několik základních komponent. Tyto zahrnují:

  • Deska Arduino
  • Prkénko

Přidejte je vyhledáním a přetažením do střední oblasti.

Umístěte prkénko na Arduino. Usnadňuje pozdější zobrazení připojení.

Krok 2: Poznámka o Breadboards

Poznámka k prkénkům
Poznámka k prkénkům

Breadboard je velmi užitečné zařízení pro rychlé prototypování. Používáme jej k připojení komponent. Některé věci na vědomí.

  1. Tečky jsou spojeny svisle, ale čára uprostřed odděluje toto spojení od horního a dolního sloupce.
  2. Sloupce nejsou spojeny zleva doprava, jako v celé řadě. To znamená, že všechny komponenty by měly být spojeny napříč sloupy, nikoli svisle dolů.
  3. Pokud potřebujete použít tlačítka nebo přepínače, připojte je přes konec uprostřed. Navštívíme to v pozdějším tutoriálu.

Krok 3: Přidejte dva senzory

Přidejte dva senzory
Přidejte dva senzory

Dva senzory, které používáme, jsou fotosenzitivní senzor a teplotní senzor.

Tyto senzory vyhodnocují světlo a teplotu. Arduino používáme ke čtení hodnoty a jejímu zobrazení v sériovém monitoru na Arduinu.

Vyhledejte a přidejte dva senzory. Ujistěte se, že jsou umístěny napříč sloupci na prkénku. Umístěte mezi ně dostatek prostoru, aby je bylo lépe vidět.

Krok 4: Fotosenzitivní senzor

Fotosenzitivní senzor
Fotosenzitivní senzor
Fotosenzitivní senzor
Fotosenzitivní senzor
Fotosenzitivní senzor
Fotosenzitivní senzor
Fotosenzitivní senzor
Fotosenzitivní senzor
  1. U fotosenzitivního senzoru přidejte vodič z 5V pinu na Arduinu do stejného sloupce jako pravá noha na části v prkénku. Změňte barvu drátu na červenou.
  2. Připojte levou nohu přes kolík ve stejném sloupci ke kolíku A0 (A-nula) na Arduinu. Toto je analogový pin, který použijeme ke čtení hodnoty ze snímače. Zbarvěte tento vodič žlutě nebo něčím jiným než červeným nebo černým.
  3. Umístěte na desku odpor (hledání a přetahování). Tím je obvod dokončen a chráněn snímač a kolík.

    • Otočte to, aby to šlo přes sloupce.
    • Připojte jednu nohu k pravému sloupku na prkénku
    • Umístěte vodič z druhého konce rezistoru k zemi

      Změňte barvu drátu na černou

  4. Znovu zkontrolujte všechna připojení. Pokud něco není na správném místě, nebude to fungovat správně.

Krok 5: Spusťte kód

Spusťte kód
Spusťte kód
Spusťte kód
Spusťte kód
Spusťte kód
Spusťte kód

Podívejme se na kód této komponenty.

Nejprve se podívejte na třetí obrázek v tomto kroku. Obsahuje nějaký kód se dvěma funkcemi:

neplatné nastavení ()

prázdná smyčka ()

V jazyce C ++ všechny funkce poskytují návratový typ, potom název a dvě kulatá složená závorka, která lze použít k předání argumentů, obvykle jako proměnné. V tomto případě je návratový typ neplatný nebo nic. Název je nastaven a funkce nevyžaduje žádné argumenty.

Funkce nastavení se spustí jednou při spuštění Arduina (když jej zapojíte nebo připojíte baterie).

Funkce smyčky běží v konstantní smyčce od milisekundy, kterou dokončí funkce nastavení.

Vše, co vložíte do funkce smyčky, poběží, když poběží Arduino. Všechno venku, co poběží jen na zavolání. Jako kdybychom definovali a zavolali jinou funkci mimo smyčku.

Úkol

Otevřete panel Kód tlačítkem v Tinkercad. Změňte rozevírací seznam Bloky na Text. Souhlasíte s varovným rámečkem, který se objeví. Nyní v tomto kroku odstraňte vše, co vidíte, kromě textu na třetím obrázku.

Proměnné

Abychom mohli začít, musíme přiřadit některé proměnné, aby byl náš kód opravdu efektivní.

Proměnné jsou jako vědra, která pojmou pouze jeden objekt (C ++ říkáme objektově orientovaný). Ano, máme pole, ale jsou to speciální proměnné a budeme o nich mluvit později. Když přiřadíme proměnnou, musíme jí říci, o jaký typ se jedná, a poté jí dát hodnotu. Vypadá to takto:

int someVar = A0;

Přiřadili jsme tedy proměnnou a dali jí typ int. Int je celé číslo nebo celé číslo.

„Ale nepoužil jsi celé číslo!“, Slyšel jsem, jak říkáš. To je pravda.

Arduino pro nás dělá něco zvláštního, takže můžeme použít A0 jako celé číslo, protože v jiném souboru definuje A0 jako celé číslo, takže můžeme použít konstantu A0 k označení tohoto celého čísla, aniž bychom museli vědět, co to je. Pokud bychom právě zadali 0, odkazovali bychom na digitální pin na pozici 0, což by nefungovalo.

Takže pro náš kód napíšeme proměnnou pro senzor, který jsme připojili. I když doporučuji pojmenovat to jednoduše, je to na vás.

Váš kód by měl vypadat takto:

int lightSensor = A0;

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

Nyní řekněme Arduinu, jak zacházet se senzorem na tomto pinu. V nastavení spustíme funkci, která nastaví režim pinů a řekneme Arduinu, kde ho hledat.

int lightSensor = A0;

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

funkce pinMode říká Arduinu, že pin (A0) bude použit jako pin INPUT. Všimněte si camelCaseUsed (viz každé první písmeno je velké, protože má hrby, tedy … velbloud …!) Pro proměnné a názvy funkcí. Je to konvence a je dobré si na to zvyknout.

Nakonec použijeme funkci analogRead k získání některých dat.

int lightSensor = A0;

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

Uvidíte, že jsme odečet uložili do proměnné. To je důležité, protože to musíme vytisknout. Použijme sériovou knihovnu (knihovna je kód, který můžeme přidat do našeho kódu, aby se nám věci rychleji psaly, pouhým voláním podle definice), abychom to vytiskli na sériový monitor.

int lightSensor = A0;

void setup () {// Nastavit režimy pinů pinMode (lightSensor, INPUT); // Přidejte sériovou knihovnu Serial.begin (9600); } void loop () {// Čtení senzoru int reading = analogRead (lightSensor); // Vytiskněte hodnotu na monitor Serial.print ("Light:"); Serial.println (čtení); // zpoždění další smyčky o 3 sekundy zpoždění (3000); }

Několik nových věcí! Nejprve uvidíte tyto:

// Toto je komentář

Pomocí komentářů říkáme ostatním, co náš kód dělá. Měli byste je používat často. Kompilátor je nebude číst a převádět je do kódu.

Nyní jsme také přidali sériovou knihovnu s řádkem

Serial.begin (9600)

Toto je příklad funkce, která přebírá argument. Zavolali jste knihovnu Serial, poté spustili funkci (víme, že je to funkce kvůli kulatým závorkám) a jako argument předali celé číslo, čímž nastavili funkci Serial tak, aby fungovala na 9600baud. Nebojte se, proč - prozatím víte, že to funguje.

Další věc, kterou jsme udělali, byl tisk na sériový monitor. Použili jsme dvě funkce:

// Tenhle se tiskne do seriálu bez zalomení řádku (zadání na konci)

Serial.print ("Light:"); // Ten vloží konec řádku, takže pokaždé, když čteme a píšeme, přejde na nový řádek Serial.println (čtení);

Je důležité vidět, že každý má svůj vlastní účel. Ujistěte se, že vaše řetězce používají dvojité uvozovky a že necháte mezeru za dvojtečkou. To pomáhá čitelnosti pro uživatele.

Nakonec jsme použili funkci zpoždění, abychom zpomalili smyčku a přečetli ji pouze jednou za tři sekundy. To se píše v tisících sekundy. Změňte jej tak, aby četl pouze jednou za 5 sekund.

Skvělý! Jedeme!

Krok 6: Simulace

Simulace
Simulace
Simulace
Simulace
Simulace
Simulace

Vždy zkontrolujte, zda věci fungují spuštěním simulace. U tohoto okruhu budete také muset otevřít simulátor, abyste zkontrolovali, zda funguje, a zkontrolujte své hodnoty.

Spusťte simulaci a zkontrolujte sériový monitor. Změňte hodnotu světelného senzoru kliknutím na něj a změnou hodnoty pomocí posuvníku. Změnu hodnoty byste měli vidět také na sériovém monitoru. Pokud tomu tak není, nebo pokud se po stisknutí tlačítka Spustit simulaci zobrazí chyby, opatrně se vraťte a zkontrolujte celý kód.

  • Zaměřte se na řádky uvedené v červeném okně ladění, které se vám zobrazí.
  • Pokud je váš kód správný a simulace stále nefunguje, zkontrolujte zapojení.
  • Znovu načtěte stránku - pravděpodobně máte nesouvisející chybu systému/serveru.
  • Zatřeste pěstí do počítače a zkontrolujte znovu. Dělají to všichni programátoři. Všechno. The. Čas.

Krok 7: Zapojte snímač teploty

Zapojte snímač teploty
Zapojte snímač teploty

Budu teď předpokládat, že jste na dobré cestě. Pokračujte a připojte teplotní senzor, jak naznačuje obrázek. Všimněte si umístění vodičů 5V a GND do stejného prostoru jako ty pro světlo. Toto je v pořádku. Je to jako paralelní obvod a nebude to způsobovat problémy v simulátoru. Ve skutečném obvodu byste měli použít oddělovací desku nebo štít, abyste zajistili lepší správu napájení a připojení.

Nyní aktualizujeme kód.

Kód teplotního čidla

Je to trochu složitější, ale jen proto, že musíme udělat nějakou matematiku, abychom převedli čtení. Není to tak špatné.

int lightSensor = A0;

int tempSensor = A1; void setup () {// Nastavit režimy pinů pinMode (lightSensor, INPUT); // Přidejte sériovou knihovnu Serial.begin (9600); } void loop () {// Teplotní senzor // Vytvoření dvou proměnných na jednom řádku - oh účinnost! // Float var pro uložení desetinného plovoucího napětí, stupněC; // Přečtěte hodnotu pinu a převeďte ji na hodnotu od 0 do 5 // V podstatě napětí = (5/1023 = 0,004882814); napětí = (analogRead (tempSensor) * 0,004882814); // Převést na stupně C stupně C = (napětí - 0,5) * 100; // Tisk na sériový monitor Serial.print ("Teplota:"); Sériový tisk (stupně C); Serial.println ("oC"); // Přečtěte čidlo int čtení = analogRead (lightSensor); // Vytiskněte hodnotu na monitor Serial.print ("Light:"); Serial.println (čtení); // zpoždění další smyčky o 3 sekundy zpoždění (3000); }

Provedl jsem několik aktualizací kódu. Pojďme si je projít jednotlivě.

Nejprve jsem přidal řádek

int tempSensor = A1;

Stejně jako lightSensor potřebuji uložit hodnotu do proměnné, abych to později usnadnil. Pokud bych měl změnit umístění tohoto senzoru (jako přepojení desky), pak musím změnit pouze jeden řádek kódu, ne hledat v celé kódové základně, abych změnil A0 nebo A1 atd.

Poté jsme přidali řádek pro uložení naměřené hodnoty a teploty do plováku. Všimněte si dvou proměnných na jednom řádku.

plovoucí napětí, stupně C;

To je opravdu užitečné, protože to snižuje počet řádků, které musím napsat, a zrychluje kód. Najít chyby však může být těžší.

Nyní provedeme čtení a uložíme jej a poté převedeme na naši výstupní hodnotu.

napětí = (analogRead (tempSensor) * 0,004882814);

stupně C = (napětí - 0,5) * 100;

Tyto dva řádky vypadají obtížně, ale v prvním vezmeme čtení a vynásobíme ho 0,004 … protože převádí 1023 (analogové čtení vrací tuto hodnotu) na čtení z 5.

Druhý řádek tam vynásobí čtení o 100 a přesune desetinnou čárku. To nám dává teplotu. Elegantní!

Krok 8: Testování a kontrola

Testování a kontrola
Testování a kontrola

Všechny věci se chystají, měli byste mít funkční obvod. Otestujte spuštěním simulace a použitím sériového monitoru. Pokud máte chyby, zkontrolujte, zkontrolujte znovu a zatřeste pěstí.

Udělal jsi to? Sdílejte a řekněte nám svůj příběh!

Toto je konečný obvod vložený pro vás, takže si můžete zahrát/vyzkoušet finální tvorbu. Děkujeme za dokončení tutoriálu!

Doporučuje: