Tartalomjegyzék:

FaceBot: 8 lépés
FaceBot: 8 lépés

Videó: FaceBot: 8 lépés

Videó: FaceBot: 8 lépés
Videó: SuperStereo feat. Dé - 7 lépés (Official Music Video) 2024, Október
Anonim
FaceBot
FaceBot

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

1. lépés: Készítse el alaprobotját
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

2. lépés: Keresse meg és rendelje meg OLED kijelzőjét
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:

  1. 2,42 hüvelyk (átlós mérés)
  2. 128 képpont széles (x-méret)
  3. 64 képpont magas (y-dimenzió)
  4. Alacsony teljesítmény (általában 10 mA)
  5. Fekete -fehér (sárga, zöld, kék és fehér)
  6. Alapértelmezett SPI interfész, bár tetszés szerint megváltoztathatja I2C -re
  7. 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:

  1. CS - Chip Select
  2. DC - Adatok/parancs
  3. RES - Visszaállítás
  4. SDA - adatok - ezt az Arduino Nano pin 11 -hez kell csatlakoztatni
  5. SCL - Óra - ezt az Arduino Nano 13 tűhöz kell csatlakoztatni
  6. VCC - +5 volt
  7. 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

Lépés: Csatlakoztassa az OLED -et az Arduino Nano -hoz
Lépés: Csatlakoztassa az OLED -et az Arduino Nano -hoz
Lépés: Csatlakoztassa az OLED -et az Arduino Nano -hoz
Lépés: Csatlakoztassa az OLED -et 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

4. lépés: Tesztelje a kijelzőt
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

5. lépés: Add hozzá OLED -edet a robothoz
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

6. lépés: A robotparaméterek megjelenítése
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

7. lépés: Rajzolj néhány arcot!
7. lépés: Rajzolj 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

8. lépés: Testreszabá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:

  1. Jobb előre
  2. Jobb hátramenet
  3. Bal előre
  4. 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: