Isi kandungan:

Papan Mesej LED IoT RPi: 3 Langkah (dengan Gambar)
Papan Mesej LED IoT RPi: 3 Langkah (dengan Gambar)

Video: Papan Mesej LED IoT RPi: 3 Langkah (dengan Gambar)

Video: Papan Mesej LED IoT RPi: 3 Langkah (dengan Gambar)
Video: Menyalakan led menggunakan webserver di raspberry pi 3 2024, Julai
Anonim
Image
Image
Persediaan Perkakasan
Persediaan Perkakasan

Dalam Instructable ini, saya telah membuat papan pesanan LED bersambung wifi menggunakan Raspberry Pi (RPi). Pengguna akan menyambung ke pelayan web Raspberry Pi menggunakan penyemak imbas mereka untuk menghantar pesanan ringkas yang akan muncul di paparan LED 8x8. Oleh kerana menghubungkan matriks 8x8 LED dengan pemacu MAX7219 di Python didokumentasikan dengan baik oleh orang lain di Internet, projek ini memfokuskan pada membina antara muka pelayan web dan menggunakan Pemesejan ZeroMQ untuk menguruskan mesej masuk.

Kemas kini: Berikut adalah projek susulan IoT Decimal / Hexadecimal 8x8 LED Matrix Drawing Board

(Saya adalah fasilitator kelab untuk Girls Who Code Club dan saya membuat projek ringkas ini untuk mengajar pelajar mengenai reka bentuk dan pesanan antara muka web.)

Langkah 1: Persediaan Perkakasan

Persediaan Perkakasan
Persediaan Perkakasan
Persediaan Perkakasan
Persediaan Perkakasan

Projek ini memerlukan perkakasan berikut:

  • Pai raspberi
  • Sumber kuasa USB seperti Anker dengan kabel USB ke MicroUSB pendek
  • Modul matriks dot MAX7219 dengan kabel pita (Aliexpress dengan harga kurang dari $ 2)
  • Kandang (saya membuat satu dari kotak kadbod dan semburan dicat hitam)

Penyediaan perkakasan adalah bahagian yang mudah. Cukup sambungkan kabel reben 5 wayar dari matriks LED ke dokumen perpustakaan RPi per MAX7219.

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 melekatkan unit LED ke casing RPi. Kemudian, saya membuat penutup dari kotak kadbod untuk menempatkan RPi dan bateri.

Langkah 2: Persediaan Perisian

Persediaan Perisian
Persediaan Perisian
Persediaan Perisian
Persediaan Perisian
Persediaan Perisian
Persediaan Perisian
Persediaan Perisian
Persediaan Perisian

RPi harus mempunyai perisian berikut:

  • Python 3
  • Pelayan web Apache 2
  • Pemandu Max7219 untuk Python
  • Pemesejan ZeroMQ

Python 3

RPi harus mempunyai Python 3 yang sudah dipasang sebelumnya. Walaupun kod saya ditulis untuk Python 3, Python 2 semestinya berfungsi dengan sedikit perubahan kecil.

Apache 2

Sediakan Apache dan aktifkan skrip Python CGI. Berikut adalah beberapa sumber hebat untuk menyiapkan Apache di RPi jadi saya tidak akan mengulanginya di sini. Cukup ikuti tutorial di bawah untuk menyiapkan Apache dan CGI. Pastikan skrip *.py dapat dilaksanakan dari penyemak imbas.

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

Pemandu Max7291

Pasang pemacu Max7219 dengan mengikuti panduan pemasangan terkini:

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

Selepas pemasangan, jalankan kod contoh, matrix_test.py, setiap panduan pemasangan untuk memaparkan "Hello World" pada LED Matrix. Ini mesti berjaya sebelum pergi ke langkah seterusnya.

Pemesejan ZeroMQ

Mengapa kita memerlukan Pemesejan? Cuba jalankan kod contoh di atas, matrix_test.py, pada dua skrin terminal secara serentak. Sistem akan membenarkan beberapa kod berjalan serentak tetapi anda akan melihat mesej bertindih yang tidak diingini. Dalam persekitaran pengguna tunggal, ini mungkin tidak menjadi masalah kerana anda dapat memastikan bahawa hanya satu program yang dapat berjalan pada satu masa. Dalam persekitaran berbilang pengguna seperti web, sistem harus membuat barisan FIFO (First-In-First-Out) untuk memastikan hanya satu orang yang dapat melaksanakan kod sementara yang lain menunggu. Walaupun mungkin ada penyelesaian lain untuk mencapainya, saya memutuskan untuk menggunakan ZeroMQ untuk menguruskan barisan FIFO. Kod pelayan ZeroMQ mengandungi panggilan fungsi sebenar untuk memaparkan mesej pada matriks LED satu per satu sementara pelayan web bertindak sebagai pelanggan ZeroMQ untuk bertanya dan menghantar mesej ke pelayan ZeroMQ. Dengan cara ini, sementara banyak pengguna dapat mengirim pesan melalui halaman web secara serentak, pelayan ZeroMQ hanya akan memaparkan satu pesan pada satu masa.

Untuk projek ini, kami hanya akan memasang pyzmq pakej Python dan bukan keseluruhan pakej ZeroMQ.

jalankan:

sudo pip3 pasang pyzmq

Baca panduan ZeroMQ di https://zguide.zeromq.org dan cuba contoh pelayan dan pelanggan hello world di Python. Salin kod contoh Python untuk pelayan dan klien ke RPi dan pastikan ia berfungsi sebelum pergi ke langkah seterusnya.

Langkah 3: Penyediaan Halaman Web

Di laman web, saya menggunakan rangka kerja css / js bootstrap untuk menjadikan halaman kelihatan cantik. Ini benar-benar pilihan.

Muat turun fail led_msg.tar.gz yang dilampirkan ke root atau sub-direktori Apache. Untuk melepaskan fail tar gzip'd, jalankan:

tar -xzvf led_msg.tar.gz

Ini membuat fail berikut:

msg.py (program utama)

templat / interstitial.html (templat html) templat / send_msg.html (templat html) statik / img / led_150x150-j.webp

Sebagai pilihan, pasang kerangka bootstrap css / js di bawah direktori statik.

Masukkan URL untuk msg.py penyemak imbas anda dan pastikan laman web muncul. Jangan hantar mesej !!!

Sebelum mesej dapat dikirimkan, pelayan ZeroMQ harus mulai menerima pesan dari klien halaman web dan menampilkannya pada matriks LED. Tidak ada yang akan dipaparkan di skrin jika pelayan ZeroMQ tidak berjalan.

Muat turun kod max7219_server.py yang dilampirkan ke direktori rumah anda, bukan di dir root Apache di mana ia dapat dijalankan oleh pengguna web. Jalankan sebagai root:

sudo python max7219_server.py

Kini pelayan ZeroMQ siap menerima mesej dari laman web. Masukkan dan hantarkan pesanan ringkas dari laman web. Sekiranya semuanya disiapkan dengan betul, anda akan melihat mesej itu di skrin pelayan ZeroMQ dan juga pada Matriks LED.

Sekiranya anda ingin mematikan pelayan, lakukan Control-C untuk keluar dari skrin pelayan.

Itu sahaja. Semoga anda dapat menikmati projek ini seperti yang saya lakukan.

Salah satu peningkatan yang dapat anda lakukan adalah menjadikan komunikasi ZeroMQ antara pelayan dan klien tidak segerak sehingga laman web tidak menunggu sementara mesej lain sedang ditampilkan. Anda juga boleh memasang matriks LED tambahan dalam mod lata. Saya akan menyerahkannya kepada anda.

Disyorkan: