Cuprins:
- Pasul 1: Materiale uzate
- Pasul 2: Pregătiți sistemul de operare
- Pasul 3: Conectarea Neopixelilor
- Pasul 4: Porniți RPi
- Pasul 5: Pi-Hole
- Pasul 6: Controlați luminile
- Pasul 7: Porniți luminile cu browserul
- Pasul 8: Controlați luminile din browser
- Pasul 9: Creați un șablon pentru antet și subsol
- Pasul 10: Unele CSS pentru a face totul să arate un pic mai bine
- Pasul 11: Mulțumesc
Video: Neopixeli de blocare a anunțurilor: 11 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Am vrut să fac un site web simplu la distanță pentru o bandă de neopixeli conectați la Raspberry Pi zero și să îl folosesc în continuare pentru a bloca anunțurile din rețeaua mea folosind Pi-Hole. Mai întâi am vrut doar să adaug câteva led-uri în camera mea, dar cablând totul, mi-am dat seama că nu am nicio modalitate de a le controla în mod convenabil. Așa că am decis să creez un site web simplu cu câteva opțiuni de control de bază folosind serverul apache instalat de Pi-hole deja configurat. Am acordat permisiunile de rădăcină www-data, ceea ce reprezintă un risc de securitate, deci ar trebui să faceți în mod pronunțabil serverul web să nu fie disponibil pentru lumea exterioară. Acest lucru a început în principal pentru propria mea documentație și, într-un fel, a devenit primul meu instructabil;
Pasul 1: Materiale uzate
-
Raspberry Pi (am început pe un Pi 2 și apoi am trecut la WH, pinii gpio ar putea fi ușor diferiți, altfel fiecare model este în regulă)
- Dacă aveți un RPi fără WiFi încorporat, un adaptor wifi este de asemenea util.
- Opțional, o carcasă pentru zmeura pi
- 2 fire jumper masculin-feminin (de exemplu)
- Neopixeli ws2811 (le-am folosit)
- 1 sursă de alimentare de 10W pentru RPi (un încărcător de telefon vechi va funcționa)
- Sursă de alimentare de 1 ~ 50W pentru Neopixeli (am folosit unul ca acesta, dar probabil unul mai mic ar fi suficient, dar dacă doriți mai multe led-uri, mai aveți puțin spațiu pentru extindere.)
- Fișă mufă conector mufă (ca aceasta)
Pasul 2: Pregătiți sistemul de operare
Descărcați cea mai recentă versiune Rasbian de pe raspberrypi.org Versiunea lite este bună pentru acest proiect, dacă intenționați să utilizați raspberry pi și pentru altceva, ați putea lua în considerare instalarea versiunii complete cu gui. Apoi am ars imaginea cu Etcher. După aceea, pentru a mă asigura că se va conecta la rețeaua mea wifi am adăugat wpa_supplicant.conf în directorul de boot al cardului SD. Conținutul fișierului ar trebui să arate astfel:
~~~
ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev update_config = 1
rețea = {
ssid = "SSID"
psk = "PAROLĂ"
key_mgmt = WPA-PSK}
~~~
Pentru a activa ssh am creat un fișier numit ssh (fără nicio extensie) în același director. Acest lucru vă va asigura că sunteți capabil să configurați totul de pe alt computer din lan.
Pasul 3: Conectarea Neopixelilor
Mai întâi am conectat sursa de alimentare la conectorul jack feminin și am pus RPi într-o cutie. Am înșurubat cablul de masă de pe leduri (cablul albastru) și o parte tată a unui cablu jumper în partea negativă a conectorului jack. Celălalt capăt al firului jumper l-am conectat la un pin de masă de pe antetul gpio, am folosit pinul 6, dar pinii exacti pe care îi puteți folosi vor depinde de modelul exact RPi pe care îl utilizați.
În al doilea rând am conectat pe capătul pozitiv al conectorului jack cablul de 5v de la leduri (cablul roșu). Pe ledul meu era un conector de sârmă jumper pe un cablu de masă suplimentar și cablul de date (cablul alb). Tocmai am ignorat cablul de masă suplimentar, nu era necesar pentru configurarea mea. Pe cablul de date am conectat un cablu masculin la jumper cu pinul gpio 12, din nou, pinul exact pe care ar trebui să-l folosiți depinde de RPi. Apoi mi-am conectat sursa de alimentare pentru RPi și pixeli. Ledurile s-au aprins pentru o scurtă clipă, dacă totul este conectat corect.
Pasul 4: Porniți RPi
După ce am acordat RPi un minut sau cam așa pentru a porni, am căutat adresa IP de la zmeură cu nmap. Dar orice scaner de rețea, panoul de informații al routerului dvs. sau, în majoritatea cazurilor, pur și simplu „raspberrypi.local” va funcționa. Cu aceste informații m-am conectat cu RPi prin ssh. Utilizatorul implicit este pi cu parola zmeură. Deci, acesta este primul lucru pe care l-am schimbat folosind `passwd` direct după prima autentificare. Dacă doriți să accesați pi-ul dvs. prin ssh din afara rețelei locale, ar trebui să căutați în autentificarea fail2ban și cheie. Eu personal nu am un caz de utilizare pentru asta, așa că îl voi lăsa doar cu o parolă.
În al doilea rând am actualizat software-ul folosind `sudo apt update && sudo apt upgrade -Y`. De asemenea, am avut nevoie de câteva programe software suplimentare pentru a compila libery `sudo apt-get install scons swig git python-dev build-essential -Y`. Apoi am copiat excelentul libery de la Jeremy Garff pe github `git clone https:// github.com / jgarff / rpi_ws281x.git`. După aceea, liberia a fost clonată, m-am dus la directorul rpi_ws281x, am folosit scons și apoi am instalat libary cu `sudo python python / setup.py install`. În python / examples este un demo frumos „strandtest.py” cu animații foarte îngrijite pe care îl puteți începe cu `sudo python python / examples / strandtest.py`.
Pasul 5: Pi-Hole
Pentru a crea un blocaj de adăugare la nivel de rețea, Pi-Hole este perfect. Se instalează doar cu `sudo curl -sSL https://install.pi-hole.net | bash`. Partea frumoasă este că va configura și un server web.
După ce rulați programul de instalare, veți dori să vă conectați la site-ul de administrare al routerului dvs. și să oferiți RPi o adresă IP statică și să o configurați ca server DHCP. Dacă ați stabilit un timp de închiriere scăzut, ar trebui să funcționeze acum gaura dvs. PI.
Pasul 6: Controlați luminile
Cel mai simplu mod de a controla neopixeli este cu programe mici Python. Dar utilizarea ssh de fiecare dată când doriți să aprindeți luminile este incomodă, mai ales pe un dispozitiv mobil. Așa că am decis să folosesc un mic site web ca telecomandă. Acesta este un risc de securitate, deoarece am dat permisiunea de rădăcină www-data fără verificarea parolei. Probabil că nu ar trebui să faceți acest site disponibil în afara rețelei dvs.
Pentru a ușura alegerea dintre tabloul de bord al PI-hole și telecomanda ușoară, i-am oferit utilizatorului accesul de scriere pi la / var / www / html cu `sudo chown -R pi / var / www.html` și am creat un fișier index.php în / var / www / html /. Ceva simplu, cum ar fi:
~~~
Telecomandă cu gaură Pi Index
~~~
e bine. Apoi am creat un nou folder numit lumini pentru a avea totul de la neopixeli împreună. Aici am creat colour.py pe baza strandtest.py din libery.
~~~
din importul neopixel * # Importă câteva biblioteci
import sisteme
ledul def (bandă, culoare, început, sfârșit): # Creați o funcție pentru a apela leduri
pentru i în interval (început, sfârșit):
strip.setPixelColor (i, culoare)
strip.show ()
BRIGHTNESS = int (sys.argv [4]) # Al patrulea parametru de pe linia de comandă va fi luminozitatea. (1-255)
COUNT = 50 # Cantitatea de leduri PIN = 12 # Pinul utilizat pe RPi
FREQ_HZ = 800000 # frecvența semnalului LED în hertz (de obicei 800 kHz)
DMA = 5 # canal DMA de utilizat pentru generarea semnalului (încercați 5)
INVERT = False # Adevărat pentru a inversa semnalul (atunci când se utilizează nivelul tranzistorului NPN
strip = Adafruit_NeoPixel (COUNT, PIN, FREQ_HZ, DMA, INVERT, BRIGHTNESS)
strip.begin ()
R = int (sys.argv [1]) # Cantitatea de roșu este primul parametru
G = int (sys.argv [2]) # Cantitatea de verde este al doilea parametru
B = int (sys.argv [3]) # Cantitatea de albastru este al treilea parametru
încerca:
leduri (bandă, Culoare (R, G, B), 0, 49) # Vor începe letele cu culoarea și luminozitatea alese.
cu excepția KeyboardInterrupt:
culoare (bandă, culoare (0, 0, 0), 0, 49)
~~~
Dacă rulați acest lucru cu sudo pe terminal, luminile ar trebui să se aprindă în culoarea specificată. Pentru a da permisiunea www-data sudo am adăugat `www-data ALL = (ALL) NOPASSWD: ALL)` în fișierul sudoers (/ etc / sudoers) direct sub utilizatorul root.
Pasul 7: Porniți luminile cu browserul
Apoi am creat anonther index.php, de data aceasta în / lights. ~~~
< ?php $R = 100; $G = 100; $B = 100; $BRIGHTNESS = 100; exec("sudo python colour.py $R $G $B $BRIGHTNESS"); ?>
~~~
Când vizitez acum raspberrypi.local / lights / index.php ledurile vor deveni albe. Deși acesta este un început frumos, îmi place să am cel puțin niște butoane pe o telecomandă.
Pasul 8: Controlați luminile din browser
Am creat o interfață cu butoane folosind un formular html. Nu-mi place să fac lucruri care nu sunt necesare, așa că am creat un folder numit șabloane cu antetul, subsolul și codul principal PHP.
~~~
~~~
Pentru ca butoanele să funcționeze, am realizat un șablon BasicControl.php. În aceasta am specificat codul care ar trebui executat atunci când este apăsat un buton. Pentru că mi-au plăcut animațiile de test strandt, l-am inclus și pe acela. Strandtest-ul va continua la nesfârșit, așa că am făcut un alt buton pentru a opri procesul oricând vreau.
~~~ <? 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 ['verde'])) {$ R = 0; $ G = 255; $ B = 0; exec ("sudo python colour.py $ R $ G $ B $ I"); }
else if (isset ($ _ POST ['albastru'])) {$ R = 0; $ G = 0; $ B = 255; exec ("sudo python colour.py $ R $ G $ B $ I"); }
else if (isset ($ _ POST ['alb'])) {$ 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'); }?>
~~~
Pasul 9: Creați un șablon pentru antet și subsol
Acum totul funcționează, dar nu este prea plăcut să te uiți. După importarea antetului și subsolului, toate elementele site-ului sunt disponibile, pur și simplu fără stil.
Header.php:
~~~
Lumini
Lampjes
Controale de bază
Controale avansate
~~~
Și footer.php:
~~~
~~~
Pasul 10: Unele CSS pentru a face totul să arate un pic mai bine
După cum ați fi observat, folosesc un fișier css pentru a controla aspectul. Pentru a mă asigura că telecomanda mea poate fi utilizată și pe ecrane mai mici, am folosit și câteva cutii flexibile CSS cu autowrap.
~~~
/ * Foaie de stil pentru interfața de control al luminii *
* Se aplică pe fiecare pagină * /
corp {fundal-culoare: f9fcfa; font-family: Arial; marja: 0; }
h1 {culoare: alb; text-align: centru; }
p {font-family: verdana; dimensiunea fontului: 20 px; }
h2 {}
/ * Antetul * /
.header {înălțime: 10%; display: flex; justify-content: flex-start; align-items: centru; marja: 0px; umplutură-stânga: 5%; fundal: # 3F51B5; align-items: centru; }
. HeaderLinks {culoare: alb; }
.navbar {display: flex; flex: 30%; justify-content: spațiu-în jur; culoare de fundal: # 3F51B5; culoare albă; }
/ * Subsolul * /
.footer {fundal-culoare: # 3F51B5; înălțime: 10%; text-align: centru; }
/ * Index.php * /
.buttons {display: flex; direcție flexibilă: rând; flex-wrap: înveliș; justify-content: spațiu între; înălțime: 80%; align-items: flex-start; }
.buttons_index {padding: 0%; lățimea marginii: subțire; stil de bordură: solid; culoarea chenarului: negru; culoare de fundal: # 3949ab; culoare albă; font-family: sans-serif; lățime: 24%; înălțime: 20%; }
.buttons_index: hover {padding: 0%; lățimea marginii: subțire; stil de bordură: solid; culoarea chenarului: negru; culoare de fundal: # 536DFE; culoare albă; font-family: sans-serif; lățime: 24%; înălțime: 20%; }
~~~
Pasul 11: Mulțumesc
Si asta e. Totul funcționează pentru mine și sper că va funcționa și pentru dvs. dacă alegeți să încercați instructivul meu. Dacă ați încercat să copiați un cod, a trebuit să adaug câteva spații pentru încărcarea acestuia aici, așa că va trebui să le ștergeți înainte ca codul să devină din nou util.
Sper că ți-a plăcut să citești totul. Dacă aveți feedback, mi-ar plăcea să-l aud!
Recomandat:
Ceas LED cu Neopixeli: 4 pași (cu imagini)
Ceas cu LED folosind Neopixeli: Bine ați venit la instrucțiunile mele despre cum să creați un ceas cu LED folosind 60 de Neopixeli. Veți găsi 3 fișiere atașate PDF pentru segmentele ceasului, altul este pentru bază și în cele din urmă unul este un șablon pentru a ajuta la lipire secțiunile împreună. Deci, pentru a com
Clapă cu Arduino și Neopixeli: 4 pași
Clapă cu Arduino și Neopixeli: pregătirea întregului material pentru a fi utilizată. Deși trebuie să folosim un Arduino PRO mini, putem începe să folosim un Arduino UNO pentru moment și vom reveni mai târziu. Materiale: · benzi de Neo pixeli (una scurtă și una care ar fi folosită) ·
Blocarea anunțurilor la nivel de rețea cu Raspberry Pi: 4 pași
Blocarea anunțurilor la nivel de rețea cu Raspberry Pi: Experimentați un web mai curat și mai rapid și blocați anunțurile enervante din întreaga rețea de domiciliu cu Pi-hole și Raspberry Pi
Mod rapid și ușor de a vă schimba ecranul de blocare în 6 pași simpli (Windows 8-10): 7 pași
Mod rapid și ușor de a vă schimba ecranul de blocare în 6 pași simpli (Windows 8-10): doriți să schimbați lucrurile pe laptop sau pe computer? Vrei o schimbare în atmosfera ta? Urmați acești pași simpli și rapidi pentru a vă personaliza cu succes ecranul de blocare a computerului
Solder Saver (stilou de blocare cu lipire cu camă de blocare): 4 pași
Solder Saver (stilou de blocare cu camă de blocare): "Cum ar trebui să prefațez acest instructabil?" Mă întreb. Aparent, de la începutul timpului, omul a avut dorința de a lipi lipirea într-un stilou și de a posta poze online. Ei bine, m-am gândit pe scurt să aprofundez istoria mai largă a stiloului de lipit, b