Агуулгын хүснэгт:

FaceBot: 8 алхам
FaceBot: 8 алхам

Видео: FaceBot: 8 алхам

Видео: FaceBot: 8 алхам
Видео: ГАДААДАД МАГИСТРТ СУРАЛЦАХАД ӨӨРИЙГӨӨ БЭЛТГЭХ 8 АЛХАМ • номын хураангуй/ревью • Anu Harchu 2024, Аравдугаар сар
Anonim
FaceBot
FaceBot

Энэхүү гарын авлагад мөргөлдөөнөөс зайлсхийх роботыг хямд үнээр (39 доллар) хэрхэн бүтээхийг харуулах болно. Бид үүнийг шинэ хямд, тод OLED дэлгэц ашиглан хийдэг. Манай оюутнууд роботдоо нүүр нэмэх дуртай. Тэд роботын хийж байгаа зүйлээс шалтгаалан өөрчлөгддөг инээмсэглэсэн нүүр зурах дуртай.

Компьютерийн шинжлэх ухааны үндсийг заах боломжийг олгодог 25 доллараас доош үнэтэй хэд хэдэн жижиг роботууд байдаг. Эдгээр роботуудтай холбоотой нэг бэрхшээл бол робот бүтээх явцад дотор нь юу болж байгаа талаар ил тод байдлыг хангадаггүй явдал юм. 2018 онд бүх зүйл өөрчлөгдсөн бөгөөд хямд үнэтэй өндөр чанартай OLED дэлгэцтэй болсон. Эдгээр дэлгэц нь дараахь давуу талуудтай.

  • Тэд маш тод, тодосгогч шинж чанартай байдаг. Гэрэлтэй өрөө ч гэсэн тэдгээрийг олон талаас нь уншихад хялбар байдаг.
  • Тэд сайн нягтралтай. Миний ашиглаж байгаа нь 168x64 пиксел юм. Энэ нь бидний ашиглаж байсан өмнөх дэлгэцүүдээс бараг 4 дахин их юм.
  • Эдгээр нь бага чадалтай бөгөөд таны роботыг хүчдэл буурсан ч гэсэн тогтмол ажилладаг.
  • Тэд харьцангуй бага өртөгтэй (тус бүр нь ойролцоогоор 16 доллар) бөгөөд үнэ буурч байна.

Өмнө нь тэдгээрийг програмчлахад хэцүү байсан бөгөөд хэт их санах ойг хямд өртөгтэй Arduino Nanos-т ашиглахад ашигладаг байсан. Нано нь зөвхөн 2K буюу динамик RAM -тай. Энэхүү гарын авлагад эдгээр асуудлуудыг хэрхэн шийдвэрлэх, хүүхдүүдэд програмчлах дуртай робот бүтээх талаар зааж өгөх болно.

Алхам 1: Алхам 1: Үндсэн роботыг бүтээх

Алхам 1: Үндсэн роботыг бүтээх
Алхам 1: Үндсэн роботыг бүтээх

FaceBot бүтээхийн тулд бид ихэвчлэн үндсэн роботоос эхэлдэг. Үүний нэг жишээ бол энд тайлбарласан 25 долларын үнэтэй CoderDojo робот юм. Энэхүү робот нь хямд өртөгтэй, алдартай Arduino Nano, энгийн мотор хянагч, 2 DC мотор, 4 эсвэл 6 АА батерейг ашигладаг. Ихэнх оюутнууд мөргөлдөхөөс урьдчилан сэргийлэх робот бүтээхдээ ping мэдрэгчийг ашиглаж эхэлдэг. 5в хүчдэлийн системээр хангадаг тул FaceBot -д төгс тохирно. Зардлаа бага байлгахын тулд ихэвчлэн оюутнууд маань e-Bay-аас эд ангийг нь онлайнаар захиалдаг. Эд ангиуд нь ихэвчлэн 2-3 долоо хоног ирдэг бөгөөд мотор болон цахилгаан унтраалгыг бага зэрэг гагнах шаардлагатай болдог. Үлдсэн холболтыг 400 уяатай талхны хавтан ашиглан хийдэг. Оюутнууд утаснуудаа гадагшлуулахгүйн тулд ойр ойрхон халуун цавуугаар наадаг.

Мөргөлдөөнөөс зайлсхийх стандарт загварт бидний хийсэн нэг өөрчлөлт бий. Бид ping мэдрэгчийг явах эд ангийн дээд хэсгээс явах эд анги руу шилжүүлдэг. Энэ нь роботын дээд талд харуулах зай үлдээдэг.

Мөргөлдөөнөөс зайлсхийх програмчлал хийсний дараа та нүүр нэмж оруулахыг уншина уу!

Алхам 2: Алхам 2: OLED дэлгэцээ хайж олоод захиалаарай

Алхам 2: OLED дэлгэцээ хайж олоод захиалаарай
Алхам 2: OLED дэлгэцээ хайж олоод захиалаарай

OLED дэлгэц гарч ирэхэд хямд үнэтэй дэлгэц нь цаг эсвэл фитнессийн монитор хийхэд зориулагдсан байв. Үүний үр дүнд тэд жижиг хэмжээтэй, ихэвчлэн 1 инч орчим байв. Сайн мэдээ бол тэд хямд үнэтэй, ойролцоогоор 3 доллар байв. Бид эдгээр дэлгэцээр цөөн хэдэн робот бүтээсэн боловч дэлгэцийн хэмжээ хязгаарлагдмал байсан тул бидний хийж чадах зүйл бол дэлгэц юм. Дараа нь 2018 онд 2.42 инчийн том OLED дэлгэцийн үнэ буурч байгааг бид харж эхлэв. 2019 оны 1 -р сард үнэ ойролцоогоор 16 доллар хүртэл буурчээ. Эцэст нь бид роботын нүүрэнд ашиглаж болох гайхалтай дэлгэцтэй боллоо.

Эдгээр дэлгэцийн техникийн үзүүлэлтүүдийг энд харуулав.

  1. 2.42 инч (диагональ хэмжилт)
  2. 128 пиксел (x хэмжээтэй)
  3. 64 пиксел өндөр (y хэмжээтэй)
  4. Бага хүч (ихэвчлэн 10 м)
  5. Монохром (тэд шар, ногоон, цэнхэр, цагаан өнгөтэй байдаг)
  6. Анхдагч SPI интерфейс боловч хэрэв та хүсвэл үүнийг I2C болгон өөрчилж болно
  7. SSD1309 драйвер (маш түгээмэл дэлгэцийн драйвер)

SPI интерфэйс нь долоон утастай. Интерфэйс дээрх ердийн шошгуудыг энд харуулав.

  1. CS - Чип сонгох
  2. DC - Өгөгдөл/Тушаал
  3. RES - дахин тохируулах
  4. SDA - Өгөгдөл - энэ нь Arduino Nano pin 11 -тэй холбогдсон байх ёстой
  5. SCL - Цаг - энэ нь Arduino Nano pin 13 -тэй холбогдсон байх ёстой
  6. VCC - +5 вольт
  7. GND - Газар

Дэлгэцийг талхны самбартай холбохын тулд танд утастай байх шаардлагатай болно. Дэлгэц нь ихэвчлэн 7 зүү толгойтой ирдэг бөгөөд та үүнийг дэлгэц дээр гагнана. Би 20mc Dupont-ийн эрэгтэй, эрэгтэй 7 холбогчийг ашиглаж, гагнах үед утаснууд дэлгэцийн арын хэсэгт гарч ирэв.

Алхам 3: Алхам 3: OLED -ийг Arduino Nano -той холбоно уу

Алхам 3: OLED -ийг Arduino Nano -той холбоно уу
Алхам 3: OLED -ийг Arduino Nano -той холбоно уу
Алхам 3: OLED -ийг Arduino Nano -той холбоно уу
Алхам 3: OLED -ийг Arduino Nano -той холбоно уу

Одоо та OLED -ээ туршихад бэлэн боллоо. Дэлгэц бүр ажиллаж байгааг шалгахын тулд би өөр Arduino Nano ашигладаг. Туршилтууд амжилттай болсны дараа би үүнийг роботтой холбоно. Туршилтын утас диаграммыг дээрх зурагт үзүүлэв. Та OLED холболтыг дижитал гаралтыг дэмждэг бусад зүү рүү зөөж болно гэдгийг анхаарна уу, гэхдээ хэрэв та SCL (цаг) Arduino Nano pin 13, SDA (өгөгдөл) Arduino Nano pin 11 дээр байгаа эсэхийг шалгаарай. програм хангамж. Энэ нь таны кодыг арай хялбар болгодог.

Алхам 4: Алхам 4: Дэлгэцээ туршиж үзээрэй

Алхам 4: Дэлгэцээ туршиж үзээрэй
Алхам 4: Дэлгэцээ туршиж үзээрэй

Таны дэлгэцийг шалгахын тулд бид u8g2 номын санг ашиглах болно. Таны ашиглаж болох өөр номын сан байдаг, гэхдээ миний туршлагаас харахад тэдний аль нь ч u8g2 номын санд тийм сайн байдаггүй. Нэг чухал хүчин зүйл бол дэлгэц дээр Arduino дотор хэр их RAM ашиглагдаж байгаа явдал юм. U8g2 бол миний олж мэдсэн цорын ганц номын сан бөгөөд Arduino Nano -той ажиллах "Хуудасны горим" -ыг ашигладаг.

Та "Номын санг удирдах" цэснээс "u8g2" гэж хайж энэ номын санг Arduino IED -д нэмж болно. Та мөн кодыг gethub дээрээс шууд татаж авах боломжтой.

github.com/olikraus/u8g2

Миний ашигладаг тест код энд байна:

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

Анхаарах хэдэн зүйл байна. SCL болон SDA -ийн зүү дугаарыг тайлбарласан болно, учир нь тэдгээр нь нано дээрх үндсэн зүү юм. U8g2 -ийн бүтээгч нь гол шугам юм:

// Бид SSD1306, 128x64, нэг хуудас, нэргүй, 4 утас, Тоног төхөөрөмж, SPI-ийг ашиглаж байгаа бөгөөд энэ нь зөвхөн 27% динамик санах ой ашигладаг U8G2_SSD1306_128X64_NONAME_1_4W_HW_SPI u8g2 (U8G2_R0, CS_PIN, DC_PIN, RD_PIN, RD_PIN, RD_PIN, RD_PIN)

Хамгийн бага RAM ашигладаг тул бид нэг хуудас горимыг ашиглаж байна. Бид 4 утастай тоног төхөөрөмжийн интерфэйсийг ашиглаж байгаа бөгөөд OLED нь анхдагчаар SPI дагалддаг.

Алхам 5: Алхам 5: OLED -ээ робот дээр нэмээрэй

Алхам 5: OLED -ийг робот дээр нэмнэ үү
Алхам 5: OLED -ийг робот дээр нэмнэ үү

Одоо бид ажиллаж байгаа OLED -тэй бөгөөд u8g2 номын санг хэрхэн эхлүүлэхээ мэддэг болсон тул бид OLED -ийг үндсэн роботтой нэгтгэхэд бэлэн байна. Үүнийг анхаарч үзэх цөөн хэдэн зүйл байна. OLED тест хийхдээ утсыг хөнгөвчлөхийн тулд бие биенийхээ хажууд байгаа тээглүүрүүдийг ашигласан. Харамсалтай нь роботоо жолоодохын тулд бидэнд 9 -р зүү хэрэгтэй болно, учир нь энэ нь хөдөлгүүрийн драйвер руу аналог дохио илгээх шаардлагатай ХОУХ -ны зүү юм. Үүний шийдэл бол 9-р зүү дээрх утсыг өөр үнэгүй зүү рүү зөөж, дараа нь #define мэдэгдлийг шинэ зүү болгон өөрчлөх явдал юм. OLED-ийг роботын урд талд байрлуулахын тулд plexiglass болон халуун наасан хоёр гурвалжин хэсгийг хайчилж ав. тэднийг явах эд анги руу. Би хэсгүүдийг халуун цавуугаар наахаасаа өмнө уян налархай гадаргууг тэгшлэхийн тулд зарим төрлийн зүлгүүр ашиглах дуртай байдаг.

Дараа нь OLED -ийнхээ талаар мэдээлэл аваад робот дээр хэдэн нүүр зурцгаая!

Алхам 6: Алхам 6: Роботын параметрүүдийг харуулах

Алхам 6: Роботын параметрүүдийг харуулах
Алхам 6: Роботын параметрүүдийг харуулах

Дэлгэцтэй байхын нэг сайхан зүйл бол энэ нь манай роботыг тойрч явахдаа дотор нь юу болж байгааг засахад тусалдаг. Хөгжүүлэгчид компьютерт холбогдсон үед робот эргэн тойрон явж байхад ажиллахгүй байхын тулд ширээний компьютер дээр ажиллах боломжтой байдаг. Ping мэдрэгчээр хэмжсэн зай гэх мэт утгыг харуулах нь роботын параметрийг харуулах сайн жишээ юм.

Дээрх зураг дээр эхний эгнээнд (Цуурай цаг) дууны хэт авианы чанга яригчаас гарах хугацаа болон микрофон хүлээн авах хугацаа хоёрын хоорондох хоцролтын хугацааг харуулав. Дараа нь энэ тоог хоёр дахь мөрөнд сантиметр болгон хөрвүүлнэ (Зай см -ээр). Дэлгэц шинэчлэгдэж байгааг харуулахын тулд тоолуурыг хайлтын секундэд шинэчилдэг. "Эргэх …" нь зөвхөн зай нь эргэх босго гэж нэрлэгддэг тодорхой тооноос доогуур байвал харагдана. Пингийн зай энэ тооноос дээш байвал хоёр дугуй хоёулаа урагшлана. Хэрэв тоо эргэх босго хэмжээнээс доогуур байвал бид мотороо ухрааж (нөөцлөх) чиглэлээ өөрчилнө.

Ping мэдрэгчийн утгыг хэрхэн яаж авах, OLED дэлгэц дээрээ хэрхэн харуулахыг харуулсан жишээ код энд байна.

Гурван пинг мэдрэгчийг (зүүн, төв, баруун) туршиж, дэлгэц дээрх утгыг харуулсан жишээ энд байна.

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

Алхам 7: Алхам 7: Зарим нүүр зур

Алхам 7: Зарим нүүр зурна уу!
Алхам 7: Зарим нүүр зурна уу!

Одоо бид хэдэн нүүр зурах бүх хэсгүүдийг бэлдсэн байна. Манай оюутнууд ихэвчлэн робот урагшаа явж байгаа бол аз жаргалтай царайтай байх ёстой гэж боддог. Урд талд нь ямар нэгэн зүйл байгааг хараад гэнэтийн мэдрэмж төрдөг. Дараа нь тэр ухарч, эргэн тойрноо хардаг, магадгүй нүд нь ямар чиглэлд эргэх талаар дохио өгөх болно.

Нүүр зурах зургийн команд нь маш энгийн. Бид нүүрний тоймд зориулж тойрог зурж, нүд бүрт тойрог бөглөж болно. Инээмсэглэхийн тулд ам нь хагас тойрог, гайхширсан мэдрэмжээр дүүрэн дугуй тойрог байж болно. Энэ бол хүүхдүүд бүтээлч байдлаа ашиглан илэрхийлэлээ өөрчилж чаддаг газар юм. Би заримдаа санаатайгаар муу царай зурж, сурагчдаас намайг илүү сайн болгоход туслахыг хүсдэг.

Дэлгэцийн хэмжээг авахын тулд display.height () болон display.width () функцийг ашиглаж болно. Доорх кодод бид хувьсагчдыг тохируулдаг

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

Хэрэв та эдгээр тооцооллыг олон удаа хийвэл кодыг нэг удаа тооцоолж хувьсагчаар хадгалбал арай хурдан болно. Дээрх уйтгартай шулуун нүүрийг хэрхэн зурсан жишээг энд харуулав.

// бид үүнийг давталт бүрийн эхэнд хийдэг

display.clearDisplay (); // арын дэвсгэр дээр цайвар нүүр зурна уу. дүүргэх тойрог (хагас өргөн, хагас өндөр, 31, ЦАГАА); // баруун нүд харанхуй дэлгэц. дүүргэх тойрог (хагас өргөн - 10, дэлгэц. өндөр ()/3, 4, ХАР); // зүүн нүд харанхуй дэлгэц.fillCircle (хагас өргөн + 10, дэлгэц. өндөр ()/3, 4, ХАР); // амны дэлгэцийн хувьд шулуун шугам зурна.drawLine (half_width - 10, display.height ()/3 * 2, half_width + 10, display.height ()/3 * 2, BLACK); // энэ мөр нь бидний шинэ царайг OLED дэлгэцийн дэлгэц рүү илгээдэг.display ();

Алхам 8: Алхам 8: Өөрчлөх

Алхам 8: Өөрчлөх
Алхам 8: Өөрчлөх

Үндсэн нүүр зурах нь зөвхөн эхлэл юм. Оюутнууд олон янзын хувилбар үүсгэж болно. Олон оюутнууд жижигхэн чанга яригчийг нэмж, аялах эсвэл дуу чимээ гаргадаг.

Та мөн оюутнуудад моторыг зөв холбоход туслах жижиг туршилтын програмуудыг бүтээж болно. Жишээлбэл, дэлгэцэн дээрх сум (гурвалжин) нь моторыг холбохдоо дугуй ямар чиглэлд эргэх ёстойг оюутанд хэлэх болно. Туршилтын хөтөлбөр нь хөдөлгүүрийн чиглэл бүрээр дамждаг:

  1. Баруун Урагш
  2. Баруун урвуу
  3. Зүүн урагш
  4. Зүүн урвуу

Горим бүрийн хувьд дэлгэцийг шинэ дэлгэцээр шинэчилж, аль дугуй ямар чиглэлд эргэх ёстойг харуулдаг.

Энэ хөтөлбөрийн жишээ энд байна

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

CoderDojo Robots GitHub FaceBot хуудсан дээр олон нэмэлт жишээ, програмчлалын дэлгэрэнгүй мэдээлэл бий.

FaceBot роботын хувилбар нь оюутнуудад мөргөлдөөнөөс зайлсхийх бүх параметрүүдийг (урагшлах хурд, эргэх зай, эргэх хугацаа, эргэх хурд) дэлгэц ашиглан шууд өөрчлөх боломжийг олгодог. Эдгээр роботуудыг "програмчлахад" ямар ч компьютер шаардлагагүй! Эдгээр хувилбарууд нь MakerFairs болон эргэн тойронд компьютер зөөх дургүй үйл явдалд тохиромжтой.

Та болон таны оюутнууд ямар шинэ нүүр царайтай болохыг бидэнд мэдэгдээрэй!

Аз жаргалтай кодчилол!

Зөвлөмж болгож буй: