مقدمه
امروزه هوشمند کردن اشیا و منازل به یکی از بحث های داغ در حوزه ی تکنولوژی تبدیل شده است. در این آموزش شما با نحوه ی ساخت یک قفل هوشمند با قابلیت کنترل از طریق گوشی موبایل آشنا می شوید.
آنچه در این آموزش یاد میگیرید
- ساخت QR کد خاص برای خود
- ورود به یک آدرس URL با استفاده از ماژول وای فای ESP8266
- کنترل یک درب با استفاده از گوشی موبایل
دربهای خود را هوشمند کنید
در این پروژه شما می توانید با استفاده از آردوینو و یک قفل سلنوئیدی، یک درب را کنترل کنید. نحوه ی کار این دستگاه به این صورت است که پس از اسکن QR کد با گوشی موبایل و وارد کردن ID مورد نظر، قفل درب عمل کرده و درب باز می شود.
لوازمی که به آن احتیاج دارید
سخت افزارهای مورد نیاز
نرم افزارهای مورد نیاز
سیم بندی
کد
در ابتدا باید کد نوشته شده را روی خود ماژول وای فای آپلود کنید تا یک صفحه ی HTTP برای وارد کردن پسورد کاربران ساخته شود. سپس باید پسورد کاربر را طریق رابط سریال به آردوینو منتقل کنید.
سپس یک کد دیگر برای برد آردوینو بنویسید که قفل را کنترل کند. کد زیر برای آردوینو می باشد. آن را روی آردوینو آپلود کنید.
String inputString = ""; // a String to hold incoming data
bool stringComplete = false; // whether the string is complete
void setup() {
// initialize serial:
Serial.begin(9600);
// reserve 200 bytes for the inputString:
inputString.reserve(200);
pinMode(9,OUTPUT);
}
void loop() {
// print the string when a newline arrives:
if (stringComplete) {
if (inputString=="your_password")
{
digitalWrite(9,HIGH);
delay(300);
digitalWrite(9,LOW);
Serial.println(inputString);
// clear the string:
inputString = "";
stringComplete = false;
}
}
}
void serialEvent() {
while (Serial.available()) {
// get the new byte:
char inChar = (char)Serial.read();
// add it to the inputString:
inputString += inChar;
// if the incoming character is a newline, set a flag so the main loop can
// do something about it:
if (inChar == '\n') {
stringComplete = true;
}
}
}
برای آپلود کردن کد روی ماژول وای فای ابتدا نیاز است تنظیمات آن را انجام دهید.
پس از انجام تنظیمات می توانید کد زیر را روی ماژول آپلود کنید:
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
// WiFi network
const char* ssid = "YourSSID";
const char* password = "YourPASSWORD";
ESP8266WebServer server ( 80 );
char htmlResponse[3000];
void handleRoot() {
snprintf ( htmlResponse, 3000,
"<!DOCTYPE html>\
<html lang=\"en\">\
<head>\
<style>\
body {background-color: rgb(160, 0, 53);}\
h3 {color: white;text-align:center;}\
p {color: white; text-align:center;}\
div {color: white; text-align:center;}\
ID {text-align:center;}\
input {text-align:center;}\
</style>\
<meta charset=\"utf-8\">\
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\
</head>\
<body>\
<h3>\<canter>Electropeak Smart Security Door</canter>\</h3>\
<p>\<canter>Please type your ID</canter>\</p>\
<div>ID: <input type='text' name='pass_word' id='pass_word' align='center' size=10 autofocus></div> \
<div>\
<br><button id=\"save_button\">Log In</button>\
</div>\
<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js\"></script>\
<script>\
var pass;\
$('#save_button').click(function(e){\
e.preventDefault();\
pass = $('#pass_word').val();\
$.get('/save?pass=' + pass, function(data){\
console.log(data);\
});\
});\
</script>\
</body>\
</html>");
server.send ( 200, "text/html", htmlResponse );
}
void handleSave() {
if (server.arg("pass")!= ""){
Serial.println(server.arg("pass"));
}
}
void setup() {
// Start serial
Serial.begin(115200);
delay(10);
// Connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
server.on ( "/", handleRoot );
server.on ("/save", handleSave);
server.begin();
Serial.println ( "HTTP server started" );
}
void loop() {
server.handleClient();
}
پس از آپلود کردن کد ها، پنجره ی سریال را باز کنید و IP خود را دریافت کنید. با وارد کردن آن در مرورگر خود می توانید رابط کاربری ای که توسط ماژول وای فای ساخته اید را ببینید. با وارد کردن ID درست در کادر موردنظر، قفل درب باز می شود.
نکته: ماژول وای فای و گوشی شما باید به یک شبکه ی وای فای وصل شده باشد. (مثلا یک مودم وای فای)
حالا باید یک QR کد مخصوص به خودتان را بسازید. برای ساخت آن می توانید از این سایت استفاده کنید.
کافیست IP ای که در مرحله ی قبل به دست آورده اید را در سایت کپی کنید و روی کلید “Create QR Code” کلیک کنید.
QR کد خود را پرینت کرده و جایی نزدیک به درب بچسبانید. برای باز کردن قفل درب فقط کافیست QR کد را اسکن کرده و ID درست را وارد کنید.
یک گام جلوتر
چند پیشنهاد برای ادامه ی کار:
- رابط گرافیکی بهتری طراحی کنید.
- گزینه های بیشتری در اختیار کاربر قرار دهید تا بتواند در حالت های مختلفی قفل را کنترل کند. مثلا کاربر بتواند تنظیم کند که قفل به مدت t ثانیه باز بماند.
Comments (15)
Hello there, thank you for the great explanation.
I have 1 question; once we have successfully unlocked the door, does the door will be locked automatically once it is closed?
Thank you.
Hi, yes it does.
با سلام و خسته نباشید خیلی سایت خوب و آموزنده ای دارید همچی تمامم. فقط یه چیز ” لینک آموزش راه اندازی ESP8266 ” کار نمی کنه
با سلام
اصلاح میشه ، ممنون
سلام
ID رو کجای کدها باید تعری کنیم ؟
در خط 4ام کدی که قراره روی ماژول آپلود بشه می تونید ID رو تعریف کنید.
سلام
ببخشید میشه بجای اینکه کدهای HTML رو اون وسط بنویسیم یه فایل HTML رو فراخوانی کنیم؟
سلام.
در این کد اتفاقی که میوفته اینه که کدهای html داره ارسال میشه به سمت سرور برای ساخت صفحه و از اون طرف کدها دریافت و ران میشن. در نتیجه ازونجایی که قراره کدهای html ارسال بشه و در طرف دریافت کننده ران بشه، این کار با فراخوانی یه فایل html امکانپذیر نیست.
سلام خسته نباشید آیا امکان اجرای کد ها با برد NODE MCU وجود دارد ؟
سلام.
بله امکانش وجود داره. میتونید هم به جای برد آردوینو Uno از NodeMCU استفاده کنید هم به جای برد ESP8266.
سلام خسته نباشید در خط چهارم و پنجم ما یک یوزر و پسورد تعریف میکنیم که برای اتصال یه اکسس پوینت(مودم) هست آیا ID که در آخر توی اون پورتال میخواد همونه؟
و یه سوال دیگه من نمیدونم IP رو چطور دریافت کنم. در قسمت سریال مانیتور باند روی 9600 بود ولی هیچی نبود آیا احتیاجی به ارسال چیزی هست که IP رو دریافت کنیم؟
سلام خسته نباشید در خط چهارم و پنجم ما یک یوزر و پسورد تعریف میکنیم که برای اتصال یه اکسس پوینت(مودم) هست آیا ID که در آخر توی اون پورتال میخواد همونه؟
و یه سوال دیگه من نمیدونم IP رو چطور دریافت کنم. در قسمت سریال مانیتور باند روی 9600 بود ولی هیچی نبود آیا احتیاجی به ارسال چیزی هست که IP رو دریافت کنیم؟
سلام
خیر. id شما که در برنامه وارد میکنید برای باز شدن درب در خط 27 مربوط به تابع handleRoot قابل تعریف و همچنین تغییر است
بادریت رو باید روی 115200 قرار بدهید که ip رو روی سریال مانیتور ببینید
سلام. QR کد رو چطور اسکن میکنیم؟ برنامه خاصی نیاز داریم روی گوشی تا اسکن کنه و صفحه کاربری رو بالا بیاره؟
سلام
معمولا همه گوشیها به صورت پیش فرض قابلیت اسکن QR کد رو دارند
برنامه خاصی نیاز ندارید