Tartalomjegyzék:

Hirdetésblokkoló neopixelek: 11 lépés
Hirdetésblokkoló neopixelek: 11 lépés

Videó: Hirdetésblokkoló neopixelek: 11 lépés

Videó: Hirdetésblokkoló neopixelek: 11 lépés
Videó: Hirdetésszűrő & Hirdetésblokkoló kikapcsolása 2024, Július
Anonim
Hirdetésblokkoló neopixelek
Hirdetésblokkoló neopixelek

Szerettem volna egy egyszerű weboldalt létrehozni távolról a Raspberry Pi nullához csatlakoztatott neopixelsávok számára, és továbbra is használni szeretném a hirdetések blokkolására a hálózatomon a Pi-Hole segítségével. Először csak néhány ledet akartam hozzáadni a szobámhoz, de mindent összekötve rájöttem, hogy nincs módom kényelmesen szabályozni őket. Ezért úgy döntöttem, hogy létrehozok egy egyszerű webhelyet néhány alapvető vezérlési lehetőséggel az apache szerver segítségével, amelyet a Pi-hole telepítő már beállított. A www-data root jogosultságait megadtam, ami biztonsági kockázatot jelent, ezért tegye lehetővé, hogy a webszerver ne legyen elérhető a külvilág számára. Ez főleg a saját dokumentációm miatt kezdődött, és valahogy az első taníthatóvá vált;) Szóval nagyon megköszönném, ha tudná rámutatni, ha valami nem világos, vagy ha valamit teljesen kihagytam.

1. lépés: Használt anyagok

  • Raspberry Pi (Pi 2 -vel kezdtem, majd WH -re váltottam, a gpio csapok kissé eltérhetnek, de egyébként minden modell rendben van)

    • Ha RPi -je van beépített wifi nélkül, akkor egy wifi adapter is hasznos.
    • Opcionálisan tok a málna pi
  • 2 férfi-női áthidaló vezeték (például)
  • Neopixelek ws2811 (ezeket használtam)
  • 1 10 W -os tápegység az RPi -hez (egy régi telefon töltő megteszi)
  • 1 ~ 50 W -os tápegység a neopixelekhez (én ilyet használtam, de valószínűleg egy kisebb is elegendő lenne, de ha több LED -et szeretne, akkor van helye a bővítéshez.)
  • Női jack csatlakozó dugó (ilyen)

2. lépés: Készítse elő az operációs rendszert

Készítse elő az operációs rendszert
Készítse elő az operációs rendszert

Töltse le a legfrissebb Rasbian verziót a raspberrypi.org webhelyről. A lite verzió megfelelő erre a projektre, ha a raspberry pi -t másra is szeretné használni, akkor fontolja meg a teljes verzió telepítését a gui segítségével. Aztán Etcherrel elégettem a képet. Ezt követően, hogy megbizonyosodjon arról, hogy csatlakozni fog a wifi hálózatomhoz, hozzáadtam a wpa_supplicant.conf fájlt az sd kártya rendszerindító könyvtárába. A fájl tartalmának így kell kinéznie:

~~~

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

hálózat = {

ssid = "SSID"

psk = "JELSZÓ"

key_mgmt = WPA-PSK}

~~~

Az ssh engedélyezéséhez létrehoztam egy ssh nevű fájlt (kiterjesztés nélkül) ugyanabban a könyvtárban. Ezzel megbizonyosodhat arról, hogy bármit konfigurálhat a LAN másik számítógépéről.

3. lépés: A neopixelek csatlakoztatása

A neopixelek csatlakoztatása
A neopixelek csatlakoztatása
A neopixelek csatlakoztatása
A neopixelek csatlakoztatása

Először bedugtam a tápegységet a női jack csatlakozóba, és az RPi -t egy tokba tettem. A földelő kábelt lecsavartam a LED -ekről (a kék kábel) és az áthidaló vezeték hüvelyes oldalát a jack csatlakozó negatív oldalán. Az áthidaló vezeték másik végét, amelyet a gpio fejléc földelőcsapjához csatlakoztam, a 6 -os tűt használtam, de a használható tűk pontosan a használt RPi modelltől függenek.

Másodszor a jack csatlakozó pozitív végére kötöttem az 5 V -os kábelt a LED -ekről (a piros kábel). Az én ledjeimen egy jumper vezeték csatlakozó volt egy további földelő kábellel és az adatkábel (a fehér kábel). Csak figyelmen kívül hagytam a további földelő kábelt, felesleges volt a beállításhoz. Az adatkábelen egy dugót csatlakoztattam egy hüvely és egy női áthidaló vezetékhez a 12 -es gpio tűvel, megint az, hogy pontosan milyen tűt kell használni, az RPi értékétől függ. Ezután csatlakoztattam az RPi és a pixelek tápegységét. A LED -ek egy pillanatra kigyulladtak, ha minden megfelelően van bekötve.

4. lépés: Indítsa el az RPi -t

Indítsa el az RPi -t
Indítsa el az RPi -t

Mielőtt az RPi -nek adott volna egy percet a rendszerindításhoz, megkerestem az IP címet a málnából nmap segítségével. De bármely hálózati szkenner, az útválasztó információs panelje vagy a legtöbb esetben egyszerűen a "raspberrypi.local" megteszi. Ezzel az információval csatlakoztam az RPi -hez az ssh -n keresztül. Az alapértelmezett felhasználó a pi a málna jelszóval. Tehát ez volt az első dolog, amit a "passwd" használatával módosítottam közvetlenül az első bejelentkezés után. Ha a helyi hálózaton kívülről szeretne hozzáférni a pi -hez az ssh -n keresztül, akkor vizsgálja meg a fail2ban és a kulcs hitelesítést. Nekem személy szerint nincs használati esetem, ezért csak jelszóval hagyom.

Másodszor frissítettem a szoftvert a "sudo apt update && sudo apt upgrade -Y" használatával. Szükségem volt néhány további szoftverre is, hogy összeállítsam a libido "sudo apt-get install scons swig git python-dev build-essential -Y" programot. Aztán lemásoltam a Jeremy Garff kiváló kitalálását a github `git clone https:// github.com/jgarff/rpi_ws281x.git` oldalon. Ezt követően a könyvtárat klónoztuk, elmentem az rpi_ws281x könyvtárba, scons -t használtam, majd telepítettem a libary -t a "sudo python python/setup.py install" paranccsal. A python/example -ban van egy szép demó "strandtest.py", nagyon ügyes animációkkal, amelyeket a "sudo python python/example/strandtest.py" paranccsal kezdhet.

5. lépés: Pi-Hole

Pi-Hole
Pi-Hole

Hálózati szintű hozzáadási blokkoló létrehozásához a Pi-Hole tökéletes. Csak a `sudo curl -sSL https://install.pi-hole.net | használatával telepíthető bash`. A szép rész az, hogy beállít egy webszervert is.

A telepítő futtatása után be kell jelentkeznie az útválasztó adminisztrációs webhelyére, és statikus IP-címet kell adnia az RPi-nek, és DHCP-kiszolgálóként kell beállítania. Ha alacsony bérleti időt állított be, akkor a PI-lyuknak most működnie kell.

6. lépés: A fények vezérlése

Irányítsd a fényeket
Irányítsd a fényeket
Irányítsd a fényeket
Irányítsd a fényeket
Irányítsd a fényeket
Irányítsd a fényeket

A neopixelek legegyszerűbb módja a kis python programok. De az ssh használata minden alkalommal, amikor fel akarja kapcsolni a lámpákat, kényelmetlen, különösen mobileszközökön. Ezért úgy döntöttem, hogy egy kis webhelyet használok távirányítóként. EZ BIZTONSÁGI KOCKÁZAT, mert jelszóellenőrzés nélkül megadtam a www-data root jogosultságát. Valószínűleg nem szabad hozzáférhetővé tennie ezt az oldalt a saját hálózatán kívül.

Annak érdekében, hogy könnyen lehessen választani a PI -lyuk műszerfala és a könnyű távirányító között, megadtam a felhasználónak a pi írási hozzáférést a/var/www/html fájlhoz a "sudo chown -R pi/var/www.html" paranccsal, és létrehoztam egy index.php fájl a/var/www/html/fájlban. Valami egyszerű, például:

~~~

Index Pi hole Light távirányító

~~~

rendben van. Aztán létrehoztam egy új mappát fények néven, hogy minden megtalálható legyen a neopixelektől. Itt létrehoztam a colour.py -t a libtérből származó strandtest.py alapján.

~~~

from neopixel import * # Néhány könyvtár importálása

rendszer importálása

def led (szalag, szín, kezdet, vége): # Hozzon létre egy függvényt a ledek hívásához

az i tartományban (kezdet, vége):

strip.setPixelColor (i, színes)

strip.show ()

BRIGHTNESS = int (sys.argv [4]) # A parancssor negyedik paramétere a fényerő lesz. (1-255)

COUNT = 50 # A LED -ek száma PIN = 12 # Az RPi -n használt pin

FREQ_HZ = 800000 # LED -jel frekvenciája hertzben (általában 800 khz)

DMA = 5 # DMA csatorna a jel előállításához (próbáld meg az 5 -öt)

INVERT = False # Igaz a jel megfordításához (NPN tranzisztor szint használata esetén)

csík = Adafruit_NeoPixel (COUNT, PIN, FREQ_HZ, DMA, INVERT, BRIGHTNESS)

strip.begin ()

R = int (sys.argv [1]) # A piros mennyisége az első paraméter

G = int (sys.argv [2]) # A zöld mennyisége a második paraméter

B = int (sys.argv [3]) # A kék mennyisége a harmadik paraméter

próbáld ki:

LED -ek (szalag, színes (R, G, B), 0, 49) #A kiválasztott színnel és fényerővel elindítja a letet.

A billentyűzet megszakítása kivételével:

szín (csík, Szín (0, 0, 0), 0, 49)

~~~

Ha sudo -val futtatja ezt a terminálon, a fényeknek a megadott színben kell világítaniuk. A www-data sudo engedély megadásához hozzáadtam a "www-data ALL = (ALL) NOPASSWD: ALL)" parancsot a sudoers fájlhoz (/etc/sudoers) közvetlenül a root felhasználó alatt.

7. lépés: Kapcsolja be a lámpákat a böngészővel

Aztán létrehoztam egy másik index.php fájlt, ezúttal a /lights -ben. ~~~

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

~~~

Amikor most meglátogatom a raspberrypi.local/lights/index.php oldalt, a ledek fehérednek. Bár ez szép kezdet, szeretem, ha legalább néhány gomb van a távirányítón.

8. lépés: A fények vezérlése a böngészőből

Létrehoztam egy felületet buttensekkel html űrlap segítségével. Nem szeretek olyan dolgokat csinálni, amelyekre nincs szükség, ezért létrehoztam egy sablonok nevű mappát a fejlécemmel, láblécemmel és a fő php kódommal. A (jelenleg) végleges /lights/index.php így néz ki:

~~~

~~~

A gombok működéséhez készítettem egy sablont BasicControl.php. Ebben megadtam azt a kódot, amelyet a gomb megnyomásakor végre kell hajtani. Mivel tetszettek a szál tesztelési animációk, ezt is belevettem. A szálpróba végtelen ideig folytatódik, ezért készítettem egy másik gombot a folyamat leállításához, amikor csak akarom.

~~~ <? 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 ['piros'])) {$ R = 255; $ G = 0; $ B = 0; exec ("sudo python colour.py $ R $ G $ B $ I"); }

else if (isset ($ _ POST ['zöld']))) {$ R = 0; $ G = 255; $ B = 0; exec ("sudo python colour.py $ R $ G $ B $ I"); }

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

else if (isset ($ _ POST ['fehér'])) {$ R = 255; $ G = 255; B $ = 255; exec ("sudo python colour.py $ R $ G $ B $ I"); }

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

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

~~~

9. lépés: Hozzon létre sablont a fejléchez és a lábléchez

Most minden működik, de nem túl kellemes nézni. A fejléc és lábléc importálása után a webhely minden eleme elérhető, csak nem stílusos.

Header.php:

~~~

Lámpák

Lampjes

Alapvető kezelőszervek

Speciális kezelőszervek

~~~

És a lábléc. Php:

~~~

~~~

10. lépés: Néhány Css, hogy egy kicsit jobban nézzen ki

Néhány Css, hogy egy kicsit jobban nézzen ki
Néhány Css, hogy egy kicsit jobban nézzen ki

Amint észrevetted, egy css fájlt használok az elrendezés szabályozására. Annak érdekében, hogy a távirányító használható legyen kisebb képernyőkön is, néhány css flexbox -ot használtam automatikus csomagolással.

~~~

/ * Stíluslap a fényvezérlő interfészhez *

* Minden oldalon érvényes */

body {background-color: f9fcfa; betűtípus-család: Arial; margin: 0; }

h1 {szín: fehér; text-align: center; }

p {font-family: verdana; betűméret: 20 képpont; }

h2 {}

/ * A fejléc */

.fej {magasság: 10%; kijelző: flex; indokolás-tartalom: flex-start; align-items: center; margó: 0 képpont; párnázás-bal: 5%; háttér:#3F51B5; align-items: center; }

. HeaderLinks {szín: fehér; }

.navbar {kijelző: flex; flex: 30%; igazolni-tartalom: tér-körül; háttérszín: #3F51B5; fehér szín; }

/ * A lábléc */

.footer {background-color: #3F51B5; magasság: 10%; text-align: center; }

/ * Index.php */

.gombok {display: flex; flex-direction: sor; flex-wrap: csomagolás; igazolni-tartalom: szóköz; magasság: 80%; elemek igazítása: flex-start; }

.buttons_index {kitöltés: 0%; szegélyszélesség: vékony; szegély stílus: szilárd; szegély színe: fekete; háttérszín: #3949ab; fehér szín; font-family: sans-serif; szélesség: 24%; magasság: 20%; }

.buttons_index: hover {padding: 0%; szegélyszélesség: vékony; szegély stílus: szilárd; szegély színe: fekete; háttérszín: #536DFE; fehér szín; font-family: sans-serif; szélesség: 24%; magasság: 20%; }

~~~

11. lépés: Köszönöm

És ez az. Minden működik nálam, és remélem, hogy neked is sikerülni fog, ha úgy döntesz, hogy kipróbálod az utasításaimat. Ha megpróbált másolni néhány kódot, akkor néhány helyet kellett hozzáadnom a feltöltéshez, így törölnie kell őket, mielőtt a kód ismét hasznos lesz.

Remélem tetszett mindent elolvasni. Ha van visszajelzésed, szívesen meghallgatom!

Ajánlott: