Wemos D1 Miniمبتنی بر سیستم اتوماسیون خانگی است که می تواند دستگاه های برقی مانند چراغ ها ، پنکه ها ، درب های گاراژ و غیره را با استفاده از تلفن همراه ما کنترل کند.
نیازمندی های این پروژه
سخت افزار
ماژول رله 2 کاناله
برد توسعه Wemos D1 Miniخرید
نرم افزار
Visual Studio Codeدانلود
افزونهPlatformioنحوه نصب افزونه درVScode
سیستم اتوماسیون خانگی آردوینو

در این پروژه نشان خواهیم داد که چگونه می توانید سیستم اتوماسیون خانگی آردوینو را بسازید که بتواند دستگاه های الکتریکی مانند چراغ ها ، پنکه ها ، درهای گاراژ و غیره را با استفاده از تلفن همراه از هر جایی کنترل کند. برای ساخت این سیستم اتوماسیون خانه ،هرآنچه که شما نیاز دارید یک بورد توسعهWemos D1 Mini، رله ها و تلفن اندرویدی است.
رله


همانطور که مشاهده می کنید، معمولا 5 پایه در یک رله وجود دارد. دو پایه برای تغذیه سیم پیچ، یکترمینال مشترک، یکترمینال کهدر حالت عادی بستهاست و یکترمینال که درحالت عادی باز است(هنگامی که انرژی سیم پیچ رله تامین شود به ترمینال مشترک متصل خواهد شد.)

این نحوه کار رله است. و برای این پروژه به این شکل متصل می کنیم
- GPIO12یا D5بهIN1ماژول رلهوصل می شود
- GPIO14یا D6 بهIN2ماژول رلهوصل می شود
- GND(ازرویبرد توسعهWemos D1 Mini) بهGNDوصل می شود
- 5 ولت (از رویبرد توسعهWemos D1 Mini) بهVccوصل می شود
- فاز به قطب مشترک یاCOMوصل می شود
- لامپ (یا سایر لوازم برقی) به ترمینالNOوصل می شود
- نول مستقیم بهلامپ (یا سایر لوازم برقی) وصل شود
کددرWemos D1 Mini
قبل از هر چیز به این نکته اشاره کنیم که کدها را در محیط ویرایشگرVS Codeوارد می کنیم آن نرم افزار عالی برای برنامه نویسی و توسعه امبدد سیستم هست البته برای این کار نیاز است تا افزونهPlatform IOرا روی آن نصب کنید اگر با آردوینو کار کرده اید متوجه شده اید که برای توسعه لایبرری ها و ...IDEآردوینو کمی ساده است اما باPlatform IOمی توانید در همان فریم وورک آردوینو اما در یک محیط حرفه ای کار کنید.نحوه نصب افزونهPlatform IOرویVS Code
یکپروژه جدید درPlatform IOایجاد کنید (البته یادتوون باشه که بورد رابایدwemos d1 mini liteانتخابکنید ) بعدفولدرsrcرا باز کنید و در فایلmain.cppکدهای زیر را جایگزین کنید
#include <Arduino.h>
//SIMPLE AND CHEAP HOME AUTOMATION SYSTEM USING NODEMCU AND ARDUINO BY ROOTSAID
//Simple Arduino Code for building a home automation system that can control electrical appliances
//such as lights, fans, gates etc suing our mobile phone from anywhere around the world.
//All you need is a Node MCU board, some relays and an android phone.
//Credits - Krishna S
//Complete Project Tutorial on - : http://rootsaid.com/arduino-home-automation/
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
const char *ssid = "HomeAutomation";
const char *password = "12345678";
WiFiUDP Udp;
unsigned int port = 5005;
char packet[255];
void setup()
{
Serial.begin(9600);
Serial.println();
pinMode(D5, OUTPUT);
pinMode(D6, OUTPUT);
Serial.printf("Connecting to %s ", ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("Connection Successful");
Udp.begin(port);
Serial.printf("Listener started at IP %s, at port %d \n", WiFi.localIP().toString().c_str(), port);
}
void loop()
{
int packetSize = Udp.parsePacket();
if (packetSize)
{
Serial.printf("Received %d bytes from %s, port %d\n", packetSize, Udp.remoteIP().toString().c_str(), Udp.remotePort());
int len = Udp.read(packet, 255);
if (len > 0)
packet[len] = 0;
Serial.printf("UDP packet contents: %s\n", packet);
if (strcmp(packet, "device1on") == 0)
{
digitalWrite(D6, LOW);
Serial.printf("Device 1 On");
}
else if (strcmp(packet, "device1off") == 0)
{
digitalWrite(D6, HIGH);
Serial.printf("Device 1 Off");
Serial.println("");
}
else if (strcmp(packet, "device2on") == 0)
{
digitalWrite(D5, LOW);
Serial.printf("Device 2 On");
Serial.println("");
}
else if (strcmp(packet, "device2off") == 0)
{
digitalWrite(D5, HIGH);
Serial.printf("Device 2 Off");
Serial.println("");
}
}
}
توضیحات کد
const char* ssid = "HomeAutomation";
const char* password = "12345678";
اینجاSSIDوPasswordشبکه را وارد می کنید. قبل از آپلودکد رویWemosD1Mini، مطمئن شوید که مقادیر باSSIDوPasswordشبکهWiFi(هات اسپات گوشی) یکی باشد.
unsigned int port = 5005;
5005 شماره پورت است
pinMode(D5, OUTPUT);
pinMode(D6, OUTPUT);
2 پین را خروجی تعریف می کنیم که به ورودی ماژول رله وصل می شود
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("Connection Successful");
Udp.begin(port);
Serial.printf("Listener started at IP %s, at port %d n", WiFi.localIP().toString().c_str(), port);
}
منتظر می ماند تاباSSIDوPasswordاز پیش تعریف شده به شبکهWiFi(هات اسپات گوشی) وصل شد
int packetSize = Udp.parsePacket();
if (packetSize)
{
Serial.printf("Received %d bytes from %s, port %dn", packetSize, Udp.remoteIP().toString().c_str(), Udp.remotePort());
int len = Udp.read(packet, 255);
if (len > 0)
{
packet[len] = 0;
}
Serial.printf("UDP packet contents: %sn", packet);
محتوای بستهUDPرا در متغیرpacketذخیره میکند و مقدار آن را چاپ می کند
if (strcmp(packet, "device1on") == 0)
{
digitalWrite(D6, LOW);
Serial.printf("Device 1 On");
}
else if (strcmp(packet, "device1off") == 0)
{
digitalWrite(D6, HIGH);
Serial.printf("Device 1 Off");
Serial.println("");
}
else if (strcmp(packet, "device2on") == 0)
{
digitalWrite(D5,LOW);
Serial.printf("Device 2 On");
Serial.println("");
}
else if (strcmp(packet, "device2off") == 0)
{
digitalWrite(D5, HIGH);
Serial.printf("Device 2 Off");
Serial.println("");
}
با توجه به بسته های دریافتی ، خروجی پین ها بهHIGHیاLOWتبدیل می شود.
RootSaidWifi Command centerرا ازGoogle PlayStoreنصب کنید
RootSaid WiFi Command Centerیک برنامه اندرویدی سبک است که می توان برای کنترل روبات ها وRaspberry piو سیستماتوماسیون خانه آردوینو با وای فای از آن استفاده کرد. تمام کاری که باید انجام دهید اینست که تلفن همراه خود را به شبکه وصل کنید ، آدرسIPو پورت (5005) را وارد کنید و با استفاده از دکمه های خاموش روشن آن را کنترل کنید.
آدرسIPو پورت را می توانیدبعد از آپلود برنامه,هنگامی که به وای فای شبکه متصل شد در سریال مانیتورPlatform IOدید

آدرسIPوportرا در تصویر بالا می بینید ممکن است آدرس آی پی شما متفاوت باشد آن را در اپ گوشی وارد کنید

IPو پورت را با استفاده از دکمه ذخیره کنید و به قسمت اتوماسیون خانگی بروید.

اکنون، سیستم اتوماسیون خانگی شما باArduinoآماده است. حال می توانید دستگاه های متصل بهسیستمرا با این برنامه ساده کنترل کنید و آن را خاموش و روشن کنید.