Mündəricat:
- Addım 1: Adım 1: Əsas Robotunuzu yaradın
- Adım 2: Adım 2: OLED Ekranınızı tapın və sifariş edin
- Adım 3: Adım 3: OLED -ni Arduino Nano'ya qoşun
- Addım 4: Adım 4: Ekranınızı sınayın
- Adım 5: Adım 5: OLED -ni Robota əlavə edin
- Addım 6: Adım 6: Robot Parametrlərini Göstərin
- Adım 7: Adım 7: Bəzi Üzlər çəkin
- Adım 8: Adım 8: Özelleştirin
Video: FaceBot: 8 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:43
Bu bələdçi, şriftdə üzü olan, aşağı qiymətli ($ 39) toqquşmanın qarşısını alan robotun necə yaradılacağını sizə göstərəcək. Bunu yeni bir ucuz və parlaq OLED ekrandan istifadə edərək edirik. Tələbələrimiz robotlarına üz əlavə etməyi sevirlər. Robotun etdiklərinə görə dəyişən gülümsəyən üzlər çəkməyi sevirlər.
Kompüter elminin əsaslarını öyrətməyə imkan verən 25 dollardan aşağı qiymətə bir neçə kiçik ucuz robot var. Bu robotlarla bağlı problemlərdən biri, robotu qurarkən içərisində nələrin baş verdiyinə dair şəffaflığın təmin edilməməsidir. 2018-ci ildə hamısı ucuz qiymətə yüksək keyfiyyətli OLED ekranların olması ilə dəyişməyə başladı. Bu ekranlar aşağıdakı üstünlüklərə malikdir:
- Çox parlaq və yüksək kontrastlıdırlar. Hətta işıqlı bir otaq da bir çox cəhətdən oxumaq asandır.
- Yaxşı bir qətnaməyə malikdirlər. İstifadə etdiyim 168x64 pikseldir. Bu, istifadə etdiyimiz əvvəlki ekranlardan təxminən 4 dəfə çoxdur.
- Aşağı gücə malikdirlər və robotunuzun gücü aşağı düşəndə belə ardıcıl işləyirlər.
- Nisbətən aşağı qiymətə malikdirlər (hər biri təxminən 16 dollar) və qiymətlər aşağı düşür.
Keçmişdə, proqramlaşdırmaq çətin idi və aşağı qiymətli Arduino Nanos ilə birlikdə istifadə etmək üçün çoxlu yaddaş istifadə edərdi. Nano yalnız 2K və ya dinamik RAM -a malikdir. Bu bələdçi, bu problemləri necə həll edəcəyinizi və uşaqların proqramlaşdırmağı sevdikləri bir robot qurmağı sizə göstərəcək.
Addım 1: Adım 1: Əsas Robotunuzu yaradın
Bir FaceBot qurmaq üçün ümumiyyətlə baza robotundan başlayırıq. Bir nümunə burada təsvir olunan 25 dollarlıq CoderDojo Robotudur. Bu robot, aşağı qiymətli və populyar Arduino Nano, sadə bir motor nəzarətçisi, 2 DC mühərriki və 4 və ya 6 AA batareyadan istifadə edir. Əksər tələbələr ping sensorundan istifadə edərək toqquşmadan qaçmaq üçün robot hazırlayırlar. 5v güc sistemi təmin etdiyi üçün FaceBot üçün idealdır. Xərcləri aşağı salmamaq üçün ümumiyyətlə şagirdlərimə e-Baydan on-line hissələri sifariş etmələrini tapşırıram. Parçaların gəlməsi çox vaxt 2-3 həftə çəkir və mühərriklər və güc açarı üçün az miqdarda lehim tələb olunur. Qalan birləşmələr 400 ədəd bağlama taxtası ilə aparılır. Şagirdlər tez-tez kənara çıxmaması üçün telləri isti yapışdırırlar.
Standart toqquşmadan qorunma dizaynında etdiyimiz bir dəyişiklik var. Ping sensorunu şassinin yuxarı hissəsindən şassinin altına keçiririk. Bu, robotun üstündə nümayiş üçün yer buraxır.
Toqquşmadan qaçmaq proqramlaşdırma proqramına sahib olduqdan sonra üz əlavə etmək üçün oxunursunuz!
Adım 2: Adım 2: OLED Ekranınızı tapın və sifariş edin
OLED displeylər çıxanda aşağı qiymətlər saatlar və ya fitnes monitorları üçün nəzərdə tutulmuşdu. Nəticədə onlar kiçik idi, ümumiyyətlə 1 düym ətrafında. Yaxşı xəbər, aşağı qiymətli, təxminən 3 dollar idi. Bu ekranlarla bir neçə robot qurduq, ancaq ekranların ölçüsü məhdud olduğundan ekranda nə edə biləcəyimizi bilirdik. Daha sonra 2018 -ci ildə daha böyük 2.42 düymlük OLED ekranların qiymətinin aşağı düşdüyünü görməyə başladıq. 2019 -cu ilin yanvar ayında qiymətlər təxminən 16 dollara düşdü. Nəhayət robot üzlərimiz üçün istifadə edə biləcəyimiz möhtəşəm bir ekrana sahib olduq.
İşdə bu ekranların texniki xüsusiyyətləri:
- 2.42 düym (diaqonal ölçü)
- 128 piksel (x ölçüsü)
- 64 piksel yüksək (y ölçüsü)
- Aşağı güc (ümumiyyətlə 10ma)
- Monoxrom (sarı, yaşıl, mavi və ağ rəngdə olurlar)
- Varsayılan SPI interfeysi, istəsəniz I2C olaraq dəyişə bilərsiniz
- SSD1309 sürücüsü (çox yayılmış ekran sürücüsü)
SPI interfeysi yeddi teldən ibarətdir. İnterfeysdəki tipik etiketlər:
- CS - Çip seçin
- DC - Məlumat/Əmr
- RES - sıfırlayın
- SDA - Məlumat - bu Arduino Nano pin 11 -ə bağlanmalıdır
- SCL - Saat - bu Arduino Nano pin 13 -ə qoşulmalıdır
- VCC - +5 volt
- GND - Torpaq
Ekranı çörək taxtasına bağlamaq üçün bir az telə də ehtiyacınız olacaq. Ekranlar ümumiyyətlə ekrana lehimlədiyiniz 7 pinli başlıq ilə gəlir. 7 kişidən kişiyə 20mc Dupont bağlayıcılarından istifadə etdim və tellərin ekranın arxasından çıxması üçün onları lehimlədim.
Adım 3: Adım 3: OLED -ni Arduino Nano'ya qoşun
İndi OLED -ni sınamağa hazırsınız. Başqa bir Arduino Nano'dan istifadə edərək hər bir ekranın işlədiyini yoxlayıram. Testlər işlədikdən sonra robotla əlaqələndirirəm. Test cihazının bağlama diaqramı yuxarıdakı şəkildə göstərilmişdir. Diqqət yetirin ki, OLED əlaqələrini rəqəmsal çıxışları dəstəkləyən digər pinlərə köçürə bilərsiniz, ancaq SCL (saat) Arduino Nano pin 13 -də, SDA (məlumatlar) Arduino Nano pin 11 -də olduğundan əmin olsanız, standart parametrlərdən istifadə edə bilərsiniz. proqram təminatı. Bu, kodunuzu bir az daha sadə saxlayır.
Addım 4: Adım 4: Ekranınızı sınayın
Ekranınızı yoxlamaq üçün u8g2 kitabxanasından istifadə edəcəyik. İstifadə edə biləcəyiniz başqa kitabxanalar var, amma təcrübəmə görə, heç biri u8g2 kitabxanasında o qədər də yaxşı deyil. Arduino içərisində nə qədər RAM -in istifadə edildiyi kritik bir faktordur. U8g2, Arduino Nano ilə işləyəcək "Səhifə rejimi" istifadə edən tapdığım yeganə kitabxanadır.
Bu kitabxananı "Kitabxanaları İdarə et" menyusunda "u8g2" axtararaq Arduino IED -ə əlavə edə bilərsiniz. Kodu birbaşa gethub -dan yükləyə bilərsiniz.
github.com/olikraus/u8g2
İstifadə etdiyim test kodu burada:
github.com/dmccreary/coderdojo-robots/blob…
Qeyd etmək lazım olan bir neçə şey var. SCL və SDA pin nömrələri Nanonun standart pinləri olduğu üçün şərh edilmişdir. U8g2 üçün konstruktor əsas xəttdir:
// SSD1306, 128x64, tək səhifəli, adsız, 4 telli, Hardware, SPI istifadə edirik, yalnız 27% dinamik yaddaşdan istifadə edir
Tək səhifəli rejimdən istifadə edirik, çünki bu rejim minimum RAM istifadə edir. 4 telli aparat interfeysindən istifadə edirik və OLED standart olaraq SPI ilə gəlir.
Adım 5: Adım 5: OLED -ni Robota əlavə edin
İndi işləyən bir OLED -ə sahib olduğumuza və u8g2 kitabxanalarını necə işə salmağı bildiyimizə görə, OLED -ni əsas robotumuzla inteqrasiya etməyə hazırıq. Nəzərə alınmalı bir neçə şey var. OLED testimizdə naqilləri asanlaşdırmaq üçün bir -birinin yanında olan sancaqlardan istifadə etdik. Təəssüf ki, Robotumuzu idarə etmək üçün pin 9 -a ehtiyacımız var, çünki motor sürücüsünə analoq siqnal göndərməyimiz lazım olan PWM pinlərindən biridir. Çözüm, pin 9-da olan teli başqa bir sərbəst pinə köçürmək və sonra #define ifadəsini bu yeni pinə dəyişdirməkdir. OLED-ni robotun ön hissəsinə bağlamaq üçün pleksiglasdan və yapışqanla iki üçbucaq kəsdim. onları şassiyə aparın. Parçaları bir-birinə isti yapışdırmadan əvvəl, pleksiglasın səthini kobudlaşdırmaq üçün hər zaman bir az zımpara istifadə etmək istərdim ki, parçalanmasınlar.
Sonra, OLED -lərimiz haqqında bəzi məlumatlar əldə edək və robotun üzünə bir neçə şəkil çəkək!
Addım 6: Adım 6: Robot Parametrlərini Göstərin
Ekrana sahib olmağın gözəl cəhətlərindən biri, robotun ətrafında gəzərkən baş verənləri düzəltməkdə həqiqətən kömək etməsidir. Kompüterə qoşulduğunuz zaman inkişaf etdiricilərin masaüstündə bir funksiya işləməsi nadir hallarda olur ki, robot ətrafda gəzərkən işləmir. Ping sensoru ilə ölçülən məsafə kimi bir dəyərin göstərilməsi bir robot parametrinin göstərilməsinin yaxşı bir nümunəsidir.
Yuxarıdakı fotoşəkildə, ilk sətir (Echo Time), səsin ultrasəs dinamikindən çıxması ilə mikrofon tərəfindən qəbul edildiyi vaxt arasındakı gecikmə müddətini göstərir. Bu rəqəm daha sonra ikinci sətirdə santimetrə çevrilir (Məsafə sm). Sayğac, ekranın yeniləndiyini göstərmək üçün ikinci saniyə axtarışda yenilənir. "Dönmə …" yalnız məsafə dönüş həddi adlanan müəyyən bir rəqəmin altındadırsa göstərilir. Ping məsafəsi bu rəqəmin üstündə olarsa hər iki təkər də irəliləyir. Əgər nömrə dönmə həddinin altındadırsa, mühərrikləri tərsinə çeviririk (geri) və sonra istiqaməti dəyişirik.
Ping sensorundan dəyərlərin necə alınacağını və dəyərlərin OLED ekranınızda necə göstəriləcəyini göstərən bəzi nümunə kodlar.
Üç ping sensorunu (sol, orta və sağ) sınayan və ekrandakı dəyərləri göstərən bir nümunə:
github.com/dmccreary/coderdojo-robots/blob…
Adım 7: Adım 7: Bəzi Üzlər çəkin
İndi bəzi üzlər çəkmək üçün bütün parçaları hazırladıq. Şagirdlərimiz ümumiyyətlə düşünürlər ki, robot irəli gedirsə, üzü xoşbəxt olmalıdır. Qarşısında bir şey görəndə təəccüb hissi keçirir. Sonra geri çəkilir və ətrafa baxır, bəlkə də gözləri hansı istiqamətə dönəcəyini bildirmək üçün hərəkət edir.
Bir üz çəkmək üçün rəsm əmri olduqca sadədir. Üzün konturu üçün bir dairə çəkə bilərik və hər göz üçün dairələrlə doldururuq. Ağız təbəssüm üçün yarım dairə və sürpriz hissi üçün dolu bir dairə ola bilər. Bura, uşaqların ifadələri fərdiləşdirmək üçün yaradıcılıqlarından istifadə edə biləcəkləri yerdir. Bəzən bilərəkdən pis üzlər çəkirəm və şagirdlərdən onları daha yaxşı vəziyyətə gətirməyimə kömək etmələrini xahiş edirəm.
Ekranın ölçüsünü əldə etmək üçün display.height () və display.width () funksiyalarından istifadə edə bilərsiniz. Aşağıdakı kodda dəyişənlər qururuq
half_width = display.width ()/2; half_height = display.height ()/2;
Bu hesablamaları dəfələrlə etsəniz, bir dəfə hesablandıqda və dəyişəndə saxlanıldıqda kod bir az daha sürətli olur. Yuxarıdakı darıxdırıcı düz üzün necə çəkildiyinə dair bəzi nümunələr:
// bunu hər döngünün əvvəlində edirik
display.clearDisplay (); // backgrounddisplay.fillCircle (yarı genişlik, yarı yüksəklik, 31, BEYAZ); // sağ göz qaranlıq ekran. // sol göz darkdisplay.fillCircle (yarım_ genişlik + 10, ekran.height ()/3, 4, SİYAH); // ağız ekranı üçün düz bir xətt çəkin.drawLine (yarım genişlik - 10, ekran.height ()/3 * 2, yarı genişlik + 10, ekran.height ()/3 * 2, SİYAH); // bu xətt yeni üzümüzü OLED displeyə göndərir.display ();
Adım 8: Adım 8: Özelleştirin
Əsas üzü çəkmək yalnız başlanğıcdır. Şagirdlər bir çox variantlar yarada bilərlər. Bir çox şagird, hərəkət edərkən bir ton və ya səs verən kiçik bir dinamik əlavə etdi.
Şagirdlərinizə mühərrikləri düzgün bağlamalarına kömək edən daha kiçik test proqramları da qura bilərsiniz. Məsələn, ekrandakı bir ox (üçbucaq) şagirdə mühərrikləri bağlayarkən təkərin hansı istiqamətə dönməli olduğunu izah edəcək. Test proqramı hər bir motor istiqamətini əhatə edir:
- Sağ İrəli
- Sağ Tərs
- Sola İrəli
- Sol Geri
Hər bir rejim üçün, ekran hansı təkərin hansı istiqamətdə dönməli olduğunu göstərmək üçün yeni bir ekranla yenilənir.
Bu proqramın bir nümunəsi burada
github.com/dmccreary/coderdojo-robots/blob…
CoderDojo Robots GitHub FaceBot səhifəsində bir çox əlavə nümunələr və proqramlaşdırma detalları var.
FaceBot robotunun bir versiyası da var ki, bu da şagirdlərin toqquşmanın qarşısını alan bütün parametrləri (irəli sürət, dönüş məsafəsi, dönüş vaxtı, dönüş sürəti) birbaşa ekrandan istifadə edərək dəyişməsinə imkan verir. Bu robotları "proqramlaşdırmaq" üçün heç bir kompüter lazım deyil! Bu versiyalar MakerFairs və ətrafdakı kompüterləri daşımaq istəmədiyiniz hadisələr üçün idealdır.
Zəhmət olmasa sizin və şagirdlərinizin hansı yeni simalarla qarşılaşdıqlarını bizə bildirin!
Xoşbəxt kodlaşdırma!
Tövsiyə:
Arduino Avtomobil Ters Park Diqqət Sistemi - Addım -addım: 4 addım
Arduino Avtomobil Ters Park Diqqət Sistemi | Addım-addım: Bu layihədə, Arduino UNO və HC-SR04 Ultrasonik Sensoru istifadə edərək sadə bir Arduino Car Reverse Park Sensor Dövrü dizayn edəcəyəm. Bu Arduino əsaslı Avtomobil Ters siqnal sistemi Avtonom Naviqasiya, Robot Aralığı və digər diapazonlarda istifadə edilə bilər
Addım -addım PC qurulması: 9 addım
Addım -addım PC Bina: Təchizat: Təchizat: MotherboardCPU & CPU soyuducu PSU (Enerji təchizatı vahidi) Yaddaş (HDD/SSD) RAMGPU (tələb olunmur) Kassa Alətləri: Tornavida ESD bilərzik/mattermal pasta/aplikator
Üç Hoparlör Devresi -- Addım-addım təlimat: 3 addım
Üç Hoparlör Devresi || Addım-addım Təlimat: Dinamik Dövrə, ətraf mühitdən alınan səs siqnallarını MIC-ə gücləndirir və gücləndirilmiş səsin çıxarıldığı yerdən Dinamikə göndərir.Burada bu Hoparlör Devrini düzəltməyin üç fərqli yolunu göstərəcəyəm:
Robot texnikasında bir dəst ilə addım-addım təhsil: 6 addım
Bir dəst ilə Robototexnikada Addım-addım Təhsil: Öz robotumu düzəltdikdən bir neçə ay sonra (zəhmət olmasa bunların hamısına baxın) və iki dəfə hissələri arızalandıqdan sonra bir addım geri çəkilmək və öz fikrimi yenidən düşünmək qərarına gəldim. strategiya və istiqamət. Bir neçə aylıq təcrübə bəzən çox mükafatlandırıcı idi və
Arduino Uno ilə Akustik Levitasiya Addım-addım (8 addım): 8 addım
Arduino Uno ilə Akustik Levitasiya Adım Adım (8 addım): ultrasəs səs ötürücüləri L298N Dc dişi qadın adapteri kişi dc pinli Arduino UNOBreadboard Bu necə işləyir: Əvvəlcə Arduino Uno-ya kod yükləyirsiniz (rəqəmsal ilə təchiz edilmiş bir mikro nəzarətçidir) və kodu çevirmək üçün analog portlar (C ++)