Mündəricat:

Reklam bloklayan Neopiksellər: 11 addım
Reklam bloklayan Neopiksellər: 11 addım

Video: Reklam bloklayan Neopiksellər: 11 addım

Video: Reklam bloklayan Neopiksellər: 11 addım
Video: ФРУКТОВЫЙ ЧАЙ С САУСАН| АНАР АГАКИШИЕВ: о детстве, творческом пути и славе 2024, Noyabr
Anonim
Reklam bloklayan Neopiksellər
Reklam bloklayan Neopiksellər

Raspberry Pi sıfıra bağlı bir neopiksel zolağı üçün uzaqdan sadə bir veb saytı yaratmaq və Pi-Hole istifadə edərək şəbəkədəki reklamları bloklamaq üçün istifadə etmək istədim. Əvvəlcə otağıma bir neçə led əlavə etmək istədim, amma hər şeyi bağladığımda onları rahat idarə edə bilməyəcəyimi başa düşdüm. Beləliklə, Pi-hole quraşdırıcısının artıq qurduğu apache serverindən istifadə edərək bəzi əsas idarəetmə variantları olan sadə bir veb sayt yaratmağa qərar verdim. Təhlükəsizlik riski olan www-data kök icazələri verdim, buna görə də veb serverini xarici dünyaya əlçatan etməməlisiniz. Bu, əsasən öz sənədlərim üçün başladı və birtəhər mənim ilk təlimatçım oldu;) Bir şey aydın deyilsə və ya bir şeyi əldən verdimsə, qeyd edə bilsəniz çox şad olaram.

Addım 1: İstifadə olunan materiallar

  • Moruq Pi (bir Pi 2 -də başladım və sonra WH -ə keçdim, gpio pinləri bir az fərqli ola bilər, əks halda hər model yaxşıdır)

    • Daxili wifi olmadan bir RPi varsa, bir wifi adapteri də faydalıdır.
    • İsteğe bağlı olaraq moruq pi üçün bir qutu
  • 2 Kişi-qadın tullanan telləri (məsələn)
  • Neopixels ws2811 (bunları istifadə etdim)
  • RPi üçün 1 10W enerji təchizatı (Köhnə bir telefon şarj cihazı edəcək)
  • Neopixels üçün 1 ~ 50W enerji təchizatı (belə bir istifadə etdim, amma yəqin ki, daha kiçik biri kifayət edər, amma daha çox led istəsəniz, genişləndirmək üçün bir yeriniz var.)
  • Dişi jak bağlayıcı fişi (bu kimi)

Addım 2: Əməliyyat Sistemini Hazırlayın

Əməliyyat Sistemini hazırlayın
Əməliyyat Sistemini hazırlayın

Rasbianın ən son versiyasını raspberrypi.org -dan yükləyin Bu layihə üçün lite versiyası yaxşıdır, əgər moruq pi -ni başqa bir şey üçün istifadə etməyi planlaşdırırsınızsa gui ilə tam versiyanı yükləməyi düşünə bilərsiniz. Sonra Etcher ilə görüntünü yandırdım. Bundan sonra wifi şəbəkəmlə əlaqə quracağından əmin olmaq üçün SD kartın açılış qovluğuna wpa_supplicant.conf əlavə etdim. Faylın məzmunu belə olmalıdır:

~~~

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

şəbəkə = {

ssid = "SSID"

psk = "ŞİFR"

key_mgmt = WPA-PSK}

~~~

Ssh -i aktiv etmək üçün eyni qovluqda ssh (heç bir uzantısı olmayan) adlı bir fayl yaratdım. Bu, laninizdakı başqa bir kompüterdən hər şeyi konfiqurasiya edə biləcəyinizə əmin olacaq.

Addım 3: Neopikselləri birləşdirin

Neopikselləri birləşdirmək
Neopikselləri birləşdirmək
Neopikselləri birləşdirmək
Neopikselləri birləşdirmək

Əvvəlcə enerji girişini dişi jak konnektoruna bağladım və RPi -ni çantaya qoydum. Torpaq kabelini LED -lərdən (mavi kabel) və tullanan telin kişi tərəfini jak konnektorunun mənfi tərəfinə vidaladım. Gpio başlığındakı bir torpaq pininə bağladığım tullanan telin digər ucu, pin 6 -dan istifadə etdim, ancaq istifadə edə biləcəyiniz dəqiq sancaqlar istifadə etdiyiniz RPi modelindən asılı olacaq.

İkincisi, jak konnektorunun müsbət ucunda 5v kabelini ledlərdən (qırmızı kabel) bağladım. Ledlərimdə əlavə bir torpaq kabeli və məlumat kabeli (ağ kabel) üzərində bir tullanan tel bağlayıcı var idi. Əlavə torpaq kabelinə məhəl qoymadım, qurmaq üçün lazımsız idi. Məlumat kabelində bir gpio pin 12 ilə bir kişi dişi tullanan tel bağladım, yenə də istifadə etməli olduğunuz dəqiq pin RPi -dən asılıdır. Sonra RPi və piksellər üçün enerji təchizatı bağladım. Ledlər hər şey düzgün bir şəkildə bağlandığı təqdirdə qısa müddətə işıqlandı.

Addım 4: RPi -ni işə salın

RPi başladın
RPi başladın

Başlamaq üçün RPi -yə bir dəqiqə vaxt verdikdən sonra moruqdan IP ünvanına nmap ilə baxdım. Ancaq hər hansı bir şəbəkə skaneri, yönlendiricinizin məlumat paneli və ya əksər hallarda sadəcə "raspberrypi.local" edəcək. Bu məlumatla mən ssh vasitəsilə RPi ilə əlaqə saxladım. Varsayılan istifadəçi moruq şifrəsi ilə pi. İlk girişdən dərhal sonra passwd istifadə edərək dəyişdiyim ilk şey budur. Yerli şəbəkənizdən kənarda ssh vasitəsilə pi -yə daxil olmaq istəyirsinizsə, fail2ban və açar identifikasiyasına baxmalısınız. Şəxsən mənim bunun üçün bir istifadə qutusu yoxdur, buna görə də onu yalnız bir parolla tərk edəcəyəm.

İkincisi, proqramı "sudo apt update && sudo apt upgrade -Y" istifadə edərək yenilədim. Liby `sudo apt-get install scons swig git python-dev build-essential -Y` tərtib etmək üçün əlavə proqrama da ehtiyacım var idi. Sonra əla azadlığı Jeremy Garff -dan github `git clone https:// github.com/jgarff/rpi_ws281x.git`də kopyaladım. Bundan sonra azadlıq klonlandı, rpi_ws281x qovluğuna getdim, skonlardan istifadə etdim və sonra libary -ı sudo python python/setup.py install ilə yüklədim. Python/nümunələrində, "sudo python python/örnekler/strandtest.py" ilə başlaya biləcəyiniz həqiqətən səliqəli animasiyalara malik gözəl bir "strandtest.py" demosu var.

Addım 5: Pi-Hole

Pi-Hole
Pi-Hole

Geniş şəbəkə blokerini yaratmaq üçün Pi-Hole mükəmməldir. Yalnız `sudo curl -sSL ilə quraşdırılır https://install.pi-hole.net | bash`. Gözəl tərəfi də bir veb server qurmasıdır.

Quraşdırıcıyı işə saldıqdan sonra yönlendiricinizin idarəetmə saytına daxil olmaq və RPi-yə statik bir IP ünvanı vermək və DHCP Server olaraq qurmaq istəyəcəksiniz. Kiçik bir icarə müddəti təyin etmisinizsə, PI çuxurunuz indi işləməlidir.

Addım 6: İşıqları idarə edin

İşıqları idarə edin
İşıqları idarə edin
İşıqları idarə edin
İşıqları idarə edin
İşıqları idarə edin
İşıqları idarə edin

Neopixelləri idarə etməyin ən asan yolu kiçik python proqramlarıdır. Ancaq işığı hər dəfə açmaq istədikdə ssh istifadə etmək, xüsusən də mobil cihazda əlverişsizdir. Kiçik bir veb saytını uzaqdan idarəetmə kimi istifadə etmək qərarına gəldim. BU TƏHLÜKƏSİZLİK RİSKİDİR, çünki www-data kökünə parol yoxlamadan icazə verdim. Yəqin ki, bu saytı lan xaricində əlçatan etməməlisiniz.

PI -deşik və işığın uzaqdan idarəetmə paneli arasında seçim etməyi asanlaşdırmaq üçün istifadəçiyə "sudo chown -R pi/var/www.html" ilə/var/www/html yazma imkanı verdim və index.php faylı/var/www/html/. Sadə bir şey kimi:

~~~

İndeks Pi deşik İşıq pultu

~~~

yaxşıdır. Sonra neopikseldən hər şeyi bir araya gətirmək üçün işıqlar adlı yeni bir qovluq yaratdım. Burada azadlıqdan strandtest.py əsasında colour.py yaratdım.

~~~

neopixel idxalından * # Bəzi kitabxanaları idxal edin

sys idxal edin

def led (şerit, rəng, başlanğıc, son): # Ledləri çağırmaq üçün bir funksiya yaradın

i üçündür (başlanğıc, son):

strip.setPixelColor (i, rəng)

strip.show ()

BRIGHTNESS = int (sys.argv [4]) # Komanda xəttindəki dördüncü parametr parlaqlıq olacaq. (1-255)

COUNT = 50 # LED sayı PIN = 12 # RPi -də istifadə olunan pin

FREQ_HZ = 800000 # hertz -də LED siqnal tezliyi (adətən 800khz)

Siqnal yaratmaq üçün istifadə ediləcək DMA = 5 # DMA kanalı (5 -i sınayın)

INVERT = Yanlış # Siqnalın ters çevrilməsi üçün doğru (NPN tranzistor səviyyəsindən istifadə edərkən

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

strip.begin ()

R = int (sys.argv [1]) # Qırmızı rəng ilk parametrdir

G = int (sys.argv [2]) # Yaşıl miqdarı ikinci parametrdir

B = int (sys.argv [3]) # Mavi miqdarı üçüncü parametrdir

cəhd edin:

ledlər (şerit, Rəng (R, G, B), 0, 49) #Seçilmiş rəng və parlaqlıq ilə imkan verir.

KeyboardInterrupt istisna olmaqla:

rəng (zolaq, Rəng (0, 0, 0), 0, 49)

~~~

Bunu terminalda sudo ilə işləsəniz, işıqlar göstərilən rəngdə yanmalıdır. Www-data sudo icazəsi vermək üçün kök istifadəçisinin altındakı sudoers faylına (/etc/sudoers) `www-data ALL = (ALL) NOPASSWD: ALL)` əlavə etdim.

Addım 7: Brauzerlə işıqları yandırın

Sonra bu dəfə /işıqda başqa index.php yaratdım. ~~~

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

~~~

İndi raspberrypi.local/lights/index.php saytına daxil olanda ledlər ağaracaq. Bu gözəl bir başlanğıc olsa da, heç olmasa uzaqdan idarəetmə düymələrində olmağı sevirəm.

Addım 8: İşıqları Brauzerdən idarə edin

Bir html formasından istifadə edərək popo ilə bir interfeys yaratdım. Lazım olmayan şeyləri etməyi sevmirəm, buna görə də başlıq, altbilgi və əsas php kodu olan şablonlar adlı bir qovluq yaratdım.

~~~

~~~

Düymələrin işləməsi üçün BasicControl.php şablonu hazırladım. Burada bir düyməyə basıldığında icra edilməli olan kodu göstərdim. Çünki daxil etdiyim strandtest animasiyalardan xoşum gəlirdi. Strandtest sonsuza qədər davam edəcək, buna görə istədiyim zaman prosesi dayandırmaq üçün başqa bir düymə etdim.

~~~ <? php

$ I = 100;

$ R = 0;

$ G = 0;

$ B = 0;

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

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

başqa əgər (isset ($ _ POST ['qırmızı']))) {$ R = 255; $ G = 0; $ B = 0; exec ("sudo python colour.py $ R $ G $ B $ I"); }

başqa əgər (isset ($ _ POST ['yaşıl']))) {$ R = 0; $ G = 255; $ B = 0; exec ("sudo python colour.py $ R $ G $ B $ I"); }

başqa əgər (isset ($ _ POST ['mavi']))) {$ R = 0; $ G = 0; $ B = 255; exec ("sudo python colour.py $ R $ G $ B $ I"); }

başqa əgər (isset ($ _ POST ['ağ']))) {$ R = 255; $ G = 255; $ B = 255; exec ("sudo python colour.py $ R $ G $ B $ I"); }

başqa halda (isset ($ _ POST ['off']))) {shell_exec ('sudo python off.py'); }

başqa halda (isset ($ _ POST ['reboot'])) {shell_exec ('sudo indi yenidən başladın'); }?>

~~~

Addım 9: Başlıq və Altbilgi üçün şablon yaradın

İndi hər şey işləyir, amma baxmaq çox xoş deyil. Başlıq və altbilgi idxal edildikdən sonra saytın bütün elementləri mövcuddur, sadəcə üslubu yoxdur.

Header.php:

~~~

İşıqlar

Lampjes

Əsas Nəzarətlər

Ətraflı Nəzarətlər

~~~

Və altbilgi.php:

~~~

~~~

Addım 10: Hamısını Biraz Daha Yaxşı Görmək üçün Bəzi Css

Hamısını bir az daha yaxşı etmək üçün bəzi Css
Hamısını bir az daha yaxşı etmək üçün bəzi Css

Gördüyünüz kimi, düzeni idarə etmək üçün bir CSS faylı istifadə edirəm. Uzaqdan idarəetmə cihazımın kiçik ekranlarda istifadə oluna biləcəyinə əmin olmaq üçün, autowrap ilə bəzi css fleks qutularından istifadə etdim.

~~~

/ * İşıq idarəetmə interfeysi üçün üslub cədvəli *

* Hər səhifədə tətbiq olunur */

bədən {fon rəngi: f9fcfa; font ailəsi: Arial; marj: 0; }

h1 {rəng: ağ; mətn hizalama: mərkəz; }

p {font-family: verdana; şrift ölçüsü: 20 piksel; }

h2 {}

/ * Başlıq */

. başlıq {yüksəklik: 10%; ekran: əyilmə; əsaslandırmaq-məzmun: flex-start; align-items: mərkəz; margin: 0px; sola doldurma: 5%; fon:#3F51B5; align-items: mərkəz; }

. HeaderLinks {rəng: ağ; }

.navbar {göstər: əymək; əyilmə: 30%; əsaslandırmaq-məzmun: məkan ətrafında; fon rəngi: #3F51B5; rəng: ağ; }

/ * Altbilgi */

.footer {background-color: #3F51B5; hündürlük: 10%; mətn hizalama: mərkəz; }

/ * Index.php */

.buttons {display: flex; əyilmə istiqaməti: sıra; bükmək: bükmək; əsaslandır-məzmun: aralıq-boşluq; hündürlük: 80%; align-items: flex-start; }

.buttons_index {doldurma: 0%; sərhəd genişliyi: nazik; sərhəd tərzi: möhkəm; haşiyə rəngi: qara; fon rəngi: #3949ab; rəng: ağ; font ailəsi: sans-serif; eni: 24%; hündürlük: 20%; }

.buttons_index: hover {doldurma: 0%; sərhəd genişliyi: nazik; sərhəd tərzi: möhkəm; haşiyə rəngi: qara; fon rəngi: #536DFE; rəng: ağ; font ailəsi: sans-serif; eni: 24%; hündürlük: 20%; }

~~~

Addım 11: Təşəkkür edirəm

Və bu qədər. Hər şey mənim üçün işləyir və ümid edirəm ki, mənim göstərişlərimi sınayın, sizin üçün də işləyəcək. Bir kodu kopyalamağa çalışsaydınız, buraya yükləmək üçün bir neçə boşluq əlavə etməli idim, buna görə də kod yenidən faydalı olmayana qədər onları silməli olacaqsınız.

Ümid edirəm hər şeyi oxumaqdan zövq aldınız. Geribildiriminiz varsa, eşitmək istərdim!

Tövsiyə: