Mündəricat:
- Addım 1: İstifadə olunan materiallar
- Addım 2: Əməliyyat Sistemini Hazırlayın
- Addım 3: Neopikselləri birləşdirin
- Addım 4: RPi -ni işə salın
- Addım 5: Pi-Hole
- Addım 6: İşıqları idarə edin
- Addım 7: Brauzerlə işıqları yandırın
- Addım 8: İşıqları Brauzerdən idarə edin
- Addım 9: Başlıq və Altbilgi üçün şablon yaradın
- Addım 10: Hamısını Biraz Daha Yaxşı Görmək üçün Bəzi Css
- Addım 11: Təşəkkür edirəm
Video: Reklam bloklayan Neopiksellər: 11 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:48
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
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
Ə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
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
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
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
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ə:
3.5 "Ekranlı PiHole Reklam Engelleyicisi: 8 Addım (Şəkillərlə)
3.5 "Ekranlı PiHole Reklam Blocker: Bütün şəbəkəniz üçün həqiqətən zəhmli bir reklam blokerinin necə yaradılacağına dair dərsimə xoş gəldiniz! Raspberry Pi, reklamları bloklamaq və Pi kimi statistik məlumatları göstərmək üçün Pi-Hole və PADD kimi tanınan bir proqramla işləyir. Hole -nin IP ünvanı və reklam miqdarı
Raspberry Pi ilə Şəbəkə Geniş Reklam Bloklama: 4 Addım
Raspberry Pi ilə Şəbəkə Geniş Reklam Bloklama: Daha təmiz, daha sürətli bir veb təcrübəsi əldə edin və Pi-deşik və Raspberry Pi ilə bütün ev şəbəkənizdə zəhlətökən reklamları bloklayın
Şəbəkə geniş bir reklam bloklayıcısı olan Raspberry Pi-də Pi-Hole necə qurulacaq!: 25 addım
Şəbəkə geniş bir reklam bloklayıcısı olan bir Raspberry Pi-də Pi-Hole necə qurulacaq !!: Bu layihə üçün sizə lazım olacaq: İnternetə qoşula bilən bir Raspberry Pi Raspbian LiteA Klaviatura ilə işləyən Micro SD kart (SSH qurmaq üçün) Bir saniyə Cihaz (Veb Portala daxil olmaq üçün) UNIX haqqında əsas biliklər, həmçinin interfeys naviqasiyası
Beacon/eddystone və Adafruit NRF52, Veb saytınızı/məhsulunuzu asanlıqla reklam edin: 4 addım
Beacon/eddystone və Adafruit NRF52, Veb saytınızı/məhsulunuzu asanlıqla reklam edin: Hər kəsə salam, bu yaxınlarda etdiyim bir layihəni sizinlə bölüşmək istəyirəm, içəridə/çöldə birləşdirmək üçün bir cihaz axtardım və insanların istifadə edərək buna qoşulmasına icazə verək. ağıllı telefonlar və onlara müəyyən bir veb saytı ziyarət etmək və ya reklam etmək imkanı verin
Onlayn təsnif edilmiş bir reklam necə yaradılır: 3 addım (şəkillərlə)
Onlayn Təsnif Elanı Necə Yaratılır: Ayrılmalı olduğunuzu düşündüyünüz bir şey varmı? Satmaq istədiyiniz şeyləri tanıtmağın bir yolu təsnif edilmiş bir reklam yerləşdirməkdir və bu gün internetdən istifadə etmək asan, təsirli və demək olar ki, həmişə pulsuz bir yoldur