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

 

نیازمندی های این پروژه

سخت افزار

  •   ماژول رله 2 کاناله
  •  برد توسعه Wemos D1 Mini خرید

نرم افزار

 

سیستم اتوماسیون خانگی آردوینو

در این پروژه نشان خواهیم داد که چگونه می توانید سیستم اتوماسیون خانگی آردوینو را بسازید که بتواند دستگاه های الکتریکی مانند چراغ ها ، پنکه ها ، درهای گاراژ و غیره را با استفاده از تلفن همراه از هر جایی کنترل کند. برای ساخت این سیستم اتوماسیون خانه ، هر آنچه که شما نیاز دارید یک بورد توسعه 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 شبکه را وارد می کنید. قبل از آپلود کد روی Wemos D1 Mini ، مطمئن شوید که مقادیر با 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 تبدیل می شود.

 

 RootSaid Wifi Command center را از Google PlayStore نصب کنید

RootSaid WiFi Command Center یک برنامه اندرویدی سبک است که می توان برای کنترل روبات ها و Raspberry pi و سیستم  اتوماسیون خانه آردوینو با وای فای از آن استفاده کرد. تمام کاری که باید انجام دهید اینست که تلفن همراه خود را به شبکه وصل کنید ، آدرس IP و پورت (5005) را وارد کنید و با استفاده از دکمه های خاموش روشن آن را کنترل کنید.

آدرس  IPو پورت را می توانید بعد از آپلود برنامه , هنگامی که به وای فای شبکه متصل شد در سریال مانیتور Platform IO  دید

 

 

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

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

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

 

  نظرات

جهت ثبت نظر وارد سایت شوید

راهنمای استفاده از کد در کامنت
````
insert your code
``
M K
سه شنبه 29 تیر 1400 ,02:41 ب.ظ

سلام. آیپی و پورت را چجوری میتونیم ذخیره کنیم؟(در برنامه ی rootsaid WiFi command center). دکمش کار نمیکنه.

مهدی ادهم
سه شنبه 29 تیر 1400 ,02:54 ب.ظ

سلام، بعد از اینکه آی پی و پورت را وارد کردید در زیر آن دو تصویر می بینید که اگر تصویر سمت چپ را تاچ کنید با پیام Loaded IP: 192... And Port 5005 نمایش داده می شود و این به این معنی است که ذخیره شده است.

البته دقت کنید برای تست عملکرد پروژه باید برد به شبکه WiFi (هات اسپات گوشی) وصل شود و در برنامه برد باید ssid و pass مربوط به هات اسپات گوشی خود را وارد کنید.

جهت ثبت پاسخ وارد سایت شوید
فاطمه اسحاقی
جمعه 27 فروردین 1400 ,07:23 ب.ظ

سلام .ببخشید من درست متوجه نشدم چطور وسایل به سیستم متصل میشن.مثلا لامپ اتاق رو میشه باهاش خاموش یا روشن کرد؟میشه بیشتر توضیح بدین ؟ ممنون

مهدی ادهم
جمعه 27 فروردین 1400 ,08:34 ب.ظ

سلام، در مورد روشنایی که در حالت عادی توسط کلید قطع و وصل می شود. در این پروژه رله این نقش را ایفا خواهد کرد به این صورت که در مسیر فاز تیغه NO رله را وصل کرده (در حالت عادی باز است و وقتی رله عمل می کند این تیغ بسته می شد و فاز متصل می شود ) و خود رله هم به کمک برد Wemos D1 Mini که دارای ماژول وای فای است از طریق اپ گوشی کنترل می شود

جهت ثبت پاسخ وارد سایت شوید