Мазмұны:

Жарнамаға тосқауыл қоятын неопиксельдер: 11 қадам
Жарнамаға тосқауыл қоятын неопиксельдер: 11 қадам

Бейне: Жарнамаға тосқауыл қоятын неопиксельдер: 11 қадам

Бейне: Жарнамаға тосқауыл қоятын неопиксельдер: 11 қадам
Бейне: Жарнамаға тосқауыл қою. adblock 2024, Шілде
Anonim
Жарнамаға тосқауыл қоятын неопиксельдер
Жарнамаға тосқауыл қоятын неопиксельдер

Мен қарапайым Raspberry Pi нөлге қосылған неопиксель жолағы үшін қашықтан қарапайым веб-сайт жасағым келді және оны Pi-Hole көмегімен желідегі жарнамаларды бұғаттау үшін қолдануды жалғастырдым. Алдымен мен өз бөлмеме шамдарды қосқым келді, бірақ бәрін сыммен қосқанда, мен оларды басқаруға мүмкіндік жоқ екенін түсіндім. Сондықтан мен Pi-hole орнатушысы орнатқан apache серверін қолдана отырып, басқарудың бірнеше қарапайым нұсқалары бар қарапайым веб-сайт құруды жөн көрдім. Мен www-деректердің түбірлік рұқсаттарын бердім, бұл қауіпсіздік қатері, сондықтан сіз веб-серверді сыртқы әлемге қол жетімді етпеуіңіз керек. Бұл негізінен менің жеке құжаттамам үшін басталды және менің алғашқы нұсқаулығыма айналды;) Сондықтан егер бірдеңе түсініксіз болса немесе мен бір нәрсені мүлде жіберіп алсам, көрсете алсаңыз, мен өте ризамын.

1 -қадам: Қолданылған материалдар

  • Raspberry Pi (мен Pi 2 -де бастадым, содан кейін WH -ге ауыстым, gpio түйреуіштері сәл өзгеше болуы мүмкін, әйтпесе әр модель жақсы)

    • Егер сізде кірістірілген WiFi жоқ RPi болса, Wi -Fi адаптері де пайдалы.
    • Таңқурай пи үшін қосымша
  • 2 Еркек-әйел секіргіш сымдары (мысалы)
  • Неопиксельдер ws2811 (мен бұларды қолдандым)
  • RPi үшін 10 Вт қуат көзі (телефонды ескі зарядтағыш жасайды)
  • Неопиксельдер үшін 1 ~ 50 Вт қуат көзі (мен осылай қолдандым, бірақ шамасы кішірек болса жеткілікті, бірақ егер сіз көп жарықдиодты алғыңыз келсе, сізде кеңеюге орын қалды.)
  • Әйел ұясының қосқышы (осылайша)

2 -қадам: Операциялық жүйені дайындаңыз

Операциялық жүйені дайындаңыз
Операциялық жүйені дайындаңыз

Raspberrypi.org сайтынан Rasbian соңғы нұсқасын жүктеп алыңыз. Егер сіз таңқурай пиін басқа нәрсеге қолданғыңыз келсе, онда толық нұсқасын gui көмегімен орнатуды қарастырсаңыз болады. Содан кейін мен суретті Этчермен бірге өртеп жібердім. Осыдан кейін ол менің Wi -Fi желісіне қосылатынына көз жеткізу үшін 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 корпусына қойдым. Мен жерге қосу кабелін светодиодтан (көк кабельден) және секіргіштің еркек жағынан ұяның қосқышының теріс жағына бұрап алдым. Мен секіргіш сымның екінші ұшын gpio тақырыбындағы жерге тұйықтауышқа жалғадым, мен 6 түйреуішті қолдандым, бірақ сіз пайдалана алатын дәл түйреуіштер сіз қолданатын RPi үлгісіне байланысты болады.

Екіншіден, мен қосқыштың оң жағына 5В кабелін светодиодтан (қызыл кабель) жалғадым. Менің жолағымда олар қосымша жер кабелі мен ақпарат кабелі (ақ кабель) бойынша қосқыш сым қосқышы болды. Мен қосымша жер кабелін елемедім, бұл менің орнатуым үшін қажет емес еді. Деректер кабелінде мен еркек пен әйелді секіргіш сымға gpio 12 сымымен қостым, тағы да нақты істікше сіздің RPi -ге байланысты. Содан кейін мен RPi мен пикселдердің қуат көзін қостым. Егер бәрі дұрыс сымдалған болса, шамдар қысқа уақытқа жанды.

4 -қадам: RPi іске қосыңыз

RPi іске қосыңыз
RPi іске қосыңыз

Содан кейін RPi -ге жүктелу үшін бір минуттан кейін мен IP мекенжайын таңқурайдан nmap арқылы қарадым. Бірақ кез келген желілік сканер, маршрутизатордың ақпараттық тақтасы немесе көп жағдайда «raspberrypi.local» жасайды. Бұл ақпаратпен мен ssh арқылы RPi -ге қосылдым. Әдепкі пайдаланушы - таңқурай паролімен pi. Бұл бірінші кіргеннен кейін тікелей «passwd» көмегімен өзгерткен бірінші нәрсе. Егер сіз жергілікті желінің сыртынан ssh арқылы pi -ге қол жеткізгіңіз келсе, 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 каталогына кірдім, скондарды қолдандым, содан кейін libary -ді sudo python python/setup.py install арқылы орнаттым. Питон/мысалдарда «strandtest.py» демо демонстрациясы бар, оны «sudo python python/Examples/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 түбіріне құпия сөзді тексерусіз рұқсат бердім. Мүмкін сіз бұл сайтты өзіңіздің тіліңізден тыс жерде қол жетімді етпеуіңіз керек.

PI -тесік тақтасы мен қашықтан басқару пультінің арасында таңдауды жеңілдету үшін мен пайдаланушыға pi жазуға/var/www/html -ге sudo chown -R pi/var/www.html` көмегімен рұқсат бердім және мен index.php файлы/var/www/html/. Қарапайым нәрсе сияқты:

~~~

Индекс Pi саңылауы Қашықтан басқару пульті

~~~

жақсы. Содан кейін мен неопиксельдерден бастап бәрін біріктіру үшін шамдар деп аталатын жаңа қалта жасадым. Мұнда мен либералдан strandtest.py негізінде colour.py жасадым.

~~~

неопиксельді импорттан * # Кейбір кітапханаларды импорттаңыз

жүйені импорттау

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 # жарықдиодты сигнал жиілігі герцпен (әдетте 800 кГц)

Сигнал генерациялау үшін қолданылатын DMA = 5 # DMA арнасы (5 көріңіз)

INVERT = False # True сигналды бұру үшін (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]) # Көк түс - үшінші параметр

тырысу:

Жарық диодтары (жолақ, Түс (R, G, B), 0, 49) #Желі мүмкіндіктерін таңдалған түс пен жарықтықтан бастайды.

KeyboardInterrupt қоспағанда:

түс (жолақ, Түс (0, 0, 0), 0, 49)

~~~

Егер сіз мұны терминалда sudo арқылы іске қоссаңыз, шамдар көрсетілген түспен жануы керек. Www-data sudo рұқсатын беру үшін тікелей www пайдаланушыларының астындағы 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»); }

else if (isset ($ _ POST ['red']))) {$ R = 255; $ G = 0; $ B = 0; exec («sudo python colour.py $ R $ G $ B $ I»); }

else if (isset ($ _ POST ['жасыл']))) {$ R = 0; $ G = 255; $ B = 0; exec («sudo python colour.py $ R $ G $ B $ I»); }

else if (isset ($ _ POST ['blue']))) {$ R = 0; $ G = 0; $ B = 255; exec («sudo python colour.py $ R $ G $ B $ I»); }

else if (isset ($ _ POST ['ақ']))) {$ R = 255; $ G = 255; $ B = 255; exec («sudo python colour.py $ R $ G $ B $ I»); }

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

else if (isset ($ _ POST ['reboot'])) {shell_exec ('sudo reboot now'); }?>

~~~

9 -қадам: Үстіңгі деректеме мен төменгі деректеме үлгісін жасаңыз

Енді бәрі жұмыс істейді, бірақ қарау өте жағымды емес. Жоғарғы және төменгі колонтитулды импорттағаннан кейін сайттың барлық элементтері қол жетімді, тек сәнделмеген.

Header.php:

~~~

Жарықтар

Lampjes

Негізгі басқару элементтері

Жетілдірілген басқару элементтері

~~~

Және footer.php:

~~~

~~~

10 -қадам: Барлығын жақсарту үшін кейбір CSS

Кейбір CSS бәрі жақсы көрінуі үшін
Кейбір CSS бәрі жақсы көрінуі үшін

Сіз байқағандай, мен орналасуды басқару үшін CSS файлын қолданамын. Менің қашықтан басқару пультінің кіші экрандарда қолдануға болатынына көз жеткізу үшін мен бірнеше автоматты CSS флэш -қораптарын қолдандым.

~~~

/ * Жарықты басқару интерфейсінің стиль кестесі *

* Әр бетте қолданылады */

дене {фондық түс: f9fcfa; қаріптер тобы: Arial; маржа: 0; }

h1 {түсі: ақ; мәтінді туралау: ортасы; }

p {font-family: вердана; қаріп өлшемі: 20 пиксель; }

с2 {}

/ * Тақырып */

.header {биіктігі: 10%; көрсету: икемділік; негіздеу-мазмұн: икемді бастау; туралау элементтері: орталық; маржа: 0px; солға толтыру: 5%; фон:#3F51B5; туралау элементтері: орталық; }

. HeaderLinks {түсі: ақ; }

.navbar {көрсету: икемділік; икемділік: 30%; негіздеу-мазмұн: кеңістік-айнала; өң түсі: #3F51B5; түсі: ақ; }

/ * Төменгі деректеме */

.footer {background-color: #3F51B5; биіктігі: 10%; мәтінді туралау: ортасы; }

/ * Index.php */

.түймелері {дисплей: икемділік; иілу бағыты: қатар; икемді орау: орау; justify-content: бос орын-арасындағы; биіктігі: 80%; туралау-элементтер: икемді бастау; }

.buttons_index {толтыру: 0%; шекара ені: жұқа; шекара стилі: қатты; шекара түсі: қара; өң түсі: #3949ab; түсі: ақ; қаріп-отбасы: sans-serif; ені: 24%; биіктігі: 20%; }

.buttons_index: апару {толтыру: 0%; шекара ені: жұқа; шекара стилі: қатты; шекара түсі: қара; өң түсі: #536DFE; түсі: ақ; қаріп-отбасы: sans-serif; ені: 24%; биіктігі: 20%; }

~~~

11 -қадам: рахмет

Және бұл. Барлығы мен үшін жұмыс істейді және менің нұсқаулығымды таңдасаңыз, бұл сіз үшін де жұмыс істейді деп сенемін. Егер сіз кодты көшіруге тырыссаңыз, мен оны жүктеу үшін бірнеше бос орын қосуым керек еді, сондықтан код қайтадан пайдалы болмай тұрып оларды жоюға тура келеді.

Сізге бәрін оқу ұнады деп үміттенемін. Егер сізде кері байланыс болса, мен оны естуге қуаныштымын!

Ұсынылған: