Агуулгын хүснэгт:
- Алхам 1: Тоног төхөөрөмж
- Алхам 2: Raspberry Pi -ийг тохируулах
- Алхам 3: Жишээ кодыг тохируулах
- Алхам 4: Өөрөө гарын үсэг зурсан SSL сертификат үүсгэх
- Алхам 5: Тоног төхөөрөмжийг холбох
- Алхам 6: Серверийн талын код
- Алхам 7: Вэбсайтын код
- Алхам 8: Эцэст нь
Видео: Disco-pi: 8 алхам (зурагтай)
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:05
Энэхүү зааварчилгаа нь вэб браузераас тоглосон хөгжим дээр үндэслэн өнгөт LED зурвасыг удирдахын тулд Raspberry Pi -ийг хэрхэн ашиглахыг харуулав.
Энэ нь HTTPS дээр Node.js ашиглан үндсэн вэбсайт үүсгэж, WSS (Secure Websocket) дээр socket.io -ийг хэрхэн ашиглахыг харуулав.
Вэбсайт нь маш энгийн зохион байгуулалттай ганцхан хуудастай. Вэб хуудас нь сервер дээрх нийтийн/аудио фолдерт байрладаг хөгжмийн файлуудын жагсаалтаас бүрддэг. Жагсаалтаас сонголт хийх нь HTML 5 аудио элементийг ашиглан вэб хуудсан дээрх хөгжмийн файлыг тоглуулдаг. Хөгжмийн файлыг тоглуулах явцад вэб хуудас нь хөгжимд дүн шинжилгээ хийхийн тулд AudioContext интерфэйсийг ашигладаг бөгөөд үүнийг аюулгүй вэбсокет холболтоор сервер рүү илгээдэг.
Raspberry Pi дээр ажилладаг сервер нь вэбсокетээр дамжуулсан өгөгдөл дээр үндэслэн WS2811 LED туузан дээрх LED -ийн өнгийг өөрчлөхийн тулд Node RPI WS281x Native номын санг (Jeremy Garff -ийн WS281X номын санг ороосон) ашигладаг.
Жишээ кодыг эндээс олж болно: disco-pi
Алхам 1: Тоног төхөөрөмж
- Бөөрөлзгөнө Pi - Би Raspberry Pi 2B -ийг ашиглаж байсан боловч та CAD 100 орчим Raspberry Pi 3 гарааны иж бүрдэл авах боломжтой.
- WS2811 LED зурвас - Би ALITOVE 16.4ft 150 пиксел WS2811 -тэй тоглож байсан. Энэ нь хянагч болон ойролцоогоор CAD 45-50-ийн тэжээлийн хангамжтай ирдэг
- Barrel Jack Connector - Би орон нутгийн цахилгаан барааны дэлгүүрээс ийм зүйл худалдаж авсан. Зөвхөн таны цахилгаан хангамжид нийцэж байгаа эсэхийг шалгаарай
- Холбогч / утас - Надад зарим эмэгтэй -эрэгтэй холбогч кабель, 22 хэмжигч хатуу залгууртай утас байсан.
Алхам 2: Raspberry Pi -ийг тохируулах
Үйлдлийн систем
Би ихэвчлэн хамгийн сүүлийн үеийн Raspbian бүтцийг ашигладаг. Зургийг татаж аваад SD карт руу бичнэ үү. Хэрэв та Windows компьютер ашиглаж байгаа бол Win32 Disk Imager програмыг ашиглан дүрсийг SD карт руу бичих боломжтой.
Node.js
Node.js. -ийн хамгийн сүүлийн хувилбарыг суулгана уу. Бичиж байх үед би 8.9.1 -ийг ашиглаж байна
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get nodejs суулгаарай
Git суулгана уу
sudo apt-get суулгах git
Алхам 3: Жишээ кодыг тохируулах
Жишээ кодыг хуулна уу
1. Суурилуулах үндсэн фолдерыг тохируулна уу
cd /opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. git git репозиторын жишээг клон хийх
git clone https://github.com/haydockjp/disco-pi.git"
эсвэл
git clone [email protected]: haydockjp/disco-pi.git
3. Хараат байдлыг суурилуул
cd disco-pi
npm суулгах
Үүнд 2-3 минут шаардагдаж магадгүй
Алхам 4: Өөрөө гарын үсэг зурсан SSL сертификат үүсгэх
1. Хувийн түлхүүр файл үүсгэх
cd /opt/com.jonhaydock/disco-pi/certs
openssl genrsa-диско-pi-key.pem 2048 онд
2. CSR (Гэрчилгээнд гарын үсэг зурах хүсэлт) үүсгэх
openssl req -шинэ-түлхүүр диско-pi-key.pem -out disco-pi-csr.pem
Энэ үед гэрчилгээ авах хүсэлтийн талаар зарим мэдээллийг асуух болно. Энэ нь өөрөө гарын үсэг зурсан гэрчилгээ тул дэлгэрэнгүй мэдээллийг хэр үнэн зөв бөглөх нь танд хамаарна. Энд нэг жишээ дурдъя
Улсын нэр (2 үсгийн код) [AU]: CA
Муж эсвэл мужийн нэр (бүтэн нэр) [Зарим муж]: Британийн Колумбын нутаг дэвсгэрийн нэр (жишээ нь, хот) : Ванкуверын байгууллагын нэр (жишээ нь, компани) [Интернет Виджитс Пти Ltd]: Диско Пи Байгууллагын нэгжийн нэр (жишээ нь, хэсэг)) : Нийтлэг нэр (жишээ нь сервер FQDN эсвэл ТАНЫ нэр) : disco-pi Имэйл хаяг : [email protected] Сорилтын нууц үг : Компанийн нэмэлт нэр :
Энэ жишээн дээр буцах товчийг дарахад л сорилтын нууц үгийг хоосон орхино
3. Сертификат үүсгэх
openssl x509 -req -days 1095 -in disco-pi-csr.pem -signkey disco-pi-key.pem -out disco-pi-cert.pem
4. Нэмэлт аюулгүй байдлын үүднээс бид Diffie Hellman Parameters файлыг үүсгэх болно
openssl dhparam -dh_2048.pem 2048 он
Энэ нь 15-20 минут болно
Алхам 5: Тоног төхөөрөмжийг холбох
LED туузыг тэжээх
LED зурвас нь 12 вольтоор тэжээгддэг. Raspberry Pi нь зөвхөн 3.3v эсвэл 5v гаралтын чадалтай бөгөөд маш олон LED хөтлөхөд шаардлагатай амперын ойролцоо хаана ч гаргах чадваргүй юм.
12 вольтын цахилгаан хангамжийг Raspberry Pi -тэй холбохгүй байх нь чухал юм.
Миний зурвас дээр хоёр төгсгөлд нь туузан дээр нэмэлт тэжээлийн утас холбогдсон байв. Таны бусад тоног төхөөрөмжтэй холбоо тогтоохгүйн тулд тэдгээрийг наахыг зөвлөж байна.
Дараагийн алхамуудыг өөрийн эрсдэлээр хийх. Буруу зүйлд би ямар ч хариуцлага хүлээхгүй.
LED зурвас
Миний LED зурвас гурван утастай:
Улаан - +12 вольт
ХАР - Газар
НОГООН - Өгөгдөл
ТАЙЛБАР: Din and Dout байдаг - Өгөгдөл оруулах ба гаргах. Дин гэж бичсэн LED туузны төгсгөлтэй ажиллаж байгаа эсэхээ шалгаарай.
Barrel Jack цахилгаан тэжээлд холбогдоогүй эсэхийг баталгаажуулах
1. LED туузнаас Улаан утсыг баррель үүрний + талд холбоно уу.
Би цагаан өнгийн 22 хэмжигч холбох утас ашигласан.
Утасыг баррель үүрний + үүрэнд оруулаад шургуулна.
Утасны нөгөө үзүүрийг LED дээрх залгуур руу түлх. Улаан утсаар холбогдож байгаа эсэхийг шалгаарай.
2. LED туузны Хар утсыг баррель үүрний хажуу талд холбоно уу.
Би хар өнгийн 22 хэмжигч холбох утас ашигласан.
Утасыг баррель үүрэнд байгаа үүрэнд оруулна уу. Энэ үед бас нэг холбогч кабелийн эрэгтэй үзүүрийг (зурган дээрх хүрэн утас) нэг нүхэнд хийж хоёуланг нь шургуулна.
Хар утасны нөгөө үзүүрийг LED дээрх залгуур руу түлх.
Хар утсаар холбогдсон эсэхээ шалгаарай.
3. LED туузнаас ногоон утсыг холбоно уу
Эмэгтэй ба эрэгтэй холбогч кабелийн нэгийг ав. Миний зурган дээр энэ бол ногоон утас юм.
Эрэгтэй үзүүрийг ногоон утсаар LED залгуурт хийнэ.
Энэ бол өгөгдлийн кабель юм.
Raspberry Pi
1. Ногоон холбогч кабелийг аваад Raspberry Pi GPIO руу холбоно уу.
Та үүнийг PCM_CLK (Pin 12 / GPIO 18) руу холбох хэрэгтэй.
2. Хар холбогч кабелийг аваад Raspberry Pi GPIO руу холбоно уу.
Та үүнийг нэг үндэслэлтэй холбох хэрэгтэй. Би танд 14 -р зүү ашиглахыг санал болгож байна, гэхдээ та 6, 9, 20, 25, 30, 34 эсвэл 39 -р зүүг ашиглаж болно.
ТАЙЛБАР: Үүнийг хийхийн тулд LED тэжээлийн эх үүсвэр болон Raspberry Pi нь нийтлэг ойлголттой байх ёстой. Та 12 вольт + (улаан утас) -ийг Raspberry Pi -тэй холбох ёсгүй гэдгийг анхаарна уу.
LED хүч
Та 12 вольтын цахилгаан тэжээлээ баррель үүрэнд холбох боломжгүй байх ёстой
Таны LED туузан дээрх бүх LED одоо ЦАГААН асах ёстой
Алхам 6: Серверийн талын код
Сервер талын кодыг ажиллуулж байна
cd /opt/com.jonhaydock/disco-pi
sudo npm эхлэх
Энэ нь вэб серверийг эхлүүлж, HTTPS болон WSS хүсэлтийг сонсох болно.
Анхдагч порт нь 443 боловч та кодыг эхлүүлэхээсээ өмнө орчны хувьсагчийг тохируулснаар үүнийг хүчингүй болгож болно. Жишээлбэл
экспортлох DISCO_PI_PORT = 1443
Миний LED зурвас нь 150 LED -тэй. Эдгээрийг гурваар нь бүлэглэн хянадаг. Энэ нь би LED тус бүрийг дангаар нь хянах боломжгүй гэсэн үг бөгөөд 50 -г хянахад хангалттай мэдээлэл дамжуулах шаардлагатай байна.
Хэрэв таны LED их эсвэл бага хэмжээтэй бол параметрүүдийг эхлүүлэх замаар дамжуулж хянаж буй LED -ийнхээ тоог дарж болно. Жишээлбэл, хэрэв та зөвхөн 10 LED -ийг хянах боломжтой бол
sudo npm эхлэх 10
Серверийн үндсэн кодыг app.js файлаас олж болно. Энэ файл нь HTTPS вэб серверийг ажиллуулж, мөн ижил порт дээрх вэбсокет хүсэлтийг сонсохын тулд socket.io дээр нэмдэг.
Вэбсайтад нэвтрэхийн тулд та үндсэн компьютер дээрээ вэб хөтөч нээж (үүнийг зөвхөн Chrome дээр туршиж үзсэн), Raspberry Pi -ийн IP хаягийг ашиглах хэрэгтэй.
10.0.1.2/
Та IP хаягаа Raspberry Pi командын мөрөөс олж мэдэх боломжтой.
ifconfig
Вэб сервер нь нийтийн фолдер доторх аливаа контентэд үйлчлэх болно. Энэ нь index.html хуудсыг харуулдаг.
Энэ нь нэг API төгсгөлийн цэгтэй - /api /audio. Энэ төгсгөлийн цэг нь нийтийн/аудио фолдер доторх аливаа файлыг хайж, жагсаалтыг буцаана. Жишээлбэл
["GYAKO.mp3", "Havana (feat. Young Thug).mp3", "Queen_Bohemian_Rhapsody.mp3", "Set It All Free.mp3", "This is You For For You (feat. Rihanna).mp3"]
Хөгжимийг сонголт болгон нэмэхийн тулд файлуудаа энэ хавтсанд хуулж ав. Би хувьдаа Filezilla -ийг ssh дээр ашигладаг. Файл нэмэхийг хүсч буй фолдер нь /opt/com.jonhaydock/disco-pi/public/audio
Алхам 7: Вэбсайтын код
Та вэбсайт руу орохдоо иймэрхүү зүйлийг харах ёстой.
Хэрэв та аюулгүй байдлын анхааруулгыг олж харвал энэ нь бид өөрөө гарын үсэг зурсан SSL сертификат ашиглаж байгаатай холбоотой юм. Та үүнийг үл тоомсорлож эсвэл үл хамаарах зүйл болгон нэмж болно.
Файлын нэрийг сонгохдоо HTML 5 аудио элементийн эх сурвалж болно. тэр файлд тохируулах болно. Бэлэн болмогц хөгжим тоглож эхэлнэ. Дуу дууссаны дараа хөгжим зогсох болно.
Хэрэв та None сонголтыг сонговол хөгжим тоглохоо болино.
Хөгжмийн файлыг тоглуулах явцад вэб хуудас нь хөгжимд дүн шинжилгээ хийхийн тулд AudioContext интерфэйсийг ашигладаг бөгөөд үүнийг аюулгүй вэбсокет холболтоор сервер рүү илгээдэг.
Зурвас нь "ws2811" -г сонсохоор сервер дээрх socket.io -г тохируулсан төрөл юм. Энэ нь 0 -ээс 255 хоорондох 50 элементийн массивыг агуулдаг.
"ws2811", {"0": 251, "1": 252, "2": 241, "3": 217, "4": 193, "5": 164, "6": 148, "7": 139, "8": 110, "9": 96, "10": 81, "11": 67, "12": 72, "13": 66, "14": 60, "15": 60, "16": 63, "17": 54, "18": 37, "19": 30, "20": 31, "21": 26, "22": 13, "23": 3, " 24 ": 10," 25 ": 7," 26 ": 6," 27 ": 0," 28 ": 0," 29 ": 0," 30 ": 1," 31 ": 8," 32 ": 12, "33": 3, "34": 2, "35": 2, "36": 0, "37": 0, "38": 0, "39": 0, "40": 0, "41": 0, "42": 0, "43": 0, "44": 0, "45": 0, "46": 0, "47": 0, "48": 0, " 49 ": 0}
Сервер нь вэбсокетээр дамжуулсан өгөгдөл дээр үндэслэн WS2811 LED туузан дээрх LED -ийн өнгийг өөрчлөхийн тулд Node RPI WS281x Native номын санг (Жереми Гарфын WS281X номын санг ороосон) ашигладаг.
Алхам 8: Эцэст нь
Вэб хуудсан дээр хийсэн Fast Fourier Transform шинжилгээнд үндэслэн зурвас дээрх LED -ууд хөгжмийн өнгө өөрчлөгдөж байгааг харах ёстой.
Энэ танд таалагдана гэж найдаж байна. Та үүгээр юу хийж байгаагаа надад хэлээрэй!
ЖИЧ: Хэрэв танд ямар нэгэн асуудал байвал
Энэхүү номын сан болон Raspberry Pi аудио төхөөрөмж хоёулаа ХОУХ -ийг ашигладаг тул тэдгээрийг хамт ашиглах боломжгүй юм.
Та /etc/modprobe.d/snd-blacklist.conf файл үүсгэж Broadcom аудио цөмийн модулийг хар жагсаалтад оруулах шаардлагатай болж магадгүй юм.
хар жагсаалт snd_bcm2835
Хэрэв хар жагсаалтын дараа аудио төхөөрөмж ачаалагдсаар байгаа бол та үүнийг /etc /modules файлд тайлбарлах шаардлагатай болж магадгүй юм. Толгойгүй систем дээр та аудиог hdmi -ээр хүчээр оруулах шаардлагатай болж магадгүй юм
Config.txt файлыг засварлаж нэмнэ үү:
hdmi_force_hotplug = 1
hdmi_force_edid_audio = 1
Энэ өөрчлөлт хүчин төгөлдөр болохын тулд дахин ачаалах шаардлагатай
Зөвлөмж болгож буй:
Arduino Uno ашиглан акустик левитаци Алхам алхам (8 алхам): 8 алхам
Arduino Uno-тай акустик Levitation Алхам алхамаар (8 алхам): хэт авианы дууны дамжуулагч L298N Dc эмэгтэй адаптерийн эрэгтэй тэжээлийн тэжээлийн хангамж Arduino UNOBreadboard Энэ нь хэрхэн ажилладаг вэ: Нэгдүгээрт, та кодыг Arduino Uno-д байршуулдаг (энэ нь дижитал төхөөрөмжөөр тоноглогдсон микроконтроллер юм. кодыг хөрвүүлэх аналог портууд (C ++)
Led Disco Box: 7 алхам (зурагтай)
Led Disco Box: Өөрийн Led диско хайрцгийг хэрхэн яаж хийх вэ
Light-Up Disco Table: 27 алхам (зурагтай)
Light-Up диско ширээ: Орон сууц бүрт гайхалтай тавилга хэрэгтэй байдаг тул яагаад өөрөө хийж болохгүй гэж? Энэхүү кофены ширээ нь янз бүрийн загвар, өнгөөр гэрэлтдэг LED туузыг агуулдаг. Гэрлийг Arduino болон далд товчлуураар удирддаг бөгөөд бүх зүйл
Болт - DIY утасгүй цэнэглэх шөнийн цаг (6 алхам): 6 алхам (зурагтай)
Болт - DIY утасгүй цэнэглэх шөнийн цаг (6 алхам): Индуктив цэнэглэгч (утасгүй цэнэглэх эсвэл утасгүй цэнэглэх гэж нэрлэдэг) нь утасгүй цахилгаан дамжуулах төрөл юм. Энэ нь цахилгаан соронзон индукцийг ашиглан зөөврийн төхөөрөмжүүдийг цахилгаан эрчим хүчээр хангадаг. Хамгийн түгээмэл програм бол Qi утасгүй цэнэглэгч юм
Disco Drinks Coaster: 4 алхам (зурагтай)
Disco Drinks Coaster: Хэдийгээр бид Их Британийн Кембрижийн ойролцоо амьдардаг ч манай эхнэр Лас Вегасын бүх зүйлд харамсалтайгаар донтсон байдаг. Бидний хамгийн сүүлд очсоноос хойш бараг зургаан сар өнгөрч байгаа бөгөөд тэр тод гэрэл, коктейль идэж байна. Зарим зүйлээс зарим ундааг илүү сайхан болгодог