Სარჩევი:

ხის Bluetooth დისტანციური მართვა Lego Duplo მატარებლისთვის: 3 ნაბიჯი (სურათებით)
ხის Bluetooth დისტანციური მართვა Lego Duplo მატარებლისთვის: 3 ნაბიჯი (სურათებით)

ვიდეო: ხის Bluetooth დისტანციური მართვა Lego Duplo მატარებლისთვის: 3 ნაბიჯი (სურათებით)

ვიდეო: ხის Bluetooth დისტანციური მართვა Lego Duplo მატარებლისთვის: 3 ნაბიჯი (სურათებით)
ვიდეო: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, ნოემბერი
Anonim
ხის Bluetooth დისტანციური მართვა Lego Duplo Train– ისთვის
ხის Bluetooth დისტანციური მართვა Lego Duplo Train– ისთვის
ხის Bluetooth დისტანციური მართვა Lego Duplo Train– ისთვის
ხის Bluetooth დისტანციური მართვა Lego Duplo Train– ისთვის

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

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

აქ არის მატარებლის სრული მიმოხილვა

ინტერნეტში ნადირობის შემდეგ აღმოვაჩინე, რომ საკმაოდ ბევრი განსხვავებული ადამიანი იყო, რომლებსაც ყველა მზად ჰქონდა დაწერილი კოდი მატარებლის გასაკონტროლებლად. 'Poweredup' კვანძი, დაწერილი nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) ჰგავდა სრულყოფილად დაწყებულს, დაიწერა Javascript– ის გამოყენებით, რომელსაც მე ნაწილობრივ არ ვიცნობდი, მაგრამ ვფიქრობდი, თუ მე შეიძლება ვიპოვო java დაფუძნებული მიკროჩიპი, ეს იქნება კარგი დასაწყისი.

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

ნაბიჯი 1: კოდი

Კოდი
Კოდი

ესპრინუო

მათთვის, ვინც არ იცის ესპრუინოს პლატფორმა https://www.espruino.com (და მე არ ვგულისხმობ) არის ძალიან მსგავსი Arduino, არსებობს რამდენიმე ძირითადი განსხვავება, რომელიც მან JavaScript– ისთვის დაწერა საკმაოდ c, იგი ოდნავ უფრო ახლებურად გრძნობს თავს ასე რომ, არ არსებობს მაგალითები, თუმცა ფორუმების მხარდაჭერა დიდი და ძალიან გამოსადეგია.

Javascript შეხვდით მატარებელს

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

NRF.connect შეიძლება გამოყენებულ იქნას მატარებელთან დასაკავშირებლად, თუმცა თქვენი პირველი საჭიროება თავად მატარებლის მისამართის პოვნაა, ამ ინფორმაციის მისაღებად შეგიძლიათ გამოიყენოთ NRF.findDevices

მას შემდეგ რაც ამას გააკეთებ, მატარებელს უნდა გაუგზავნო ორი მნიშვნელობა მატარებელს ხელის ჩამორთმევისთვის, რადგან ჩემი მატარებელი იყო "00001623-1212-efde-1623-785feabcd123" რასაც მოჰყვა "00001624-1212-efde-1623-785feabcd123" მჯერა ეს იგივე იქნება ყველა ორთქლის მატარებლისთვის, მაგრამ სხვა ვერსიები, ანუ ტვირთის ნაკრები შეიძლება განსხვავებული იყოს

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

NRF.connect ("e0: 7d: ea: 0c: 03: 29"). შემდეგ (ფუნქცია (g) {

console.log ("დაკავშირების დაწყება 2"); გატი = გ; დაბრუნება gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). შემდეგ (ფუნქცია (სერვისი) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). შემდეგ (ფუნქცია (მახასიათებელი) {Characteristic_store = დამახასიათებელი; დამახასიათებელი დაბრუნება.) შემდეგ.

სახალისო პერსონალი

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

ფუნქცია play_horn () {

console.log ("გაგზავნა =", დამახასიათებელი_მაღაზია); const prepval = ახალი Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = ახალი Uint8Array ([0x08, 0x00, 0x81, 0x01, 0x11, 0x51, 0x01, 0x09]); Characteristic_store.writeValue (prepval).then (_ => {Characteristic_store.writeValue (sendvalue);}); }

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

ღილაკები და ბერკეტები

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

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

pinMode (D15, 'input_pulldown');

თქვენ შეგიძლიათ დააკავშიროთ პოტენომეტრი ერთი შესასვლელთან და შემდეგ წაიკითხოთ ანალოგური სიგნალი შემდეგი ბრძანების გამოყენებით

var კითხვა = analogRead (D31);

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

if (digitalRead (D15) == 1) {play_horn (); }

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

var კითხვა = analogRead (D31);

მატარებლის_ მიმართულება (კითხვა * 1024);

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

მთელი გზა, ეუბნება მატარებელს, რომ მთელი სისწრაფით წავიდეს წინ

ნახევარი გზა მაღლა, ეუბნება მატარებელს 50% სიჩქარით წინსვლა

შუა, ეუბნება მატარებელს გაჩერდეს

ნახევარი გზა ქვემოთ, ეუბნება მატარებელს, რომ უკან დაიხიოს 50% სიჩქარით

მთელი გზა ქვემოთ, ეუბნება მატარებელს, რომ წავიდეს სრული სიჩქარით საპირისპირო მიმართულებით

ანუ

ფუნქცია train_direction (dir_val) {

//console.log("message = ", დამახასიათებელი_მაღაზია); const prepval = ახალი Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = ახალი Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x00]); if (dir_val> 300 && dir_val 400 && dir_val 500) {const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x64]); } if (dir_val 200) {const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xe2]); } if (dir_val 100) {const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xce]); } if (dir_val {Characteristic_store.writeValue (sendvalue);}); }

სრული კოდი შეიძლება დაიწეროს ქვემოთ მოცემულ ბმულზე

ნაბიჯი 2: გაყვანილობა

გაყვანილობა
გაყვანილობა
გაყვანილობა
გაყვანილობა

გაყვანილობა ყველაზე მარტივი ნაწილი იყო

ის მხოლოდ შედგებოდა 4 ღილაკზე, რომელიც დაკავშირებულია D15, D16, D17 და D18– თან ყოველგვარი გამწევი რეზისტორით, როგორც ეს გაკეთდა კოდში და 1 10k რეზისტორი, რომელიც დაკავშირებულია D31– თან

მე ჯერ კიდევ ვმუშაობ ელექტრომომარაგებაზე, მაგრამ ამჟამად მთელი ენერგია მოდის მიკრო USB- ის გარღვევის შედეგად და ეს შეიძლება პირდაპირ დაუკავშირდეს დენის ბანკს ან USB პორტს

ნაბიჯი 3: აშენება

აღმაშენებელი
აღმაშენებელი
აღმაშენებელი
აღმაშენებელი
აღმაშენებელი
აღმაშენებელი
აღმაშენებელი
აღმაშენებელი

პულტი ძირითადად 3 მმ, 6 მმ ან 9 მმ პლაივუდის A4 ფურცლებიდანაა, ისინი იჭრება ჩემს CNC აპარატზე, თუმცა შაბლონის გამოყენებით, მე ამას გავაკეთებ, თუმცა შეუძლებელი არ იქნება ხელით გაკეთება

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

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

9 მმ ღილაკებს დასჭირდება ლოგოს საღებავი, გრავიურა ან სხვა რამ, რაც აჩვენებს რა ღილაკს რას აკეთებს

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

გირჩევთ: