Satura rādītājs:
- 1. darbība: 1. darbība: izveidojiet savu bāzes robotu
- 2. darbība: 2. darbība. Atrodiet un pasūtiet savu OLED displeju
- 3. darbība: 3. darbība: savienojiet OLED ar Arduino Nano
- 4. darbība: 4. darbība: pārbaudiet savu displeju
- 5. darbība: 5. darbība: pievienojiet OLED robotam
- 6. darbība: 6. darbība: parādiet robota parametrus
- 7. solis: 7. solis: uzzīmējiet dažas sejas
- 8. darbība: 8. darbība: pielāgojiet
Video: FaceBot: 8 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:51
Šajā rokasgrāmatā tiks parādīts, kā izveidot lētu (39 USD) sadursmju novēršanas robotu ar seju fontu. Mēs to darām, izmantojot jaunu lētu, spilgtu OLED displeju. Mūsu skolēniem patīk saviem robotiem pievienot sejas. Viņiem patīk zīmēt smaidīgas sejas, kas mainās atkarībā no robota darbības.
Ir pieejami vairāki mazi zemu izmaksu roboti, kuru cena ir mazāka par 25 ASV dolāriem, kas ļauj iemācīt datorzinātņu pamatus. Viena no šo robotu problēmām ir tā, ka tie nenodrošina pārredzamību par to, kas notiek robota iekšienē, kamēr jūs to veidojat. 2018. gadā tas viss sāka mainīties, pateicoties zemu izmaksu augstas kvalitātes OLED displeju pieejamībai. Šiem displejiem ir šādas priekšrocības:
- Tie ir ļoti spilgti un ar lielu kontrastu. Pat gaišā telpā tos ir viegli nolasīt no daudziem leņķiem.
- Viņiem ir laba izšķirtspēja. Es izmantoju 168x64 pikseļus. Tas ir gandrīz četras reizes vairāk nekā iepriekš izmantotie displeji.
- Tie ir mazjaudīgi un darbojas konsekventi pat tad, ja jūsu robota jauda samazinās.
- Tās ir salīdzinoši zemas izmaksas (aptuveni 16 USD katra), un cenas samazinās.
Agrāk tos bija grūti ieprogrammēt, un tie izmantoja pārāk daudz atmiņas, lai tos varētu izmantot ar zemu izmaksu Arduino Nanos. Nano ir tikai 2K vai dinamiska RAM. Šī rokasgrāmata parādīs, kā novērst šīs problēmas un izveidot robotu, kuru bērniem patīk programmēt.
1. darbība: 1. darbība: izveidojiet savu bāzes robotu
Lai izveidotu FaceBot, mēs parasti sākam ar bāzes robotu. Viens piemērs ir $ 25 CoderDojo robots, kas aprakstīts šeit. Šis robots izmanto lēto un populāro Arduino Nano, vienkāršu motora kontrolieri, 2 līdzstrāvas motorus un 4 vai 6 AA baterijas. Lielākā daļa studentu sāk izmantot ping sensoru, lai izveidotu sadursmes novēršanas robotu. Tā kā tas nodrošina 5 V barošanas sistēmu, tas ir lieliski piemērots FaceBot. Lai izmaksas būtu zemas, es parasti lieku studentiem pasūtīt detaļas tiešsaistē no e-Bay. Daļas bieži tiek piegādātas 2-3 nedēļas, un tām ir nepieciešams neliels daudzums lodēšanas motoriem un barošanas slēdzim. Pārējie savienojumi tiek veikti, izmantojot 400 saišu maizes dēli. Studenti bieži karsti pielīmē vadus, lai tie neslīdētu ārā.
Mēs veicam vienu izmaiņu standarta konstrukcijā, lai izvairītos no sadursmēm. Mēs pārvietojam ping sensoru no šasijas augšdaļas uz zem šasijas. Tas atstāj vietu displejam robota augšpusē.
Pēc sadursmju novēršanas programmēšanas jūs lasāt, lai pievienotu seju!
2. darbība: 2. darbība. Atrodiet un pasūtiet savu OLED displeju
Kad iznāca OLED displeji, zemo cenu diski bija paredzēti pulksteņiem vai fitnesa monitoriem. Tā rezultātā tie bija mazi, parasti apmēram 1 collas. Labā ziņa ir tā, ka tās bija lētas, aptuveni 3 USD. Mēs izveidojām dažus robotus ar šiem displejiem, taču, tā kā displeju izmēri bija ierobežoti, mēs varējām to izdarīt ekrānā. Tad 2018. gadā mēs sākām redzēt, ka ir samazinājušās izmaksas par lielākiem 2,42 collu OLED ekrāniem. 2019. gada janvārī cenas pazeminājās līdz aptuveni 16 USD. Beidzot mums bija lielisks displejs, ko varētu izmantot mūsu robotu sejām.
Šeit ir šo displeju specifikācijas:
- 2,42 collas (diagonāles mērījums)
- 128 pikseļi (x dimensija)
- 64 pikseļi augsts (y dimensija)
- Zema jauda (parasti 10 mA)
- Vienkrāsains (tie ir dzeltenā, zaļā, zilā un baltā krāsā)
- Noklusējuma SPI saskarne, lai gan, ja vēlaties, varat to mainīt uz I2C
- SSD1309 draiveris (ļoti izplatīts displeja draiveris)
SPI saskarnei ir septiņi vadi. Šeit ir tipiskās saskarnes etiķetes:
- CS - mikroshēmas izvēle
- DC - dati/komanda
- RES - Atiestatīt
- SDA - dati - tas jāpievieno Arduino Nano tapai 11
- SCL - Pulkstenis - tas jāpievieno Arduino Nano tapai 13
- VCC - +5 volti
- GND - zeme
Jums būs nepieciešams arī kāds vads, lai displeju savienotu ar maizes dēli. Displejiem parasti ir 7 kontaktu galvene, ko pielodējat displejā. Es izmantoju 7 20mc Dupont savienotājus no vīriešiem līdz vīriešiem un lodēju tos tā, lai vadi izietu displeja aizmugurē.
3. darbība: 3. darbība: savienojiet OLED ar Arduino Nano
Tagad jūs esat gatavs pārbaudīt savu OLED. Es izmantoju citu Arduino Nano, lai pārbaudītu, vai katrs displejs darbojas. Kad testi darbojas, es to savienoju ar robotu. Testētāja elektroinstalācijas shēma ir parādīta attēlā iepriekš. Ņemiet vērā, ka varat pārvietot OLED savienojumus uz citām tapām, kas atbalsta digitālās izejas, taču, ja esat pārliecinājies, ka SCL (pulkstenis) ir ieslēgts Arduino Nano pin 13 un SDA (dati) ir Arduino Nano pin 11, varat izmantot noklusējuma iestatījumus programmatūru. Tas padara jūsu kodu nedaudz vienkāršāku.
4. darbība: 4. darbība: pārbaudiet savu displeju
Lai pārbaudītu jūsu displeju, mēs izmantosim bibliotēku u8g2. Ir arī citas bibliotēkas, kuras varat izmantot, taču, manuprāt, neviena no tām nav tik laba u8g2 bibliotēkā. Viens kritisks faktors ir tas, cik daudz RAM Arduino izmanto displejs. U8g2 ir vienīgā bibliotēka, kuru atradu un kurā tiek izmantots lapas režīms, kas darbosies ar Arduino Nano.
Šo bibliotēku varat pievienot savam Arduino IED, izvēlnē “Pārvaldīt bibliotēkas” meklējot “u8g2”. Varat arī lejupielādēt kodu tieši no gethub.
github.com/olikraus/u8g2
Pārbaudes kods, ko izmantoju, ir šeit:
github.com/dmccreary/coderdojo-robots/blob…
Jāņem vērā dažas lietas. SCL un SDA tapu numuri tiek komentēti, jo tie ir noklusējuma tapas Nano. U8g2 konstruktors ir galvenā līnija:
// Mēs izmantojam SSD1306, 128x64, vienas lappuses, bez nosaukuma, 4 vadi, aparatūra, SPI bez rotācijas, kas izmanto tikai 27% dinamiskās atmiņas.
Mēs izmantojam vienas lapas režīmu, jo šis režīms izmanto minimālu RAM. Mēs izmantojam 4 vadu aparatūras saskarni, un OLED pēc noklusējuma ir aprīkots ar SPI.
5. darbība: 5. darbība: pievienojiet OLED robotam
Tagad, kad mums ir strādājošs OLED un mēs zinām, kā inicializēt u8g2 bibliotēkas, mēs esam gatavi integrēt OLED ar mūsu bāzes robotu. Ir jāņem vērā dažas lietas. Savā OLED testā mēs izmantojām tapas, kas visas atradās blakus, lai atvieglotu elektroinstalāciju. Diemžēl mums ir nepieciešama 9. tapa, lai vadītu mūsu robotu, jo tā ir viena no PWM tapām, kas mums jānosūta analogs signāls motora vadītājam. Risinājums ir pārvietot vadu, kas atrodas uz 9. tapas, uz citu brīvu tapu un pēc tam mainīt #define paziņojumu uz jauno tapu. Lai uzstādītu OLED robota priekšpusē, es izgriezu divus trīsstūrveida gabalus no plexiglass un karsti pielīmēju tos pie šasijas. Man vienmēr patīk izmantot kādu smilšpapīru, lai sasmalcinātu organiskā stikla virsmu, pirms es salīmēju detaļas kopā, lai tās pārāk viegli nesadalītos.
Tālāk iegūstam dažus datus par mūsu OLED un uzzīmējam dažas sejas uz robota!
6. darbība: 6. darbība: parādiet robota parametrus
Viena no jaukajām lietām par displeju ir tā, ka tas patiešām palīdz atkļūdot to, kas notiek mūsu robotā, kamēr tas brauc apkārt. Nav nekas neparasts, ka izstrādātājiem darbvirsmā darbojas funkcija, kad esat savienots ar datoru, lai tā nedarbotos, kad robots brauc apkārt. Labs robota parametra parādīšanas piemērs ir tādas vērtības parādīšana kā ping sensora izmērītais attālums.
Iepriekš redzamajā fotoattēlā pirmā rinda (atbalss laiks) parāda aizkaves laiku starp brīdi, kad skaņa atstāj ultraskaņas skaļruni, un laiku, kad to uztver mikrofons. Pēc tam šis skaitlis tiek pārvērsts centimetros otrajā rindā (attālums cm). Skaitītājs tiek atjaunināts, meklējot otro reizi, lai parādītu, ka displejs tiek atjaunināts. "Pagrieziens …" tiek parādīts tikai tad, ja attālums ir mazāks par noteiktu skaitli, ko sauc par pagrieziena slieksni. Abi riteņi virzās uz priekšu, ja ping attālums pārsniedz šo skaitli. Ja skaitlis ir zem pagrieziena sliekšņa, mēs mainām dzinējus (dublējumkopijas) un pēc tam mainām virzienu.
Šeit ir daži koda paraugi, kas parāda, kā ņemt vērtības no ping sensora un parādīt vērtības jūsu OLED ekrānā.
Šeit ir piemērs, kas pārbauda trīs ping sensorus (pa kreisi, centrā un pa labi) un parāda vērtības displejā:
github.com/dmccreary/coderdojo-robots/blob…
7. solis: 7. solis: uzzīmējiet dažas sejas
Tagad mums ir visi gabali, lai uzzīmētu dažas sejas. Mūsu skolēni parasti domā, ka robotam jābūt laimīgai sejai, ja tas brauc uz priekšu. Kad tas ierauga kaut ko sev priekšā, tas reģistrē pārsteiguma sajūtu. Pēc tam tas atkāpjas un paskatās apkārt, iespējams, acīm kustoties, lai norādītu, kādā virzienā tas pagriezīsies.
Zīmēšanas komanda sejas zīmēšanai ir diezgan vienkārša. Mēs varam uzzīmēt apli sejas kontūrai un aizpildīt apļus katrai acij. Mute var būt pusloku smaidam un aizpildīts apaļš aplis pārsteiguma sajūtai. Šī ir vieta, kur bērni var izmantot savu radošumu, lai personalizētu izteiksmes. Es dažreiz apzināti uzzīmēju sliktas sejas un lūdzu studentus palīdzēt man tās uzlabot.
Lai iegūtu displeja izmēru, varat izmantot funkcijas display.height () un display.width (). Zemāk esošajā kodā mēs iestatām mainīgos
half_width = display.width ()/2; half_height = display.height ()/2;
Ja veicat šos aprēķinus daudzas reizes, kods ir nedaudz ātrāks, ja tie tiek aprēķināti vienu reizi un saglabāti mainīgajā. Šeit ir daži piemēri tam, kā ir uzzīmēta garlaicīgā taisnā seja:
// mēs to darām katras cilpas sākumā
display.clearDisplay (); // uzzīmējiet gaišu seju fonamdisplay.fillCircle (pusplatums, puse augstums, 31, BALTS); // labās acs tumšais displejs.fillCircle (pusplatums - 10, display.height ()/3, 4, BLACK); // kreisā acs darkdisplay.fillCircle (pusplatums + 10, displejs.augstums ()/3, 4, BLACK); // uzzīmējiet taisnu līniju mutes displejam.drawLine (pusplatums - 10, displejs.augstums ()/3 * 2, pusplatums + 10, displejs.augstums ()/3 * 2, BLACK); // šī rinda nosūta mūsu jauno seju uz OLED displeja displeju.display ();
8. darbība: 8. darbība: pielāgojiet
Pamata sejas uzzīmēšana ir tikai sākums. Studenti var izveidot daudzas variācijas. Daudzi studenti ir pievienojuši nelielu skaļruni, kas pārvietojas un atskaņo toņus vai skaņas.
Varat arī izveidot mazākas pārbaudes programmas, kas palīdz studentiem pareizi savienot motorus. Piemēram, bultiņa (trīsstūris) uz ekrāna studentam pateiks, kādā virzienā ritenim vajadzētu griezties, kad pievienojat motorus. Pārbaudes programma tiek veikta katrā motora virzienā:
- Pa labi Uz priekšu
- Labais reverss
- Pa kreisi Uz priekšu
- Kreisais reverss
Katram režīmam ekrāns tiek atjaunināts ar jaunu displeju, lai parādītu, kuram ritenim jāgriežas un kādā virzienā.
Šīs programmas piemērs ir šeit
github.com/dmccreary/coderdojo-robots/blob…
CoderDojo Robots GitHub FaceBot lapā ir daudz papildu piemēru un programmēšanas detaļu.
Ir arī FaceBot robota versija, kas ļauj studentiem mainīt visus sadursmju novēršanas parametrus (ātrumu uz priekšu, pagrieziena attālumu, pagrieziena laiku, pagrieziena ātrumu) tieši, izmantojot displeju. Šo robotu "programmēšanai" nav nepieciešams dators! Šīs versijas ir ideāli piemērotas MakerFairs un pasākumiem, kuros nevēlaties vilkt datorus.
Lūdzu, dariet mums zināmu, ar kādām jaunām sejām nākat klajā jūs un jūsu studenti!
Laimīgu kodēšanu!
Ieteicams:
Arduino brīdinājuma sistēma par automašīnas novietošanu atpakaļgaitā Soli pa solim: 4 soļi
Arduino brīdinājuma sistēma par automašīnas novietošanu atpakaļgaitā Soli pa solim: Šajā projektā es izveidošu vienkāršu Arduino automašīnas atpakaļgaitas stāvvietas sensora shēmu, izmantojot Arduino UNO un ultraskaņas sensoru HC-SR04. Šo uz Arduino bāzēto automašīnas reverso brīdinājuma sistēmu var izmantot autonomai navigācijai, robotu diapazonam un citiem diapazoniem
Soli pa solim datora veidošana: 9 soļi
Soli pa solim datora veidošana: Piegādes: Aparatūra: mātesplateCPU & CPU dzesētājs PSU (barošanas bloks) Krātuve (HDD/SSD) RAMGPU (nav nepieciešams) Korpuss Instrumenti: skrūvgriezis ESD rokassprādze/matermālā pasta ar aplikatoru
Trīs skaļruņu shēmas -- Soli pa solim apmācība: 3 soļi
Trīs skaļruņu shēmas || Soli pa solim apmācība: Skaļruņu ķēde pastiprina no vides saņemtos audio signālus uz MIC un nosūta to skaļrunim, no kura tiek radīts pastiprināts audio. Šeit es parādīšu trīs dažādus veidus, kā izveidot šo skaļruņu shēmu, izmantojot:
Arduino Halloween Edition - zombiju uznirstošais ekrāns (soļi ar attēliem): 6 soļi
Arduino Helovīna izdevums - zombiju uznirstošais ekrāns (soļi ar attēliem): Vai vēlaties Helovīnā nobiedēt savus draugus un radīt kliedzošu troksni? Vai arī vienkārši gribi uztaisīt labu palaidnību? Šis zombiju uznirstošais ekrāns to var izdarīt! Šajā pamācībā es iemācīšu jums, kā viegli izveidot izlecošus zombijus, izmantojot Arduino. HC-SR0
Akustiskā levitācija ar Arduino Uno soli pa solim (8 soļi): 8 soļi
Akustiskā levitācija ar Arduino Uno soli pa solim (8 soļi): ultraskaņas skaņas pārveidotāji L298N līdzstrāvas adaptera strāvas padeve ar vīriešu līdzstrāvas tapu Arduino UNOBreadboard un analogie porti koda konvertēšanai (C ++)