विषयसूची:

विज्ञापन-अवरोधक Neopixels: 11 कदम
विज्ञापन-अवरोधक Neopixels: 11 कदम

वीडियो: विज्ञापन-अवरोधक Neopixels: 11 कदम

वीडियो: विज्ञापन-अवरोधक Neopixels: 11 कदम
वीडियो: NeoPixel Ring Lamp #adafruit 2024, जुलाई
Anonim
विज्ञापन-अवरोधक Neopixels
विज्ञापन-अवरोधक Neopixels

मैं अपने रास्पबेरी पाई शून्य से जुड़े नियोपिक्सल की एक पट्टी के लिए एक साधारण वेबसाइट को रिमोट के रूप में बनाना चाहता था और इसका उपयोग पाई-होल का उपयोग करके अपने नेटवर्क पर विज्ञापनों को ब्लॉक करने के लिए करता रहा। पहले मैं बस अपने कमरे में कुछ एलईडी जोड़ना चाहता था, लेकिन सब कुछ तार-तार कर देने से मुझे एहसास हुआ कि मेरे पास उन्हें आसानी से नियंत्रित करने का कोई तरीका नहीं है। इसलिए मैंने पहले से स्थापित पाई-होल इंस्टॉलर अपाचे सर्वर का उपयोग करके कुछ बुनियादी नियंत्रण विकल्पों के साथ एक साधारण वेबसाइट बनाने का फैसला किया। मैंने www-डेटा रूट अनुमतियां दी हैं, जो एक सुरक्षा जोखिम है, इसलिए आपको वेबसर्वर को बाहरी दुनिया के लिए उपलब्ध नहीं होने देना चाहिए। यह मुख्य रूप से मेरे अपने दस्तावेज़ीकरण के लिए शुरू हुआ और किसी तरह से मेरा पहला निर्देश बन गया;) तो मैं वास्तव में सराहना करूंगा यदि आप बता सकते हैं कि क्या कुछ अस्पष्ट है या अगर मैं पूरी तरह से कुछ याद करता हूं।

चरण 1: प्रयुक्त सामग्री

  • रास्पबेरी पाई (मैंने एक पीआई 2 पर शुरू किया और फिर डब्ल्यूएच में बदल दिया, जीपीओ पिन थोड़ा अलग हो सकता है लेकिन अन्यथा हर मॉडल ठीक है)

    • यदि आपके पास बिना वाईफाई के आरपीआई है, तो वाईफाई एडेप्टर भी उपयोगी है।
    • रास्पबेरी पाई के लिए वैकल्पिक रूप से एक मामला
  • 2 नर-मादा जम्पर तार (उदाहरण के लिए)
  • Neopixels ws2811 (मैंने इनका इस्तेमाल किया)
  • आरपीआई के लिए 1 10W बिजली की आपूर्ति (एक पुराना फोन चार्जर करेगा)
  • Neopixels के लिए 1 ~ 50W बिजली की आपूर्ति (मैंने इस तरह से एक का उपयोग किया, लेकिन शायद एक छोटा पर्याप्त होगा, लेकिन यदि आप अधिक एलईडी चाहते हैं, तो आपके पास विस्तार करने के लिए कुछ जगह बाकी है।)
  • महिला जैक कनेक्टर प्लग (इस तरह)

चरण 2: ऑपरेटिंग सिस्टम तैयार करें

ऑपरेटिंग सिस्टम तैयार करें
ऑपरेटिंग सिस्टम तैयार करें

raspberrypi.org से नवीनतम संस्करण Rasbian डाउनलोड करें लाइट संस्करण इस प्रोजेक्ट के लिए ठीक है, यदि आप किसी अन्य चीज़ के लिए रास्पबेरी पाई का उपयोग करने की योजना बना रहे हैं, तो आप gui के साथ पूर्ण संस्करण स्थापित करने पर विचार कर सकते हैं। तब मैंने एचर के साथ छवि को जला दिया। उसके बाद यह सुनिश्चित करने के लिए कि यह मेरे वाईफाई नेटवर्क से जुड़ जाएगा मैंने एसडी कार्ड की बूट निर्देशिका में wpa_supplicant.conf जोड़ा। फ़ाइल की सामग्री इस तरह दिखनी चाहिए:

~~~

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

नेटवर्क = {

एसएसआईडी = "एसएसआईडी"

psk = "पासवर्ड"

key_mgmt=WPA-PSK }

~~~

Ssh को सक्षम करने के लिए मैंने उसी निर्देशिका में ssh (बिना किसी एक्सटेंशन के) नामक एक फ़ाइल बनाई। यह सुनिश्चित करेगा कि आप अपने लैन में किसी अन्य कंप्यूटर से सब कुछ कॉन्फ़िगर करने में सक्षम हैं।

चरण 3: Neopixels को जोड़ना

Neopixels को जोड़ना
Neopixels को जोड़ना
Neopixels को जोड़ना
Neopixels को जोड़ना

सबसे पहले मैंने महिला जैक कनेक्टर में बिजली की आपूर्ति को प्लग किया और आरपीआई को एक मामले में रखा। मैंने जैक कनेक्टर के नकारात्मक पक्ष में एल ई डी (नीली केबल) और एक जम्पर तार के एक पुरुष पक्ष से ग्राउंड केबल को खराब कर दिया। जम्पर वायर का दूसरा सिरा मैंने gpio हेडर पर एक ग्राउंड पिन से कनेक्ट किया था, मैंने पिन 6 का उपयोग किया था, लेकिन आप जिस सटीक पिन का उपयोग कर सकते हैं, वह आपके द्वारा उपयोग किए जा रहे सटीक मॉडल RPi पर निर्भर करेगा।

दूसरे मैंने जैक कनेक्टर के सकारात्मक छोर पर 5v केबल को एलईडी (लाल केबल) से जोड़ा। मेरे नेतृत्व में एक अतिरिक्त ग्राउंड केबल और डेटा केबल (सफेद केबल) पर एक जम्पर वायर कनेक्टर था। मैंने सिर्फ अतिरिक्त ग्राउंड केबल को नजरअंदाज किया, यह मेरे सेटअप के लिए अनावश्यक था। डेटा केबल पर मैंने जीपीओ पिन 12 के साथ एक पुरुष से महिला जम्पर तार को जोड़ा, फिर से आपको जिस सटीक पिन का उपयोग करना चाहिए वह आपके आरपीआई पर निर्भर करता है। फिर मैंने आरपीआई और पिक्सल के लिए अपनी बिजली आपूर्ति में प्लग किया। अगर सब कुछ सही ढंग से तार-तार हो जाए, तो थोड़े समय के लिए एल ई डी प्रकाश में आ गया।

चरण 4: आरपीआई शुरू करें

आरपीआई शुरू करें
आरपीआई शुरू करें

आरपीआई को बूट करने के लिए एक या दो मिनट देने के बाद, मैंने रास्पबेरी से आईपी एड्रेस को नैम्प के साथ देखा। लेकिन कोई भी नेटवर्क स्कैनर, आपके राउटर का सूचना पैनल या ज्यादातर मामलों में बस "raspberrypi.local" करेगा। उस जानकारी के साथ मैं एसएसएच के माध्यम से आरपीआई से जुड़ा था। डिफ़ॉल्ट उपयोगकर्ता पासवर्ड रास्पबेरी के साथ पीआई है। तो यह पहली चीज़ है जिसे मैंने पहले लॉगिन के बाद सीधे `passwd` का उपयोग करके बदला है। यदि आप अपने स्थानीय नेटवर्क के बाहर से एसएसएच के माध्यम से अपने पीआई तक पहुंचना चाहते हैं, तो आपको विफलता 2ban और कुंजी प्रमाणीकरण देखना चाहिए। मेरे पास व्यक्तिगत रूप से इसके लिए उपयोग का मामला नहीं है, इसलिए मैं इसे केवल एक पासवर्ड के साथ छोड़ दूंगा।

दूसरे, मैंने `sudo apt update && sudo apt upgrade -Y` का उपयोग करके सॉफ्टवेयर को अपडेट किया। मुझे 'सूडो एपीटी-गेट इंस्टाल स्कैन्स स्विग गिट पायथन-देव बिल्ड-एसेंशियल -वाई' को कंपाइल करने के लिए कुछ अतिरिक्त सॉफ्टवेयर की भी जरूरत थी। फिर मैंने जेरेमी गारफ से जीथब `गिट क्लोन https://github.com/jgarff/rpi_ws281x.git` पर उत्कृष्ट स्वतंत्रता की प्रतिलिपि बनाई। उसके बाद स्वतंत्रता का क्लोन बनाया गया था, मैं rpi_ws281x निर्देशिका में गया, स्कैन का उपयोग किया और फिर `sudo python python/setup.py install` के साथ लिबरी स्थापित किया। अजगर/उदाहरणों में वास्तव में साफ-सुथरे एनिमेशन के साथ एक अच्छा डेमो "strandtest.py" है जिसे आप `sudo python python/examples/strandtest.py` से शुरू कर सकते हैं।

चरण 5: पाई-होल

पाई-होल
पाई-होल

एक नेटवर्क वाइड ऐड ब्लॉकर बनाने के लिए, पाई-होल एकदम सही है। यह सिर्फ `सुडो कर्ल -एसएसएल https://install.pi-hole.net |. के साथ स्थापित होता है बैश`। अच्छी बात यह है कि यह एक वेब सर्वर भी स्थापित करेगा।

इंस्टॉलर चलाने के बाद आप अपने राउटर की व्यवस्थापक साइट पर लॉग इन करना चाहेंगे और अपने आरपीआई को एक स्थिर आईपी-एड्रेस देंगे और इसे डीएचसीपी सर्वर के रूप में सेट करेंगे। यदि आपने कम लीज समय निर्धारित किया है तो आपके पीआई-होल को अभी काम करना चाहिए।

चरण 6: रोशनी को नियंत्रित करें

रोशनी को नियंत्रित करें
रोशनी को नियंत्रित करें
रोशनी को नियंत्रित करें
रोशनी को नियंत्रित करें
रोशनी को नियंत्रित करें
रोशनी को नियंत्रित करें

छोटे अजगर कार्यक्रमों के साथ नियोपिक्सल को नियंत्रित करने का सबसे आसान तरीका है। लेकिन हर बार जब आप लाइट चालू करना चाहते हैं तो एसएसएच का उपयोग करना असुविधाजनक होता है, खासकर मोबाइल डिवाइस पर। इसलिए मैंने एक छोटी सी वेबसाइट को रिमोट कंट्रोल के रूप में इस्तेमाल करने का फैसला किया। यह एक सुरक्षा जोखिम है, क्योंकि मैंने पासवर्ड सत्यापन के बिना www-data रूट अनुमति दी थी। आपको शायद इस साइट को अपने क्षेत्र के बाहर उपलब्ध नहीं कराना चाहिए।

पीआई-होल के डैशबोर्ड और लाइट रिमोट के बीच चयन करना आसान बनाने के लिए, मैंने उपयोगकर्ता पीआई को /var/www/html को `sudo chown -R pi /var/www.html` के साथ लिखने की सुविधा दी और मैंने एक बनाया index.php फ़ाइल /var/www/html/ में। कुछ सरल जैसे:

~~~

इंडेक्स पाई होल लाइट रिमोट

~~~

ठीक है। फिर मैंने नियोपिक्सल से सब कुछ एक साथ रखने के लिए रोशनी नामक एक नया फ़ोल्डर बनाया। यहां मैंने लिबर्टी से strandtest.py के आधार पर color.py बनाया।

~~~

नियोपिक्सल आयात से * # कुछ पुस्तकालयों को आयात करें

आयात प्रणाली

डीईएफ़ एलईडी (पट्टी, रंग, प्रारंभ, अंत): # एलईडी को कॉल करने के लिए एक फ़ंक्शन बनाएं

मैं के लिए सीमा में (शुरू, अंत):

strip.setPixelColor(i, color)

कपड़े उतारने का प्रदर्शन()

BRIGHTNESS = int(sys.argv[4]) # कमांडलाइन पर चौथा पैरामीटर ब्राइटनेस होगा। (१-२५५)

COUNT = 50 # एलईडी पिन की मात्रा = 12 # आरपीआई पर इस्तेमाल किया गया पिन

FREQ_HZ = 800000 # हर्ट्ज में एलईडी सिग्नल आवृत्ति (आमतौर पर 800khz)

डीएमए = 5 # डीएमए चैनल सिग्नल उत्पन्न करने के लिए उपयोग करने के लिए (5 प्रयास करें)

INVERT = गलत # सिग्नल को उल्टा करने के लिए सही है (एनपीएन ट्रांजिस्टर स्तर का उपयोग करते समय

पट्टी = Adafruit_NeoPixel(COUNT, PIN, FREQ_HZ, DMA, INVERT, BRIGHTNESS)

स्ट्रिप.बेगिन ()

R = int(sys.argv[1]) # लाल की मात्रा पहला पैरामीटर है

G = int(sys.argv[2]) # हरे रंग की मात्रा दूसरा पैरामीटर है

B = int(sys.argv[3]) # नीले रंग की मात्रा तीसरा पैरामीटर है

प्रयत्न:

एलईडी (पट्टी, रंग (आर, जी, बी), 0, 49) # चुने हुए रंग और चमक के साथ चलो शुरू करेंगे।

कीबोर्ड इंटरप्ट को छोड़कर:

रंग (पट्टी, रंग (0, 0, 0), 0, 49)

~~~

यदि आप टर्मिनल पर सूडो के साथ इसे चलाते हैं तो रोशनी निर्दिष्ट रंग में चलनी चाहिए। www-data sudo अनुमति देने के लिए मैंने रूट उपयोगकर्ता के तहत सीधे sudoers फ़ाइल (/etc/sudoers) में `www-data ALL=(ALL) NOPASSWD:ALL)` जोड़ा।

चरण 7: ब्राउज़र के साथ लाइट चालू करें

फिर मैंने एक और index.php बनाया, इस बार /lights में। ~~~

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

~~~

जब मैं अब raspberrypi.local/lights/index.php पर जाता हूं तो एलईडी सफेद हो जाएगी। हालांकि यह एक अच्छी शुरुआत है, मुझे रिमोट पर कम से कम कुछ बटन रखना पसंद है।

चरण 8: ब्राउज़र से रोशनी को नियंत्रित करें

मैंने html फॉर्म का उपयोग करके बटन के साथ एक इंटरफ़ेस बनाया है। मुझे उन चीजों को करना पसंद नहीं है जिनकी आवश्यकता नहीं है, इसलिए मैंने अपने हेडर, फुटर और मुख्य PHP कोड के साथ टेम्प्लेट नामक एक फ़ोल्डर बनाया। मेरा (अभी के लिए) final /lights/index.php इस तरह दिखता है:

~~~

~~~

बटनों को काम करने के लिए मैंने एक टेम्पलेट BasicControl.php बनाया। इसमें मैंने उस कोड को निर्दिष्ट किया है जिसे एक बटन दबाए जाने पर निष्पादित किया जाना चाहिए। क्योंकि मुझे सबसे अजीब एनिमेशन पसंद थे, मैंने उसे भी शामिल किया। स्ट्रैंडटेस्ट लंबे समय तक जारी रहेगा, इसलिए जब भी मैं चाहूं प्रक्रियाओं को रोकने के लिए मैंने एक और बटन बनाया।

~~~< ?php

$ मैं = १००;

$आर = 0;

$ जी = 0;

$ बी = 0;

अगर (जारी ($_POST['strandtest_start'])) {exec("sudo python strandtest.py"); }

और अगर (जारी ($_POST['strandtest_stop'])) {exec("sudo pkill -9 -f strandtest.py"); }

और अगर (जारी ($_POST['लाल'])) {$R = 255; $ जी = 0; $ बी = 0; निष्पादन ("सुडो पायथन color.py $R $G $B $I"); }

और अगर (जारी ($ _ पोस्ट ['हरा'])) {$ आर = 0; $जी = 255; $ बी = 0; निष्पादन ("सुडो पायथन color.py $R $G $B $I"); }

और अगर (जारी ($ _ पोस्ट ['नीला'])) {$ आर = 0; $ जी = 0; $ बी = 255; निष्पादन ("सुडो पायथन color.py $R $G $B $I"); }

और अगर (जारी ($ _ पोस्ट ['सफेद'])) {$ आर = 255; $जी = 255; $ बी = 255; निष्पादन ("सुडो पायथन color.py $R $G $B $I"); }

और अगर (जारी ($ _ POST ['ऑफ'])) {shell_exec ('सुडो पायथन ऑफ.पी'); }

और अगर (जारी ($ _ POST ['रिबूट'])) {shell_exec ('सुडो अब रिबूट करें'); } ?>

~~~

चरण 9: शीर्षलेख और पाद लेख के लिए एक टेम्पलेट बनाएं

अब यह सब काम करता है, लेकिन यह देखने में बहुत सुखद नहीं है। शीर्ष लेख और पादलेख आयात करने के बाद साइट के सभी तत्व उपलब्ध हैं, बस स्टाइल नहीं।

हैडर.php:

~~~

दीपक

लैम्पजेस

बुनियादी नियंत्रण

उन्नत नियंत्रण

~~~

और footer.php:

~~~

~~~

चरण 10: कुछ सीएसएस यह सब थोड़ा बेहतर दिखने के लिए

कुछ सीएसएस यह सब थोड़ा बेहतर दिखने के लिए
कुछ सीएसएस यह सब थोड़ा बेहतर दिखने के लिए

जैसा कि आपने देखा होगा, मैं लेआउट को नियंत्रित करने के लिए एक सीएसएस फ़ाइल का उपयोग कर रहा हूँ। यह सुनिश्चित करने के लिए कि मेरा रिमोट छोटी स्क्रीन पर प्रयोग करने योग्य है और साथ ही मैंने ऑटोवैप के साथ कुछ सीएसएस फ्लेक्सबॉक्स का उपयोग किया है।

~~~

/* लाइट कंट्रोल इंटरफेस के लिए स्टाइलशीट *

*हर पन्ने पर लागू*/

शरीर {पृष्ठभूमि-रंग: f9fcfa; फ़ॉन्ट-परिवार: एरियल; मार्जिन: 0; }

h1 {रंग: सफ़ेद; पाठ-संरेखण: केंद्र; }

पी {फ़ॉन्ट-फ़ैमिली: वर्दाना; फ़ॉन्ट-आकार: 20px; }

एच२ { }

/* हैडर */

हेडर {ऊंचाई: 10%; प्रदर्शन: फ्लेक्स; औचित्य-सामग्री: फ्लेक्स-स्टार्ट; संरेखित-आइटम: केंद्र; मार्जिन: 0px; पैडिंग-बाएं: 5%; पृष्ठभूमि:#3F51B5; संरेखित-आइटम: केंद्र; }

.हैडरलिंक्स {रंग: सफ़ेद; }

.नवबार {डिस्प्ले: फ्लेक्स; फ्लेक्स: 30%; औचित्य-सामग्री: अंतरिक्ष-चारों ओर; पृष्ठभूमि-रंग: #3F51B5; रंग सफेद; }

/* पाद लेख */

फुटर {पृष्ठभूमि-रंग: #3F51B5; ऊंचाई: 10%; पाठ-संरेखण: केंद्र; }

/* इंडेक्स.php */

.बटन {डिस्प्ले: फ्लेक्स; फ्लेक्स-दिशा: पंक्ति; फ्लेक्स-रैप: रैप; औचित्य-सामग्री:अंतरिक्ष-बीच; ऊंचाई: 80%; संरेखित-आइटम: फ्लेक्स-प्रारंभ; }

.buttons_index { पैडिंग: 0%; सीमा-चौड़ाई: पतली; सीमा-शैली: ठोस; सीमा-रंग: काला; पृष्ठभूमि-रंग: #3949ab; रंग सफेद; फ़ॉन्ट-परिवार: सेन्स-सेरिफ़; चौड़ाई: 24%; ऊंचाई: 20%; }

.buttons_index: होवर {पैडिंग: 0%; सीमा-चौड़ाई: पतली; सीमा-शैली: ठोस; सीमा-रंग: काला; पृष्ठभूमि-रंग: #536DFE; रंग सफेद; फ़ॉन्ट-परिवार: सेन्स-सेरिफ़; चौड़ाई: 24%; ऊंचाई: 20%; }

~~~

चरण 11: धन्यवाद

और बस। मेरे लिए सब कुछ काम करता है और मुझे आशा है कि यह आपके लिए भी काम करेगा यदि मेरे निर्देश का प्रयास करें। यदि आपने कुछ कोड कॉपी करने का प्रयास किया है, तो मुझे इसे यहां अपलोड करने के लिए कुछ रिक्त स्थान जोड़ना होगा, इसलिए कोड के फिर से उपयोगी होने से पहले आपको उन्हें हटाना होगा।

मुझे आशा है कि आपको सब कुछ पढ़कर अच्छा लगा होगा। अगर आपके पास प्रतिक्रिया है, तो मुझे इसे सुनना अच्छा लगेगा!

सिफारिश की: