Tartalomjegyzék:

Arduino Datalogger: 8 lépés (képekkel)
Arduino Datalogger: 8 lépés (képekkel)

Videó: Arduino Datalogger: 8 lépés (képekkel)

Videó: Arduino Datalogger: 8 lépés (képekkel)
Videó: WI-FI устройство для сбора и передачи данных 2024, November
Anonim
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger

Ebben az oktatóanyagban egy egyszerű adatgyűjtőt készítünk az Arduino használatával. A lényeg az, hogy megtanuljuk az Arduino használatának alapjait az információk rögzítéséhez és a terminálra történő nyomtatáshoz. Ezt az alapbeállítást számos feladat elvégzésére használhatjuk.

A kezdéshez:

Szüksége lesz egy Tinkercad (www.tinkercad.com) fiókra. Menjen át, és regisztráljon e -mail vagy közösségi média fiókjával.

A bejelentkezés a Tinkercad irányítópultjára vezet. Kattintson a bal oldalon található "Áramkörök" elemre, és válassza az "Új áramkör létrehozása" lehetőséget. Lássunk neki!

A teljes fájlt megtalálhatja a TInkercad Circuits oldalon - Köszönjük, hogy megnézte!

1. lépés: Adjon hozzá néhány összetevőt

Adjon hozzá néhány összetevőt
Adjon hozzá néhány összetevőt
Adjon hozzá néhány összetevőt
Adjon hozzá néhány összetevőt
Adjon hozzá néhány összetevőt
Adjon hozzá néhány összetevőt

Szükséged lesz néhány alapvető összetevőre. Ezek tartalmazzák:

  • Arduino tábla
  • Kenyeretábla

Hozzáadhatja őket a kereséssel, és kattintással elhúzhatja őket a középső területre.

Helyezze a kenyértáblát az Arduino fölé. Ez megkönnyíti a kapcsolatok későbbi megtekintését.

2. lépés: Megjegyzés a kenyértáblákról

Megjegyzés a kenyértáblákról
Megjegyzés a kenyértáblákról

A kenyeretábla egy rendkívül hasznos eszköz a gyors prototípus -készítéshez. Alkatrészek csatlakoztatására használjuk. Néhány megjegyzendő dolog.

  1. A pontok függőlegesen vannak összekötve, de a középső vonal elválasztja ezt a kapcsolatot a felső és az alsó oszloptól.
  2. Az oszlopok nem kapcsolódnak balról jobbra, mint a sorban. Ez azt jelenti, hogy az összes alkatrészt az oszlopokon keresztül kell összekötni, nem pedig függőlegesen lefelé.
  3. Ha gombokat vagy kapcsolókat kell használnia, csatlakoztassa őket a szünet közepén. Ezt meglátogatjuk egy későbbi oktatóanyagban.

3. lépés: Két érzékelő hozzáadása

Két érzékelő hozzáadása
Két érzékelő hozzáadása

Az általunk használt két érzékelő egy fényérzékeny és egy hőmérséklet -érzékelő.

Ezek az érzékelők értékelik a fényt és a hőmérsékletet. Az Arduino segítségével olvassuk be az értéket, és megjelenítjük az Arduino soros monitorán.

Keresse meg és adja hozzá a két érzékelőt. Győződjön meg arról, hogy a kenyértáblán az oszlopokon keresztül helyezkednek el. Tegyen közéjük elegendő helyet, hogy könnyebben láthassa őket.

4. lépés: Fényérzékeny érzékelő

Fényérzékeny érzékelő
Fényérzékeny érzékelő
Fényérzékeny érzékelő
Fényérzékeny érzékelő
Fényérzékeny érzékelő
Fényérzékeny érzékelő
Fényérzékeny érzékelő
Fényérzékeny érzékelő
  1. A fényérzékeny érzékelőhöz vegyen fel egy vezetéket az Arduino 5V -os csatlakozójából ugyanabba az oszlopba, mint a kenyérsütő rész jobb lábával. Változtassa meg a vezeték színét vörösre.
  2. Csatlakoztassa a bal lábat az ugyanabban az oszlopban lévő csapon keresztül az Arduino A0 (A-nulla) csapjához. Ez az analóg csap, amellyel kiolvashatjuk az értéket az érzékelőből. Színezze ezt a vezetéket sárgára, vagy valami másra, mint pirosra vagy feketére.
  3. Helyezzen egy ellenállást (keresés és kattintás-húzás) a táblára. Ezzel befejeződik az áramkör, és védi az érzékelőt és a csapot.

    • Fordítsa meg, hogy átmenjen az oszlopokon.
    • Csatlakoztassa az egyik lábát a kenyértábla jobb láboszlopához
    • Helyezzen egy vezetéket az ellenállás másik végéből a földbe

      Változtassa meg a vezeték színét feketére

  4. Ellenőrizze az összes csatlakozást. Ha valami nem a megfelelő helyen van, akkor ez nem fog megfelelően működni.

5. lépés: Indítsa el a kódot

Indítsa el a kódot
Indítsa el a kódot
Indítsa el a kódot
Indítsa el a kódot
Indítsa el a kódot
Indítsa el a kódot

Nézzük ennek az összetevőnek a kódját.

Először nézze meg a harmadik képet ebben a lépésben. Tartalmaz néhány kódot két funkcióval:

üres beállítás ()

üres hurok ()

A C ++ nyelvben minden függvény megadja a visszatérési típust, majd a nevet, majd azt a két kerek zárójelet, amelyekkel argumentumokban lehet átadni, általában változóként. Ebben az esetben a visszatérési típus érvénytelen, vagy semmi. A név beállítása, és a függvény nem tartalmaz érveket.

A beállítási funkció egyszer fut, amikor az Arduino elindul (amikor csatlakoztatja vagy akkumulátorokat helyez be).

A ciklusfüggvény egy állandó ciklusban fut a milliszekundumtól, amíg a beállítási funkció befejeződik.

Minden, amit a hurok funkcióba tesz, futni fog, amikor Arduino fut. Minden, ami kívül van, csak akkor fut, ha hívják. Például, ha definiáltunk és meghívtunk egy másik függvényt a cikluson kívül.

Feladat

Nyissa meg a Kód panelt a Tinkercad gombjával. Módosítsa a Blokkok legördülő menüt Szövegre. Egyetért a felugró figyelmeztető mezővel. Ebben a lépésben töröljön mindent, amit lát, kivéve a harmadik kép szövegét.

Változók

A kezdéshez hozzá kell rendelnünk néhány változót, hogy valóban hatékony legyen a kódunk.

A változók olyanok, mint a vödrök, amelyek csak egy objektumot képesek tárolni (a C ++-t nevezzük objektum-orientáltnak). Igen, vannak tömbjeink, de ezek speciális változók, és ezekről később beszélünk. Amikor hozzárendelünk egy változót, meg kell mondanunk neki, hogy milyen típusú, majd meg kell adnunk egy értéket. Ez így néz ki:

int someVar = A0;

Tehát hozzárendeltünk egy változót, és megadtuk az int típusát. Az int egész vagy egész szám.

"De nem egész számot használtál!", Hallom, ahogy mondod. Ez igaz.

Az Arduino valami különlegeset tesz számunkra, hogy az A0 -t egész számként használhassuk, mert egy másik fájlban az A0 -t egész számként határozza meg, így az A0 konstans segítségével erre az egész számra hivatkozhatunk anélkül, hogy tudnánk, mi az. Ha csak 0 -t írunk be, akkor a 0 -ás pozícióban lévő digitális tüskére hivatkozunk, ami nem működik.

Tehát a kódunkhoz egy változót írunk a csatolt érzékelőhöz. Javaslom, hogy adjon egy egyszerű nevet, de ez rajtad múlik.

A kódnak így kell kinéznie:

int lightSensor = A0;

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

Most mondjuk meg Arduino -nak, hogyan kell kezelni az érzékelőt ezen a csapon. Futtatunk egy funkciót a beállításon belül, hogy beállítsuk a tű módot, és megmondjuk Arduino -nak, hol kell keresni.

int lightSensor = A0;

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

a pinMode függvény azt mondja az Arduino -nak, hogy a csap (A0) INPUT tűként lesz használva. Jegyezze fel a változókra és a függvénynevekre a camelCaseUsed (lásd minden első betű nagybetűt, mivel púpokat tartalmaz, tehát… teve…!). Ez egy egyezmény és jó megszokni.

Végezetül használjuk az analogRead függvényt bizonyos adatok beszerzéséhez.

int lightSensor = A0;

void setup () {pinMode (lightSensor, INPUT); } void loop () {int olvasás = analogRead (lightSensor); }

Látni fogja, hogy az értékeket változóban tároltuk. Ez fontos, mivel ki kell nyomtatnunk. Használja a Soros könyvtárat (a könyvtár olyan kód, amelyet hozzáadhatunk a kódunkhoz, hogy gyorsítsuk az írást, csak ha a definíció szerint hívjuk), hogy ezt kinyomtassa a soros monitorra.

int lightSensor = A0;

void setup () {// Pin módok beállítása pinMode (lightSensor, INPUT); // Soros könyvtár hozzáadása Serial.begin (9600); } void loop () {// Olvassa el az érzékelőt int reading = analogRead (lightSensor); // Az érték nyomtatása a monitorra Serial.print ("Light:"); Sorozat.println (olvasás); // a következő ciklus késleltetése 3 másodperces késleltetéssel (3000); }

Pár újdonság! Először ezeket fogja látni:

// Ez egy megjegyzés

A megjegyzések segítségével elmondjuk másoknak, hogy mit tesz a kódunk. Ezeket gyakran kell használni. A fordító ezeket nem olvassa el, és nem konvertálja kódra.

Most hozzáadtuk a soros könyvtárat is a sorhoz

Serial.begin (9600)

Ez egy példa egy függvényre, amely argumentumokat vesz fel. A könyvtárat sorosnak nevezted, majd futtattál egy függvényt (tudjuk, hogy a kerek zárójelek miatt ez függvény), és argumentumként egész számot adtál át, és a soros függvényt 9600baud értékre állítottad. Ne aggódjon, miért - csak tudja, hogy működik, egyelőre.

A következő lépés a nyomtatás a soros monitorra. Két funkciót használtunk:

// Ez a sorozatba nyomtat, sortörés nélkül (enter a végén)

Serial.print ("Fény:"); // Ez beírja a sortörést, így minden alkalommal, amikor olvasunk és írunk, új sorba kerül Serial.println (olvasás);

Fontos látni, hogy mindegyiknek külön célja van. Győződjön meg arról, hogy a karakterláncok idézőjeleket használnak, és hagyja el a szóközt a kettőspont után. Ez elősegíti a felhasználó olvashatóságát.

Végül a késleltetés funkciót használtuk, hogy lelassítsuk a ciklusunkat, és csak három másodpercenként olvassuk. Ez több ezer másodperc alatt van leírva. Változtassa meg, hogy 5 másodpercenként csak egyszer olvasható legyen.

Nagy! Induljunk!

6. lépés: Szimuláció

Szimuláció
Szimuláció
Szimuláció
Szimuláció
Szimuláció
Szimuláció

Mindig ellenőrizze a dolgok működését a szimuláció futtatásával. Ehhez az áramkörhöz meg kell nyitnia a szimulátort is, hogy ellenőrizze a működését és az értékeket.

Indítsa el a szimulációt, és ellenőrizze a soros monitort. Módosítsa a fényérzékelő értékét, ha rákattint, és módosítja az értéket a csúszka segítségével. Látnia kell az értékváltozást a soros monitoron is. Ha nem, vagy ha a Szimuláció indítása gomb megnyomásakor hibaüzenetet kap, gondosan menjen vissza, és ellenőrizze az összes kódot.

  • Fókuszáljon a piros hibakeresési ablakban megjelenő sorokra, amelyeket Ön fog megjeleníteni.
  • Ha a kód helyes, és a szimuláció még mindig nem működik, ellenőrizze a vezetékeket.
  • Az oldal újratöltése - lehet, hogy nem kapcsolódó rendszer/szerver hiba lépett fel.
  • Rázza az öklét a számítógép felé, és ellenőrizze újra. Minden programozó ezt teszi. Összes. Az. Idő.

Lépés: Csatlakoztassa a hőmérséklet -érzékelőt

Csatlakoztassa a hőmérséklet -érzékelőt
Csatlakoztassa a hőmérséklet -érzékelőt

Feltételezem, hogy most jó úton jársz. Menjen előre, és kösse be a hőmérséklet -érzékelőt, ahogy a kép sugallja. Vegye figyelembe az 5V és a GND vezetékek elhelyezését ugyanabban a térben, mint a fények. Rendben van. Olyan, mint egy párhuzamos áramkör, és nem okoz problémát a szimulátorban. Egy tényleges áramkörben a jobb áramellátás és a kapcsolatok biztosítása érdekében használjon szakítótáblát vagy árnyékolást.

Most frissítsük a kódot.

A hőmérséklet érzékelő kódja

Ez egy kicsit trükkösebb, de csak azért, mert némi matematikát kell végeznünk az olvasás átalakításához. Nem túl rossz.

int lightSensor = A0;

int tempSensor = A1; void setup () {// Pin módok beállítása pinMode (lightSensor, INPUT); // Soros könyvtár hozzáadása Serial.begin (9600); } void loop () {// A hőmérséklet -érzékelő // Két változó létrehozása egy sorban - ó hatékonyság! // Float var tizedes úszófeszültség tárolásához, fokC; // Olvassa el a csap értékét, és alakítsa át 0 - 5 értékre. Lényegében feszültség = (5/1023 = 0,004882814); feszültség = (analóg olvasott (tempSensor) * 0,004882814); // Konvertálás fokra C fok C = (feszültség - 0,5) * 100; // Nyomtatás a soros monitorra Serial.print ("Temp:"); Soros.nyomtatás (° C); Soros.println ("oC"); // Olvassa el az érzékelőt int reading = analogRead (lightSensor); // Az érték nyomtatása a monitorra Serial.print ("Light:"); Sorozat.println (olvasás); // a következő ciklus késleltetése 3 másodperces késleltetéssel (3000); }

Néhány frissítést végeztem a kódon. Nézzük végig őket egyenként.

Először hozzáadtam a sort

int tempSensor = A1;

Csakúgy, mint a lightSensor, nekem is változóban kell tárolnom az értéket, hogy később könnyebb legyen. Ha meg kell változtatnom ennek az érzékelőnek a helyét (például a tábla újbóli bekötését), akkor csak az egyik kódsoron kell változtatnom, nem pedig a teljes kódbázison kell keresnem az A0 vagy az A1 megváltoztatásához, stb.

Ezután hozzáadtunk egy sort az olvasás és a hőmérséklet úszóban való tárolásához. Jegyezzen fel két változót egy sorban.

úszó feszültség, fok C;

Ez nagyon hasznos, mert csökkenti az írandó sorok számát és felgyorsítja a kódot. A hibákat azonban nehezebb megtalálni.

Most leolvassuk és tároljuk, majd konvertáljuk a kimeneti értékre.

feszültség = (analóg olvasott (tempSensor) * 0,004882814);

fokC = (feszültség - 0,5) * 100;

Ez a két sor nehéznek tűnik, de az elsőben a leolvasott értéket vesszük és megszorozzuk 0,004 -el … mert 1023 -at konvertál (az analóg érték visszaadja ezt az értéket) 5 -ös értékre.

A második sor ott megszorozza ezt az értéket 100 -zal a tizedespont mozgatásához. Ez adja meg a hőmérsékletet. Tiszta!

8. lépés: Tesztelés és ellenőrzés

Tesztelés és ellenőrzés
Tesztelés és ellenőrzés

Ha mindent megtervez, akkor működő áramkörrel kell rendelkeznie. Tesztelje a szimulációt és a soros monitort. Ha hibái vannak, ellenőrizze, ellenőrizze újra, és rázza meg az öklét.

Megcsináltad? Oszd meg és meséld el nekünk a történeted!

Ez az utolsó áramkör beágyazva az Ön számára, így lejátszhatja/tesztelheti a végső alkotást. Köszönjük, hogy elvégezte az oktatóanyagot!

Ajánlott: