Агуулгын хүснэгт:

Зар хаах неопиксел: 11 алхам
Зар хаах неопиксел: 11 алхам

Видео: Зар хаах неопиксел: 11 алхам

Видео: Зар хаах неопиксел: 11 алхам
Видео: Бесшовные следки на 2-х спицах с красивой регланной линией. Подробный мастер класс ДЛЯ НАЧИНАЮЩИХ 2024, Арваннэгдүгээр
Anonim
Зар сурталчилгаа хаах неопиксел
Зар сурталчилгаа хаах неопиксел

Би Raspberry Pi тэг-тэй холбогдсон неопикселийн зурвасын алсын зайтай энгийн вэбсайт хийж, Pi-Hole ашиглан сүлжээн дэх зараа хаахын тулд үргэлжлүүлэн ашиглахыг хүсч байсан. Нэгдүгээрт, би өрөөндөө хэдэн лед оруулахыг хүссэн боловч бүх зүйлийг утсаар холбож үзэхэд тэдгээрийг удирдахад ямар ч арга байхгүй гэдгийг ойлгосон. Тиймээс би Pi-hole суулгагчийг аль хэдийн тохируулсан apache серверийг ашиглан энгийн хяналтын вэбсайтыг бий болгохоор шийдсэн. Би www-дата root зөвшөөрлийг өгсөн бөгөөд энэ нь аюулгүй байдлын эрсдэлтэй тул та вэб серверийг гадаад ертөнцөд ашиглах боломжгүй болгох ёстой. Энэ нь голчлон өөрийн бичиг баримтын хувьд эхэлсэн бөгөөд ямар нэгэн байдлаар миний анхны заавар болсон юм.) Тиймээс хэрэв ямар нэгэн зүйл тодорхойгүй байгаа эсвэл би ямар нэгэн зүйлийг бүрэн алдсан бол үүнийг онцлон тэмдэглэж өгөхөд би үнэхээр талархах болно.

Алхам 1: Ашигласан материал

  • Raspberry Pi (би Pi 2 дээр эхэлж, дараа нь WH болгон өөрчилсөн, gpio тээглүүрүүд нь арай өөр байж магадгүй, эс тэгвээс загвар бүр сайн байна)

    • Хэрэв танд wifi суулгаагүй RPi байгаа бол wifi адаптер бас хэрэгтэй болно.
    • Сонголтоор бол бөөрөлзгөнө pi -ийн хэрэг
  • 2 Эрэгтэй, эмэгтэй холбогч утас (жишээлбэл)
  • Neopixels ws2811 (би эдгээрийг ашигласан)
  • RPi -ийн 10W цахилгаан хангамж (Хуучин утасны цэнэглэгч хийх болно)
  • Neopixels -ийн 1 ~ 50W цахилгаан хангамж (би ийм төхөөрөмж ашигласан, гэхдээ арай жижиг нь хангалттай байх болно, гэхдээ хэрэв та илүү их LED авахыг хүсч байвал өргөжүүлэх зай үлдсэн байна.)
  • Эмэгтэй үүрний холбогч залгуур (үүн шиг)

Алхам 2: Үйлдлийн системийг бэлтгэ

Үйлдлийн системийг бэлтгэ
Үйлдлийн системийг бэлтгэ

Raspberrypi.org -аас Rasbian -ийн хамгийн сүүлийн хувилбарыг татаж аваарай. Хэрэв та бөөрөлзгөнө pi -ийг өөр зүйлд ашиглахаар төлөвлөж байгаа бол бүрэн хувилбарыг gui ашиглан суулгах талаар бодож үзэх боломжтой. Дараа нь би зургийг Etcher -тэй хамт шатаасан. Үүний дараа энэ нь миний wifi сүлжээнд холбогдох болно гэдэгт итгэлтэй байхын тулд SD картын ачаалах санд wpa_supplicant.conf -ийг нэмсэн. Файлын агуулга дараах байдлаар харагдах ёстой.

~~~

ctrl_interface = DIR =/var/run/wpa_supplicant GROUP = netdev update_config = 1

сүлжээ = {

ssid = "SSID"

psk = "Нууц үг"

key_mgmt = WPA-PSK}

~~~

Ssh -ийг идэвхжүүлэхийн тулд би ижил санд ssh (ямар ч өргөтгөлгүйгээр) нэртэй файл үүсгэсэн. Энэ нь таны хэлийг өөр компьютерээс тохируулах боломжтой болно.

Алхам 3: Неопикселийг холбох

Неопикселийг холбох
Неопикселийг холбох
Неопикселийг холбох
Неопикселийг холбох

Нэгдүгээрт, би эмэгтэй үүрний холбогч руу тэжээлийн хангамжийг залгаж, RPi -ийг хайрцагт хийв. Би газардуулгын кабелийг leds (цэнхэр кабель), холбогч утасны холбогч талын сөрөг талд холбогч утасны эрэгтэй талыг шургуулсан. Би холбогч утасны нөгөө үзүүрийг gpio толгой дээрх газардуулгын зүү рүү холбосон, би 6 -р зүүг ашигласан боловч яг ашиглаж болох голууд нь таны ашиглаж буй RPi загвараас хамаарна.

Хоёрдугаарт, би залгуурын холболтын эерэг төгсгөлд 5в кабелийг LED -ээс (улаан кабель) холбосон. Миний хөтөч дээр нэмэлт газардуулгын кабель болон мэдээллийн кабель (цагаан кабель) дээр холбогч утас холбогч байв. Би нэмэлт газардуулгын кабелийг зүгээр л үл тоомсорлов, энэ нь миний тохиргоонд шаардлагагүй байсан. Өгөгдлийн кабель дээр би эрэгтэй, эмэгтэй холбогчийг gpio pin 12 -тэй холбосон бөгөөд таны ашиглах ёстой зүү нь таны RPi -ээс хамаарна. Дараа нь би RPi болон пикселийн тэжээлийн тэжээлээ залгасан. Хэрэв бүх зүйл зөв утастай байвал ледүүд богино хугацаанд асав.

Алхам 4: RPi -г эхлүүлнэ үү

RPi эхлүүлэх
RPi эхлүүлэх

Дараа нь RPi -ийг эхлүүлэхийн тулд нэг минутын хугацаа өгсний дараа би IP хаягийг бөөрөлзгөнөөс nmap ашиглан хайлаа. Гэхдээ ямар ч сүлжээний сканнер, таны чиглүүлэгчийн мэдээллийн самбар эсвэл ихэнх тохиолдолд "raspberrypi.local" хийх болно. Энэхүү мэдээллийн тусламжтайгаар би RPi -т ssh -ээр холбогдсон. Анхдагч хэрэглэгч нь бөөрөлзгөнө гэсэн нууц үгтэй pi юм. Энэ бол миний анхны нэвтрэлтийн дараа шууд passwd ашиглан өөрчилсөн зүйл юм. Хэрэв та өөрийн сүлжээнд гаднаас pi -д ssh -ээр нэвтрэхийг хүсч байвал fail2ban болон түлхүүр баталгаажуулалтыг анхаарч үзэх хэрэгтэй. Би хувьдаа ийм хэрэглээний кейс байхгүй тул нууц үгээ үлдээх болно.

Хоёрдугаарт, би програмыг 'sudo apt update && sudo apt upgrade -Y` ашиглан шинэчилсэн. Мөн надад Liby `sudo apt-get install scons swig git python-dev build-essential -Y` -г эмхэтгэх нэмэлт програм хангамж хэрэгтэй байсан. Дараа нь би Жереми Гарфаас маш сайн чөлөөг github `git clone дээр хуулж авсан https:// github.com/jgarff/rpi_ws281x.git`. Үүний дараа либерийг клонд хийсний дараа би rpi_ws281x лавлах руу очоод scons ашиглаад дараа нь libary -ийг sudo python python/setup.py install суулгав. Питон/жишээнд "sudo python python/Examples/strandtest.py" -ээс эхлүүлж болох үнэхээр нямбай хөдөлгөөнт дүрс бүхий "strandtest.py" гэсэн сайхан демо байдаг.

Алхам 5: Pi-Hole

Pi-Hole
Pi-Hole

Сүлжээний өргөн хориглогч үүсгэхийн тулд Pi-Hole нь төгс төгөлдөр юм. Энэ нь зүгээр л `sudo curl -sSL ашиглан суулгадаг https://install.pi-hole.net | bash`. Гайхамшигтай хэсэг нь вэб серверийг тохируулах явдал юм.

Суулгагчийг ажиллуулсны дараа та чиглүүлэгчийнхээ админ сайт руу нэвтэрч, RPi-д статик IP хаягийг өгч DHCP сервер болгон тохируулахыг хүсэх болно. Хэрэв та түрээсийн хугацааг бага тогтоосон бол таны PI нүх одоо ажиллах ёстой.

Алхам 6: Гэрлийг хянах

Гэрлийг хянах
Гэрлийг хянах
Гэрлийг хянах
Гэрлийг хянах
Гэрлийг хянах
Гэрлийг хянах

Неопикселийг хянах хамгийн хялбар арга бол жижиг питон програмууд юм. Гэхдээ гэрлийг асаах бүртээ ssh ашиглах нь ялангуяа гар утасны төхөөрөмжид тохиромжгүй байдаг. Тиймээс би жижиг вэбсайтыг алсын удирдлага болгон ашиглахаар шийдсэн. Энэ бол аюулгүй байдлын эрсдэл юм, учир нь би www-data root зөвшөөрлийг нууц үгийн баталгаажуулалтгүйгээр өгсөн. Та энэ сайтыг лангаас гадуур байрлуулах ёсгүй байх.

PI цооног ба гэрлийн алсын удирдлага хоёрын хооронд сонголт хийхэд хялбар болгох үүднээс би хэрэглэгчид pi бичихийг sudo chown -R pi/var/www.html` ашиглан/var/www/html -д бичих эрхийг өгсөн бөгөөд би index.php файлыг/var/www/html/дотор. Энгийн зүйл шиг:

~~~

Индекс Pi нүх Гэрлийн алсын удирдлага

~~~

сайхан юм. Дараа нь би гэрэл гэж нэрлэгддэг шинэ хавтас үүсгэж, неопикселээс авахуулаад бүх зүйлийг хамтад нь байрлуулсан. Энд би либериалаас авсан strandtest.py дээр үндэслэн colour.py үүсгэсэн.

~~~

neopixel import -аас * # Зарим номын санг импортлох

sys импортлох

def led (зурвас, өнгө, эхлэх, төгсгөл): # LED -ийг дуудах функцийг үүсгэнэ

i -ийн хувьд (эхлэл, төгсгөл):

strip.setPixelColor (i, өнгө)

strip.show ()

BRIGHTNESS = int (sys.argv [4]) # Командын мөрийн дөрөв дэх параметр нь тод байх болно. (1-255)

COUNT = 50 # LED -ийн хэмжээ PIN = 12 # RPi дээр ашигладаг зүү

FREQ_HZ = 800000 # LED дохионы давтамж (ихэвчлэн 800 кГц)

DMA = 5 # дохио үүсгэхэд ашиглах DMA суваг (5 -ийг туршиж үзээрэй)

INVERT = False # Үнэн дохиог эргүүлэх (NPN транзисторын түвшинг ашиглах үед)

strip = Adafruit_NeoPixel (COUNT, PIN, FREQ_HZ, DMA, INVERT, BRIGHTNESS)

strip.begin ()

R = int (sys.argv [1]) # Улаан өнгийн хэмжээ нь эхний параметр юм

G = int (sys.argv [2]) # Ногоон хэмжээ нь хоёр дахь параметр юм

B = int (sys.argv [3]) # Цэнхэр өнгө нь гурав дахь параметр юм

оролдоно уу:

leds (зурвас, Өнгө (R, G, B), 0, 49) #Летийг сонгосон өнгө, тодоор эхлүүлнэ.

Keyboard тасалдалаас бусад:

өнгө (зурвас, Өнгө (0, 0, 0), 0, 49)

~~~

Хэрэв та үүнийг терминал дээр sudo ашиглан ажиллуулбал гэрэл нь заасан өнгөөр асах ёстой. Www-data sudo зөвшөөрлийг өгөхийн тулд би root хэрэглэгчийн доорх sudoers файлд (/etc/sudoers) www www data ALL = (ALL) NOPASSWD: ALL) `нэмсэн.

Алхам 7: Хөтөчийн тусламжтайгаар гэрлээ асаана уу

Дараа нь би өөр index.php үүсгэсэн, энэ удаад /гэрэл. ~~~

< ?php $R = 100; $G = 100; $B = 100; $BRIGHTNESS = 100; exec("sudo python colour.py $R $G $B $BRIGHTNESS"); ?>

~~~

Би одоо raspberrypi.local/lights/index.php хаягаар зочлоход ледүүд цагаан болж хувирна. Хэдийгээр энэ бол сайхан эхлэл боловч алсын удирдлага дээр ядаж хэдэн товчлуур дарах дуртай.

Алхам 8: Хөтчөөс гэрлийг хянах

Би html хэлбэрийг ашиглан өгзөг бүхий интерфэйс үүсгэсэн. Шаардлагагүй зүйлийг хийх дургүй тул толгой, хөл, php код бүхий загвар нэртэй хавтас үүсгэсэн байна.

~~~

~~~

Товчлууруудыг ажиллуулахын тулд BasicControl.php загвар хийв. Үүн дээр би товчлуур дарагдсан үед гүйцэтгэх кодыг зааж өгсөн. Надад хамгийн сонирхолтой анимэйшнүүд таалагдсан болохоор би ч бас үүнийг оруулсан. Хамгийн хэцүү нь эцэс төгсгөлгүй үргэлжлэх тул би хүссэн үедээ процессыг зогсоох өөр товчлуур хийсэн.

~~~ <? php

$ I = 100;

$ R = 0;

$ G = 0;

$ B = 0;

if (isset ($ _ POST ['strandtest_start']))) {exec ("sudo python strandtest.py"); }

else if (isset ($ _ POST ['strandtest_stop']))) {exec ("sudo pkill -9 -f strandtest.py"); }

өөр бол (isset ($ _ POST ['улаан']))) {$ R = 255; $ G = 0; $ B = 0; exec ("sudo python colour.py $ R $ G $ B $ I"); }

өөр бол (isset ($ _ POST ['ногоон']))) {$ R = 0; $ G = 255; $ B = 0; exec ("sudo python colour.py $ R $ G $ B $ I"); }

өөр бол (isset ($ _ POST ['цэнхэр']))) {$ R = 0; $ G = 0; $ B = 255; exec ("sudo python colour.py $ R $ G $ B $ I"); }

өөр бол (isset ($ _ POST ['цагаан']))) {$ R = 255; $ G = 255; $ B = 255; exec ("sudo python colour.py $ R $ G $ B $ I"); }

if if (isset ($ _ POST ['off']))) {shell_exec ('sudo python off.py'); }

өөр бол (isset ($ _ POST ['reboot']))) {shell_exec ('sudo одоо дахин ачаална уу'); }?>

~~~

Алхам 9: Толгой ба доод хэсэгт загвар үүсгэх

Одоо энэ бүхэн ажиллаж байгаа боловч харахад тийм ч таатай биш байна. Толгой ба хөлийг импортлосны дараа сайтын бүх элементүүдийг ашиглах боломжтой, зөвхөн загварлаг биш юм.

Header.php:

~~~

Гэрэл

Лампжес

Үндсэн хяналтууд

Нарийвчилсан хяналт

~~~

Мөн footer.php:

~~~

~~~

Алхам 10: Бүгдийг арай илүү сайн болгохын тулд зарим CSS

Бүгдийг арай илүү сайн болгохын тулд зарим CSS
Бүгдийг арай илүү сайн болгохын тулд зарим CSS

Та анзаарсан байх, би зохион байгуулалтыг хянахын тулд CSS файлыг ашиглаж байна. Миний алсын удирдлагыг жижиг дэлгэц дээр ашиглах боломжтой эсэхийг шалгахын тулд би autowrap бүхий CSS уян хатан хайрцгийг ашигласан.

~~~

/ * Гэрлийн хяналтын интерфэйсийн загварын хуудас *

* Хуудас бүрт хамаарна */

биеийн {дэвсгэр өнгө: f9fcfa; фонт-гэр бүл: Arial; зах: 0; }

h1 {өнгө: цагаан; текстийг зэрэгцүүлэх: төв; }

p {font-family: verdana; фонтын хэмжээ: 20 пиксел; }

h2 {}

/ * Толгой хэсэг */

. толгой {өндөр: 10%; дэлгэц: уян хатан байдал; justify-content: уян хатан эхлэх; align-items: төв; маржин: 0 пиксел; зүүн дүүргэлт: 5%; дэвсгэр:#3F51B5; align-items: төв; }

. HeaderLinks {өнгө: цагаан; }

.navbar {дэлгэц: уян хатан; уян хатан байдал: 30%; зөвтгөх-агуулга: орон зайг тойрон хүрээлэх; дэвсгэр өнгө: #3F51B5; өнгө: цагаан; }

/ * Хөлийн хэсэг */

.footer {background-color: #3F51B5; өндөр: 10%; текстийг тэгшлэх: төв; }

/ * Index.php */

.товчлуурууд {дэлгэц: flex; уян хатан чиглэл: эгнээ; уян боолт: боох; justify-content: хоорондын зай; өндөр: 80%; align-items: flex-start; }

.buttons_index {дүүргэлт: 0%; хилийн өргөн: нимгэн; хилийн хэв маяг: хатуу; хилийн өнгө: хар; дэвсгэр өнгө: #3949ab; өнгө: цагаан; фонт-гэр бүл: sans-serif; өргөн: 24%; өндөр: 20%; }

.buttons_index: hover {бөглөх: 0%; хилийн өргөн: нимгэн; хилийн хэв маяг: хатуу; хилийн өнгө: хар; дэвсгэр өнгө: #536DFE; өнгө: цагаан; фонт-гэр бүл: sans-serif; өргөн: 24%; өндөр: 20%; }

~~~

Алхам 11: Баярлалаа

Тэгээд л боллоо. Бүх зүйл миний төлөө ажилладаг бөгөөд хэрэв та миний зааж өгсөн зүйлийг туршиж үзвэл энэ нь танд бас тус болно гэж найдаж байна. Хэрэв та ямар нэгэн кодыг хуулах гэж оролдсон бол энд байршуулах хэдэн зай нэмж оруулах шаардлагатай болсон тул код дахин ашигтай болохоос өмнө та тэдгээрийг устгах хэрэгтэй болно.

Та бүх зүйлийг унших дуртай байсан гэж найдаж байна. Хэрэв танд санал хүсэлт байвал би үүнийг сонсох дуртай байсан!

Зөвлөмж болгож буй: