Სარჩევი:

ვებ კონტროლირებული როვერი: 14 ნაბიჯი (სურათებით)
ვებ კონტროლირებული როვერი: 14 ნაბიჯი (სურათებით)

ვიდეო: ვებ კონტროლირებული როვერი: 14 ნაბიჯი (სურათებით)

ვიდეო: ვებ კონტროლირებული როვერი: 14 ნაბიჯი (სურათებით)
ვიდეო: 30 საათი საპოლიციო ღონისძიებიდან 2024, ივლისი
Anonim
ვებ კონტროლირებული როვერი
ვებ კონტროლირებული როვერი
ვებ კონტროლირებული როვერი
ვებ კონტროლირებული როვერი

რობოტებთან თამაში და თამაში არის ჩემი მთავარი დამნაშავე სიამოვნება ცხოვრებაში. სხვები თამაშობენ გოლფს ან თხილამურებს, მე კი რობოტებს ვქმნი (ვინაიდან არ შემიძლია გოლფის თამაში ან თხილამურებით სრიალი:-). მე მას დამამშვიდებლად და სახალისოდ ვგრძნობ! ჩემი ბოტების უმეტესობის შესაქმნელად, მე ვიყენებ შასის ნაკრებებს. კომპლექტების გამოყენება მეხმარება გავაკეთო ის, რაც მე უფრო მეტად მომწონს, პროგრამული უზრუნველყოფა და ელექტრონიკა და ასევე ქმნის უკეთეს შასს ჩემი ყოვლისმომცველი თვითმმართველობისთვის.

ამ ინსტრუქციებში, ჩვენ შევხედავთ რა არის საჭირო მარტივი, მაგრამ ძლიერი Wifi/ვებ კონტროლირებული როვერის შესაქმნელად. გამოყენებული შასი არის Actobotics Gooseneck. მე ავირჩიე მისი ზომა, გაფართოება და ღირებულება, მაგრამ თქვენ შეგიძლიათ გამოიყენოთ ნებისმიერი სხვა შასი თქვენი არჩევანით.

მსგავსი პროექტისთვის, ჩვენ დაგვჭირდება კარგი მყარი ერთჯერადი კომპიუტერი და ამ ბოტისთვის მე ვირჩევ Raspberry Pi (RPI) Linux– ზე დაფუძნებული კომპიუტერის გამოყენებას. RPI (და Linux) გვაძლევს კოდირების უამრავ ვარიანტს და პითონი გამოყენებული იქნება კოდირების მხარისათვის. ვებ ინტერფეისისთვის ვიყენებ Flask, პითონის მსუბუქი ვებ ჩარჩო.

ძრავების მართვისთვის ავირჩიე RoboClaw 2x5a. ის იძლევა მარტივ სერიულ კომუნიკაციას მისი მბრძანებლობისთვის და კარგად მუშაობს RPI– სთან და Gooseneck– ის ძრავებზე.

დაბოლოს, მას აქვს ვებკამერა POV ტიპის ვიდეო გამოხმაურებისათვის დისტანციური მართვისთვის. თითოეულ თემას უფრო დეტალურად განვიხილავ მოგვიანებით.

ნაბიჯი 1: საჭიროა აპარატურა

აპარატურაა საჭირო
აპარატურაა საჭირო
აპარატურაა საჭირო
აპარატურაა საჭირო
აპარატურაა საჭირო
აპარატურაა საჭირო
აპარატურაა საჭირო
აპარატურაა საჭირო
  • Actobotics Gooesneck შასი ან თქვენთვის სასურველი არჩევანის შესაბამისი შემცვლელი
  • ჟოლო Pi თქვენი არჩევანით (ან კლონი) - RPI მოდელი B გამოიყენება ამ ბოტში, მაგრამ ნებისმიერი მინიმუმ ორი USB პორტით იმუშავებს
  • სტანდარტული სერვო ფირფიტა B x1
  • 90 ° ერთი კუთხის არხის ფრჩხილი x1
  • RoboClaw 2x5a ძრავის მძღოლი
  • S3003 ან მსგავსი სტანდარტული ზომის სერვო
  • პატარა პურის დაფა ან მინი პურის დაფა
  • ქალი მდე ქალი jumper მავთულები
  • მამაკაცი ქალი მდედრის მავთულები
  • ვებ კამერა (სურვილისამებრ) - მე ვიყენებ Logitech C110– ს და აქ არის RPI– ს მხარდაჭერილი კამერების სია.
  • 5v-6v დენის წყარო სერვო ენერგიისთვის
  • 7.2v-11.1v ბატარეა წამყვანი ძრავის კვებისათვის
  • 5v 2600mah (ან უფრო მაღალი) USB დენის ბანკი RPI– სთვის
  • USB Wifi ადაპტერი

ჩემს ბოტში, მე ვიყენებ 4 ბორბალს, რათა ის უფრო მეტი იყოს ყველგანმავალი-შიდა. ამ ვარიანტისთვის დაგჭირდებათ:

  • 4 დიუმიანი მძიმე ბორბალი x2
  • 4 მმ ჭაბურღილის ხრახნიანი კერა (0.770 ინჩი) x2

ნაბიჯი 2: შასის აწყობა

შასის აწყობა
შასის აწყობა
შასის აწყობა
შასის აწყობა
შასის აწყობა
შასის აწყობა

ჯერ შეიკრიბეთ შასი, მიჰყევით ინსტრუქციას, რომელიც მოყვება შასის ან ვიდეოს. დასრულების შემდეგ თქვენ უნდა გქონდეთ გამოსახულების მსგავსი. შენიშვნა: კისრის ნაწილის შეკრებისას, უბრალოდ დატოვეთ სამონტაჟო ფრჩხილი.

ჩემს ბოტზე, მე შევარჩიე ბორბლების შეცვლა, რომლითაც შასი მოდიოდა 4 მძიმე მოვალეობის მქონე ბორბლებისთვის. ეს არის სურვილისამებრ და არ არის საჭირო, თუ თქვენც იგივეს არ გააკეთებთ.

ნაბიჯი 3: დააინსტალირეთ ელექტრონიკა

ელექტრონიკის დამონტაჟება
ელექტრონიკის დამონტაჟება
ელექტრონიკის დამონტაჟება
ელექტრონიკის დამონტაჟება
ელექტრონიკის დამონტაჟება
ელექტრონიკის დამონტაჟება

Gooseneck– ს აქვს ბევრი ოთახი და პარამეტრები თქვენი ელექტრონიკის დასაყენებლად. მე მოგცემთ ამ სურათებს, როგორც გზამკვლევს, მაგრამ თქვენ შეგიძლიათ აირჩიოთ როგორ გსურთ ამ ყველაფრის განლაგება. დაფისა და ბატარეების დასაყენებლად შეგიძლიათ გამოიყენოთ სტენდები, ორმხრივი ლენტი, Velcro ან servo-tape.

ნაბიჯი 4: ვებკამერის დამატება

ვებკამერის დამატება
ვებკამერის დამატება
ვებკამერის დამატება
ვებკამერის დამატება
ვებკამერის დამატება
ვებკამერის დამატება

აიღეთ 90 გრადუსიანი ფრჩხილი, მსუბუქი servo hub და ოთხი (4).3125 ხრახნი ამ ნაბიჯისათვის:

  • აიღეთ servo კერა და განათავსეთ იგი ფრჩხილის ერთ მხარეს და დააფიქსირეთ ისინი.2125 "ხრახნებთან ერთად, როგორც სურათზეა
  • შემდეგ ჩადეთ სერვო სერვო ფრჩხილში
  • მიამაგრეთ 90 გრადუსიანი ბრეკეტი სერვო რქასთან ერთად სერვის ხერხემლზე და გამოიყენეთ რქის ხრახნი, რომელიც მოყვა სერვას, რათა დააკავშიროთ ისინი ერთმანეთთან
  • ახლა დააინსტალირეთ Servo ფრჩხილებში ბატის კისრის თავზე დარჩენილი ხრახნებით
  • დააინსტალირეთ კამერა zip- სამაგრებით ან ორმხრივი ლენტით 90 გრადუსზე

საჭიროების შემთხვევაში გამოიყენეთ სურათები გიდებისათვის.

ნაბიჯი 5: ყველაფრის გაყვანილობა

გაყვანილობა ეს ყველაფერი
გაყვანილობა ეს ყველაფერი
გაყვანილობა ეს ყველაფერი
გაყვანილობა ეს ყველაფერი
გაყვანილობა ეს ყველაფერი
გაყვანილობა ეს ყველაფერი
გაყვანილობა ეს ყველაფერი
გაყვანილობა ეს ყველაფერი

გაყვანილობა საკმაოდ მჭიდროა წინ ამ რობოტისთვის.

მოტორსი:

Solder ხელმძღვანელობს ორივე ძრავზე, თუ ეს უკვე არ გააკეთეთ

რობოტების წინ (ბოლოს ბატი-კისრით) თქვენგან მოშორებით:

  • შეაერთეთ ძრავის მავთულები მარცხენა ძრავაზე არხზე M1A და M1B
  • შეაერთეთ საავტომობილო მავთულები მარჯვენა ძრავაზე არხზე M2A და M2B

სახმელეთო (GND) კავშირები:

  • შეაერთეთ ერთი დამჭერი რობოკლაუზე მიწათმოქმედების დაფაზე. რობოკლაუზე მიწის ნაკვეთი არის ყველაზე ახლოს ცენტრთან (იხ. სურათი)
  • შეაერთეთ PIN 6 RPI– ზე ჯუმბერის დაფაზე. იხილეთ RPI სათაურის სურათი PIN დავალებებისთვის.
  • შეაერთეთ GND servo ბატარეის პაკეტიდან ერთ -ერთ საყრდენზე ჯუმბერის დაფაზე.
  • გაუშვით ჯუმბერის მავთული ჯუმბერის დაფიდან servos GND მავთულზე.

RPI to RoboClaw:

შეაერთეთ RPI GPIO14 TXD პინი RoboClaw S1 პინთან

Ძალა:

  • შეაერთეთ POS მავთული servo ბატარეიდან servos POS ტყვიასთან
  • შეაერთეთ POS მავთული ძრავის ბატარეიდან RoboClaw საავტომობილო დენის შეყვანის ტერმინალის POS (+). ჩვენ ახლა დავტოვებთ GND ტერმინალს გათიშული.

ნაბიჯი 6: RPI– ის დაყენება

RPI– ის დაყენება
RPI– ის დაყენება

მე ვფიქრობ, რომ აქ მომხმარებელმა იცის Linux და RPI. მე არ განვიხილავ როგორ დავაყენო ან დავუკავშირო ერთს. თუ თქვენ გჭირდებათ დახმარება, გამოიყენეთ ქვემოთ მოცემული გვერდები.

თქვენი RPI დაყენების მისაღებად გადახედეთ შემდეგ გვერდებს:

  • RPI ძირითადი დაყენება
  • RPI სწრაფი დაწყების სახელმძღვანელო
  • NOOBS დაყენების გილდია

ზოგადი გადახტომითი გვერდებისათვის, RPI მთავარი გვერდი და eLinux გვერდები შესანიშნავი ადგილია დასაწყებად.

იხილეთ ეს ბმული RPI ზოგადი Wifi დაყენებისთვის.

თუ თქვენ აპირებთ ბოტზე რაიმე სახის კამერის ან ვებ კამერის გამოყენებას, გადახედეთ ამ გვერდებს, რომ მიიღოთ ძირითადი საჭირო ფაილები.

  • RPI კამერის დაყენება
  • eLinix RPI კამერის დაყენება

ვიდეოს სტრიმინგი:

არსებობს რამოდენიმე გზა ვიდეო სტრიმინგის მუშაობისთვის RPI– ზე, მაგრამ მეთოდი, რომელიც მე მირჩევნია არის მოძრაობის გამოყენება.

თქვენს RPI– ზე დასაინსტალირებლად გაუშვით: sudo apt-get install motion

ეს ინსტრუქცია გადის ნაკადისთვისაც.

ნაბიჯი 7: RPI სერიული პორტის კონფიგურაცია

ჩვენ დაგვჭირდება ლინუქსის კონსოლის რეჟიმის გამორთვა RX და TX გამოყენებისათვის, რადგან გვსურს ამ პორტიდან RoboClaw საავტომობილო კონტროლერთან საუბარი. ამისათვის თქვენ შეგიძლიათ გამოიყენოთ ეს მეთოდი ან ეს ინსტრუმენტი. არჩევანი თქვენზეა, რადგან ორივე ერთსა და იმავეს აკეთებს ბოლოს და ბოლოს.

ნაბიჯი 8: პითონის მოდულების დაყენება

თქვენ დაგჭირდებათ RPI– ზე დაინსტალირებული პითონი, ასევე პითონის პაკეტის ინსტალერის პიპი.

პიპის დასაყენებლად გააკეთეთ:

  1. sudo apt-get დააინსტალირეთ python-setuptools
  2. sudo easy_install pip

შემდეგ:

  1. sudo pip ინსტალაციის კოლბა
  2. sudo pip დააინსტალირეთ pyserial
  3. sudo pip დააინსტალირეთ RPIO

ეს იქნება ყველა მოდული, რომელიც საჭიროა კოდის გასაშვებად.

ნაბიჯი 9: RoboClaw– ის დაყენება

მე მაქვს რობოტის კოდი, რომელიც ესაუბრება RoboClaw– ს სტანდარტულ სერიულ რეჟიმში 19200 baud– ზე.

RoboClaw– ის დასაყენებლად, გააკეთეთ შემდეგი:

  1. დააჭირეთ ღილაკს "MODE" RoboClaw- ზე
  2. დააწკაპუნეთ დაყენების ღილაკზე, სანამ LED არ ანათებს 5 (ხუთჯერ) შეფერხებებს შორის
  3. დააჭირეთ შესანახად "LIPO" ღილაკს
  4. შემდეგ დააჭირეთ ღილაკს "SET" სანამ LED არ ანათებს 3 (სამჯერ) შეფერხებებს შორის
  5. დააჭირეთ შესანახად LIPO ღილაკს

ეს არის ძრავის კონტროლერის დასაყენებლად. საჭიროების შემთხვევაში იხილეთ pdf ზემოთ მიბმული დამატებითი ინფორმაციისთვის.

ნაბიჯი 10: Rover პროგრამის/ფაილების დაყენება

ჩამოტვირთეთ და დააკოპირეთ rover.zip ფაილი თქვენს RPI– ში თქვენი pi მომხმარებლის დირექტორიაში.

თუ თქვენ იყენებთ Linux- ს ან Mac- ს, შეგიძლიათ გამოიყენოთ 'scp' ამის გასაკეთებლად:

scp ~/location/of/the/file/rover.zip pi@your_rpi_ip:/

Windows– ისთვის შეგიძლიათ ჩამოტვირთოთ და გამოიყენოთ pscp და შემდეგ გააკეთოთ:

pscp /location/of/the/file/rover.zip pi@your_rpi_ip:/

მას შემდეგ რაც zipfile გადაწერილია RPI– ში, შედით მასში როგორც pi მომხმარებელი.

ახლა გაუშვით:

unzip rover.zip

ეს გაააქტიურებს ფაილებს საქაღალდეში სახელწოდებით 'rover' და ამ საქაღალდის ქვეშ იქნება შემდეგი:

  • restrover.py (პითონის კოდი რობოტისთვის)
  • სტატიკური (ინახავს გამოსახულების ფაილებს საკონტროლო გვერდზე არსებული ღილაკებისათვის)
  • შაბლონები (ფლობს index.htlm ფაილს, საკონტროლო ვებ გვერდს)

თუ თქვენ იყენებთ ვებ კამერას, შეცვალეთ ხაზი შაბლონის საქაღალდეში index.html ფაილის ბოლოში. შეცვალეთ URL IFRAME ხაზში, რათა შეესაბამებოდეს src URL თქვენს ვიდეო ნაკადს.

ნაბიჯი 11: დაიწყეთ Bot Up

დაწყების Bot Up
დაწყების Bot Up

შეაერთეთ USB ენერგია RPI– სთან.

ბოტის კოდის დასაწყებად შედით როგორც pi მომხმარებელი და გაუშვით:

  • cd rover
  • sudo python restrover.py

თუ ყველაფერი წესრიგშია, თქვენ უნდა ნახოთ სურათის მსგავსი ეკრანი ამ ნაბიჯში

თუ ხედავთ რაიმე შეცდომას ან პრობლემას, თქვენ მოგიწევთ მათი გამოსწორება მომავალში წასვლამდე.

ახლა, შეაერთეთ GND (-) მავთული NEG (-) ტერმინალთან RoboClaw ძრავის სიმძლავრის შეყვანისას.

ნაბიჯი 12: წვდომა Bot კონტროლის გვერდზე

წვდომა ბოტის კონტროლის გვერდზე
წვდომა ბოტის კონტროლის გვერდზე
წვდომა ბოტის კონტროლის გვერდზე
წვდომა ბოტის კონტროლის გვერდზე

რობოტის პითონის სკრიპტის გაშვების შემდეგ ჩართეთ RoboClaw და შემდეგ გადადით თქვენს RPI– ის ip– ზე:

your_rpi_ip

თქვენ უნდა ნახოთ ვებ კონტროლის გვერდი, რომელიც გამოჩნდება სურათების მსგავსად. თუ არა, შეამოწმეთ თქვენი RPI გამომავალი ტერმინალი და მოძებნეთ შეცდომები და გაასწორეთ ისინი.

გვერდზე შესვლისთანავე თქვენ მზად ხართ გააკონტროლოთ ბოტი.

რობოტი დაიწყება "Med run" პარამეტრში და საშუალო სიჩქარით.

ბოტის კონტროლი შესაძლებელია გვერდზე განთავსებული ღილაკებით ან კლავიატურის ღილაკებით.

გასაღებებია:

  • w - წინ
  • z - უკუ/უკან
  • a - გრძელი მარცხენა შემობრუნება
  • s - გრძელი მარჯვნივ შემობრუნება
  • q - მოკლე მარცხენა მოსახვევი
  • e - მოკლე მარჯვნივ შემობრუნება
  • 1 - პანელის კამერა დარჩა
  • 2 - პან კამერა მარჯვნივ
  • 3 - ტაფა სავსე მარცხნივ
  • 4 - ტაფა სავსე მარჯვნივ
  • / - მთავარი/ ცენტრალური კამერა
  • თ - გაჩერება/გაჩერება რობოტი

გაგზავნილ ბრძანებებს შორის არის ნახევარი წამის დაგვიანების ბუფერი. მე ეს გავაკეთე არასასურველი განმეორებითი ბრძანებების აღმოსაფხვრელად. თქვენ, რა თქმა უნდა, შეგიძლიათ ამოიღოთ ეს კოდიდან, თუ გსურთ (ინდექსში. Html)

დანარჩენი კონტროლი და მისი კონტროლი უნდა იყოს ახსნილი.

ნაბიჯი 13: პითონის/ბოთლის კოდი

ეს ბოტი იყენებს პითონს და Flask ვებ ჩარჩოს. დაინტერესების შემთხვევაში შეგიძლიათ შეიტყოთ მეტი Flask– ის შესახებ აქ.

დიდი განსხვავება Flask აპლიკაციიდან და ჩვეულებრივი პითონის სკრიპტიდან არის @app.route კლასი/მეთოდი, რომელიც გამოიყენება URI მართვისთვის. გარდა ამისა, უმეტესწილად ეს საკმაოდ ნორმალური პითონია.

#!/usr/bin/env პითონი

# # Wifi/Web ორიენტირებული Rover # # დაწერილი სკოტ ბისლის მიერ - 2015 # # იყენებს RPIO, pyserial და Flask # იმპორტი დრო იმპორტი სერიული RPIO იმპორტი PWM კოლბაში იმპორტი Flask, render_template, request app = Flask (_name_, static_url_path = ") # დაკავშირება კომპორტის პორტთან Roboclaw საავტომობილო კონტროლერთან სასაუბროდ სცადეთ: # შეცვალეთ ბაუდის განაკვეთი აქ თუ განსხვავდება 19200 roboclaw = სერიული. სერიული ('/dev/ttyAMA0', 19200) გარდა IOError: print ("Comm პორტი არ არის ნაპოვნია ") sys.exit (0) # სიჩქარე და მართვის ცვლადი last_direction = -1 speed_offset = 84 turn_tm_offset = 0.166 გაშვება = 0.750 # სერვო ნეიტრალური პოზიცია (მთავარი) servo_pos = 1250 servo = PWM. Servo () servo.set_servo (18, servo_pos) # ცოტა დრო დროის დასახლებისთვის. ძილი (3) # # URI დამმუშავებელი - ბოტის გვერდის ყველა მოქმედება კეთდება აქ # # გაგზავნეთ ბოტების საკონტროლო გვერდი (საწყისი გვერდი) @app.route ("/") def index (): render_template ('index.html', name = არცერთი) @app.route ("/forward") def forward (): global last_direction, run_ti მე ვბეჭდავ "წინ" go_forward () last_direction = 0 # ძილი 100ms + გაშვება_დროინდელი დრო. ძილი (0.100 + გაშვება_დრო) # თუ არა უწყვეტი, მაშინ შეჩერდება შეფერხების შემდეგ, თუ გაშვების დრო> 0: last_direction = -1 გაჩერება () დააბრუნეთ "კარგი" @ app.route ("/backward") def backward (): global last_direction, run_time print "Backward" go_backward () last_direction = 1 # sleep 100ms + run_time time.sleep (0.100 + run_time) # თუ არა უწყვეტი, მაშინ შეჩერდით შეფერხების შემდეგ თუ run_time> 0: last_direction = -1 შეჩერება () დააბრუნეთ "ok" @app.route ("/left") def left (): global last_direction, turn_tm_offset print "Left" go_left () last_direction = -1 # sleep @1 /2 მეორეჯერ. ძილი (0.500 - turn_tm_offset) # გაჩერება გაჩერება () დრო. ძილი (0.100) დაბრუნება "ok" @app.route ("/right") def right (): global last_direction, turn_tm_offset print "Right" go_right () # ძილი @1/2 მეორედ. ძილი (0.500 - turn_tm_offset) last_direction = -1 # გაჩერება () დრო. ძილი (0.100) დაბრუნება "ok" @app.route ("/ltforward") def ltforward (): გლობალური last_direction, turn_t m_offset print "მარცხნივ წინ მობრუნება" go_left () # ძილი @1/8 მეორედ. ძილი (0.250 - (turn_tm_offset / 2)) last_direction = -1 # გაჩერება () დრო. ძილი (0.100) დაბრუნება "კარგი" @app. მარშრუტი ("/rtforward") def rtforward (): გლობალური ბოლო_ მიმართულება, turn_tm_offset ბეჭდვა "მარჯვნივ წინ მობრუნება" go_right () # sleep @1/8 მეორედ. ძილი (0.250 - (turn_tm_offset/2)) last_direction = -1 # stop halt () time.sleep (0.100) დაბრუნება "ok" @app.route ("/stop") def stop (): global last_direction print "Stop" halt () last_direction = -1 # sleep 100ms time.sleep (0.100) დაბრუნება "ok" @app.route ("/panlt") def panlf (): გლობალური servo_pos ბეჭდვა "Panlt" servo_pos -= 100 თუ servo_pos 2500: servo_pos = 2500 servo.set_servo (18, servo_pos) # ძილი 150ms დრო. ძილი (0.150) დაბრუნება "ok" @app.route ("/home") def home (): გლობალური servo_pos ბეჭდვა "მთავარი" servo_pos = 1250 servo.set_servo (18, servo_pos) # ძილი 150ms დრო. ძილი (0.150) დაბრუნება "ok" @app.route ("/panfull_lt") def panfull_lt (): გლობალური servo_pos ბეჭდვა "Pan full l eft "servo_pos = 500 servo.set_servo (18, servo_pos) # ძილი 150ms time.sleep (0.150) დაბრუნება" ok " @app.route ("/panfull_rt ") def panfull_rt (): გლობალური servo_pos ბეჭდვა" Pan full right "servo_pos = 2500 servo.set_servo (18, servo_pos) # ძილი 150ms დრო. ძილი (0.150) დააბრუნეთ "ok" @app.route ("/speed_low") def speed_low (): global speed_offset, last_direction, turn_tm_offset speed_offset = 42 turn_tm_offset = 0.001 # განაახლეთ მიმდინარე მიმართულება ახალი სიჩქარის მისაღებად, თუ last_direction == 0: go_forward () if last_direction == 1: go_backward () # sleep 150ms time.sleep (0.150) return "ok" @app.route ("/speed_mid") def speed_mid (): გლობალური speed_offset, last_direction, turn_tm_offset speed_offset = 84 turn_tm_offset = 0.166 # განაახლეთ მიმდინარე მიმართულება ახალი სიჩქარის მისაღებად last_direction == 0: go_forward () if last_direction == 1: go_backward () # ძილი 150ms დრო. ძილი (0.150) დააბრუნე "ok" @app.route ("/speed_hi") def speed_hi (): გლობალური სიჩქარის_წყობი, ბოლო_ მიმართულება, turn_tm_offset speed_offset = 126 ტურ. n_tm_offset = 0.332 # განაახლეთ მიმდინარე მიმართულება ახალი სიჩქარის მისაღებად, თუ last_direction == 0: go_forward () if last_direction == 1: go_backward () # sleep 150ms time.sleep (0.150) return "ok" @app.route ("/უწყვეტი ") def berdewam (): global run_time print" Continuous run "run_time = 0 # sleep 100ms time.sleep (0.100) return" ok " @app.route ("/mid_run ") def mid_run (): global run_time print" Mid გაშვება "run_time = 0.750 შეჩერება () # ძილი 100ms time.sleep (0.100) დაბრუნება" ok " @app.route ("/short_time ") def short_time (): global run_time print" Short run "run_time = 0.300 stop () # ძილი 100ms time.sleep (0.100) დააბრუნე "კარგი" # # საავტომობილო დისკის ფუნქციები # def go_forward (): გლობალური სიჩქარის_შესაძლებელია თუ სიჩქარე_აწყდება! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) სხვა: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_backward (): global speed_offset if speed_offset! = 42: roboclaw.write (chr (127 - speed_offset)) roboclaw.wri te (chr (255 - speed_offset)) სხვა: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) def go_left (): global speed_offset if speed_offset! = 42: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset)) else: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_right (): global speed_offset if speed_offset! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) else: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset)) def halt (): roboclaw.write (chr (0)) if _name_ == "_main_": app.run (host = '0.0.0.0', port = 80, debug = True)

თუ თქვენ არ გსურთ ან არ გჭირდებათ შეცდომების გამოსწორების ინფორმაცია Flask– დან, დააყენეთ გამართვა ‘false’ app.run ხაზზე.

თუ _name_ == "_ მთავარი_":

app.run (მასპინძელი = '0.0.0.0', პორტი = 80, გამართვა = ყალბი)

თქვენ ასევე შეგიძლიათ შეცვალოთ პორტი, რომელსაც Flask http სერვერი უსმენს აქაც.

ნაბიჯი 14: სხვა ტექნიკის გამოყენება

თუ გსურთ გამოიყენოთ სხვა ტექნიკა, როგორიცაა სხვა ტიპის SBC (ერთი დაფის კომპიუტერი) თქვენ უნდა გქონდეთ მცირე პრობლემები Python– ისა და Flask– ის სხვა დაფებზე გაშვებისას, როგორიცაა Beagle Bone, PCDuino და სხვა… თქვენ მოგიწევთ კოდის შეცვლა GPIO– ს შესატყვისად. ახალი დაფის სერვო მამოძრავებელი შესაძლებლობების განლაგება და გამოყენება.

სხვა ტიპის საავტომობილო დრაივერის გამოსაყენებლად, თქვენ უბრალოდ უნდა შეცვალოთ go_forward, go_backward, go_left, go_right და შეაჩეროთ ფუნქციები, რათა გააკეთოთ ის, რაც ოდესმე სჭირდება საავტომობილო დრაივერს, რათა ძრავა შეასრულოს კონკრეტული ფუნქცია.

გირჩევთ: