کنترل وسایل منزل با اپلیکیشن
Wifi and Node MCU
در این جلسه قصد داریم با استفاده از اپلیکیشن گوشی و وایفای سه لامپ ویک وسیله برقی رو خاموش و روشن کنیم . برای اجرای این پروژه شما نیاز به پیش زمینه ای در الکتروتکنیک دارد. توضیحاتی کوتاه در مورد مدار برق داده خواهد شد . داخل این پروژه برد به هاتاسپات گوشی وصل میشه و با وارد کردن آیپی برد (داخل قسمت دیوایس های متصل شده به هات اسپات هست )در اپلیکیشن میتونیم سه تا لامپ و یک وسیله برقی رو خاموش و روشن کنیم. ما اینجا از پریز برای خاموش و روشن کردن وسایل برقی استفاده کردم بخاطر اینکه هروسیله برقی رو بشه بهش وصل کرد درواقع با اینپکیج هروسیله برقی رو میتونید خاموش و روشن کنید.
برای اجرای این پروژه نیاز به یک عدد پکیج پروژه کنترل لامپ ووسایل برقی توسط اپلیکیشن داریم که داخل سایت موجود مشخصات پکیج داخل فروشگاه هستش میتونید قطعات رو ببینید و در صورت نیاز سفارش خرید کنید.
شماتیک و اتصالات :
پایه VCC ماژول رله چهارکانال = پایه ۳.۳ ولت برد NodeMCU پایه GND ماژول رله چهارکانال = پایه GND برد NodeMCU پایه IN1 ماژول رله چهارکانال = پایه D1 برد NodeMCU پایه IN2 ماژول رله چهارکانال = پایه D2 برد NodeMCU پایه IN3 ماژول رله چهارکانال = پایه D3 برد NodeMCU پایه IN4 ماژول رله چهارکانال = پایه D5 برد NodeMCU سیم فاز لامپ = پایه NO ماژول رله چهارکانال فاز ورودی = کلید تک پل فاز خروجی کلید تک پل = پایه COM ماژول رله چهار کانال سیم نول برق ورودی = سیم نول لامپ ها وپریز
کدنویسی:
برنامه به این شکل هستش شرطی مینویسیم که اگر دیتا مساوی فلان متن بود این اتفاق بیافته مثلا لامپ خاموش بشه.
(برای مشاهده کدهای این پروژه بهمراه توضیحات کامل آن باید در سایت ثبت نام نمایید. با تشکر)
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ ۳۱ ۳۲ ۳۳ ۳۴ ۳۵ ۳۶ ۳۷ ۳۸ ۳۹ ۴۰ ۴۱ ۴۲ ۴۳ ۴۴ ۴۵ ۴۶ ۴۷ ۴۸ ۴۹ ۵۰ ۵۱ ۵۲ ۵۳ ۵۴ ۵۵ ۵۶ ۵۷ ۵۸ ۵۹ ۶۰ ۶۱ ۶۲ ۶۳ ۶۴ ۶۵ ۶۶ ۶۷ ۶۸ ۶۹ ۷۰ ۷۱ ۷۲ ۷۳ ۷۴ ۷۵ ۷۶ ۷۷ ۷۸ ۷۹ ۸۰ ۸۱ ۸۲ ۸۳ ۸۴ ۸۵ ۸۶ ۸۷ ۸۸ ۸۹ ۹۰ ۹۱ ۹۲ ۹۳ ۹۴ ۹۵ ۹۶ ۹۷ ۹۸ ۹۹ ۱۰۰ ۱۰۱ ۱۰۲ ۱۰۳ ۱۰۴ ۱۰۵ ۱۰۶ ۱۰۷ ۱۰۸ |
#include <ESP8266WiFi.h> WiFiClient client; WiFiServer server(۸۰); /* WIFI settings */ const char* ssid = "۴ADA"; const char* password = "iot@5578"; String data =""; int priz = D1; int lamp1 = D2; int lamp2 = D3; int lamp3 = D5; void setup() { /* initialize motor control pins as output */ pinMode(priz, OUTPUT); pinMode(lamp1, OUTPUT); pinMode(lamp2, OUTPUT); pinMode(lamp3, OUTPUT); connectWiFi(); server.begin(); } void loop() { /* If the server available, run the "checkClient" function */ client = server.available(); if (!client) return; data = checkClient (); if (data == "onpriz") onpriz(); else if (data == "offpriz") offpriz(); else if (data == "onlamp1") onlamp1(); else if (data == "offlamp1") offlamp1(); else if (data == "onlamp2") onlamp2(); else if (data == "offlamp2") offlamp2(); else if (data == "onlamp3") onlamp3(); else if (data == "offlamp3") offlamp3(); } void connectWiFi() { Serial.println("Connecting to WIFI"); WiFi.begin(ssid, password); } void onpriz(void) { digitalWrite(priz,HIGH); } void offpriz(void) { digitalWrite(priz,LOW); } void onlamp1(void) { digitalWrite(lamp1,HIGH); } void offlamp1(void) { digitalWrite(lamp1,LOW); } void onlamp2(void) { digitalWrite(lamp2,HIGH); } void offlamp2(void) { digitalWrite(lamp2,LOW); } void onlamp3(void) { digitalWrite(lamp3,HIGH); } void offlamp3(void) { digitalWrite(lamp3,LOW); } String checkClient (void) { while(!client.available()) delay(۱); String request = client.readStringUntil('\r'); request.remove(۰, ۵); request.remove(request.length()-۹,۹); return request; } |
اول از همه کتابخونه esp8266 رو فراخوانی میکنیم و بعدش پورت سرور رو مشخص میکنیم و نام وایفای و پسوورد رو تعریف میکنیم.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ |
#include <ESP8266WiFi.h> WiFiClient client; WiFiServer server(۸۰); /* WIFI settings */ const char* ssid = "yourwifissid"; const char* password = "yourwifipassword"; |
حالا یه string به نام data معرفی میکنیم و بعدمتغیر هایی برای پایه ها معرفی میکنیم .
۱ ۲ ۳ ۴ ۵ ۶ ۷ |
String data =""; int priz = D1; int lamp1 = D2; int lamp2 = D3; int lamp3 = D5; |
داخل void setup حالت پایه ها رو مشخص میکنیم و سرور و تابع وایفای رو فرا میخونیم.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ |
void setup() { /* initialize motor control pins as output */ pinMode(priz, OUTPUT); pinMode(lamp1, OUTPUT); pinMode(lamp2, OUTPUT); pinMode(lamp3, OUTPUT); connectWiFi(); server.begin(); } |
داخل void loop اول اتصال کلاینت رو چک میکنیم و بعد شرط مینویسیم که اگر مقدار دیتا (همون string بود که اول معرفی کرده بودیم) مساوی مثلا prizon بود تابع prizon فراخوانی بشه و اجرا بشه به همین ترتیب شرط هارومینویسیم .
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ ۳۱ ۳۲ ۳۳ ۳۴ ۳۵ ۳۶ ۳۷ ۳۸ ۳۹ ۴۰ ۴۱ ۴۲ ۴۳ ۴۴ ۴۵ ۴۶ ۴۷ ۴۸ ۴۹ ۵۰ ۵۱ ۵۲ ۵۳ ۵۴ ۵۵ ۵۶ ۵۷ ۵۸ ۵۹ ۶۰ ۶۱ ۶۲ |
void loop() { client = server.available(); if (!client) return; data = checkClient (); if (data == "onpriz") onpriz(); else if (data == "offpriz") offpriz(); else if (data == "onlamp1") onlamp1(); else if (data == "offlamp1") offlamp1(); else if (data == "onlamp2") onlamp2(); else if (data == "offlamp2") offlamp2(); else if (data == "onlamp3") onlamp3(); else if (data == "offlamp3") offlamp3(); } void onpriz(void) { digitalWrite(priz,HIGH); } void offpriz(void) { digitalWrite(priz,LOW); } void onlamp1(void) { digitalWrite(lamp1,HIGH); } void offlamp1(void) { digitalWrite(lamp1,LOW); } void onlamp2(void) { digitalWrite(lamp2,HIGH); } void offlamp2(void) { digitalWrite(lamp2,LOW); } void onlamp3(void) { digitalWrite(lamp3,HIGH); } void offlamp3(void) { digitalWrite(lamp3,LOW); } |
خب بعد از این تابع ها یه تابع برای وصل شدن وایفای هستش که داخل voidsetup فراخوانی کرده بودیمش.
۱ ۲ ۳ ۴ ۵ |
void connectWiFi() { Serial.println("Connecting to WIFI"); WiFi.begin(ssid, password); } |
در آخر هم یه تابع برای اتصال کلاینت هستش.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ |
String checkClient (void) { while(!client.available()) delay(۱); String request = client.readStringUntil('\r'); request.remove(۰, ۵); request.remove(request.length()-۹,۹); return request; } |
[/restrict]
حالا کافیه از قسمت هات اسپاد گوشی قسمت دیوایس های متصل شده آیپی برد که به هات اسپات گوشی وصل شده رو بخونید و اون رو داخل اپلیکیشن وارد کنید.