Სარჩევი:
- ნაბიჯი 1: გამოყენებული მასალები
- ნაბიჯი 2: მოამზადეთ ოპერაციული სისტემა
- ნაბიჯი 3: ნეოპიქსელების დაკავშირება
- ნაბიჯი 4: დაიწყეთ RPi
- ნაბიჯი 5: Pi-Hole
- ნაბიჯი 6: აკონტროლეთ განათება
- ნაბიჯი 7: ჩართეთ შუქები ბრაუზერის საშუალებით
- ნაბიჯი 8: გააკონტროლეთ შუქები ბრაუზერიდან
- ნაბიჯი 9: შექმენით თარგი სათაურისა და ქვედა კოლონტიტულისთვის
- ნაბიჯი 10: ზოგიერთი CSS რომ ეს ყველაფერი უკეთესად გამოიყურებოდეს
- ნაბიჯი 11: გმადლობთ
ვიდეო: რეკლამის დაბლოკვის ნეოპიქსელები: 11 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:20
მინდოდა გამეკეთებინა მარტივი ვებსაიტი დისტანციურად ნეოპიქსელების ზოლისთვის, რომელიც დაკავშირებულია ჩემს 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- ს ჩავატარე ერთი წუთი ან მეტი, ჩავიხედე ჟოლოდან 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 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: გმადლობთ
და ეს არის ის. ყველაფერი მუშაობს ჩემთვის და ვიმედოვნებ, რომ ეს თქვენთვისაც იმუშავებს, თუკი მირჩევთ სცადოთ ჩემი ინსტრუქტაჟი. თუ თქვენ სცადეთ რაიმე კოდის კოპირება, მე უნდა დავამატო რამდენიმე სივრცე აქ მის ასატვირთად, ასე რომ თქვენ მოგიწევთ მათი წაშლა სანამ კოდი კვლავ გამოდგება.
იმედი მაქვს მოგეწონათ ყველაფრის კითხვა. თუ გაქვთ გამოხმაურება, სიამოვნებით მოვისმენდი!
გირჩევთ:
KB-IDE: დაბლოკვის პროგრამა ESP32 დაფისთვის: 5 ნაბიჯი
KB-IDE: დაბლოკვის პროგრამა ESP32 დაფისთვის: 2019 წლის 15 ივნისს, MakerAsia იწყებს KB-IDE, ახალი IDE for ESP-IDF და Arduino IDE (ESP32 Core). KB-IDE არის სამმაგი რეჟიმი პროგრამირების IDE IoT დაფებისთვის. ამჟამად მხარს უჭერს ESP32 დაფებს. მომხმარებლებს შეუძლიათ პროგრამირება ბლოკის რეჟიმში (ვიზუალური პროგრამირება) და კოდი
ქსელის მასშტაბით რეკლამის დაბლოკვა თქვენი ჟოლოს პი: 4 ნაბიჯი
ქსელის მასშტაბით რეკლამის დაბლოკვა თქვენი Raspberry Pi– ით: მიიღეთ სუფთა, სწრაფი ვებ გვერდი და დაბლოკეთ შემაშფოთებელი რეკლამები თქვენს მთელ სახლის ქსელში Pi-hole და თქვენი Raspberry Pi– ით
როგორ დავაყენოთ Pi-Hole Raspberry Pi– ზე, ქსელის ფართო რეკლამის ბლოკერი !!: 25 ნაბიჯი
როგორ დავაყენოთ Pi-Hole Raspberry Pi– ზე, ქსელის ფართო სარეკლამო ბლოკერი !!: ამ პროექტისთვის დაგჭირდებათ: Raspberry Pi, რომელსაც შეუძლია ინტერნეტთან დაკავშირება Micro SD ბარათი, რომელსაც აქვს Raspbian LiteA კლავიატურა (SSH– ის დაყენებისათვის) მეორე მოწყობილობა (ვებ პორტალზე წვდომისათვის) UNIX– ის ძირითადი ცოდნა, ასევე ინტერფეისის ნავიგაცია
არა დაბლოკვის APDS9960 ჟესტების სენსორის განხორციელება: 5 ნაბიჯი
არაბლოკირება APDS9960 ჟესტების სენსორის განხორციელება: წინასიტყვაობა ეს ინსტრუქცია დეტალურად აღწერს, თუ როგორ უნდა შექმნათ APDS9960 ჟესტების სენსორის არაბლოკირების განხორციელება SparkFun_APDS-9960_Sensor_Arduino_Library.Introduction ან თუნდაც დაბლოკოს
SD ბარათის დაბლოკვის შეკეთება: 3 ნაბიჯი
SD ბარათის ჩაკეტვის შეკეთება: გამარჯობა, ეს არის ჩემი პირველი სასწავლო ინსტრუქცია და მე არ ვარ ინგლისურ ენაზე, გთხოვთ იყავით ლამაზი. დღეს მე მინდოდა მონაცემების შენახვა ჩემს SD ბარათზე, მაგრამ საკეტი ბარათი ჩაწერილი დაცული იყო) არ იყო. ასე რომ, დავგუგლე და აღმოვაჩინე, რომ