Sisällysluettelo:

Mainoksia estävät neopikselit: 11 vaihetta
Mainoksia estävät neopikselit: 11 vaihetta

Video: Mainoksia estävät neopikselit: 11 vaihetta

Video: Mainoksia estävät neopikselit: 11 vaihetta
Video: 20 лучших советов по Windows 10 2024, Marraskuu
Anonim
Mainoksia estävät neopikselit
Mainoksia estävät neopikselit

Halusin tehdä yksinkertaisen verkkosivuston etänä Raspberry Pi nollaan yhdistetylle neopikseliliuskalle ja jatkaa sen käyttöä mainosten estämiseen verkossani Pi-Holea käyttämällä. Ensin halusin vain lisätä joitain ledejä huoneeseeni, mutta kytkemällä kaiken ylös tajusin, etten voinut mitenkään hallita niitä kätevästi. Joten päätin luoda yksinkertaisen verkkosivuston, jossa on joitain perushallintavaihtoehtoja käyttämällä apache-palvelinta, jonka Pi-hole-asennusohjelma on jo määrittänyt. Myönsin www-datan pääkäyttäjän oikeudet, mikä on tietoturvariski, joten sinun on todennäköisesti asetettava verkkopalvelin ulkopuolisen ulottuville. Tämä alkoi lähinnä omasta dokumentaatiosta ja siitä tuli jotenkin ensimmäinen ohjeeni;) Joten olisin todella kiitollinen, jos voisit huomauttaa, jos jotain on epäselvää tai jos olen missannut jotain.

Vaihe 1: Käytetyt materiaalit

  • Raspberry Pi (Aloitin Pi 2: lla ja muutin sitten WH: ksi, gpio -nastat saattavat olla hieman erilaisia, mutta muuten jokainen malli on kunnossa)

    • Jos sinulla on RPi ilman sisäänrakennettua wifi -yhteyttä, myös wifi -sovitin on hyödyllinen.
    • Lisävarusteena kotelo vadelmalle pi
  • 2 uros-naarasliitinjohtoa (esimerkiksi)
  • Neopikselit ws2811 (käytin näitä)
  • 1 10 W: n virtalähde RPi: lle (vanha puhelinlaturi kelpaa)
  • 1 ~ 50 W: n virtalähde Neopixeleille (käytin tällaista, mutta todennäköisesti pienempi riittää, mutta jos haluat enemmän led -valoja, sinulla on tilaa laajentaa.)
  • Naarasliittimen pistoke (kuten tämä)

Vaihe 2: Valmistele käyttöjärjestelmä

Valmistele käyttöjärjestelmä
Valmistele käyttöjärjestelmä

Lataa uusin Rasbian -versio osoitteesta raspberrypi.org Lite -versio sopii tähän projektiin. Jos aiot käyttää vadelmapiä johonkin muuhun, voit harkita täysversion asentamista gui -ohjelmaan. Sitten poltin kuvan Etcherin kanssa. Sen jälkeen varmistaakseni, että se muodostaa yhteyden wifi -verkkoon, lisäsin wpa_supplicant.conf SD -kortin käynnistyshakemistoon. Tiedoston sisällön pitäisi näyttää tältä:

~~~

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

verkko = {

ssid = "SSID"

psk = "SALASANA"

key_mgmt = WPA-PSK}

~~~

Voit ottaa ssh: n käyttöön luomalla tiedoston ssh (ilman laajennusta) samaan hakemistoon. Tämä varmistaa, että pystyt määrittämään kaiken langattoman verkon toiselta tietokoneelta.

Vaihe 3: Yhdistä neopikselit

Neopikselien yhdistäminen
Neopikselien yhdistäminen
Neopikselien yhdistäminen
Neopikselien yhdistäminen

Kytkin ensin virtalähteen naarasliittimeen ja laitoin RPi -kotelon. Ruuvasin maadoituskaapelin ledien (sininen kaapeli) ja hyppyjohtimen urospuolen liittimen liittimen negatiiviseen puoleen. Hyppyjohdon toinen pää, jonka liitin gpio -otsikon maadoitusnastaan, käytin nasta 6, mutta tarkat nastat, joita voit käyttää, riippuvat käyttämästäsi RPi -mallista.

Toiseksi liitin liittimen positiiviseen päähän 5v -kaapelin ledeistä (punainen kaapeli). Minun ledissäni oli hyppyjohtimen liitin lisämaadoituskaapelissa ja datakaapeli (valkoinen kaapeli). Ohitin vain ylimääräisen maadoituskaapelin, se oli tarpeeton asennukselleni. Liitin datakaapelissa uros -naarashyppyjohdon gpio -nastalla 12, jälleen käytettävä tarkka nasta riippuu RPi: stä. Sitten kytkin virtalähteeni RPi: lle ja pikselille. Ledit syttyvät hetkeksi, jos kaikki on kytketty oikein.

Vaihe 4: Käynnistä RPi

Käynnistä RPi
Käynnistä RPi

Sen jälkeen kun RPi: lle annettiin minuutti käynnistystä, etsin IP -osoitteen vadelmasta nmapin avulla. Mutta mikä tahansa verkkoskanneri, reitittimen tietopaneeli tai useimmissa tapauksissa vain "raspberrypi.local" tekee. Näillä tiedoilla muodostin yhteyden RPi: hen ssh: n kautta. Oletuskäyttäjä on pi salasanalla vadelma. Joten tämä on ensimmäinen asia, jonka muutin `passwd' -toiminnolla heti ensimmäisen kirjautumisen jälkeen. Jos haluat käyttää pi: täsi ssh: n kautta paikallisen verkkosi ulkopuolelta, sinun on tutkittava fail2ban ja avaintodennus. Minulla ei henkilökohtaisesti ole käyttötarkoitusta, joten jätän sen vain salasanalla.

Toiseksi päivitin ohjelmiston käyttämällä "sudo apt update && sudo apt upgrade -Y". Tarvitsin myös lisäohjelmiston kootakseen libery "sudo apt-get install scons swig git python-dev build-essential -Y". Sitten kopioin Jeremy Garffin erinomaisen liberyn github `git clone https:// github.com/jgarff/rpi_ws281x.git`. Tämän jälkeen kirjasto kloonattiin, menin rpi_ws281x -hakemistoon, käytin sconsia ja asensin sitten kirjaston "sudo python python/setup.py install". Pythonissa/esimerkissä on mukava demo "strandtest.py", jossa on todella siistit animaatiot ja jonka voit aloittaa sanalla `sudo python python/example/strandtest.py`.

Vaihe 5: Pi-Hole

Pi-Hole
Pi-Hole

Pi-Hole on täydellinen verkon laajuisen lisäyksen estämiseksi. Se asennetaan vain `` sudo curl -sSL https://install.pi-hole.net | bash`. Kiva osa on, että se perustaa myös verkkopalvelimen.

Asentajan suorittamisen jälkeen haluat kirjautua reitittimesi järjestelmänvalvojan sivustoon ja antaa RPi: lle staattisen IP-osoitteen ja määrittää sen DHCP-palvelimeksi. Jos olet asettanut lyhyen vuokra-ajan, PI-reiän pitäisi toimia nyt.

Vaihe 6: Ohjaa valoja

Ohjaa valoja
Ohjaa valoja
Ohjaa valoja
Ohjaa valoja
Ohjaa valoja
Ohjaa valoja

Helpoin tapa hallita neopikseleitä on pienillä python -ohjelmilla. Mutta ssh: n käyttö aina, kun haluat sytyttää valot, on hankalaa, etenkin mobiililaitteella. Joten päätin käyttää pientä verkkosivustoa kauko -ohjaimena. TÄMÄ ON TURVARISKI, koska annoin www-datan pääkäyttäjän oikeuden ilman salasanan vahvistusta. Sinun ei todennäköisesti pitäisi asettaa tätä sivustoa saataville lan -verkon ulkopuolella.

Jotta PI -reiän kojelaudan ja kevyen kaukosäätimen välillä olisi helppo valita, annoin käyttäjälle pi kirjoittaa kirjoitusoikeuden kohteeseen/var/www/html komennolla "sudo chown -R pi/var/www.html" ja loin index.php -tiedosto hakemistossa/var/www/html/. Jotain yksinkertaista, kuten:

~~~

Index Pi -reiän valokaukosäädin

~~~

on hyvin. Sitten loin uuden kansion nimeltä lights, jotta kaikki neopikselit koostuisivat. Täällä loin colour.py -ohjelman libtesta saadun strandtest.py -tiedoston perusteella.

~~~

neopixel -tuonnista * # Tuo joitain kirjastoja

tuontijärjestelmä

def led (nauha, väri, alku, loppu): # Luo toiminto ledien kutsumiseen

i alueella (alku, loppu):

strip.setPixelColor (i, väri)

strip.show ()

BRIGHTNESS = int (sys.argv [4]) # Komentorivin neljäs parametri on kirkkaus. (1-255)

COUNT = 50 # LEDien määrä PIN = 12 # RPi: ssä käytetty nasta

FREQ_HZ = 800000 # LED -signaalin taajuus hertseinä (yleensä 800 kHz)

DMA = 5 # DMA -kanava, jota käytetään signaalin tuottamiseen (kokeile 5)

INVERT = False # Tosi, jos haluat kääntää signaalin (käytettäessä NPN -transistoritasoa)

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

strip.begin ()

R = int (sys.argv [1]) # Punainen määrä on ensimmäinen parametri

G = int (sys.argv [2]) # Vihreän määrä on toinen parametri

B = int (sys.argv [3]) # Sinisen määrä on kolmas parametri

yrittää:

LEDit (nauha, väri (R, G, B), 0, 49) #Aloittaa letit valitsemallasi värillä ja kirkkaudella.

paitsi näppäimistö Keskeytys:

väri (nauha, väri (0, 0, 0), 0, 49)

~~~

Jos suoritat tämän päätelaitteessa sudolla, valojen pitäisi syttyä määritetyllä värillä. Antaakseni www-data sudo -oikeuden lisäsin `www-data ALL = (ALL) NOPASSWD: ALL)` sudoers-tiedostoon (/etc/sudoers) suoraan pääkäyttäjän alle.

Vaihe 7: Sytytä valot selaimella

Sitten loin toisen indeksin.php, tällä kertaa /valot. ~~~

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

~~~

Kun käyn nyt osoitteessa raspberrypi.local/lights/index.php, ledit muuttuvat valkoisiksi. Vaikka tämä on mukava alku, pidän siitä, että minulla on ainakin joitain painikkeita kaukosäätimessä.

Vaihe 8: Ohjaa valoja selaimesta

Tein käyttöliittymän buttensilla html -lomakkeella. En pidä tarpeettomien asioiden tekemisestä, joten loin kansion nimeltä malleja otsikolla, alatunnisteella ja tärkeimmällä php -koodilla. (Toistaiseksi) final /lights/index.php näyttää tältä:

~~~

~~~

Jotta painikkeet toimisivat, tein mallin BasicControl.php. Tässä määritin koodin, joka tulisi suorittaa, kun painiketta painetaan. Koska pidin strandtest -animaatioista, sisällytin myös sen. Strandtesti jatkuu loputtoman kauan, joten tein toisen painikkeen prosessin pysäyttämiseksi aina kun haluan.

~~~ <? php

I = 100 dollaria;

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

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

muuten jos (isset ($ _ POST ['vihreä']))) {$ R = 0; $ G = 255; $ B = 0; exec ("sudo python colour.py $ R $ G $ B $ I"); }

muuten jos (isset ($ _ POST ['sininen'])) {$ R = 0; $ G = 0; B = 255 dollaria; exec ("sudo python colour.py $ R $ G $ B $ I"); }

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

~~~

Vaihe 9: Luo malli ylä- ja alatunnisteelle

Nyt kaikki toimii, mutta ei ole kovin miellyttävää katsella. Ylätunnisteen ja alatunnisteen tuonnin jälkeen kaikki sivuston elementit ovat käytettävissä, mutta niitä ei ole muotoiltu.

Header.php:

~~~

Valot

Lampjes

Perusohjaimet

Lisäasetukset

~~~

Ja footer.php:

~~~

~~~

Vaihe 10: Jotkut CSS -tiedostot, jotta kaikki näyttää hieman paremmalta

Jotkut Css, jotta kaikki näyttää hieman paremmalta
Jotkut Css, jotta kaikki näyttää hieman paremmalta

Kuten olet ehkä huomannut, käytän asettelua css -tiedoston avulla. Varmistaakseni, että kaukosäädintäni voidaan käyttää myös pienemmillä näytöillä, käytin joitain css -flexboxeja, joissa on automaattinen kääre.

~~~

/ * Valonohjausliittymän tyylitaulukko *

* Koskee jokaista sivua */

runko {taustaväri: f9fcfa; fonttiperhe: Arial; marginaali: 0; }

h1 {väri: valkoinen; text-align: center; }

p {font-family: verdana; fontin koko: 20px; }

h2 {}

/ * Otsikko */

.otsikko {korkeus: 10%; näyttö: flex; perustella sisältö: flex-start; kohdista kohdat: keskelle; marginaali: 0px; pehmustus vasen: 5%; tausta:#3F51B5; kohdista kohdat: keskelle; }

. HeaderLinks {väri: valkoinen; }

.navbar {näyttö: flex; joustavuus: 30%; perustella sisältö: tilaa ympärillä; taustaväri: #3F51B5; väri valkoinen; }

/ * Alatunniste */

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

/ * Index.php */

.painikkeet {näyttö: flex; taipuisa suunta: rivi; flex-wrap: kääri; perustella sisältö: väli-väli; korkeus: 80%; kohdista kohdat: flex-start; }

.buttons_index {täyte: 0%; reunan leveys: ohut; reunatyyli: vankka; reunusväri: musta; taustaväri: #3949ab; väri valkoinen; fonttiperhe: sans-serif; leveys: 24%; korkeus: 20%; }

.buttons_index: hover {padding: 0%; reunan leveys: ohut; reunatyyli: vankka; reunusväri: musta; taustaväri: #536DFE; väri valkoinen; fonttiperhe: sans-serif; leveys: 24%; korkeus: 20%; }

~~~

Vaihe 11: Kiitos

Ja siinä kaikki. Kaikki toimii minulle ja toivon, että se toimii myös sinulle, jos valitset kokeilla ohjeistustani. Jos yritit kopioida jotain koodia, minun täytyi lisätä muutama välilyönti sen lataamista varten tänne, joten sinun on poistettava ne ennen kuin koodista tulee jälleen hyötyä.

Toivottavasti nautit kaiken lukemisesta. Jos sinulla on palautetta, kuulen sen mielelläni!

Suositeltava: