Съдържание:

Дървено Bluetooth дистанционно за Lego Duplo Train: 3 стъпки (със снимки)
Дървено Bluetooth дистанционно за Lego Duplo Train: 3 стъпки (със снимки)

Видео: Дървено Bluetooth дистанционно за Lego Duplo Train: 3 стъпки (със снимки)

Видео: Дървено Bluetooth дистанционно за Lego Duplo Train: 3 стъпки (със снимки)
Видео: FULL BUILD | Rebuilding A DESTROYED Porsche 911 Turbo! 2024, Декември
Anonim
Дървено Bluetooth дистанционно за Lego Duplo Train
Дървено Bluetooth дистанционно за Lego Duplo Train
Дървено Bluetooth дистанционно за Lego Duplo Train
Дървено Bluetooth дистанционно за Lego Duplo Train

Децата ми обичаха този малък влак Lego Duplo, особено най -малкият ми, който се бори да общува с думи, затова исках да й изградя нещо, което да й помогне да играе с влака независимо от възрастни или телефони/таблети. Нещо, което би добавило допълнително измерение на влака и би му придало допълнителна игрална стойност

Комплектът Lego вече има малко начини за управление на влака, можете да го натиснете напред, за да го стартирате, и да го задържите, за да го спрете, можете да го контролирате с помощта на цветни тагове, които вървят по пистата, така че когато влакът го премине, задейства различни действия, т.е. напред, назад, при възпроизвеждане звуците включват светлините. Можете също да изтеглите приложение за вашия телефон или таблет, което може да се свърже с влака чрез Bluetooth.

Ето пълен преглед на влака

След като потърсих из интернет, открих, че има доста малко различни хора, които имат всички готови писмени кодове за контрол на влака. Възелът „Poweredup“, написан от nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/), изглеждаше като перфектен старт, написан е с помощта на Javascript, с който не бях частично запознат, но мислех, че ако бих могъл да намеря java базиран микрочип, това би било добро начало.

Отново след като обиколих из интернет отново намерих системата espruino, това е подобно на ardiuno, но база около javascript. Кодът espriuno може да бъде зареден на миркочип MDBT42Q, който има вграден bluetooth. Мислех, че ако мога да заредя модула с "захранване", ще бъда на половината път, но това просто не беше така, ако модулът съдържаше много библиотеки, за да се зареди на MDBT42Q, така че изглежда трябва намери по -просто решение …

Стъпка 1: Кодът

Кодът
Кодът

Esprinuo

За тези, които не познават платформата Espruino https://www.espruino.com (а аз не знаех) много ли прилича на Arduino, има няколко основни разлики, една написана за javascript по -скоро c, усеща се леко по -ново така че да няма примери обаче поддръжката чрез форумите е страхотна и много полезна.

Javascript срещам влака

Първото препятствие беше да се свържете с влака чрез bluetooth, Това може да стане с помощта на NRF клас, който се доставя с кода espruino.

NRF.connect може да се използва за свързване с влака, но първо трябва да намерите адреса на самия влак, можете да използвате NRF.findDevices, за да получите тази информация

След като направите това, тогава трябва да изпратите на влака две стойност за ръкостискане с влака, за моя влак това беше "00001623-1212-efde-1623-785feabcd123", последвано от "00001624-1212-efde-1623-785feabcd123" Вярвам това ще бъде еднакво за всички комплекти парни влакове, но другите версии, т.е. товарният комплект може да е различен

След като имате това, можете да свържете влака, като използвате следната функция, можете ли да кажете кога влакът е свързан, тъй като той ще мига, той светва в синьо

NRF.connect ("e0: 7d: ea: 0c: 03: 29"). Then (function (g) {

console.log ("Стартиране на свързване2"); gatt = g; return gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). then (function (service) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). then (function (character) {Characteristic_store = character; return character.readValue ();}). then (value => {console.log (value);}). then (function () {console.log ("Train Connected"); connected = 1;

Забавните неща

Сега, когато сте се свързали с влака, е време за всички забавни неща, като преместване напред, издаване на звук и включване и изключване на светлината. Това е проста работа да изпратите на влака предварителна стойност, последвана от действителната команда, т.е.

функция play_horn () {

console.log ("message =", Characteristic_store); 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 read = analogRead (D31);

Другата разлика за arduino е, че esprunio няма настройка и цикъл. Така че вместо това поставям всички отделни команди/тригери във функции и след това настройвам setInterval, който се завърта на всеки 100 милисекунди, слушайки бутона и след това изпълнява необходимата функция, когато бутонът е натиснат.

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

Действието на лоста беше малко по -сложно, тъй като исках да мога да регулирам постепенно скоростта, така че първо трябваше да изпратя аналоговата стойност на функция

var read = analogRead (D31);

train_direction (четене * 1024);

След това във функцията train_direction разбих командата на 6 различни стъпки въз основа на стойността на пота

През целия път нагоре казва на влака да върви с пълна скорост

На половината път нагоре, казва на влака да продължи напред с 50% скорост

По средата, казва на влака да спре

На половината път надолу, казва на влака да се движи назад с 50% скорост

Докрай надолу, казва на влака да върви с пълна скорост на заден ход

т.е.

функция train_direction (dir_val) {

//console.log("message = ", Characteristic_store); 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 = нов Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x64]); } if (dir_val 200) {const sendvalue = нов Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xe2]); } if (dir_val 100) {const sendvalue = нов 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

Все още работя върху захранването, но в момента цялата мощност идва от пробив на micro usb и това може да ги свърже директно към банка за захранване или USB порт

Стъпка 3: Изграждането

Сградата
Сградата
Сградата
Сградата
Сградата
Сградата
Сградата
Сградата

Дистанционното е най -вече от 3 мм, 6 мм или 9 мм листове шперплат А4, те се режат на моята машина с ЦПУ, но използвайки шаблона, при условие, че бих направил, макар че няма да е невъзможно да се направи на ръка

Надявам се, че шаблонът и снимките ще ви дадат всичко необходимо за преработване, но има няколко бележки, които биха могли да ви помогнат

Монтажът на 3 -милиметровия бутон е за залепване на бутона, пролуката ще постави бутона на правилното място, но ви позволяваме достъп до крака на гърба, така че да можете да запоявате към микрочипа, на обратната страна можете да монтирате и MDBT42Q използвайки малко лепило. Отпред ще трябва да добавите толкова пяна, така че да придаде на бутоните малко подскачане, когато ги натиснете надолу, можете да използвате и пружини

9 -милиметровите бутони ще се нуждаят от боя, гравиране или нещо друго, което да показва какво прави бутонът

Лостът/дръжката ще трябва да бъдат наслоени, използвах 6 мм дюбел, за да ги подравня във всички правилни позиции

Препоръчано: