İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Eski bir TT ölçekli tren modeli sistemine sahip olduğum için lokomotifleri tek tek nasıl kontrol edeceğime dair bir fikrim vardı.
Bunu akılda tutarak, bir adım daha ileri gittim ve sadece trenleri kontrol etmek için değil, tüm yerleşim hakkında bazı ek bilgilere sahip olmak ve başka bir şeyi (lambalar, ray anahtarları…) kontrol etmek için neyin gerekli olduğunu anladım.
WiFi kontrollü model tren sistemi böyle doğdu.
Adım 1: Çalışma Prensipleri
Ana prensip, her bir elemanı tek bir kontrolörden veya birden fazla kontrol kaynağından ayrı ayrı kontrol etmektir. Bu, doğası gereği ortak bir fiziksel katmana - en açık şekilde WiFi - ve ortak bir iletişim protokolü olan MQTT'ye ihtiyaç duyar.
Merkezi unsur MQTT Broker'dır. Her bağlı cihazın (tren, sensör, çıkış…) yalnızca Broker aracılığıyla iletişim kurmasına izin verilir ve yalnızca Broker'dan veri alabilir.
Cihazların kalbi, ESP8266 tabanlı bir WiFi denetleyicisidir, MQTT komisyoncusu ise bir Raspberry pi üzerinde çalışır.
İlk başta Wifi kapsama alanı bir WiFi yönlendirici tarafından sağlanır ve her şey kablosuz olarak bağlanır.
4 tür cihaz vardır:
- Tren kontrolörü: 2 dijital giriş, 1 dijital çıkış, 2 PWM çıkışı vardır (2 ayrı DC motoru kontrol etmek için), - Sensör kontrolörü: 7 dijital girişe sahiptir (giriş anahtarları, optosensörler için…), - Çıkış kontrolörü: 8 dijital çıkışa sahiptir (ray anahtarları için…), - WiFi uzaktan kumanda: 1 artımlı enkoder girişi, 1 dijital giriş (trenleri uzaktan kontrol etmek için) vardır.
Sistem ayrıca Node-Red'den (tabletten, PC'den veya akıllı telefondan…) çalışabilir.
Adım 2: MQTT Veri Değişimi ve Konfigürasyonu
MQTT protokolüne göre, her cihaz ilk başta belirli bir konuya abone olur ve başka bir konuya yayın yapabilir. Bu, tren kontrol ağının iletişiminin temelidir.
Bu iletişim hikayeleri, kısa ve insan tarafından okunabilir olması için JSON formatlı mesajlar aracılığıyla gerçekleşir.
Daha uzak bir perspektiften bakıldığında: Ağın kendi SSID'si (ağ adı) ve parolası olan bir WiFi yönlendiricisi vardır. Her cihazın WiFi ağına erişmek için bu 2'yi bilmesi gerekir. MQTT aracısı da bu ağın bir parçasıdır, bu nedenle MQTT protokolünü kullanmak için her aygıtın aracının IP adresini bilmesi gerekir. Ve son olarak, her cihazın abone olmak ve mesaj yayınlamak için kendi konusu vardır.
Pratik olarak, belirli bir uzaktan kumanda, belirli bir trenin abone olduğu mesajları yayınlamak için aynı konuyu kullanır.
Adım 3: Tren Kontrolörü
Bir oyuncak treni kontrol etmek için temel olarak 3 şeye ihtiyacımız var: bir güç kaynağı, WiFi özellikli bir kontrolör ve motor sürücü elektroniği.
Güç kaynağı gerçek kullanım planına bağlıdır: LEGO durumunda, bu Power Functions pil kutusudur, "oldschool" TT veya H0 ölçekli tren seti durumunda bu, yolun 12V güç kaynağıdır.
WiFi özellikli denetleyici bir Wemos D1 mini (ESP8266 tabanlı) denetleyicidir.
Motor sürücü elektroniği, TB6612 tabanlı bir modüldür.
Tren kontrolörü, 2 ayrı ayrı kontrol edilen PWM çıkışına sahiptir. Aslında biri motor kontrolü için, diğeri ise ışıklı sinyalizasyon için kullanılır. Reed kontağı tabanlı algılama için 2 giriş ve bir dijital çıkışa sahiptir.
Denetleyici, JSON mesajlarını WiFi ve MQTT protokolü aracılığıyla kabul eder.
SPD1 motoru kontrol eder, örneğin: motoru %80 güçte geri hareket ettirmek için {"SPD1":-204} mesajı kullanılır (maksimum hız değeri -255'tir).
SPD2, "yön duyarlı" LED ışığının yoğunluğunu kontrol eder: {"SPD2": -255} mesajı (geriye doğru) LED'in tam gücünde parlamasını sağlar.
OUT1 dijital çıkışın durumunu kontrol eder: {"OUT1": 1} çıkışı açar.
Bir girişin durumu değişirse, kontrolör buna göre bir mesaj gönderir: {"IN1": 1}
Denetleyici geçerli bir mesaj alırsa, onu yürütür ve aracıya bir geri bildirim sağlar. Geri bildirim, gerçekte yürütülen komuttur. Örneğin: komisyoncu {"SPD1": 280} gönderirse, motor tam güçte çalışıyordur ancak geri bildirim mesajı şöyle olacaktır: {"SPD1": 255}
4. Adım: LEGO Tren Kontrolü
LEGO treni durumunda şemalar biraz farklıdır.
Güç doğrudan pil kutusundan gelir.
ESP8266 tabanlı Lolin kartı için 3.5V sağlamak için mini bir düşürücü dönüştürücüye ihtiyaç vardır.
Bağlantılar, ikiye kesilmiş bir LEGO 8886 uzatma kablosuyla yapılır.
Adım 5: Uzaktan Kumanda
Kontrolör yalnızca trene mesajlar yayınlar (BCD anahtarı tarafından tanımlanır).
Kodlayıcı döndürülerek, uzaktan kumanda {"SPD1": "+"} veya {"SPD1": "-"} mesajları gönderir.
Tren bu "artımlı tip" mesajını aldığında, PWM çıkış değerini 51 veya -51 değiştirir.
Bu şekilde uzaktan kumanda, trenin hızını 5 adımda (her yönde) değiştirebilir.
Artımlı kodlayıcıya basıldığında {"SPD1": 0} gönderilir.
Adım 6: Sensör Kontrolörü
Sözde sensör denetleyicisi, girişlerinin durumlarını ölçer ve bunlardan herhangi biri değişirse bu değeri yayınlar.
Örneğin: {"IN1": 0, "IN6": 1} bu örnekte aynı anda 2 girişin durumu değişti.
Adım 7: Çıkış Denetleyicisi
Çıkış denetleyicisi, ULN2803 tabanlı bir modüle bağlı 8 dijital çıkışa sahiptir.
Abone olduğu konu üzerinden mesajlar alır.
Örneğin {"OUT4": 1, "OUT7": 1} mesajı 4. ve 7. dijital çıkışı açar.
8. Adım: Raspberry Pi ve WiFi Yönlendirici
Kullanılmış bir TP-Link WiFI yönlendiricim vardı, bu yüzden bunu bir Erişim Noktası olarak kullandım.
MQTT komisyoncusu, Mosquitto'nun kurulu olduğu bir Raspberry Pi'dir.
MQTT ile birlikte standart Raspbian OS kullanıyorum:
sudo apt-get install mosquitto sivrisinek istemcileri python-sivrisinek
TP-Link yönlendirici, Raspberry için bir adres rezervasyonuna sahip olacak şekilde yapılandırılmalıdır, böylece her yeniden başlatmadan sonra Pi aynı IP adresine sahip olur ve her cihaz ona bağlanabilir.
Ve bu kadar!
9. Adım: Tamamlanmış Kontrolörler
İşte bitmiş kontrolörler.
TT ölçekli loko o kadar küçük bir boyuta sahip ki, bir Lolin tahtasının trene sığacak kadar küçük olması için daraltılması (kesilmesi) gerekiyordu.
Derlenmiş ikili dosyalar indirilebilir. Güvenlik nedeniyle, çöp kutusu uzantısı txt olarak değiştirildi.