Sisukord:
- 1. samm: 1. samm: ehitage oma baasrobot
- 2. samm: 2. samm: leidke ja tellige oma OLED -ekraan
- Samm: ühendage OLED Arduino Nanoga
- 4. samm: 4. samm: testige oma ekraani
- Samm: lisage oma OLED robotile
- 6. samm: 6. samm: kuvage roboti parameetrid
- 7. samm: 7. samm: joonistage mõned näod
- 8. samm: 8. samm: kohandage
Video: FaceBot: 8 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
See juhend näitab teile, kuidas luua odava (39 dollarit) kokkupõrkeid vältiva roboti nägu kirjas. Selleks kasutame uut odavat ja eredat OLED-ekraani. Meie õpilastele meeldib oma robotitele nägusid lisada. Neile meeldib joonistada naeratavaid nägusid, mis muutuvad sõltuvalt sellest, mida robot teeb.
Alla 25 dollari eest on saadaval mitu väikest odavat robotit, mis võimaldavad teil õpetada arvutiteaduse põhitõdesid. Üks nende robotite probleemidest on see, et nad ei taga läbipaistvust selle kohta, mis toimub roboti sees selle ehitamise ajal. Aastal 2018 hakkas see kõik muutuma, kuna saadaval olid odavad ja kvaliteetsed OLED-kuvarid. Nendel kuvaritel on järgmised eelised:
- Need on väga heledad ja suure kontrastsusega. Isegi valgusküllases ruumis on neid lihtne lugeda paljude nurkade alt.
- Neil on hea resolutsioon. Need, mida ma kasutan, on 168x64 pikslit. See on peaaegu 4 korda varasem ekraan, mida oleme kasutanud.
- Need on väikese energiatarbega ja töötavad järjepidevalt isegi siis, kui teie roboti jõud väheneb.
- Need on suhteliselt madalad (umbes 16 dollarit) ja hinnad langevad.
Varem on neid olnud raske programmeerida ja nad kulutaksid liiga palju mälu, et neid saaks kasutada odavate Arduino Nanodega. Nanol on ainult 2K või dünaamiline muutmälu. See juhend näitab teile, kuidas nendest probleemidest lahti saada ja ehitada robot, mida lapsed armastavad programmeerida.
1. samm: 1. samm: ehitage oma baasrobot
FaceBoti ehitamiseks alustame tavaliselt baasrobotiga. Üks näide on siin kirjeldatud 25 -dollarine CoderDojo robot. See robot kasutab odavat ja populaarset Arduino Nano, lihtsat mootorikontrollerit, 2 alalisvoolumootorit ja 4 või 6 AA patareid. Enamik õpilasi hakkab kokkupõrkeid vältiva roboti ehitamiseks kasutama ping -andurit. Kuna see pakub 5 V toitesüsteemi, sobib see ideaalselt FaceBoti jaoks. Kulude madalal hoidmiseks lasen tavaliselt oma õpilastel osad e-Bayst võrgus tellida. Osade kohalejõudmiseks kulub sageli 2–3 nädalat ning need vajavad mootorite ja toitelüliti jaoks väikest jootmist. Ülejäänud ühendused tehakse 400-sidelise leivaplaadi abil. Õpilased liimivad juhtmed sageli kuumliimiga, et need välja ei libiseks.
Kokkupõrke vältimise standardkujunduses teeme ühe muudatuse. Liigutame pingianduri šassii ülaosast šassii alla. See jätab ruumi roboti peal olevale ekraanile.
Kui teil on kokkupõrke vältimise programmeerimine, loetakse teile nägu lisama!
2. samm: 2. samm: leidke ja tellige oma OLED -ekraan
Kui OLED -ekraanid ilmusid, olid odavad displeid mõeldud kellade või treeningmonitoride jaoks. Selle tulemusena olid need väikesed, tavaliselt umbes 1 tolli läbimõõduga. Hea uudis on see, et need olid odavad, umbes 3 dollarit. Ehitasime nende kuvaritega mõned robotid, kuid kuna kuvarite suurus oli piiratud, ei saanud me ekraanil midagi teha. Siis hakkasime 2018. aastal nägema, et suuremate 2,42 -tolliste OLED -ekraanide hind on langenud. Aasta jaanuaris on hinnad langenud umbes 16 dollarini. Lõpuks saime suurepärase ekraani, mida saaksime kasutada oma robotite nägude jaoks.
Siin on nende kuvarite spetsifikatsioonid:
- 2,42 tolli (diagonaal)
- 128 pikslit (x-mõõde)
- 64 pikslit kõrge (y-mõõde)
- Madal võimsus (tavaliselt 10 mA)
- Mustvalge (neid on kollast, rohelist, sinist ja valget)
- SPI vaikeliides, kuigi soovi korral saate selle muuta I2C -ks
- SSD1309 draiver (väga levinud kuvaridraiver)
SPI liides on seitsme juhtmega. Siin on liidese tüüpilised sildid:
- CS - kiibi valimine
- DC - andmed/käsk
- RES - lähtestamine
- SDA - andmed - see tuleks ühendada Arduino Nano tihvtiga 11
- SCL - Kell - see tuleks ühendada Arduino Nano tihvtiga 13
- VCC - +5 volti
- GND - maapind
Ekraani leivaplaadiga ühendamiseks peab teil olema ka mõni traat. Ekraanidel on tavaliselt 7-kontaktiline päis, mille joote ekraanile. Kasutasin 7 isast-meessoost 20mc Duponti pistikut ja jootsin need nii, et juhtmed tulid välja ekraani tagaosast.
Samm: ühendage OLED Arduino Nanoga
Nüüd olete valmis OLED -i testima. Ma kasutan teist Arduino Nano lihtsalt selleks, et testida, kas iga kuvar töötab. Kui testid toimivad, ühendan selle robotiga. Testri ühendusskeem on näidatud ülaltoodud joonisel. Pange tähele, et saate OLED -ühendused teisaldada teistele digitaalseid väljundeid toetavatele tihvtidele, kuid kui veendute, et SCL (kell) on Arduino Nano pin 13 ja SDA (andmed) Arduino Nano pin 11 all, saate kasutada vaikesätteid tarkvara. See muudab teie koodi natuke lihtsamaks.
4. samm: 4. samm: testige oma ekraani
Teie ekraani testimiseks kasutame raamatukogu u8g2. Saate kasutada ka teisi teeke, kuid minu kogemuste kohaselt pole ükski neist u8g2 raamatukogus nii hea. Üks kriitiline tegur on see, kui palju Arduino RAM -i ekraan kasutab. U8g2 on ainus minu leitud teek, mis kasutab "Page Mode", mis töötab koos Arduino Nanoga.
Saate selle teegi oma Arduino IED -le lisada, otsides menüüst „Halda raamatukogusid” märksõna „u8g2”. Koodi saate alla laadida ka otse gethubist.
github.com/olikraus/u8g2
Testkood, mida ma kasutan, on siin:
github.com/dmccreary/coderdojo-robots/blob…
Märkida tuleb paar asja. SCL- ja SDA -tihvtide numbreid kommenteeritakse, kuna need on Nano vaikimisi tihvtid. U8g2 konstruktor on võtmerida:
// Me kasutame SSD1306, 128x64, üheleheküljelist, nimetut, 4 juhtmega, riistvara, SPI ilma pöörlemiseta, mis kasutab ainult 27% dünaamilisest mälust
Me kasutame ühe lehe režiimi, kuna see režiim kasutab minimaalselt RAM-i. Kasutame 4-juhtmelist riistvaraliidest ja OLED-il on vaikimisi SPI.
Samm: lisage oma OLED robotile
Nüüd, kui meil on töötav OLED ja me teame, kuidas lähtestada u8g2 raamatukogud, oleme valmis integreerima OLED -i oma baasrobotiga. Arvestada tuleb mõne asjaga. Oma OLED -testis kasutasime juhtmestiku lihtsustamiseks tihvte, mis olid kõik üksteise kõrval. Kahjuks vajame oma roboti juhtimiseks tihvti 9, kuna see on üks PWM -tihvtidest, mille peame mootorsõidukijuhile saatma analoogsignaali. Lahenduseks on nööpnõela 9 juhtme teisaldamine teisele vabale tihvtile ja seejärel muuta #define avaldus uueks tihvtiks. OLED-i paigaldamiseks roboti esiküljele lõikasin kaks kolmnurkset tükki pleksiklaasist välja ja liimisin neid šassiile. Mulle meeldib alati plekk-klaasi pinna krohvimiseks kasutada mõnda liivapaberit, enne kui osad kuumliimin, nii et need ei läheks liiga kergesti lahti.
Järgmisena võtame mõned andmed meie OLED -i kohta ja joonistame robotile mõned näod!
6. samm: 6. samm: kuvage roboti parameetrid
Üks toredaid asju kuvari omamise juures on see, et see aitab tõepoolest siluda seda, mis toimub meie roboti sees ringi sõites. Pole harv juhus, kui arendajatel töötab arvuti töökorras töölaud, kui see ei tööta, kui robot ringi sõidab. Sellise väärtuse kuvamine nagu ping -anduri mõõdetud vahemaa on hea näide roboti parameetri kuvamisest.
Ülaltoodud fotol näitab esimene rida (kaja aeg) viivitust aja vahel, mil heli lahkub ultraheli kõlarist, ja ajani, mil see mikrofoni vastu võetakse. Seejärel teisendatakse see arv teisel real sentimeetriteks (kaugus cm -des). Loendurit uuendatakse otsi teiseks, et näidata, et ekraan uuendatakse. "Pööramine …" kuvatakse ainult siis, kui kaugus on alla kindla numbri, mida nimetatakse pöördekünniseks. Mõlemad rattad liiguvad edasi, kui pingimise kaugus on sellest numbrist kõrgem. Kui number on alla pöördekünni, pöörame mootorid tagurpidi (tagavara) ja muudame seejärel suunda.
Siin on mõned näidiskoodid, mis näitavad, kuidas ping -andurilt väärtusi võtta ja väärtusi OLED -ekraanil kuvada.
Siin on näide, mis testib kolme ping -andurit (vasak, keskmine ja parem) ja kuvab väärtused ekraanil:
github.com/dmccreary/coderdojo-robots/blob…
7. samm: 7. samm: joonistage mõned näod
Nüüd on meil kõik tükid nägude joonistamiseks paigas. Meie õpilased arvavad tavaliselt, et robot peaks olema õnneliku näoga, kui see edasi sõidab. Kui ta näeb midagi enda ees, registreerib see üllatustunde. Seejärel teeb ta varukoopia ja vaatab ringi, võib -olla silmade liigutamisega, et anda märku, mis suunas see pöörab.
Näo joonistamise käsklus on üsna lihtne. Näo kontuuri jaoks saame joonistada ringi ja täita iga silma jaoks ringid. Suu võib naeratuse jaoks olla poolring ja üllatustunde jaoks täidetud ümmargune ring. See on koht, kus lapsed saavad väljendite isikupärastamiseks kasutada oma loovust. Mõnikord joonistan meelega halbu nägusid ja palun õpilastelt abi nende paremaks muutmisel.
Ekraani suuruse saamiseks saate kasutada funktsioone display.height () ja display.width (). Allpool olevas koodis seadistame muutujad
poollaius = kuva.laius ()/2; poolkõrgus = kuva.kõrgus ()/2;
Kui teete neid arvutusi mitu korda, on kood natuke kiirem, kui need arvutatakse üks kord ja salvestatakse muutujale. Siin on mõned näited selle kohta, kuidas ülaltoodud igav sirge nägu on joonistatud:
// teeme seda iga tsükli alguses
display.clearDisplay (); // joonistage taustadisplay.fillCircle (poollaius, poolkõrgus, 31, VALGE) hele nägu; // parema silma tume ekraan.fillCircle (poollaius - 10, display.height ()/3, 4, BLACK); // vasak silm darkdisplay.fillCircle (poollaius + 10, display.height ()/3, 4, BLACK); // joonista sirge joon suu ekraanile.drawLine (poollaius - 10, display.height ()/3 * 2, poollaius + 10, display.height ()/3 * 2, BLACK); // see rida saadab meie uue näo OLED -ekraanile.display ();
8. samm: 8. samm: kohandage
Põhinäo joonistamine on alles algus. Õpilased saavad luua palju variatsioone. Paljud õpilased on lisanud väikese kõlari, mis mängib ringi liikudes toone või kõlab.
Samuti saate koostada väiksemaid testprogramme, mis aitavad õpilastel mootoreid õigesti ühendada. Näiteks ekraanil olev nool (kolmnurk) ütleb õpilasele, millises suunas peaks mootorite ühendamisel ratas pöörlema. Katseprogramm liigub läbi mootori iga suuna:
- Edasi
- Parem tagurpidi
- Vasakul Edasi
- Vasak tagurpidi
Iga režiimi puhul värskendatakse ekraani uue ekraaniga, mis näitab, milline ratas ja mis suunas peaks pöörlema.
Selle programmi näide on siin
github.com/dmccreary/coderdojo-robots/blob…
Lehel CoderDojo Robots GitHub FaceBot on palju täiendavaid näiteid ja programmeerimise üksikasju.
Samuti on olemas FaceBoti roboti versioon, mis võimaldab õpilastel vahetult ekraani abil muuta kõiki kokkupõrke vältimise parameetreid (edasiliikumiskiirus, pöördepikkus, pöördeaeg, pöördekiirus). Nende robotite "programmeerimiseks" pole arvutit vaja! Need versioonid sobivad ideaalselt MakerFairsile ja üritustele, kus te ei soovi arvuteid vedada.
Palun andke meile teada, milliseid uusi nägusid teie ja teie õpilased välja mõtlete!
Head kodeerimist!
Soovitan:
Atari punkkonsool beebiga 8 sammu järjestus: 7 sammu (piltidega)
Atari punkkonsool koos beebi 8-astmelise sekveneerijaga: see vaheehitus on kõik-ühes Atari punk-konsool ja beebi 8-astmeline järjestus, mida saate freesida Bantam Tools töölaua PCB-freespingis. See koosneb kahest trükkplaadist: üks on kasutajaliidese (UI) plaat ja teine on utiliit
Akustiline levitatsioon Arduino Unoga samm-sammult (8 sammu): 8 sammu
Akustiline levitatsioon Arduino Uno abil samm-sammult (8 sammu): ultraheliheli muundurid L298N DC-naissoost adapteri toiteallikas isase alalisvoolupistikuga Arduino UNOBreadboard ja analoogpordid koodi teisendamiseks (C ++)
4G/5G HD -video otseülekanne DJI droonilt madala latentsusega [3 sammu]: 3 sammu
4G/5G HD-video otseülekanne DJI droonilt madala latentsusega [3 sammu]: Järgnev juhend aitab teil saada HD-kvaliteediga otseülekandeid peaaegu igalt DJI droonilt. FlytOSi mobiilirakenduse ja veebirakenduse FlytNow abil saate alustada drooni video voogesitust
Polt - DIY juhtmeta laadimise öökell (6 sammu): 6 sammu (piltidega)
Bolt - DIY juhtmeta laadimise öökell (6 sammu): Induktiivsed laadimised (tuntud ka kui juhtmeta laadimine või juhtmeta laadimine) on traadita jõuülekande tüüp. See kasutab kaasaskantavatele seadmetele elektrit pakkumiseks elektromagnetilist induktsiooni. Kõige tavalisem rakendus on Qi traadita laadimisst
4 sammu aku sisemise takistuse mõõtmiseks: 4 sammu
4 sammu aku sisemise takistuse mõõtmiseks: Siin on 4 lihtsat sammu, mis aitavad mõõta taigna sisemist takistust