دراین پروژه یک نمونه کنترل رله از طریق اینترنت رو مشاهده میکنید که استفاده گسترده ای در اینترنت اشیاء دارد. البته این پروژه به صورت ساده و پایه ای بود و تنها یک رله جهت کنترل در آن تعبیه شده است اما شما میتوانید با کمی تغییرات به تعداد رله های مورد نیاز خودتون افزایش بدین.
در این پروژه توسط برد آردیونو و برد شیلد اترنت ، هر یک ثانیه یکبار وضعیت فعال سازی رله از سایت خوانده شده و متناسب با وضعیت خوانده شده ، رله رو فعال یا غیر فعال میکند به این صورت که در صورتی که وضعیت دریافتی از سایت عبارت “RELAY,ON” و رله غیر فعال باشد ، رله فعال شده و در صورتی که عبارت دریافتی از سایت عبارت “RELAY,OFF” باشد و رله هم در وضعیت فعال باشد، رله غیر فعال میشود.
این پروژه نیز از سری پروژه های سایت ic2cloud هست که لازمه با پیش نیاز های اون که قبلا در این مطلب و این مطلب ارائه شده آشنایی کامل داشته باشید.همونطور که در پروژه های قبلی سایت ic2cloud نیز اعلام شده بخش سخت افزاری این پروژه با برد آردوینو Arduino Uno و برد شیلد شبکه آردوینو Arduino Ethernet Shield انجام میگیره.
همونطور که میدونید در این پروژه یه برد رله قرار داره به این صورت که این برد رله دارای ۳ پایه شامل تغذیه مثبت و زمین و پایه وضعیت به صورتی که تا زمانی که پایه وضعیت فعال باشد ( vcc) رله فعال بود و با غیر فعال شدن این پایه ، رله غیر فعال میشود. البته شما میتونید برد رله رو بر اساس دلخواه و نیاز خودتون طراحی کنید.
|
Relay |
Pin |
Description |
Gnd |
Ground |
Signal |
Pin to control the state of the relay. |
Vcc |
۵V |
|
در این پروژه پایه سینگال برد رله به پین ۸ برد آردوینو شما وصل خواهد شد.
در ادامه سورس آردوینو مورد نیاز برای پروگرم کردن برد آردوینو را براتون آماده کردیم که لازمه طبق اموزش در این پست ، مقادیر device_id و auth رو تغییر بدین.
#include <SPI.h>
#include <Ethernet.h>
// Network settings
byte mac[] = { 0xDE, 0xED, 0xDD, 0xDD, 0xFE, 0xED };
EthernetClient eth;
char server[] = "www.ic2pro.com"; // Wiring Cloud host name
int port = 80;
String devId = "111-222-333"; // Device ID. CREATE YOUR OWN GUID; Use this http://www.guidgenerator.com/
String auth = "dXNlcjpwYXNzd29yZA=="; // Authentication credentials Create a string from <email_address>:<API_Password> and encode it base64
// The sample here "dXNlcjpwYXNzd29yZA==" is the encoding for "user:password"
int lastState; // last known state of the relay
int relayPin = 8; // pin used to read the PIR sensor
void setup() {
Serial.begin(115200); // start serial monitoring
pinMode(relayPin, OUTPUT); // set-up relay pin
Ethernet.begin(mac); // start network communication
delay(1000);
Serial.println("Start...");
lastState = -۱; // force relay to take the first command
digitalWrite(relayPin, lastState);
}
void loop() {
String state = readRelay();
Serial.println("[" + state + "]");
if((state.indexOf("RELAY,ON") > 0) && (lastState != 1)) { // turn ON relay
lastState = ۱;
digitalWrite(relayPin, lastState);
}
else if((state.indexOf("RELAY,OFF") > 0) && (lastState != 0)) { // turn OFF relay
lastState = ۰;
digitalWrite(relayPin, lastState);
}
delay(1000);
}
String readRelay() {
if (eth.connect(server, port)) { // connect to server
Serial.println("Connected...");
eth.println("GET http://" + String(server) + ":" + String(port) + "/Wire/connector/get?id=" + devId + "&RELAY HTTP/1.1"); // request state from server
eth.println("Authorization: Basic " + auth);
eth.println("Connection: close");
eth.println();
Serial.println("Event Sent...");
return readResponse();
}
else {
Serial.println("Connection Error");
return "";
}
}
String readResponse()
{
while (eth.connected() && !eth.available()) delay(1); // wait for data
String buff = ""; // read data in the variable buff
while (eth.connected() || eth.available()) {
char c = eth.read();
buff += c;
}
eth.stop();
return buff;
}
|
مدار نهایی شما به صورت زیر خواهد بود . درصورت نیاز به اطلاعات بیشتر میتونید به مطلب اصلی این پست در سایت ic2cloud مراجعه کنید.
درآخر سورس آردوینو و سورس اپ موبایل جهت دانلود قرار داده شده است.
Download “Relay-IoT.zip”Relay-IoT.zip – 0 بار دانلود شده است – 364 KB