Mündəricat:
- Addım 1: Tələb olunan komponentlər
- Addım 2: Robotun yığılması
- Addım 3: Öz labirentinizi yaradın - İsteğe bağlı
- Addım 4: Ətraf mühitin qurulması
- Addım 5: GiggleBot proqramlaşdırılması - I hissə
- Addım 6: Uzaqdan proqramlaşdırma - II hissə
- Addım 7: Uzaqdan Ekranı şərh edin
Video: GiggleBot ilə Lidar Güdümlü Robot hazırlayın: 8 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Bu təlimatda, GiggleBotu bir labirentin çətinliklərini həll etməyə məcbur edirik.
GiggleBot -a bir məsafə sensoru bağladığımız bir servo quraşdırırıq. Qaçarkən servo irəli və irəli dönəcək ki, məsafə sensoru hər maneəyə qədər olan məsafəni ölçə bilsin. Bu ümumiyyətlə daha bahalı olan LIDAR sensoru kimi işləyir.
Eyni zamanda, GiggleBot bu məlumatları 5-dən 5-ə qədər LED matrisində maneələrə nisbi mövqeyini göstərən uzaq bir BBC mikro: bitinə göndərir.
İşiniz GiggleBotda yalnız digər BBC micro: bit -də göstərilənlərə baxaraq gedə bilməkdir. GiggleBotu idarə etmək üçün uzaq BBC micro: bit düymələrindən istifadə olunur.
Bu əyləncə kimi səslənir! Gəlin məsələyə başlayaq, elə deyilmi?
Addım 1: Tələb olunan komponentlər
Ehtiyacımız olacaq:
- Bir GiggleBot.
- BBC micro: bit üçün bir batareya paketi. Paketində BBC mikro: bit ilə birlikdə gəlir.
- GiggleBot üçün x3 AA batareyaları.
- Məsafə sensorunu GiggleBot -a bağlamaq üçün Grove kabeli.
- DexterIndustries -dən Servo dəsti.
- x3 BBC mikro: bit. Biri GiggleBot üçün, digəri isə robotu uzaqdan idarə etmək üçün istifadə olunurdu.
- DexterIndustries -dən bir məsafə sensoru.
BBC micro üçün GiggleBot robotunu əldə edin: bit burada!
Addım 2: Robotun yığılması
GiggleBot -u proqramlaşdırmağa hazır etmək üçün çox şey lazım olmasa da onu yığmalıyıq.
3 AA batareyanı GiggleBotun alt hissəsindəki yuvasına daxil edin.
Servo paketi yığın. Servonun fırlanan qoluna, servonun GiggleBotun ön bağlayıcılarına bərkidilməsi üçün son deşikdən istifadə edin. Yerində daha sabit olması üçün bir vida və/və ya bir tel istifadə edə bilərsiniz. Ya da lövhəyə isti yapışdıra bilərsiniz. Mənim vəziyyətimdə, servo qolunu GiggleBot lövhəsinə bağlamaq üçün bir vida və qısa tel istifadə etdim.
Servo qolunu servoya quraşdırarkən, servonun artıq 80 -ci mövqedə qurulduğundan əmin olun. Bunu gigglebot.set_servo (gigglebot. RIGHT, 80) nömrəsinə zəng edərək edə bilərsiniz. Bu barədə daha çox oxuya bilərsiniz burada.
Sonra məsafə sensörünü servo paketin ön tərəfinə qoyun və yuxarıdakı nümunədə olduğu kimi düzəldin.
Nəhayət, məsafə sensörünü Grove kabeli ilə 2 I2C portuna və servo motoru GiggleBotda oturan sağ porta qoşun - orada doğru port qeyd olunur.
Addım 3: Öz labirentinizi yaradın - İsteğe bağlı
Bu vəziyyətdə, NASCAR -a bənzər bir qapalı döngə yaratmaq üçün bir dəstə qutu istifadə etdim.
Bu mərhələdə, həqiqətən yaradıcı ola bilərsiniz və istədiyiniz qədər bükülmüş edə bilərsiniz və ya çox uzun edə bilərsiniz, çünki bu sizə bağlıdır.
Və ya ümumiyyətlə bir parça istəmirsinizsə, məsələn, GiggleBotu mətbəxə və ya qonaq otağına qoya bilərsiniz - bu kifayət qədər yaxşı olmalıdır, çünki hələ də qarşısını almaq üçün çoxlu divar və maneələr var.
Addım 4: Ətraf mühitin qurulması
MicroPython -da BBC micro: bit proqramlaşdıra bilməyiniz üçün bunun üçün bir redaktor (Mu Redaktor) qurmalı və GiggleBot MicroPython İşləmə müddətini iş vaxtı olaraq təyin etməlisiniz. Bunun üçün bu səhifədəki təlimatları izləməlisiniz. Bu andan etibarən, iş vaxtının v0.4.0 versiyası istifadə olunur.
Addım 5: GiggleBot proqramlaşdırılması - I hissə
Əvvəlcə GiggleBot skriptini quraq. Bu skript GiggleBotun servo motorunu 160 dərəcə (hər istiqamətdə 80 dərəcə) döndərəcək və eyni zamanda hər bir məsafə sensöründən 10 oxunuş alacaq.
Açıldıqda, GiggleBot uzaqdan idarəetmə əmrini alana qədər yanında olacaq. Yalnız 3 əmr ola bilər: irəli, sola və ya sağa.
Qeyd: Aşağıdakı skriptdə boş yerlər ola bilər və bu, GitHub Gists -in göstərilməsindəki bəzi problemlərlə əlaqəli görünür. Sizi kodu kopyalayıb yapışdıra biləcəyiniz GitHub səhifəsinə aparmaq üçün mahiyyəti vurun.
Uzaqdan idarə olunan LIDAR əsaslı GiggleBot
gigglebot idxalından* |
distance_sensor idxalından DistanceSensor |
microbit idxal yuxusundan |
utks idksdən ticks_us, sleep_us |
idxal idarəsi |
radio idxal edin |
# artıq hərəkət edirsə robotu dayandırın |
dayan () |
# radio aktiv edin |
radio.on () |
# məsafə sensoru obyekti |
ds = DistanceSensor () |
ds.start_continuous () |
rotate_time = 0.7# saniyələrlə ölçülür |
rotate_span = 160# dərəcə ilə ölçülür |
rotate_steps = 10 |
overhead_compensation = 1.05# faizlə təyin olunur |
time_per_step = 10 ** 6* rotate_time / (rotate_steps* overhead_compensation) |
last_read_time = 0 |
radar = baytearray (rotate_steps) |
servo_rotate_direction = 0# 0 yuxarı getmək üçün (0-> 160) və əks halda 1 |
radar_index = 0 |
set_servo (SAĞ, 0) |
whileTrue: |
# radardan oxuyun |
ticks_us () - last_read_time> time_per_step: |
# məsafə sensorundan oxuyun |
radar [radar_index] = int (ds.read_range_continuous () /10) |
last_read_time = ticks_us () |
çap et (radar_index) |
# servonun soldan sağa fırlanması məntiqini yerinə yetirin |
əgər radar_index == rotate_steps -1 və servo_rotate_direction == 0: |
set_servo (SAĞ, 0) |
servo_rotate_direction = 1 |
elif radar_index == 0 və servo_rotate_direction == 1: |
set_servo (SAĞ, rotate_span) |
servo_rotate_direction = 0 |
başqa: |
radar_index += 1if servo_rotate_direction == 0else-1 |
# və radar dəyərlərini göndərin |
radio.send_bytes (radar) |
cəhd edin: |
# robot əmrlərini oxuyun |
lmotor, rmotor = ustruct.unpack ('bb', radio.receive_bytes ()) |
# və alınan əmrlər olduqda mühərrikləri işə salın |
set_sürəti (lmotor, rmotor) |
sürmək () |
istisna olmaqlaTypeError: |
keçmək |
GitHub tərəfindən ❤ ilə ev sahibliyi edən rawgigglebot_lidar_robot.py -yə baxın
Addım 6: Uzaqdan proqramlaşdırma - II hissə
Qalan şey, uzaqdan idarə edən 2 -ci BBC mikro: bitini proqramlaşdırmaqdır.
Uzaqdan 5-dən 5-ə qədər piksel ekranında maneələrə nisbi məsafəni göstərmək üçün istifadə olunur. Ən çox 10 piksel açılacaq.
Eyni zamanda, pult sizə 2 düyməni basaraq GiggleBotu uzaqdan idarə etmək imkanı verir: irəli, sola və sağa.
Qeyd: Aşağıdakı skriptdə boş yerlər ola bilər və bu, GitHub Gists -in göstərilməsindəki bəzi problemlərlə əlaqəli görünür. Sizi kodu kopyalayıb yapışdıra biləcəyiniz GitHub səhifəsinə aparmaq üçün mahiyyəti vurun.
Uzaqdan idarə olunan LIDAR əsaslı GiggleBot - Uzaqdan Kod
microbit idxal yuxu, ekran, button_a, button_b |
idxal idarəsi |
radio idxal edin |
riyaziyyatı idxal edin |
radio.on () |
rotate_steps = 10 |
rotate_span = 160# dərəcə |
rotate_step = rotate_span / rotate_steps |
max_distance = santimetrdə 50# |
side_length_leds = 3 # piksel sayında ölçülür |
radar = baytearray (rotate_steps) |
xar = bytearray (rotate_steps) |
yar = bytearray (rotate_steps) |
xilas_xar = baytearray (dönmə_ addımları) |
xilas_yar = baytearray (rotate_steps) |
motor_sürəti = 50 |
whileTrue: |
status = radio.receive_bytes_into (radar) |
status yoxdursa: |
# display.clear () |
c, val dəyərsizdir (radar): |
əgər radar [c] <= max_distance: |
# hər məsafənin 2d koordinatlarını hesablayın |
bucaq = rotate_steps / (rotate_steps -1) * rotate_step * c |
bucaq += (180- rotate_span) /2.0 |
x_c = math.cos (bucaq * math.pi /180.0) * radar [c] |
y_c = math.sin (bucaq * math.pi /180.0) * radar [c] |
# 5x5 mikrobit ekrana uyğun məsafələri ölçün |
x_c = x_c * (yan_ uzunluq_leds -1) / max_distance |
y_c = y_c * (yan_ uzunluq_lədləri +1) / maksimum_ məsafə |
# koordinatları yenidən yerləşdirin |
x_c += (yan_ uzunluq_qızlar -1) |
y_c = (yan_ uzunluq_lədləri +1) - y_c |
LED -lərin olduğu yerlərdə # dəyirmi koordinatlar |
əgər x_c - math.floor (x_c) <0.5: |
x_c = math.floor (x_c) |
başqa: |
x_c = math.ceil (x_c) |
əgər y_c - math.floor (y_c) <0.5: |
y_c = riyazi mərtəbə (y_c) |
başqa: |
y_c = math.ceil (y_c) |
xar [c] = x_c |
yar [c] = y_c |
başqa: |
xar [c] = 0 |
yar [c] = 0 |
display.clear () |
x, y inzip üçün (xar, yar): |
display.set_pixel (x, y, 9) |
# çap (siyahı (zip (xar, yar, radar))) |
dövlətA = düymə_a.is_pressed () |
stateB = button_b.is_pressed () |
stateA və stateB olarsa: |
radio.send_bytes (ustruct.pack ('bb', motor_sürəti, motor_sürəti)) |
çap ("irəli") |
əgər dövlətA və dövlət deyilsə B: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, -motor_speed)) |
çap ('sola) |
dövlət A və dövlət B deyilsə: |
radio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed)) |
çap ('sağda') |
dövlət deyilsə, dövlət deyilsə B: |
radio.send_bytes (ustruct.pack ('bb', 0, 0)) |
çap et ('dayan') |
GitHub tərəfindən ❤ ilə ev sahibliyi edən rawgigglebot_lidar_remote.py -yə baxın
Addım 7: Uzaqdan Ekranı şərh edin
"loading =" tənbəl "GiggleBotu idarə edin, aşağıdakı seçimləriniz var:
- GiggleBotu irəli aparmaq üçün A düyməsini və B düyməsini basın.
- GiggleBotu sola çevirmək üçün A düyməsini basın.
- GiggleBotu sağa çevirmək üçün B düyməsini basın.
Ən yaxın maneələrin hansı istiqamətdə aşkarlandığını görmək üçün pultun (tutduğunuz uzaq BBC mikro: bit) ekranına baxmaq kifayətdir. GiggleBot -a baxmadan uzaqdan idarə etməyi bacarmalısınız.
Tövsiyə:
Arduino ilə Öz Torpaq Nəmlik Sensorunuzu hazırlayın !!!: 10 addım
Arduino ilə Öz Torpaq Nəm Sensorunuzu Edin !!!: HAQQINDA !!! Bu təlimatda Arduino ilə FC-28 Torpaq nəmlik sensoru ilə əlaqə quracağıq. Bu sensor torpağın içindəki suyun həcmini ölçür və çıxış olaraq bizə nəm səviyyəsini verir. Sensor həm analo ilə təchiz olunmuşdur
Əl ilə Dinamik Kağız Kılıfı hazırlayın: 5 addım
Əl ilə Dinamik Kağız Kassası hazırlayın: Əvvəllər kağız qutu üçün CAD faylını tərtib etmək üçün LibreCAD və Pythondan istifadə haqqında qısa bir məlumatım var idi. CAD faylını əldə etdikdə, kağız qutusunu kəsmək üçün lazer kəsiciyə ehtiyacımız var. Ancaq hər kəsin lazer kəsiciyə girişi yoxdur, buna görə də yaxşı olardı
Raspberry Pi ilə Radio Teleskopu hazırlayın: 6 addım (şəkillərlə)
Raspberry Pi ilə Radio Teleskopu yaradın: Optik bir teleskop əldə etmək çox asandır. Yalnız belə bir teleskop istehsalçısından satın ala bilərsiniz. Ancaq eyni şeyi radio teleskoplar haqqında demək olmaz. Adətən bunları özünüz etməlisiniz. Bu Təlimat kitabında necə olacağını göstərəcəyəm
MakerBit ilə Mətbəx Taymeri hazırlayın: 13 addım
Bir MakerBit ilə Mətbəx Taymeri Edin: Bu layihə, bir mətbəx taymerinin necə işlədiyini araşdırır! Uzun müddət əvvəl ən faydalı qurğular mexaniki idi. Uşaqlar içindəki hissələri görmək və necə hərəkət etdiklərini öyrənmək üçün əşyaları ayıra bilər. Mətbəx taymeri kimi müasir elektron gadget'lar
Məişət kimyəvi maddələri ilə film və fotoşəkil hazırlayın: 3 addım
Məişət kimyəvi maddələri ilə film və fotoşəkil hazırlayın: Qara və ağ film hazırlamaq əyləncəli və olduqca asanlıqla evdə həyata keçirilir. Asanlıqla tapılan ev kimyəvi maddələrindən hazırlanan caffenol adlı bir həll var. Bir saatlıq fotoşəkildən əldə etdiyiniz kimi, bu da sizə neqativlər verəcək