विषयसूची:

एलेक्सा रास्पबेरी पाई रिले नियंत्रक: 6 कदम
एलेक्सा रास्पबेरी पाई रिले नियंत्रक: 6 कदम

वीडियो: एलेक्सा रास्पबेरी पाई रिले नियंत्रक: 6 कदम

वीडियो: एलेक्सा रास्पबेरी पाई रिले नियंत्रक: 6 कदम
वीडियो: raspberry pi switch controller relay siansmart 16 channel relay 2024, नवंबर
Anonim
एलेक्सा रास्पबेरी पाई रिले नियंत्रक
एलेक्सा रास्पबेरी पाई रिले नियंत्रक
एलेक्सा रास्पबेरी पाई रिले नियंत्रक
एलेक्सा रास्पबेरी पाई रिले नियंत्रक
एलेक्सा रास्पबेरी पाई रिले नियंत्रक
एलेक्सा रास्पबेरी पाई रिले नियंत्रक

मैंने अमेज़ॅन के एलेक्सा के साथ आईओटी उपकरणों को एकीकृत करने के साथ अपने अनुभवों को साझा करने के लिए यह निर्देश योग्य बनाया है।

यह परियोजना एक रास्पबेरी पाई से जुड़े रिले बोर्ड को स्मार्थोम नियंत्रक से नियंत्रित करने की अनुमति देती है।

यह एलेक्सा के साथ परीक्षण किया गया है, लेकिन यह सैमसंग स्मार्टथिंग्स और अन्य नियंत्रण इंटरफेस के साथ ठीक काम करता प्रतीत होता है क्योंकि यह बेल्किन वेमो सॉकेट्स की एक श्रृंखला का अनुकरण करता है।

उत्कृष्ट FAUXMO कोड के आधार पर बहुत सारे उदाहरण हैं, लेकिन इसका मतलब है कि अजगर सीखना और मुझे अपने उपकरणों के लिए आवश्यक विस्तृत नियंत्रण नहीं दिया और इसलिए मैंने अपनी मूल कोडिंग भाषा के रूप में C का उपयोग करके स्क्रैच से एक को फिर से बनाने का फैसला किया।

मैं Amazon.com पर लैम्ब्डा कोड की गहराई तक नहीं जाना चाहता था इसलिए मैंने इसे वास्तव में सरल रखा है।

मैंने गीथूब पर स्रोत और नोट्स पोस्ट किए हैं:

github.com/Switchdoctorstu/StuPiMo

ट्यूटोरियल वास्तव में यह कवर करने के लिए है कि इसे कैसे काम करना है और अगर यह दूसरों की मदद करता है तो मेरे नोट्स प्रकाशित करें।

चरण 1: आपूर्ति और कनेक्शन

आपूर्ति और कनेक्शन
आपूर्ति और कनेक्शन
आपूर्ति और कनेक्शन
आपूर्ति और कनेक्शन
आपूर्ति और कनेक्शन
आपूर्ति और कनेक्शन

आपकी जरूरत की चीजें Amazon/EBay पर आसानी से उपलब्ध हैं:

  • रास्पबेरी पाई *
  • पाई बिजली की आपूर्ति
  • ड्यूपॉन्ट कनेक्टर्स
  • रिले बोर्ड
  • पुराना माइक्रो यूएसबी लीड (रिले कार्ड के लिए पावर के लिए आधा काटने के लिए)

कोई भी रास्पबेरी पाई काम करेगी, मैंने इसे मॉडल बी और ज़ीरो पर परीक्षण किया है।

*यदि आप पाई ज़ीरो का उपयोग कर रहे हैं तो आपको एक ओटीजी नेटवर्क एडेप्टर की आवश्यकता होगी (जब तक कि आप वाईफाई में 'डब्ल्यू' संस्करण नहीं खरीदते हैं)

आपको पाई को नेटवर्क से कनेक्ट करना होगा।

रिले कार्ड को पाई से जोड़ने के लिए डुपॉन्ट कनेक्टर का उपयोग करें।

ध्यान दें कि रिले कार्ड को बाहरी शक्ति का उपयोग करना चाहिए (लिंक को हटा दें और बाहरी 5v से कनेक्ट करें)। यह पीआई से संचालित होगा लेकिन उत्पादन चलाने के लिए इसकी सलाह नहीं दी जाती है।

अपने सेटअप के लिए मैंने बाहरी रूप से संचालित USB HUB का उपयोग किया। यह पीआई को शक्ति प्रदान करता है।

मैंने एक पुराने USB केबल के सिरे को भी काट दिया और सुरक्षित रहने के लिए रिले को दूसरे USB कनेक्शन से हब तक चला दिया। मेरा 'उत्पादन' संस्करण एक छोटे से 5V 5A स्विच मोड बिजली की आपूर्ति का उपयोग करता है। फिर से मैंने माइक्रो-यूएसबी के माध्यम से पाई को पावर देने के लिए एक यूएसबी लीड को आधा काट दिया और रिले बोर्ड को पावर देने के लिए दो ड्यूपॉन्ट कनेक्टर्स को काट दिया। USB लीड में 4 तार होते हैं, अधिकांश 5v आपूर्ति को दर्शाने के लिए लाल/काले रंग का उपयोग करते हैं, लेकिन यदि संदेह है तो यह सुनिश्चित करने के लिए मीटर का उपयोग करें कि आपको सही तार मिले।

बोर्ड पर रिले पिन PI हेडर पर संबंधित GPIO पिन से जुड़े होते हैं।

कोड आपको GPIO पिन चुनने की अनुमति देता है लेकिन मेरे द्वारा उपयोग किया जाने वाला डिफ़ॉल्ट था:

  1. रिले पिन १ - ग्राउंड
  2. रिले पिन 2 - रिले 1 - GPIO 0
  3. रिले पिन 3 - रिले 2 - GPIO 1
  4. रिले पिन 4 - रिले 3 - GPIO 2
  5. रिले पिन 5 - रिले 4 - GPIO 3
  6. रिले पिन 6 - रिले 5 - GPIO 4
  7. रिले पिन 7 - रिले 6 - GPIO 5
  8. रिले पिन 8 - रिले 7 - GPIO 6
  9. रिले पिन 9 - रिले 8 - GPIO 7
  10. रिले पिन 10 - तर्क के लिए +5v

चरण 2: पीआई सेटअप

मैं आपके पीआई को ऊपर और चलाने और नेटवर्क से कनेक्ट करने के तरीके पर एक ट्यूटोरियल फिर से नहीं बनाने जा रहा हूं।

एक उत्कृष्ट शिक्षाप्रद सहित कई गाइड हैं:

www.instructables.com/id/Ultimate-Raspberr…

आपको अपने आप को उस बिंदु पर ले जाना होगा जहां पीआई नेटवर्क पर दिखाई दे रहा है और आप उससे जुड़ सकते हैं।

इससे कोई फर्क नहीं पड़ता कि यह ईथरनेट या वायरलेस के माध्यम से है।

इस परियोजना को गेनी प्रोग्रामर एडिटर का उपयोग करके सिर्फ रास्पबेरी पीआई के साथ पूरा किया जा सकता है, लेकिन मुझे व्यक्तिगत रूप से विजुअल स्टूडियो या एक्लिप्स (या यहां तक कि नोटपैड ++) का उपयोग करके पीसी पर अपना कोड प्रेप करना आसान लगता है और फिर इसे डिबगिंग के लिए पीआई पर अपलोड करना आसान होता है। वीएनसी कनेक्शन। फिर से मैं इसे यहां कवर नहीं करने जा रहा हूं क्योंकि आरपीआई पर वीएनसी स्थापित करने के लिए कई उत्कृष्ट निर्देश हैं।

आपको बस उस बिंदु पर पहुंचना है जहां आप कोड अपलोड और संकलित कर सकते हैं।

एक नोट जो महत्वपूर्ण है वह यह है कि चूंकि यूपीएनपी हैंडलर को यूडीपी मल्टीकास्ट की आवश्यकता होती है, इसलिए उपयोग किए जाने वाले इंटरफेस को 'प्रोमिससियस' मोड पर सेट किया जाना चाहिए।

यह कमांड लाइन पर किया जा सकता है:

pi@raspberrypi:~ $ ifconfig eth0 promisc

और / या

pi@raspberrypi:~ $ ifconfig wlan0 promisc

इसे स्थायी बनाने की आवश्यकता है इसलिए मैंने /etc/rc.local. संपादित किया

सुडो नैनो \etc\rc.local

लाइन शामिल करने के लिए:

sudo ifconfig eth0 प्रोमिस्क

बैनर # लाइनों के पहले सेट के बाद यह सुनिश्चित करने के लिए कि इंटरफेस स्टार्टअप पर सेट किए गए थे।

चरण 3: कोड को डाउनलोड करना और संकलित करना

कोड ही मेरे Github भंडार में बैठता है;

github.com/Switchdoctorstu/StuPiMo/blob/ma…

जबकि रिपॉजिटरी को क्लोन करने के 'सही' तरीके हैं। मैंने पाई डेस्कटॉप पर गेनी संपादक को खोलना और कोड को पेस्ट करना आसान पाया।

इसी तरह, यदि आप कमांड लाइन का उपयोग कर रहे हैं;

एक नई निर्देशिका बनाएँ

एमकेडीआईआर स्टू

इसमें बदलें

सीडी स्टू

एक नई टेक्स्ट फ़ाइल बनाएं

नैनो StuPiMo.c

जीथब रॉ से कोड को कॉपी करें और नई फाइल में पेस्ट करें

सुरषित और बहार।

एक बार आपके पास सी स्रोत कोड ऑब्जेक्ट के रूप में फ़ाइल हो जाने के बाद आप इसे संकलित कर सकते हैं

gcc -o StuPiMo StuPiMo.c -l वायरिंगPi

ध्यान दें कि "-एल वायरिंगपी" की आवश्यकता यह सुनिश्चित करने के लिए है कि आवश्यक वायरिंगपीआई लाइब्रेरी में कंपाइलर लिंक है।

फिर कोड का उपयोग करके चलाया जा सकता है

./StuPiMo

दोबारा, यदि आप इसे स्टार्टअप पर चलाना चाहते हैं, तो कमांड का उपयोग करें:

सुडो नैनो /etc/rc.local

निम्नलिखित पंक्ति जोड़ने के लिए

sudo /home/pi/Stu/StuPiMo &

आपकी /etc/rc.local फ़ाइल में। बाहर निकलने पर अपनी फ़ाइल को सहेजना न भूलें।

ध्यान दें कि '&' यह सुनिश्चित करने के लिए आवश्यक है कि यह सुनिश्चित करने के लिए एक उप-प्रक्रिया उत्पन्न हो कि स्क्रिप्ट इस बिंदु पर अवरुद्ध नहीं है।

चरण 4: इसका उपयोग करना

एक बार कोड चलने के बाद, एलेक्सा से 'डिस्कवर डिवाइसेस' के लिए कहें और उसे सभी 8 वर्चुअल वीमो डिवाइस मिल जाएं।

फिर यह सिर्फ कहने का मामला है: "एलेक्सा सॉकेट 1 चालू करें" या "एलेक्सा सॉकेट 6 बंद करें" आदि और संबंधित रिले को बदल दिया जाएगा।

चरण 5: कोड कैसे काम करता है

कोड Belkin Wemo सॉकेट उपकरणों की एक श्रृंखला का अनुकरण करके काम करता है।

इसे प्राप्त करने के लिए इसे 2 प्रमुख कार्यों को संभालना होगा

  • एक UPNP डिस्कवरी ब्रॉडकास्ट हैंडलर
  • डिवाइस पर भेजे गए आदेशों और आवश्यक प्रतिक्रियाओं को प्रबंधित करने के लिए एक 'डिवाइस हैंडलर' (प्रति वर्चुअल डिवाइस में से एक)।

एक 'बोनस' विशेषता यह है कि यह उपकरणों के नियंत्रण की अनुमति देने के लिए एक वेब पेज भी प्रकाशित करता है।

यूपीएनपी हैंडलर

UPNP हैंडलर 239.255.255.250 पोर्ट 1900 पर SSDP प्रोटोकॉल पैकेट की निगरानी के लिए एक सॉकेट खोलता है।

यह खोज प्रतिक्रिया पैकेट के साथ आने वाले किसी भी 'एम-सर्च' प्रश्नों का जवाब देता है जो व्यक्तिगत वेमो एमुलेटर की घोषणा करता है जो कोई भी पूछता है।

डिवाइस हैंडलर

डिवाइस हैंडलर (प्रति वर्चुअल डिवाइस एक) आईपी पोर्ट की एक श्रृंखला की निगरानी करते हैं और अनुरोधों का जवाब देते हैं।

पूछे जाने पर यह एक setup.xml प्रतिक्रिया देगा

पूछे जाने पर यह एक घटना विवरण फ़ाइल की सेवा करेगा

यह GETBINARYSTATE अनुरोध का जवाब देगा

यह एक SETBINARYSTATE अनुरोध को संसाधित करेगा और उसका जवाब देगा

वेब सर्वर

वेब सर्वर एक साधारण दिनचर्या है जो एक HTML फॉर्म बनाता है जिसमें प्रति रिले एक बटन होता है।

यह दबाए जा रहे बटनों का जवाब देगा और तदनुसार रिले की स्थिति को चालू करेगा।

चरण 6: अनुकूलन और अनुकूल नाम

अनुकूलन और अनुकूल नाम
अनुकूलन और अनुकूल नाम

मैं इसे सरल और संपादन योग्य रखने के लिए कोड के साथ पागल नहीं हुआ हूं।

मूल बातें कोड की शुरुआत में परिभाषाओं द्वारा अनुकूलित की जा सकती हैं:

// वैश्विक परिभाषाएँ#वेबपोर्ट 5353 परिभाषित करें // वेब सर्वर को चलाने के लिए पोर्ट

#define NUMDEVICES 8 // बनाने के लिए वर्चुअल डिवाइस की संख्या

#define PORTBASE 43450 // आधार आईपी पोर्ट से वृद्धि करने के लिए

वेबपोर्ट वह पोर्ट नंबर है जिस पर इन-बिल्ट वेब सर्वर चलता है। चीजों को आसान बनाने के लिए इसे 80 पर बैठने के लिए बनाया जा सकता है लेकिन मैंने पाया कि यह टॉमकैट या स्थानीय रूप से चल रही अन्य सेवाओं के साथ विरोधाभासी है।

NUMDEVICES लॉन्च करने के लिए व्यक्तिगत WEMO एमुलेटर की संख्या को परिभाषित करता है। अगर आपके पास 2 पोर्ट रिले कार्ड है तो इसे 2, 4 पोर्ट = 4 आदि पर सेट करें।

उपकरणों के लिए अनुकूल नाम एक रूटीन में सेट किए जाते हैं जिन्हें setup_names कहा जाता है:

int setup_names (चार अनुकूल [NUMDEVICES] [NAMELEN]) { int i = 0;

// इस लूप का उपयोग करें

के लिए (i = 0; मैं < NUMDEVICES; i++) {

स्प्रिंटफ (दोस्ताना , "सॉकेट% d", i + 1);

}

// या डिवाइस नामों को पॉप्युलेट करने के लिए निम्न मैनुअल तालिका

/*

strcpy (दोस्ताना [0], "बेडरूम टीवी");

strcpy (दोस्ताना [1], "इलेक्ट्रिक कंबल");

strcpy (दोस्ताना [2], "बेडरूम लैंप");

strcpy (दोस्ताना [3], "सॉकेट 4");

strcpy (दोस्ताना [4], "सॉकेट 5");

strcpy (दोस्ताना [5], "सॉकेट 6");

strcpy (दोस्ताना [6], "सॉकेट 7");

strcpy (दोस्ताना [7], "सॉकेट 8");

*/

वापसी मैं;

}

मैंने प्रत्येक डिवाइस को 'सॉकेट एन' कॉल करने के लिए एक लूप का उपयोग किया है, लेकिन आप इस लूप को हटा सकते हैं और इसके बजाय अपने स्वयं के अनुकूल नाम जोड़ सकते हैं (बस सुनिश्चित करें कि आप NUMDEVICES के समान नंबर जोड़ते हैं) यदि आप /* */ को हटाते हैं

यदि आप कोई परिवर्तन करते हैं तो कोड को फिर से संकलित करना याद रखें।

सिफारिश की: