Სარჩევი:

UCL Embedded - B0B Linefollower: 9 Steps
UCL Embedded - B0B Linefollower: 9 Steps

ვიდეო: UCL Embedded - B0B Linefollower: 9 Steps

ვიდეო: UCL Embedded - B0B Linefollower: 9 Steps
ვიდეო: How To Make A DIY Arduino Obstacle Avoiding Car At Home 2024, ნოემბერი
Anonim
UCL Embedded - B0B Linefollower
UCL Embedded - B0B Linefollower

ეს არის B0B.*

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

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

სხვა მრავალი რობოტისგან განსხვავებით, B0B ასევე აგროვებს მონაცემებს და აგზავნის მას WiFi- ს საშუალებით.

სრულიად გადაჭარბებულია ჰობის პროექტისთვის, ის მოიცავს უამრავ საგანს, რომელიც შეიძლება თქვენთვის საინტერესო აღმოჩნდეს. ეს სახელმძღვანელო აღწერს მის დაბადებას, მის ფუნქციებს და როგორ შეგიძლია შექმნა მისნაირი.

ის ასევე გულისხმობს გაბრაზებას სხვადასხვა ელექტრონიკაზე იმის გამო, რომ არ მუშაობს ისე, როგორც ჩვენ გვსურდა, და ის ნაბიჯები, რომლებიც გადავდგით ამ სირთულეების დასაძლევად, (მე გიყურებთ თქვენ ESP 8266-01).

არსებობს 2 კოდი პროექტის მუშაობისთვის. პირველი კოდი არის ESP8266 მოდულისთვის, რომელსაც ჩვენ ვიყენებთ Arduino– ს როგორც პროგრამისტი, ხოლო მეორე კოდი მუშაობს Arduino– ზე.

ნაბიჯი 1: კომპონენტები

ამ პროექტისთვის დაგჭირდებათ:

აპარატურა:

• 1x რადიო კონტროლერის მანქანა, (უნდა ჰქონდეს ESC და საჭის სერვისი).

ჩვენ ვიყენებდით ძირითადად საფონდო Traxxas 1/16 E-Revo VXL- ს, ძირითადად იმიტომ, რომ სწორედ ეს გვქონდა და დარწმუნებული ვიყავით, რომ შეგვეძლო მისი კონტროლი Arduino– ით. ასევე იმის გამო, რომ იგი დასრულდება უმნიშვნელო რაოდენობის დამატებითი ტექნიკით, ჩვენ დარწმუნებული ვიყავით, რომ ეს არ იქნებოდა პრობლემა 1/16 E-Revo– სთვის.

თუმცა, რადიო კონტროლირებადი მანქანების უმეტესობა (რომელთა ადვილად განცალკევებაც შესაძლებელია) შეიძლება გამოყენებულ იქნას მის ნაცვლად და პროცესი იქნება ძალიან მსგავსი.

• ტონა ფირფიტა.

ფერი მაქსიმალურად უნდა ეწინააღმდეგებოდეს იატაკს. ჩვენს სატესტო გარემოში ჩვენ გამოვიყენეთ თეთრი ლენტი მუქ იატაკზე.

• 1x Arduino Mega 2560.

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

• 1x დიდი პურის დაფა.

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

• 1x TCRT5000 IR ანალოგური სენსორი (გამოიყენება შეჯახების თავიდან აცილების მიზნით).

ზუსტ ბრენდს/მოდელს არ აქვს მნიშვნელობა არის თუ არა Arduino თავსებადი და ზომავს მანძილს. მოძებნეთ საკვანძო სიტყვები, როგორიცაა "მანძილი", "დაბრკოლების" სენსორი. ტექნიკურად ციფრული სენსორი იმუშავებს კოდის მცირე ცვლილებებთან ერთად, მაგრამ ჩვენ ვიყენებთ ანალოგურს.

• 1x ან 2x Gravity: ანალოგური ნაცრისფერი მასშტაბის სენსორი v2

ერთი აუცილებლობაა ხაზის მიმდევართათვის. ზუსტ მოდელს არ აქვს მნიშვნელობა, სანამ ის იხილავს არეკლილი სინათლის ინტენსივობას და გამოსცემს ანალოგურ სიგნალს. მეორე "ოთახის" გამოვლენისთვის არ იყო ისე კარგად, როგორც მოსალოდნელი იყო და შეიძლება გამოტოვებული იყოს, ან ალტერნატივა, როგორიც არის RGB ფერის სენსორი, სავარაუდოდ უკეთესი ეფექტისთვის. ჩვენ ჯერ კიდევ უნდა გამოვცადოთ ეს.

• 1 x ESP 8266-01.

ESP 8266– ის ბევრი ვერსია არსებობს. ჩვენ გვაქვს მხოლოდ 8266-01– ის გამოცდილება და არ შეგვიძლია იმის გარანტია, რომ ESP კოდი იმუშავებს სხვა ვერსიით.

• 1 x ESP8266-01 Wi-Fi ფარი.

ტექნიკურად არჩევითია, მაგრამ თუ თქვენ არ გამოიყენებთ ამას, ყველაფერი რაც მოიცავს Wi-Fi მოდულს გაცილებით გართულდება. სახელმძღვანელო, თუმცა, ჩათვლის, რომ თქვენ გაქვთ ეს (თუ არა, იპოვეთ სახელმძღვანელო ინტერნეტში ESP-01– ის Arduino– ში სწორად მიერთებისათვის), რადგან ამის არასწორად გაკეთებამ შეიძლება და ალბათ დააზიანოს მოდული.

• ბატარეები თავად ავტომობილისთვის და ბატარეები დამატებითი ელექტრონიკის დასატენად.

ჩვენ გამოვიყენეთ წყვილი 2.2 AH სიმძლავრის, 7.4V Lipo ბატარეები პარალელურად ყველაფრის ენერგიის გასაძლიერებლად. თქვენ უნდა შეეძლოთ გამოიყენოთ ნებისმიერი ბატარეა, რომელსაც ჩვეულებრივ გამოიყენებდით თქვენი არჩეული მანქანისთვის. თუ თქვენ ხართ 5V– ზე ზემოთ, მაგრამ 20V– ზე დაბალი, სიმძლავრე უფრო მნიშვნელოვანია, ვიდრე ნომინალური ძაბვა.

• ბევრი ჯუმბერის კაბელი.

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

• დაბოლოს, ყველაფრის დასამაგრებლად დაგჭირდებათ არდუინოს, სენსორების, პურის დაფის (ების) და Wi-Fi მოდულის დაყენება თქვენი არჩევანის ავტომობილზე. თქვენი შედეგი განსხვავდება იმის მიხედვით, თუ რას იყენებთ როგორც საფუძველი და რა მასალები არსებობს.

ჩვენ გამოვიყენეთ:

• zip კავშირები.

• რაღაც სუპერ წებო.

• ქაღალდის/ფისოვანი მილის მცირე ნაჭრები გვქონდა შესაფერისი დიამეტრით.

• ძველი მასონური ზურგჩანთა სურათის ჩარჩოდან, დაჭრილი ზომაზე.

• ცოტა მეტი წებოვანი ლენტი.

• თქვენს მიერ არჩეულ რადიო კონტროლირებად მანქანაზე მუშაობისთვის საჭირო ნებისმიერი ინსტრუმენტი.

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

პროგრამული უზრუნველყოფა:

• კვანძი-წითელი

მონაცემთა შეგროვების მნიშვნელოვანი ნაწილი.

• MQTT სერვერი.

შუა კაცი ჩვენს მანქანასა და კვანძ-წითელს შორის. თავდაპირველად, ტესტირებისთვის, ჩვენ გამოვიყენეთ test.mosquitto.org

მოგვიანებით ჩვენ გამოვიყენეთ:

• CloudMQTT.com

ეს იყო ბევრად უფრო საიმედო, რაც უფრო მეტად შეიქმნა, ვიდრე ოდნავ უფრო რთული დაყენება.

• WampServer.

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

ნაბიჯი 2: ელექტრო დიაგრამა

ელექტრო დიაგრამა
ელექტრო დიაგრამა

ნაბიჯი 3: ფიზიკური კონსტრუქცია

ფიზიკური კონსტრუქცია
ფიზიკური კონსტრუქცია
ფიზიკური კონსტრუქცია
ფიზიკური კონსტრუქცია
ფიზიკური კონსტრუქცია
ფიზიკური კონსტრუქცია

ჩვენს გადაწყვეტას აქვს პირდაპირი მიდგომა ფიზიკური შეკრებისადმი.

ორიგინალური მიმღები და მისი წყალგაუმტარი გარსი ამოღებულია RC მანქანიდან, რადგან ეს არ არის საჭირო.

ჩვენ აღმოვაჩინეთ, რომ წინა ბორბლებს შორის იყო ერთი შესაფერისი ადგილი ჩვენი ხაზის შემდგომი სენსორისთვის, ასე რომ, ჩვენ დავიჭირეთ იგი წინა სრიალის ფირფიტის ზემოთ ზიპითის მარყუჟით.

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

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

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

დაბოლოს, ჩვენ გვაქვს სენსორი "ოთახების" გამოვლენის მიზნით, რომელიც შეჩერებულია შეჩერების კომპონენტებზე ერთ -ერთი უკანა ბორბლით. ექსპლუატაციის დროს, ეს უნდა იყოს დაშორებული იმ ხაზის აღნიშვნას, რომელსაც მანქანა იყენებს ნავიგაციისთვის.

ნაბიჯი 4: ESP8266 მოდული

ESP8266 მოდული
ESP8266 მოდული
ESP8266 მოდული
ESP8266 მოდული

WiFi მოდული, ESP8266, მოითხოვს ორი განსხვავებული პინის დაყენებას. ერთი კონფიგურაცია უნდა იქნას გამოყენებული მოდულის ახალი პროგრამით განათების და Arduino Mega 2560 პროგრამისტის გამოყენებისას. სხვა დაყენება არის მოდულისთვის, როდესაც ის გამოიყენება და აგზავნის ინფორმაციას MQTT ბროკერზე.

Arduino IDE- ის გამოყენებით ESP8266 მოდულში კოდის ასატვირთად დაგჭირდებათ დაფის მენეჯერის დაყენება და დაფების დამატებითი მენეჯერი

დაფის მენეჯერის ქვეშ დააინსტალირეთ esp8266 დაფის მენეჯერი. ის ადვილად მოიძებნება "esp" - ის ძებნით. მნიშვნელოვანია, რომ დააინსტალიროთ ვერსია 2.5.0, არა ძველი, არც ახალი.

დამატებითი დაფების მენეჯერის URL- ების პარამეტრებში, დააკოპირეთ ამ ხაზში:

arduino.esp8266.com/stable/package_esp8266c…

იმისათვის, რომ ESP8266 მოდულში რაიმე ატვირთოთ, თქვენ უნდა გამოიყენოთ კონკრეტული პინის დაყენება, ასე რომ თქვენ შეგიძლიათ აანთოთ მოდული. ეს უნდა გაკეთდეს ყოველ ჯერზე, როდესაც გსურთ შეცვალოთ მოდულში გაშვებული მიმდინარე კოდი. ნუ დაგავიწყდებათ, რომ შეარჩიოთ სწორი ESP8266 მოდული დაფის მენეჯერისგან მოდულის განათებამდე. ამ პროექტში ჩვენ ავირჩიეთ ზოგადი ESP8266 დაფა. მოდულის მოციმციმე პინის დაყენება ნაპოვნია ამ სურათის პირველ სურათზე.

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

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

ნაბიჯი 5: არდუინო

WiFi მოდულის კონფიგურაციის შემდეგ, ჩვენ ვუყურებთ პროგრამას, რომელიც გამოყენებული იქნება RC მანქანაზე ძრავისა და სერვისის გასაკონტროლებლად. მანქანა აპირებს რეაგირებას ცენტრალური სენსორის ნაცრისფერი მასშტაბის ინფორმაციის მიხედვით, რომელიც ასევე ცნობილია როგორც "ხაზის დეტექტორი" ამ პროექტში. აშკარად ის მიზნად ისახავს ხაზის დეტექტორისგან ინფორმაციის დაცვას წინასწარ განსაზღვრულ მნიშვნელობასთან, რაც უტოლდება სინათლისა და სიბნელის ან ამ პროექტში, თეთრსა და შავს შორის ცვლილებისას ჩაწერილ ინფორმაციას. ასე რომ, თუ მნიშვნელობა ძალიან განსხვავდება ერთმანეთისგან, სერვოს შესაბამისი გამომუშავება მანქანას მიაბრუნებს ხაზის წინასწარ განსაზღვრულ მნიშვნელობასთან.

პროგრამას აქვს ორი ღილაკი, რომელიც ფუნქციონირებს როგორც RC მანქანის დაწყების და გაჩერების ღილაკი. ტექნიკურად "გაჩერების" ღილაკი არის "შეიარაღების" ღილაკი, რომელიც თვალსაზრისით უდრის ძრავაზე გაგზავნილ PWM მნიშვნელობას, რაც იწვევს RC მანქანის გაჩერებას. დაწყების ღილაკი აგზავნის PWM მნიშვნელობას, რომელიც უტოლდება RC მანქანას ძლივს წინ მიიწევს, რადგან ის ძალიან სწრაფად იმოძრავებს, თუ ძალიან ბევრ იმპულსს მოიპოვებს.

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

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

დაბოლოს, პროგრამა ქმნის სენსორებისგან ინფორმაციის ხაზს WiFi მოდულის წასაკითხად და შემდგომ გაგზავნის MQTT ბროკერზე. ინფორმაციის ხაზი იქმნება როგორც სტრიქონი და იწერება შესაბამის სერიალზე, რომლის WiFi მოდულიც არის დაკავშირებული. მნიშვნელოვანია, რომ სერიალზე ჩაწერა ხდება მხოლოდ იმდენად ხშირად, რამდენადაც WiFi მოდულს შეუძლია შემომავალი შეტყობინების წაკითხვა, მაგრამ გახსოვდეთ, რომ არ გამოიყენოთ რაიმე შეფერხება ამ კოდში, რადგან ეს ხელს შეუშლის RC მანქანის უნარს დაიცვას ხაზი. ამის ნაცვლად გამოიყენეთ "millis", რადგან ის საშუალებას მისცემს პროგრამას შეუფერხებლად იმუშაოს, მაგრამ მას შემდეგ რაც Arduino- ს ჩართვიდან გავიდა განსაზღვრული ოდენობის მილი, ის წერს სერიალს შეტყობინებას კოდის დაბლოკვის გარეშე, ისევე როგორც დაგვიანებით.

Arduino Mega 2560 კოდი:

ნაბიჯი 6: MySQL მონაცემთა ბაზა

WampServer არის Windows– ის ვებ განვითარების გარემო, რომელიც საშუალებას გვაძლევს შევქმნათ პროგრამები PHP– ით და MySQL მონაცემთა ბაზით. PhpMyAdmin საშუალებას გვაძლევს ადვილად მართოთ ჩვენი მონაცემთა ბაზები.

დასაწყებად ეწვიეთ:

ამ პროექტში ჩვენ ვიყენებთ 3.17 x64 ბიტის ვერსიას Windows- ისთვის. ინსტალაციის შემდეგ დარწმუნდით, რომ ყველა სერვისი მუშაობს, რაც იმას ნიშნავს, რომ პატარა ხატი მწვანე ხდება წითელი ან ნარინჯისფერი ნაცვლად. თუ ხატი მწვანეა, მაშინ შეგიძლიათ შეხვიდეთ PhpMyAdmin– ზე თქვენი MySQL მონაცემთა ბაზის სამართავად.

შედით MySQL– ში PhpMyAdmin– ის გამოყენებით და შექმენით ახალი მონაცემთა ბაზა. დაასახელეთ ის რაიმე სათანადო, რაც გახსოვთ, ამ პროექტში მას ერქვა "line_follow_log". მონაცემთა ბაზის შექმნის შემდეგ, თქვენ უნდა შექმნათ ცხრილი მონაცემთა ბაზაში. დარწმუნდით, რომ სვეტების რაოდენობა შეესაბამება. პროექტში ჩვენ ვიყენებთ 4 სვეტს. ერთი სვეტი არის დროის ნიშნულისთვის და ბოლო სამი გამოიყენება ავტომობილის მონაცემების შესანახად. გამოიყენეთ სათანადო მონაცემთა ტიპი თითოეული სვეტისთვის. ჩვენ გამოვიყენეთ "გრძელი ტექსტი" დროის ნიშნულის სვეტისთვის და "საშუალო ტექსტი" დანარჩენისთვის.

ეს უნდა იყოს ყველაფერი რაც თქვენ უნდა გააკეთოთ PhpMyAdmin და MySQL. დაიმახსოვრე შენი მონაცემთა ბაზა და ცხრილი Node-Red- ის შესახებ განყოფილებისთვის.

ნაბიჯი 7: კვანძი-წითელი

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

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

უპირველეს ყოვლისა. ჩვენ გვჭირდება შემდეგი პალეტები.

Node-red-contrib-mqtt-broker: ეს არის კავშირი ჩვენს MQTT ბროკერთან.

კვანძი-წითელი დაფა: ჩვენი დაფა, საჭიროა ვიზუალურად წარმოადგინოს შეგროვებული მონაცემები.

Node-red-node-mysql: ჩვენი კავშირი SQL მონაცემთა ბაზასთან.

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

ადრე, ჩვენ გვქონდა პრობლემები ჩვენი MQTT სერვერის არჩევით კვებასთან/გათიშვასთან, როგორც ჩანს შემთხვევით, რამაც ნებისმიერი ცვლილების განხორციელება იმედგაცრუებული მცდელობა გახადა, რადგან გაურკვეველი იყო ცვლილებები იყო მომგებიანი, თუ არა მაშინ, როდესაც ჩვენ ვერ ვხედავდით შედეგს. ასე რომ, ღილაკი "სერვერი მოკვდა?" ინექციას 'არა' შემდეგი ბლოკი ინექციას უკეთებს მას ჩვენს MQTT სერვერზე. თუ ის არ არის მკვდარი, "არა" გამოჩნდება ხარვეზის გამოსწორების ფანჯარაში. ეს კეთდება არა მხოლოდ შესამოწმებლად, არამედ აიძულა Node-red სცადოს MQTT სერვერთან ხელახლა დაკავშირება.

"სატესტო სტრიქონი" აგზავნის კოსტუმის სტრიქონს MQTT ბროკერზე. ჩვენ ეს ფორმატი გავაფორმეთ იმის მსგავსი, რასაც მივიღებდით არდუინოსგან. ეს უფრო ადვილი იქნებოდა ქსელის კონფიგურაციისთვის, რომელიც გაშიფრავს შეტყობინებებს, პროექტის გაშვების გარეშე, მონაცემების შეგროვების გარეშე.

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

დაკავშირებული გადამრთველების დიდი ქსელი ფუნქციური კვანძის შემდეგ, თუ იქ ხდება ნამდვილი „მაგია“.

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

მაგალითი, "დაბრკოლება", ისევე როგორც ყველა სხვა ორობითი არჩევანია, ან გასაგებია მართვა, ან არა. ასე რომ, ის მიიღებს 0 -ს, ან 1. A 0 გაიგზავნება "წმინდა" ფილიალში, 1 ეგზავნება "დაბრკოლებულ" ფილიალს. "გასუფთავება", "დაბრკოლება" გადამრთველები, თუ გააქტიურებულია, გამოუშვებს რაღაც კონკრეტულად, გასუფთავებას, ან დაბრკოლებას, შესაბამისად. მწვანე შემდგომი ბლოკები გამოქვეყნდება გამართვის ფანჯარაში, ლურჯი ჩაწერს ჩვენს დაფას.

"სტატუსის" და "მდებარეობის" ფილიალები ზუსტად ერთნაირად მუშაობს.

ნაბიჯი 8: MQTT ბროკერი

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

ამ პროექტისთვის ჩვენ შევქმენით MQTT ბროკერი CloudMQTT სერვისის გამოყენებით, უფასო ხელმოწერით "საყვარელი კატა" ვერსიისთვის. მას აქვს შეზღუდვები, მაგრამ ჩვენ არ აღემატება ამ პროექტის მონაწილეებს. WiFi მოდულს შეუძლია დაუკავშირდეს ბროკერს და ბროკერს და შემდეგ გაგზავნოს შეტყობინებები შესაბამის დანიშნულების კლიენტთან. ამ შემთხვევაში კლიენტი არის ჩვენი Node-Red. CloudMQTT სერვისი ადგენს მომხმარებლის სახელსა და პაროლს მათი სერვერისთვის, ასე რომ ჩვენ გარანტირებული გვაქვს უმაღლესი უსაფრთხოება. ძირითადად ნიშნავს იმას, რომ მხოლოდ მომხმარებლის სახელისა და პაროლის მქონე პირებს შეუძლიათ წვდომა ამ კონკრეტულ CloudMQTT სერვისზე. მომხმარებლის სახელი და პაროლი გადამწყვეტია ESP8266 კოდზე კავშირის დაყენების დროს, ისევე როგორც Node-Red.

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

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

ნაბიჯი 9: ელექტრონული ჰობი

დაწყებამდე ჩვენ ვიცოდით წარსული პროექტიდან, რომ საჭის მართვის სერვისი შეიძლება კონტროლდებოდეს Arduino– დან PWM სიგნალით, რომელსაც აქვს მსგავსი გაყვანილობა და სხვადასხვა არხებში ჩართვა ერთსა და იმავე საფონდო რადიო მიმღებზე, ჩვენ ვივარაუდეთ ელექტრონული სიჩქარის კონტროლი, (ESC from ახლა უკვე), რომელიც აკონტროლებს ძრავას, ანალოგიურად შეიძლება კონტროლდებოდეს PWM– ით Arduino– დან.

ამ თეორიის შესამოწმებლად, ჩვენ ვქმნით პატარა არდუინოს ესკიზს. ესკიზი კითხულობს პოტენომეტრის ანალოგურ შეყვანას, აცვლის მნიშვნელობას 0, 1024 -დან 0, 255 -მდე და გამოაქვს მიღებული მნიშვნელობა PWM პინზე, analogWrite- ის გამოყენებით, ხოლო R/C მანქანა პატარა ყუთზე იყო და ჰქონდა ბორბლები ამოღებულია.

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

როგორც ჩანს, ESC– ს არ მოსწონდა გარკვეული ბარიერის ქვემოთ მოცემული მნიშვნელობები, ამ შემთხვევაში 128. მან დაინახა სიგნალი 191 როგორც ნეიტრალური გასროლი, ხოლო 255 იყო მაქსიმალური.

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

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

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

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

რა განსხვავდებოდა პოტენომეტრის, ან საფონდო გადამცემის და მიმღების დაყენების და ვერსიისგან, რომელიც უზრუნველყოფდა ფიქსირებულ მნიშვნელობებს?

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

"დაარეგულირეთ გასასვლელი მორთვა", ეს არის ზუსტად ის, რაც ნიშნავს. ESC ელოდება ნეიტრალურ სიგნალს, როდესაც ის ჩართულია, სანამ არ მიიღებს არაფერს. ჩვეულებრივ, გადამცემი ყოველთვის ნეიტრალურ მდგომარეობაში იქნება, როდესაც ESC ჩართულია და იქიდან სიხარულით იმოძრავებს. თუ ეს ასე არ არის, ის ალბათ ერთხელ მაინც ნეიტრალურს დაუბრუნდება იმ დროისთვის, როდესაც მოდელი მყარად დგას მიწაზე და ოპერატორი თავს იგრძნობს რბოლისთვის მზადყოფნაში.

პოტენციომეტრის გამოყენებისას, ჩვენ ვცურავდით დიაპაზონს და შემდეგ ის იწყებდა მუშაობას. ის უბრალოდ შეიარაღებული იყო, როდესაც პოტენომეტრმა გადალახა ნეიტრალური პოზიცია და შემდეგ იმუშავა.

ქვედა დიაპაზონი, თუმცა მაინც არ მოეწონა ESC. ეს აღმოჩნდება PWM მოვალეობების ციკლის პროდუქტი.

როგორც დიზაინით, ისე ტექნიკური მიზეზის გამო, როგორც საჭე, ასევე ESC იგნორირებას უკეთებს სიგნალებს 50% –ზე ნაკლებ სამუშაო ციკლზე. ეს შეიძლება იყოს იმ შემთხვევაში, თუ მიმღები/გადამცემი წყვეტს მუშაობას ან ძალას იკლებს, მოდელი დაუბრუნდება ნეიტრალურ მდგომარეობას და არ აიღებს მანძილს სრული საპირისპირო დროსელით. თანაბრად, სერვო მხოლოდ 180 გრადუსით ბრუნავს და მას არ სჭირდება სრული დიაპაზონი.

ამ ახალი ცოდნით ხელში შეიქმნა არდუინოს ახალი ესკიზი. საწყისი ვერსია იღებს სერიულ მონიტორში შესულ სტრიქონებს, გარდაქმნის მას მთელ რიცხვზე და გადააქვს PWM პინზე, სერვო ბიბლიოთეკის გამოყენებით და ჩაწერეთ ()*. სერიულ მონიტორში ახალი მნიშვნელობის შეყვანის შემთხვევაში ჩაწერის () მნიშვნელობა განახლდება.

ტესტირების დროს Traxxas ESC საფონდო შეიცვალა Mtroniks G2 Micro– ით, თუმცა ისინი ერთნაირად უნდა მუშაობდნენ, თუმცა ზუსტი მნიშვნელობები შეიძლება ოდნავ განსხვავებული იყოს.

ეს ბიბლიოთეკა ESC- ს განიხილავს როგორც სერვოს, როგორც ჩანს, ეს კარგია. Servo.h ბიბლიოთეკის ჩაწერის () ფუნქცია 0 -დან 180 -მდე მიდის, მოსალოდნელი შეიარაღების სიგნალი სავარაუდოდ შუაზე იქნება.

G2 მიკრო იარაღი ჩაწერეთ () 90 – ის სიახლოვეს, თუმცა ძნელი იყო მისი დაზუსტება, როგორც ჩანს შეიარაღებული იყო „გახსენება“.

Traxxas VXL-s3, სავარაუდოდ, შეიარაღდება 91 (ჩაწერის) მნიშვნელობით.

შეიარაღების სიგნალის შემდეგ, ESC– მ სიხარულით მიიღო PWM სიგნალები, მიუხედავად Arduino ფუნქციისა, რომელიც გამოიმუშავებს მათ და შესაბამისად აკონტროლებს ძრავას.

ფუნქციებზე საუბარი; სტანდარტული analogWrite (), ასევე ჩაწერა () და writeMicroseconds () Servo.h ბიბლიოთეკიდან ყველა შეიძლება გამოყენებულ იქნას ურთიერთშემცვლელობით, უბრალოდ დაიმახსოვრეთ რა რას აკეთებს და საბოლოოდ არაფერს გარდა მოვალეობის ციკლისა. WriteMicroseconds () შეიძლება გამოყენებულ იქნას, თუ საჭიროა უფრო მეტი მარცვლოვანება, უბრალოდ გაითვალისწინეთ, რომ აქ დიაპაზონი არის 1000 -დან 2000 წლამდე, შეიარაღებით ან "ნეიტრალურით" სავარაუდოდ 1500 -ით. სტანდარტული analogWrite- ით () გამოსაყენებელი დიაპაზონი სავარაუდოდ იყოს 128 -დან 255 -მდე, დაახლოებით 191 ნეიტრალურია.

გირჩევთ: