สารบัญ:

กระดานข้อความ LED IoT RPi: 3 ขั้นตอน (พร้อมรูปภาพ)
กระดานข้อความ LED IoT RPi: 3 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: กระดานข้อความ LED IoT RPi: 3 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: กระดานข้อความ LED IoT RPi: 3 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: การใช้งาน Blynk ควบคุม LED | New version 2023 2024, พฤศจิกายน
Anonim
Image
Image
การตั้งค่าฮาร์ดแวร์
การตั้งค่าฮาร์ดแวร์

ในคำแนะนำนี้ ฉันได้สร้างกระดานข้อความ 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 เพิ่มเติมในโหมดคาสเคด ฉันจะปล่อยให้มันขึ้นอยู่กับคุณ

แนะนำ: