İçindekiler:
Video: Lego Duplo Train için Ahşap Bluetooth Uzaktan Kumanda: 3 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Çocuklarım bu küçük Lego Duplo trenini sevdiler, özellikle kendini kelimelerle ifade etmekte zorlanan en küçüğüm, bu yüzden ona trenle yetişkinlerden veya telefonlardan/tabletlerden bağımsız olarak oynamasına yardımcı olacak bir şey inşa etmek istedim. Trene ekstra bir boyut katacak ve ona ekstra oyun değeri verecek bir şey
Lego setinin treni kontrol etmek için zaten birkaç yolu var, başlatmak için ileri itebilir ve durdurmak için basılı tutabilirsiniz, rayda giden renk etiketlerini kullanarak kontrol edebilirsiniz, böylece tren üzerinden geçtiğinde farklı eylemleri tetikler, yani ileri, geri, ses çal, ışıkları aç. Ayrıca telefonunuz veya tabletiniz için bluetooth üzerinden trene bağlanabilen bir uygulama indirebilirsiniz.
İşte trenin tam bir incelemesi
İnternette biraz araştırdıktan sonra, treni kontrol etmek için tüm hazır yazılı kodları olan oldukça az sayıda farklı insan olduğunu gördüm. nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) tarafından yazılan 'Poweredup' düğümü mükemmel bir başlangıç gibi görünüyordu, Kısmen aşina olmadığım ama düşündüm ki Javascript kullanılarak yazılmıştır. Java tabanlı mikroçip bulabilirseniz bu iyi bir başlangıç olur.
Yine internette dolaştıktan sonra espruino sistemini buldum, bu ardiuno'ya benzer ama javascript tabanlı. Espriuno kodu, bluetooth gömülü olan bir MDBT42Q mircochip'e yüklenebilir. "Güçlendirilmiş" modülü yükleyebilseydim, orada yarı yolda olacağımı düşündüm, ancak bu basit bir modül, MDBT42Q'ya yüklemek için birçok kütüphanede bulunan büyük bir modül değildi, bu yüzden öyle görünüyor ki yapmak zorundayım. daha basit bir çözüm bulun….
Adım 1: Kod
Esprinuo
Espruino platformunu bilmeyenler için https://www.espruino.com (ve ben yapmadım) Arduino'ya çok benziyor mu, C yerine javascript için yazdığı birkaç ana fark var, Biraz daha yeni geliyor bu yüzden örnekler yok, ancak forumlar aracılığıyla verilen destek harika ve çok yardımcı oluyor.
Javascript trenle tanışın
İlk engel, trene bluetooth üzerinden bağlanmaktı, Bu, espruino koduyla birlikte gelen NRF sınıfı kullanılarak yapılabilir.
NRF.connect, trene bağlanmak için kullanılabilir, ancak ilk önce trenin adresini bulmanız gerekir, bu bilgiyi almak için NRF.findDevices'ı kullanabilirsiniz.
Bunu yaptıktan sonra, trenle el sıkışmak için trene iki değer göndermeniz gerekir, benim trenim için bu "00001623-1212-efde-1623-785feabcd123" ve ardından "00001624-1212-efde-1623-785feabcd123" idi sanırım bu tüm buharlı tren seti için aynı olacak ancak diğer versiyonlar yani kargo seti farklı olabilir
Buna sahip olduğunuzda, aşağıdaki gibi bir işlevi kullanarak treni bağlayabilirsiniz, trenin ne zaman bağlandığını, mavi renkte yanıp söneceğini söyleyebilir misiniz?
NRF.connect("e0:7d:ea:0c:03:29").then(function(g) {
console.log("Bağlantı başlatılıyor2"); gatt = g; gatt.getPrimaryService("00001623-1212-efde-1623-785feabcd123"); }).then(function(service) { return service.getCharacteristic("00001624-1212-efde-1623-785feabcd123"); }).then(function(characteristic) { Karakteristik_store = karakteristik; dönüş özelliği.readValue(); }).then(değer => { console.log(değer); }).then(function() { console.log("Tren Bağlı"); bağlı = 1;
eğlenceli şeyler
Artık trene bağlandınız, treni ilerletmek, ses çıkarmak ve ışığı açıp kapatmak gibi tüm eğlenceli şeylerin zamanı geldi. Trene bir hazırlık değeri göndermek basit bir iş, ardından asıl komut yani
işlev play_horn() {
konsol.log("mesaj = ", Karakteristik_store); 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]); Characteristic_store.writeValue(prepval).then(_ => { Characteristic_store.writeValue(sendvalue); }); }
Kullandıklarımdan başka bir komut bulmak için biraz araştırma yapmanız gerekebilir.
Düğmeler ve Kollar
Uzaktan kumandanın fiziksel tarafı, dört düğme (sesleri çalmak, ışıkları açıp kapatmak için) ve trenin hızını ve yönünü kontrol edebilmeniz için kola bağlanan bir potansiyometredir.
Düğmenin çekme direncine ihtiyacı yoktur, bunun yerine bunu kodda yapabilirsiniz, yani
pinMode(D15, 'input_pulldown');
Potansiyometreyi girişlerden birine bağlayabilir ve ardından aşağıdaki komutu kullanarak analog sinyali okuyabilirsiniz.
var okuma = analogRead(D31);
Arduino'nun diğer farkı, esprunio'nun bir kurulum ve döngüye sahip olmamasıdır. Bunun yerine, tüm ayrı komutları/tetikleyicileri işlevlere yerleştiriyorum ve ardından her 100 milisaniyede bir döngüye giren setInterval ayarını yapıyorum, düğmeyi dinliyorum ve düğmeye basıldığında gerekli işlevi çalıştırıyorum.
if (digitalRead(D15) == 1) { play_horn(); }
Hızı kademeli olarak ayarlayabilmek istediğim için kolu hareket ettirmek biraz daha karmaşıktı, bu yüzden önce analog değeri işleve göndermek zorunda kaldım.
var okuma = analogRead(D31);
train_direction(okuma * 1024);
Sonra train_direction işlevinde, pot değerine göre komutu 6 farklı artışa böldüm.
Tamamen yukarı, trene tam hızda ilerlemesini söyler
Yolun yarısında, trene %50 hızla ilerlemesini söyler
Orta, trene durmasını söyler
Yarı yolda, trene %50 hızla geri gitmesini söyler
Tamamen aşağı, trene tam hızda geri gitmesini söyler
yani
function train_direction(dir_val) {
//console.log("mesaj = ", Karakteristik_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 { Characteristic_store.writeValue(sendvalue); }); }
Tam kod aşağıdaki bağlantı için aşağı olabilir
Adım 2: Kablolama
Kablolama en basit kısımdı
Kodda olduğu gibi herhangi bir çekme direnci olmadan D15, D16, D17 ve D18'e bağlı 4 buton ve D31'e bağlı 1 10k dirençten oluşuyordu.
Hala güç kaynağı üzerinde çalışıyorum ama şu anda tüm güç bir mikro usb çıkışından geliyor ve bu doğrudan bir güç bankasına veya bir USB bağlantı noktasına bağlanabilirler
Adım 3: Yapı
Uzaktan kumanda çoğunlukla 3 mm, 6 mm veya 9 mm A4 kontrplak levhalardan oluşuyor, CNC makinemde kesiliyorlar, ancak sağlanan şablonu kullanarak elle yapmak imkansız olmasa da
Şablonun ve fotoğrafların size yeniden düzenlemeniz için gereken her şeyi vereceğini umuyorum, ancak yardımcı olabilecek birkaç not var
3mm Basma Düğmesi montajı, basma düğmesini yapıştırmak içindir, boşluk düğmeyi doğru yere yerleştirecektir ancak mikroçipi lehimleyebilmeniz için arkadaki bacağa erişmenize izin veriyoruz, ters tarafta MDBT42Q'yu da monte edebilirsiniz biraz tutkal kullanarak. Ön tarafa o kadar köpük eklemeniz gerekecek ki, düğmelere bastığınızda biraz zıplasın, ayrıca yayları da kullanabilirsiniz.
9 mm'lik düğmeler, hangi düğmenin ne yaptığını göstermek için logonun boyasına, gravürüne veya başka bir şeye ihtiyaç duyacaktır.
Kolun/Kolun katmanlanması gerekecek, tüm doğru konumlarda hizalamalarına yardımcı olması için 6 mm'lik bir dübel kullandım
Önerilen:
2262/2272 M4 Ekmek Tahtası ve Maker için Röle ile DIY Uzaktan Kumanda Anahtarı Kiti: 4 Adım (Resimlerle)
2262/2272 M4 Ekmek Tahtası ve Maker için Röle DIY Uzaktan Kumanda Anahtarı Kiti: akıllı ev hayatımıza geliyor. akıllı evin gerçekleşmesini istiyorsak, birçok uzaktan kumanda anahtarına ihtiyacımız var. bugün bir test yapacağız, uzaktan kumanda anahtarı teorisini öğrenmek için kolay bir devre yapacağız. SINONING ROBOT tarafından bu kit tasarımı
Arduino Projeniz İçin Evde Profesyonel Görünümlü Bir Uzaktan Kumanda Yapmak: 9 Adım (Resimlerle)
Evde Arduino Projeniz için Profesyonel Görünümlü Bir Uzaktan Kumanda Yapma: Birkaç şeyi kontrol etmek için bir arduino ve bir IR uzaktan kumanda kütüphanesi kullanan bir proje yaptım. bir sonraki projenizi kullandım. Ve iyi bir tuvalet yapmak için süslü bir şeye ihtiyacınız yok
Arduino İle 2.4Ghz NRF24L01 Modülünü Kullanan Kablosuz Uzaktan Kumanda - Nrf24l01 Quadcopter için 4 Kanal / 6 Kanal Verici Alıcı - Rc Helikopter - Arduino Kullanan Rc Uçak: 5 Adım (Resimlerle)
Arduino İle 2.4Ghz NRF24L01 Modülünü Kullanan Kablosuz Uzaktan Kumanda | Nrf24l01 Quadcopter için 4 Kanal / 6 Kanal Verici Alıcı | Rc Helikopter | Arduino Kullanan Rc Uçak: Bir Rc araba çalıştırmak için | Quadcopter | dron | RC uçak | RC tekne, her zaman bir alıcı ve vericiye ihtiyacımız var, RC QUADCOPTER için 6 kanallı bir verici ve alıcıya ihtiyacımız olduğunu ve bu tür TX ve RX'in çok maliyetli olduğunu varsayalım, bu yüzden bir tane yapacağız
Stm32'ye Düşmek: Ev Medya Merkezi için Uzaktan Kumanda: 4 Adım (Resimlerle)
Stm32'ye Düşmek: Ev Medya Merkezi için Uzaktan Kumanda: Bu, 'bluepill' kartı olarak bilinen stm32f103c8t6, smt32 mikro denetleyiciye dayalı ev medya merkezi uzaktan kumandası için eksiksiz bir prototiptir. Ev medya merkezi için bir PC kullandığınızı varsayalım. Yerleştirmenizi sağlayan çok esnek bir çözümdür
PC Youtube ve Netflix için Uzaktan Kumanda: 9 Adım (Resimlerle)
PC Youtube ve Netflix için Uzaktan Kumanda: Masaüstü bilgisayar ölçüm cihazım yatağımdan uzakta olduğu için doğal olarak yatağımın rahatlığında youtube ve film izlemeyi seviyorum. Ancak her uzandığımda sesi ayarlamam, bazı nedenlerle videoyu duraklatmam veya videoyu tamamen atlamam gerektiğini hissediyorum.