Mục lục:

Điều khiển từ xa Bluetooth bằng gỗ cho Lego Duplo Train: 3 bước (có hình ảnh)
Điều khiển từ xa Bluetooth bằng gỗ cho Lego Duplo Train: 3 bước (có hình ảnh)

Video: Điều khiển từ xa Bluetooth bằng gỗ cho Lego Duplo Train: 3 bước (có hình ảnh)

Video: Điều khiển từ xa Bluetooth bằng gỗ cho Lego Duplo Train: 3 bước (có hình ảnh)
Video: Да я ж нажимал! Дважды. Генетиро Асина ► 5 Прохождение Sekiro: Shadows Die Twice 2024, Tháng mười một
Anonim
Điều khiển từ xa Bluetooth bằng gỗ cho Lego Duplo Train
Điều khiển từ xa Bluetooth bằng gỗ cho Lego Duplo Train
Điều khiển từ xa Bluetooth bằng gỗ cho Lego Duplo Train
Điều khiển từ xa Bluetooth bằng gỗ cho Lego Duplo Train

Các con tôi rất thích chiếc xe lửa Lego Duplo nhỏ bé này, đặc biệt là đứa con út của tôi, người đang gặp khó khăn trong việc giao tiếp bằng lời nói, vì vậy tôi muốn tạo cho con một thứ gì đó có thể giúp con chơi với tàu mà không phụ thuộc vào người lớn hoặc điện thoại / máy tính bảng. Thứ gì đó sẽ bổ sung thêm một chiều cho đoàn tàu và mang lại cho nó giá trị chơi bổ sung

Bộ Lego đã có rất ít cách để điều khiển đoàn tàu, bạn có thể đẩy nó về phía trước để bắt đầu và giữ nó để dừng nó, bạn có thể điều khiển nó bằng cách sử dụng các thẻ màu trên đường ray để khi tàu chạy qua nó sẽ kích hoạt các hành động khác nhau tức là tiến, lùi, phát âm thanh bật đèn. Bạn cũng có thể tải xuống một ứng dụng cho điện thoại hoặc máy tính bảng của mình có thể kết nối với tàu qua bluetooth.

Đây là một bài đánh giá đầy đủ về chuyến tàu

Sau khi tìm kiếm khắp nơi trên mạng, tôi thấy có khá nhiều người khác nhau đã viết sẵn mã điều khiển tàu. Nút 'Poweredup' được viết bởi nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) trông giống như một sự khởi đầu hoàn hảo, Nó được viết bằng Javascript mà tôi không quen lắm nhưng nghĩ nếu tôi có thể tìm thấy vi mạch dựa trên java, đây sẽ là một khởi đầu tốt.

Một lần nữa sau khi tìm kiếm trên internet một lần nữa, tôi tìm thấy hệ thống espruino, hệ thống này tương tự như ardiuno nhưng dựa trên javascript. Mã espriuno có thể được tải vào máy tính bảng MDBT42Q có nhúng bluetooth. Tôi nghĩ nếu tôi có thể tải mô-đun "được cấp nguồn" vào nó, tôi sẽ đi được một nửa chặng đường đến đó, tuy nhiên điều này đơn giản không phải là trường hợp một mô-đun chứa nhiều thư viện lớn để tải trên MDBT42Q, vì vậy có vẻ như tôi phải tìm một giải pháp đơn giản hơn….

Bước 1: Mã

Mật mã
Mật mã

Esprinuo

Đối với những người không biết nền tảng Espruino https://www.espruino.com (và tôi thì không) có phải nó rất giống với Arduino không, Có một vài điểm khác biệt chính là nó được viết cho javascript thay vì c, Nó có cảm giác mới hơn một chút vì vậy e rằng có những ví dụ tuy nhiên sự hỗ trợ qua các diễn đàn là rất tốt và rất hữu ích.

Javascript gặp chuyến tàu

Rào cản đầu tiên là kết nối với tàu qua bluetooth, Điều này có thể được thực hiện bằng cách sử dụng lớp NRF mà tàu có trong mã espruino.

NRF.connect có thể được sử dụng để kết nối với tàu, tuy nhiên trước tiên bạn cần tìm địa chỉ của chính tàu, bạn có thể sử dụng NRF.findDevices để lấy thông tin này

Sau khi thực hiện xong việc này, bạn cần gửi cho đoàn tàu hai giá trị để bắt tay với đoàn tàu, đối với chuyến tàu của tôi, giá trị này là "00001623-1212-efde-1623-785feabcd123", tiếp theo là "00001624-1212-efde-1623-785feabcd123" Tôi tin rằng Điều này sẽ giống nhau đối với tất cả các bộ tàu hơi nước nhưng các phiên bản khác tức là bộ hàng hóa có thể khác

Sau khi bạn có điều này, bạn có thể kết nối tàu bằng chức năng như sau, bạn có thể biết khi nào tàu đã kết nối vì nó sẽ nhấp nháy đèn pha màu xanh lam

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

console.log ("Đang bắt đầu kết nối2"); gatt = g; return gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). then (function (service) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). then (function (feature) {Characttic_store = character; return feature.readValue ();}).then (value => {console.log (value);}). then (function () {console.log ("Train Connected"); Connected = 1;

Những điều thú vị

Bây giờ bạn đã kết nối với tàu đã đến lúc thực hiện tất cả những điều thú vị như di chuyển nó về phía trước, tạo âm thanh và bật và tắt đèn. Công việc đơn giản là gửi cho đoàn tàu một giá trị chuẩn bị, theo sau là lệnh thực, tức là

function play_horn () {

console.log ("message =", Cửa hàng đặc trưng); const prepval = new Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x01, 0x11, 0x51, 0x01, 0x09]); Characttic_store.writeValue (prepval).then (_ => {Characttic_store.writeValue (sendvalue);}); }

Bạn có thể phải đào một chút để tìm lệnh khác ngoài những lệnh tôi đã sử dụng

Các nút và đòn bẩy

Mặt vật lý của điều khiển từ xa là bốn nút (để phát âm thanh, bật và tắt đèn) và một chiết áp được kết nối với cần gạt để bạn có thể điều khiển tốc độ và hướng của tàu.

Nút không cần điện trở kéo lên thay vào đó bạn có thể làm điều này trong mã, tức là

pinMode (D15, 'input_pulldown');

Bạn có thể kết nối chiết áp với một trong các đầu vào và sau đó đọc nó thành tín hiệu tương tự bằng lệnh sau

var read = analogRead (D31);

Sự khác biệt khác đối với arduino là esprunio không có thiết lập và vòng lặp. Vì vậy, thay vào đó, tôi đặt tất cả các lệnh / trình kích hoạt riêng biệt vào các hàm và sau đó thiết lập setInterval lặp lại sau mỗi 100 mili giây, lắng nghe nút sau đó chạy chức năng cần thiết khi nút đã được nhấn.

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

Kích hoạt cần gạt phức tạp hơn một chút vì muốn có thể điều chỉnh dần tốc độ, vì vậy trước tiên tôi phải gửi giá trị tương tự để hoạt động

var read = analogRead (D31);

train_direction (đọc * 1024);

Sau đó, trong hàm train_direction, tôi đã chia nhỏ lệnh thành 6 mức tăng khác nhau dựa trên giá trị pot

Tất cả các con đường lên, nói với tàu để đi hết tốc độ phía trước

Lên được nửa đường, yêu cầu tàu đi tiếp với tốc độ 50%

Middle, bảo tàu dừng lại

Xuống được một nửa, yêu cầu tàu chạy lùi với tốc độ 50%

Xuống hết mức, bảo tàu chạy ngược lại hết tốc độ

I E

function train_direction (dir_val) {

//console.log("message = ", Characttic_store); const prepval = 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 {Đặc trưng_store.writeValue (sendvalue);}); }

Mã đầy đủ có thể được tải xuống cho liên kết bên dưới

Bước 2: Hệ thống dây điện

Hệ thống dây điện
Hệ thống dây điện
Hệ thống dây điện
Hệ thống dây điện

Hệ thống dây điện là phần đơn giản nhất

Nó chỉ bao gồm 4 nút nhấn được kết nối với D15, D16, D17 và D18 với bất kỳ điện trở kéo lên nào như điều này đã được thực hiện trong mã và 1 điện trở 10k được kết nối với D31

Tôi vẫn đang làm việc trên nguồn điện nhưng hiện tại tất cả nguồn điện đều tạo thành sự cố micro usb và điều này có thể chúng được kết nối trực tiếp với pin sạc dự phòng hoặc cổng USB

Bước 3: Xây dựng

Tòa nhà
Tòa nhà
Tòa nhà
Tòa nhà
Tòa nhà
Tòa nhà
Tòa nhà
Tòa nhà

Điều khiển từ xa chủ yếu là tấm ván ép khổ A4 3mm, 6mm hoặc 9mm, chúng được cắt trên máy CNC của tôi, tuy nhiên bằng cách sử dụng mẫu được cung cấp, tôi sẽ mặc dù không thể làm bằng tay

Tôi hy vọng mẫu và ảnh sẽ cung cấp cho bạn tất cả những gì bạn cần để làm lại tuy nhiên có một số lưu ý có thể hữu ích

Giá đỡ Nút nhấn 3mm là để gắn nút nhấn vào, khoảng trống sẽ định vị nút ở đúng vị trí nhưng chúng tôi cho phép bạn tiếp cận chân ở mặt sau để bạn có thể hàn vào vi mạch, ở mặt sau, bạn cũng có thể lắp MDBT42Q bằng cách sử dụng một số keo. Ở mặt trước, bạn sẽ cần phải thêm bọt để tạo độ nảy cho các nút khi bạn nhấn xuống, bạn cũng có thể sử dụng lò xo

Các nút 9mm sẽ cần sơn, khắc của logo hoặc một thứ gì đó khác để hiển thị nút nào có chức năng gì

Cần / Tay cầm sẽ cần được xếp lớp, tôi đã sử dụng chốt 6mm để giúp căn chỉnh chúng ở tất cả các vị trí chính xác

Đề xuất: