Isi kandungan:

Jauh Bluetooth Kayu untuk Kereta Api Lego Duplo: 3 Langkah (dengan Gambar)
Jauh Bluetooth Kayu untuk Kereta Api Lego Duplo: 3 Langkah (dengan Gambar)

Video: Jauh Bluetooth Kayu untuk Kereta Api Lego Duplo: 3 Langkah (dengan Gambar)

Video: Jauh Bluetooth Kayu untuk Kereta Api Lego Duplo: 3 Langkah (dengan Gambar)
Video: Viral! Anak dan ibu diusir dari KRL?? 2024, November
Anonim
Jauh Bluetooth Kayu untuk Kereta Api Lego Duplo
Jauh Bluetooth Kayu untuk Kereta Api Lego Duplo
Alat Jauh Bluetooth Kayu untuk Kereta Api Lego Duplo
Alat Jauh Bluetooth Kayu untuk Kereta Api Lego Duplo

Anak-anak saya sangat menyukai kereta Lego Duplo kecil ini terutama anak bongsu saya yang sukar untuk berkomunikasi dengan kata-kata, jadi saya mahu membinanya sesuatu yang akan membantunya bermain dengan kereta api tanpa mengira orang dewasa atau telefon / tablet. Sesuatu yang akan menambahkan dimensi tambahan pada kereta api dan memberikan nilai permainan tambahan

Set Lego sudah memiliki beberapa cara untuk mengendalikan kereta api, anda dapat mendorongnya ke depan untuk memulakan dan menahannya untuk menghentikannya, anda dapat mengendalikannya menggunakan tanda warna yang berada di trek sehingga ketika kereta api melaluinya memicu tindakan yang berbeza iaitu maju, mundur, bunyi main menghidupkan lampu. Anda juga boleh memuat turun aplikasi untuk telefon atau tablet yang dapat menyambung ke kereta api melalui bluetooth.

Berikut ulasan penuh kereta api

Setelah berkeliaran di internet, saya dapati terdapat beberapa orang yang mempunyai kod bertulis yang siap untuk mengendalikan kereta api. Node 'Poweredup' yang ditulis oleh nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) kelihatan seperti permulaan yang sempurna, ditulis menggunakan Javascript yang saya tidak biasa dengan sebahagiannya tetapi berfikir jika saya dapat menemui microchip berasaskan java, ini akan menjadi permulaan yang baik.

Sekali lagi setelah berburu di internet lagi saya menjumpai sistem espruino, ini serupa dengan ardiuno tetapi berpusat di sekitar javascript. Kod espriuno dapat dimuat ke MDBT42Q mircochip yang telah disematkan bluetooth. Saya fikir jika saya dapat memuatkan modul "dihidupkan" ke sana, saya akan berada di separuh jalan, tetapi ini tidak mudah kerana modul yang terdapat di banyak perpustakaan besar untuk dimuat di MDBT42Q, jadi nampaknya saya harus cari jalan penyelesaian yang lebih mudah….

Langkah 1: Kodnya

Kod tersebut
Kod tersebut

Esprinuo

Bagi mereka yang tidak mengetahui platform Espruino https://www.espruino.com (dan saya tidak) adakah ini sangat serupa dengan Arduino, Terdapat beberapa perbezaan utama yang ditulisnya untuk javascript berbanding c, Rasanya sedikit lebih baru jadi tidak ada contoh namun sokongan melalui forum sangat bagus dan sangat membantu.

Javascript memenuhi kereta api

Rintangan pertama adalah menyambung ke kereta api melalui bluetooth, Ini dapat dilakukan menggunakan kelas NRF yang disertakan dalam kod espruino.

NRF.connect boleh digunakan untuk menyambung ke kereta api namun keperluan pertama anda untuk mencari alamat kereta api itu sendiri, anda boleh menggunakan NRF.findDevices untuk mendapatkan maklumat ini

Setelah anda melakukan ini, anda perlu menghantar kereta dua nilai untuk berjabat tangan dengan kereta api, kerana kereta saya ini adalah "00001623-1212-efde-1623-785feabcd123" diikuti oleh "00001624-1212-efde-1623-785feabcd123" Saya percaya ini akan sama untuk semua set kereta api tetapi versi lain iaitu set kargo mungkin berbeza

Setelah anda memilikinya, anda boleh menyambungkan kereta api menggunakan fungsi seperti berikut, bolehkah anda mengetahui kapan kereta api itu tersambung kerana ia akan menyala lampu depannya dengan warna biru

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

console.log ("Mula menyambung2"); gatt = g; kembali gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). kemudian (fungsi (perkhidmatan) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). kemudian (fungsi (ciri) {Characteristic_store = characteristic; return characteristic.readValue ();}).then (value => {console.log (value);}). kemudian (function () {console.log ("Train Connected"); disambungkan = 1;

Perkara yang menyeronokkan

Sekarang anda bersambung dengan kereta api sudah tiba masanya untuk semua perkara menyeronokkan seperti menggerakkannya ke hadapan, mengeluarkan suara dan menyalakan dan mematikan lampu. Ini adalah tugas mudah untuk menghantar kereta api nilai persiapan, diikuti dengan perintah sebenarnya iaitu

fungsi main_horn () {

console.log ("message =", Characteristic_store); const prepval = Uint8Array baru ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = Uint8Array baru ([0x08, 0x00, 0x81, 0x01, 0x11, 0x51, 0x01, 0x09]); Characteristic_store.writeValue (prepval).then (_ => {Characteristic_store.writeValue (sendvalue);}); }

Anda mungkin perlu melakukan sedikit penggalian untuk mencari perintah lain daripada yang saya gunakan

Butang dan Tuas

Bahagian fizikal alat kawalan jauh sangat lurus ke depan dengan empat butang (untuk memainkan bunyi, menyalakan dan mematikan lampu) dan satu potensiometer yang disambungkan ke tuas sehingga anda dapat mengawal kelajuan dan arah kereta api

Butang tidak memerlukan perintang tarik sebaliknya anda boleh melakukan ini dalam kod, iaitu

pinMode (D15, 'input_pulldown');

Anda boleh menyambungkan potensiometer ke salah satu input dan kemudian membacanya isyarat analog menggunakan arahan berikut

pembacaan var = analogRead (D31);

Perbezaan lain untuk arduino adalah bahawa esprunio tidak mempunyai persediaan dan gelung. Oleh itu, saya meletakkan semua perintah / pemicu yang terpisah ke dalam fungsi dan kemudian mengatur setInterval yang mengulangi setiap 100 milisaat, mendengar butang kemudian menjalankan fungsi yang diperlukan ketika butang telah ditekan.

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

Menggerakkan tuas sedikit lebih rumit kerana mahu dapat menyesuaikan kelajuan secara bertahap jadi pertama saya harus menghantar nilai analog untuk berfungsi

pembacaan var = analogRead (D31);

train_direction (membaca * 1024);

Kemudian dalam fungsi train_direction saya memecah perintah kepada 6 kenaikan yang berbeza berdasarkan nilai pot

Sepanjang perjalanan, memberitahu kereta api akan bergerak dengan laju

Separuh jalan ke atas, menyuruh kereta bergerak maju dengan kelajuan 50%

Tengah, suruh kereta berhenti

Separuh jalan ke bawah, menyuruh kereta bergerak ke belakang dengan kelajuan 50%

Sepanjang perjalanan, suruh kereta api bergerak dengan laju penuh secara terbalik

iaitu

fungsi train_direction (dir_val) {

//console.log("message = ", Characteristic_store); const prepval = Uint8Array baru ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = Uint8Array baru ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x00]); jika (dir_val> 300 && dir_val 400 && dir_val 500) {const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x64]); } jika (dir_val 200) {const sendvalue = Uint8Array baru ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xe2]); } if (dir_val 100) {const sendvalue = Uint8Array baru ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xce]); } jika (dir_val {Characteristic_store.writeValue (sendvalue);}); }

Kod penuh boleh didapati untuk pautan di bawah

Langkah 2: Pendawaian

Pendawaian
Pendawaian
Pendawaian
Pendawaian

Pendawaian adalah bahagian paling mudah

Ia hanya terdiri daripada 4 butang tekan yang disambungkan ke D15, D16, D17 dan D18 tanpa sebarang perintang penarik kerana ini dilakukan dalam kod dan 1 perintang 10k disambungkan ke D31

Saya masih mengusahakan bekalan kuasa tetapi pada masa ini semua kuasa datang dari pemecahan USB mikro dan ini mungkin mereka disambungkan terus ke bank kuasa atau port USB

Langkah 3: Binaan

Binaan
Binaan
Binaan
Binaan
Binaan
Binaan
Binaan
Binaan

Alat kawalan jauh kebanyakannya terdiri daripada kepingan papan lapis 3mm, 6mm atau 9mm A4, mereka memotong mesin CNC saya tetapi menggunakan templat dengan syarat saya akan melakukannya walaupun tidak mustahil untuk dilakukan dengan tangan

Saya berharap templat dan gambar akan memberikan semua yang anda perlukan untuk membuat semula tetapi terdapat beberapa nota yang mungkin dapat membantu

Pemasangan Tombol Tekan 3mm adalah untuk melekatkan butang tekan, jurang akan meletakkan butang di tempat yang betul tetapi kami membenarkan anda mengakses kaki di bahagian belakang sehingga anda dapat menyolder ke microchip, di belakang anda juga dapat memasang MDBT42Q menggunakan sebilangan gam. Di bahagian depan anda perlu menambahkan busa sehingga memberikan butang sedikit melambung ketika anda menekannya ke bawah, anda juga boleh menggunakan mata air

Butang 9mm memerlukan logo sama ada cat, ukiran atau sesuatu yang lain untuk menunjukkan butang melakukan apa

Tuas / Pegangan perlu dilapisi, saya menggunakan dowel 6mm untuk membantu menyelaraskannya di semua kedudukan yang betul

Disyorkan: