Model Kereta Kontrol WiFi Menggunakan MQTT: 9 Langkah
Model Kereta Kontrol WiFi Menggunakan MQTT: 9 Langkah
Anonim
Model Kereta Kontrol WiFi Menggunakan MQTT
Model Kereta Kontrol WiFi Menggunakan MQTT

Memiliki sistem model kereta skala TT lama, saya punya ide bagaimana mengontrol loco secara individual.

Dengan pemikiran ini, saya melangkah lebih jauh dan menemukan apa yang diperlukan untuk tidak hanya mengendalikan kereta tetapi juga memiliki beberapa informasi tambahan tentang keseluruhan tata letak dan mengendalikan sesuatu yang lain (lampu, sakelar rel…)

Inilah bagaimana sistem kereta model yang dikendalikan WiFi lahir.

Langkah 1: Prinsip Operasi

Prinsip Operasi
Prinsip Operasi

Prinsip utamanya adalah mengontrol setiap elemen secara individual, baik dari satu pengontrol, atau dari beberapa sumber kontrol. Ini secara inheren membutuhkan lapisan fisik umum - paling jelas WiFi - dan protokol komunikasi umum, MQTT.

Elemen utamanya adalah Broker MQTT. Setiap perangkat yang terhubung (kereta, sensor, output…) hanya diperbolehkan berkomunikasi melalui Broker dan hanya dapat menerima data dari Broker.

Jantung perangkat adalah pengontrol WiFi berbasis ESP8266, sedangkan broker MQTT berjalan pada Raspberry pi.

Pada awalnya cakupan Wifi disediakan oleh router WiFi, dan semuanya terhubung melalui nirkabel.

Ada 4 jenis perangkat:

- Train controller: memiliki 2 input digital, 1 output digital, 2 output PWM (untuk mengendalikan 2 motor DC individu), - Pengontrol sensor: memiliki 7 input digital (untuk sakelar input, optosensor…), - Pengontrol keluaran: memiliki 8 keluaran digital (untuk sakelar rel…), - Remote WiFi: memiliki 1 input encoder tambahan, 1 input digital (untuk mengontrol kereta dari jarak jauh).

Sistem ini juga mampu beroperasi dari Node-Red (dari tablet, PC, atau smartphone…).

Langkah 2: Pertukaran dan Konfigurasi Data MQTT

Pertukaran dan Konfigurasi Data MQTT
Pertukaran dan Konfigurasi Data MQTT

Berdasarkan protokol MQTT, pada awalnya setiap perangkat berlangganan topik tertentu, dan dapat mempublikasikan ke topik lain. Ini adalah dasar dari komunikasi jaringan kendali kereta api.

Kisah-kisah komunikasi ini ditempatkan melalui pesan berformat JSON, menjadi pendek dan dapat dibaca manusia.

Melihat dari perspektif yang lebih jauh: Jaringan memiliki router WiFi dengan SSID (nama jaringan) dan kata sandinya sendiri. Setiap perangkat harus mengetahui 2 ini untuk mengakses jaringan WiFi. Broker MQTT juga merupakan bagian dari jaringan ini, jadi untuk menggunakan protokol MQTT setiap perangkat harus mengetahui alamat IP broker. Dan terakhir, setiap perangkat memiliki topiknya sendiri untuk berlangganan dan memublikasikan pesan.

Secara praktis, remote control yang diberikan menggunakan topik yang sama untuk mempublikasikan pesan yang menjadi langganan kereta tertentu.

Langkah 3: Melatih Pengendali

Pengendali Kereta
Pengendali Kereta

Untuk mengendalikan kereta mainan, pada dasarnya kita membutuhkan 3 hal: catu daya, pengontrol berkemampuan WiFi, dan elektronik pengemudi motor.

Catu daya tergantung pada rencana penggunaan yang sebenarnya: dalam kasus LEGO, ini adalah kotak baterai Fungsi Daya, dalam kasus set kereta skala TT atau H0 "oldschool", ini adalah catu daya 12V trek.

Pengontrol berkemampuan WiFi adalah pengontrol Wemos D1 mini (berbasis ESP8266).

Elektronik driver motor adalah modul berbasis TB6612.

Pengontrol kereta memiliki 2 output PWM yang dikontrol secara individual. Satu digunakan untuk kontrol motor dan yang lainnya digunakan untuk sinyal cahaya. Memiliki 2 input untuk penginderaan berbasis kontak buluh dan satu output digital.

Pengontrol menerima pesan JSON melalui protokol WiFi dan MQTT.

SPD1 mengontrol motor, misalnya: pesan {"SPD1": -204} digunakan untuk menggerakkan motor mundur pada daya 80% (nilai kecepatan maksimum adalah -255).

SPD2 mengontrol intensitas lampu LED "peka arah": Pesan {"SPD2": -255} membuat (mundur) LED bersinar dengan kekuatan penuhnya.

OUT1 mengontrol status keluaran digital: {"OUT1": 1} menyalakan keluaran.

Jika keadaan input berubah, pengontrol mengirimkan pesan sesuai dengan itu: {"IN1": 1}

Jika pengontrol menerima pesan yang valid, ia mengeksekusinya dan memberikan umpan balik kepada broker. Umpan balik adalah perintah yang benar-benar dieksekusi. Misalnya: jika broker mengirim {"SPD1": 280} maka motor beroperasi dengan kekuatan penuh tetapi pesan umpan baliknya adalah: {"SPD1": 255}

Langkah 4: Kontrol Kereta LEGO

Kontrol Kereta LEGO
Kontrol Kereta LEGO

Dalam kasus kereta LEGO, skemanya sedikit berbeda.

Daya langsung berasal dari kotak baterai.

Ada kebutuhan untuk konverter mini step down untuk menyediakan 3.5V untuk papan Lolin berbasis ESP8266.

Sambungan dibuat dengan kabel ekstensi LEGO 8886, dipotong menjadi dua.

Langkah 5: Pengendali Jarak Jauh

Remote kontrol
Remote kontrol

Pengontrol hanya memublikasikan pesan ke kereta (ditentukan oleh sakelar BCD).

Dengan memutar encoder, remote akan mengirim pesan {"SPD1": "+"} atau {"SPD1": "-"}.

Ketika kereta menerima pesan "tipe tambahan" ini, ia mengubah nilai output PWM-nya sebesar 51 atau -51.

Dengan cara ini remote dapat mengubah kecepatan kereta dalam 5 langkah (setiap arah).

Menekan encoder tambahan akan mengirim {"SPD1": 0}.

Langkah 6: Pengontrol Sensor

Pengontrol Sensor
Pengontrol Sensor

Pengontrol sensor yang disebut mengukur status inputnya, dan jika ada yang berubah, menerbitkan nilai itu.

Misalnya: {"IN1": 0, "IN6": 1} dalam contoh ini 2 input berubah status secara bersamaan.

Langkah 7: Pengontrol Keluaran

Pengontrol Keluaran
Pengontrol Keluaran

Kontroler keluaran memiliki 8 keluaran digital, yang terhubung ke modul berbasis ULN2803.

Ia menerima pesan melalui topik langganannya.

Misalnya pesan {"OUT4": 1, "OUT7": 1} mengaktifkan output digital 4. dan 7.

Langkah 8: Raspberry Pi dan Router WiFi

Saya menggunakan router TP-Link WiFI, jadi saya menggunakan ini sebagai Access Point.

Broker MQTT adalah Raspberry Pi dengan Mosquitto diinstal.

Saya menggunakan OS Raspbian standar dengan MQTT yang diinstal dengan:

sudo apt-get install mosquitto mosquitto-clients python-mosquitto

Router TP-Link harus dikonfigurasi untuk memiliki reservasi alamat untuk Raspberry, jadi setelah setiap restart Pi memiliki alamat IP yang sama dan setiap perangkat dapat terhubung ke sana.

Dan itu saja!

Langkah 9: Pengontrol Selesai

Pengendali Selesai
Pengendali Selesai
Pengendali Selesai
Pengendali Selesai

Berikut adalah pengontrol yang sudah jadi.

Loko skala TT memiliki ukuran yang sangat kecil sehingga papan Lolin harus dipersempit (dipotong) agar cukup kecil untuk masuk ke dalam kereta.

Binari yang dikompilasi dapat diunduh. Untuk alasan keamanan, ekstensi bin diganti menjadi txt.