
Satura rādītājs:
2025 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2025-01-23 14:59



Šajā apmācībā mēs liekam GiggleBot risināt labirinta grūtības.
Mēs uzstādām servo uz GiggleBot, uz kura mēs piestiprinām attāluma sensoru. Skriešanas laikā servo griezīsies uz priekšu un atpakaļ, lai attāluma sensors varētu izmērīt attālumu līdz katram šķērslim. Tas darbojas līdzīgi kā LIDAR sensors, kas parasti ir daudz dārgāks.
Tajā pašā laikā GiggleBot sūta šos datus uz attālu BBC mikro: bitu, kas uz 5x5 gaismas diodes matricas parāda tā relatīvo stāvokli šķēršļiem.
Jūsu uzdevums ir spēt pārvietoties GiggleBot, tikai aplūkojot to, kas redzams citā BBC mikro: bitā. Lai kontrolētu GiggleBot, tiek izmantotas tālvadības BBC micro: bit pogas.
Tas izklausās jautri! Sāksim pie tā, vai ne?
1. darbība. Nepieciešamās sastāvdaļas

Mums vajadzēs:
- GiggleBot.
- BBC micro: bit akumulators. Tas ir kopā ar BBC micro: bit savā iepakojumā.
- x3 AA baterijas GiggleBot.
- Grove kabelis, lai savienotu attāluma sensoru ar GiggleBot.
- Servo komplekts no DexterIndustries.
- x3 BBC mikro: biti. Viens GiggleBot un otrs, ko izmantoja, lai vadītu robotu no tālienes.
- Attāluma sensors no DexterIndustries.
Iegūstiet GiggleBot robotu BBC micro: bit šeit!
2. darbība: robota salikšana


Lai GiggleBot būtu gatavs programmēšanai, mums tas ir jāsamontē, lai gan daudz nav jādara.
Ievietojiet 3 AA baterijas savā nodalījumā zem GiggleBot.
Salieciet servo paketi. Servo rotējošajai rokai izmantojiet tās pēdējo caurumu, lai piestiprinātu servo pie GiggleBot priekšējiem savienotājiem. Jūs varat izmantot skrūvi un/vai kādu vadu, lai padarītu to stabilāku savā vietā. Vai arī jūs varat to karsti pielīmēt pie tāfeles. Manā gadījumā es izmantoju skrūvi un īsu vadu, lai piesietu servo roku pie GiggleBot plates.
Uzstādot servo rokturi uz servo, pārliecinieties, vai servo jau ir iestatīts pozīcijā 80. To var izdarīt, zvanot uz gigglebot.set_servo (gigglebot. RIGHT, 80). Vairāk par to varat izlasīt šeit.
Pēc tam novietojiet attāluma sensoru servo iepakojuma priekšpusē un salabojiet to, kā parādīts iepriekšējā piemērā.
Visbeidzot, pievienojiet attāluma sensoru ar Grove kabeli jebkuram no 2 I2C portiem un servomotoru pareizajam portam, kas atrodas GiggleBot - uz tā ir minēts pareizais ports.
3. darbība: izveidojiet savu labirintu - pēc izvēles

Šajā gadījumā esmu izmantojis virkni kastes, lai izveidotu slēgta cikla celiņu, līdzīgu NASCAR.
Šajā solī jūs varat kļūt patiesi radošs un padarīt to, cik ļoti vēlaties, vai padarīt to īpaši garu, jo tas tiešām ir atkarīgs no jums.
Vai arī, ja jūs vispār nevēlaties dziesmu, varat ievietot GiggleBot, piemēram, virtuvē vai dzīvojamā istabā - tam vajadzētu būt pietiekami labam, jo joprojām ir daudz sienu un šķēršļu, no kuriem jāizvairās.
4. solis: vides iestatīšana

Lai jūs varētu programmēt BBC micro: bit programmā MicroPython, jums ir jāizveido tam redaktors (Mu redaktors) un kā izpildlaiks jāiestata GiggleBot MicroPython Runtime. Lai to izdarītu, jums jāievēro šajā lapā sniegtie norādījumi. No šī brīža tiek izmantota izpildlaika versija v0.4.0.
5. solis: GiggleBot programmēšana - I daļa
Vispirms izveidosim GiggleBot skriptu. Šis skripts liks GiggleBot pagriezt savu servomotoru par 160 grādiem (80 grādiem katrā virzienā), vienlaikus paņemot 10 rādījumus no attāluma sensora uz vienu pagriezienu.
Kad ieslēgts, GiggleBot stāvēs blakus, līdz saņems komandu no tālvadības pults. Var būt tikai 3 komandas: virzīties uz priekšu, pa kreisi vai pa labi.
Piezīme. Šim skriptam, iespējams, trūkst atstarpes, un šķiet, ka tas ir saistīts ar kādu problēmu, parādot GitHub Gists. Noklikšķiniet uz būtības, lai nokļūtu tās GitHub lapā, kur varat kopēt un ielīmēt kodu.
Ar tālvadību kontrolēts LIDAR GiggleBot
no gigglebot importēšanas* |
no distance_sensor importēšana DistanceSensor |
no mikrobitu importēšanas miega |
no utime importēšanas ticks_us, sleep_us |
importēt ustruktu |
importēt radio |
# apturiet robotu, ja tas jau kustas |
apstāties () |
# iespējot radio |
radio.on () |
# attāluma sensora objekts |
ds = DistanceSensor () |
ds.start_continuous () |
rotate_time = 0.7# mēra sekundēs |
rotate_span = 160# mērīts grādos |
rotācijas soļi = 10 |
overhead_compensation = 1.05# definēts procentos |
time_per_step = 10 ** 6* rotate_time / (rotate_steps* overhead_compensation) |
last_read_time = 0 |
radars = baits (rotācijas soļi) |
servo_rotate_direction = 0# 0 uz augšu (0-> 160) un 1 citādi |
radara_indekss = 0 |
set_servo (RIGHT, 0) |
kamēr patiesība: |
# lasīt no radara |
ja ticks_us () - last_read_time> time_per_step: |
# nolasīt no attāluma sensora |
radars [radara_indekss] = int (ds.read_range_continuous () /10) |
last_read_time = ticks_us () |
drukāt (radara_indekss) |
# dariet loģiku servo pagriešanai no kreisās uz labo |
ja radara_indekss == pagrieztie soļi -1 un servo_rotate_direction == 0: |
set_servo (RIGHT, 0) |
servo_rotate_direction = 1 |
elif radar_index == 0 un servo_rotate_direction == 1: |
set_servo (RIGHT, rotate_span) |
servo_rotate_direction = 0 |
cits: |
radar_index += 1ja servo_rotate_direction == 0else-1 |
# un nosūtiet radara vērtības |
radio.send_bytes (radars) |
pamēģini: |
# lasīt robotu komandas |
lmotor, rmotor = ustruct.unpack ('bb', radio.recept_bytes ()) |
# un iedarbiniet motorus, ja ir saņemtas komandas |
set_speed (lmotor, rmotor) |
braukt () |
izņemotTypeError: |
iziet |
apskatīt rawgigglebot_lidar_robot.py, ko mitina GitHub ar ❤
6. darbība: tālvadības pults programmēšana - II daļa
Atliek tikai ieprogrammēt otro BBC mikro: bitu, kas darbojas kā tālvadības pults.
Tālvadības pulti izmanto, lai ekrānā, kas veidots no 5 līdz 5 pikseļiem, parādītu relatīvo attālumu līdz šķēršļiem. Maksimāli būs ieslēgti 10 pikseļi.
Tajā pašā laikā tālvadības pults sniedz jums iespēju vadīt GiggleBot tālvadību, nospiežot tās divas pogas: virzīties uz priekšu, pa kreisi un pa labi.
Piezīme. Šim skriptam, iespējams, trūkst atstarpes, un šķiet, ka tas ir saistīts ar kādu problēmu, parādot GitHub Gists. Noklikšķiniet uz būtības, lai nokļūtu tās GitHub lapā, kur varat kopēt un ielīmēt kodu.
Tālvadības pults ar LIDAR bāzes GiggleBot - attālais kods
no mikrobitu importēšanas miega režīms, displejs, button_a, button_b |
importēt ustruktu |
importēt radio |
importēt matemātiku |
radio.on () |
rotācijas soļi = 10 |
rotate_span = 160# grādos |
rotate_step = rotate_span / rotate_steps |
max_distance = 50# centimetros |
side_length_leds = 3 #, mērot # pikseļos |
radars = baits (rotācijas soļi) |
xar = baitu masīvs (rotācijas soļi) |
yar = bytearray (pagriezt_soļus) |
saved_xar = bytearray (pagriezt_soļus) |
Save_yar = bytearray (rotācijas soļi) |
motora ātrums = 50 |
kamēr patiesība: |
statuss = radio.recept_bytes_into (radars) |
ja statuss nav Nav: |
# display.clear () |
c, val uzskaitījums (radars): |
ja radars [c] <= max_distance: |
# aprēķiniet katra attāluma 2d koordinātas |
leņķis = rotēt_soļi / (rotēt_soļi -1) * rotēt_solis * c |
leņķis += (180- rotate_span) /2.0 |
x_c = math.cos (leņķis * math.pi /180,0) * radars [c] |
y_c = math.sin (leņķis * math.pi /180,0) * radars [c] |
# mērogot attālumus, lai tie ietilptu 5x5 mikrobitu displejā |
x_c = x_c * (side_length_leds -1) / max_distance |
y_c = y_c * (sānu_garums_leds +1) / max_distance |
# pārvietošanas koordinātas |
x_c += (sānu_garuma_ledas -1) |
y_c = (sānu_garums_leds +1) - y_c |
# kārtas koordinē tieši to, kur atrodas gaismas diodes |
ja x_c - math.floor (x_c) <0,5: |
x_c = matemātikas grīda (x_c) |
cits: |
x_c = math.ceil (x_c) |
ja y_c - math.floor (y_c) <0,5: |
y_c = math.floor (y_c) |
cits: |
y_c = math.ceil (y_c) |
xar [c] = x_c |
yar [c] = y_c |
cits: |
xar [c] = 0 |
jars [c] = 0 |
display.clear () |
x, y inzip (xar, yar): |
display.set_pixel (x, y, 9) |
# print (saraksts (zip (xar, yar, radars))) |
stateA = button_a.is_pressed () |
stateB = button_b.is_pressed () |
ja valsts A un valsts B: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, motor_speed)) |
drukāt ("uz priekšu") |
ja valsts A, nevis valsts B: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, -motor_speed)) |
drukāt ("pa kreisi") |
ja nav stāvoklis A un stāvoklis B: |
radio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed)) |
drukāt ("pa labi") |
ifnot stateA un notB: |
radio.send_bytes (ustruct.pack ('bb', 0, 0)) |
drukāt ("apstāties") |
apskatīt rawgigglebot_lidar_remote.py, kuru mitina GitHub ar ❤
7. darbība. Attālā ekrāna interpretācija
"loading =" slinks "kontrolējiet GiggleBot, jums ir šādas iespējas:
- Nospiediet pogu A un pogu B, lai pārvietotu GiggleBot uz priekšu.
- Nospiediet pogu A, lai pagrieztu GiggleBot pa kreisi.
- Nospiediet pogu B, lai pagrieztu GiggleBot pa labi.
Lai redzētu, kurā virzienā tiek atklāti tuvākie šķēršļi, vienkārši paskatieties uz tālvadības pults (attālais BBC mikro: bits, ko turat). Jums vajadzētu būt iespējai kontrolēt GiggleBot no tālienes, neskatoties uz to.
Ieteicams:
UChip - vienkārša skice, lai attāli vadītu motorus un/vai servos, izmantojot 2,4 GHz radio Tx -Rx!: 3 soļi

UChip - vienkārša skice ar tālvadības motoriem un/vai servos, izmantojot 2,4 GHz radio Tx -Rx !: Man ļoti patīk RC pasaule. Izmantojot RC rotaļlietu, rodas sajūta, ka jūs kontrolējat kaut ko neparastu, neskatoties uz to, ka tā ir maza laiva, automašīna vai drons! Tomēr nav viegli pielāgot savas rotaļlietas un likt tām darīt visu, ko vēlaties
Izveidojiet vēja vadītu MIDI instrumentu: 5 soļi (ar attēliem)

Izveidojiet vēja vadītu MIDI instrumentu: Šis projekts tika iesniegts “Creative Electronics”, BEng elektronikas inženierzinātņu 4. kursa modulim Malagas Universitātē, Telekomunikāciju skolā. Sākotnējā ideja radās jau sen, jo mans palīgs Alehandro iztērējis vairāk nekā pusi
Veidojiet žestu vadītu robotu: 4 soļi (ar attēliem)

Veidojiet žestu vadāmu robotu: Šajā instrukcijā mēs veidojam Arcbotics Sparki robotu, kuru var vadīt ar 3D žestiem. Šī projekta jaukā iezīme ir tāda, ka robota vadīšanai nav nepieciešama papildu ierīce, piemēram, viedtālrunis vai cimds. Vienkārši pārvietojiet roku pāri elektriskajam
Izmantojot Bluetooth iespējotu Sony Ericsson tālruni, lai vadītu datoru: 6 soļi

Izmantojot Bluetooth iespējotu Sony Ericsson tālruni, lai kontrolētu datoru: Es jau kādu laiku lasu pamācības un vienmēr esmu vēlējies darīt dažas lietas, par kurām cilvēki ir rakstījuši, bet esmu atklājis, ka skatos uz lietām, kuras to ir grūti izdarīt, jo tos ir patiešām grūti izdarīt, vai arī
Izveidojiet ļoti mazu robotu: izveidojiet pasaulē mazāko riteņu robotu ar satvērēju: 9 soļi (ar attēliem)

Izveidojiet ļoti mazu robotu: izveidojiet pasaulē mazāko riteņu robotu ar satvērēju: izveidojiet 1/20 kubikcentimetru robotu ar satvērēju, kas var uzņemt un pārvietot mazus priekšmetus. To kontrolē Picaxe mikrokontrolleris. Šobrīd es uzskatu, ka tas varētu būt pasaulē mazākais riteņu robots ar satvērēju. Tas, bez šaubām, būs