Оглавление:
Видео: Деревянный пульт Bluetooth для поезда Lego Duplo: 3 шага (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:50
Моим детям очень понравился этот маленький поезд Lego Duplo, особенно моей младшей, которая изо всех сил пытается общаться с помощью слов, поэтому я хотел создать для нее что-то, что помогло бы ей играть с поездом независимо от взрослых или телефонов / планшетов. Что-то, что добавило бы поезду дополнительное измерение и повысило бы игровую ценность.
В наборе Lego уже есть несколько способов управления поездом, вы можете подтолкнуть его вперед, чтобы запустить, и удерживать, чтобы остановить, вы можете управлять им с помощью цветных меток, которые идут на рельсы, поэтому, когда поезд проезжает мимо, он запускает различные действия, т.е. вперед, назад, воспроизведение звуков включает свет. Вы также можете загрузить приложение для телефона или планшета, которое может подключаться к поезду через Bluetooth.
Здесь полный обзор поезда
Покопавшись в Интернете, я обнаружил, что там было довольно много разных людей, у которых был весь готовый код для управления поездом. Узел Poweredup, написанный nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/), выглядел как идеальный запуск, он был написан с использованием Javascript, с которым я не был частично знаком, но подумал, если я мог бы найти микрочип на основе java, это было бы хорошим началом.
Опять же, снова поискав в Интернете, я нашел систему espruino, она похожа на ardiuno, но основана на javascript. Код espriuno можно было загрузить на микрочип MDBT42Q со встроенным Bluetooth. Я подумал, что если бы я мог загрузить в него "включенный" модуль, я был бы на полпути, однако это было не так, поскольку модуль содержал много библиотек, слишком больших для загрузки на MDBT42Q, поэтому, похоже, мне нужно найти более простое решение….
Шаг 1: Код
Эспринуо
Для тех, кто не знает платформу 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 (характеристика) {Characteristic_store = характеристика; return характеристика.readValue ();}).then (value => {console.log (value);}). then (function () {console.log («Поезд подключен»); connected = 1;
Веселые вещи
Теперь, когда вы подключились к поезду, пришло время для всех забавных вещей, таких как движение вперед, создание звука, включение и выключение света. Это простая задача - отправить поезду значение подготовки, за которым следует фактическая команда, т.е.
function play_horn () {
console.log ("message =", Хранилище_характеристик); const Preval = new Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x01, 0x11, 0x51, 0x01, 0x09]); Characteristic_store.writeValue (предварительное значение).then (_ => {Characteristic_store.writeValue (sendvalue);}); }
Возможно, вам придется немного покопаться, чтобы найти другую команду, кроме тех, которые я использовал
Кнопки и рычаги
Физическая сторона пульта дистанционного управления - это очень простые четыре кнопки (для воспроизведения звуков, включения и выключения света) и один потенциометр, который подключается к рычагу, чтобы вы могли контролировать скорость и направление поезда.
Кнопке не нужен подтягивающий резистор, вместо этого вы можете сделать это в коде, т.е.
pinMode (D15, 'input_pulldown');
Вы можете подключить потенциометр к одному из входов, а затем прочитать аналоговый сигнал, используя следующую команду
чтение переменных = аналоговое чтение (D31);
Другое отличие от Arduino заключается в том, что esprunio не имеет настройки и цикла. Поэтому вместо этого я помещаю все отдельные команды / триггеры в функции, а затем настраиваю setInterval, который повторяется каждые 100 миллисекунд, прослушивая кнопку, а затем запускаю требуемую функцию при нажатии кнопки.
если (digitalRead (D15) == 1) {play_horn (); }
Управление рычагом было немного сложнее, так как я хотел иметь возможность постепенно регулировать скорость, поэтому сначала мне пришлось отправить аналоговое значение в функцию.
чтение переменных = аналоговое чтение (D31);
train_direction (чтение * 1024);
Затем в функции train_direction я разбил команду на 6 различных приращений в зависимости от значения pot
Всю дорогу говорит поезду идти полным ходом вперед
На полпути, говорит поезду двигаться вперед со скоростью 50%.
Середина, говорит поезду остановиться
На полпути вниз, поезд отправляется назад со скоростью 50%.
Всю дорогу вниз говорит поезду, чтобы он ехал на полной скорости задним ходом.
т.е.
function train_direction (dir_val) {
//console.log("message = ", Characteristic_store); const Preval = new Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = new 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 резистора 10 кОм, подключенного к D31.
Я все еще работаю над блоком питания, но в настоящее время все питание поступает от разъема micro-USB, и его можно подключить напрямую к блоку питания или USB-порту.
Шаг 3: Сборка
Пульт в основном состоит из листов фанеры формата А4 толщиной 3 мм, 6 мм или 9 мм. Они были вырезаны на моем станке с ЧПУ, но с использованием предоставленного шаблона, хотя это было бы невозможно сделать вручную.
Я надеюсь, что шаблон и фотографии дадут вам все, что вам нужно для переделки, однако есть несколько примечаний, которые могут помочь
Крепление для кнопки 3 мм предназначено для прикрепления кнопки, зазор будет позиционировать кнопку в правильном месте, но мы позволяем вам получить доступ к ножке на задней панели, чтобы вы могли припаять ее к микрочипу, на обратной стороне вы также можете установить MDBT42Q используя немного клея. Спереди вам нужно будет добавить такую пену, чтобы кнопки немного подпрыгивали, когда вы их нажимаете, вы также можете использовать пружины.
Для кнопок 9 мм потребуется краска, гравировка или что-то еще, чтобы показать, какая кнопка что делает
Рычаг / ручку нужно будет наслоить, я использовал 6-миллиметровый дюбель, чтобы выровнять их во всех правильных положениях.
Рекомендуемые:
Деревянный динамик Bluetooth DIY: 8 шагов (с изображениями)
Деревянный динамик Bluetooth DIY: в Интернете уже есть тысячи версий этого проекта. Зачем я его делаю? Потому что я хочу :) У меня есть собственное видение идеального динамика Bluetooth (идеально подходящего для меня), и я хотел бы показать вам свой процесс проектирования и сборки! Также
Управляйте компоновкой модели поезда с помощью мобильного телефона !: 11 шагов (с изображениями)
Управляйте компоновкой модельного поезда с помощью мобильного телефона! Управление компоновкой модельного поезда с помощью проводных контроллеров дроссельной заслонки и стрелочных переводов может быть хорошим началом для новичков, но они создают проблему непереносимости. Кроме того, беспроводные контроллеры, которые поступают на рынок, могут управлять только некоторым локомом
Модель контроллера поезда Arduino 2-в-1: 4 шага
Модель контроллера поезда Arduino 2-в-1: сорок лет назад я разработал модельный дроссель поезда на базе операционного усилителя для пары друзей, а затем, около четырех лет назад, я воссоздал его с помощью микроконтроллера PIC. Этот проект Arduino воссоздает версию PIC, но также добавляет возможность использовать
Деревянный Bluetooth-динамик DIY: 8 шагов (с изображениями)
Деревянный Bluetooth-динамик DIY: этот специальный Bluetooth-динамик был интересным проектом, и он может вдохновить людей всех возрастов на деревообработку и электронику, поскольку в наши дни все любят свои телефоны. Он сделан из 1/2 дюйма. орех и клен с комплектом от Parts Expr
Пульт дистанционного управления Bluetooth для Android: 4 шага
DIY Android Bluetooth Remote: в этой инструкции можно узнать, как управлять телевизором с помощью устройства Android через Bluetooth. Использование пультов дистанционного управления для управления телевизором устарело. Они очень хрупкие и каждый раз пропадают. Итак, я подумал о создании своего собственного мобильного пульта дистанционного управления Bluetooth с помощью Cu