สารบัญ:
- ขั้นตอนที่ 1: หลักการดำเนินการ
- ขั้นตอนที่ 2: การแลกเปลี่ยนข้อมูล MQTT และการกำหนดค่า
- ขั้นตอนที่ 3: Train Controller
- ขั้นตอนที่ 4: LEGO Train Control
- ขั้นตอนที่ 5: รีโมทคอนโทรล
- ขั้นตอนที่ 6: ตัวควบคุมเซนเซอร์
- ขั้นตอนที่ 7: ตัวควบคุมเอาต์พุต
- ขั้นตอนที่ 8: Raspberry Pi และ WiFi Router
- ขั้นตอนที่ 9: ตัวควบคุมสำเร็จรูป
วีดีโอ: การควบคุม WiFi ของ Model Train โดยใช้ MQTT: 9 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
มีระบบโมเดลรถไฟมาตราส่วน 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 ในตอนแรก อุปกรณ์ทุกเครื่องจะสมัครรับข้อมูลจากหัวข้อที่กำหนด และสามารถเผยแพร่ไปยังหัวข้ออื่นได้ นี่เป็นพื้นฐานของการสื่อสารของเครือข่ายควบคุมรถไฟ
เรื่องราวการสื่อสารนี้นำเสนอผ่านข้อความในรูปแบบ 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 แผนผังจะแตกต่างกันเล็กน้อย
พลังงานมาจากกล่องแบตเตอรี่โดยตรง
จำเป็นต้องมีตัวแปลงแบบสเต็ปดาวน์ขนาดเล็กเพื่อจ่ายไฟ 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
แนะนำ:
การควบคุม Led ผ่านแอพ Blynk โดยใช้ Nodemcu ทางอินเทอร์เน็ต: 5 ขั้นตอน
การควบคุม Led ผ่านแอพ Blynk โดยใช้ Nodemcu ทางอินเทอร์เน็ต: สวัสดีทุกคน วันนี้เราจะแสดงให้คุณเห็นว่าคุณสามารถควบคุม LED โดยใช้สมาร์ทโฟนผ่านอินเทอร์เน็ตได้อย่างไร
การควบคุม LED ของ Google Assistant โดยใช้ Raspberry Pi: 3 ขั้นตอน
การควบคุม LED ของ Google Assistant โดยใช้ Raspberry Pi: เฮ้! ในโครงการนี้ เราจะใช้การควบคุมด้วย Google Assistant ของ LED โดยใช้ Raspberry Pi 4 โดยใช้ HTTP ใน Python คุณสามารถเปลี่ยน LED เป็นหลอดไฟได้ (แน่นอนว่าไม่ใช่อย่างแท้จริง คุณจะต้องมีโมดูลรีเลย์ในระหว่างนั้น) หรือบ้านอื่นๆ
การควบคุม Ableton Live โดยใช้ Atto หรือ Arduino Leonardo: 3 ขั้นตอน
การควบคุม Ableton Live โดยใช้ Atto หรือ Arduino Leonardo: นี่คือวิดีโอสาธิตสำหรับ Piksey Atto เราเรียนรู้วิธีใช้เป็นอุปกรณ์ MIDI และควบคุมแทร็กใน Ableton Live 10 Lite เราใช้เขียงหั่นขนมพร้อมกับสวิตช์ชั่วขณะ และคุณยังสามารถใช้ Arduino Leonardo สำหรับโครงการนี้ได้ หากคุณสร้าง
การควบคุม Raspberry Pi โดยใช้ Matlab: 5 ขั้นตอน
การควบคุม Raspberry Pi โดยใช้ Matlab: เฮ้ บทช่วยสอนนี้เกี่ยวกับการควบคุม Raspberry Pi ที่ไม่มีหัวของคุณโดยใช้ Matlab คุณอาจต้องติดตั้ง matlab เป็นเวอร์ชันล่าสุดเพื่อรองรับบอร์ด raspberry pi ที่ใหม่กว่า
การควบคุม LED หลายดวงด้วย Python และ GPIO Pins ของ Raspberry Pi: 4 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมไฟ LED หลายดวงด้วย Python และพิน GPIO ของ Raspberry Pi: คำแนะนำนี้สาธิตวิธีควบคุมพิน GPIO หลายอันบน RaspberryPi ของคุณเพื่อจ่ายไฟ 4 LEDs นอกจากนี้ยังจะแนะนำคุณเกี่ยวกับพารามิเตอร์และคำสั่งเงื่อนไขใน Python คำสั่งก่อนหน้าของเราโดยใช้ GPIO Pins ของ Raspberry Pi เพื่อต่อ