Mundarija:

Reklama blokirovka qiluvchi neopiksellar: 11 qadam
Reklama blokirovka qiluvchi neopiksellar: 11 qadam

Video: Reklama blokirovka qiluvchi neopiksellar: 11 qadam

Video: Reklama blokirovka qiluvchi neopiksellar: 11 qadam
Video: - TELEFONDA REKLAMALARNI O'CHIRISH | Телефонда рекламаларни бутунлай учириш 2021 2024, Noyabr
Anonim
Reklama blokirovka qiluvchi neopiksellar
Reklama blokirovka qiluvchi neopiksellar

Men oddiy Raspberry Pi nolga ulangan neopixellar uchun masofadan turib oddiy veb-sayt yaratmoqchiman va undan Pi-Hole yordamida tarmoqdagi reklamalarni blokirovka qilishda davom etmoqchi edim. Birinchidan, men o'z xonamga bir nechta chiroq qo'shishni xohlardim, lekin hamma narsani elektr tarmog'iga ulab, men ularni boshqarish uchun hech qanday imkoniyat yo'qligini tushundim. Shunday qilib, men allaqachon o'rnatilgan Pi-hole o'rnatuvchisi apache serveridan foydalanib, asosiy boshqaruv variantlari bo'lgan oddiy veb-sayt yaratishga qaror qildim. Men www-ma'lumotlar ildiziga ruxsat berdim, bu xavfsizlik xavfi, shuning uchun siz veb-serverni tashqi dunyo uchun mavjud emas deb hisoblashingiz kerak. Bu asosan o'z hujjatlarim uchun boshlangan va qandaydir tarzda mening birinchi ko'rsatmamga aylangan;) Shunday qilib, agar biror narsa tushunarsiz bo'lsa yoki biror narsani butunlay o'tkazib yuborgan bo'lsam, ko'rsata olasizmi?

1 -qadam: Ishlatilgan materiallar

  • Raspberry Pi (men Pi 2 -da boshladim va keyin WH ga o'tdim, gpio pinlari biroz boshqacha bo'lishi mumkin, aks holda har bir model yaxshi)

    • Agar sizda Wi -Fi ulanmagan RPi bo'lsa, wifi adapteri ham foydalidir.
    • Ixtiyoriy ravishda malina pi uchun sumka
  • 2 erkak-ayol o'tish simlari (masalan)
  • Neopixels ws2811 (men buni ishlatganman)
  • RPi uchun 10 Vt quvvat manbai (eski telefon zaryadlovchisi shunday qiladi)
  • Neopixellar uchun 1 ~ 50 Vt quvvat manbai (men shunday ishlatganman, lekin kichikroq bo'lishi etarli bo'lardi, lekin agar siz ko'proq LEDni xohlasangiz, sizda bo'sh joy qoladi.)
  • Ayol uyasi ulagichi (shunga o'xshash)

2 -qadam: Operatsion tizimni tayyorlang

Operatsion tizimni tayyorlang
Operatsion tizimni tayyorlang

Rasbian -ning so'nggi versiyasini raspberrypi.org -dan yuklab oling. Agar siz malina pi -ni boshqa narsaga ishlatmoqchi bo'lsangiz, bu loyiha uchun oddiy versiya juda mos keladi. Keyin tasvirni Etcher bilan yoqib yubordim. Shundan so'ng, u mening Wi -Fi tarmog'imga ulanishiga ishonch hosil qilish uchun SD kartaning yuklash katalogiga wpa_supplicant.conf qo'shdim. Fayl mazmuni quyidagicha bo'lishi kerak:

~~~

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

tarmoq = {

ssid = "SSID"

psk = "parol"

key_mgmt = WPA-PSK}

~~~

Ssh -ni yoqish uchun men o'sha katalogda ssh (kengaytmasiz) deb nomlangan fayl yaratdim. Bu sizning laningizdagi boshqa kompyuterdan hamma narsani sozlash imkoniyatini beradi.

3 -qadam: Neopiksellarni ulash

Neopiksellarni ulash
Neopiksellarni ulash
Neopiksellarni ulash
Neopiksellarni ulash

Birinchidan, quvvat manbaini ayol uyasi ulagichiga uladim va RPi -ni qutiga solib qo'ydim. Men topraklama kabelini LEDlardan (ko'k kabel) va ulagichning salbiy tomonidagi o'tish simining erkak tomonini burab qo'ydim. O'tkazgich simining ikkinchi uchi, men gpio sarlavhasidagi topraklama piniga ulanganman, men 6 -pinni ishlatardim, lekin siz aniq ishlata oladigan pinlar siz foydalanadigan RPi modeliga bog'liq bo'ladi.

Ikkinchidan, men ulagichning musbat uchiga 5V kabelni svetodioddan (qizil kabel) uladim. Mening ustunimda qo'shimcha topraklama kabeli va ma'lumot kabeli (oq kabel) ustidagi simli ulagich bor edi. Men qo'shimcha topraklama kabelini e'tiborsiz qoldirdim, bu mening sozlashim uchun kerak emas edi. Ma'lumot kabelida men erkak gpio pin 12 bilan erkakni ayolga o'tkazgich simini uladim, yana siz ishlatadigan aniq pin sizning RPi -ga bog'liq. Keyin men RPi va piksellar uchun quvvat manbaini uladim. Ledlar, agar hamma narsa to'g'ri simlangan bo'lsa, qisqa vaqt ichida yonib ketdi.

4 -qadam: RPi -ni ishga tushiring

RPi -ni ishga tushiring
RPi -ni ishga tushiring

Keyin RPi -ni ishga tushirish uchun bir daqiqa vaqt berib, nmap bilan malinadan IP -manzilni qidirib topdim. Lekin har qanday tarmoq skaneri, yo'riqnoma ma'lumot paneli yoki ko'p hollarda "raspberrypi.local" bajaradi. Bu ma'lumot bilan men ssh orqali RPi bilan bog'landim. Standart foydalanuvchi - malina parol bilan pi. Shunday qilib, men birinchi marta kirgandan so'ng, "passwd" yordamida o'zgartirgan birinchi narsa. Agar siz mahalliy tarmog'ingizdan tashqarida ssh orqali pi -ga kirishni xohlasangiz, fail2ban va kalit autentifikatsiyasini ko'rib chiqishingiz kerak. Shaxsan menda bunday foydalanish holati yo'q, shuning uchun men uni faqat parol bilan qoldiraman.

Ikkinchidan, men dasturni "sudo apt update && sudo apt upgrade -Y" yordamida yangiladim. Menga libery `sudo apt-get install scons swig git python-dev build-essential -Y` kompilyatsiya qilish uchun qo'shimcha dasturlar kerak edi. Keyin men Jeremy Garffdan github `git clone https:// github.com/jgarff/rpi_ws281x.git`da ajoyib erkinlikni nusxa ko'chirdim. Shundan so'ng, erkinlik klonlandi, men rpi_ws281x katalogiga bordim, skonlardan foydalandim va keyin "sudo python python/setup.py install" bilan kutubxonani o'rnatdim. Python/misollarda, "sudo python python/misollar/strandtest.py" bilan boshlashingiz mumkin bo'lgan, juda chiroyli animatsiyalarga ega "strandtest.py" yaxshi demo.

5-qadam: Pi-Hole

Pi-teshik
Pi-teshik

Keng tarmoqli blokerni yaratish uchun Pi-Hole mukammaldir. U faqat sudo curl -sSL bilan o'rnatiladi https://install.pi-hole.net | bash. Yaxshi tomoni shundaki, u veb-serverni ham o'rnatadi.

O'rnatuvchini ishga tushirgandan so'ng, siz yo'riqnoma administrator saytiga kirishni va RPi-ga statik IP-manzilni berishni va DHCP-server sifatida o'rnatishni xohlaysiz. Agar siz ijara vaqtini pastroq deb belgilagan bo'lsangiz, sizning PI-teshigingiz hozir ishlashi kerak.

6 -qadam: Chiroqlarni boshqaring

Chiroqlarni boshqarish
Chiroqlarni boshqarish
Chiroqlarni boshqarish
Chiroqlarni boshqarish
Chiroqlarni boshqarish
Chiroqlarni boshqarish

Neopixellarni boshqarishning eng oson usuli - bu kichik piton dasturlari. Lekin har safar chiroqni yoqmoqchi bo'lganingizda ssh -dan foydalanish noqulay bo'ladi, ayniqsa mobil qurilmada. Shuning uchun men kichik veb -saytni masofadan boshqarish pulti sifatida ishlatishga qaror qildim. Bu XAVFSIZLIK XAVFI, chunki men www-data root-ga parolni tekshirmasdan ruxsat berdim. Ehtimol, siz ushbu saytni sizning hududingizdan tashqarida ishlatmasligingiz kerak.

PI -teshik asboblar paneli va masofadan boshqarish pulti orasidan tanlashni osonlashtirish uchun men foydalanuvchiga "sudo chown -R pi/var/www.html" bilan/var/www/html -ga yozish huquqini berdim va men yaratdim. index.php fayli/var/www/html/. Oddiy narsa kabi:

~~~

Index Pi teshikli yorug'lik masofadan boshqarish pulti

~~~

yaxshi. Keyin men neopikseldan tortib hamma narsaga ega bo'lish uchun chiroqlar deb nomlangan yangi papka yaratdim. Bu erda men erkinlikdan strandtest.py asosida colour.py yaratdim.

~~~

neopixel importidan * # Ba'zi kutubxonalarni import qilish

sys import qilish

def led (chiziq, rang, boshlanish, tugatish): # LEDlarni chaqirish funksiyasini yarating

i oralig'ida (boshlanishi, oxiri):

strip.setPixelColor (i, rang)

strip.show ()

BRIGHTNESS = int (sys.argv [4]) # Buyruqlar satridagi to'rtinchi parametr yorqinlik bo'ladi. (1-255)

COUNT = 50 # LEDlar soni PIN = 12 # RPi uchun ishlatiladigan pin

FREQ_HZ = 800000 # LED signal chastotasi (odatda 800 kHz)

Signal ishlab chiqarish uchun DMA = 5 # DMA kanali (5 -ni sinab ko'ring)

INVERT = False # True signalni teskari aylantirish uchun (NPN tranzistor sathidan foydalanilganda

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

strip.begin ()

R = int (sys.argv [1]) # Qizil rang - birinchi parametr

G = int (sys.argv [2]) # Yashil miqdori - ikkinchi parametr

B = int (sys.argv [3]) # Moviy rang - uchinchi parametr

harakat qilib ko'ring:

LEDlar (tasma, Rang (R, G, B), 0, 49) #Letsni tanlangan rang va yorqinlikdan boshlaymiz.

KeyboardInterruptdan tashqari:

rang (tasma, Rang (0, 0, 0), 0, 49)

~~~

Agar siz buni terminalda sudo bilan ishlatsangiz, chiroqlar belgilangan rangda yonishi kerak. Www-data sudo ruxsatini berish uchun men "www-data ALL = (ALL) NOPASSWD: ALL)" ni sudoers fayliga (/etc/sudoers) to'g'ridan-to'g'ri ildiz foydalanuvchisi ostiga qo'shdim.

7 -qadam: Chiroqlarni brauzer yordamida yoqing

Keyin men index.php ni yaratdim, bu safar /chiroqlar ichida. ~~~

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

~~~

Men hozir raspberrypi.local/lights/index.php saytiga tashrif buyurganimda, ledlar oqarib ketadi. Bu yaxshi boshlanish bo'lsa -da, men hech bo'lmaganda masofadan boshqarish pultidagi tugmachalarni yoqishni yaxshi ko'raman.

8 -qadam: Chiroqlarni brauzerdan boshqaring

Men HTML formasidan foydalanib, dumba bilan interfeys yaratdim. Men kerak bo'lmagan narsalarni qilishni yoqtirmayman, shuning uchun men sarlavha, altbilgi va asosiy PHP kodim bilan shablon deb nomlangan papkani yaratdim.

~~~

~~~

Tugmalar ishlashi uchun men BasicControl.php shablonini yaratdim. Bunda men tugma bosilganda bajarilishi kerak bo'lgan kodni ko'rsatdim. Chunki menga eng g'alati animatsiyalar yoqdi. Eng qiyin sinov uzoq davom etadi, shuning uchun men jarayonni xohlagan vaqtda to'xtatish uchun yana bir tugmani bosdim.

~~~ <? php

$ I = 100;

$ R = 0;

$ G = 0;

$ B = 0;

if (isset ($ _ POST ['strandtest_start']))) {exec ("sudo python strandtest.py"); }

if if (isset ($ _ POST ['strandtest_stop']))) {exec ("sudo pkill -9 -f strandtest.py"); }

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

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

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

aks holda (isset ($ _ POST ['oq']))) {$ R = 255; $ G = 255; $ B = 255; exec ("sudo python colour.py $ R $ G $ B $ I"); }

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

if if (isset ($ _ POST ['reboot']))) {shell_exec ('sudo hozir qayta ishga tushirish'); }?>

~~~

9 -qadam: Sarlavha va altbilgi uchun shablon yarating

Endi hammasi ishlaydi, lekin qarash unchalik yoqimli emas. Sarlavha va altbilgi import qilinganidan so'ng saytning barcha elementlari mavjud, faqat uslublanmagan.

Header.php:

~~~

Chiroqlar

Lampjes

Asosiy boshqaruv elementlari

Kengaytirilgan boshqaruv elementlari

~~~

Va footer.php:

~~~

~~~

10 -qadam: Hammasini biroz yaxshiroq qilish uchun ba'zi CSS

Hammasini biroz yaxshiroq qilish uchun ba'zi CSS
Hammasini biroz yaxshiroq qilish uchun ba'zi CSS

Siz sezganingizdek, men tartibni boshqarish uchun CSS faylidan foydalanayapman. Masofadan boshqarish pulti kichikroq ekranlarda ishlatilishiga ishonch hosil qilish uchun men autsrapli CSS moslashuvchan qutilaridan foydalandim.

~~~

/ * Nurni boshqarish interfeysi uchun uslublar jadvali *

* Har bir sahifada amal qiladi */

tanasi {fon rangi: f9fcfa; shrift oilasi: Arial; chegara: 0; }

h1 {rang: oq; matnni tekislash: markaz; }

p {shrift-oilasi: verdana; shrift o'lchami: 20 piksel; }

h2 {}

/ * Sarlavha */

. header {balandligi: 10%; ko'rsatish: moslashuvchan; justify-content: egiluvchan boshlash; moslashtirish elementlari: markaz; chegara: 0 piksel; chapga to'ldirish: 5%; fon:#3F51B5; moslashtirish elementlari: markaz; }

. HeaderLinks {rang: oq; }

.navbar {ko'rsatish: egilish; egiluvchanlik: 30%; justify-content: bo'sh joy-atrofida; fon rangi: #3F51B5; rangi: oq; }

/ * Altbilgi */

.footer {fon-rangi: #3F51B5; balandligi: 10%; matnni tekislash: markaz; }

/ * Index.php */

.tugmalar {ko'rsatish: egilish; egilish yo'nalishi: qator; moslashuvchan o'rash: o'rash; justify-content: oraliq-oraliq; balandligi: 80%; moslashtirish elementlari: moslashuvchan boshlash; }

.buttons_index {to'ldirish: 0%; chegara kengligi: ingichka; chegara uslubi: qattiq; chegara rangi: qora; fon rangi: #3949ab; rangi: oq; shrift-oila: sans-serif; kengligi: 24%; balandligi: 20%; }

.buttons_index: hover {to'ldirish: 0%; chegara kengligi: ingichka; chegara uslubi: qattiq; chegara rangi: qora; fon rangi: #536DFE; rangi: oq; shrift oilasi: sans-serif; kengligi: 24%; balandligi: 20%; }

~~~

11 -qadam: Rahmat

Va bu hammasi. Hamma narsa men uchun ishlaydi va umid qilamanki, agar siz mening ko'rsatmalarni sinab ko'rsangiz, bu siz uchun ham ishlaydi. Agar siz biron bir kodni nusxalashga harakat qilgan bo'lsangiz, men uni bu erga yuklash uchun bir nechta bo'sh joy qo'shishim kerak edi, shuning uchun kod yana foydali bo'lishi uchun ularni o'chirib tashlashingiz kerak bo'ladi.

Umid qilamanki, sizga hamma narsa o'qish yoqdi. Agar sizda fikr -mulohazalar bo'lsa, men buni eshitishni istardim!

Tavsiya: