Përmbajtje:

FaceBot: 8 hapa
FaceBot: 8 hapa

Video: FaceBot: 8 hapa

Video: FaceBot: 8 hapa
Video: PIKOTARO - PPAP (Pen Pineapple Apple Pen) (Long Version) (Official Video) [Ultra Records] 2024, Tetor
Anonim
FaceBot
FaceBot

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ë

Hapi 1: Ndërtoni robotin tuaj bazë
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

Hapi 2: Gjeni dhe porositni ekranin tuaj OLED
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:

  1. 2.42 inç (matje diagonale)
  2. 128 piksele në të gjithë (dimensioni x)
  3. 64 piksel i lartë (dimensioni y)
  4. Fuqia e ulët (zakonisht 10ma)
  5. Pikturë njëngjyrëshe (ato vijnë në të verdhë, jeshile, blu dhe të bardhë)
  6. Ndërfaqja e paracaktuar SPI edhe pse mund ta ndryshoni në I2C nëse dëshironi
  7. Shoferi SSD1309 (një drejtues shumë i zakonshëm i ekranit)

Ndërfaqja SPI ka shtatë tela. Këtu janë etiketat tipike në ndërfaqen:

  1. CS - Chip Select
  2. DC - Të dhënat/komanda
  3. BRE - Rivendos
  4. SDA - Të dhënat - kjo duhet të lidhet me pinin Arduino Nano 11
  5. SCL - Ora - kjo duhet të lidhet me kunjin Arduino Nano 13
  6. VCC - +5 volt
  7. 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

Hapi 3: Lidhni OLED me Arduino Nano
Hapi 3: Lidhni OLED me Arduino Nano
Hapi 3: Lidhni OLED me Arduino Nano
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

Hapi 4: Testoni ekranin tuaj
Hapi 4: Testoni 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

Hapi 5: Shtoni OLED -in tuaj në Robot
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

Hapi 6: Shfaq Parametrat e Robotit
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

Hapi 7: Vizatoni disa fytyra!
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

Hapi 8: Rregulloni
Hapi 8: Rregulloni

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:

  1. E Drejtë Përpara
  2. E kundërta e djathtë
  3. Majtas Përpara
  4. 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: