Სარჩევი:
- ნაბიჯი 1: საჭირო კომპონენტები
- ნაბიჯი 2: რობოტის აწყობა
- ნაბიჯი 3: შექმენით თქვენი საკუთარი ლაბირინთი - სურვილისამებრ
- ნაბიჯი 4: გარემოს შექმნა
- ნაბიჯი 5: პროგრამირება GiggleBot - ნაწილი I
- ნაბიჯი 6: დისტანციური მართვის პროგრამირება - ნაწილი II
- ნაბიჯი 7: დისტანციური ეკრანის ინტერპრეტაცია
ვიდეო: შექმენით ლიდარზე ორიენტირებული რობოტი GiggleBot– ით: 8 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:18
ამ გაკვეთილში ჩვენ ვაკეთებთ GiggleBot– ს დაძლიოს ლაბირინთის სირთულეები.
ჩვენ ვამონტაჟებთ სერვოს GiggleBot– ზე, რომელზედაც ჩვენ ვამაგრებთ დისტანციის სენსორს. მუშაობის დროს, სერვო ბრუნავს წინ და უკან ისე, რომ მანძილის სენსორს შეუძლია გაზომოთ მანძილი თითოეულ დაბრკოლებამდე. ეს მუშაობს ისევე როგორც LIDAR სენსორი, რომელიც ჩვეულებრივ ბევრად უფრო ძვირია.
ამავდროულად, GiggleBot აგზავნის ამ მონაცემებს BBC– ს დისტანციურ მიკრო: ბიტში, რომელიც აჩვენებს მისი LED– ების 5–5 მატრიცაზე მის ნათესავ პოზიციას დაბრკოლებებთან.
თქვენი ამოცანაა შეძლოთ GiggleBot– ზე ნავიგაცია მხოლოდ იმის გათვალისწინებით, თუ რა არის ნაჩვენები BBC– ის სხვა მიკრო: ბიტში. GiggleBot– ის გასაკონტროლებლად გამოიყენება BBC– ის დისტანციური მიკრო: ბიტის ღილაკები.
ეს გასართობად ჟღერს! მოდით გადავიდეთ ამაზე, არა?
ნაბიჯი 1: საჭირო კომპონენტები
ჩვენ დაგვჭირდება:
- გიგლბოტი.
- BBC– ს მიკრო ელემენტის ბატარეა: ცოტა. მას მოყვება BBC მიკრო: ბიტი თავის პაკეტში.
- x3 AA ბატარეები GiggleBot– ისთვის.
- Grove კაბელი მანძილის სენსორის GiggleBot– თან დასაკავშირებლად.
- Servo ნაკრები DexterIndustries– დან.
- x3 BBC მიკრო: ბიტი. ერთი GiggleBot– ისთვის და ერთი რობოტის გასაკონტროლებლად შორიდან.
- დისტანციის სენსორი DexterIndustries– დან.
მიიღეთ GiggleBot რობოტი BBC მიკროსადგურისთვის: ცოტა აქ!
ნაბიჯი 2: რობოტის აწყობა
იმისათვის, რომ GiggleBot მზად იყოს დასაპროგრამებლად, ჩვენ გვჭირდება მისი შეკრება, თუმცა გასაკეთებელი არც არის საჭირო.
ჩადეთ 3 AA ბატარეა მის განყოფილებაში GiggleBot– ის ქვეშ.
შეიკრიბეთ სერვო პაკეტი. სერვოს მბრუნავი მკლავისთვის გამოიყენეთ მისი ბოლო ხვრელი, რათა დააინსტალიროთ სერვერი GiggleBot– ის წინა კონექტორებზე. თქვენ შეგიძლიათ გამოიყენოთ ხრახნი და/ან მავთული, რათა ის უფრო სტაბილური იყოს მის ადგილას. ან შეგიძლიათ ცხელი წებო დაფაზე. ჩემს შემთხვევაში, მე გამოვიყენე ხრახნიანი და მოკლე მავთული, რათა სერგო მკლავი მიმეკრა GiggleBot დაფაზე.
სერვოს მხრის სერვოზე დამონტაჟებისას დარწმუნდით, რომ სერვო უკვე დაყენებულია 80 პოზიციაზე. ამის გაკეთება შეგიძლიათ gigglebot.set_servo (gigglebot. RIGHT, 80) დარეკვით. ამის შესახებ მეტი შეგიძლიათ წაიკითხოთ აქ.
შემდეგი, განათავსეთ მანძილის სენსორი სერვო პაკეტის წინა მხარეს და გაასწორეთ როგორც ზემოთ მოყვანილ მაგალითში.
დაბოლოს, დააკავშირეთ დისტანციის სენსორი Grove კაბელით ნებისმიერ I2C პორტთან და სერვო ძრავა GiggleBot– ზე მჯდომარე მარჯვენა პორტთან - მასზე მითითებულია მარჯვენა პორტი.
ნაბიჯი 3: შექმენით თქვენი საკუთარი ლაბირინთი - სურვილისამებრ
ამ შემთხვევაში, მე გამოვიყენე რამოდენიმე ყუთი დახურული მარყუჟის შესაქმნელად, NASCAR– ის მსგავსი.
ამ ეტაპზე, თქვენ შეგიძლიათ გახდეთ მართლაც შემოქმედებითი და გახადოთ ის რაც გნებავთ, ან გახადოთ ის სუპერ გრძელი, რადგან ეს ნამდვილად თქვენზეა დამოკიდებული.
ან თუ საერთოდ არ გსურთ ტრეკი, შეგიძლიათ განათავსოთ GiggleBot სამზარეულოში ან მისაღებში, მაგალითად - ეს უნდა იყოს საკმარისად კარგი, რადგან არსებობს უამრავი კედელი და დაბრკოლება, რომელთა თავიდან აცილებაც მაინც გჭირდებათ.
ნაბიჯი 4: გარემოს შექმნა
იმისათვის, რომ შეძლოთ BBC– ს მიკროპროგრამის დაპროგრამება MicroPython– ში, თქვენ უნდა შექმნათ მისი რედაქტორი (Mu რედაქტორი) და დააყენოთ GiggleBot MicroPython Runtime, როგორც მისი გაშვების დრო. ამისათვის თქვენ უნდა მიყევით ამ გვერდზე მითითებებს. ამ მომენტისთვის გამოიყენება გაშვების დროის ვერსია v0.4.0.
ნაბიჯი 5: პროგრამირება GiggleBot - ნაწილი I
პირველი, მოდით შევქმნათ GiggleBot სკრიპტი. ეს სკრიპტი აიძულებს GiggleBot- ს მისი სერვო ძრავის როტაცია 160 გრადუსით (თითოეული მიმართულებით 80 გრადუსი), ხოლო ამავდროულად მიიღოს 10 კითხვა დისტანციის სენსორიდან ერთ შემობრუნებაზე.
როდესაც ჩართულია, GiggleBot იდგება მანამ, სანამ არ მიიღებს ბრძანებას დისტანციური მართვისგან. შეიძლება იყოს მხოლოდ 3 ბრძანება: წინსვლა, მარცხნივ ან მარჯვნივ.
შენიშვნა: მომდევნო სკრიპტს შეიძლება დაკარგული ჰქონდეს თეთრი სივრცეები და ეს, როგორც ჩანს, გამოწვეულია GitHub Gists– ის ჩვენების პრობლემით. დააწკაპუნეთ არსზე, რათა მიგიყვანოთ მის GitHub გვერდზე, სადაც შეგიძლიათ დააკოპიროთ-ჩასვით კოდი.
დისტანციური მართვის LIDAR დაფუძნებული GiggleBot
gigglebot იმპორტიდან* |
distance_sensor იმპორტიდან DistanceSensor |
მიკრობიტის იმპორტის ძილიდან |
უმეტესი იმპორტიდან ticks_us, sleep_us |
ustruct იმპორტი |
რადიოს იმპორტი |
# გააჩერე რობოტი, თუ ის უკვე მოძრაობს |
გაჩერება () |
# რადიოს ჩართვა |
რადიო. () |
# დისტანციის სენსორის ობიექტი |
ds = DistanceSensor () |
ds.start_continuous () |
rotate_time = 0.7# იზომება წამში |
rotate_span = 160# იზომება გრადუსში |
rotate_steps = 10 |
overhead_compensation = 1.05# განსაზღვრულია პროცენტებში |
time_per_step = 10 ** 6* rotate_time / (rotate_steps* overhead_compensation) |
last_read_time = 0 |
რადარი = ბაიტერაი (rotate_steps) |
servo_rotate_direction = 0# 0 ზემოთ ასვლისთვის (0-> 160) და 1 სხვაგვარად |
სარადარო_ინდექსი = 0 |
set_servo (RIGHT, 0) |
მართალია: |
# წაიკითხე რადარიდან |
თუ ticks_us () - last_read_time> time_per_step: |
# წაიკითხე დისტანციის სენსორიდან |
რადარი [radar_index] = int (ds.read_range_continuous () /10) |
last_read_time = ticks_us () |
ბეჭდვა (სარადარო_ინდექსი) |
# გააკეთე ლოგიკა, რომ სერვო გადაატრიალო მარცხნიდან მარჯვნივ |
თუ radar_index == rotate_steps -1 და servo_rotate_direction == 0: |
set_servo (RIGHT, 0) |
servo_rotate_direction = 1 |
elif radar_index == 0 და servo_rotate_direction == 1: |
set_servo (RIGHT, rotate_span) |
servo_rotate_direction = 0 |
სხვა: |
radar_index += 1 თუ servo_rotate_direction == 0else-1 |
# და გაგზავნეთ რადარის მნიშვნელობები |
radio.send_bytes (რადარი) |
სცადე: |
# წაიკითხეთ რობოტის ბრძანებები |
lmotor, rmotor = ustruct.unpack ('bb', radio.receive_bytes ()) |
# და გაააქტიურეთ ძრავები, თუკი არის რაიმე მიღებული ბრძანება |
set_speed (lmotor, rmotor) |
წამყვანი () |
përjashtTypeError: |
ჩაბარება |
rawgigglebot_lidar_robot.py- ს ნახვა GitHub– ით hosted
ნაბიჯი 6: დისტანციური მართვის პროგრამირება - ნაწილი II
გასაკეთებელი არის BBC– ის მე -2 მიკრო პროგრამირება: ბიტი, რომელიც მოქმედებს როგორც დისტანციური მართვა.
დისტანციური მართვის სისტემა გამოიყენება 5-დან 5 პიქსელით დამზადებულ ეკრანზე დაბრკოლებებთან შედარებით მანძილზე. მაქსიმუმ, იქნება 10 პიქსელი ჩართული.
ამავდროულად, დისტანციური მართვის საშუალება გაძლევთ GiggleBot– ის დისტანციური მართვის შესაძლებლობას მისი 2 ღილაკის დაჭერით: წადით წინ, მარცხნივ და მარჯვნივ.
შენიშვნა: მომდევნო სკრიპტს შეიძლება დაკარგული ჰქონდეს თეთრი სივრცეები და ეს, როგორც ჩანს, გამოწვეულია GitHub Gists– ის ჩვენების პრობლემით. დააწკაპუნეთ არსზე, რათა მიგიყვანოთ მის GitHub გვერდზე, სადაც შეგიძლიათ დააკოპიროთ-ჩასვით კოდი.
დისტანციური მართვის LIDAR დაფუძნებული GiggleBot - დისტანციური კოდი
მიკრობიტიდან იმპორტის ძილი, ჩვენება, ღილაკი_ა, ღილაკი_ბ |
ustruct იმპორტი |
რადიოს იმპორტი |
მათემატიკის იმპორტი |
რადიო. () |
rotate_steps = 10 |
rotate_span = 160# გრადუსში |
rotate_step = როტაცია_სპანი / როტაცია_ ნაბიჯები |
მაქსიმალური_ მანძილი = 50# სანტიმეტრში |
side_length_leds = 3 # იზომება # პიქსელებში |
რადარი = ბაიტერაი (rotate_steps) |
xar = bytearray (rotate_steps) |
yar = bytearray (rotate_steps) |
save_xar = ბაიტერაი (rotate_steps) |
შენახული_ იარი = ბაიტერაი (ბრუნვის_ ნაბიჯები) |
ძრავის სიჩქარე = 50 |
მართალია: |
სტატუსი = radio.receive_bytes_into (რადარი) |
თუ სტატუსი არ არის არცერთი: |
# ჩვენება. ნათელი () |
c, val inenumerate (რადარი): |
თუ რადარი [c] <= მაქსიმალური_ მანძილი: |
# გამოთვალეთ თითოეული მანძილის 2 კოორდინატი |
კუთხე = გადატრიალება_ ნაბიჯები / (როტაციის_ ნაბიჯები -1) * როტაციის_ საფეხური * გ |
კუთხე += (180- როტაცია_სპანი) /2.0 |
x_c = math.cos (კუთხე * math.pi /180.0) * რადარი [c] |
y_c = math.sin (კუთხე * math.pi /180.0) * რადარი [c] |
# შეაფასეთ მანძილი 5x5 მიკრობიტიან ეკრანზე |
x_c = x_c * (side_length_leds -1) / მაქსიმალური_ მანძილი |
y_c = y_c * (side_length_leds +1) / max_distance |
# გადაადგილების კოორდინატები |
x_c += (side_length_leds -1) |
y_c = (side_length_leds +1) - y_c |
# მრგვალი კოორდინატებს ზუსტად იქ, სადაც არის LED- ები |
თუ x_c - მათემატიკა. სართული (x_c) <0.5: |
x_c = მათემატიკა. სართული (x_c) |
სხვა: |
x_c = math.ceil (x_c) |
თუ y_c - მათემატიკა. სართული (y_c) <0.5: |
y_c = მათემატიკა. სართული (y_c) |
სხვა: |
y_c = math.ceil (y_c) |
xar [c] = x_c |
იარი [c] = y_c |
სხვა: |
xar [c] = 0 |
იარი [c] = 0 |
ჩვენება. ნათელი () |
x, y inzip (xar, yar): |
display.set_pixel (x, y, 9) |
# ბეჭდვა (სია (zip (xar, yar, radar))) |
მდგომარეობაA = ღილაკი_ა.პრესილია () |
მდგომარეობა B = ღილაკი_ბ.პრესილია () |
თუ stateA და stateB: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, motor_speed)) |
ბეჭდვა ("წინ") |
თუ მდგომარეობაA და არა სახელმწიფო B: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, -motor_speed)) |
ბეჭდვა ("მარცხნივ") |
თუ არა სახელმწიფო და მდგომარეობა B: |
radio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed)) |
ბეჭდვა ("მარჯვნივ") |
თუ არა მდგომარეობა და არა მდგომარეობა ბ: |
radio.send_bytes (ustruct.pack ('bb', 0, 0)) |
ბეჭდვა ("გაჩერება") |
rawgigglebot_lidar_remote.py იხილეთ hosted ერთად GitHub
ნაბიჯი 7: დისტანციური ეკრანის ინტერპრეტაცია
"loading =" lazy "აკონტროლებს GiggleBot- ს, თქვენ გაქვთ შემდეგი პარამეტრები:
- დააჭირეთ ღილაკს A და B ღილაკს GiggleBot– ის წინსვლისთვის.
- დააჭირეთ ღილაკს A GiggleBot მარცხნივ დასატრიალებლად.
- დააჭირეთ ღილაკს B GiggleBot მარჯვნივ დასატრიალებლად.
იმისათვის, რომ ნახოთ რომელი მიმართულებით არის აღმოჩენილი უახლოესი დაბრკოლებები, უბრალოდ შეხედეთ დისტანციურ (BBC დისტანციური მიკრო: ცოტათი, რომელსაც თქვენ გეჭიროთ) ეკრანზე. თქვენ უნდა შეგეძლოთ გააკონტროლოთ GiggleBot შორიდან, მისი შეხედვის გარეშე.
გირჩევთ:
RGB- სინათლეზე ორიენტირებული პალმების მოძრაობა უკონტაქტო: 4 ნაბიჯი
RGB- სინათლეზე ორიენტირებული პალმების მოძრაობა უკონტაქტო: RGB ღამის შუქი, ღამის შუქის ფერის კონტროლის უნარით ხელის მოძრაობების გამოყენებით. სამი მანძილის სენსორის გამოყენებით, ჩვენ შევცვლით RGB ფერის სამივე კომპონენტის სიკაშკაშეს ხელთან მიახლოებისას ან მოხსნისას. არ
ობიექტზე ორიენტირებული პროგრამირება: საგნების სწავლა/სწავლების მეთოდი/ტექნიკა ფორმის პანჩერის გამოყენებით: 5 ნაბიჯი
ობიექტზე ორიენტირებული პროგრამირება: საგნების შემუშავება/სწავლების მეთოდი/ტექნიკა Shape Puncher– ის გამოყენებით: სწავლის/სწავლების მეთოდი ახალი ობიექტებისთვის ორიენტირებული პროგრამირებისათვის. ეს არის საშუალება მივცეთ მათ ვიზუალიზაცია და დაინახონ კლასებიდან ობიექტების შექმნის პროცესი. ნაწილები: 1. EkTools 2 დიუმიანი დიდი დარტყმა; მყარი ფორმები საუკეთესოა .2. ცალი ქაღალდი ან გ
დაბალანსებული რობოტი / 3 ბორბლიანი რობოტი / STEM რობოტი: 8 ნაბიჯი
დაბალანსებული რობოტი / 3 ბორბლიანი რობოტი / STEM რობოტი: ჩვენ შევქმენით კომბინირებული ბალანსირების და 3 ბორბლიანი რობოტი სკოლებში საგანმანათლებლო გამოყენებისთვის და სკოლის შემდგომ საგანმანათლებლო პროგრამებისთვის. რობოტი დაფუძნებულია Arduino Uno– ზე, საბაჟო ფარზე (კონსტრუქციის ყველა დეტალი მოცემულია), Li Ion ბატარეის პაკეტზე (ყველა კონსტრუქცია
[არდუინოს რობოტი] როგორ გავაკეთოთ მოძრავი გადაღების რობოტი - ცერა თითის რობოტი - სერვო ძრავა - წყაროს კოდი: 26 ნაბიჯი (სურათებით)
[არდუინოს რობოტი] როგორ გავაკეთოთ მოძრავი გადაღების რობოტი | ცერა თითის რობოტი | სერვო მოტორი | წყაროს კოდი: Thumbs Robot. გამოყენებული იქნა MG90S სერვო ძრავის პოტენომეტრი. ეს არის ძალიან სახალისო და მარტივი! კოდი ძალიან მარტივია. ეს მხოლოდ 30 სტრიქონია. როგორც ჩანს მოძრაობის გადაღება. გთხოვთ დატოვოთ ნებისმიერი შეკითხვა ან გამოხმაურება! [ინსტრუქცია] წყაროს კოდი https: //github.c
შექმენით ძალიან პატარა რობოტი: შექმენით მსოფლიოში ყველაზე პატარა ბორბლიანი რობოტი გრიპით .: 9 ნაბიჯი (სურათებით)
ააშენეთ ძალიან პატარა რობოტი: შექმენით მსოფლიოში ყველაზე პატარა ბორბლიანი რობოტი გრიპით .: შექმენით 1/20 კუბური დიუმიანი რობოტი გრიპით, რომელსაც შეუძლია პატარა საგნების აყვანა და გადატანა. მას აკონტროლებს Picaxe მიკროკონტროლერი. დროის ამ მომენტში, მე მჯერა, რომ ეს შეიძლება იყოს მსოფლიოში ყველაზე პატარა ბორბლიანი რობოტი გრიპით. ეს უეჭველად იქნება