Tartalomjegyzék:
- 1. lépés: Használt anyagok
- 2. lépés: Készítse elő az operációs rendszert
- 3. lépés: A neopixelek csatlakoztatása
- 4. lépés: Indítsa el az RPi -t
- 5. lépés: Pi-Hole
- 6. lépés: A fények vezérlése
- 7. lépés: Kapcsolja be a lámpákat a böngészővel
- 8. lépés: A fények vezérlése a böngészőből
- 9. lépés: Hozzon létre sablont a fejléchez és a lábléchez
- 10. lépés: Néhány Css, hogy egy kicsit jobban nézzen ki
- 11. lépés: Köszönöm
Videó: Hirdetésblokkoló neopixelek: 11 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
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
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
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
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
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
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
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:
LED óra Neopixelek használatával: 4 lépés (képekkel)
LED -óra neopixelek használatával: Üdvözöljük az oktatásomban, hogyan készítsek LED -órát 60 neopixel segítségével. A csatolt 3 PDF -fájl egyike az óra szegmenseihez, egy másik az alaphoz, végül pedig egy sablon a ragasztáshoz a szakaszok együtt. Szóval comhoz
PiHole hirdetésblokkoló 3,5 hüvelykes kijelzővel: 8 lépés (képekkel)
PiHole hirdetésblokkoló 3,5 hüvelykes kijelzővel: Üdvözöljük az oktatóanyagomban arról, hogyan hozhatok létre igazán fantasztikus hirdetésblokkolót az egész hálózat számára! A Raspberry Pi a Pi-Hole és PADD néven ismert szoftvert futtatja a hirdetések blokkolására és statisztikai adatok, például a Pi- A Hole IP -címe és a hirdetések mennyisége
Okostelefonnal vezérelt neopixelek (LED csík) Blynk alkalmazással WiFi felett: 6 lépés
Okostelefonnal vezérelt neopixelek (LED-csík) Blynk alkalmazással WiFi-n keresztül: Ezt a projektet azután hoztam létre, hogy egy baráti házban okostelefonnal vezérelt neopixelek inspiráltak, de a boltban vásárolták. Arra gondoltam, hogy "milyen nehéz lehet saját kezűleg elkészíteni, sokkal olcsóbb is lesz!" "Így van. Megjegyzés: Feltételezem, hogy te
Játssz a tűzzel a WIFI felett! ESP8266 és neopixelek: 8 lépés
Játssz a tűzzel a WIFI felett! ESP8266 és neopixelek: Hűvös tűzszimulációs hatást hozhat létre a Wi-Fi vezeték nélküli vezérléssel. Egy mobilalkalmazás (Android okostelefonokhoz), jó megjelenéssel, telepítésre kész, hogy játsszon a teremtményével! A láng szabályozására az Arduino és az ESP8266 alkalmazását is használjuk. A
Bináris óra neopixelek használatával: 6 lépés (képekkel)
Bináris óra neopixelek használatával: Sziasztok, szeretek mindent, ami a LED -hez kapcsolódik, és szeretem is használni őket különböző érdekes módokon. Igen, tudom, hogy a bináris órát már többször megcsinálták itt, és mindegyik kiváló példa arra, hogyan kell készítse el saját óráját. Nagyon szeretem