Daftar Isi:

IoT RPi LED Message Board: 3 Langkah (dengan Gambar)
IoT RPi LED Message Board: 3 Langkah (dengan Gambar)

Video: IoT RPi LED Message Board: 3 Langkah (dengan Gambar)

Video: IoT RPi LED Message Board: 3 Langkah (dengan Gambar)
Video: ChatGPT with Arduino Nano #arduino #chatgpt #technology #openAI #electronic 2024, November
Anonim
Image
Image
Pengaturan Perangkat Keras
Pengaturan Perangkat Keras

Dalam Instruksi ini, saya telah membuat papan pesan LED yang terhubung dengan wifi menggunakan Raspberry Pi (RPi). Pengguna akan terhubung ke server web Raspberry Pi menggunakan browser mereka untuk mengirimkan pesan singkat yang akan muncul di layar LED 8x8. Karena menghubungkan matriks LED 8x8 dengan driver MAX7219 dengan Python didokumentasikan dengan baik oleh orang lain di Internet, proyek ini berfokus pada membangun antarmuka server web dan menggunakan ZeroMQ Messaging untuk mengelola pesan masuk.

Pembaruan: Ini adalah proyek tindak lanjut Papan Gambar Matriks LED Desimal / Heksadesimal 8x8 IoT

(Saya seorang fasilitator klub untuk Girls Who Code Club dan saya membuat proyek sederhana ini untuk mengajar siswa tentang desain antarmuka web dan pengiriman pesan.)

Langkah 1: Pengaturan Perangkat Keras

Pengaturan Perangkat Keras
Pengaturan Perangkat Keras
Pengaturan Perangkat Keras
Pengaturan Perangkat Keras

Proyek ini membutuhkan perangkat keras berikut:

  • Raspberry Pi
  • Sumber daya USB seperti Anker dengan kabel USB ke MicroUSB pendek
  • MAX7219 modul dot matrix dengan kabel pita (Aliexpress kurang dari $2)
  • Enclosure (saya buat dari kardus dan cat semprot warna hitam)

Pengaturan perangkat keras adalah bagian yang mudah. Cukup sambungkan kabel pita 5 kawat dari matriks LED ke RPi per MAX7219 library doc.

LED->RPi========VCC->Pin GPIO #2 (5v)GND->Pin GPIO #6 (GND)DIN->Pin GPIO #19CS ->Pin GPIO #24CLK->Pin GPIO # 23

Saya menggunakan pita busa dua sisi untuk menempelkan unit LED ke kasing RPi. Kemudian, saya membuat selungkup dari kotak kardus untuk menampung RPi dan baterai.

Langkah 2: Pengaturan Perangkat Lunak

Pengaturan Perangkat Lunak
Pengaturan Perangkat Lunak
Pengaturan Perangkat Lunak
Pengaturan Perangkat Lunak
Pengaturan Perangkat Lunak
Pengaturan Perangkat Lunak
Pengaturan Perangkat Lunak
Pengaturan Perangkat Lunak

RPi harus memiliki perangkat lunak berikut:

  • Python 3
  • Apache 2 webserver
  • Driver Max7219 untuk Python
  • Pesan ZeroMQ

Python 3

RPi seharusnya sudah memiliki Python 3 yang sudah diinstal sebelumnya. Sementara kode saya ditulis untuk Python 3, Python 2 harus bekerja dengan beberapa perubahan kecil.

Apache 2

Siapkan Apache dan aktifkan skrip Python CGI. Di bawah ini adalah beberapa sumber yang bagus untuk menyiapkan Apache di RPi jadi saya tidak akan mengulanginya di sini. Cukup ikuti tutorial di bawah ini untuk mengatur Apache dan CGI. Pastikan skrip *.py dapat dieksekusi dari browser.

  • https://raspberrywebserver.com/cgiscripting/
  • https://www.knight-of-pi.org/Apache-web-server-with-cgi-for-python/

Driver Max7291

Instal driver Max7219 dengan mengikuti panduan penginstalan terbaru:

https://max7219.readthedocs.io/en/latest/install.html

Setelah penginstalan, jalankan kode contoh, matrix_test.py, per panduan penginstalan untuk menampilkan "Hello World" pada Matriks LED. Ini harus bekerja sebelum melanjutkan ke langkah berikutnya.

Pesan ZeroMQ

Mengapa kita perlu Pesan? Coba jalankan kode contoh di atas, matrix_test.py, pada dua layar terminal secara bersamaan. Sistem akan memungkinkan beberapa kode untuk berjalan secara bersamaan tetapi Anda akan melihat pesan yang tumpang tindih yang tidak diinginkan. Dalam lingkungan pengguna tunggal, ini mungkin tidak menjadi masalah karena Anda dapat memastikan bahwa hanya satu program yang dapat dijalankan pada satu waktu. Dalam lingkungan multi-pengguna seperti web, sistem harus membuat antrian FIFO (First-In-First-Out) untuk memastikan hanya satu orang yang dapat mengeksekusi kode sementara yang lain menunggu. Meskipun mungkin ada solusi lain untuk mencapai ini, saya memutuskan untuk menggunakan ZeroMQ untuk mengelola antrian FIFO. Kode server ZeroMQ berisi panggilan fungsi aktual untuk menampilkan pesan pada matriks LED satu per satu sementara server web bertindak sebagai klien ZeroMQ untuk menanyakan dan mengirimkan pesan ke server ZeroMQ. Dengan cara ini, sementara beberapa pengguna dapat mengirimkan pesan melalui halaman web secara bersamaan, server ZeroMQ hanya akan menampilkan satu pesan dalam satu waktu.

Untuk proyek ini, kita hanya akan menginstal paket Python pyzmq dan bukan seluruh paket ZeroMQ.

Lari:

sudo pip3 instal pyzmq

Baca panduan ZeroMQ di https://zguide.zeromq.org dan coba contoh server dan klien hello world dengan Python. Salin kode contoh Python untuk server dan klien ke RPi dan pastikan mereka berfungsi sebelum melanjutkan ke langkah berikutnya.

Langkah 3: Pengaturan Halaman Web

Di halaman web, saya menggunakan kerangka bootstrap css/js untuk membuat halaman terlihat cantik. Ini benar-benar opsional.

Unduh file led_msg.tar.gz terlampir ke root atau sub-direktori Apache. Untuk membuka tar file tar gzip'd, jalankan:

tar -xzvf led_msg.tar.gz

Ini membuat file berikut:

msg.py (program utama)

templates/interstitial.html (template html) templates/send_msg.html (template html)static/img/led_150x150-j.webp

Secara opsional, instal kerangka bootstrap css/js di bawah direktori statis.

Masukkan URL untuk msg.py browser Anda dan pastikan halaman web muncul. Jangan kirim pesan dulu!!!

Sebelum pesan dapat dikirimkan, server ZeroMQ harus mulai menerima pesan dari klien halaman web dan menampilkannya pada matriks LED. Tidak ada yang akan ditampilkan di layar jika server ZeroMQ tidak berjalan.

Unduh kode max7219_server.py terlampir ke direktori home Anda, bukan di direktori root Apache yang dapat dijalankan oleh pengguna web. Jalankan sebagai root:

sudo python max7219_server.py

Sekarang server ZeroMQ siap menerima pesan dari halaman web. Masukkan dan kirimkan pesan sederhana dari halaman web. Jika semuanya diatur dengan benar, Anda akan melihat pesan itu di layar server ZeroMQ serta di Matriks LED.

Jika Anda ingin mematikan server, lakukan saja Control-C untuk keluar dari layar server.

Itu dia. Semoga Anda menikmati proyek ini sama seperti saya.

Satu peningkatan yang dapat Anda lakukan adalah membuat komunikasi ZeroMQ antara server dan klien tidak sinkron sehingga halaman web tidak menunggu saat pesan lain ditampilkan. Anda juga dapat memasang matriks LED tambahan dalam mode kaskade. Saya akan menyerahkan itu kepada Anda.

Direkomendasikan: