Tartalomjegyzék:
- 1. lépés: 1. lépés: Készítse el alaprobotját
- 2. lépés: 2. lépés: Keresse meg és rendelje meg OLED kijelzőjét
- 3. lépés: 3. lépés: Csatlakoztassa az OLED -t az Arduino Nano -hoz
- 4. lépés: 4. lépés: tesztelje a kijelzőt
- 5. lépés: 5. lépés: Add hozzá OLED -edet a robothoz
- 6. lépés: 6. lépés: A robotparaméterek megjelenítése
- 7. lépés: 7. lépés: Rajzoljon néhány arcot
- 8. lépés: 8. lépés: testreszabás
Videó: FaceBot: 8 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
Ez az útmutató megmutatja, hogyan lehet olcsón (39 USD) készíteni egy ütközés-elkerülő robotot, amelynek arca van a betűtípuson. Ezt egy új, olcsó, fényes OLED kijelző használatával végezzük. Tanulóink szeretnek arcokat adni robotjaiknak. Szeretnek mosolygós arcokat rajzolni, amelyek a robot tevékenysége alapján változnak.
Számos kis, olcsó robot áll rendelkezésre 25 dollár alatt, amelyek lehetővé teszik az informatika alapjainak megtanítását. Az egyik probléma ezekkel a robotokkal az, hogy nem nyújtanak átláthatóságot a robot belsejében zajló folyamatok során. 2018-ban minden megváltozott az olcsó, kiváló minőségű OLED-kijelzők rendelkezésre állásával. Ezeknek a kijelzőknek a következő előnyei vannak:
- Nagyon világosak és nagy kontrasztúak. Még egy világos helyiségben is sok oldalról könnyen leolvashatók.
- Jó felbontásúak. Az általam használt képek 168x64 képpontosak. Ez majdnem négyszerese az általunk korábban használt kijelzőknek.
- Alacsony fogyasztásúak, és akkor is következetesen működnek, amikor a robot teljesítménye csökken.
- Viszonylag alacsony költségűek (egyenként 16 dollár), és az árak csökkennek.
Korábban nehezen programozhatók voltak, és túl sok memóriát használtak ahhoz, hogy az olcsó Arduino Nanos készülékekkel használhatók legyenek. A Nano csak 2K vagy dinamikus RAM -mal rendelkezik. Ez az útmutató megmutatja, hogyan lehet megkerülni ezeket a problémákat, és hogyan lehet robotot készíteni, amelyet a gyerekek szeretnek programozni.
1. lépés: 1. lépés: Készítse el alaprobotját
A FaceBot felépítéséhez általában alaprobottal kezdjük. Az egyik példa az itt leírt 25 dolláros CoderDojo robot. Ez a robot az olcsó és népszerű Arduino Nano-t, egy egyszerű motorvezérlőt, 2 egyenáramú motort és 4 vagy 6 AA elemet használ. A legtöbb diák a ping -érzékelővel kezdi az ütközés -elkerülő robot építését. Mivel 5 V -os tápegységet biztosít, tökéletes a FaceBot számára. A költségek alacsonyan tartása érdekében általában a tanítványaim online rendelik meg az alkatrészeket az e-Bay-től. Az alkatrészek megérkezése gyakran 2-3 hetet vesz igénybe, és kis mennyiségű forrasztást igényelnek a motorokhoz és a főkapcsolóhoz. A többi csatlakozás 400 kötésű kenyérlap segítségével történik. A diákok gyakran ragasztják be a vezetékeket, hogy ne csússzanak ki.
Egyetlen változtatást hajtunk végre az ütközés -elkerülés szabványos kialakításán. A ping érzékelőt az alváz tetejéről az alváz alá mozgatjuk. Ez helyet hagy a robot tetején lévő kijelzőnek.
Miután megszerezte az ütközés -elkerülés programozását, olvassa el, hogy adjon hozzá egy arcot!
2. lépés: 2. lépés: Keresse meg és rendelje meg OLED kijelzőjét
Amikor megjelentek az OLED kijelzők, az olcsó kijelzőket órákhoz vagy fitnesz monitorokhoz tervezték. Ennek eredményeként kicsik voltak, általában körülbelül 1 hüvelyk átmérőjűek. A jó hír az, hogy olcsóak voltak, körülbelül 3 dollár. Építettünk néhány robotot ezekkel a kijelzőkkel, de mivel a kijelzők mérete korlátozott volt, nem tudtunk semmit tenni a képernyőn. Aztán 2018 -ban elkezdtük látni, hogy a nagyobb, 2,42 hüvelykes OLED képernyők ára csökken. 2019 januárjában az árak körülbelül 16 dollárra csökkentek. Végül egy nagyszerű kijelzőt kaptunk, amelyet robotarcainkhoz használhattunk.
Íme a kijelzők specifikációi:
- 2,42 hüvelyk (átlós mérés)
- 128 képpont széles (x-méret)
- 64 képpont magas (y-dimenzió)
- Alacsony teljesítmény (általában 10 mA)
- Fekete -fehér (sárga, zöld, kék és fehér)
- Alapértelmezett SPI interfész, bár tetszés szerint megváltoztathatja I2C -re
- SSD1309 illesztőprogram (nagyon gyakori megjelenítő)
Az SPI interfész hét vezetékből áll. Íme a felület tipikus címkéi:
- CS - Chip Select
- DC - Adatok/parancs
- RES - Visszaállítás
- SDA - adatok - ezt az Arduino Nano pin 11 -hez kell csatlakoztatni
- SCL - Óra - ezt az Arduino Nano 13 tűhöz kell csatlakoztatni
- VCC - +5 volt
- GND - Föld
Szükséged lesz némi vezetékre is, hogy a kijelzőt a kenyértáblához csatlakoztasd. A kijelzők általában 7 tűs fejléccel érkeznek, amelyet a kijelzőhöz forrasztanak. Hét férfi-férfi 20mc-es Dupont csatlakozót használtam és forrasztottam úgy, hogy a vezetékek a kijelző hátulján kerüljenek ki.
3. lépés: 3. lépés: Csatlakoztassa az OLED -t az Arduino Nano -hoz
Most már készen áll az OLED tesztelésére. Egy másik Arduino Nano -t használok csak annak tesztelésére, hogy minden egyes kijelző működik -e. Miután a tesztek működnek, csatlakoztatom a robothoz. A teszter kapcsolási rajza a fenti ábrán látható. Ne feledje, hogy az OLED -kapcsolatokat áthelyezheti más, digitális kimenetet támogató érintkezőkre is, de ha meggyőződik arról, hogy az SCL (óra) az Arduino Nano 13 -as érintkezőn és az SDA (adatok) az Arduino Nano 11 -es tűn van, akkor az alapértelmezett beállításokat használhatja a a szoftver. Ez egy kicsit egyszerűbbé teszi a kódot.
4. lépés: 4. lépés: tesztelje a kijelzőt
A kijelző teszteléséhez az u8g2 könyvtárat fogjuk használni. Vannak más könyvtárak is, de tapasztalataim szerint egyik sem olyan jó az u8g2 könyvtárban. Az egyik kritikus tényező az, hogy az Arduino -n belül mennyi RAM -ot használ fel a kijelző. Az u8g2 az egyetlen könyvtár, amelyet találtam, amely "Oldalmódot" használ, amely működik az Arduino Nano -val.
Hozzáadhatja ezt a könyvtárat az Arduino IED -hez, ha a "Könyvtárak kezelése" menüben az "u8g2" kifejezésre keres. A kódot közvetlenül a gethub -ról is letöltheti.
github.com/olikraus/u8g2
Az általam használt tesztkód itt található:
github.com/dmccreary/coderdojo-robots/blob…
Meg kell jegyezni néhány dolgot. Az SCL és SDA pin számok megjegyzésre kerülnek, mert ezek a Nano alapértelmezett csapjai. Az u8g2 konstruktor a kulcsvonal:
// Az SSD1306, 128x64, egyoldalas, névtelen, 4 vezetékes, hardvert, SPI-t forgatás nélkül használjuk, amely csak a dinamikus memória 27% -át használja
Az egyoldalas módot használjuk, mivel ez a mód minimális RAM-ot használ. A 4 vezetékes hardver interfészt használjuk, és az OLED alapértelmezés szerint SPI-vel rendelkezik.
5. lépés: 5. lépés: Add hozzá OLED -edet a robothoz
Most, hogy van egy működő OLED -ed, és tudjuk, hogyan kell inicializálni az u8g2 könyvtárakat, készen állunk az OLED integrálására az alaprobotunkkal. Néhány dolgot figyelembe kell venni. OLED tesztünk során a vezetékek megkönnyítése érdekében azokat a csapokat használtuk, amelyek mindegyike egymás mellett volt. Sajnos szükségünk van a 9 -es csapra, hogy meghajthassuk robotunkat, mert ez az egyik PWM csap, amelyet analóg jelet kell küldenünk a motorvezérlőnek. A megoldás az, hogy a 9-es tűn lévő vezetéket egy másik szabad tűre helyezzük át, majd a #define utasítást erre az új tűre cseréljük. Az OLED felhelyezéséhez a robot elejére két háromszög alakú darabot vágtam ki plexiből és melegen ragasztottam az alvázhoz. Mindig szeretek csiszolópapírt használni a plexi felületének érdesítésére, mielőtt melegen ragasztom össze az alkatrészeket, hogy ne váljanak szét könnyen.
Ezután szerezzünk néhány adatot OLED -ünkről, és rajzoljunk néhány arcot a robotra!
6. lépés: 6. lépés: A robotparaméterek megjelenítése
Az egyik szép dolog a kijelzővel kapcsolatban az, hogy valóban segít a hibakeresésben, ami a robotunkban zajlik, miközben körbejár. Nem ritka, hogy a fejlesztők csak akkor működnek az asztalon, amikor a számítógéphez csatlakoznak, és NEM működnek, amikor a robot körüljár. Egy érték, például a ping -érzékelő által mért távolság megjelenítése jó példa egy robotparaméter megjelenítésére.
A fenti képen az első sor (Echo Time) a késleltetési időt mutatja, amikor a hang elhagyja az ultrahangos hangszórót, és a mikrofon által fogadott idő között. Ezt a számot ezután centiméterre alakítják át a második sorban (Távolság cm -ben). A számláló frissül keresés másodszor, hogy a kijelző frissüljön. Az „Esztergálás…” csak akkor jelenik meg, ha a távolság egy meghatározott szám alatt van, amelyet forduló küszöbnek neveznek. Mindkét kerék előre halad, ha a ping távolság meghaladja ezt a számot. Ha a szám a fordulási küszöb alatt van, akkor megfordítjuk a motorokat (visszafelé), majd irányt változtatunk.
Íme néhány mintakód, amely megmutatja, hogyan vegye ki az értékeket a ping érzékelőből, és jelenítse meg az értékeket az OLED képernyőn.
Íme egy példa, amely három ping érzékelőt tesztel (bal, középső és jobb), és megjeleníti az értékeket a kijelzőn:
github.com/dmccreary/coderdojo-robots/blob…
7. lépés: 7. lépés: Rajzoljon néhány arcot
Most már minden darab a helyén van, hogy néhány arcot rajzoljunk. Tanulóink általában úgy gondolják, hogy a robotnak boldog arcúnak kell lennie, ha előrehajt. Amikor meglát valamit maga előtt, meglepetés érzetét regisztrálja. Ezután hátralép és körülnéz, talán a szeme mozog, hogy jelezze, milyen irányba fog fordulni.
Az arc rajzolására szolgáló rajzparancs meglehetősen egyszerű. Rajzolhatunk egy kört az arc körvonalaihoz, és karikákat tölthetünk ki minden szem számára. A száj lehet félkör a mosolyhoz, és a telt kerek kör a meglepetés érzéséhez. Ez az a hely, ahol a gyerekek kreativitásukat felhasználva személyre szabhatják a kifejezéseket. Néha szándékosan rossz arcokat rajzolok, és megkérem a diákokat, hogy segítsenek jobbá tenni őket.
A display.height () és display.width () függvények használatával megkaphatja a kijelző méretét. Az alábbi kódban változókat állítunk be
half_width = display.width ()/2; half_height = display.height ()/2;
Ha sokszor elvégzi ezeket a számításokat, a kód valamivel gyorsabb, ha egyszer kiszámítják és egy változóban tárolják. Íme néhány példa a fenti unalmas egyenes arc rajzolására:
// ezt minden ciklus elején tesszük
display.clearDisplay (); // világos arc rajzolása a backgrounddisplay.fillCircle (félszélesség, félmagasság, 31, FEHÉR); // jobb szem sötét kijelző.fillCircle (félszélesség - 10, display.height ()/3, 4, BLACK); // bal szem darkdisplay.fillCircle (félszélesség + 10, display.height ()/3, 4, BLACK); // rajzoljon egyenes vonalat a száj kijelzőhöz.drawLine (félszélesség - 10, kijelző.magasság ()/3 * 2, félszélesség + 10, kijelző.magasság ()/3 * 2, FEKETE); // ez a sor új arcunkat küldi az OLED kijelzőhöz.display ();
8. lépés: 8. lépés: testreszabás
Az alaparc rajzolása csak a kezdet. A diákok sok variációt készíthetnek. Sok diák hozzáadott egy kis hangszórót, amely hangokat vagy hangokat játszik le, amikor mozog.
Készíthet kisebb tesztprogramokat is, amelyek segítenek tanulóinak a motorok megfelelő bekötésében. Például a képernyőn látható nyíl (háromszög) jelzi a diáknak, hogy a keréknek milyen irányba kell forognia, amikor csatlakoztatja a motorokat. A tesztprogram minden motorirányban ciklusonként ciklusos:
- Jobb előre
- Jobb hátramenet
- Bal előre
- Bal hátramenet
Minden üzemmódban a képernyő új kijelzővel frissül, amely megmutatja, melyik keréknek és milyen irányba kell forognia.
Példa erre a programra itt
github.com/dmccreary/coderdojo-robots/blob…
A CoderDojo Robots GitHub FaceBot oldalán számos további példa és programozási részlet található.
A FaceBot robotnak van egy változata is, amely lehetővé teszi a diákok számára, hogy közvetlenül a kijelző segítségével megváltoztassák az összes ütközés elkerülési paramétert (előrehaladási sebesség, fordulási távolság, fordulási idő, fordulási sebesség). Nincs szükség számítógépre ezeknek a robotoknak a "programozásához"! Ezek a verziók ideálisak a MakerFairs -hez és olyan eseményekhez, amelyekre nem kíván számítógépeket szállítani.
Kérjük, tudassa velünk, milyen új arcokkal rukkol elő Ön és tanítványai!
Boldog kódolást!
Ajánlott:
DC - DC feszültség Lépés lekapcsoló mód Buck feszültségátalakító (LM2576/LM2596): 4 lépés
DC-DC feszültség Lépés lekapcsoló üzemmód Buck feszültségátalakító (LM2576/LM2596): A rendkívül hatékony bakkonverter készítése nehéz feladat, és még a tapasztalt mérnököknek is többféle kivitelre van szükségük, hogy a megfelelőt hozzák létre. egy DC-DC áramátalakító, amely csökkenti a feszültséget (miközben növeli
Akusztikus levitáció az Arduino Uno-val Lépésről lépésre (8 lépés): 8 lépés
Akusztikus lebegés az Arduino Uno-val Lépésről lépésre (8 lépés): ultrahangos hangátvivők L298N Dc női adapter tápegység egy egyenáramú tűvel Arduino UNOBreadboard és analóg portok a kód konvertálásához (C ++)
Élő 4G/5G HD videó streamelés DJI drónról alacsony késleltetéssel [3 lépés]: 3 lépés
Élő 4G/5G HD videó streaming a DJI Drone-tól alacsony késleltetéssel [3 lépés]: Az alábbi útmutató segít abban, hogy szinte bármilyen DJI drónról élő HD minőségű videó streameket kapjon. A FlytOS mobilalkalmazás és a FlytNow webes alkalmazás segítségével elindíthatja a videó streamingjét a drónról
Bolt - DIY vezeték nélküli töltő éjszakai óra (6 lépés): 6 lépés (képekkel)
Bolt - DIY vezeték nélküli töltés éjszakai óra (6 lépés): Az induktív töltés (más néven vezeték nélküli töltés vagy vezeték nélküli töltés) a vezeték nélküli áramátvitel egyik típusa. Elektromágneses indukciót használ a hordozható eszközök áramellátásához. A leggyakoribb alkalmazás a Qi vezeték nélküli töltő
4 lépés az akkumulátor belső ellenállásának méréséhez: 4 lépés
4 lépés az akkumulátor belső ellenállásának mérésére: Íme a 4 egyszerű lépés, amelyek segítenek mérni az akkumulátor belső ellenállását