Kazalo:

FaceBot: 8 korakov
FaceBot: 8 korakov

Video: FaceBot: 8 korakov

Video: FaceBot: 8 korakov
Video: LPS - Osem korakov (Official music video) 2024, Oktober
Anonim
FaceBot
FaceBot

Ta priročnik vam bo pokazal, kako ustvariti poceni (39 USD) robota za preprečevanje trkov z obrazom na pisavi. To počnemo z novim nizkocenovnim, svetlim zaslonom OLED. Naši učenci radi dodajajo obraze svojim robotom. Radi narišejo nasmejane obraze, ki se spreminjajo glede na to, kaj robot počne.

Za manj kot 25 USD je na voljo več majhnih poceni robotov, ki vam omogočajo poučevanje osnov računalništva. Ena od težav pri teh robotih je, da ne zagotavljajo preglednosti, kaj se dogaja znotraj robota, medtem ko ga gradite. Leta 2018 se je vse začelo spreminjati z razpoložljivostjo poceni visokokakovostnih zaslonov OLED. Ti zasloni imajo naslednje prednosti:

  • So zelo svetle in imajo visok kontrast. Tudi v svetli sobi jih je enostavno prebrati z različnih zornih kotov.
  • Imajo dobro ločljivost. Te, ki jih uporabljam, so 168 x 64 slikovnih pik. To je skoraj 4x prejšnje zaslone, ki smo jih uporabljali.
  • Imajo nizko moč in delujejo dosledno, tudi če moč vašega robota upada.
  • So relativno nizki (približno 16 USD vsak), cene pa padajo.

V preteklosti jih je bilo težko programirati in bi porabili preveč pomnilnika za uporabo z poceni Arduino Nanos. Nano ima samo 2K ali dinamični RAM. Ta priročnik vam bo pokazal, kako rešiti te težave in sestaviti robota, ki ga otroci radi programirajo.

1. korak: 1. korak: Zgradite svojega osnovnega robota

1. korak: Zgradite svojega osnovnega robota
1. korak: Zgradite svojega osnovnega robota

Za izdelavo FaceBota običajno začnemo z osnovnim robotom. En primer je tukaj opisan robot CoderDojo za 25 USD. Ta robot uporablja poceni in priljubljen Arduino Nano, preprost krmilnik motorja, 2 enosmerna motorja in 4 ali 6 baterij AA. Večina študentov začne uporabljati senzor ping za izdelavo robota za preprečevanje trkov. Ker zagotavlja napajalni sistem 5V, je kot nalašč za FaceBot. Da bi bili stroški nizki, običajno študentje naročijo dele na spletu pri e-Bayu. Pogosto traja 2-3 tedne, da prispejo deli in zahtevajo majhno količino spajkanja motorjev in stikala za vklop. Preostale povezave se izvedejo s ploščo s 400 kravatami. Učenci pogosto vroče lepijo žice, da ne zdrsnejo.

V standardno zasnovo za preprečevanje trkov smo naredili eno spremembo. Senzor pinga premaknemo z vrha ohišja pod ohišje. Tako ostane prostor za prikaz na vrhu robota.

Ko imate programiranje za preprečevanje trkov, vas bere, da dodate obraz!

2. korak: 2. korak: Poiščite in naročite svoj zaslon OLED

2. korak: Poiščite in naročite zaslon OLED
2. korak: Poiščite in naročite zaslon OLED

Ko so se pojavili zasloni OLED, so bili poceni zasnovan za ure ali monitorje za fitnes. Posledično so bili majhni, običajno približno 1 cm v premeru. Dobra novica je, da so bili poceni, okoli 3 USD. S temi zasloni smo izdelali nekaj robotov, a ker so bile velikosti zaslonov omejene, je tisto, kar lahko počnemo na zaslonu. Leta 2018 smo začeli opažati, da se cena večjih 2,42 -palčnih zaslonov OLED znižuje. Januarja 2019 so se cene znižale na približno 16 USD. Končno smo imeli odličen zaslon, ki bi ga lahko uporabili za obraze robotov.

Tu so specifikacije teh zaslonov:

  1. 2,42 palca (diagonala)
  2. 128 slikovnih pik (x-dimenzija)
  3. 64 pikslov visoko (dimenzija y)
  4. Nizka moč (običajno 10 mA)
  5. Enobarvno (prihajajo v rumeni, zeleni, modri in beli barvi)
  6. Privzeti vmesnik SPI, čeprav ga lahko po želji spremenite v I2C
  7. Gonilnik SSD1309 (zelo pogost gonilnik zaslona)

Vmesnik SPI ima sedem žic. Tu so tipične oznake na vmesniku:

  1. CS - Izbira čipa
  2. DC - Podatki/ukaz
  3. RES - Ponastavi
  4. SDA - Podatki - to je treba povezati z Arduino Nano pin 11
  5. SCL - Ura - to je treba povezati z Arduino Nano pin 13
  6. VCC - +5 voltov
  7. GND - Ozemljitev

Za priključitev zaslona na ploščo boste morali imeti tudi nekaj žice. Zasloni so običajno opremljeni s 7-polno glavo, ki ste jo spajkali na zaslon. Uporabil sem 7 priključkov Dupont 20mc moški-moški in jih spajkal tako, da so žice prišle na zadnjo stran zaslona.

Korak 3: Korak 3: Priključite OLED na Arduino Nano

Korak: Priključite OLED na Arduino Nano
Korak: Priključite OLED na Arduino Nano
Korak: Priključite OLED na Arduino Nano
Korak: Priključite OLED na Arduino Nano

Zdaj ste pripravljeni preizkusiti svoj OLED. Uporabljam drug Arduino Nano samo zato, da preverim, ali vsak zaslon, ki ga dobim, deluje. Ko preskusi delujejo, ga povežem z robotom. Shema ožičenja testerja je prikazana na zgornji sliki. Upoštevajte, da lahko povezave OLED premaknete na druge zatiče, ki podpirajo digitalne izhode, če pa se prepričate, da je SCL (ura) na Arduino Nano pin 13 in SDA (podatki) na Arduino Nano pin 11, lahko uporabite privzete nastavitve v programsko opremo. Tako bo vaša koda nekoliko preprostejša.

4. korak: 4. korak: Preizkusite svoj zaslon

4. korak: Preizkusite zaslon
4. korak: Preizkusite zaslon

Za preizkus vašega zaslona bomo uporabili knjižnico u8g2. Uporabljate lahko še druge knjižnice, vendar po mojih izkušnjah nobena ni tako dobra v knjižnici u8g2. Eden kritičnih dejavnikov je, koliko RAM -a v Arduinu porabi zaslon. U8g2 je edina knjižnica, ki sem jo našel in uporablja "način strani", ki bo deloval z Arduino Nano.

To knjižnico lahko dodate v svoj Arduino IED tako, da v meniju "Upravljanje knjižnic" poiščete "u8g2". Kodo lahko prenesete tudi neposredno iz gethub.

github.com/olikraus/u8g2

Testna koda, ki jo uporabljam, je tukaj:

github.com/dmccreary/coderdojo-robots/blob…

Opozoriti je treba na nekaj stvari. Številke nožic SCL in SDA sta komentirana, ker sta privzeta zatiča na Nano. Konstruktor za u8g2 je ključna vrstica:

// Uporabljamo SSD1306, 128x64, enostransko, neimenovano, 4 žice, strojna oprema, SPI brez rotacije, ki uporablja le 27% dinamičnega pomnilnika U8G2_SSD1306_128X64_NONAME_1_4W_HW_SPI u8g2 (U8G2_R0, CS_PIN, DC_PIN, RDS_;

Uporabljamo način za eno stran, saj ta način uporablja minimalno RAM-a. Uporabljamo 4-žični strojni vmesnik in OLED privzeto prihaja s SPI.

5. korak: 5. korak: Dodajte svoj OLED v robota

5. korak: Dodajte svoj OLED v robota
5. korak: Dodajte svoj OLED v robota

Zdaj, ko imamo delujoč OLED in vemo, kako inicializirati knjižnice u8g2, smo pripravljeni integrirati OLED z našim osnovnim robotom. Upoštevati je treba nekaj stvari. V našem testu OLED smo za lažje ožičenje uporabili zatiče, ki so bili drug poleg drugega. Na žalost potrebujemo pin 9 za pogon našega robota, ker je to eden od zatičev PWM, ki ga moramo poslati analognemu signalu gonilniku motorja. Rešitev je, da žico, ki je na zatiču 9, premaknete na drug prosti zatič, nato pa izjavo #define spremenite v ta novi zatič. jih pripeljejo do podvozja. Vedno rad uporabim nekaj brusnega papirja za grobo obdelavo površine pleksi stekla, preden dele vroče zlepim skupaj, da se ne zlahka razpadejo.

Nato vzemimo nekaj podatkov o našem OLED -u in narišimo nekaj obrazov na robotu!

Korak 6: Korak 6: Prikažite parametre robota

6. korak: Prikažite parametre robota
6. korak: Prikažite parametre robota

Ena izmed lepih stvari pri prikazovanju zaslona je, da resnično pomaga pri odpravljanju napak, kar se dogaja v našem robotu, medtem ko se vozi naokoli. Nič nenavadnega ni, da imajo razvijalci na namizju funkcijo, ko ste povezani z računalnikom, le da NE deluje, ko se robot vozi naokoli. Prikaz vrednosti, kot je razdalja, izmerjena s senzorjem pinga, je dober primer prikaza parametra robota.

Na zgornji fotografiji prva vrstica (Echo Time) prikazuje čas zakasnitve med tem, ko zvok zapusti ultrazvočni zvočnik, in časom, ko ga mikrofon sprejme. To število se nato pretvori v centimetre v drugi vrstici (razdalja v cm). Števec se posodobi, nato pa prikaže, da se zaslon posodablja. "Zavijanje …" se prikaže samo, če je razdalja pod določeno številko, ki se imenuje prag zavoja. Obe kolesi se premakneta naprej, če je razdalja pinga nad to številko. Če je število pod pragom zavoja, obrnemo motor (vzvratno) in nato spremenimo smer.

Tukaj je nekaj vzorčne kode, ki vam pokaže, kako vzamete vrednosti iz senzorja pinga in jih prikažete na zaslonu OLED.

Tu je primer, ki preizkuša tri senzorje pinga (levo, sredinsko in desno) in prikaže vrednosti na zaslonu:

github.com/dmccreary/coderdojo-robots/blob…

7. korak: 7. korak: Narišite nekaj obrazov

7. korak: Narišite nekaj obrazov!
7. korak: Narišite nekaj obrazov!

Zdaj imamo vse kose, da narišemo nekaj obrazov. Naši učenci običajno mislijo, da bi moral imeti robot srečen obraz, če vozi naprej. Ko nekaj vidi pred seboj, zazna občutek presenečenja. Nato se umakne nazaj in se ozre naokrog, morda z očmi, ki premikajo, da sporočijo, v katero smer se bo obrnila.

Ukaz za risanje za risanje obraza je precej preprost. Za obris obraza lahko narišemo krog in za vsako oko napolnimo kroge. Usta so lahko polkrog za nasmeh in napolnjen okrogel krog za občutek presenečenja. To je kraj, kjer lahko otroci s svojo ustvarjalnostjo prilagodijo izraze. Včasih namerno narišem slabe obraze in učence prosim, naj mi pomagajo, da jih izboljšam.

Za prikaz velikosti zaslona lahko uporabite funkciji display.height () in display.width (). V spodnji kodi smo nastavili spremenljivke

half_width = display.width ()/2; half_height = display.height ()/2;

Če te izračune izvedete večkrat, je koda nekoliko hitrejša, če se izračunajo enkrat in shranijo v spremenljivko. Tu je nekaj primerov, kako je zgoraj narisan dolgočasen naravni obraz:

// to naredimo na začetku vsake zanke

display.clearDisplay (); // za ozadje narišemo svetel obrazdisplay.fillCircle (polovična širina, polovična višina, 31, bela); // levo oko darkdisplay.fillCircle (half_width + 10, display.height ()/3, 4, BLACK); // narišemo ravno črto za zaslon usta.drawLine (half_width - 10, display.height ()/3 * 2, half_width + 10, display.height ()/3 * 2, BLACK); // ta vrstica pošlje naš novi obraz na zaslon OLED display.display ();

8. korak: 8. korak: prilagodite

8. korak: Prilagodite
8. korak: Prilagodite

Risanje osnovnega obraza je šele začetek. Učenci lahko ustvarijo številne različice. Mnogi učenci so dodali majhen zvočnik, ki med premikanjem predvaja tone ali zvoke.

Zgradite lahko tudi manjše preskusne programe, ki bodo vašim učencem pomagali pravilno priključiti motorje. Na primer puščica (trikotnik) na zaslonu bo učencu povedala, v katero smer naj se kolo obrača, ko priključujete motorje. Preskusni program kroži skozi vsako smer motorja:

  1. Desno naprej
  2. Desno vzvratno
  3. Levo naprej
  4. Levo vzvratno

Za vsak način se zaslon posodobi z novim zaslonom, ki prikazuje, katero kolo naj se obrača in v katero smer.

Primer tega programa je tukaj

github.com/dmccreary/coderdojo-robots/blob…

Na strani CiterDojo Robots GitHub FaceBot je veliko dodatnih primerov in podrobnosti programiranja.

Obstaja tudi različica robota FaceBot, ki učencem omogoča neposredno spreminjanje vseh parametrov preprečevanja trkov (hitrost naprej, razdalja obračanja, čas obračanja, hitrost obračanja) neposredno z zaslonom. Za "programiranje" teh robotov ni potreben računalnik! Te različice so idealne za MakerFaires in dogodke, na katerih ne želite vleči računalnikov.

Sporočite nam, kakšne nove obraze predstavljate vi in vaši učenci!

Veselo kodiranje!

Priporočena: