สารบัญ:

การควบคุม WiFi ของ Model Train โดยใช้ MQTT: 9 ขั้นตอน
การควบคุม WiFi ของ Model Train โดยใช้ MQTT: 9 ขั้นตอน

วีดีโอ: การควบคุม WiFi ของ Model Train โดยใช้ MQTT: 9 ขั้นตอน

วีดีโอ: การควบคุม WiFi ของ Model Train โดยใช้ MQTT: 9 ขั้นตอน
วีดีโอ: MOSQUITTO MQTT MESSAGE BROKER UI CLIENT SETUP ON MAC STEP BY STEP Model Trains 2024, พฤศจิกายน
Anonim
การควบคุม WiFi ของ Model Train โดยใช้ MQTT
การควบคุม WiFi ของ Model Train โดยใช้ MQTT

มีระบบโมเดลรถไฟมาตราส่วน TT แบบเก่า ฉันมีแนวคิดว่าจะควบคุมโลคอสเป็นรายบุคคลได้อย่างไร

เมื่อคำนึงถึงสิ่งนี้ ฉันจึงก้าวไปอีกขั้นและค้นหาสิ่งที่จำเป็นไม่เพียงแต่เพื่อควบคุมรถไฟเท่านั้น แต่ยังต้องมีข้อมูลเพิ่มเติมเกี่ยวกับแผนผังทั้งหมดและควบคุมอย่างอื่นด้วย (โคมไฟ สวิตช์ราง…)

นี่คือที่มาของระบบรถไฟจำลองที่ควบคุมด้วย WiFi

ขั้นตอนที่ 1: หลักการดำเนินการ

หลักการดำเนินงาน
หลักการดำเนินงาน

หลักการสำคัญคือการควบคุมแต่ละองค์ประกอบแยกจากกัน ไม่ว่าจะจากตัวควบคุมเดียวหรือจากแหล่งการควบคุมหลายแหล่ง โดยเนื้อแท้นี้ต้องการฟิสิคัลเลเยอร์ทั่วไป - WiFi ที่ชัดเจนที่สุด - และโปรโตคอลการสื่อสารทั่วไป MQTT

องค์ประกอบหลักคือโบรกเกอร์ MQTT อุปกรณ์ที่เชื่อมต่อทุกเครื่อง (รถไฟ เซ็นเซอร์ เอาท์พุต…) ได้รับอนุญาตให้สื่อสารผ่านโบรคเกอร์เท่านั้น และสามารถรับข้อมูลจากโบรคเกอร์เท่านั้น

หัวใจของอุปกรณ์คือตัวควบคุม WiFi ที่ใช้ ESP8266 ในขณะที่นายหน้า MQTT ทำงานบน Raspberry pi

ในตอนแรกความครอบคลุมของ Wifi นั้นมาจากเราเตอร์ WiFi และทุกอย่างเชื่อมต่อผ่านระบบไร้สาย

อุปกรณ์มี 4 ประเภท:

- ตัวควบคุมรถไฟ: มีอินพุตดิจิตอล 2 ช่อง, เอาต์พุตดิจิตอล 1 ช่อง, เอาต์พุต PWM 2 ช่อง (สำหรับควบคุมมอเตอร์ DC 2 ตัว)

- ตัวควบคุมเซนเซอร์: มีอินพุตดิจิตอล 7 ช่อง (สำหรับสวิตช์อินพุต ออปโตเซนเซอร์…)

- ตัวควบคุมเอาต์พุต: มีเอาต์พุตดิจิตอล 8 ช่อง (สำหรับสวิตช์ราง…)

- รีโมท WiFi: มีอินพุตตัวเข้ารหัสที่เพิ่มขึ้น 1 ตัว, อินพุตดิจิตอล 1 ตัว (เพื่อควบคุมรถไฟจากระยะไกล)

ระบบยังสามารถทำงานได้จาก Node-Red (จากแท็บเล็ต พีซี หรือสมาร์ทโฟน…)

ขั้นตอนที่ 2: การแลกเปลี่ยนข้อมูล MQTT และการกำหนดค่า

MQTT การแลกเปลี่ยนข้อมูลและการกำหนดค่า
MQTT การแลกเปลี่ยนข้อมูลและการกำหนดค่า

ตามโปรโตคอล MQTT ในตอนแรก อุปกรณ์ทุกเครื่องจะสมัครรับข้อมูลจากหัวข้อที่กำหนด และสามารถเผยแพร่ไปยังหัวข้ออื่นได้ นี่เป็นพื้นฐานของการสื่อสารของเครือข่ายควบคุมรถไฟ

เรื่องราวการสื่อสารนี้นำเสนอผ่านข้อความในรูปแบบ JSON เพื่อให้สั้นและมนุษย์สามารถอ่านได้

มองจากมุมมองที่ไกลกว่า: เครือข่ายมีเราเตอร์ WiFi ที่มี SSID (ชื่อเครือข่าย) และรหัสผ่านของตัวเอง อุปกรณ์ทุกชิ้นต้องรู้จัก 2 สิ่งนี้เพื่อเข้าถึงเครือข่าย WiFi โบรกเกอร์ MQTT ก็เป็นส่วนหนึ่งของเครือข่ายนี้เช่นกัน ดังนั้นเพื่อใช้โปรโตคอล MQTT อุปกรณ์ทุกเครื่องต้องทราบที่อยู่ IP ของโบรกเกอร์ และสุดท้าย อุปกรณ์ทุกเครื่องมีหัวข้อสำหรับสมัครรับข้อมูลและเผยแพร่ข้อความเป็นของตัวเอง

ในทางปฏิบัติ รีโมตคอนโทรลที่กำหนดจะใช้หัวข้อเดียวกันเพื่อเผยแพร่ข้อความที่สมัครรับข้อมูลรถไฟที่กำหนด

ขั้นตอนที่ 3: Train Controller

ผู้ควบคุมรถไฟ
ผู้ควบคุมรถไฟ

ในการควบคุมรถไฟของเล่น โดยพื้นฐานแล้ว เราต้องการ 3 สิ่ง: แหล่งจ่ายไฟ ตัวควบคุมที่เปิดใช้งาน WiFi และอุปกรณ์อิเล็กทรอนิกส์สำหรับขับมอเตอร์

แหล่งจ่ายไฟขึ้นอยู่กับแผนการใช้งานจริง: ในกรณีของ LEGO นี่คือกล่องแบตเตอรี่ Power Functions ในกรณีของชุดรถไฟสเกล "oldschool" TT หรือ H0 มันคือแหล่งจ่ายไฟ 12V ของแทร็ก

คอนโทรลเลอร์ที่เปิดใช้งาน WiFi คือคอนโทรลเลอร์ Wemos D1 mini (ตาม ESP8266)

อุปกรณ์อิเล็กทรอนิกส์สำหรับไดรเวอร์มอเตอร์เป็นโมดูลที่ใช้ TB6612

ตัวควบคุมรถไฟมีเอาต์พุต PWM ที่ควบคุมแยกกัน 2 ตัว อันหนึ่งใช้สำหรับควบคุมมอเตอร์และอีกอันหนึ่งใช้สำหรับส่งสัญญาณแสง มี 2 inpus สำหรับการตรวจจับตามการสัมผัสกกและเอาต์พุตดิจิตอลหนึ่งตัว

ตัวควบคุมยอมรับข้อความ JSON ผ่านโปรโตคอล WiFi และ MQTT

SPD1 ควบคุมมอเตอร์ เช่น ข้อความ {"SPD1": -204} ใช้เพื่อเคลื่อนมอเตอร์ถอยหลังด้วยกำลัง 80% (ค่าความเร็วสูงสุดคือ -255)

SPD2 ควบคุมความเข้มของไฟ LED ที่ "ไวต่อทิศทาง": ข้อความ {"SPD2": -255} ทำให้ไฟ LED (ถอยหลัง) ส่องแสงเต็มกำลัง

OUT1 ควบคุมสถานะของเอาต์พุตดิจิทัล: {"OUT1": 1} เปิดเอาต์พุต

หากสถานะของอินพุตเปลี่ยนแปลง ตัวควบคุมจะส่งข้อความตามนั้น: {"IN1": 1}

หากผู้ควบคุมได้รับข้อความที่ถูกต้อง ผู้ควบคุมจะดำเนินการและให้ข้อเสนอแนะแก่นายหน้า คำติชมเป็นคำสั่งที่ดำเนินการจริง ตัวอย่างเช่น หากนายหน้าส่ง {"SPD1": 280} มอเตอร์ทำงานเต็มกำลัง แต่ข้อความตอบกลับจะเป็น: {"SPD1": 255}

ขั้นตอนที่ 4: LEGO Train Control

LEGO Train Control
LEGO Train Control

ในกรณีของรถไฟ LEGO แผนผังจะแตกต่างกันเล็กน้อย

พลังงานมาจากกล่องแบตเตอรี่โดยตรง

จำเป็นต้องมีตัวแปลงแบบสเต็ปดาวน์ขนาดเล็กเพื่อจ่ายไฟ 3.5V สำหรับบอร์ด Lolin ที่ใช้ ESP8266

การเชื่อมต่อทำด้วยลวดต่อขยายของ LEGO 8886 ผ่าครึ่ง

ขั้นตอนที่ 5: รีโมทคอนโทรล

รีโมทคอนโทรล
รีโมทคอนโทรล

ผู้ควบคุมจะเผยแพร่ข้อความไปยังรถไฟเท่านั้น (กำหนดโดยสวิตช์ BCD)

เมื่อหมุนตัวเข้ารหัส รีโมทจะส่งข้อความ {"SPD1": "+"} หรือ {"SPD1": "-"}

เมื่อรถไฟได้รับข้อความ "ประเภทที่เพิ่มขึ้น" จะเปลี่ยนค่าเอาต์พุต PWM เป็น 51 หรือ -51

วิธีนี้ทำให้รีโมทเปลี่ยนความเร็วรถไฟได้ 5 ขั้นตอน (แต่ละทิศทาง)

การกดตัวเข้ารหัสที่เพิ่มขึ้นจะส่ง {"SPD1": 0}

ขั้นตอนที่ 6: ตัวควบคุมเซนเซอร์

ตัวควบคุมเซนเซอร์
ตัวควบคุมเซนเซอร์

ตัวควบคุมเซ็นเซอร์ที่เรียกว่าจะวัดสถานะของอินพุตและหากมีการเปลี่ยนแปลงใด ๆ ให้เผยแพร่ค่านั้น

ตัวอย่างเช่น: {"IN1": 0, "IN6": 1} ในตัวอย่างนี้ 2 อินพุตเปลี่ยนสถานะพร้อมกัน

ขั้นตอนที่ 7: ตัวควบคุมเอาต์พุต

ตัวควบคุมเอาต์พุต
ตัวควบคุมเอาต์พุต

ตัวควบคุมเอาต์พุตมีเอาต์พุตดิจิตอล 8 ช่อง ซึ่งเชื่อมต่อกับโมดูลที่ใช้ ULN2803

ได้รับข้อความผ่านหัวข้อที่สมัครรับข้อมูล

ตัวอย่างเช่น ข้อความ {"OUT4": 1, "OUT7": 1} เปิดเอาต์พุตดิจิทัล 4. และ 7.

ขั้นตอนที่ 8: Raspberry Pi และ WiFi Router

ฉันมีเราเตอร์ TP-Link WiFI ที่ใช้แล้ว ดังนั้นฉันจึงใช้สิ่งนี้เป็นจุดเข้าใช้งาน

โบรกเกอร์ MQTT คือ Raspberry Pi ที่ติดตั้ง Mosquitto

ฉันใช้ Raspbian OS มาตรฐานกับ MQTT ที่ติดตั้งด้วย:

sudo apt-get ติดตั้ง mosquitto mosquitto-clients python-mosquitto

ต้องกำหนดค่าเราเตอร์ TP-Link ให้จองที่อยู่สำหรับ Raspberry ดังนั้นหลังจากรีสตาร์ททุกครั้ง Pi จะมีที่อยู่ IP เดียวกันและอุปกรณ์ทุกเครื่องสามารถเชื่อมต่อได้

และนั่นแหล่ะ!

ขั้นตอนที่ 9: ตัวควบคุมสำเร็จรูป

ตัวควบคุมสำเร็จรูป
ตัวควบคุมสำเร็จรูป
ตัวควบคุมสำเร็จรูป
ตัวควบคุมสำเร็จรูป

นี่คือตัวควบคุมที่เสร็จแล้ว

โลโคมาตราส่วน TT มีขนาดเล็กมากจนต้องทำให้กระดานโลลินแคบ (ตัด) ให้เล็กพอที่จะใส่ลงในรถไฟได้

ไบนารีที่คอมไพล์แล้วสามารถดาวน์โหลดได้ ด้วยเหตุผลด้านความปลอดภัย การขยาย bin ถูกแทนที่เป็น txt

แนะนำ: