Სარჩევი:

ჟესტით კონტროლირებული როვერი აქსელერომეტრისა და RF გადამცემი მიმღების წყვილის გამოყენებით: 4 ნაბიჯი
ჟესტით კონტროლირებული როვერი აქსელერომეტრისა და RF გადამცემი მიმღების წყვილის გამოყენებით: 4 ნაბიჯი

ვიდეო: ჟესტით კონტროლირებული როვერი აქსელერომეტრისა და RF გადამცემი მიმღების წყვილის გამოყენებით: 4 ნაბიჯი

ვიდეო: ჟესტით კონტროლირებული როვერი აქსელერომეტრისა და RF გადამცემი მიმღების წყვილის გამოყენებით: 4 ნაბიჯი
ვიდეო: ეკჰარტ ტოლე - "აწმყოს ძალა" - აუდიო წიგნი - Audible Read Along 2024, ივლისი
Anonim
ჟესტით კონტროლირებული როვერი აქსელერომეტრისა და RF გადამცემ-მიმღების წყვილის გამოყენებით
ჟესტით კონტროლირებული როვერი აქსელერომეტრისა და RF გადამცემ-მიმღების წყვილის გამოყენებით

Ჰეი მანდ, როვერის აშენება, რომლის მართვაც ხელის უბრალო ჟესტებით შეგიძლიათ, მაგრამ ვერასდროს მოიპოვებთ გამბედაობას, ჩაერთოთ სურათის დამუშავების სირთულეებში და ვებკამერა თქვენს მიკროკონტროლერთან დააკავშიროთ, რომ აღარაფერი ვთქვათ ცუდი ბრძოლის დასაძლევად ცუდი დიაპაზონისა და ხაზის დასაძლევად. მხედველობის საკითხები? ნუ გეშინია … რადგან ადვილი გამოსავალი არსებობს! აჰა, როგორც მე წარმოგიდგენთ ძლევამოსილ აქსელერომეტრს! *ბა დუმ ცსს*

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

თქვენ უბრალოდ უნდა გახსოვდეთ ეს ახლა: ამაჩქარებელი არის გიზმო (ხშირად გიროსკოპთან ერთად), რომელიც კარს უხსნის ყველა იმ მოძრაობის სენსორულ თამაშს, რომელსაც ჩვენ ვთამაშობთ ჩვენს სმარტფონებზე; მაგალითად, რბოლების თამაში, სადაც ჩვენ ვატარებთ მანქანას უბრალოდ ჩვენი მოწყობილობების ორივე მიმართულებით დახრით. და, ჩვენ შეგვიძლია მიბაძოთ ამ ეფექტს ამაჩქარებლის (რამდენიმე დამხმარე საშუალებით, რა თქმა უნდა) ხელთათმანზე დაჭერით. ჩვენ უბრალოდ ვიყენებთ ჩვენს ჯადოსნურ ხელთათმანებს და ვიხრით ხელებს მარცხნივ ან მარჯვნივ, წინ ან უკან და ვხედავთ, რომ ჩვენი როვერები ცეკვავენ ჩვენს ჰანგებზე. ყველაფერი რაც ჩვენ უნდა გავაკეთოთ არის აქსელერომეტრის მაჩვენებლების ციფრულ სიგნალებად გადათარგმნა, რომ როვერზე მყოფ ძრავებს შეუძლიათ ინტერპრეტაცია მოახდინონ და შეიმუშაონ მექანიზმი ამ სიგნალების გადასატანად როვერზე. ამის მისაღწევად, ჩვენ მოვუწოდებთ არდუინოს და მის თანაშემწეებს დღევანდელი ექსპერიმენტისთვის, RF გადამცემი-მიმღები წყვილი, რომელიც მუშაობს 434 მჰც სიხშირით და ამით იძლევა ღია სივრცეში დაახლოებით 100-150 მ დიაპაზონს, რაც ასევე გვიშველის მხედველობის საკითხები.

საკმაოდ მძლავრი გარჩევა, არა? ჩავყვინთოთ…

ნაბიჯი 1: შეაგროვეთ თქვენი მარაგი

შეაგროვეთ თქვენი მარაგი
შეაგროვეთ თქვენი მარაგი
შეაგროვეთ თქვენი მარაგი
შეაგროვეთ თქვენი მარაგი
შეაგროვეთ თქვენი მარაგი
შეაგროვეთ თქვენი მარაგი
შეაგროვეთ თქვენი მარაგი
შეაგროვეთ თქვენი მარაგი
• არდუინო ნანო x1
• ამაჩქარებელი (ADXL335) x1
• 5V DC ძრავა + ბორბლები x2 თითოეული
• ძროხის საჭე* x1
• L293D Motor Driver + 16 პინიანი IC ბუდე x1 თითოეული
• 434 MHz RF გადამცემი x1
• 434 MHz RF მიმღები x1
• HT-12E Encoder IC + 18 პინიანი IC სოკეტი x1 თითოეული
• HT-12D დეკოდირების IC + 18 პინიანი IC სოკეტი x1 თითოეული
• LM7805 ძაბვის რეგულატორი x1
• ღილაკის ღილაკის გადამრთველი x2
• წითელი LED + 330O რეზისტორი x2 თითოეული
• ყვითელი LED + 330O რეზისტორი x1 თითოეული
• მწვანე LED + 330O რეზისტორი (სურვილისამებრ) x4 თითოეული
• 51kO და 1MO რეზისტორები x1 თითოეული
• 10µF რადიალური კონდენსატორები x2
ბატარეები, ბატარეის კონექტორები, USB კაბელი, Jumper Wires, ქალი სათაურები, 2 პინიანი ხრახნიანი ტერმინალები, PCB, Chasis და თქვენი ჩვეულებრივი შედუღების აქსესუარები

თუ გაინტერესებთ, რატომ ვიყენებთ მსხვილფეხა რქოსან ბორბალს, საქმე იმაშია, რომ RF გადამცემს და მიმღების მოდულებს აქვთ მხოლოდ 4 მონაცემთა ქინძი, რაც იმას ნიშნავს, რომ ჩვენ შეგვიძლია მხოლოდ 2 ძრავის მართვა და, შესაბამისად, საქონლის ბორბლის გამოყენება სტრუქტურის მხარდაჭერა. თუმცა, თუ ფიქრობთ, რომ თქვენი როვერი უფრო გრილად გამოიყურება ოთხი ბორბლით, არ ინერვიულოთ, ირგვლივ სამუშაოა! ამ შემთხვევაში, უბრალოდ გადააცილეთ მსხვილფეხა რქოსანი ბორბალი სიიდან და დაამატეთ კიდევ ერთი წყვილი 5V DC ძრავა, რომელსაც თან ახლავს თითოეული ბორბალი და დააკვირდით იმ მარტივ გარჩევას, რომელიც განხილულია მე –3 ნაბიჯის ბოლოსკენ.

დაბოლოს, მამაცებისთვის, არსებობს შესაძლებლობა დიზაინში კიდევ ერთი უმნიშვნელო მოდიფიკაციისთვის, რაც გულისხმობს საკუთარი Arduino- ს ინჟინერიას. გადადით ბონუსების განყოფილებაში შემდეგ ეტაპზე და თავად დარწმუნდებით. თქვენ ასევე დაგჭირდებათ რამდენიმე დამატებითი მარაგი: ATmega328P, 28pin IC სოკეტი, 16 MHz ბროლის ოსცილატორი, ორი 22pF კერამიკული ქუდი, კიდევ 7805 ძაბვის მარეგულირებელი, კიდევ ორი 10μF რადიალური ქუდი და 10kΩ, 680Ω, 330Ω რეზისტორები და დიახ, მინუს არდუინო!

ნაბიჯი 2: შეაერთეთ გადამცემი

გაააქტიურეთ გადამცემი
გაააქტიურეთ გადამცემი
გაააქტიურეთ გადამცემი
გაააქტიურეთ გადამცემი
გაააქტიურეთ გადამცემი
გაააქტიურეთ გადამცემი
გაააქტიურეთ გადამცემი
გაააქტიურეთ გადამცემი

ჩვენ დავყოფთ პროექტს ორ შემადგენელ ნაწილად: გადამცემი და მიმღების სქემები. გადამცემი შედგება ამაჩქარებლის, არდუინოს და RF გადამცემი მოდულისგან, HT-12E კოდირების IC- თან ერთად, ყველა მავთულხლართულია თანდართული სქემის მიხედვით.

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

RF გადამცემს აქვს მხოლოდ ერთი სამუშაო: გადასცეს "სერიული" მონაცემები, რომელიც ხელმისაწვდომია პინ 3-ში ანტენადან პინ 1-ში. ეს მხარს უჭერს HT-12E- ს გამოყენებას, 12 ბიტიანი პარალელური სერიული მონაცემების კოდირებას, რომელიც აგროვებს Arduino– დან პარალელური მონაცემების 4 ბიტამდე AD8– დან AD11 ხაზებამდე, რითაც ჩვენ მოგვცემს საშუალებას გამოვყოთ ადგილი 24 = 16 – მდე სხვადასხვა I/O კომბინაციებისთვის, განსხვავებით RF გადამცემზე მონაცემთა ერთი პინისგან. დანარჩენი 8 ბიტი, რომელიც ამოღებულია A0– დან A7 სტრიქონიდან კოდირზე, წარმოადგენს მისამართის ბაიტს, რაც აადვილებს RF გადამცემის დაწყვილებას შესაბამის RF მიმღებთან. 12 ბიტი შემდეგ იკრიბება და სერიალიზდება და გადადის RF გადამცემის მონაცემთა პინზე, რაც, თავის მხრივ, ASK- მონაცემებს ამუშავებს 434 მჰც სიდიდის გადამზიდავ ტალღაზე და ანტენის გავლით ასხამს მას 1 პინზე.

კონცეპტუალურად, ნებისმიერი RF მიმღები, რომელიც უსმენს 434 MHz– ს, უნდა შეეძლოს ამ მონაცემების ჩაჭრა, დემოდულაცია და დეკოდირება. თუმცა, მისამართების ხაზები HT-12E- ზე და HT-12D კოლეგაზე (12 ბიტიანი სერიული პარალელური მონაცემთა დეკოდირება), გვაძლევს შესაძლებლობას RF გადამცემი მიმღების წყვილი უნიკალური გავხადოთ მონაცემების მარშრუტით მხოლოდ მიმღები, რითაც ზღუდავს კომუნიკაციას ყველა დანარჩენთან. ყველაფერი რაც ჩვენგან არის საჭირო არის მისამართების ხაზების კონფიგურაცია ერთნაირად ორივე ფრონტზე. მაგალითად, ვინაიდან ჩვენ დავამყარეთ მისამართის ყველა ხაზი ჩვენი HT-12E– სთვის, იგივე უნდა გავაკეთოთ HT-12D– სთვის მიმღების ბოლოს, წინააღმდეგ შემთხვევაში როვერს არ შეუძლია სიგნალების მიღება. ამ გზით, ჩვენ ასევე შეგვიძლია გავაკონტროლოთ მრავალი როვერი ერთი გადამცემი სქემით, თითოეულ მიმღებზე HT-12D- ებზე მისამართების ხაზების იდენტური კონფიგურაციით. ან, ჩვენ შეგვიძლია ჩავიცვათ ორი ხელთათმანი, თითოეულს მიმაგრებული გადამცემი წრე, რომელიც შეიცავს მკაფიო მისამართის ხაზის კონფიგურაციას (ვთქვათ, ერთი ყველა მისამართის ხაზით დამიწებული და მეორე ყველა მაღლა გამართული, ან ერთი ერთი ხაზით დამიწებული, ხოლო დანარჩენი შვიდი მაღალი და მეორე ორი ხაზით დასაბუთებული, ხოლო დანარჩენი ექვსი მაღლა დგას, ან მისი სხვა კომბინაცია) და თითოეული მართვის მრავალრიცხოვანი იდენტურად კონფიგურირებული როვერები. ითამაშეთ მაესტროს ანდროიდ სიმფონიაზე!

წრის შეკრებისას ერთი მნიშვნელოვანი რამ უნდა აღინიშნოს არის როსკის მნიშვნელობა. HT-12E– ს აქვს შიდა ოსცილატორის წრე 15 და 16 ქინძისთავებს შორის, რაც ჩართულია ამ ქინძისთავებს შორის რეზისტორის, რომელსაც ეწოდება როსკი. როსკისთვის შერჩეული მნიშვნელობა რეალურად განსაზღვრავს ოსცილატორის სიხშირეს, რომელიც შეიძლება განსხვავდებოდეს მიწოდების ძაბვის მიხედვით. Rosc– ის შესაბამისი მნიშვნელობის შერჩევა გადამწყვეტია HT-12E– ს ფუნქციონირებისათვის! იდეალურ შემთხვევაში, HT-12E– ს ოსცილატორის სიხშირე უნდა იყოს 1/50 ჯერ HT-12D კოლეგასთან შედარებით. ამიტომ, ვინაიდან ჩვენ ვმუშაობთ 5V– ზე, ჩვენ შევარჩიეთ 1MΩ და 51kΩ რეზისტორები, როგორც Rosc შესაბამისად HT-12E და HT-12D სქემებისთვის. თუ თქვენ გეგმავთ სქემების მუშაობას სხვადასხვა მიწოდების ძაბვაზე, იხილეთ გრაფიკი "Oscillator Frequency vs Supply Voltage" თანდართული HT-12E მონაცემთა ცხრილის მე -11 გვერდზე, ზუსტი ოსცილატორის სიხშირისა და გამოსაყენებელი რეზისტორის დასადგენად.

ასევე, როგორც გვერდითი შენიშვნა, ჩვენ აქ გამოვიყენებთ ქალთა სათაურებს (მსგავს მიზანს ემსახურება IC სოკეტები) ამაჩქარებლის, RF გადამცემის და არდუინოს ჩართვაში ჩართვის ნაცვლად PCB– ის პირდაპირ შედუღების ნაცვლად. განზრახვა არის მცირე კომპონენტის მრავალჯერადი გამოყენების შესაძლებლობა. თქვით, უკვე დიდი ხანია რაც თქვენ შექმენით თქვენი ჟესტით კონტროლირებადი როვერი და ის უბრალოდ იჯდა იქ, ნახევრად დაფარული მტვერით, თქვენი თასის თაროზე და თქვენ წააწყდებით სხვა დიდ სასწავლო ინსტრუქციას, რომელიც ამაღლებს ამაჩქარებლის ეფექტურობას. Ასე რომ, რას აკეთებ? თქვენ უბრალოდ აძევებთ მას თქვენი როვერიდან და უბიძგებთ მას თქვენს ახალ წრეში. არ არის საჭირო "ამორძალების" გამოძახება, რომ მიიღოთ ახალი:-p

ბონუსი: გაანებეთ თავი არდუინოს და მაინც არა

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

ჩვენი მიზანი აქ არის არდუინო (არდუინოს ტვინი, ფაქტობრივად; დიახ, მე ვსაუბრობ ATmega IC– ზე!) გუნდის მუდმივი წევრი. ATmega იქნება დაპროგრამებული, რომ განახორციელოს ერთი ესკიზი უსასრულოდ ისე, რომ ის იყოს წრის მუდმივი ნაწილი, ისევე როგორც HT-12E-უბრალო IC, უბრალოდ იჯდეს იქ და აკეთებს იმას, რაც უნდა. ასე არ არის რაიმე რეალური ჩამონტაჟებული სისტემა?

ყოველ შემთხვევაში, იმისათვის, რომ გააგრძელოთ ეს განახლება, უბრალოდ შეცვალეთ წრე მეორე თანდართული სქემის მიხედვით. აქ, ჩვენ უბრალოდ ვცვლით Arduino– ს მდედრულ სათაურებს AT სომეხის IC სოკეტით, ვამატებთ 10K გამწევ რეზისტორს IC– ს გადატვირთვის პინზე (პინ 1) და ვატუმბებთ გარე საათით 9 და 10 ქინძისთავებს შორის სამწუხაროდ, თუ Arduino– ს გავანადგურებთ, ჩვენ ასევე გავუშვებთ მის ჩაშენებულ ძაბვის რეგულატორებს; ასე რომ, ჩვენ ასევე უნდა გავიმეოროთ LM7805 წრე, რომელიც აქაც მიმღებისთვის ვიყენეთ. გარდა ამისა, ჩვენ ასევე ვიყენებთ ძაბვის გამყოფს, რომ დავხატოთ 3.3V, რომელიც საჭიროა ამაჩქარებლის შესაქმნელად.

ახლა, ერთადერთი სხვა მონაკვეთი აქ არის პროგრამირება ATmega თავისი საქმის გასაკეთებლად. თქვენ უნდა დაელოდოთ მას მე –4 საფეხურამდე. ასე რომ, იყავით თვალყური…

ნაბიჯი 3: და, მიმღები

და, მიმღები
და, მიმღები
და, მიმღები
და, მიმღები
და, მიმღები
და, მიმღები
და, მიმღები
და, მიმღები

მიმღები შედგება RF მიმღების მოდულისგან, HT-12D დეკოდერის IC- სთან ერთად და DC ძრავის წყვილი, რომელიც მუშაობს L293D ძრავის დრაივერის დახმარებით.

RF მიმღების ერთადერთი ამოცანაა გადამზიდავი ტალღის დემოდულაცია (მიღებულია მისი ანტენის საშუალებით პინ 1-ში) და მიღებული "სერიული" მონაცემების გადაცემა პინ 7-ში, საიდანაც იგი აიყვანება HT-12D დესერიალიზაციისთვის. ახლა, ვივარაუდოთ, რომ მისამართების ხაზები (A0– დან A7– მდე) HT-12D– ზე კონფიგურირებულია მისი HT-12E კოლეგის იდენტურად, მონაცემების 4 პარალელური ბიტი ამოღებულია და გადადის მონაცემთა ხაზების (D8– დან D11– მდე) საშუალებით HT-12D, საავტომობილო დრაივერზე, რომელიც თავის მხრივ განმარტავს ამ სიგნალებს ძრავების მართვისთვის.

კიდევ ერთხელ, მიაქციეთ ყურადღება როსკის ღირებულებას. HT-12D- ს ასევე აქვს შიდა ოსცილატორის წრე 15 და 16 ქინძისთავებს შორის, რაც გააქტიურებულია ამ ქინძისთავებს შორის რეზისტორის, რომელსაც ეწოდება როსკი. როსკისთვის შერჩეული მნიშვნელობა რეალურად განსაზღვრავს ოსცილატორის სიხშირეს, რომელიც შეიძლება განსხვავდებოდეს მიწოდების ძაბვის მიხედვით. Rosc– ის შესაბამისი მნიშვნელობის შერჩევა გადამწყვეტია HT-12D– ის ფუნქციონირებისათვის! იდეალურ შემთხვევაში, HT-12D– ის ოსცილატორის სიხშირე უნდა იყოს 50 – ჯერ HT – 12E– ს კოლეგასთან შედარებით. ამიტომ, ვინაიდან ჩვენ ვმუშაობთ 5V– ზე, ჩვენ შევარჩიეთ 1MΩ და 51kΩ რეზისტორები, როგორც Rosc შესაბამისად HT-12E და HT-12D სქემებისთვის. თუ თქვენ გეგმავთ სქემების მუშაობას სხვადასხვა მიწოდების ძაბვაზე, იხილეთ გრაფიკი "Oscillator Frequency vs Supply Voltage" თანდართული HT-12D მონაცემთა ცხრილის მე -5 გვერდზე, რათა დადგინდეს ზუსტი ოსცილატორის სიხშირე და რეზისტორი.

ასევე, არ დაივიწყოთ ქალი სათაურები RF მიმღებისთვის.

სურვილისამებრ, LED შეიძლება დაუკავშიროთ 330Ω დენის შემზღუდავი რეზისტორის საშუალებით HT-12D– ის თითოეულ 4 მონაცემს, რათა დადგინდეს ამ პინზე მიღებული ბიტი. LED ანათებს, თუ მიღებული ბიტი მაღალია (1) და ჩამქრალი იქნება, თუ მიღებული ბიტი დაბალია (0). ალტერნატიულად, ერთი LED შეიძლება მიბმული იყოს HT-12D– ს VT პინზე (ისევ 330Ω დენის შემზღუდავი რეზისტორის საშუალებით), რომელიც აინთება სწორი გადაცემის შემთხვევაში.

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

ნაბიჯი 4: გადადით კოდზე

კოდზე
კოდზე

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

ჩვენ ვიცით, რომ ამაჩქარებელი გაზომავს გრავიტაციულ აჩქარებას წრფივი ღერძის გასწვრივ და რომ ეს აჩქარება წარმოდგენილია როგორც ძაბვის დონე, რომელიც ცვალებადია მიწასა და მიწოდების ძაბვას შორის, რასაც ჩვენი მიკროკონტროლერი კითხულობს როგორც ანალოგიურ მნიშვნელობას, რომელიც იცვლება 0 -დან 1023 -მდე. მაგრამ, ვინაიდან ჩვენ ჩვენ ვმუშაობთ ამაჩქარებელ მოწყობილობაზე 3.3 ვ-ზე, მიზანშეწონილია, რომ ჩვენ დავაყენოთ ანალოგური მითითება 10-ბიტიანი ADC– სთვის (რომელიც ინტეგრირებულია ATmeaga– ზე Arduino– ზე) 3.3 ვ – მდე. ეს უბრალოდ გაამარტივებს ნივთების გაგებას; თუმცა, ამას დიდი მნიშვნელობა არ ექნება ჩვენი პატარა ექსპერიმენტისთვისაც კი, თუ ამას არ გავაკეთებთ (ჩვენ უბრალოდ უნდა შევცვალოთ კოდი ოდნავ). ამის გასაკეთებლად, ჩვენ უბრალოდ ვდებთ AREF პინს Arduino– ზე (პინ 21 ATmega– ზე) 3.3V– მდე და აღვნიშნავთ კოდის ამ ცვლილებას analogReference (EXTERNAL) გამოძახებით.

ახლა, როდესაც ჩვენ ვდებთ ამაჩქარებელს ბრტყელ და ანალოგიურად, ვკითხულობთ აჩქარებას x და y ღერძების გასწვრივ (გახსოვთ? ჩვენ მხოლოდ ეს ორი ღერძი გვჭირდება), ვიღებთ მნიშვნელობას დაახლოებით 511 (ანუ ნახევარი გზა 0 -დან 1023 -მდე), რაც არის მხოლოდ იმის თქმა, რომ ამ ღერძების გასწვრივ არის 0 აჩქარება. ფაქტის დეტალებში ჩაღრმავების ნაცვლად, უბრალოდ წარმოიდგინეთ ეს, როგორც x და y ღერძი გრაფიკზე, რომლის ღირებულებაც 511 აღნიშნავს წარმოშობას და 0 და 1023 საბოლოო წერტილებს, როგორც ეს მოცემულია ფიგურაში; ამახვილეთ აქსელერომეტრი ისე, რომ მისი ქინძისთავები იყოს ქვემოთ და იყოს თქვენთან უფრო ახლოს, წინააღმდეგ შემთხვევაში თქვენ შეგიძლიათ შეცვალოთ/შეცვალოთ ღერძი. ეს ნიშნავს, რომ თუ ამაჩქარებელს მარჯვნივ ვახრით, ჩვენ უნდა წავიკითხოთ 511-ზე მეტი მნიშვნელობა x ღერძის გასწვრივ, ხოლო თუ ამაჩქარებელს მარცხნივ, ჩვენ უნდა მივიღოთ 511-ზე ნაკლები მნიშვნელობა x ღერძის გასწვრივ რა ანალოგიურად, თუ ჩვენ დავხრით ამაჩქარებელს წინ, ჩვენ უნდა წავიკითხოთ 511-ზე მეტი მნიშვნელობა y ღერძის გასწვრივ, ხოლო თუ ამაჩქარებელს უკან დავხრით, y– ღერძის გასწვრივ 511-ზე დაბალ მნიშვნელობას. და ეს არის ის, თუ როგორ ვიმსჯელებთ, კოდით, რა მიმართულებით უნდა წავიდეს როვერი. მაგრამ ეს ასევე ნიშნავს იმას, რომ ჩვენ უნდა შევინარჩუნოთ ამაჩქარებელი მართლაც სტაბილურად და გასწორებული ბრტყელი ზედაპირის პარალელურად, რომ შევძლოთ 511 -ის წაკითხვა ორივე ღერძის გასწვრივ რათა როვერი მაინც გაჩერებულიყო. ამ ამოცანის ოდნავ შესამსუბუქებლად, ჩვენ განვსაზღვრავთ გარკვეულ ზღურბლებს, რომლებიც ქმნიან ზღვარს, როგორც ეს ფიგურაა ნაჩვენები, რათა როვერი იყოს სტაციონარული მანამ, სანამ x და y კითხვები საზღვრებშია და ჩვენ ზუსტად ვიცით, რომ როვერი უნდა იყოს მითითებული მოძრაობა ბარიერის გადალახვისთანავე.

მაგალითად, თუ y ღერძი კითხულობს 543-ს, ჩვენ ვიცით, რომ ამაჩქარებელი წინ არის გადახრილი, ამიტომ როვერი წინ უნდა მივმართოთ. ჩვენ ამას ვაკეთებთ ქინძისთავების D2 და D4 HIGH და ქინძისთავების D3 და D5 LOW დაყენებით. ახლა, ვინაიდან ეს ქინძისთავები უშუალოდ არის დაკავშირებული HT-12E– ზე, სიგნალები სერიალიზდება და გამოდის RF გადამცემიდან მხოლოდ როვერზე მჯდომი RF მიმღების დაჭერით, რომელიც HT-12D– ის დახმარებით ახდენს სიგნალების დეზარიზაციას და გადასცემს მათ L293D- ს, რაც თავის მხრივ ახდენს ამ სიგნალების ინტერპრეტაციას და ძრავებს წინ მიიყვანს

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

და, ეს არის ის! ატვირთეთ კოდი თქვენს არდუინოში და ისიამოვნეთ !! ან, ალბათ, არც ისე მალე:-(თუ თქვენ არ გამოტოვებთ ბონუსების განყოფილებას, კოდის ატვირთვა თქვენს ATmega– ზე ნიშნავს ცოტა მეტ სამუშაოს. თქვენ გაქვთ ორი ვარიანტი:

ვარიანტი A: გამოიყენეთ USB სერიული მოწყობილობა, როგორიცაა FTDI FT232 ძირითადი გარღვევის დაფა. უბრალოდ გაუშვით მავთულები TTL სათაურიდან ATmega– ს შესაბამის ქინძისთავებამდე ქვემოთ მოცემული რუქის მიხედვით:

ქინძისთავები ბრეაკოუტ დაფაზე ქინძისთავები მიკროკონტროლერზე
DTR/GRN RST/გადატვირთვა (პინ 1) 0.1 μF თავსახურის საშუალებით
Rx Tx (პინ 3)
Tx Rx (პინ 2)
Vcc +5v გამომავალი
CTS (გამოუყენებელი)
Gnd გრუნტი

ახლა, შეაერთეთ USB კაბელის ერთი ბოლო გამშლელი დაფაზე და მეორე თქვენს კომპიუტერში და ატვირთეთ კოდი ჩვეულებისამებრ: გაუშვით Arduino IDE, შეარჩიეთ შესაბამისი სერიული პორტი, დააყენეთ დაფის ტიპი, შეადგინეთ ესკიზი და დააჭირეთ ატვირთვას რა

ვარიანტი B: გამოიყენეთ UNO, თუ თქვენ გაქვთ ის სადღაც. უბრალოდ შეაერთეთ თქვენი ATmega UNO– ში, ატვირთეთ კოდი ჩვეულებისამებრ, ამოიღეთ IC და გადმოაბრუნეთ იგი გადამცემის წრეში. ტორტივით ადვილი!

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

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

მადლობა

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

გირჩევთ: