Taula de continguts:
- Pas 1: materials usats
- Pas 2: prepareu el sistema operatiu
- Pas 3: Connexió dels Neopíxels
- Pas 4: inicieu el RPi
- Pas 5: Pi-Hole
- Pas 6: Controleu els llums
- Pas 7: enceneu els llums amb el navegador
- Pas 8: Controleu els llums des del navegador
- Pas 9: creeu una plantilla per a la capçalera i el peu de pàgina
- Pas 10: alguns CSS perquè tot sembli una mica millor
- Pas 11: gràcies
Vídeo: Neopíxels de bloqueig d'anuncis: 11 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
Volia fer un lloc web senzill i remot per a una tira de neopíxels connectats al meu Raspberry Pi zero i continuar utilitzant-lo per bloquejar anuncis a la meva xarxa mitjançant Pi-Hole. Primer, només volia afegir alguns leds a la meva habitació, però, tot connectant-ho, em vaig adonar que no tenia forma de controlar-los convenientment. Per tant, vaig decidir crear un lloc web senzill amb algunes opcions bàsiques de control mitjançant el servidor apache que l'instal·lador de Pi-hole ja havia configurat. He concedit permisos d'arrel de dades www, que suposa un risc de seguretat, de manera que hauríeu de fer que el servidor web no estigui disponible per al món exterior. Això va començar principalment per la meva pròpia documentació i, d'alguna manera, es va convertir en el meu primer instructable;) Així que agrairia molt que poguéssiu assenyalar si alguna cosa no està clara o si he trobat a faltar alguna cosa.
Pas 1: materials usats
-
Raspberry Pi (vaig començar amb un Pi 2 i després vaig canviar a WH, els pins gpio poden ser lleugerament diferents, però en cas contrari, tots els models estan bé)
- Si teniu un RPi sense wifi integrat, també és útil un adaptador wifi.
- Opcionalment, una funda per al raspberry pi
- 2 cables de pont masculí-femení (per exemple)
- Neopíxels ws2811 (els he utilitzat)
- 1 font d'alimentació de 10 W per al RPi (un carregador de telèfon antic farà)
- Font d'alimentació d'1 ~ 50W per als Neopixels (n'he utilitzat un així, però probablement n'hi hauria prou amb un de més petit, però si voleu més leds, us queda espai per ampliar).
- Endoll de connector femella (com aquest)
Pas 2: prepareu el sistema operatiu
Descarregueu la versió més recent de Rasbian des de raspberrypi.org La versió lite està bé per a aquest projecte, si teniu previst utilitzar el raspberry pi per a una altra cosa, també us recomanem que instal·leu la versió completa amb gui. Després vaig cremar la imatge amb Etcher. Després d'això, per assegurar-me que es connectarà amb la meva xarxa wifi, he afegit wpa_supplicant.conf al directori d'arrencada de la targeta sd. El contingut del fitxer hauria de ser així:
~~~
ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev update_config = 1
xarxa = {
ssid = "SSID"
psk = "CONTRASENYA"
key_mgmt = WPA-PSK}
~~~
Per habilitar ssh he creat un fitxer anomenat ssh (sense cap extensió) al mateix directori. Això us assegurarà que pugueu configurar tot el que vulgueu des d’un altre equip al vostre lan.
Pas 3: Connexió dels Neopíxels
Primer vaig endollar la font d'alimentació del connector femella i vaig posar el RPi en una funda. Vaig cargolar el cable de terra dels leds (el cable blau) i un costat mascle d'un cable de pont al costat negatiu del connector de la presa. L'altre extrem del cable de pont que vaig connectar a un pin de terra de la capçalera de gpio, he utilitzat el pin 6, però els pins exactes que podeu utilitzar dependran del model RPi exacte que utilitzeu.
En segon lloc, vaig connectar a l'extrem positiu del connector de la presa el cable de 5 V dels leds (el cable vermell). Al meu led, hi havia un connector de cable de pont en un cable de terra addicional i el cable de dades (el cable blanc). Acabo d'ignorar el cable de terra addicional, no era necessari per a la meva configuració. Al cable de dades he connectat un cable de pont masculí a femella amb el pin gpio 12, de nou, el pin exacte que heu d'utilitzar depèn del vostre RPi. Després vaig endollar la font d'alimentació del RPi i dels píxels. Els leds es van encendre durant un breu moment, si tot està connectat correctament.
Pas 4: inicieu el RPi
Després de donar al RPi un minut aproximadament per arrencar, vaig buscar l'adreça IP del gerd amb nmap. Però qualsevol escàner de xarxa, el tauler d'informació del vostre encaminador o, en la majoria dels casos, simplement "raspberrypi.local" ho farà. Amb aquesta informació em vaig connectar amb RPi mitjançant ssh. L’usuari per defecte és pi amb la contrasenya raspberry. Per tant, això és el primer que he canviat amb `passwd` directament després del primer inici de sessió. Si voleu accedir al vostre pi mitjançant ssh des de fora de la vostra xarxa local, hauríeu de buscar l'autenticació de claus i fall2ban. Personalment, no en tinc cap cas d’ús, així que el deixaré només amb una contrasenya.
En segon lloc, he actualitzat el programari utilitzant `sudo apt update && sudo apt upgrade -Y`. També necessitava un programari addicional per compilar el libery `sudo apt-get install scons swig git python-dev build-essential -Y`. Després vaig copiar l'excel·lent libery de Jeremy Garff a github `git clone https:// github.com / jgarff / rpi_ws281x.git`. Després d'això es va clonar el libery, vaig anar al directori rpi_ws281x, vaig utilitzar scons i després vaig instal·lar el libary amb `sudo python python / setup.py install`. A python / examples hi ha una bonica demostració "strandtest.py" amb animacions molt netes que podeu començar amb `sudo python python / examples / strandtest.py`.
Pas 5: Pi-Hole
Per crear un bloqueig d’afegits a tota la xarxa, Pi-Hole és perfecte. S'instal·la només amb `sudo curl -sSL https://install.pi-hole.net | bash`. La part positiva és que també configurarà un servidor web.
Després d’executar l’instal·lador, voldreu iniciar sessió al lloc d’administració del vostre enrutador i donar-li al vostre RPi una adreça IP estàtica i configurar-lo com a servidor DHCP. Si heu establert un temps de lloguer baix, el vostre forat PI hauria de funcionar ara.
Pas 6: Controleu els llums
La forma més fàcil de controlar els neopíxels és amb petits programes python. Però utilitzar ssh cada vegada que vulgueu encendre els llums és incòmode, sobretot en un dispositiu mòbil. Així que vaig decidir utilitzar un lloc web petit com a control remot. AQUEST ÉS UN RISC DE SEGURETAT, perquè vaig donar permís a l'arrel www-data sense verificar la contrasenya. Probablement no hauríeu de fer que aquest lloc estigui disponible fora de la vostra xarxa.
Per facilitar la tria entre el tauler de PI-hole i el control remot de llum, vaig donar a l’usuari pi accés d’escriptura a / var / www / html amb `sudo chown -R pi / var / www.html` i vaig crear un fitxer index.php a / var / www / html /. Alguna cosa senzilla com:
~~~
Índex Pi forat a distància
~~~
està bé. Després vaig crear una nova carpeta anomenada llums per tenir-ho tot des dels neopíxels junts. Aquí he creat colour.py basat en el strandtest.py de la biblioteca.
~~~
des de la importació neopixel * # Importa algunes biblioteques
importar sistemes
led def (tira, color, inici, final): # Creeu una funció per cridar leds
per a mi en el rang (inici, fi):
strip.setPixelColor (i, color)
strip.show ()
BRIGHTNESS = int (sys.argv [4]) # El quart paràmetre de la línia d'ordres serà la brillantor. (1-255)
COUNT = 50 # La quantitat de leds PIN = 12 # El pin que s'utilitza al RPi
FREQ_HZ = 800000 # freqüència del senyal LED en Hz (normalment 800 kHz)
DMA = 5 # canal DMA que cal utilitzar per generar senyal (proveu 5)
INVERT = False # True per invertir el senyal (quan s'utilitza el nivell de transistor NPN
strip = Adafruit_NeoPixel (COUNT, PIN, FREQ_HZ, DMA, INVERT, BRIGHTNESS)
strip.begin ()
R = int (sys.argv [1]) # La quantitat de vermell és el primer paràmetre
G = int (sys.argv [2]) # La quantitat de verd és el segon paràmetre
B = int (sys.argv [3]) # La quantitat de blau és el tercer paràmetre
provar:
leds (tira, Color (R, G, B), 0, 49) # Iniciarà els leters amb el color i la brillantor escollits.
excepte KeyboardInterrupt:
color (tira, color (0, 0, 0), 0, 49)
~~~
Si executeu això amb sudo al terminal, els llums haurien d’encendre’s amb el color especificat. Per donar permís a www-data sudo, he afegit "www-data ALL = (ALL) NOPASSWD: ALL)" al fitxer sudoers (/ etc / sudoers) directament sota l'usuari root.
Pas 7: enceneu els llums amb el navegador
Després vaig crear anonther index.php, aquesta vegada a / lights. ~~~
< ?php $R = 100; $G = 100; $B = 100; $BRIGHTNESS = 100; exec("sudo python colour.py $R $G $B $BRIGHTNESS"); ?>
~~~
Quan ara visiti raspberrypi.local / lights / index.php, els leds es tornaran blancs. Tot i que és un bon començament, m'agrada tenir almenys alguns botons en un comandament a distància.
Pas 8: Controleu els llums des del navegador
Vaig crear una interfície amb buttens mitjançant un formulari html. No m'agrada fer coses que no són necessàries, així que he creat una carpeta anomenada plantilles amb la capçalera, el peu de pàgina i el codi php principal. El meu (per ara) final /lights/index.php té aquest aspecte:
~~~
~~~
Per fer funcionar els botons he creat una plantilla BasicControl.php. En això he especificat el codi que s'hauria d'executar quan es prem un botó. Com que m’agradaven les animacions de proves més complexes, també les vaig incloure. La prova de cadena continuarà infinitament, de manera que he fet un altre botó per aturar el procés sempre que vulgui.
~~~ <? 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 ['green'])) {$ R = 0; $ G = 255; $ B = 0; exec ("sudo python colour.py $ R $ G $ B $ I"); }
else if (isset ($ _ POST ['blau'])) {$ R = 0; $ G = 0; $ B = 255; exec ("sudo python colour.py $ R $ G $ B $ I"); }
else if (isset ($ _ POST ['blanc'])) {$ 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 ['reiniciar']))) {shell_exec ('sudo reiniciar ara'); }?>
~~~
Pas 9: creeu una plantilla per a la capçalera i el peu de pàgina
Ara tot funciona, però no és massa agradable de mirar. Després d'importar la capçalera i el peu de pàgina, tots els elements del lloc estan disponibles, però no tenen estil.
Header.php:
~~~
Llums
Lampjes
Controls bàsics
Controls avançats
~~~
I el footer.php:
~~~
~~~
Pas 10: alguns CSS perquè tot sembli una mica millor
Com hauríeu notat, estic fent servir un fitxer css per controlar el disseny. Per assegurar-me que el comandament a distància es pugui utilitzar en pantalles més petites, també he utilitzat algunes caixes flexibles CSS amb embolcall automàtic.
~~~
/ * Full d'estil per a la interfície de control de llum *
* S'aplica a totes les pàgines * /
cos {fons-color: f9fcfa; font-family: Arial; marge: 0; }
h1 {color: blanc; text-align: centre; }
p {font-family: verdana; mida de la lletra: 20 px; }
h2 {}
/ * La capçalera * /
.header {altura: 10%; pantalla: flex; justify-content: flex-start; align-items: centre; marge: 0px; farciment-esquerra: 5%; fons: # 3F51B5; align-items: centre; }
. HeaderLinks {color: white; }
.navbar {display: flex; flex: 30%; justify-content: espai al voltant; color de fons: # 3F51B5; color: blanc; }
/ * El peu de pàgina * /
.footer {background-color: # 3F51B5; alçada: 10%; text-align: centre; }
/ * Index.php * /
.buttons {display: flex; flex-direction: fila; flex-wrap: embolcall; justify-content: espai entre; alçada: 80%; align-items: flex-start; }
.buttons_index {farcit: 0%; ample de vora: prim; estil de vora: sòlid; color de la vora: negre; color de fons: # 3949ab; color: blanc; font-family: sans-serif; amplada: 24%; alçada: 20%; }
.buttons_index: hover {padding: 0%; ample de vora: prim; estil de vora: sòlid; color de la vora: negre; color de fons: # 536DFE; color: blanc; font-family: sans-serif; amplada: 24%; alçada: 20%; }
~~~
Pas 11: gràcies
I ja està. Tot funciona per a mi i espero que també funcioni per a vosaltres si trieu provar la meva instrucció. Si heu intentat copiar algun codi, hauria d'afegir alguns espais per penjar-lo aquí, de manera que haurà de suprimir-los abans que el codi torni a ser útil.
Espero que us hagi agradat llegir-ho tot. Si teniu comentaris, m'encantaria escoltar-los.
Recomanat:
LCD de Messenger controlat per Bluetooth -- LCD de 16x2 -- Hc05 -- Simple -- Tauler d’anuncis sense fils: 8 passos
LCD de Messenger controlat per Bluetooth || LCD de 16x2 || Hc05 || Simple || Tauler d’anuncis sense fils: …………………………. SUBSCRIU-vos al meu canal de YouTube per obtenir més vídeos …… ………………………………… El tauler d’anuncis s’utilitza per actualitzar les persones amb informació nova o Si voleu enviar un missatge a la sala o a la sala
Tauler d’anuncis sense fils (Bluetooth): 5 passos (amb imatges)
Tauler d’anuncis sense fils (Bluetooth): en aquest món modern on tot està digitalitzat, per què no el tauler d’anuncis convencional té un nou aspecte? Per tant, podem fer un tauler d’anuncis controlat per Bluetooth que és molt senzill. Aquesta configuració es pot utilitzar en lloc d’avis estàtics tauler com a universitats / a
Bloquejador d'anuncis PiHole amb pantalla de 3,5 ": 8 passos (amb imatges)
Bloqueig d'anuncis PiHole amb pantalla de 3,5 ": Benvingut al meu tutorial sobre com crear un bloquejador d'anuncis realment increïble per a tota la vostra xarxa. El Raspberry Pi executa un programari conegut com Pi-Hole i PADD per bloquejar anuncis i mostrar dades estadístiques com ara el Pi- L'adreça IP de Hole i la quantitat d'anuncis floreixen
Tauler d’anuncis Raspberry Pi: 11 passos (amb imatges)
Tauler d’anuncis de Raspberry Pi: aquest és un projecte en què he treballat per a la meva església. Volíem un tauler d’anuncis electrònic que es muntés a la zona del nàrtex / vestíbul i que circulés per diapositives estàtiques cada pocs segons. Aquests eren els nostres objectius de disseny: diapositives estàtiques, sense vídeo ni au
Bloqueig d’anuncis a tota la xarxa amb el vostre Raspberry Pi: 4 passos
Bloqueig d’anuncis a tota la xarxa amb el vostre Raspberry Pi: experimenteu un web més net i ràpid i bloquegeu anuncis molestos a tota la vostra xarxa domèstica amb Pi-hole i el vostre Raspberry Pi