Turinys:

Skelbimus blokuojantys neopikseliai: 11 žingsnių
Skelbimus blokuojantys neopikseliai: 11 žingsnių

Video: Skelbimus blokuojantys neopikseliai: 11 žingsnių

Video: Skelbimus blokuojantys neopikseliai: 11 žingsnių
Video: 2022 m. Kataro futbolo pasaulio taurė, jūsų nuomone, kalbėkite ir komentuokite kartu su San ten Chan 2024, Lapkritis
Anonim
Skelbimus blokuojantys neopikseliai
Skelbimus blokuojantys neopikseliai

Norėjau sukurti paprastą svetainę kaip nuotolinę neopikselių juostelę, prijungtą prie mano „Raspberry Pi zero“, ir toliau naudoti ją blokuoti skelbimus savo tinkle naudojant „Pi-Hole“. Pirmiausia norėjau savo kambaryje pridėti keletą šviesos diodų, bet viską prijungęs supratau, kad neturiu galimybės patogiai jų valdyti. Taigi nusprendžiau sukurti paprastą svetainę su tam tikromis pagrindinėmis valdymo parinktimis, naudojant apache serverį, kurį jau nustatė Pi-hole diegimo programa. Aš suteikiau „www-data root“leidimus, o tai kelia pavojų saugumui, todėl turėtumėte padaryti žiniatinklio serverį neprieinamą išoriniam pasauliui. Tai daugiausia prasidėjo nuo mano paties dokumentų ir kažkaip tapo mano pirmuoju pamokomu dalyku;) Taigi būčiau labai dėkingas, jei galėtumėte nurodyti, ar kažkas neaišku, ar ką nors visiškai praleidau.

1 žingsnis: Naudotos medžiagos

  • „Raspberry Pi“(pradėjau nuo „Pi 2“ir tada pakeičiau į WH, „gpio“smeigtukai gali būti šiek tiek kitokie, bet kitu atveju visi modeliai tinka)

    • Jei turite RPi be įmontuoto „Wi -Fi“, „WiFi“adapteris taip pat yra naudingas.
    • Pasirinktinai - aviečių pi dėklas
  • 2 vyriškos ir moteriškos jungiamosios laidai (pavyzdžiui)
  • Neopikseliai ws2811 (aš juos naudojau)
  • 1 10 W maitinimo šaltinis RPi (tiks senas telefono įkroviklis)
  • 1 ~ 50 W maitinimo šaltinis „Neopixels“(aš naudojau tokį, bet tikriausiai užtektų mažesnio, bet jei norite daugiau šviesos diodų, turite šiek tiek vietos išplėsti).
  • Moteriško lizdo jungties kištukas (toks)

2 žingsnis: Paruoškite operacinę sistemą

Paruoškite operacinę sistemą
Paruoškite operacinę sistemą

Atsisiųskite naujausią „Rasbian“versiją iš raspberrypi.org „Lite“versija tinka šiam projektui, jei planuojate „Raspberry pi“naudoti ir kažkam kitam, galite apsvarstyti galimybę įdiegti pilną versiją su „gui“. Tada aš sudeginau vaizdą su Etcheriu. Po to, norėdamas įsitikinti, kad jis prisijungs prie mano „wifi“tinklo, pridėjau „wpa_supplicant.conf“į SD kortelės įkrovos katalogą. Failo turinys turėtų atrodyti taip:

~~~

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

tinklas = {

ssid = "SSID"

psk = "PASSWORD"

key_mgmt = WPA-PSK}

~~~

Norėdami įjungti ssh, tame pačiame kataloge sukūriau failą pavadinimu ssh (be jokio plėtinio). Tai užtikrins, kad galėsite konfigūruoti viską iš kito savo LAN kompiuterio.

3 žingsnis: Neopikselių prijungimas

Neopikselių prijungimas
Neopikselių prijungimas
Neopikselių prijungimas
Neopikselių prijungimas

Pirmiausia įkišau maitinimo šaltinį į lizdo jungtį ir įdėjau RPi į dėklą. Aš prisukau įžeminimo kabelį nuo šviesos diodų (mėlynas kabelis) ir jungiamojo laido išorinę pusę neigiamoje lizdo jungties pusėje. Kitą trumpiklio laido galą, kurį prijungiau prie „gpio“antraštės įžeminimo kaiščio, naudojau 6 kaištį, tačiau tikslios kaiščiai, kuriuos galite naudoti, priklausys nuo tikslaus jūsų naudojamo RPi modelio.

Antra, prie teigiamo lizdo jungties galo prijungiau 5v kabelį nuo šviesos diodų (raudonas kabelis). Ant mano šviesos diodo buvo jungiamoji laido jungtis ant papildomo įžeminimo kabelio ir duomenų kabelis (baltas kabelis). Aš tiesiog ignoravau papildomą įžeminimo kabelį, jis nebuvo reikalingas mano sąrankai. Duomenų kabeliu su gpio kaiščiu 12 prijungiau vyrą ir moterišką trumpiklį, ir vėl tikslus kaištis, kurį turėtumėte naudoti, priklauso nuo jūsų RPi. Tada prijungiau RPi ir pikselių maitinimo šaltinį. Šviesos diodai trumpam užsidegė, jei viskas tinkamai prijungta.

4 žingsnis: paleiskite RPi

Pradėkite RPi
Pradėkite RPi

Po to, kai RPi paleido maždaug minutę, kad įkrautų, aš pažiūrėjau IP adresą iš aviečių su nmap. Bet bet koks tinklo skaitytuvas, maršrutizatoriaus informacijos skydelis arba daugeliu atvejų tiesiog „raspberrypi.local“tiks. Su šia informacija aš prisijungiau prie RPi per ssh. Numatytasis vartotojas yra pi su slaptažodžiu avietė. Taigi tai pirmas dalykas, kurį pakeičiau naudodamas „passwd“iškart po pirmo prisijungimo. Jei norite pasiekti savo pi per ssh iš išorinio tinklo, turėtumėte pažvelgti į fail2ban ir rakto autentifikavimą. Aš asmeniškai neturiu tam tinkamo naudojimo atvejo, todėl paliksiu jį tik su slaptažodžiu.

Antra, atnaujinau programinę įrangą naudodamas „sudo apt update && sudo apt upgrade -Y“. Man taip pat reikėjo papildomos programinės įrangos, kad galėčiau sudaryti libera "sudo apt-get install scons swig git python-dev build-essential -Y". Tada aš nukopijavau puikią Jeremy Garff laisvę github `git klone https:// github.com/jgarff/rpi_ws281x.git`. Po to liberija buvo klonuota, nuėjau į katalogą rpi_ws281x, panaudojau „scons“ir įdiegiau biblioteką su „sudo python python/setup.py install“. „Python“/pavyzdžiuose yra graži demonstracija „strandtest.py“su tikrai tvarkingomis animacijomis, kurias galite pradėti nuo „sudo python python/example/strandtest.py“.

5 žingsnis: „Pi-Hole“

Pi-skylė
Pi-skylė

Norėdami sukurti viso tinklo pridėjimo blokavimą, „Pi-Hole“puikiai tinka. Jis įdiegiamas tik naudojant „sudo curl -sSL https://install.pi-hole.net | bash`. Graži dalis yra ta, kad ji taip pat sukurs žiniatinklio serverį.

Paleidę diegimo programą, norėsite prisijungti prie savo maršrutizatoriaus administratoriaus svetainės ir suteikti RPi statinį IP adresą ir nustatyti jį kaip DHCP serverį. Jei nustatėte trumpą nuomos laiką, jūsų PI skylė turėtų veikti dabar.

6 žingsnis: valdykite šviesas

Valdykite šviesas
Valdykite šviesas
Valdykite šviesas
Valdykite šviesas
Valdykite šviesas
Valdykite šviesas

Lengviausias būdas valdyti neopikselius yra naudojant mažas python programas. Tačiau naudoti ssh kiekvieną kartą, kai norite įjungti šviesą, yra nepatogu, ypač mobiliajame įrenginyje. Taigi nusprendžiau naudoti mažą svetainę kaip nuotolinio valdymo pultą. TAI SAUGUMO RIZIKA, nes daviau www-duomenų šakninį leidimą be slaptažodžio patvirtinimo. Tikriausiai neturėtumėte leisti šiai svetainei naudotis už savo tinklo ribų.

Kad būtų lengviau pasirinkti tarp PI skylės prietaisų skydelio ir šviesaus nuotolinio valdymo pulto, aš suteikiau vartotojui rašymo prieigą prie/var/www/html su „sudo chown -R pi/var/www.html“ir sukūriau index.php failą/var/www/html/. Kažkas paprasto, pavyzdžiui:

~~~

„Index Pi hole Light“nuotolinio valdymo pultas

~~~

yra gerai. Tada sukūriau naują aplanką, pavadintą „lights“, kad būtų viskas iš neopikselių. Čia sukūriau „colour.py“pagal „libtest“„strandtest.py“.

~~~

iš neopikselių importo * # Importuokite kai kurias bibliotekas

importo sistema

def led (juostelė, spalva, pradžia, pabaiga): # Sukurkite LED iškvietimo funkciją

i diapazone (pradžia, pabaiga):

strip.setPixelColor (i, spalva)

strip.show ()

BRIGHTNESS = int (sys.argv [4]) # Ketvirtasis komandinės eilutės parametras bus ryškumas. (1-255)

COUNT = 50 # LED indikatorių skaičius PIN = 12 # RPi naudojamas kaištis

FREQ_HZ = 800000 # LED signalo dažnis hercais (paprastai 800 kHz)

DMA = 5 # DMA kanalas, naudojamas signalui generuoti (pabandykite 5)

INVERT = Netiesa # Tiesa, jei norite apversti signalą (kai naudojamas NPN tranzistoriaus lygis)

juostelė = Adafruit_NeoPixel (COUNT, PIN, FREQ_HZ, DMA, INVERT, BRIGHTNESS)

strip.begin ()

R = int (sys.argv [1]) # Pirmasis parametras yra raudonos spalvos kiekis

G = int (sys.argv [2]) # Žalios spalvos kiekis yra antrasis parametras

B = int (sys.argv [3]) # Mėlynos spalvos kiekis yra trečiasis parametras

bandyti:

šviesos diodai (juostelė, spalva (R, G, B), 0, 49) #Pradės leisti su pasirinkta spalva ir ryškumu.

išskyrus klaviatūrąInterrupt:

spalva (juostelė, spalva (0, 0, 0), 0, 49)

~~~

Jei paleisite tai su sudo terminale, lemputės turėtų užsidegti nurodyta spalva. Norėdami suteikti „www-data sudo“leidimą, pridėjau „www-data ALL = (ALL) NOPASSWD: ALL“prie „sudoers“failo (/etc/sudoers) tiesiai po pagrindiniu vartotoju.

7 veiksmas: įjunkite šviesas naudodami naršyklę

Tada sukūriau kitą indeksą.php, šį kartą /šviesose. ~~~

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

~~~

Kai dabar apsilankau raspberrypi.local/lights/index.php, šviesos diodai pasidarys balti. Nors tai graži pradžia, man patinka turėti bent kai kuriuos nuotolinio valdymo pulto mygtukus.

8 veiksmas: valdykite šviesas naršyklėje

Aš sukūriau sąsają su buttenais naudodami html formą. Man nepatinka daryti nereikalingus dalykus, todėl sukūriau aplanką pavadinimu šablonai su antrašte, porašte ir pagrindiniu php kodu. Mano (kol kas) galutinis /lights/index.php atrodo taip:

~~~

~~~

Kad mygtukai veiktų, sukūriau šabloną BasicControl.php. Čia nurodžiau kodą, kuris turėtų būti įvykdytas paspaudus mygtuką. Kadangi man patiko didžiausios animacijos, įtraukiau ir tą. „Strandtest“tęsis be galo ilgai, todėl padariau dar vieną mygtuką, kad sustabdytų procesą, kai tik noriu.

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

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

else if (isset ($ _ POST ['white'])) {$ R = 255; G = 255 USD; 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'); }?>

~~~

9 veiksmas: sukurkite antraštės ir poraštės šabloną

Dabar viskas veikia, bet žiūrėti nėra labai malonu. Importavus antraštę ir poraštę, visi svetainės elementai yra prieinami, tik ne stiliaus.

Header.php:

~~~

Šviesos

Lampjes

Pagrindiniai valdikliai

Išplėstiniai valdikliai

~~~

Ir footer.php:

~~~

~~~

10 žingsnis: kai kurie CSS, kad viskas atrodytų šiek tiek geriau

Kai kurie Css, kad viskas atrodytų šiek tiek geriau
Kai kurie Css, kad viskas atrodytų šiek tiek geriau

Kaip jau pastebėjote, maketui valdyti naudoju css failą. Norėdami įsitikinti, kad mano nuotolinio valdymo pultą galima naudoti ir mažesniuose ekranuose, aš naudoju kai kurias „css flexbox“su automatiniu įvyniojimu.

~~~

/ * Šviesos valdymo sąsajos stiliaus lapas *

* Taikoma kiekviename puslapyje */

korpusas {fono spalva: f9fcfa; šriftų šeima: Arial; paraštė: 0; }

h1 {spalva: balta; text-align: centre; }

p {font-family: verdana; šrifto dydis: 20 taškų; }

h2 {}

/ * Antraštė */

. antraštė {aukštis: 10%; ekranas: lankstus; pagrįsti turinį: flex-start; align-items: centras; paraštė: 0 taškų; paminkštinimas kairėje: 5%; fonas:#3F51B5; align-items: centras; }

. HeaderLinks {spalva: balta; }

.navbar {ekranas: flex; lankstumas: 30%; pagrįsti turinį: erdvė aplink; fono spalva: #3F51B5; spalva: balta; }

/ * Poraštė */

.footer {background-color: #3F51B5; aukštis: 10%; text-align: centre; }

/ * Index.php */

.buttons {display: flex; lanksti kryptis: eilutė; flex-wrap: apvyniojimas; pagrįsti turinį: tarpas; aukštis: 80%; suderinti elementus: „flex-start“; }

.buttons_index {padding: 0%; ribos plotis: plonas; sienos stilius: tvirtas; apvado spalva: juoda; fono spalva: #3949ab; spalva: balta; šriftų šeima: sans-serif; plotis: 24%; aukštis: 20%; }

.buttons_index: užveskite žymeklį {padding: 0%; ribos plotis: plonas; sienos stilius: tvirtas; apvado spalva: juoda; fono spalva: #536DFE; spalva: balta; šriftų šeima: sans-serif; plotis: 24%; aukštis: 20%; }

~~~

11 žingsnis: ačiū

Štai ir viskas. Viskas veikia man ir tikiuosi, kad tai veiks ir jums, jei pasirinksite išbandyti mano nurodymus. Jei bandėte nukopijuoti kokį nors kodą, turėjau pridėti keletą tarpų, kad galėčiau jį įkelti čia, todėl turėsite juos ištrinti, kol kodas vėl taps naudingas.

Tikiuosi, kad jums patiko viską perskaityti. Jei turite atsiliepimų, aš norėčiau juos išgirsti!

Rekomenduojamas: