สารบัญ:
วีดีโอ: กระดานข้อความ LED IoT RPi: 3 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
ในคำแนะนำนี้ ฉันได้สร้างกระดานข้อความ LED ที่เชื่อมต่อ wifi โดยใช้ Raspberry Pi (RPi) ผู้ใช้จะเชื่อมต่อกับเว็บเซิร์ฟเวอร์ของ Raspberry Pi โดยใช้เบราว์เซอร์เพื่อส่งข้อความสั้นที่จะแสดงบนจอแสดงผล LED 8x8 เนื่องจากการเชื่อมต่อเมทริกซ์ LED 8x8 กับไดรเวอร์ MAX7219 ใน Python ได้รับการบันทึกไว้อย่างดีจากผู้อื่นบนอินเทอร์เน็ต โปรเจ็กต์นี้จึงมุ่งเน้นไปที่การสร้างอินเทอร์เฟซเว็บเซิร์ฟเวอร์และการใช้ ZeroMQ Messaging เพื่อจัดการข้อความขาเข้า
อัปเดต: นี่คือโครงการติดตามผล IoT Decimal/Hexadecimal 8x8 LED Matrix Drawing Board
(ฉันเป็นผู้อำนวยความสะดวกในคลับสำหรับ Girls Who Code Club และฉันคิดโครงการง่ายๆ นี้ขึ้นมาเพื่อสอนนักเรียนเกี่ยวกับการออกแบบเว็บอินเตอร์เฟสและการส่งข้อความ)
ขั้นตอนที่ 1: การตั้งค่าฮาร์ดแวร์
โครงการนี้ต้องใช้ฮาร์ดแวร์ดังต่อไปนี้:
- ราสเบอร์รี่ปี่
- แหล่งพลังงาน USB เช่น Anker พร้อมสาย USB to MicroUSB แบบสั้น
- MAX7219 โมดูลดอทเมทริกซ์พร้อมสายแพ (Aliexpress ราคาต่ำกว่า $2)
- สิ่งที่ส่งมาด้วย (ฉันทำมาจากกล่องกระดาษแข็งและพ่นสีดำ)
การตั้งค่าฮาร์ดแวร์เป็นส่วนที่ง่าย เพียงเชื่อมต่อสายแพ 5 เส้นจากเมทริกซ์ LED กับ RPi ต่อเอกสารไลบรารี MAX7219
LED->RPi========VCC->GPIO Pin #2 (5v)GND->GPIO Pin #6 (GND)DIN->GPIO Pin #19CS ->GPIO Pin #24CLK->GPIO Pin # 23
ฉันใช้เทปโฟมสองหน้าติดหน่วย LED กับเคส RPi จากนั้นฉันก็สร้างกล่องจากกล่องกระดาษแข็งเพื่อใช้เป็นที่เก็บ RPi และแบตเตอรี่
ขั้นตอนที่ 2: ตั้งค่าซอฟต์แวร์
RPi ควรมีซอฟต์แวร์ต่อไปนี้:
- Python3
- Apache 2 เว็บเซิร์ฟเวอร์
- ไดรเวอร์ Max7219 สำหรับ Python
- การส่งข้อความ ZeroMQ
Python3
RPi ควรมี Python 3 ติดตั้งไว้ล่วงหน้าแล้ว แม้ว่าโค้ดของฉันจะเขียนขึ้นสำหรับ Python 3 แต่ Python 2 ควรทำงานโดยมีการเปลี่ยนแปลงเล็กน้อย
Apache2
ตั้งค่า Apache และเปิดใช้งานการเขียนสคริปต์ Python CGI ด้านล่างนี้เป็นแหล่งข้อมูลที่ยอดเยี่ยมสองสามข้อสำหรับการตั้งค่า Apache บน RPi ดังนั้นฉันจะไม่ทำซ้ำที่นี่ เพียงทำตามบทช่วยสอนด้านล่างเพื่อตั้งค่า Apache และ CGI ตรวจสอบให้แน่ใจว่าสคริปต์ *.py นั้นสามารถเรียกทำงานได้จากเบราว์เซอร์
- https://raspberrywebserver.com/cgiscripting/
- https://www.knight-of-pi.org/apache-web-server-with-cgi-for-python/
ไดร์เวอร์ Max7291
ติดตั้งไดรเวอร์ Max7219 โดยทำตามคำแนะนำการติดตั้งล่าสุด:
https://max7219.readthedocs.io/en/latest/install.html
หลังการติดตั้ง ให้รันโค้ดตัวอย่าง matrix_test.py ต่อคู่มือการติดตั้งเพื่อแสดง "Hello World" บน LED Matrix นี้ต้องทำงานก่อนที่จะไปขั้นตอนต่อไป
การส่งข้อความ ZeroMQ
ทำไมเราต้องส่งข้อความ? ลองเรียกใช้โค้ดตัวอย่างด้านบน matrix_test.py บนหน้าจอเทอร์มินัลสองหน้าจอพร้อมกัน ระบบจะอนุญาตให้เรียกใช้หลายรหัสพร้อมกัน แต่คุณจะเห็นข้อความซ้อนทับกันซึ่งไม่ต้องการ ในสภาพแวดล้อมของผู้ใช้คนเดียว ปัญหานี้อาจไม่ใช่ปัญหา เนื่องจากคุณสามารถตรวจสอบให้แน่ใจว่าสามารถเรียกใช้โปรแกรมได้ครั้งละหนึ่งโปรแกรมเท่านั้น ในสภาพแวดล้อมที่มีผู้ใช้หลายคน เช่น เว็บ ระบบจะต้องสร้างคิว FIFO (เข้าก่อน-ออกก่อน) เพื่อให้แน่ใจว่ามีเพียงคนเดียวเท่านั้นที่สามารถรันโค้ดได้ในขณะที่คนอื่นรอ แม้ว่าอาจมีวิธีอื่นในการบรรลุเป้าหมายนี้ แต่ฉันตัดสินใจใช้ ZeroMQ เพื่อจัดการคิว FIFO รหัสเซิร์ฟเวอร์ ZeroMQ มีการเรียกใช้ฟังก์ชันจริงเพื่อแสดงข้อความบนเมทริกซ์ LED ทีละรายการ ในขณะที่เว็บเซิร์ฟเวอร์ทำหน้าที่เป็นไคลเอ็นต์ ZeroMQ เพื่อสอบถามและส่งข้อความไปยังเซิร์ฟเวอร์ ZeroMQ ด้วยวิธีนี้ ในขณะที่ผู้ใช้หลายคนสามารถส่งข้อความผ่านหน้าเว็บพร้อมกันได้ แต่เซิร์ฟเวอร์ ZeroMQ จะแสดงข้อความครั้งละหนึ่งข้อความเท่านั้น
สำหรับโครงการนี้ เราจะติดตั้งแพ็คเกจ Python pyzmq ไม่ใช่แพ็คเกจ ZeroMQ ทั้งหมด
วิ่ง:
sudo pip3 ติดตั้ง pyzmq
อ่านคู่มือ ZeroMQ ที่ https://zguide.zeromq.org และลองใช้เซิร์ฟเวอร์ Hello World และตัวอย่างไคลเอ็นต์ใน Python คัดลอกโค้ดตัวอย่าง Python สำหรับทั้งเซิร์ฟเวอร์และไคลเอ็นต์ไปยัง RPi และตรวจสอบให้แน่ใจว่าโค้ดเหล่านี้ทำงานก่อนที่จะไปยังขั้นตอนถัดไป
ขั้นตอนที่ 3: ตั้งค่าหน้าเว็บ
ในหน้าเว็บ ฉันใช้เฟรมเวิร์ก bootstrap css/js เพื่อทำให้หน้าดูสวยงาม นี่เป็นทางเลือกทั้งหมด
ดาวน์โหลดไฟล์ led_msg.tar.gz ที่แนบมากับรูท Apache หรือไดเร็กทอรีย่อย ในการ untar ไฟล์ gzip'd tar ให้เรียกใช้:
tar -xzvf led_msg.tar.gz
สิ่งนี้สร้างไฟล์ต่อไปนี้:
msg.py (โปรแกรมหลัก)
templates/interstitial.html (html template) templates/send_msg.html (html template)static/img/led_150x150.jpg (jpg ใช้ในเทมเพลต html)
หรือติดตั้งเฟรมเวิร์ก bootstrap css/js ภายใต้ไดเร็กทอรีสแตติก
ป้อน URL สำหรับ msg.py เบราว์เซอร์ของคุณ และตรวจสอบให้แน่ใจว่าหน้าเว็บปรากฏขึ้น อย่าเพิ่งส่งข้อความ!!!
ก่อนที่จะส่งข้อความได้ เซิร์ฟเวอร์ ZeroMQ จะต้องเริ่มยอมรับข้อความจากเว็บไคลเอ็นต์และแสดงบนเมทริกซ์ LED ไม่มีอะไรจะแสดงบนหน้าจอหากเซิร์ฟเวอร์ ZeroMQ ไม่ทำงาน
ดาวน์โหลดโค้ด max7219_server.py ที่แนบมากับโฮมไดเร็กทอรีของคุณ ไม่ใช่ใน Apache root dir ซึ่งผู้ใช้เว็บสามารถดำเนินการได้ เรียกใช้เป็นรูท:
sudo python max7219_server.py
ตอนนี้เซิร์ฟเวอร์ ZeroMQ พร้อมที่จะรับข้อความจากหน้าเว็บแล้ว ป้อนและส่งข้อความธรรมดาจากหน้าเว็บ หากทุกอย่างถูกต้อง คุณจะเห็นข้อความนั้นบนหน้าจอเซิร์ฟเวอร์ ZeroMQ เช่นเดียวกับบน LED Matrix
หากคุณต้องการปิดเซิร์ฟเวอร์ ให้กด Control-C เพื่อออกจากหน้าจอเซิร์ฟเวอร์
แค่นั้นแหละ. หวังว่าคุณจะสนุกกับโครงการนี้มากที่สุดเท่าที่ฉันทำ
การปรับปรุงอย่างหนึ่งที่คุณสามารถทำได้คือทำให้การสื่อสาร ZeroMQ ระหว่างเซิร์ฟเวอร์และไคลเอ็นต์เป็นแบบอะซิงโครนัสเพื่อไม่ให้หน้าเว็บรอในขณะที่ข้อความอื่นๆ กำลังแสดงอยู่ นอกจากนี้ คุณสามารถแนบเมทริกซ์ LED เพิ่มเติมในโหมดคาสเคด ฉันจะปล่อยให้มันขึ้นอยู่กับคุณ
แนะนำ:
วิธีการ: การติดตั้ง Raspberry PI 4 Headless (VNC) ด้วย Rpi-imager และรูปภาพ: 7 ขั้นตอน (พร้อมรูปภาพ)
วิธีการ: การติดตั้ง Raspberry PI 4 Headless (VNC) ด้วย Rpi-imager และ Pictures: ฉันวางแผนที่จะใช้ Rapsberry PI นี้ในโครงการสนุก ๆ มากมายในบล็อกของฉัน รู้สึกอิสระที่จะตรวจสอบออก ฉันต้องการกลับไปใช้ Raspberry PI ของฉัน แต่ฉันไม่มีคีย์บอร์ดหรือเมาส์ที่ตำแหน่งใหม่ เป็นเวลานานแล้วที่ฉันตั้งค่า Raspberry
กระดานข้อความ LED Strip: 3 ขั้นตอน
กระดานข้อความ LED Strip: คำแนะนำนี้จะแนะนำคุณตลอดขั้นตอนการสร้างกระดานข้อความจากแถบ LED NeoPixel ที่แอดเดรสได้ โครงการนี้เป็นเวอร์ชันดัดแปลงของป้ายที่ผลิตโดย Josh Levine ซึ่งสามารถดูได้ที่ https://github.com/bigjo
Digital RPi LED Thermometer: 6 ขั้นตอน (พร้อมรูปภาพ)
Digital RPi LED Thermometer: Raspbian OSเรียนรู้วิธีที่ฉันสร้าง Digital LED Thermometer ด้วย Raspberry Pi Zero W, แถบ LED, จอแสดงผล OLED และ PCB แบบกำหนดเอง โดยจะหมุนเวียนรายชื่อเมืองที่คิดโดยอัตโนมัติ และแสดงอุณหภูมิบน OLED จอแสดงผลและ LED แต่
RPi IoT Smart Light โดยใช้ Firebase: 4 ขั้นตอน (พร้อมรูปภาพ)
RPi IoT Smart Light โดยใช้ Firebase: คู่มือนี้จะแสดงวิธีสร้างและตั้งค่าแอปเพื่อควบคุม Raspberry Pi ผ่าน Firebase (ฐานข้อมูลออนไลน์) จากนั้นพิมพ์ 3D เคสสำหรับ Pi Zero W, Powerboost 1000C, แบตเตอรี่ และ Blinkt! เพื่อให้ทำตามได้ง่ายที่สุด ฉันขอ
RPi-Zero IoT ตัวบ่งชี้เหตุการณ์ / ไฟสี: 6 ขั้นตอน (พร้อมรูปภาพ)
RPi-Zero IoT ตัวบ่งชี้เหตุการณ์ / ไฟสี: ไม่มีไมโครคอนโทรลเลอร์เพิ่มเติม & ไม่จำเป็นต้องใช้โมดูลเสริม HAT RPi-Zero ทำทุกอย่าง ยังดีกว่าใช้ RPi-Zero W !ตัวอย่างการใช้งาน: ตัวบ่งชี้สถานะบริการเว็บ (เช่น การติดตาม DowJonesIndex) ตัวบ่งชี้สถานะเหตุการณ์ทางการเมืองหรือกีฬา ไฟแสดงอารมณ์