Innholdsfortegnelse:
- Trinn 1: brukte materialer
- Trinn 2: Forbered operativsystemet
- Trinn 3: Koble til Neopixels
- Trinn 4: Start RPi
- Trinn 5: Pi-Hole
- Trinn 6: Kontroller lysene
- Trinn 7: Slå på lysene i nettleseren
- Trinn 8: Kontroller lysene fra nettleseren
- Trinn 9: Lag en mal for topp- og bunntekst
- Trinn 10: Noen CSS for å få det til å se litt bedre ut
- Trinn 11: Takk
Video: Annonseblokkerende neopiksler: 11 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Jeg ønsket å lage et enkelt nettsted som fjernkontroll for en stripe med neopiksler som er koblet til min Raspberry Pi zero og fortsette å bruke den til å blokkere annonser på nettverket mitt ved hjelp av Pi-Hole. Først ville jeg bare legge til noen lysdioder på rommet mitt, men da jeg koblet til alt, skjønte jeg at jeg ikke hadde mulighet til å kontrollere dem. Så jeg bestemte meg for å lage et enkelt nettsted med noen grunnleggende kontrollalternativer ved hjelp av apache-serveren som Pi-hole-installasjonsprogrammet allerede har konfigurert. Jeg ga www-data root-tillatelser, noe som er en sikkerhetsrisiko, så du bør sannsynligvis gjøre webserveren ikke tilgjengelig for omverdenen. Dette startet hovedsakelig for min egen dokumentasjon og ble på en eller annen måte min første instruerbare;) Så jeg vil virkelig sette pris på om du kan påpeke om noe er uklart eller hvis jeg helt savnet noe.
Trinn 1: brukte materialer
-
Raspberry Pi (jeg begynte på en Pi 2 og byttet deretter til WH, gpio -pinnene kan være litt forskjellige, men ellers er hver modell fin)
- Hvis du har en RPi uten innebygd wifi, er en wifi -adapter også nyttig.
- Eventuelt et tilfelle for bringebær pi
- 2 stikkontakter for mann-hunn (for eksempel)
- Neopixels ws2811 (jeg brukte disse)
- 1 10W strømforsyning for RPi (en gammel telefonlader vil gjøre)
- 1 ~ 50W strømforsyning til Neopixels (jeg brukte en slik, men sannsynligvis ville en mindre være tilstrekkelig, men hvis du vil ha flere lysdioder, har du litt plass igjen å utvide.)
- Hunkontaktkontakt (som denne)
Trinn 2: Forbered operativsystemet
Last ned den nyeste versjonen Rasbian fra raspberrypi.org Lite -versjonen er bra for dette prosjektet. Hvis du planlegger å bruke bringebær -pi til noe annet, kan du vurdere å installere fullversjonen med gui. Så brente jeg bildet med Etcher. Etter det for å være sikker på at det vil koble til wifi -nettverket mitt, la jeg til wpa_supplicant.conf i oppstartskatalogen til sd -kortet. Innholdet i filen skal se slik ut:
~~~
ctrl_interface = DIR =/var/run/wpa_supplicant GROUP = netdev update_config = 1
nettverk = {
ssid = "SSID"
psk = "PASSORD"
key_mgmt = WPA-PSK}
~~~
For å aktivere ssh opprettet jeg en fil som heter ssh (uten utvidelse) i den samme katalogen. Dette vil sørge for at du kan konfigurere alt fra en annen datamaskin i ditt lan.
Trinn 3: Koble til Neopixels
Først koblet jeg strømforsyningen til hunkontakten og satte RPi i et etui. Jeg skrudde jordkabelen fra lysdiodene (den blå kabelen) og en hann -side av en jumper wire i den negative siden av jack -kontakten. Den andre enden av startkabelen jeg koblet til en jordet pinne på gpio -hodet, jeg brukte pinne 6, men de eksakte pinnene du kan bruke vil avhenge av den eksakte modellen RPi du bruker.
For det andre koblet jeg på den positive enden av jack -kontakten 5v -kabelen fra lysdiodene (den røde kabelen). På min LED var det en jumper wire -kontakt på en ekstra jordkabel og datakabelen (den hvite kabelen). Jeg ignorerte den ekstra jordkabelen, det var unødvendig for mitt oppsett. På datakabelen koblet jeg en mannlig til kvinnelig startkabel med gpio -pinnen 12, igjen avhenger den nøyaktige pinnen du skal bruke av RPi -en. Deretter koblet jeg til strømforsyningen for RPi og piksler. Lysdiodene lyser opp et kort øyeblikk, hvis alt er riktig kablet.
Trinn 4: Start RPi
Etter å ha gitt RPi et minutt eller så å starte opp, så jeg opp IP -adressen fra bringebæret med nmap. Men hvilken som helst nettverksskanner, informasjonspanelet på ruteren din eller i de fleste tilfeller bare "raspberrypi.local" vil gjøre det. Med den informasjonen koblet jeg til RPi gjennom ssh. Standardbrukeren er pi med passordet bringebær. Så det er det første jeg endret ved å bruke 'passwd' rett etter den første påloggingen. Hvis du ønsker å få tilgang til pi -en din via ssh fra ditt lokale nettverk, bør du undersøke fail2ban og nøkkelautentisering. Jeg personlig har ikke en brukstilfelle for det, så jeg lar det stå med et passord.
For det andre oppdaterte jeg programvaren ved hjelp av `sudo apt update && sudo apt upgrade -Y`. Jeg trengte også litt ekstra programvare for å kompilere libery `sudo apt-get install scons swig git python-dev build-essential -Y`. Deretter kopierte jeg den utmerkede liberien fra Jeremy Garff på github `git clone https:// github.com/jgarff/rpi_ws281x.git`. Etter at liberien ble klonet, gikk jeg til katalogen rpi_ws281x, brukte scons og installerte deretter libary med `sudo python python/setup.py install`. I python/eksempler er en fin demo "strandtest.py" med veldig fine animasjoner som du kan starte med `sudo python python/eksempler/strandtest.py`.
Trinn 5: Pi-Hole
For å lage en nettverksvid add-blocker, er Pi-Hole perfekt. Den installeres med bare `sudo curl -sSL https://install.pi-hole.net | bash '. Den fine delen er at den også vil sette opp en webserver.
Etter at du har kjørt installasjonsprogrammet, vil du logge deg på administrasjonsstedet til ruteren og gi RPi en statisk IP-adresse og konfigurere den som DHCP-server. Hvis du har angitt en lav leietid enn PI-hullet skal fungere nå.
Trinn 6: Kontroller lysene
Den enkleste måten å kontrollere neopikslene på er med små python -programmer. Men å bruke ssh hver gang du vil slå på lysene er upraktisk, spesielt på en mobil enhet. Så jeg bestemte meg for å bruke et lite nettsted som fjernkontroll. DETTE ER EN SIKKERHETSRISIKO, fordi jeg ga www-data roten tillatelse uten passordbekreftelse. Du bør sannsynligvis ikke gjøre dette nettstedet tilgjengelig utenfor ditt LAN.
For å gjøre det enkelt å velge mellom dashbordet til PI -hullet og den lyse fjernkontrollen, ga jeg brukeren pi skrivetilgang til/var/www/html med `sudo chown -R pi/var/www.html`, og jeg opprettet en index.php -fil i/var/www/html/. Noe enkelt som:
~~~
Indeks Pi hull Lys fjernkontroll
~~~
er greit. Deretter opprettet jeg en ny mappe som heter lights for å ha alt fra neopikslene sammen. Her laget jeg colour.py basert på strandtest.py fra liberien.
~~~
fra neopixel import * # Importer noen biblioteker
importer sys
def led (stripe, farge, start, slutt): # Lag en funksjon for å kalle leds
for jeg i rekkevidde (start, slutt):
strip.setPixelColor (i, farge)
strip.show ()
BRIGHTNESS = int (sys.argv [4]) # Den fjerde parameteren på kommandolinjen vil være lysstyrke. (1-255)
TELLING = 50 # Mengden leds PIN = 12 # Pinnen som brukes på RPi
FREQ_HZ = 800000 # LED signalfrekvens i hertz (vanligvis 800 khz)
DMA = 5 # DMA -kanal som skal brukes for å generere signal (prøv 5)
INVERT = Falsk # Sant for å snu signalet (når du bruker NPN -transistornivå
strip = Adafruit_NeoPixel (COUNT, PIN, FREQ_HZ, DMA, INVERT, BRIGHTNESS)
strip.begin ()
R = int (sys.argv [1]) # Mengden rødt er den første parameteren
G = int (sys.argv [2]) # Mengden grønt er den andre parameteren
B = int (sys.argv [3]) # Mengden blått er den tredje parameteren
prøve:
lysdioder (stripe, farge (R, G, B), 0, 49) #Vil starte fargene med den valgte fargen og lysstyrken.
unntatt KeyboardInterrupt:
farge (stripe, farge (0, 0, 0), 0, 49)
~~~
Hvis du kjører dette med sudo på terminalen, skal lysene tennes i den angitte fargen. For å gi www-data sudo-tillatelse la jeg `www-data ALL = (ALL) NOPASSWD: ALL)` til sudoers-filen (/etc/sudoers) direkte under rotbrukeren.
Trinn 7: Slå på lysene i nettleseren
Deretter opprettet jeg en annen index.php, denne gangen i /lights. ~~~
< ?php $R = 100; $G = 100; $B = 100; $BRIGHTNESS = 100; exec("sudo python colour.py $R $G $B $BRIGHTNESS"); ?>
~~~
Når jeg nå besøker raspberrypi.local/lights/index.php vil lysdiodene bli hvite. Selv om dette er en fin start, liker jeg å ha minst noen knapper på en fjernkontroll.
Trinn 8: Kontroller lysene fra nettleseren
Jeg opprettet et grensesnitt med buttens ved hjelp av et html -skjema. Jeg liker ikke å gjøre ting som ikke er nødvendig, så jeg opprettet en mappe som heter maler med topptekst, bunntekst og hoved php -kode. Min (foreløpig) endelige /lights/index.php ser slik ut:
~~~
~~~
For å få knappene til å fungere laget jeg en mal BasicControl.php. I dette spesifiserte jeg koden som skulle kjøres når du trykker på en knapp. Fordi jeg likte de strengeste animasjonene, inkluderte jeg den også. Strandtesten vil fortsette uendelig lenge, så jeg lagde en ny knapp for å stoppe prosessen når jeg vil.
~~~ <? php
$ I = 100;
$ R = 0;
$ G = 0;
$ B = 0;
if (isset ($ _ POST ['strandtest_start'])) {exec ("sudo python strandtest.py"); }
ellers hvis (isset ($ _ POST ['strandtest_stop'])) {exec ("sudo pkill -9 -f strandtest.py"); }
ellers hvis (isset ($ _ POST ['rød'])) {$ R = 255; $ G = 0; $ B = 0; exec ("sudo python colour.py $ R $ G $ B $ I"); }
ellers hvis (isset ($ _ POST ['grønn'])) {$ R = 0; $ G = 255; $ B = 0; exec ("sudo python colour.py $ R $ G $ B $ I"); }
ellers hvis (isset ($ _ POST ['blå'])) {$ R = 0; $ G = 0; $ B = 255; exec ("sudo python colour.py $ R $ G $ B $ I"); }
ellers hvis (isset ($ _ POST ['hvit'])) {$ R = 255; $ G = 255; $ B = 255; exec ("sudo python colour.py $ R $ G $ B $ I"); }
ellers hvis (isset ($ _ POST ['off'])) {shell_exec ('sudo python off.py'); }
ellers hvis (isset ($ _ POST ['reboot'])) {shell_exec ('sudo reboot now'); }?>
~~~
Trinn 9: Lag en mal for topp- og bunntekst
Nå fungerer alt, men det er ikke så hyggelig å se på. Etter import av topptekst og bunntekst er alle elementene på nettstedet tilgjengelige, bare ikke stylet.
Header.php:
~~~
Lys
Lampjes
Grunnleggende kontroller
Avanserte kontroller
~~~
Og footer.php:
~~~
~~~
Trinn 10: Noen CSS for å få det til å se litt bedre ut
Som du kanskje har lagt merke til, bruker jeg en css -fil for å kontrollere oppsettet. For å sikre at fjernkontrollen min også er brukbar på mindre skjermer, brukte jeg noen css flexboxes med autowrap.
~~~
/ * Stilark for lysstyringsgrensesnittet *
* Gjelder på hver side */
body {bakgrunnsfarge: f9fcfa; font-family: Arial; margin: 0; }
h1 {farge: hvit; tekstjustering: senter; }
p {font-family: verdana; skriftstørrelse: 20px; }
h2 {}
/ * Overskriften */
.hode {høyde: 10%; display: flex; justify-content: flex-start; align-items: center; margin: 0px; polstring-venstre: 5%; bakgrunn:#3F51B5; align-items: center; }
. HeaderLinks {farge: hvit; }
.navbar {display: flex; fleks: 30%; justify-content: space-around; bakgrunnsfarge: #3F51B5; farge: hvit; }
/ * Bunntekst */
.footer {bakgrunnsfarge: #3F51B5; høyde: 10%; tekstjustering: senter; }
/ * Index.php */
.knapper {display: flex; flex-direction: rad; flex-wrap: vikle; justify-content: mellomrom; høyde: 80%; align-items: flex-start; }
.buttons_index {polstring: 0%; kantbredde: tynn; kantstil: solid; kantfarge: svart; bakgrunnsfarge: #3949ab; farge: hvit; font-family: sans-serif; bredde: 24%; høyde: 20%; }
.buttons_index: sveve {padding: 0%; kantbredde: tynn; kantstil: solid; kantfarge: svart; bakgrunnsfarge: #536DFE; farge: hvit; font-family: sans-serif; bredde: 24%; høyde: 20%; }
~~~
Trinn 11: Takk
Og det er det. Alt fungerer for meg, og jeg håper det vil fungere for deg også hvis du velger, prøv min instruerbare. Hvis du prøvde å kopiere noen kode, måtte jeg legge til noen mellomrom for å laste den opp her, så du må slette dem før koden blir nyttig igjen.
Jeg håper du likte å lese alt. Hvis du har tilbakemeldinger, vil jeg gjerne høre det!
Anbefalt:
Arduino bilvarslingssystem for omvendt parkering - Trinn for trinn: 4 trinn
Arduino Car Reverse Parking Alert System | Trinn for trinn: I dette prosjektet skal jeg designe en enkel Arduino Car Reverse Parking Sensor Circuit ved hjelp av Arduino UNO og HC-SR04 Ultrasonic Sensor. Dette Arduino -baserte bilreverseringssystemet kan brukes til autonom navigasjon, robotavstand og andre områder
Trinn for trinn PC -bygging: 9 trinn
Steg for trinn PC -bygging: Rekvisita: Maskinvare: HovedkortCPU & CPU -kjøler PSU (strømforsyningsenhet) Lagring (HDD/SSD) RAMGPU (ikke nødvendig) CaseTools: Skrutrekker ESD -armbånd/mathermal pasta m/applikator
Tre høyttalerkretser -- Trinn-for-trinn opplæring: 3 trinn
Tre høyttalerkretser || Trinn-for-trinn opplæring: Høyttalerkretsen styrker lydsignalene som mottas fra miljøet til MIC og sender den til høyttaleren der forsterket lyd produseres. Her vil jeg vise deg tre forskjellige måter å lage denne høyttalerkretsen på:
RC -sporet robot ved hjelp av Arduino - Trinn for trinn: 3 trinn
RC -sporet robot ved bruk av Arduino - Steg for trinn: Hei folkens, jeg er tilbake med et annet kult Robot -chassis fra BangGood. Håper du har gått gjennom våre tidligere prosjekter - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot with Robotic Arms og The Badland Braw
Smarttelefonstyrte neopiksler (LED -stripe) med Blynk -app over WiFi: 6 trinn
Smarttelefonstyrte neopiksler (LED-stripe) med Blynk-app over WiFi: Jeg opprettet dette prosjektet etter at jeg ble inspirert av smarttelefonstyrte neopiksler i et vennebolig, men hans ble kjøpt i butikk. Jeg tenkte "hvor vanskelig kan det være å lage min egen, det ville også blitt mye billigere!" Slik gjør du: Merk: Jeg antar at du er fa