Სარჩევი:

რეკლამის დაბლოკვის ნეოპიქსელები: 11 ნაბიჯი
რეკლამის დაბლოკვის ნეოპიქსელები: 11 ნაბიჯი

ვიდეო: რეკლამის დაბლოკვის ნეოპიქსელები: 11 ნაბიჯი

ვიდეო: რეკლამის დაბლოკვის ნეოპიქსელები: 11 ნაბიჯი
ვიდეო: რეკლამის დაბლოკვის პრინციპები 2024, ივლისი
Anonim
რეკლამის დაბლოკვის ნეოპიქსელები
რეკლამის დაბლოკვის ნეოპიქსელები

მინდოდა გამეკეთებინა მარტივი ვებსაიტი დისტანციურად ნეოპიქსელების ზოლისთვის, რომელიც დაკავშირებულია ჩემს Raspberry Pi ნულთან და გავაგრძელო მისი გამოყენება Pi-Hole– ის გამოყენებით ჩემს ქსელში რეკლამების დაბლოკვის მიზნით. პირველ რიგში, მინდოდა ჩემს ოთახში რამდენიმე ლიდერი დამემატებინა, მაგრამ ყველაფრის გაყვანილობა მივხვდი, რომ მათი მოხერხებულად კონტროლის საშუალება არ მქონდა. ასე რომ, მე გადავწყვიტე შევქმნა მარტივი ვებ გვერდი რამდენიმე ძირითადი კონტროლის პარამეტრებით, apache სერვერის გამოყენებით, რომელიც უკვე დაყენებულია Pi-hole ინსტალერმა. მე მივეცი www-data root ნებართვები, რაც უსაფრთხოების რისკია, ასე რომ თქვენ სავარაუდოდ უნდა გახადოთ ვებ სერვერი მიუწვდომელი გარე სამყაროსთვის. ეს დაიწყო ძირითადად ჩემი საკუთარი დოკუმენტაციისთვის და რატომღაც გახდა ჩემი პირველი ინსტრუქტორი;) ასე რომ, მე ნამდვილად ვაფასებ, თუ თქვენ შეგიძლიათ მიუთითოთ, თუ რამე გაუგებარია, ან თუ მე საერთოდ გამომრჩა რაღაც.

ნაბიჯი 1: გამოყენებული მასალები

  • Raspberry Pi (დავიწყე Pi 2 -ზე და შემდეგ შევიცვალე WH, gpio pin შეიძლება ოდნავ განსხვავებული იყოს, მაგრამ სხვაგვარად ყველა მოდელი კარგად არის)

    • თუ თქვენ გაქვთ RPi ჩაშენებული wifi გარეშე, wifi ადაპტერი ასევე სასარგებლოა.
    • სურვილისამებრ საქმე ჟოლოს პი
  • 2 მამაკაცი-მხტუნავი მავთული (მაგალითად)
  • ნეოპიქსელები ws2811 (მე ეს გამოვიყენე)
  • 1 10W დენის წყაროს RPi (ძველი ტელეფონის დამტენი გააკეთებს)
  • ნეოპიქსელებისთვის 1 ~ 50 ვტ ელექტროენერგიის მიწოდება (მე ვიყენებდი მსგავსს, მაგრამ ალბათ უფრო მცირე იქნებოდა საკმარისი, მაგრამ თუ უფრო მეტი ლიდერი გსურთ, გაფართოების ადგილი გაქვთ დარჩენილი.)
  • ქალის ჯეკის კონექტორის დანამატი (ასე)

ნაბიჯი 2: მოამზადეთ ოპერაციული სისტემა

მოამზადეთ ოპერაციული სისტემა
მოამზადეთ ოპერაციული სისტემა

ჩამოტვირთეთ Rasbian– ის უახლესი ვერსია raspberrypi.org– დან Lite ვერსია კარგია ამ პროექტისთვის, თუ თქვენ აპირებთ ჟოლოს pi– ს გამოყენებას სხვა რამისთვისაც, შესაძლოა განიხილოთ სრული ვერსიის gui– ით დაყენება. შემდეგ სურათი დავწერე ეჩერით. ამის შემდეგ, რომ დავრწმუნდე, რომ ის დაუკავშირდება ჩემს wifi ქსელს, დავამატე wpa_supplicant.conf sd ბარათის ჩატვირთვის დირექტორიაში. ფაილის შინაარსი ასე უნდა გამოიყურებოდეს:

~~~

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

ქსელი = {

ssid = "SSID"

psk = "PASSWORD"

key_mgmt = WPA-PSK}

~~~

Ssh- ის გასააქტიურებლად შევქმენი ფაილი სახელწოდებით ssh (ყოველგვარი გაფართოების გარეშე) იმავე დირექტორიაში. ეს დარწმუნდება, რომ თქვენ შეგიძლიათ დააკონფიგურიროთ ყოველივე სხვა რეგიონის კომპიუტერიდან.

ნაბიჯი 3: ნეოპიქსელების დაკავშირება

ნეოპიქსელების დაკავშირება
ნეოპიქსელების დაკავშირება
ნეოპიქსელების დაკავშირება
ნეოპიქსელების დაკავშირება

პირველ რიგში ჩავრთე დენის წყაროს ქალი ჯეკის კონექტორი და ჩავდე RPi საქმეში. მე დამაბრახეს მიწის კაბელი ლიდერებიდან (ლურჯი კაბელი) და ჯუმბერის მავთულის მამრობითი მხარე ჯეკის კონექტორის უარყოფით მხარეში. ჯუმბერის მავთულის მეორე ბოლო მე დავუკავშირდი გპოს სათაურზე მიწას, მე გამოვიყენე პინ 6, მაგრამ ზუსტი ქინძისთავები, რომლებიც შეგიძლიათ გამოიყენოთ, დამოკიდებული იქნება თქვენს მიერ გამოყენებულ ზუსტ მოდელზე.

მეორეც, ჯეკის კონექტორის პოზიტიურ ბოლოს დავუკავშირე 5v კაბელი leds– დან (წითელი კაბელი). ჩემს ლიდერზე იყო ჯუმბერის მავთულის კონექტორი დამატებით დამხმარე კაბელზე და მონაცემთა კაბელი (თეთრი კაბელი). მე უბრალოდ იგნორირება გავუკეთე დამატებით მიწას, ის არასაჭირო იყო ჩემი კონფიგურაციისთვის. მონაცემთა კაბელზე მე დავაკავშირე მამაკაცი მდედრობითი jumper მავთული gpio pin 12 -ით, ისევ ზუსტი პინი, რომელიც უნდა გამოიყენოთ დამოკიდებულია თქვენს RPi- ზე. შემდეგ ჩავრთე კვების ბლოკი RPi და პიქსელებისთვის. LED- ები მცირე ხნით ანათებენ, თუ ყველაფერი სწორად არის დაკავშირებული.

ნაბიჯი 4: დაიწყეთ RPi

დაიწყეთ RPi
დაიწყეთ RPi

მას შემდეგ რაც RPi- ს ჩავატარე ერთი წუთი ან მეტი, ჩავიხედე ჟოლოდან IP მისამართით nmap. მაგრამ ნებისმიერი ქსელის სკანერი, თქვენი როუტერის საინფორმაციო პანელი ან უმეტეს შემთხვევაში უბრალოდ "raspberrypi.local" გააკეთებს. ამ ინფორმაციის საშუალებით მე დავუკავშირდი RPi– ს ssh– ით. ნაგულისხმევი მომხმარებელი არის pi პაროლით ჟოლო. ეს არის პირველი რაც შევცვალე `passwd` - ის პირველი შესვლის შემდეგ. თუ გსურთ თქვენი pi წვდომა ssh– ით თქვენი ადგილობრივი ქსელის გარედან, თქვენ უნდა გადახედოთ fail2ban და გასაღების ავტორიზაციას. მე პირადად არ მაქვს ამის გამოყენების შემთხვევა, ამიტომ დავტოვებ მას მხოლოდ პაროლით.

მეორეც, მე განვაახლე პროგრამული უზრუნველყოფა `sudo apt update && sudo apt upgrade -Y`. მე ასევე მჭირდებოდა დამატებითი პროგრამული უზრუნველყოფა ლიბერის შედგენისათვის `sudo apt-get install scons swig git python-dev build-essential -Y`. შემდეგ მე გადავაკოპირე ჯერერი გარფის შესანიშნავი ლიბერი github `git clone https:// github.com/jgarff/rpi_ws281x.git`. ამის შემდეგ ლიბერია კლონირებული მივედი rpi_ws281x დირექტორიაში, გამოვიყენე scons და შემდეგ დავაყენე libary `sudo python python/setup.py install`. პითონში/მაგალითებში არის ლამაზი დემო "strandtest.py" მართლაც სისუფთავე ანიმაციებით, რომელიც შეგიძლიათ დაიწყოთ `sudo python python/მაგალითები/strandtest.py`.

ნაბიჯი 5: Pi-Hole

პი-ხვრელი
პი-ხვრელი

ქსელის ფართო ბლოკირების შესაქმნელად, Pi-Hole არის სრულყოფილი. ის დაინსტალირდება მხოლოდ `sudo curl -sSL https://install.pi-hole.net | ბაშ`. სასიამოვნო ნაწილი ის არის, რომ ის ასევე შექმნის ვებ სერვერს.

ინსტალერის გაშვების შემდეგ თქვენ მოგინდებათ შეხვიდეთ თქვენი როუტერის ადმინისტრაციულ საიტზე და მიეცით თქვენს RPi სტატიკურ IP მისამართს და დააყენოთ ის DHCP სერვერის სახით. თუ თქვენ გაქვთ განსაზღვრული დაბალი საიჯარო დრო, მაშინ თქვენი PI ხვრელი უნდა იმუშაოს ახლა.

ნაბიჯი 6: აკონტროლეთ განათება

აკონტროლეთ შუქები
აკონტროლეთ შუქები
აკონტროლეთ შუქები
აკონტროლეთ შუქები
აკონტროლეთ შუქები
აკონტროლეთ შუქები

ნეოპიქსელების კონტროლის უმარტივესი გზაა პითონის მცირე პროგრამები. მაგრამ ssh- ის გამოყენება ყოველ ჯერზე, როდესაც გსურთ განათების ჩართვა მოუხერხებელია, განსაკუთრებით მობილურ მოწყობილობაზე. ამიტომ გადავწყვიტე გამოვიყენო პატარა ვებ გვერდი დისტანციური მართვის სახით. ეს არის უსაფრთხოების რისკი, რადგან მე მივეცი www-data root ნებართვა პაროლის გადამოწმების გარეშე. თქვენ ალბათ არ უნდა გახადოთ ეს საიტი ხელმისაწვდომი თქვენი რეგიონის გარეთ.

იმისათვის, რომ ადვილი იყოს არჩევანის გაკეთება PI- ხვრელის დაფასა და შუქის პულტს შორის, მე მივეცი მომხმარებელს pi ჩაწერა წვდომა/var/www/html- ზე `sudo chown -R pi/var/www.html` და მე შევქმენი index.php ფაილი in/var/www/html/. რაღაც მარტივი, როგორიცაა:

~~~

ინდექსი Pi ხვრელი სინათლის დისტანციური

~~~

კარგად არის. შემდეგ შევქმენი ახალი საქაღალდე სახელწოდებით განათება, რომ ყველაფერი გვქონდეს ნეოპიქსელებთან ერთად. აქ შევქმენი colour.py ლიბერატიდან strandtest.py საფუძველზე.

~~~

ნეოპიქსელის იმპორტიდან * # რამდენიმე ბიბლიოთეკის იმპორტი

იმპორტის სისტემა

def led (ზოლები, ფერი, დაწყება, დასასრული): # შექმენით ფუნქცია, რათა გამოიძახოთ leds

მე დიაპაზონში (დასაწყისი, დასასრული):

strip.setPixelColor (i, ფერი)

ზოლები. ჩვენება ()

BRIGHTNESS = int (sys.argv [4]) # ბრძანების ხაზის მეოთხე პარამეტრი იქნება სიკაშკაშე. (1-255)

COUNT = 50 # leds– ის რაოდენობა PIN = 12 # RPi– ზე გამოყენებული პინი

FREQ_HZ = 800000 # LED სიგნალის სიხშირე ჰერცში (ჩვეულებრივ 800 კჰც)

DMA = 5 # DMA არხი, რომელიც გამოიყენება სიგნალის შესაქმნელად (სცადეთ 5)

INVERT = მცდარი # მართებულია სიგნალის ინვერსიისთვის (NPN ტრანზისტორის დონის გამოყენებისას

ზოლები = Adafruit_NeoPixel (COUNT, PIN, FREQ_HZ, DMA, INVERT, BRIGHTNESS)

strip.begin ()

R = int (sys.argv [1]) # წითელი ოდენობა არის პირველი პარამეტრი

G = int (sys.argv [2]) # მწვანე ოდენობა არის მეორე პარამეტრი

B = int (sys.argv [3]) # ლურჯი რაოდენობა არის მესამე პარამეტრი

სცადე:

leds (ზოლები, ფერი (R, G, B), 0, 49) #დაიწყება ნებართვები შერჩეული ფერით და სიკაშკაშე.

გარდა კლავიატურის უწყვეტი:

ფერი (ზოლები, ფერი (0, 0, 0), 0, 49)

~~~

თუ ამას სუდო გაუშვებთ ტერმინალზე, განათება უნდა აინთოს მითითებულ ფერში. Www-data sudo ნებართვის მისაცემად `www-data ALL = (ALL) NOPASSWD: ALL)` sudoers ფაილში (/etc/sudoers) პირდაპირ root მომხმარებლის ქვეშ.

ნაბიჯი 7: ჩართეთ შუქები ბრაუზერის საშუალებით

შემდეგ მე შევქმენი indontex index.php, ამჯერად in /lights. ~~~

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

~~~

როდესაც ახლა ვსტუმრობ raspberrypi.local/lights/index.php leds გახდება თეთრი. მიუხედავად იმისა, რომ ეს კარგი დასაწყისია, მე მომწონს დისტანციური მართვის პულტზე მინიმუმ რამდენიმე ღილაკი.

ნაბიჯი 8: გააკონტროლეთ შუქები ბრაუზერიდან

მე შევქმენი ინტერფეისი ბუტენსთან html ფორმის გამოყენებით. მე არ მომწონს ის, რაც არ არის საჭირო, ამიტომ შევქმენი საქაღალდე სახელწოდებით შაბლონები ჩემი სათაურით, ქვედა კოლონტიტულით და ძირითადი php კოდით. ჩემი (ჯერჯერობით) საბოლოო /lights/index.php ასე გამოიყურება:

~~~

~~~

ღილაკების მუშაობისთვის მე შევქმენი თარგი BasicControl.php. ამაში მე დავაზუსტე კოდი, რომელიც უნდა შესრულდეს ღილაკზე დაჭერისას. რადგან მომეწონა ყველაზე მძაფრსიუჟეტიანი ანიმაციები, ესეც ჩავრთე. უსაზღვრო ტესტი გაგრძელდება უსასრულოდ დიდხანს, ამიტომ მე გავაკეთე კიდევ ერთი ღილაკი პროცესის შესაჩერებლად, როცა მინდა.

~~~ <? 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 ['წითელი']))) {$ R = 255; $ G = 0; $ B = 0; exec ("sudo python colour.py $ R $ G $ B $ I"); }

else if (isset ($ _ POST ['მწვანე']))) {$ R = 0; $ G = 255; $ B = 0; exec ("sudo python colour.py $ R $ G $ B $ I"); }

else if (isset ($ _ POST ['ლურჯი']))) {$ R = 0; $ G = 0; $ B = 255; exec ("sudo python colour.py $ R $ G $ B $ I"); }

else if (isset ($ _ POST ['თეთრი']))) {$ 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 ['გადატვირთვა']))) {shell_exec ('sudo გადატვირთვა ახლა'); }?>>

~~~

ნაბიჯი 9: შექმენით თარგი სათაურისა და ქვედა კოლონტიტულისთვის

ახლა ყველაფერი მუშაობს, მაგრამ მისი ნახვა არც ისე სასიამოვნოა. სათაურისა და ქვედა კოლონტიტულის იმპორტის შემდეგ საიტის ყველა ელემენტი ხელმისაწვდომია, უბრალოდ არ არის სტილიზებული.

Header.php:

~~~

შუქები

ლამპჯესი

ძირითადი კონტროლი

დამატებითი კონტროლი

~~~

და footer.php:

~~~

~~~

ნაბიჯი 10: ზოგიერთი CSS რომ ეს ყველაფერი უკეთესად გამოიყურებოდეს

ზოგიერთი CSS რათა ეს ყველაფერი ცოტა უკეთესი იყოს
ზოგიერთი CSS რათა ეს ყველაფერი ცოტა უკეთესი იყოს

როგორც თქვენ ალბათ შენიშნეთ, მე ვიყენებ css ფაილს განლაგების გასაკონტროლებლად. იმისათვის, რომ დავრწმუნდე, რომ ჩემი დისტანციური დისკი არის გამოსაყენებელი პატარა ეკრანებზეც, გამოვიყენე რამდენიმე css flexboxes ავტომატური გადახვევით.

~~~

/ * სტილის ფურცელი სინათლის კონტროლის ინტერფეისისთვის *

* გამოიყენება ყველა გვერდზე */

კორპუსი {ფონი-ფერი: f9fcfa; font-family: Arial; ზღვარი: 0; }

h1 {ფერი: თეთრი; text-align: ცენტრი; }

p {font-family: verdana; შრიფტის ზომა: 20px; }

სთ 2 {}

/ * სათაური */

.header {სიმაღლე: 10%; ჩვენება: flex; გამართლება-შინაარსი: flex-start; გასწორება-ერთეულები: ცენტრი; ზღვარი: 0px; padding-left: 5%; ფონი:#3F51B5; გასწორება-ერთეულები: ცენტრი; }

. HeaderLinks {ფერი: თეთრი; }

.navbar {ჩვენება: flex; flex: 30%; გამართლება-შინაარსი: სივრცე-გარშემო; ფონის ფერი: #3F51B5; ფერი: თეთრი; }

/ * ქვედა კოლონტიტული//

.footer {ფონი-ფერი: #3F51B5; სიმაღლე: 10%; text-align: ცენტრი; }

/ * Index.php */

. ღილაკები {ჩვენება: flex; flex- მიმართულება: მწკრივი; flex-wrap: გადატანა; გამართლება-შინაარსი: სივრცე-შორის; სიმაღლე: 80%; გასწორება-ელემენტები: flex-start; }

.buttons_index {შევსება: 0%; საზღვრის სიგანე: თხელი; სასაზღვრო სტილი: მყარი; საზღვრის ფერი: შავი; ფონის ფერი: #3949ab; ფერი: თეთრი; font-family: sans-serif; სიგანე: 24%; სიმაღლე: 20%; }

.buttons_index: hover {padding: 0%; საზღვრის სიგანე: თხელი; სასაზღვრო სტილი: მყარი; საზღვრის ფერი: შავი; ფონის ფერი: #536DFE; ფერი: თეთრი; font-family: sans-serif; სიგანე: 24%; სიმაღლე: 20%; }

~~~

ნაბიჯი 11: გმადლობთ

და ეს არის ის. ყველაფერი მუშაობს ჩემთვის და ვიმედოვნებ, რომ ეს თქვენთვისაც იმუშავებს, თუკი მირჩევთ სცადოთ ჩემი ინსტრუქტაჟი. თუ თქვენ სცადეთ რაიმე კოდის კოპირება, მე უნდა დავამატო რამდენიმე სივრცე აქ მის ასატვირთად, ასე რომ თქვენ მოგიწევთ მათი წაშლა სანამ კოდი კვლავ გამოდგება.

იმედი მაქვს მოგეწონათ ყველაფრის კითხვა. თუ გაქვთ გამოხმაურება, სიამოვნებით მოვისმენდი!

გირჩევთ: