Satura rādītājs:

Reklāmu bloķējoši neopikseļi: 11 soļi
Reklāmu bloķējoši neopikseļi: 11 soļi

Video: Reklāmu bloķējoši neopikseļi: 11 soļi

Video: Reklāmu bloķējoši neopikseļi: 11 soļi
Video: 3rd Year Designaversary Celebration 2024, Decembris
Anonim
Reklāmu bloķējoši neopikseļi
Reklāmu bloķējoši neopikseļi

Es gribēju izveidot vienkāršu vietni kā attālinātu neopikseļu joslai, kas savienota ar manu Raspberry Pi nulli, un turpināt to izmantot, lai bloķētu reklāmas tīklā, izmantojot Pi-Hole. Vispirms es vienkārši gribēju savā istabā pievienot dažas gaismas diodes, bet, visu sakārtojot, sapratu, ka man nav iespēju tās ērti kontrolēt. Tāpēc es nolēmu izveidot vienkāršu vietni ar dažām pamata vadības iespējām, izmantojot apache serveri, kuru Pi-hole instalētājs jau ir iestatījis. Es piešķīru www-datu saknes atļaujas, kas ir drošības risks, tāpēc jums vajadzētu padarīt tīmekļa serveri pieejamu ārpasaulei. Tas sākās galvenokārt manas dokumentācijas dēļ un pēc tam kļuva par manu pirmo pamācāmo;) Tāpēc es būtu ļoti pateicīgs, ja jūs varētu norādīt, ja kaut kas ir neskaidrs vai kaut ko esmu pilnīgi palaidis garām.

1. darbība: izmantotie materiāli

  • Raspberry Pi (es sāku ar Pi 2 un pēc tam nomainīju uz WH, gpio tapas var būt nedaudz atšķirīgas, bet citādi katrs modelis ir kārtībā)

    • Ja jums ir RPi bez iebūvēta wifi, ir noderīgs arī wifi adapteris.
    • Pēc izvēles aveņu pi
  • 2 vīriešu un sieviešu džemperu vadi (piemēram)
  • Neopikseļi ws2811 (es tos izmantoju)
  • 1 10 W barošanas avots RPi (derēs vecs tālruņa lādētājs)
  • 1 ~ 50 W barošanas avots neopikseliem (es izmantoju tādu kā šis, bet, iespējams, pietiktu ar mazāku, bet, ja vēlaties vairāk gaismas diodes, jums ir vieta, kur izvērsties.)
  • Sievietes ligzdas savienotāja spraudnis (līdzīgs šim)

2. darbība: sagatavojiet operētājsistēmu

Sagatavojiet operētājsistēmu
Sagatavojiet operētājsistēmu

Lejupielādējiet jaunāko versiju Rasbian no raspberrypi.org Vienkāršā versija šim projektam ir piemērota, ja plānojat izmantot aveņu pi kādam citam, jūs varētu arī apsvērt pilnas versijas instalēšanu ar gui. Tad es sadedzināju attēlu ar Etcher. Pēc tam, lai pārliecinātos, ka tas izveidos savienojumu ar manu wifi tīklu, es pievienoju wpa_supplicant.conf SD kartes sāknēšanas direktorijā. Faila saturam vajadzētu izskatīties šādi:

~~~

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

tīkls = {

ssid = "SSID"

psk = "PAROLE"

key_mgmt = WPA-PSK}

~~~

Lai iespējotu ssh, tajā pašā direktorijā izveidoju failu ar nosaukumu ssh (bez paplašinājuma). Tas nodrošinās, ka varēsit konfigurēt visu, izmantojot citu LAN datoru.

3. solis: Neopikseļu pievienošana

Neopikseļu savienošana
Neopikseļu savienošana
Neopikseļu savienošana
Neopikseļu savienošana

Vispirms es pievienoju strāvas padevi sieviešu ligzdas savienotājam un ievietoju RPi korpusā. Es pieskrūvēju zemējuma kabeli no gaismas diodēm (zilo kabeli) un džempera stieples vīriešu pusi domkrata savienotāja negatīvajā pusē. Otrs džempera stieples gals, kuru es savienoju ar gpio galvenes zemējuma tapu, es izmantoju 6. tapu, bet precīzās tapas, kuras varat izmantot, būs atkarīgas no jūsu izmantotā precīzā RPi modeļa.

Otrkārt, ligzdas savienotāja pozitīvajā galā es pievienoju 5v kabeli no gaismas diodēm (sarkanais kabelis). Manā vadībā tie bija savienojuma stieples savienotājs uz papildu zemējuma kabeļa un datu kabelis (baltais kabelis). Es vienkārši ignorēju papildu zemējuma kabeli, tas nebija vajadzīgs manai iestatīšanai. Ar datu kabeli es savienoju tēviņu ar sietiņu ar vadu ar gpio tapu 12, atkal precīza tapa, kas jāizmanto, ir atkarīga no jūsu RPi. Tad es pievienoju barošanas avotu RPi un pikseļiem. Gaismas diodes uz īsu brīdi iedegās, ja viss ir pareizi savienots.

4. solis: sāciet RPi

Sāciet RPi
Sāciet RPi

Pēc tam, kad RPi bija iesācis apmēram minūti, lai sāktu darbību, es paskatījos no aveņu IP adresi ar nmap. Bet derēs jebkurš tīkla skeneris, maršrutētāja informācijas panelis vai vairumā gadījumu vienkārši “raspberrypi.local”. Ar šo informāciju es izveidoju savienojumu ar RPi, izmantojot ssh. Noklusējuma lietotājs ir pi ar paroli aveņu. Tā ir pirmā lieta, ko es mainīju, izmantojot `passwd` tieši pēc pirmās pieteikšanās. Ja vēlaties piekļūt savam pi caur ssh no vietējā tīkla, jums vajadzētu izpētīt fail2ban un atslēgu autentifikāciju. Man personīgi tam nav lietošanas gadījuma, tāpēc atstāšu to tikai ar paroli.

Otrkārt, es atjaunināju programmatūru, izmantojot "sudo apt update && sudo apt upgrade -Y". Man bija nepieciešama arī papildu programmatūra, lai apkopotu libery `sudo apt-get install scons swig git python-dev build-essential -Y`. Tad es nokopēju izcilo Džeremija Gārfa krāšņumu vietnē github `git clone https:// github.com/jgarff/rpi_ws281x.git`. Pēc tam bibliotēka tika klonēta, es devos uz direktoriju rpi_ws281x, izmantoju scons un pēc tam instalēju bibliotēku ar "sudo python python/setup.py install". Vietnē python/piemēri ir jauka demonstrācija "strandtest.py" ar patiešām glītām animācijām, kuras varat sākt ar `sudo python python/example/strandtest.py`.

5. solis: Pi-Hole

Pi-Hole
Pi-Hole

Lai izveidotu tīkla pievienošanas bloķētāju, Pi-Hole ir ideāls. Tas tiek instalēts tikai ar sudo curl -sSL https://install.pi-hole.net | bash`. Jauka daļa ir tā, ka tiks izveidots arī tīmekļa serveris.

Pēc instalētāja palaišanas vēlaties pieteikties maršrutētāja administratora vietnē un piešķirt RPi statisku IP adresi un iestatīt to kā DHCP serveri. Ja esat iestatījis zemu nomas laiku, jūsu PI caurumam vajadzētu darboties tagad.

6. darbība: kontrolējiet gaismas

Kontrolējiet gaismas
Kontrolējiet gaismas
Kontrolējiet gaismas
Kontrolējiet gaismas
Kontrolējiet gaismas
Kontrolējiet gaismas

Vienkāršākais veids, kā kontrolēt neopikseļus, ir ar mazām python programmām. Taču lietot ssh katru reizi, kad vēlaties ieslēgt apgaismojumu, ir neērti, īpaši mobilajā ierīcē. Tāpēc es nolēmu izmantot nelielu vietni kā tālvadības pulti. ŠIS IR DROŠĪBAS RISKS, jo es devu www-datu saknes atļauju bez paroles pārbaudes. Jums, iespējams, nevajadzētu padarīt šo vietni pieejamu ārpus jūsu LAN.

Lai būtu vieglāk izvēlēties starp PI -cauruma informācijas paneli un gaismas tālvadības pulti, es piešķīru lietotājam pi rakstīšanas piekļuvi/var/www/html ar "sudo chown -R pi/var/www.html", un es izveidoju index.php failu mapē/var/www/html/. Kaut kas vienkāršs, piemēram:

~~~

Index Pi hole Light tālvadības pults

~~~

ir labi. Tad es izveidoju jaunu mapi ar nosaukumu gaismas, lai viss no neopikseliem būtu kopā. Šeit es izveidoju colour.py, pamatojoties uz bibliotēkas strandtest.py.

~~~

no neopikseļu importēšanas * # Importējiet dažas bibliotēkas

importēt sistēmu

def led (sloksne, krāsa, sākums, beigas): # Izveidojiet funkciju LED izsaukšanai

i diapazonā (sākums, beigas):

strip.setPixelColor (i, krāsa)

strip.show ()

BRIGHTNESS = int (sys.argv [4]) # Ceturtais komandrindas parametrs būs spilgtums. (1-255)

COUNT = 50 # LED indikatoru skaits PIN = 12 # RPi izmantotā tapa

FREQ_HZ = 800000 # LED signāla frekvence hercos (parasti 800 khz)

DMA = 5 # DMA kanāls, ko izmantot signāla ģenerēšanai (mēģiniet 5)

INVERT = False # Pareizi, lai apgrieztu signālu (ja tiek izmantots NPN tranzistora līmenis

sloksne = Adafruit_NeoPixel (COUNT, PIN, FREQ_HZ, DMA, INVERT, BRIGHTNESS)

strip.begin ()

R = int (sys.argv [1]) # Sarkanās krāsas daudzums ir pirmais parametrs

G = int (sys.argv [2]) # Zaļās krāsas daudzums ir otrais parametrs

B = int (sys.argv [3]) # Zilās krāsas daudzums ir trešais parametrs

pamēģini:

gaismas diodes (sloksne, krāsa (R, G, B), 0, 49) #Sāks izlaidumus ar izvēlēto krāsu un spilgtumu.

izņemot tastatūruPārtraukums:

krāsa (sloksne, krāsa (0, 0, 0), 0, 49)

~~~

Ja to palaižat ar sudo terminālī, gaismām vajadzētu iedegties norādītajā krāsā. Lai piešķirtu www-data sudo atļauju, es pievienoju "www-data ALL = (ALL) NOPASSWD: ALL)" sudoers failam (/etc/sudoers) tieši zem saknes lietotāja.

7. solis: ieslēdziet apgaismojumu, izmantojot pārlūkprogrammu

Tad es izveidoju citu index.php, šoreiz /gaismas. ~~~

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

~~~

Kad es tagad apmeklēju vietni raspberrypi.local/lights/index.php, gaismas diodes kļūs baltas. Lai gan šis ir jauks sākums, man patīk, ja tālvadības pultī ir vismaz dažas pogas.

8. darbība: kontrolējiet apgaismojumu no pārlūka

Es izveidoju saskarni ar buttens, izmantojot html formu. Man nepatīk darīt lietas, kas nav vajadzīgas, tāpēc es izveidoju mapi ar nosaukumu veidnes ar savu galveni, kājeni un galveno php kodu. Mans (pagaidām) galīgais /lights/index.php izskatās šādi:

~~~

~~~

Lai pogas darbotos, es izveidoju veidni BasicControl.php. Šeit es norādīju kodu, kas jāizpilda, nospiežot pogu. Tā kā man patika visizplatītākās animācijas, es iekļāvu arī to. Strukturālais tests turpināsies bezgalīgi ilgi, tāpēc es izveidoju vēl vienu pogu, lai apturētu procesu, kad vien vēlos.

~~~ <? 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"); }

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

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

else if (isset ($ _ POST ['balts']))) {$ 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 ['reboot']))) {shell_exec ('sudo reboot now'); }?>

~~~

9. darbība: veidnes izveidošana galvenei un kājenei

Tagad tas viss darbojas, bet tas nav pārāk patīkami skatīties. Pēc galvenes un kājenes importēšanas visi vietnes elementi ir pieejami, tikai nav veidoti.

Header.php:

~~~

Gaismas

Lampjes

Pamata vadīklas

Uzlabotas vadīklas

~~~

Un kājene.php:

~~~

~~~

10. solis: daži Css, lai viss izskatītos mazliet labāk

Daži Css, lai viss izskatītos mazliet labāk
Daži Css, lai viss izskatītos mazliet labāk

Kā jūs, iespējams, pamanījāt, es izmantoju css failu, lai kontrolētu izkārtojumu. Lai pārliecinātos, ka manu tālvadības pulti var izmantot arī mazākos ekrānos, es izmantoju dažas css flexboxes ar automātisko ietīšanu.

~~~

/ * Gaismas vadības saskarnes stila lapa *

* Attiecas uz katru lapu */

pamatteksts {fona krāsa: f9fcfa; fontu saime: Arial; rezerve: 0; }

h1 {krāsa: balta; text-align: center; }

p {font-family: verdana; fonta izmērs: 20 pikseļi; }

h2 {}

/ * Galvene */

. header {augstums: 10%; displejs: elastīgs; attaisnot saturu: flex-start; align-items: centrs; mala: 0 pikseļi; polsterējums pa kreisi: 5%; fons:#3F51B5; align-items: centrs; }

. HeaderLinks {krāsa: balta; }

.navbar {displejs: flex; elastība: 30%; attaisnot saturu: telpa-apkārt; fona krāsa: #3F51B5; krāsa: balta; }

/ * Kājene */

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

/ * Index.php */

.pogas {displejs: flex; elastīgs virziens: rinda; flex-wrap: ietīšana; attaisnot saturu: atstarpe starp; augstums: 80%; vienumu izlīdzināšana: flex-start; }

.buttons_index {polsterējums: 0%; robežas platums: plāns; robežas stils: ciets; apmales krāsa: melna; fona krāsa: #3949ab; krāsa: balta; fontu saime: sans-serif; platums: 24%; augstums: 20%; }

.buttons_index: virziet kursoru {padding: 0%; robežas platums: plāns; robežas stils: ciets; apmales krāsa: melna; fona krāsa: #536DFE; krāsa: balta; fontu saime: sans-serif; platums: 24%; augstums: 20%; }

~~~

11. solis: Paldies

Un tas arī viss. Viss darbojas man un es ceru, ka tas derēs arī jums, ja izvēlaties izmēģināt manu pamācību. Ja jūs mēģinājāt nokopēt kādu kodu, man bija jāpievieno dažas atstarpes, lai to augšupielādētu šeit, tāpēc jums tie būs jāizdzēš, pirms kods atkal kļūst noderīgs.

Es ceru, ka jums patika lasīt visu. Ja jums ir atsauksmes, es labprāt to dzirdētu!

Ieteicams: