Daftar Isi:

RPi 3 Starboard / Particle Generator: 6 Langkah (dengan Gambar)
RPi 3 Starboard / Particle Generator: 6 Langkah (dengan Gambar)

Video: RPi 3 Starboard / Particle Generator: 6 Langkah (dengan Gambar)

Video: RPi 3 Starboard / Particle Generator: 6 Langkah (dengan Gambar)
Video: Stepping into the Future: Linnaeus University's IoT & AI Live Stream Marathon⚡🤩 2024, Juli
Anonim
Image
Image
Pasang Papan LED
Pasang Papan LED

Apakah Anda merasa bosan dengan Raspberry Pi Anda? Apakah Anda siap untuk memimpin kekuatan paling mendasar dari alam semesta, memanggil dan membuang foton sesuka hati? Apakah Anda hanya ingin sesuatu yang menarik untuk digantung di ruang tamu Anda, atau proyek mewah untuk diposting di facebook untuk menunjukkan kepada Denise bahwa Anda baik-baik saja akhir-akhir ini, terima kasih banyak? Apakah Anda terjebak dalam simulasi komputer dan menghabiskan waktu berjam-jam sampai Anda dibebaskan atau dihapus? Jika salah satu atau semua ini menggambarkan Anda, maka [suara penyiar] Selamat datang!

Tutorial ini akan menunjukkan cara merakit dan mengatur tampilan generator partikel menggunakan Raspberry Pi 3 dan beberapa panel matriks RGB. Anda perlu waktu antara satu dan dua jam, dan produk jadi akan berukuran sekitar 30"x8" (tidak termasuk Pi) dan dapat dipasang di dinding. Itu membuat dekorasi yang cukup keren untuk ruang tamu, kantor, ruang permainan, atau di mana pun Anda ingin meletakkannya.

Sebelum memulai, inilah yang Anda perlukan, dan perkiraan biayanya:

  • Rpi 3 + Kartu SD + Casing + Catu Daya: $70 (dari Canakit, tetapi Anda mungkin bisa mendapatkan suku cadang lebih murah jika membelinya secara terpisah.)
  • 4x 32x32 RGB LED Matrix (sebaiknya p6 dalam ruangan dengan 1/16 scan): $80-$100 dikirim di Alibaba atau; $160 untuk Adafruit atau Sparkfun.
  • Topi Adafruit RGB Matrix: $25
  • Catu Daya 5V 4A: $15
  • Klip cetak 3D: $1ish (ini untuk menyambungkan panel dan menggantungnya di dinding; jika Anda tidak memiliki akses ke printer 3D, Anda dapat menggunakan strip bulu untuk menyatukannya dan beberapa braket dari toko perangkat keras untuk menggantungnya dari dinding. Saya mencoba menemukan file desain atau.stls untuk ini, tetapi tampaknya telah hilang dari bumi. Klipnya cukup mudah untuk dimodelkan.)
  • 14x baut M4x10: $5ish
  • Empat kabel IDC 4x8 dan tiga kabel daya untuk matriks RGB (saya tidak tahu apa namanya!). Ini seharusnya disertakan dengan panel LED Anda.
  • Total: Sekitar $200, memberi atau menerima.

Proyek ini tidak mengharuskan Anda untuk menyolder atau memiliki pengetahuan pemrograman khusus; itu mengasumsikan Anda tahu cara menulis gambar ke kartu microSD. Jika Anda tidak yakin bagaimana melakukannya, Raspberry Pi foundation memiliki tutorial yang bagus di sini.

Ini juga mengasumsikan Anda memiliki pengetahuan dasar tentang bagaimana melakukan sesuatu dari baris perintah di Linux, dan panduan kode mengasumsikan Anda mengetahui dasar-dasar Python (tetapi - Anda tidak perlu mengikuti panduan kode untuk dapat membangun dan jalankan generator partikel.) Jika Anda terjebak pada salah satu langkah, jangan ragu untuk mengajukan pertanyaan atau memposting di /r/raspberry_pi (yang juga, saya asumsikan, audiens utama untuk instruksi ini)

Langkah 1: Pasang Papan LED

Pasang Papan LED
Pasang Papan LED

Pertama, Anda akan merakit panel LED 32x32 individual menjadi satu panel 128x32 besar. Anda harus melihat papan Anda dan menemukan panah kecil yang menunjukkan urutan koneksi; di tambang mereka tepat di dekat konektor IDC HUB75/2x8. Pastikan Anda memiliki panah yang menunjuk dari mana Rpi akan terhubung (ke kanan pada foto di atas) di sepanjang papan.

Anda juga harus menyambungkan kabel daya. Sebagian besar kabel ini memiliki dua konektor perempuan yang menempel pada papan, dan satu set terminal sekop yang menempel pada sumber listrik. Panel yang saya kerjakan memiliki indikator untuk 5V dan GND hampir seluruhnya tersembunyi di bawah konektor itu sendiri, tetapi kabelnya hanya terhubung ke satu arah. Anda pasti ingin memastikan bahwa Anda menghubungkan semua 5V bersama-sama dan semua GND bersama-sama, karena jika Anda menyalakannya dari belakang, Anda hampir pasti akan menggorengnya.

Karena kabel daya yang disertakan dengan papan saya sangat pendek, saya harus memperpanjang satu dengan memasukkan cabang terminal sekop ke konektor yang lain (Ini cukup mudah - Anda mungkin harus menekuk terminal sekop sedikit ke dalam, tapi saya' sudah menyertakan gambar untuk berjaga-jaga). Saya berakhir dengan dua set terminal sekop dan satu konektor IDC 2x8 di sebelah kanan papan LED saya yang sekarang memanjang.

Anda juga akan melihat bahwa saya memiliki dua baut yang tidak terpasang pada apa pun di kedua ujung papan; ini akan berada di atas setelah semuanya dibalik, dan akan digunakan untuk menempelkannya ke dinding.

Jadi - setelah Anda menghubungkan semua panel dengan klip, kabel IDC 2x8, dan kabel daya, Anda siap untuk melanjutkan ke langkah berikutnya!

Langkah 2: Siapkan Raspberry Pi

Selanjutnya, Anda akan mengesampingkan papan LED (untuk saat ini) dan menyiapkan Pi 3 untuk menjalankannya. Kami akan menggunakan Raspbian Stretch Lite dan pustaka matriks RGB hzeller (daripada pustaka matriks Adafruit, yang lebih tua dan tidak terawat.)

Pertama, Anda ingin menulis gambar Raspbian Lite ke kartu SD; setelah Anda selesai melakukannya, lanjutkan dan sambungkan monitor dan keyboard ke pi dan boot. (Anda juga dapat melakukan ini tanpa kepala, baik melalui ssh atau konektor serial, tetapi jika itu yang Anda inginkan, Anda mungkin tidak perlu saya untuk memberi tahu Anda bagaimana melakukannya.) Anda memerlukan koneksi internet untuk ini; Jika Anda memiliki wifi, sambungkan Pi ke jaringan nirkabel Anda dengan mengedit /etc/wpa_supplicant/wpa_supplicant.conf dan menjalankan wpa_cli -i wlan0 reconfigure. (Jika Anda belum pernah melakukan ini, Anda bisa mendapatkan petunjuk di sini).

Setelah Anda terhubung ke internet, kami akan memperbarui pengaturan repositori dpkg dan mengunduh pustaka yang kami butuhkan dengan menjalankan perintah berikut:

sudo apt-get update

sudo apt-get install git python-dev python-pil

git clone

Sekarang kita harus mengkompilasi dan menginstal kode matriks. Jadi, Anda akan masuk ke folder yang berisi perpustakaan:

cd rpi-rgb-led-matriks

dan kompilasi (ini mungkin memakan waktu sebentar):

buat && buat build-python

dan instal ikatan python:

sudo make install-python

Jika Anda mendapatkan kesalahan saat mengkompilasi kode perpustakaan, kembali dan pastikan Anda menginstal python-dev dan python-pil dengan benar! Ikatan python tidak akan dikompilasi tanpa kedua paket tersebut diinstal.

Anda juga harus menonaktifkan output suara Pi Anda (suara on-board mengganggu kode matriks) dengan mengedit /boot/config.txt. Cari baris yang mengatakan dtparam=audio=on dan ubah menjadi dtparam=audio=off.

Jika semuanya dikompilasi OK (Anda akan mendapatkan beberapa peringatan tentang Wstrict-protoypes) pi Anda harus siap untuk menjalankan papan matriks. Silakan dan matikan (sudo shutdown sekarang), cabut, dan kami akan menghubungkan papan lampu ke pi pada langkah berikutnya.

Langkah 3: Hubungkan Pi + Matrix Hat + Papan LED

Hubungkan Pi + Matrix Hat + Papan LED
Hubungkan Pi + Matrix Hat + Papan LED

Jadi, sekarang Pi Anda mati dan dicabut, mari hubungkan topi matriks ke pi dan papan LED ke topi matriks. Jika Pi Anda belum ada di kotaknya, sekarang saat yang tepat untuk memasukkannya ke dalamnya.

Pasang topi matriks dengan melapisinya dengan pin GPIO pada Pi dan mendorongnya dengan lembut ke bawah dengan kekuatan yang merata di kedua sisi. Pastikan pin berbaris dengan benar, sehingga header wanita di topi menutupi pin GPIO pada pi. Jika Anda tidak menyelaraskannya, itu bukan malapetaka; tarik kembali dengan lembut dan luruskan pin yang tertekuk.

Setelah Anda memakai topi, letakkan Pi di sebelah kanan papan LED yang telah dirakit (periksa lagi sambungan daya, dan pastikan panah mengarah dari Pi ke bawah sepanjang papan) dan sambungkan IDC kabel ke topi matriks.

Selanjutnya, Anda ingin menghubungkan terminal sekop untuk daya ke blok terminal topi matriks. Anda memiliki dua konektor sekop per sisi, tetapi keduanya harus pas di sana. Kendurkan sekrup terlebih dahulu dan - Ini harus dilakukan tanpa mengatakan - pastikan Anda meletakkan terminal 5V di sisi berlabel + (ini harus berwarna merah, tetapi - sekali lagi - periksa kembali konektor Anda dan jangan menganggap mereka diproduksi dengan benar) dan terminal GND (ini harus berwarna hitam) di sisi berlabel -. Setelah mereka di sana, kencangkan sekrup di atas blok terminal, dan Anda harus memiliki sesuatu yang terlihat seperti gambar header untuk langkah ini.

Sekarang - Anda mungkin telah memperhatikan bahwa konfigurasi khusus ini membuat setengah dari terminal sekop di kedua sisi terbuka, melayang hanya beberapa milimeter di atas topi matriks (dan tidak terlalu jauh dari satu sama lain.) DAN - terminal sekop akan segera membawa beberapa volt dan beberapa amp Raw Power. Apakah ini, (saya dapat mendengar Anda bertanya dari sisi lain layar) benar-benar Cara yang Tepat Untuk Melakukannya? Apakah, (Anda bersandar lebih dekat dan berbisik), Ide Bagus?

Dan jawabannya adalah (saya menjawab, mengangkat bahu) - tidak, tidak. Cara yang tepat untuk melakukannya adalah dengan melepaskan terminal sekop dari kabel daya dan menyambungkannya kembali ke konektor yang benar untuk blok terminal itu (atau membiarkannya sebagai kabel kosong dan menghubungkannya tanpa konektor ke blok). Jika tidak, Anda bisa memasang pipa heat shrink di sekitar sisi konektor spade yang terbuka atau hanya membungkusnya dengan pita listrik. Tetapi dunia telah jatuh dan manusia malas dan sia-sia, jadi saya tidak melakukan itu.

Tapi - dibungkus atau dibuka - terminal sekop terhubung ke blok terminal, dan kami siap untuk melanjutkan ke langkah berikutnya.

Langkah 4: Uji Matriks RGB

Sekarang Pi Anda terhubung ke papan lampu, balikkan papan dan nyalakan kembali Pi. Anda dapat memberi daya pada topi matriks setelah Pi dicolokkan; jika Anda menyalakan topi sebelum Pi, Pi akan mencoba untuk boot dengan arus yang tidak cukup, dan akan mengeluh pahit (dan mungkin membuat Anda panik kernel dan tidak bisa boot sama sekali.)

Jika Anda kesulitan menjalankan Pi dengan topi matriks, pastikan Anda menggunakan catu daya yang cukup besar untuk Pi (2A+ seharusnya bagus) dan coba colokkan catu daya untuk topi dan untuk Pii ke soket ekstensi atau kabel ekstensi yang sama, dan nyalakan bersama-sama.

Setelah Pi boot, kami siap untuk menguji matriks. Pergi ke tempat sampel pengikatan python berada (cd /rpi-rgb-led-matrix/bindings/python/samples) dan coba generator blok berputar dengan perintah berikut:

sudo./rotating-block-generator.py -m adafruit-hat --led-chain 4

Anda harus menjalankannya sebagai sudo karena pustaka matriks memerlukan akses tingkat rendah ke perangkat keras saat inisialisasi. -m menentukan cara panel terhubung ke pi (dalam hal ini, topi adafruit) dan --led-chain menentukan - Anda dapat menebaknya - berapa banyak panel yang telah kita rantai bersama. Baris dan kolom per panel keduanya default ke 32, jadi kami baik-baik saja di sana.

Sekarang - setelah Anda menjalankan program, satu dari dua (atau, sebenarnya, satu dari tiga) hal akan terjadi:

  • Tidak ada yang terjadi
  • Anda mendapatkan blok berputar yang bagus di tengah papan lampu Anda.
  • Papan lampu berfungsi, eh, saya pikir, tetapi terlihat … aneh (setengahnya berwarna hijau, beberapa baris tidak menyala, dll.)

Jika tidak ada yang terjadi, atau jika panel terlihat aneh, tekan ctrl+c untuk keluar dari program sampel, matikan pi, dan periksa semua koneksi Anda (kabel IDC, daya, pastikan kedua catu daya terpasang, dll.) Pastikan juga topi terhubung dengan benar; jika itu tidak memperbaikinya, turunkan ke satu panel (pastikan untuk menggunakan --led-chain 1 saat mengujinya) dan lihat apakah salah satu panel mungkin buruk. Jika ITU tidak berhasil, lihat tips pemecahan masalah hzeller. jika ITU MASIH tidak berhasil, coba posting ke /r/raspberry_pi (atau forum Adafruit, jika Anda mendapatkan panel dari Adafruit, atau pertukaran tumpukan, dll, dll.)

Jika ini berfungsi tetapi masih terlihat aneh (mungkin seperti gambar tajuk untuk bagian ini) setelah Anda memeriksa koneksi, ada kemungkinan bahwa Anda memiliki semuanya terhubung dengan benar, bahwa panel berfungsi dengan baik, tetapi Sesuatu yang Lain sedang berjalan pada. Yang akan membawa kita ke langkah berikutnya - lebih merupakan pengalihan daripada langkah - pada kecepatan multiplexing dan pemindaian. (Jika papan led Anda berfungsi dengan baik dan Anda tidak tertarik dengan cara kerja panel ini, silakan lewati langkah berikutnya.)

Langkah 5: Tarif Multiplexing dan Pemindaian (atau: Pengalihan Sesaat di Jalan Menuju Kuburan)

Jadi, salah satu kesalahan yang saya buat ketika saya memesan set panel pertama saya dari Alibaba adalah saya mendapatkan panel luar ruangan (mengapa tidak, saya pikir - mereka tahan air, dan lebih cerah!). Dan, ketika saya memasangkannya ke topi matriks saya, semuanya tampak.. tidak benar.

Untuk memahami mengapa demikian, kita akan meluangkan waktu sebentar untuk melihat Phil Burgess dari deskripsi Adafruit tentang cara kerja panel ini. Anda akan mencatat bahwa Burgess menunjukkan bahwa panel tidak menyalakan semua LED mereka sekaligus - mereka menyalakan set baris. Hubungan antara tinggi panel dalam piksel dan jumlah baris yang menyala sekaligus disebut kecepatan pindai. Jadi, misalnya - Pada panel 32x32 dengan pemindaian 1/16, dua baris (1 dan 17, 2 dan 18, 3 dan 19, dll) menyala sekaligus, sepanjang papan, dan kemudian pengontrol mengulangi. Sebagian besar perpustakaan yang menggerakkan matriks RGB dibuat untuk panel di mana kecepatan pemindaian adalah 1/2 dari tinggi piksel - yaitu, mereka menggerakkan dua baris LED sekaligus.

Panel luar ruangan (dan beberapa panel dalam ruangan - pastikan Anda melihat spesifikasi sebelum memesan) memiliki kecepatan pemindaian 1/4 dari tinggi piksel, yang berarti mereka mengharapkan empat baris dijalankan sekaligus. Ini membuatnya lebih cerah (yang bagus) tetapi membuat banyak kode standar tidak berfungsi dengannya (yang buruk). Selain itu, mereka cenderung memiliki piksel yang rusak secara internal, yang memerlukan transformasi nilai x dan y dalam perangkat lunak untuk menangani piksel yang tepat. Mengapa dibuat seperti ini? Saya tidak punya ide. Apakah Anda tahu? Jika demikian, tolong beritahu saya. Kalau tidak, itu hanya akan tetap menjadi misteri.

Jadi, jika Anda memiliki salah satu panel luar ruangan yang aneh ini, Anda (mungkin) beruntung! hzeller baru-baru ini menambahkan dukungan untuk konfigurasi umum dari jenis panel ini ke perpustakaannya. Anda dapat membaca lebih lanjut tentang itu di halaman github untuk proyek tersebut, tetapi Anda dapat meneruskan --led-multiplexing={0, 1, 2, 3} ke kode sampel (Anda mungkin juga perlu berpura-pura seperti Anda memiliki rantai panjang ganda dari panel setengah panjang) dan itu harus berfungsi.

Namun, ada beberapa pola transformasi piksel yang tidak didukung - dan (coba tebak) panel saya memiliki salah satunya! Jadi, saya harus menulis kode transformasi saya sendiri (saya juga - untuk alasan apa pun - harus memberi tahu perpustakaan untuk bertindak seperti saya memiliki delapan panel 16x32 yang dirantai bersama). yaitu sebagai berikut:

def transformPixels(j, k): effJ = j % 32

effK = k % 32

modY = k

modX = j

#modX dan modY adalah X dan Y yang dimodifikasi;

#effJ dan effK pastikan kita melakukan transformasi dalam matriks 32x32 sebelum mendorong

jika ((effJ) > 15):

modX = modX + 16

jika ((effK) > 7):

modY = modY - 8

modX = modX + 16

jika ((effK) > 15):

modX = modX - 16

jika ((effK) > 23):

modY = modY - 8

modX = modX + 16

#Kemudian, kami mendorong mereka ke lokasi yang benar (setiap x+32 memindahkan satu panel)

jika (j > 31):

modX += 32

jika (j > 63):

modX += 32

jika (j > 95):

modX += 32

kembali (modX, modY)

Jika Anda memiliki panel seperti milik saya, ini mungkin berhasil. Jika tidak, Anda harus menulis sendiri - jadi, Anda tahu, semoga berhasil dan semoga berhasil.

Langkah 6: Program Starboard (atau: Kembali ke Jalur dan Siap Piksel)

Sekarang setelah matriks Anda beroperasi dan siap digunakan, yang harus Anda lakukan adalah meletakkan program kanan di Pi Anda dan menyiapkannya untuk digunakan. Pastikan Anda berada di direktori home pengguna pi (cd /home/pi) dan jalankan perintah berikut:

git clone

Anda harus memiliki folder baru, kanan, yang berisi tiga file: LICENSE.md, README.md dan starboard_s16.py. Coba program kanan dengan menjalankannya melalui python:

sudo python./starboard_s16.py

dan Anda akan mendapatkan sekumpulan partikel yang bergerak dengan kecepatan berbeda dan meluruh dengan kecepatan berbeda. Setiap 10.000 kutu atau lebih (Anda dapat masuk ke skrip python untuk mengedit/mengubah ini) itu akan mengubah mode (ada empat: RGB, HSV, Pelangi, dan Skala Abu-abu).

Jadi, sekarang satu-satunya yang tersisa untuk dilakukan adalah membuat kode kanan berjalan saat startup. Kami akan melakukannya dengan mengedit (dengan sudo) /etc/rc.local. Yang ingin Anda lakukan adalah menambahkan baris berikut tepat sebelum "keluar 0" dalam skrip:

python /home/pi/starboard/starboard_s16.py &

Setelah Anda melakukannya, reboot pi - setelah dijalankan melalui urutan boot, skrip starboard_s16.py akan langsung dijalankan!

Jika Anda ingin melihat-lihat skrip, jangan ragu untuk melakukannya - skrip ini dilisensikan di bawah GNU GPL 3.0. Jika skrip tidak berjalan untuk Anda, atau Anda mengalami masalah dengannya, jangan ragu untuk memberi tahu saya atau mengirimkan bug di github, dan saya akan melihat apa yang dapat saya lakukan untuk memperbaikinya!

Hal (sangat) terakhir yang mungkin ingin Anda lakukan adalah mengatur SSH pada pi, sehingga Anda dapat melakukan remote dan mematikannya dengan aman. Anda akan /pasti/ ingin mengubah kata sandi Anda (melalui perintah passwd), dan Anda dapat menemukan instruksi untuk mengaktifkan ssh (juga dari baris perintah) di sini.

Direkomendasikan: