İçindekiler:
Video: Bahçe Treni - Arduino Kablosuz NMRA DCC: 4 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Ölü ray sistemi üzerinde DCC ile daha önce verilen talimatlara ek olarak, bu fikri tuş takımı ve LCD ekranlı elde tutulan bir DCC Komuta İstasyonu ile daha da geliştirdim. Komuta İstasyonu, NMRA DCC talimatları için gereken tüm kodlamayı içerir, ancak, raylara bağlanmak yerine, veriler, RF24L01+ radyo modülü tarafından, odanın izin verdiği her yerde, bir kamyona veya loco'nun altına monte edilmiş bir alıcıya aktarılır.
Tabii ki, lokomotifleriniz, motor motorlarına uygun yük kapasitesine sahip bir kod çözücü ile donatılmalıdır.
Adım 1: Sistem Tasarımı
Arduino Pro Mini, tasarımın kalbinde yer almaktadır. Devreyi geliştirmek ve PCB üretmek için Fritzing kullanmak.
Hem verici hem de alıcı için aynı PCB'yi kullanabildim, böylece bazı maliyetlerden tasarruf ettim.
Vericinin tuş takımı ve LCD için bağlantıları vardır ve alıcı bunlara ihtiyaç duymaz ve lokomotif için DCC çıkışını sağlamak için H köprüsünü kullanır.
Daha güçlü bir lokomotif için gerekirse daha büyük bir H-köprü için bağlantılar içeren başka bir geliştirme.
PCF8574, sırt çantasıyla birlikte gelen ve Arduino'daki SCA / SCL bağlantılarının ekranı yalnızca 2 kablo kullanarak beslemesine izin veren bir LCD ekran kullanırsanız silinebilir. Parça listesi: Toplam = DCC Komuta İstasyonu + 1 alıcı için yaklaşık 60 £Ek alıcı maliyeti = her biri yaklaşık 10,00 £. + piller
Arduino Pro Mini. x 2 = 4,00 £
4x3 membran tuş takımı = 3,00 £
20 x 4 LCD ekran = 7,00 £
PCF5874 = 1,80 £
NRF24L01+. radyo modülleri x 2 = 5,80 £
10 kapalı devre için PCB üretimi (veya Vero kartı kullanılabilir) = 2 kapalı için 24 £ veya 4,80 £
3,3 v Regülatör = 0,17 £ (RS Comp'tan 25'li paket)
5v Regülatör LM7805 = £0,30
H-köprü SN754410ne = 3,00 £
Lloytron yeniden şarj edilebilir 2700 maH AA pil x 12 = 22,00 £. (düşük maH dereceli piller daha ucuzdur)
Kondansatörler, kaplar, pimler, konektörler vb. = yaklaşık 2,00 £
Muhafaza 190x110x60 mm = 8,00 £
Verici - telefon şarj cihazı / pil = 2,00 £
2. Adım: Verici
Arduino Pro Mini üzerindeki D2 - D8 pinlerinin tuş takımına bağlı olduğu devre şeması gösterilmektedir. Hız ayarı için Analog pin A0'a 100k ohm'luk bir potansiyometre bağlanır. PCF8574 çipini oluşturan SDA ve SCL pinleri A4 pinlerine bağlanır ve Arduino Pro Mini üzerindeki A5, Pro Mini'nin üst katmanındaki pimlere lehimli teller vasıtasıyla.
Arduino taslağı indirilmek üzere eklenmiştir.
Her satırda 20 karakter olmak üzere 4 satır bilgi sağlayan 20 x 4 LCD ekran kullandım. Tuş takımı aşağıdaki menüyü sağlar:
1 ila 9 = lokomotif adresi * = yön 0 = ışıklar # = 1 ila 8 tuşlar için fonksiyon menüsü
Arduino Pro Mini taslağının temel açıklaması: Kodun bu satırı, DCC mesajını HEX formatında düzenler. struct Mesaj msg[MAXMSG] = {
{ { 0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // boş mesaj
{ { locoAdr, 0, 0, 0, 0, 0, 0}, 3} // 3 bayt adres
};
Her lokomotifin ayarlarını saklamak için aşağıdaki gibi bir dizi dizi ayarlanır:
int la[20];// konum numaralarını tutacak dizi
int sa[20];// hız değerlerini tutacak dizi
int fda[20];// dizini tutacak dizi
int fla[20];// ışıkları tutacak dizi
int f1a[20];// fun1'i tutacak dizi…..
int f8a[20];// fun8'i tutacak dizi
DCC talimatlarının ilerledikçe değiştirilmesini sağlamak için:
Hız talimatları için: void amend_speed (struct Message & x) {
x.data[0] = locoAdr;
x.data[1] = 0x40; // 28 hızlı adımlı locoMsg }
İşlev talimatları için:
void amend_group1 (struct Message & x) {
x.data[0] = locoAdr;
x.data[1] = 0x80; // locoMsg ile grup 1 komutu 0x80 }
Çizimin ana döngüsü:
void loop(void) { if (read_locoSpeed()) { assemble_dcc_msg_speed();
send_data_1(); // verileri kablosuz olarak gönder
gecikme(10);
send_data_3(); // verileri LCD ekranda göster
send_data_4(); // verileri seri monitörde göster }
if (read_function()) {
assemble_dcc_msg_group1();
send_data_1();
gecikme(10);
send_data_3(); } }
Hız değiştiğinde verileri güncelleyin:
boolean read_locoSpeed()Bu, yeni bir lokomotif adresi, hız veya yön ayarını algılar ve HEX 'verilerini' buna göre değiştirir. Burada 28 hız adımı belirledim ve NMRA standardı S 9.2'yi karşılamak için hız verileri bir arama tablosundan bulunmalıdır. 'speed_step()' içinde
void speed_step(){ anahtarı (locoSpeed){
durum 1: veri |= 0x02; kırmak;
durum 2: veri |= 0x12; kırmak;
durum 3: veri |= 0x03; kırmak;
………
durum 28: veri |= 0x1F; kırmak; }}
İşlevler değiştiğinde verileri güncelleyin:
boolean okuma işlevi()
if (fla[locoAdr] == 0) { veri = 0x80;
} // farlar kapalı
if (fla[locoAdr] == 1) {
veri = 0x90;
} // farlar açık
Her İşlev için:
if (f2a[locoAdr] == 0) { veri |= 0; }. // Fonksiyon 2 kapalı
if (f2a[locoAdr] == 1) {
veri |= 0x02; // }'veri' üzerindeki 2. İşlev, ['|=' bileşiği bit düzeyinde veya] her bir İşlev için HEX kodlarını birleştirerek oluşturulur.
Adım 3: Alıcı
Devre şeması, Arduino Pro Mini'nin 5 ve 6 numaralı pinlerinin H köprüsüne sağlanan DCC sinyalini sağlamak için kullanıldığı yerde gösterilmiştir. H-köprü çiftleri, akım kapasitesini artırmak için paralel olarak bağlanır. Loco tarafından çekilen akıma bağlı olarak, 16 pinli DIP cihazına bir soğutucu takılması gerekebilir veya harici olarak ağır hizmet tipi bir H köprüsü bağlanabilir.
Arduino taslağı indirilmek üzere eklenmiştir. DCC sinyali 2MHZ'de çalışan bir saatten oluşur.
void SetupTimer2() bu işi yapar.
Saat, DCC verilerinde '1' için 'kısa darbeler' (58us) ve DCC verilerinde '0' için 'uzun darbeler' (116us) içerir.
Döngü void, radyodan veri alır ve geçerli bir dize bulunursa, veriler DCC verilerine dönüştürülür.
void loop(void){ if (radio.available()){ bool done = false; yapıldı = radyo.oku(inmsg, 1); // alınan verileri oku
karakter rc = inmsg[0]; // okunan karakteri bu diziye koy
if (rc != 0){. // karakter sıfıra eşit değilse
inString.concat(rc); // mesajı oluştur }
if (rc == '\0') { // eğer karakter '/0' ise mesajın sonu
Serial.println(inString); // birleştirilmiş mesajı yazdır
sicim(); // DCC talimatlarını almak için dize mesajını kaldır
} } }
4. Adım: Locos'u çalıştırın
Aynı hat üzerinde birden fazla trenin çalıştırılmasından kaynaklanan verilerin kesintiye uğramasını önlemek için, kullanılan her bir lokomotif ve kamyon için tekerlekler ve hat arasındaki temasları kesmeniz gerekir.
Pist koşullarından bağımsız olarak serbest çalışan trenlerin keyfini çıkarın - ne fark eder! Zorluk yok, start-stop yok ve temizlik gerekli değil.
Kullandığım piller yeniden şarj edilebilir LLoytron AA x 12'dir. Özellikle onlar için 6 adet şarj eden bir şarj cihazı yaptım. (bkz: talimat)
Önerilen:
Kablosuz Bahçe Sistemi: 7 Adım
Kablosuz Bahçe Sistemi: Bu proje Arduino tabanlıdır ve "modüller" kullanır. bitkilerinizi sulamanıza ve sıcaklık, toprak ve yağmurda oturum açmanıza yardımcı olmak için.Sistem 2,4 GHz üzerinden kablosuzdur ve veri göndermek ve almak için NRF24L01 modüllerini kullanır.Nasıl olduğunu biraz açıklayayım
Elli Metre Menzilli Kablosuz Erişim Noktası TP Bağlantılı WN7200ND Raspbian Stretch Üzerinde USB Kablosuz Adaptör: 6 Adım
Elli Metre Menzilli Kablosuz Erişim Noktası TP Link ile Raspbian Stretch üzerinde WN7200ND USB Kablosuz Adaptör: Raspberry Pi, Güvenli Kablosuz Erişim Noktaları oluşturmak için harika ama iyi bir menzile sahip değil, genişletmek için bir TP Link WN7200ND USB Kablosuz Adaptör kullandım. Nasıl yapıldığını paylaşmak istiyorum Neden router yerine ahududu pi kullanayım?
DIY Kablosuz Mikrofondan Kablosuz Gitar Sistemine: 4 Adım
DIY Kablosuz Mikrofondan Kablosuz Gitar Sistemine: Bazı videolar ve bazı gruplar izliyorum ve neredeyse çoğu gitarda kablosuz bir sistem kullanıyor. Delirmek, hareket etmek, yürümek ve ne isterlerse yapsınlar kordon olmadan bu yüzden bir tane olmasını hayal ediyorum.. Ama
Kablosuz Kapı Zilini Kablosuz Alarm Anahtarına veya Açma/Kapama Anahtarına Hackleyin: 4 Adım
Bir Kablosuz Kapı Zilini Kablosuz Alarm Anahtarına veya Açma/Kapama Anahtarına Hackleyin: Yakın zamanda bir alarm sistemi kurdum ve evime kurdum. Kapılarda manyetik anahtarlar kullandım ve onları tavan arasına sabitledim.Pencereler başka bir hikayeydi ve onları sert kablolamak bir seçenek değildi. Kablosuz bir çözüme ihtiyacım vardı ve bu
Kablosuz Yönlendiriciyi Kablosuz Genişletici 2x Erişim Noktasına Dönüştürün: 5 Adım
Kablosuz Yönlendiriciyi Kablosuz Genişletici 2x Erişim Noktasına dönüştürün: Bir RSJ (tavandaki metal destek kirişi) nedeniyle evimde kablosuz internet bağlantım zayıftı ve evin geri kalanı için sinyali artırmak veya ekstra bir genişletici eklemek istedim. Bir elektroda yaklaşık 50 kiloluk uzatıcılar görmüştüm