Mundarija:

RPi 3 Starboard / zarracha generatori: 6 qadam (rasmlar bilan)
RPi 3 Starboard / zarracha generatori: 6 qadam (rasmlar bilan)

Video: RPi 3 Starboard / zarracha generatori: 6 qadam (rasmlar bilan)

Video: RPi 3 Starboard / zarracha generatori: 6 qadam (rasmlar bilan)
Video: Adding a 7" Display to the Raspberry Pi 3 2024, Iyul
Anonim
Image
Image
LED panelini yig'ing
LED panelini yig'ing

Raspberry Pi -dan charchadingizmi? Siz olamning asosiy kuchlariga buyruq berishga tayyormisiz, xohlasangiz fotonlarni chaqirasiz va o'chirasizmi? Siz yashash xonangizga qiziqarli narsalarni osib qo'yishni xohlaysizmi yoki Denisga shu kunlarda o'zingizni yaxshi ishlayotganingizni ko'rsatish uchun Facebookda ajoyib loyiha joylashtirmoqchimisiz, katta rahmat? Siz kompyuter simulyatsiyasida qolib ketdingizmi va ozod bo'lguningizcha yoki o'chirilguningizcha soatlab o'tiribsizmi? Agar bularning barchasi yoki barchasi sizni tasvirlab bersa, [diktor ovozi] Xush kelibsiz!

Ushbu qo'llanma sizga Raspberry Pi 3 va ba'zi RGB matritsali panellar yordamida zarrachalar generatori displeyini qanday yig'ish va sozlashni ko'rsatib beradi. Sizga bir soatdan ikki soatgacha vaqt ketishi kerak, va tayyor mahsulot taxminan 30 dyuymli (Pi ni hisobga olmaganda) bo'ladi va devorga o'rnatiladi. Bu yashash xonasi, ofis, o'yin xonasi yoki boshqa joyga qo'yishni xohlagan joyingiz uchun juda ajoyib bezak bo'ladi.

Ishni boshlashdan oldin, sizga kerak bo'lgan narsalar va taxminiy xarajatlar:

  • Rpi 3 + SD -karta + Koson + Quvvat manbai: $ 70 (Canakit -dan, lekin, agar siz alohida sotib olsangiz, ehtiyot qismlarni arzonroq sotib olishingiz mumkin.)
  • 4x 32x32 RGB LED matritsasi (tercihen 1/16 ko'rish bilan yopiq p6): Alibaba yoki Aliexpress-ga yuborilgan $ 80- $ 100; Adafruit yoki Sparkfun uchun 160 dollar.
  • Adafruit RGB Matrix shlyapasi: 25 dollar
  • 5V 4A quvvat manbai: $ 15
  • 3D bosma kliplar: $ 1ish (bu panellarni ulash va devorga osib qo'yish uchun; agar sizda 3D printerdan foydalanish imkoni bo'lmasa, ularni bir -biriga yopishtirish uchun mo'ynali tasma va apparat do'konidagi qavslardan foydalanishingiz mumkin. Men uni dizayn fayllarini yoki.stls -ni topishga harakat qildim, lekin ular erdan o'tganga o'xshaydi. Kliplarni modellashtirish juda oson.)
  • 14x M4x10 murvat: 5 dollar
  • To'rtta 4x8 IDC kabeli va RGB matritsalari uchun uchta quvvat kabeli (bu nima deyilganini bilmayman!). Ular sizning LED panellaringizga kiritilishi kerak edi.
  • Hammasi: 200 dollar atrofida, bering yoki oling.

Loyiha sizga lehim yoki maxsus dasturlash bilimini talab qilmaydi; Siz microSD kartaga rasm yozishni bilasiz deb taxmin qilasiz. Agar siz buni qanday qilishni bilmasangiz, Raspberry Pi jamg'armasi bu erda yaxshi darslikka ega.

Bundan tashqari, siz Linux -dagi buyruq satridan narsalarni qanday bajarish haqida asosiy ma'lumotga ega ekanligingizni taxmin qilasiz va kodni o'qish Python asoslarini bilishingizni nazarda tutadi (lekin - qurish va tuzish uchun siz kodni o'rganishga amal qilishingiz shart emas). zarrachalar generatorini ishga tushiring.) Agar siz biron -bir qadamda qolib ketsangiz, /r /raspberry_pi -da savol bering yoki yozing (bu men uchun asosiy auditoriya deb o'ylayman)

1 -qadam: LED panelini yig'ing

LED panelini yig'ing
LED panelini yig'ing

Birinchidan, siz alohida 32x32 LED panellarini bitta katta 128x32 panelga yig'asiz. Siz taxtalarga qarashingiz va ulanish tartibini ko'rsatadigan kichik o'qlarni topishingiz kerak; meniki ular HUB75/2x8 IDC ulagichlari yonida. O'qlar Rpi ulanadigan joydan (yuqoridagi rasmda o'ng tomonda) taxtaning uzunligini ko'rsatganligiga ishonch hosil qiling.

Shuningdek, siz elektr kabellarini ulashingiz kerak. Ushbu kabellarning ko'pchiligida ikkita ayol konnektorlar taxtalarga biriktiriladi va quvvat manbaiga ulanadigan belkurak terminallari mavjud. Men ishlayotgan panellarda 5V va GND ko'rsatkichlari ulagichlar ostida deyarli yashiringan, lekin kabellar faqat bitta yo'nalishda ulanadi. Siz barcha 5V -larni va barcha GND -larni bir -biriga bog'layotganingizga ishonch hosil qilishni xohlaysiz, chunki agar siz ularni orqaga qaytarsangiz, siz ularni qovurasiz.

Plitalarimdagi quvvat kabellari juda qisqa bo'lgani uchun, men simli terminalning tishini boshqasiga ulash orqali uzatishga majbur bo'ldim. Agar kerak bo'lsa, rasm qo'shilgan). Men tugatgan ikkita datchikli terminallar va bitta 2x8 IDC ulagichi, endi uzaytiriladigan LED kartamning o'ng tomonida.

Siz ham ko'rasiz, menda ikkita bolt taxtaning uchida hech narsaga bog'lanmagan; hamma narsa ag'darilganidan keyin ular tepada bo'ladi va uni devorga mahkamlash uchun ishlatiladi.

Shunday qilib, siz barcha panellarni kliplar, 2x8 IDC kabellari va quvvat kabellari bilan bog'laganingizdan so'ng, siz keyingi bosqichga o'tishga tayyormiz!

2 -qadam: Raspberry Pi tayyorlang

Keyin, siz LED panelini chetga surib qo'yasiz (hozircha) va Pi 3 -ni ishga tushirishga tayyorlang. Biz Raspbian Stretch Lite va hzellerning RGB matritsa kutubxonasidan foydalanamiz (Adafruit matritsalar kutubxonasi emas, balki eski va saqlanmagan).

Birinchidan, siz Raspbian Lite tasvirini SD -kartaga yozmoqchisiz; Buni qilganingizdan so'ng, monitor va klaviaturani pi -ga ulang va ishga tushiring. (Siz buni boshsiz ham, ssh yoki ketma -ket ulagich orqali ham qilishingiz mumkin, lekin agar siz shunday yo'l tutsangiz, sizga buni qanday qilishni aytishning hojati yo'qdir.) Buning uchun sizga internet aloqasi kerak bo'ladi.; Agar sizda Wi -Fi bo'lsa, /etc/wpa_supplicant/wpa_supplicant.conf faylini tahrirlash va wpa_cli -i wlan0 -ni qayta ishga tushirish orqali Pi -ni simsiz tarmoqqa ulang. (Agar siz buni hech qachon qilmagan bo'lsangiz, bu erda ko'rsatmalarni olishingiz mumkin).

Internetga ulanganingizdan so'ng, biz dpkg ombori sozlamalarini yangilaymiz va kerakli kutubxonalarni quyidagi buyruqlar yordamida yuklaymiz:

sudo apt-get yangilanishi

sudo apt-get install python-dev python-pil ni o'rnating

git klon

Endi biz matritsa kodini kompilyatsiya qilishimiz va o'rnatishimiz kerak. Shunday qilib, siz kutubxona joylashgan papkaga kirasiz:

cd rpi-rgb-led-matrix

va uni kompilyatsiya qiling (bu bir daqiqa vaqt olishi mumkin):

make && build-python

va python birikmalarini o'rnating:

sudo install-python qiladi

Agar kutubxona kodini tuzishda xatolik yuz bersa, orqaga qayting va python-dev va python-pil ni to'g'ri o'rnatganingizga ishonch hosil qiling! Python bog'lamlari ikkala paket ham o'rnatilmasdan kompilyatsiya qilinmaydi.

Bundan tashqari, /boot/config.txt-ni tahrirlash orqali Pi-ning ovoz chiqishini o'chirib qo'yishingiz kerak bo'ladi (bortdagi ovoz matritsa kodiga xalaqit beradi). Dtparam = audio = yoqilgan qatorni qidiring va uni dtparam = audio = o'chirib qo'ying.

Agar hamma narsa yaxshi tuzilgan bo'lsa (siz Wstrict-protoypes haqida bir nechta ogohlantirish olasiz) sizning pi matritsa taxtasini ishga tushirishga tayyor bo'lishi kerak. Davom eting va uni o'chiring (hozir sudo o'chirilgan), uni ajratib oling va biz keyingi bosqichda yorug'lik taxtasini pi -ga ulaymiz.

3 -qadam: Pi + Matrix Hat + LED platasini ulang

Pi + Matrix Hat + LED platasini ulang
Pi + Matrix Hat + LED platasini ulang

Shunday qilib, endi sizning Pi o'chirilgan va ajratilgan bo'lsa, keling, matritsa shlyapasini pi va LED taxtasini matritsa shlyapasiga ulaylik. Agar sizning Pi sizning holatingizda bo'lmasa, hozir uni joylashtirishning eng yaxshi vaqti.

Matritsali shlyapani Pi ga GPIO pinlari bilan o'ralgan holda o'rnating va uni har ikki tomondan teng kuch bilan ohista pastga suring. Pimdagi GPIO pinlarini shlyapadagi ayol boshlari to'liq yopishi uchun pinlarning to'g'ri joylashtirilganligiga ishonch hosil qiling. Agar siz uni noto'g'ri joylashtirsangiz, bu falokat emas; uni muloyimlik bilan orqaga torting va egilgan pimlarni to'g'rilang.

Shlyapani kiyganingizdan so'ng, Pi -ni o'rnatilgan LED taxtaning o'ng tomoniga qo'ying (quvvat ulanishlarini yana bir bor tekshiring va o'qlar PIdan taxtaning uzunligini pastga yo'naltirilganligiga ishonch hosil qiling) va IDC -ni ulang. matritsa shlyapasiga simi.

Keyinchalik, siz matritsa shlyapasining terminal blokiga quvvat olish uchun pichoqli terminallarni ulashni xohlaysiz. Sizda har tomondan ikkita belkurak ulagichi bor, lekin ikkalasi ham yaxshi joylashishi kerak. Avval vintlarni bo'shating va - Aytish kerakki - 5V terminalini + belgisini qo'ygan tomonga qo'yganingizga ishonch hosil qiling (ular qizil bo'lishi kerak, lekin yana - ulagichlaringizni ikki marta tekshiring va ular to'g'ri ishlab chiqarilgan deb o'ylamang) va -deb belgilangan tomonda GND terminallari (ular qora bo'lishi kerak). Ular u erga kirgandan so'ng, terminal blokining yuqori qismidagi vintlarni mahkamlang va sizda bu qadam uchun sarlavha tasviriga o'xshash narsa bo'lishi kerak.

Siz hozir payqagan bo'lishingiz mumkin, bu konfiguratsiya har ikki tomonida ham uchburchak terminalining yarmini ochiq qoldiradi va matritsali shlyapa ustidan millimetrga yaqinroq siljiydi (va bir -biridan unchalik uzoq emas) VA - belkurak terminallari tez orada Ham bir necha voltli, ham bir nechta Raw Power quvvatiga ega. Bu, (siz ekranning boshqa tomonidan so'raganingizni eshitishim mumkin) haqiqatan ham buni qilishning to'g'ri yo'limi? Yaxshi fikrmi?

Va javob (men javob beraman, elkasini qisib) - yo'q, unday emas. To'g'ri yo'l-bu elektr simlarini ajratish va ularni terminal blokining to'g'ri ulagichiga qayta burish (yoki ularni yalang'och simlar sifatida qoldirib blokga ulagichsiz ulash). Agar shunday bo'lmasa, siz konnektorning ochiq tomoniga issiqlik qisqaruvchi trubka qo'yishingiz yoki uni elektr lentaga o'rashingiz mumkin. Ammo dunyo qulab tushdi va odam dangasa va behuda, shuning uchun men bunday qilmaganman.

Ammo - o'ralgan yoki o'ralmagan - belkurak terminallari terminal blokiga ulangan va biz keyingi bosqichga o'tishga tayyormiz.

4 -qadam: RGB matritsasini sinab ko'ring

Endi sizning Pi yorug'lik paneliga ulangan bo'lsa, taxtani ag'daring va Pi -ni qayta yoqing. Pi ulanganidan keyin siz matritsa shlyapasini yoqishingiz mumkin; Agar siz shlyapani Pi oldidan quvvatlantirsangiz, Pi etarlicha oqimsiz yuklashga harakat qiladi va achchiq shikoyat qiladi (va sizga yadro vahimasi bo'lishi mumkin, lekin umuman yuklamaydi.)

Agar siz matritsali shlyapa bilan Pi -ni yuklashda muammoga duch kelsangiz, Pi uchun etarlicha kuchli quvvat manbaidan foydalanayotganingizga ishonch hosil qiling (2A+ yaxshi bo'lishi kerak) va shlyapa uchun ham Bir xil elektr uzatish simiga yoki uzaytirgichga ulang va ularni birgalikda quvvatlang.

Pi ishga tushirilgandan so'ng, biz matritsalarni sinab ko'rishga tayyormiz. Python ulanish namunalari joylashgan joyga o'ting (cd/rpi-rgb-led-matrix/bindings/python/namunalari) va quyidagi buyruq bilan aylanadigan blok generatorini sinab ko'ring:

sudo./rotating-block-generator.py -m adafruit-shapka-zanjirli zanjir 4

Siz uni sudo sifatida ishlatishingiz kerak, chunki matritsa kutubxonasi ishga tushirilganda qo'shimcha qurilmalarga past darajadagi kirishni talab qiladi. -M panellarning pi -ga ulanish usulini bildiradi (bu holda, adafruit shlyapasi) va -zanjirli zanjir -siz taxmin qildingizmi -biz qancha panelni bir -biriga bog'lab qo'yganmiz. Har bir paneldagi satr va ustunlar ikkitasi 32 ga teng, shuning uchun biz u erda yaxshi bo'lamiz.

Endi - dasturni bajarganingizdan so'ng, ikkita narsadan biri (yoki, albatta, uchdan biri) sodir bo'ladi:

  • Hech narsa bo'lmaydi
  • Yorug'lik taxtasining o'rtasida siz yaxshi aylanadigan blokni olasiz.
  • Yorug'lik taxtasi ishlaydi, menimcha, lekin g'alati ko'rinadi (yarmi yashil, ba'zi qatorlar yonmaydi va hokazo).

Agar biror narsa sodir bo'lmasa yoki panel g'alati ko'rinsa, namuna dasturidan chiqish uchun ctrl+c tugmalarini bosing, pi -ni o'chiring va barcha ulanishlaringizni tekshiring (IDC kabeli, quvvat, ikkala quvvat manbai ham ulanganligiga ishonch hosil qiling va hokazo). Shuningdek, shlyapaning to'g'ri ulanganligiga ishonch hosil qiling; agar bu uni tuzatmasa, uni bitta panelga tushiring (sinovdan o'tkazilganda --led-zanjir 1-dan foydalanganingizga ishonch hosil qiling) va panellardan biri yomon bo'lishi mumkinligini tekshiring. Agar bu ishlamasa, hzellerning muammolarni bartaraf etish bo'yicha maslahatlarini ko'rib chiqing. Agar bu hali ham ishlamasa, /r /raspberry_pi (yoki Adafruit forumlari, agar siz panellaringizni Adafruit -dan olgan bo'lsangiz yoki stack almashuvi va h.k.) ga joylashtirishga harakat qilib ko'ring.

Agar u ishlayotgan bo'lsa, lekin siz hali ham g'alati tuyulsa (ehtimol, bu bo'limning sarlavhasi tasviri kabi), siz ulanishlarni tekshirgandan so'ng, siz hamma narsani to'g'ri ulagan bo'lishingiz mumkin, panellar to'g'ri ishlamoqda, lekin boshqa narsa ketmoqda. yoqilgan. Bu bizni keyingi bosqichga olib chiqadi - ko'paytirish va skanerlash tezligidan ko'ra ko'proq burilish. (Agar sizning boshqaruv paneli yaxshi ishlayotgan bo'lsa va sizni bu panellarning ichki ishi qiziqtirmasa, keyingi bosqichni o'tkazib yuboring.)

5 -qadam: Ko'paytirish va skanerlash tezligi (yoki: qabr yo'lida bir lahzalik burilish)

Shunday qilib, men Alibabadan birinchi panellar panelini buyurtma qilganimda qilgan xatolarimdan biri shundaki, men tashqi panellarni oldim (nima uchun, deb o'yladim - ular suv o'tkazmaydigan va yorqinroq!). Va men ularni matritsa shlyapamga bog'laganimda, hamma narsa to'g'ri emasdek tuyuldi.

Buning sababini tushunish uchun biz Adafruitning ushbu panellar qanday ishlashini tasvirlab bergan Fil Burgessga bir daqiqa vaqt ajratamiz. E'tibor berasizki, Burgess shuni ta'kidlaganki, panellar bir vaqtning o'zida barcha LEDlarini yoqmaydi - ular qatorlar qatorini yoritadi. Panel balandligi va piksellar sonining o'zaro bog'liqligi skanerlash tezligi deb ataladi. Masalan, 1/16 o'lchamli 32x32 o'lchamli panelda ikkita satr (1 va 17, 2 va 18, 3 va 19 va boshqalar) bir vaqtning o'zida yonib turadi, so'ngra boshqaruv paneli takrorlanadi.. RGB matritsalarini boshqaradigan ko'pgina kutubxonalar skanerlash tezligi piksellar balandligining 1/2 qismi bo'lgan panellar uchun qurilgan, ya'ni ular bir vaqtning o'zida ikki qatorli LEDlarni boshqaradi.

Tashqi panellar (va ba'zi ichki panellar - buyurtma berishdan oldin, texnik xususiyatlarga e'tibor qaratganingizga ishonch hosil qiling) skanerlash tezligi pikselning balandligining 1/4 qismini tashkil etadi, ya'ni ular bir vaqtning o'zida to'rtta chiziq o'tkazilishini kutishadi. Bu ularni yorqinroq qiladi (bu yaxshi), lekin ko'p standart kod ular bilan ishlamaydi (bu yomon). Bunga qo'shimcha ravishda, ular piksellarni ichki tartibda ishlamay qoladilar, bu esa to'g'ri piksellarni hal qilish uchun dasturiy ta'minotdagi x va y qiymatlarini o'zgartirishni talab qiladi. Nega bunday qilingan? Umuman xabarim yo'q. Bilasizmi? Agar shunday bo'lsa, menga ayting. Aks holda, bu sir bo'lib qolishi kerak.

Shunday qilib, agar sizda bu g'alati tashqi panellardan biri bo'lsa, (ehtimol) omadingiz bor! yaqinda hzeller kutubxonasiga ushbu turdagi panellarning umumiy konfiguratsiyasini qo'llab -quvvatladi. Siz bu haqda batafsil ma'lumotni loyihaning github sahifasida o'qishingiz mumkin, lekin siz --led-multiplexing = {0, 1, 2, 3} kodini namuna kodiga o'tkazishingiz mumkin (sizda xuddi shunday yarim uzunlikdagi panellarning ikki uzunlikdagi zanjiri) va u ishlashi kerak.

Ba'zi piksellarni o'zgartirish modellari mavjud, ammo qo'llab -quvvatlanmaydi - va (nima bo'lishini taxmin qiling) mening panellarimdan biri bor! Shunday qilib, men o'z konvertatsiya kodimni yozishim kerak edi (men ham - har qanday sababga ko'ra - kutubxonaga 16x32 sakkizta panelni bir -biriga bog'lab qo'ygandek harakat qilishimni aytishim kerak). bu quyidagicha:

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

effK = k % 32

modY = k

modX = j

#modX va modY - o'zgartirilgan X va Y;

#effJ va effK bosishdan oldin 32x32 matritsada aylantirishimizga ishonch hosil qiling

agar ((effJ)> 15):

modX = modX + 16

agar ((effK)> 7):

modY = modY - 8

modX = modX + 16

agar ((effK)> 15):

modX = modX - 16

agar ((effK)> 23):

modY = modY - 8

modX = modX + 16

#Keyin biz ularni kerakli joyga suramiz (har bir x+32 bitta panelni siljitadi)

agar (j> 31):

modX += 32

agar (j> 63):

modX += 32

agar (j> 95):

modX += 32

qaytish (modX, modY)

Agar sizda meniki kabi panel bo'lsa, bu buning uchun ishlashi mumkin. Agar shunday bo'lmasa, siz o'zingiz yozishingiz kerak bo'ladi - bilasizmi, omad tilaymiz.

6 -qadam: Starboard dasturi (yoki: Track -ga qaytish va pikselga tayyor)

Endi siz matritsalarni ishga tushirdingiz va ishga tayyormiz, faqat sichqoncha dasturini Pi -ga qo'ying va uni ishga tayyorlang. Pi foydalanuvchining uy katalogida ekanligingizga ishonch hosil qiling (cd /home /pi) va quyidagi buyruqni bajaring:

git klon

sizda uchta faylni o'z ichiga olgan yangi papka bo'lishi kerak: LICENSE.md, README.md va starboard_s16.py. Boshqaruv dasturini python orqali ishga tushiring:

sudo python./starboard_s16.py

va siz har xil tezlikda harakatlanadigan va har xil tezlikda parchalanadigan bir qancha zarrachalarni olishingiz kerak. Har 10 000 ta shomil yoki shunga o'xshash (siz uni tahrirlash/o'zgartirish uchun python skriptiga kirishingiz mumkin) u rejimlarni o'zgartiradi (to'rttasi bor: RGB, HSV, Rainbow va Greyscale).

Shunday qilib, endi faqat boshlang'ich slayd kodini ishga tushirish qoladi. Biz buni (sudo bilan) /etc/rc.local tahrirlash orqali qilamiz. Siz nima qilishni xohlasangiz, skriptda "chiqish 0" dan oldin quyidagi qatorni qo'shing:

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

Buni amalga oshirgandan so'ng, pi -ni qayta ishga tushiring - u yuklash ketma -ketligidan o'tgandan so'ng, starboard_s16.py skriptini darhol boshlash kerak!

Agar siz skriptni aylantirmoqchi bo'lsangiz, bemalol - GNU GPL 3.0 ostida litsenziyalangan. Agar skript siz uchun ishlamasa yoki sizda muammo bo'lsa, menga xabar bering yoki github -dagi xatoni yuboring, men uni tuzatish uchun nima qilishim kerakligini ko'raman!

Siz qilmoqchi bo'lgan oxirgi narsa - bu SSH -ni pi -ga o'rnatish, shunda siz masofadan turib uni xavfsiz o'chirib qo'yishingiz mumkin. Siz / parolingizni o'zgartirishni xohlaysiz (passwd buyrug'i orqali) va bu erda sshni (shuningdek, buyruq satridan) yoqish bo'yicha ko'rsatmalarni topishingiz mumkin.

Tavsiya: