Përmbajtje:
- Hapi 1: Hapi 1: Ndërtoni robotin tuaj bazë
- Hapi 2: Hapi 2: Gjeni dhe porositni ekranin tuaj OLED
- Hapi 3: Hapi 3: Lidhni OLED me Arduino Nano
- Hapi 4: Hapi 4: Provoni ekranin tuaj
- Hapi 5: Hapi 5: Shtoni OLED -in tuaj në Robot
- Hapi 6: Hapi 6: Shfaq Parametrat e Robotit
- Hapi 7: Hapi 7: Vizatoni Disa Fytyra
- Hapi 8: Hapi 8: Përshtateni
Video: FaceBot: 8 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:10
Ky udhëzues do t'ju tregojë se si të krijoni një robot me kosto të ulët (39 dollarë) për shmangien e përplasjes me një fytyrë në font. Ne e bëjmë këtë duke përdorur një ekran të ri me kosto të ulët dhe të ndritshme OLED. Studentët tanë duan të shtojnë fytyra në robotët e tyre. Atyre u pëlqen të vizatojnë fytyra të qeshura që ndryshojnë në bazë të asaj që bën roboti.
Ka disa robotë të vegjël me kosto të ulët në dispozicion për nën 25 dollarë që ju lejojnë të mësoni bazat e shkencës kompjuterike. Një nga problemet me këta robotë është se ata nuk ofrojnë transparencë për atë që po ndodh brenda robotit ndërsa ju jeni duke e ndërtuar atë. Në vitin 2018 gjithçka filloi të ndryshonte me disponueshmërinë e ekraneve OLED me kosto të ulët me cilësi të lartë. Këto ekrane kanë përfitimet e mëposhtme:
- Ato janë shumë të ndritshme dhe kanë kontrast të lartë. Edhe në një dhomë të ndritshme ato janë të lehta për t'u lexuar nga shumë kënde.
- Ata kanë rezolucion të mirë. Ato që po përdor janë 168x64 piksele. Kjo është pothuajse 4 herë ekranet e mëparshme që kemi përdorur.
- Ata janë me fuqi të ulët dhe funksionojnë vazhdimisht edhe kur fuqia e robotit tuaj po bie.
- Ato janë me kosto relativisht të ulët (rreth 16 dollarë secila) dhe çmimet janë në rënie.
Në të kaluarën, ato kanë qenë të vështira për t'u programuar dhe do të përdornin shumë memorie për t'u përdorur me Arduino Nanos me kosto të ulët. Nano ka vetëm 2K ose RAM dinamike. Ky udhëzues do t'ju tregojë se si të punoni rreth këtyre problemeve dhe të ndërtoni një robot që fëmijët duan ta programojnë.
Hapi 1: Hapi 1: Ndërtoni robotin tuaj bazë
Për të ndërtuar një FaceBot zakonisht fillojmë me robotin bazë. Një shembull është Roboti CoderDojo 25 dollarësh që përshkruhet këtu. Ky robot përdor Arduino Nano me kosto të ulët dhe popullore, një kontrollues i thjeshtë motorik, 2 motorë DC dhe 4 ose 6 bateri AA. Shumica e studentëve fillojnë të përdorin sensorin ping për të ndërtuar një robot për shmangien e përplasjes. Për shkak se siguron një sistem energjie 5v është i përsosur për FaceBot. Për të mbajtur kostot e ulëta, zakonisht i bëj studentët e mi të porosisin pjesët on-line nga e-Bay. Pjesët shpesh kërkojnë 2-3 javë për të mbërritur dhe kërkojnë një sasi të vogël bashkimi për motorët dhe ndërprerësin e energjisë. Pjesa tjetër e lidhjeve bëhen duke përdorur një dërrasë buke 400-kravatë. Nxënësit shpesh ngjisin telat në mënyrë që të mos rrëshqasin.
Ekziston një ndryshim që bëjmë në modelin standard të shmangies së përplasjes. Ne e lëvizim sensorin ping nga maja e shasisë në nën shasi. Kjo lë vend për shfaqjen në krye të robotit.
Pasi të keni programuar shmangien e përplasjes, lexoheni për të shtuar një fytyrë!
Hapi 2: Hapi 2: Gjeni dhe porositni ekranin tuaj OLED
Kur dolën ekranet OLED, ato me kosto të ulët u krijuan për orë ose monitorues të fitnesit. Si rezultat, ata ishin të vegjël, zakonisht rreth 1 inç të gjerë. Lajmi i mirë është se ata ishin me kosto të ulët, rreth 3 dollarë. Ne ndërtuam disa robotë me këto ekrane, por sepse madhësia e ekraneve ishte e kufizuar ajo që mund të bënim në ekran. Pastaj në vitin 2018 ne filluam të shohim që kostoja e ekraneve më të mëdhenj 2.42 inç OLED të ulet. Në janar të vitit 2019 çmimet zbresin në rreth 16 dollarë. Më në fund patëm një ekran të mrekullueshëm që mund të përdorim për fytyrat tona robotike.
Këtu janë specifikimet e këtyre ekraneve:
- 2.42 inç (matje diagonale)
- 128 piksele në të gjithë (dimensioni x)
- 64 piksel i lartë (dimensioni y)
- Fuqia e ulët (zakonisht 10ma)
- Pikturë njëngjyrëshe (ato vijnë në të verdhë, jeshile, blu dhe të bardhë)
- Ndërfaqja e paracaktuar SPI edhe pse mund ta ndryshoni në I2C nëse dëshironi
- Shoferi SSD1309 (një drejtues shumë i zakonshëm i ekranit)
Ndërfaqja SPI ka shtatë tela. Këtu janë etiketat tipike në ndërfaqen:
- CS - Chip Select
- DC - Të dhënat/komanda
- BRE - Rivendos
- SDA - Të dhënat - kjo duhet të lidhet me pinin Arduino Nano 11
- SCL - Ora - kjo duhet të lidhet me kunjin Arduino Nano 13
- VCC - +5 volt
- GND - Tokë
Ju gjithashtu do të duhet të keni pak tela për të lidhur ekranin me tabelën e bukës. Ekranet zakonisht vijnë me një kokë 7-pin të cilën e lidhni në ekran. Përdora 7 lidhje Dupont 20 mc nga mashkulli në mashkull dhe i bashkova ato në mënyrë që telat të dilnin nga pjesa e pasme e ekranit.
Hapi 3: Hapi 3: Lidhni OLED me Arduino Nano
Tani jeni gati për të testuar OLED tuaj. Unë përdor një Arduino Nano tjetër vetëm për të provuar që çdo ekran që marr funksionon. Pasi testet të funksionojnë atëherë e lidh me robotin. Diagrami i instalimeve elektrike për testuesin tregohet në figurën e mësipërme. Vini re se mund t'i lëvizni lidhjet OLED në kunjat e tjerë që mbështesin daljet dixhitale, por nëse siguroheni që SCL (ora) është në Arduino Nano pin 13 dhe SDA (të dhënat) është në Arduino Nano pin 11, mund të përdorni cilësimet e paracaktuara në softueri. Kjo e mban kodin tuaj pak më të thjeshtë.
Hapi 4: Hapi 4: Provoni ekranin tuaj
Për të testuar ekranin tuaj ne do të përdorim bibliotekën u8g2. Ka biblioteka të tjera që mund të përdorni, por sipas përvojës sime, asnjëra prej tyre nuk është aq e mirë në bibliotekën u8g2. Një faktor kritik është sa RAM brenda Arduino përdoret nga ekrani. U8g2 është biblioteka e vetme që gjeta që përdor një "Modalitet faqe" që do të punojë me Arduino Nano.
Ju mund ta shtoni këtë bibliotekë në IED -in tuaj Arduino duke kërkuar për "u8g2" në menunë "Menaxho Bibliotekat". Ju gjithashtu mund ta shkarkoni kodin direkt nga gethub.
github.com/olikraus/u8g2
Kodi i testit që unë përdor është këtu:
github.com/dmccreary/coderdojo-robots/blob…
Ka disa gjëra që duhen vënë re. Numrat pin SCL dhe SDA komentohen sepse janë kunjat e paracaktuar në Nano. Konstruktori për u8g2 është linja kryesore:
// Ne po përdorim SSD1306, 128x64, një faqe, pa emër, 4 tela, Hardware, SPI pa rrotullim i cili përdor vetëm 27% të kujtesës dinamikeU8G2_SSD1306_128X64_NONAME_1_4W_HW_SPI u8g2 (U8G2_R0, CS_PIN, DC_PIN, RDS_)
Ne po përdorim mënyrën me një faqe pasi ajo mënyrë përdor RAM minimal. Ne po përdorim ndërfaqen e harduerit me 4 tela dhe OLED vjen me SPI si parazgjedhje.
Hapi 5: Hapi 5: Shtoni OLED -in tuaj në Robot
Tani që kemi një OLED që punon dhe dimë si të inicializojmë bibliotekat u8g2 jemi gati të integrojmë OLED me robotin tonë bazë. Ka disa gjëra që duhen marrë parasysh. Në testin tonë OLED ne përdorëm kunjat që ishin të gjithë pranë njëri -tjetrit për ta bërë instalimin e kabllove më të lehtë. Fatkeqësisht, ne kemi nevojë për pin 9 për të drejtuar Robotin tonë sepse është një nga kunjat PWM që na duhet të dërgojmë një sinjal analog tek drejtuesi i motorit. Zgjidhja është të lëvizni tela që është në kunjin 9 në një kunj tjetër falas dhe më pas të ndryshoni deklaratën #define në atë kunj të ri. Për të montuar OLED-in në pjesën e përparme të robotit unë kam prerë dy pjesë trekëndore nga pleksiglas dhe ngjitur me nxehtësi ata në shasi. Gjithmonë më pëlqen të përdor një letër zmerile të kursit për të ashpërsuar sipërfaqen e pleksiglasit para se të ngjit pjesët së bashku në mënyrë që ato të mos ndahen shumë lehtë.
Tjetra, le të marrim disa të dhëna për OLED -in tonë dhe të vizatojmë disa fytyra në robot!
Hapi 6: Hapi 6: Shfaq Parametrat e Robotit
Një nga gjërat e këndshme për të pasur një ekran është se ajo me të vërtetë ndihmon në korrigjimin e asaj që po ndodh brenda robotit tonë ndërsa po lëviz përreth. Nuk është e pazakontë që zhvilluesit të kenë një funksion që funksionon në desktop kur jeni të lidhur me kompjuterin tuaj vetëm që të mos funksionojë kur roboti lëviz me makinë. Shfaqja e një vlere të tillë si distanca e matur nga sensori ping është një shembull i mirë i shfaqjes së një parametri robot.
Në foton e mësipërme, rreshti i parë (Koha Echo) tregon kohën e vonesës midis kur tingulli largohet nga altoparlanti tejzanor dhe kohës që merret nga mikrofoni. Ky numër më pas konvertohet në centimetra në rreshtin e dytë (Distanca në cm). Numëruesi azhurnohet kërkimi i dytë për të treguar që ekrani po përditësohet. "Kthimi …" shfaqet vetëm nëse distanca është nën një numër specifik i cili quhet pragu i kthesës. Të dy rrotat lëvizin përpara nëse distanca e pingut është mbi këtë numër. Nëse numri është nën pragun e kthesës, atëherë ne i kthejmë motorët (duke bërë kopje rezervë) dhe më pas ndryshojmë drejtimin.
Këtu është një shembull i kodit që ju tregon se si të merrni vlerat nga sensori ping dhe të shfaqni vlerat në ekranin tuaj OLED.
Këtu është një shembull që teston tre sensorë ping (majtas, qendër dhe djathtas) dhe tregon vlerat në ekran:
github.com/dmccreary/coderdojo-robots/blob…
Hapi 7: Hapi 7: Vizatoni Disa Fytyra
Tani i kemi të gjitha pjesët në vend për të vizatuar disa fytyra. Studentët tanë zakonisht mendojnë se roboti duhet të ketë një fytyrë të lumtur nëse po ecën përpara. Kur sheh diçka para tij, regjistron një ndjenjë befasie. Pastaj kthehet dhe shikon përreth, ndoshta me sytë që lëvizin për të sinjalizuar se në cilin drejtim do të kthehet.
Komanda e vizatimit për të vizatuar një fytyrë janë mjaft të thjeshta. Ne mund të vizatojmë një rreth për skicën e fytyrës dhe të mbushur me rrathë për secilin sy. Goja mund të jetë një gjysmë rrethi për një buzëqeshje dhe një rreth i rrumbullakët i mbushur për një ndjenjë befasie. Ky është vendi ku fëmijët mund të përdorin krijimtarinë e tyre për të personalizuar shprehjet. Nganjëherë vizatoj qëllimisht fytyra të këqija dhe kërkoj nga studentët të më ndihmojnë të bëhem më mirë.
Ju mund të përdorni funksionet display.height () dhe display.width () për të marrë madhësinë e ekranit. Në kodin më poshtë vendosim variabla
half_width = display.width ()/2; half_height = display.height ()/2;
Nëse i bëni këto llogaritje shumë herë, kodi është pak më i shpejtë nëse llogariten një herë dhe ruhen në një ndryshore. Këtu janë disa shembuj se si është vizatuar fytyra e drejtë e mërzitshme lart:
// ne e bëjmë këtë në fillim të secilit lak
display.clearDisplay (); // vizatoni një fytyrë të lehtë për sfondindisplay.fillCircle (half_width, half_height, 31, WHITE); // display dark dark.fillCircle (half_width - 10, display.height ()/3, 4, BLACK); // syri i majtë darkdisplay.fillCircle (half_width + 10, display.height ()/3, 4, BLACK); // vizatoni një vijë të drejtë për ekranin e gojës.drawLine (half_width - 10, display.height ()/3 * 2, half_width + 10, display.height ()/3 * 2, BLACK); // kjo linjë dërgon fytyrën tonë të re në ekranin e ekranit OLED.display ();
Hapi 8: Hapi 8: Përshtateni
Vizatimi i fytyrës bazë është vetëm fillimi. Nxënësit mund të krijojnë shumë ndryshime. Shumë studentë kanë shtuar një folës të vogël që luan një ton ose tingull ndërsa lëvizin.
Ju gjithashtu mund të ndërtoni programe më të vogla testimi që ndihmojnë studentët tuaj të lidhin motorët në mënyrë korrekte. Për shembull, një shigjetë (trekëndësh) në ekran do t'i tregojë studentit se në cilin drejtim duhet të kthehet rrota kur jeni duke lidhur motorët. Programi i testimit kalon nëpër secilën nga drejtimet motorike:
- E Drejtë Përpara
- E kundërta e djathtë
- Majtas Përpara
- E majta mbrapsht
Për secilën mënyrë, ekrani azhurnohet me një ekran të ri për të treguar se cila rrotë duhet të kthehet dhe në çfarë drejtimi.
Një shembull i atij programi është këtu
github.com/dmccreary/coderdojo-robots/blob…
Ka shumë shembuj shtesë dhe detaje programimi në faqen CoderDojo Robots GitHub FaceBot.
Ekziston gjithashtu një version i robotit FaceBot që lejon studentët të ndryshojnë të gjithë parametrat e shmangies së përplasjes (shpejtësia përpara, distanca e kthesës, koha e kthesës, shpejtësia e kthesës) drejtpërdrejt duke përdorur ekranin. Asnjë kompjuter nuk kërkohet për të "programuar" këta robotë! Këto versione janë ideale për MakerFairs dhe ngjarjet që ju nuk dëshironi të transportoni kompjuterë përreth.
Ju lutemi na tregoni se me cilat fytyra të reja keni dalë ju dhe studentët tuaj!
Kodim i lumtur!
Recommended:
Si të bëni 4G LTE Antenë të BiQuade të Dyfishtë Hapa të Lehtë: 3 Hapa
Si të bëni 4G LTE Antenë BiQuade të Dyfishtë Hapa të Lehtë: Shumicën e kohës me të cilën jam përballur, nuk kam forcë të mirë të sinjalit në punët e mia të përditshme. Kështu që. Kërkoj dhe provoj lloje të ndryshme antenash por nuk funksionoj. Pas humbjes së kohës gjeta një antenë që shpresoj ta bëj dhe ta provoj, sepse është parimi i ndërtimit jo
Dizajni i lojës në lëvizje në 5 hapa: 5 hapa
Dizajni i lojës në Flick në 5 hapa: Flick është një mënyrë vërtet e thjeshtë për të bërë një lojë, veçanërisht diçka si një enigmë, roman vizual ose lojë aventure
Zbulimi i fytyrës në Raspberry Pi 4B në 3 hapa: 3 hapa
Zbulimi i fytyrës në Raspberry Pi 4B në 3 hapa: Në këtë Instructable ne do të bëjmë zbulimin e fytyrës në Raspberry Pi 4 me Shunya O/S duke përdorur Bibliotekën Shunyaface. Shunyaface është një bibliotekë për njohjen/zbulimin e fytyrës. Projekti synon të arrijë shpejtësinë më të shpejtë të zbulimit dhe njohjes me
Pasqyrë DIY Vanity në hapa të thjeshtë (duke përdorur dritat LED të shiritit): 4 hapa
DIY Vanity Mirror në hapa të thjeshtë (duke përdorur dritat e shiritit LED): Në këtë postim, unë bëra një DIY Vanity Mirror me ndihmën e shiritave LED. Reallyshtë vërtet e lezetshme dhe duhet t'i provoni gjithashtu
Qëndrim për laptopë me 3 hapa dhe 3 hapa (me syze leximi dhe tabaka me stilolaps): 5 hapa
Qëndrim për laptopë me hapa 3 & 3 hapa (me syze leximi dhe tabaka për stilolapsa): Kjo $ 3 & Qëndrimi i laptopit me 3 hapa mund të bëhet brenda 5 minutave. It'sshtë shumë e fortë, me peshë të lehtë dhe mund të paloset për ta marrë kudo që të shkoni