Arduino - नेटवर्क संचार

टेक्सास इंस्ट्रूमेंट्स से CC3000 वाईफाई मॉड्यूल एक छोटा सा सिल्वर पैकेज है, जो अंत में आपके Arino प्रोजेक्ट्स के लिए आसान-से-उपयोग, सस्ती वाईफाई कार्यक्षमता लाता है।

यह संचार के लिए SPI का उपयोग करता है (UART नहीं!) ताकि आप डेटा को जितना चाहें उतनी तेजी से धक्का दे सकें या जितना चाहें उतना धीमा कर सकें। इसमें IRQ पिन के साथ एक उचित व्यवधान प्रणाली है ताकि आप अतुल्यकालिक कनेक्शन रख सकें। यह 802.11 बी / जी, ओपन / डब्ल्यूईपी / डब्ल्यूपीए / डब्ल्यूपीए 2 सुरक्षा, टीकेआईपी और एईएस का समर्थन करता है। एक "BSD सॉकेट" इंटरफ़ेस के साथ निर्मित टीसीपी / आईपी स्टैक क्लाइंट और सर्वर मोड दोनों में टीसीपी और यूडीपी का समर्थन करता है।

अवयव आवश्यक

आपको निम्नलिखित घटकों की आवश्यकता होगी -

  • 1 × Arduino Uno
  • 1 × प्रवेश CC3000 ब्रेकआउट बोर्ड
  • 1 × 5V रिले
  • 1 × आयताकार डायोड
  • 1 × एलईडी
  • 1 × 220 ओम अवरोधक
  • 1 × ब्रेडबोर्ड और कुछ जम्पर तार

इस परियोजना के लिए, आपको बस सामान्य Arduino IDE, Adafruit की CC3000 लाइब्रेरी और CC3000 CNS लाइब्रेरी की आवश्यकता है। हम वाईफाई के माध्यम से रिले को कमांड भेजने के लिए aREST लाइब्रेरी का उपयोग करने जा रहे हैं।

प्रक्रिया

सर्किट आरेख का पालन करें और नीचे दी गई छवि में दिखाए अनुसार कनेक्शन बनाएं।

इस परियोजना के लिए हार्डवेयर विन्यास बहुत आसान है।

  • Arduino बोर्ड के नंबर 3 को पिन करने के लिए CC3000 बोर्ड के IRQ पिन को कनेक्ट करें।
  • 5 पिन करने के लिए VBAT, और 10 पिन करने के लिए CS।
  • Arduino बोर्ड में SPI पिन को कनेक्ट करें: MOSI, MISO, और CLK को क्रमशः 11, 12 और 13 पिन से पिन करें।
  • वी में Arduino 5V, और GND GND से जुड़ा है।

अब हम रिले को कनेक्ट करते हैं।

ब्रेडबोर्ड पर रिले रखने के बाद, आप अपने रिले पर दो महत्वपूर्ण भागों की पहचान करना शुरू कर सकते हैं: कॉइल भाग जो रिले को आदेश देता है, और स्विच भाग जहां हम एलईडी संलग्न करेंगे।

  • सबसे पहले, Arduino बोर्ड के पिन नंबर 8 को कॉइल के एक पिन से कनेक्ट करें।
  • दूसरे पिन को Arduino बोर्ड की जमीन से कनेक्ट करें।

आपको अपने सर्किट को बचाने के लिए कॉइल के पिन के ऊपर रेक्टिफायर डायोड (ग्राउंड पिन से जुड़ा हुआ एनोड) रखना होता है, जब रिले स्विच कर रहा होता है।

  • रिले के स्विच के सामान्य पिन को Arduino बोर्ड के + 5V से कनेक्ट करें।

  • अंत में, स्विच के दूसरे पिन में से एक को कनेक्ट करें (आमतौर पर, वह जो रिले के बंद होने पर कनेक्ट नहीं होता है) 220 ओम अवरोधक के साथ श्रृंखला में एलईडी के लिए, और एलईडी के दूसरी तरफ को Arduino के जमीन से कनेक्ट करें मंडल।

व्यक्तिगत घटकों का परीक्षण

आप निम्न स्केच के साथ रिले का परीक्षण कर सकते हैं -

const int relay_pin = 8; // Relay pin

void setup() {
   Serial.begin(9600);
   pinMode(relay_pin,OUTPUT);
}

void loop() {
   // Activate relay
   digitalWrite(relay_pin, HIGH);
   // Wait for 1 second
   delay(1000);
   // Deactivate relay
   digitalWrite(relay_pin, LOW);
   // Wait for 1 second
   delay(1000);
}

नोट करने के लिए कोड

कोड आत्म-व्याख्यात्मक है। आप बस इसे बोर्ड पर अपलोड कर सकते हैं और रिले हर सेकंड राज्यों को स्विच करेगा, और एलईडी तदनुसार चालू और बंद करेगा।

वाईफाई कनेक्टिविटी जोड़ना

आइए अब CC3000 वाईफाई चिप का उपयोग करके वायरलेस तरीके से रिले को नियंत्रित करें। इस परियोजना के लिए सॉफ्टवेयर टीसीपी प्रोटोकॉल पर आधारित है। हालाँकि, इस परियोजना के लिए, Arduino बोर्ड एक छोटा वेब सर्वर चला रहा होगा, इसलिए हम कंप्यूटर से आने वाले कमांड के लिए "सुन" सकते हैं। हम पहले Arduino स्केच की देखभाल करेंगे, और फिर हम देखेंगे कि सर्वर-साइड कोड कैसे लिखें और एक अच्छा इंटरफ़ेस बनाएं।

सबसे पहले, Arduino स्केच। यहां लक्ष्य अपने वाईफाई नेटवर्क से कनेक्ट करना है, एक वेब सर्वर बनाना है, अगर आने वाले टीसीपी कनेक्शन हैं, तो जांचें और फिर उसी के अनुसार रिले की स्थिति को बदलें।

संहिता के महत्वपूर्ण भाग

#include <Adafruit_CC3000.h>
#include <SPI.h>
#include <CC3000_MDNS.h>
#include <Ethernet.h>
#include <aREST.h>

आपको उस कोड के अंदर परिभाषित करने की आवश्यकता है जो आपके कॉन्फ़िगरेशन के लिए विशिष्ट है, अर्थात वाई-फाई नाम और पासवर्ड, और टीसीपी संचार के लिए पोर्ट (हमने यहां 80 का उपयोग किया है)।

// WiFi network (change with your settings!)
   #define WLAN_SSID "yourNetwork" // cannot be longer than 32 characters!
   #define WLAN_PASS "yourPassword"
   #define WLAN_SECURITY WLAN_SEC_WPA2 // This can be WLAN_SEC_UNSEC, WLAN_SEC_WEP, 
   // WLAN_SEC_WPA or WLAN_SEC_WPA2

// The port to listen for incoming TCP connections
   #define LISTEN_PORT 80

फिर हम CC3000 इंस्टेंस, सर्वर और ऐरेस्ट उदाहरण बना सकते हैं -

// Server instance
   Adafruit_CC3000_Server restServer(LISTEN_PORT); // DNS responder instance
   MDNSResponder mdns; // Create aREST instance
   aREST rest = aREST();

स्केच के सेटअप () भाग में, हम अब CC3000 चिप को नेटवर्क से जोड़ सकते हैं -

cc3000.connectToAP(WLAN_SSID, WLAN_PASS, WLAN_SECURITY);

कंप्यूटर को कैसे पता चलेगा कि डेटा कहाँ भेजना है? एक तरीका स्केच को एक बार चलाना होगा, फिर CC3000 बोर्ड का आईपी पता प्राप्त करना होगा, और सर्वर कोड को फिर से संशोधित करना होगा। हालाँकि, हम बेहतर कर सकते हैं, और यही वह जगह है जहाँ CC3000 MDNS लाइब्रेरी चलन में है। हम इस पुस्तकालय के साथ अपने CC3000 बोर्ड को एक निश्चित नाम निर्दिष्ट करेंगे, इसलिए हम इस नाम को सीधे सर्वर कोड में लिख सकते हैं।

यह निम्नलिखित कोड के साथ किया जाता है -

if (!mdns.begin("arduino", cc3000)) {
   while(1);
}

हमें आने वाले कनेक्शनों के लिए भी सुनना होगा।

restServer.begin();

अगला, हम स्केच के लूप () फ़ंक्शन को कोड करेंगे जो लगातार निष्पादित होंगे। हमें सबसे पहले mDNS सर्वर को अपडेट करना होगा।

mdns.update();

Arduino बोर्ड पर चलने वाला सर्वर आने वाले कनेक्शन की प्रतीक्षा करेगा और अनुरोधों को संभाल लेगा।

Adafruit_CC3000_ClientRef client = restServer.available();
rest.handle(client);

वाईफाई के माध्यम से परियोजनाओं का परीक्षण करना अब काफी आसान है। सुनिश्चित करें कि आपने अपने स्वयं के वाईफाई नाम और पासवर्ड के साथ स्केच को अपडेट किया है, और स्केच को अपने Arduino बोर्ड पर अपलोड करें। अपने Arduino IDE सीरियल मॉनिटर को खोलें, और अपने बोर्ड के आईपी पते की तलाश करें।

यहाँ बाकी के लिए मान लें कि यह 192.168.1.103 की तरह है।

फिर, बस अपने पसंदीदा वेब ब्राउज़र पर जाएं, और टाइप करें -

192.168.1.103/digital/8/1

आपको यह देखना चाहिए कि आपका रिले स्वतः चालू हो जाता है।

रिले इंटरफ़ेस का निर्माण

अब हम प्रोजेक्ट के इंटरफ़ेस को कोड करेंगे। यहां दो भाग होंगे: इंटरफ़ेस पर क्लिक को संभालने के लिए एक HTML फ़ाइल जिसमें इंटरफ़ेस और क्लाइंट-साइड जावास्क्रिप्ट फ़ाइल है। यहाँ इंटरफ़ेस पर आधारित हैaREST.js परियोजना, जो आपके कंप्यूटर से वाईफाई उपकरणों को आसानी से नियंत्रित करने के लिए बनाई गई थी।

आइए हम पहले HTML फाइल देखते हैं, जिसे interface.html कहा जाता है। पहले भाग में इंटरफ़ेस के लिए सभी आवश्यक लाइब्रेरीज़ आयात करना शामिल है -

<head>
   <meta charset = utf-8 />
   <title> Relay Control </title>
   <link rel = "stylesheet" type = "text/css" 
      href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
   <link rel="stylesheet" type = "text/css" href = "style.css">
   <script type = "text/javascript" 
      src = "https://code.jquery.com/jquery-2.1.4.min.js"></script>
   <script type = "text/javascript" 
      src = "https://cdn.rawgit.com/Foliotek/AjaxQ/master/ajaxq.js"></script>
   <script type = "text/javascript" 
      src = "https://cdn.rawgit.com/marcoschwartz/aREST.js/master/aREST.js"></script>
   <script type = "text/javascript" 
      src = "script.js"></script>
</head>

फिर, हम इंटरफ़ेस के अंदर दो बटन को परिभाषित करते हैं, एक रिले को चालू करने के लिए, और दूसरा इसे फिर से बंद करने के लिए।

<div class = 'container'>
   <h1>Relay Control</h1>
   <div class = 'row'>
      <div class = "col-md-1">Relay</div>
      <div class = "col-md-2">
         <button id = 'on' class = 'btn btn-block btn-success'>On</button>
      </div>
      <div class = "col-md-2">
         <button id = 'off' class = 'btn btn-block btn-danger'>On</button>
      </div>
   </div>
</div>

अब, हमें बटन पर क्लिक को संभालने के लिए एक क्लाइंट-साइड जावास्क्रिप्ट फ़ाइल की भी आवश्यकता है। हम एक डिवाइस भी बनाएंगे जिसे हम अपने Arduino डिवाइस के mDNS नाम से लिंक करेंगे। यदि आपने इसे Arduino कोड में बदल दिया है, तो आपको इसे यहाँ भी संशोधित करना होगा।

// Create device
var device = new Device("arduino.local");
// Button

$('#on').click(function() {
   device.digitalWrite(8, 1);
});

$('#off').click(function() {
   device.digitalWrite(8, 0);
});

इस परियोजना का पूरा कोड इस पर पाया जा सकता है GitHubभंडार। इंटरफ़ेस फ़ोल्डर में जाएं, और बस अपने पसंदीदा ब्राउज़र के साथ HTML फ़ाइल खोलें। आपको अपने ब्राउज़र के अंदर कुछ ऐसा ही देखना चाहिए -

वेब इंटरफ़ेस पर एक बटन क्लिक करने की कोशिश करें; यह लगभग तुरंत रिले की स्थिति को बदलना चाहिए।

यदि आप इसे प्राप्त करने में कामयाब रहे, तो ब्रावो! आपने अभी एक वाई-फाई-नियंत्रित लाइट स्विच बनाया है। बेशक, आप इस परियोजना के साथ रोशनी की तुलना में बहुत अधिक नियंत्रित कर सकते हैं। बस सुनिश्चित करें कि आपका रिले उस उपकरण के लिए आवश्यक शक्ति का समर्थन करता है जिसे आप नियंत्रित करना चाहते हैं, और आप जाने के लिए अच्छे हैं।