ساخت یک قفل هوشمند با صفحه ورود WiFi با آردوینو و ESP8266

فهرست مطالب

مقدمه

امروزه هوشمند کردن اشیا و منازل به یکی از بحث های داغ در حوزه ی تکنولوژی تبدیل شده است. در این آموزش شما با نحوه ی ساخت یک قفل هوشمند با قابلیت کنترل از طریق گوشی موبایل آشنا می شوید.

آنچه در این آموزش یاد می‌گیرید

درب‌های خود را هوشمند کنید

در این پروژه شما می توانید با استفاده از آردوینو و یک قفل سلنوئیدی، یک درب را کنترل کنید. نحوه ی کار این دستگاه به این صورت است که پس از اسکن QR کد با گوشی موبایل و وارد کردن ID مورد نظر، قفل درب عمل کرده و درب باز می شود.

لوازمی که به آن احتیاج دارید

سخت افزارهای مورد نیاز

برد آردوینو UNO × 1
ماژول وای فای ESP8266 × 1
ترانزیستور دارلینگتون TIP120 × 1
قفل سلنوئیدی × 1

نرم افزارهای مورد نیاز

Arduino IDE

سیم بندی

کد

در ابتدا باید کد نوشته شده را روی خود ماژول وای فای آپلود کنید تا یک صفحه ی 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)

  • Nish. A. Reply

    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.

    آوریل 16, 2019 at 11:58 ب.ظ
    • Saeed Hosseini Reply

      Hi, yes it does.

      آوریل 18, 2019 at 8:51 ق.ظ
  • علی Reply

    با سلام و خسته نباشید خیلی سایت خوب و آموزنده ای دارید همچی تمامم. فقط یه چیز ” لینک آموزش راه اندازی ESP8266 ” کار نمی کنه

    فوریه 2, 2020 at 2:21 ق.ظ
    • سعید حسینی Reply

      با سلام
      اصلاح میشه ، ممنون

      فوریه 29, 2020 at 9:15 ق.ظ
  • سعید حسنی Reply

    سلام
    ID رو کجای کدها باید تعری کنیم ؟

    دسامبر 2, 2020 at 1:34 ق.ظ
    • مهران ملکی Reply

      در خط 4ام کدی که قراره روی ماژول آپلود بشه می تونید ID رو تعریف کنید.

      دسامبر 5, 2020 at 10:01 ق.ظ
  • مهدی Reply

    سلام
    ببخشید میشه بجای اینکه کدهای HTML رو اون وسط بنویسیم یه فایل HTML رو فراخوانی کنیم؟

    آوریل 8, 2021 at 8:02 ق.ظ
    • مهران ملکی Reply

      سلام.
      در این کد اتفاقی که میوفته اینه که کدهای html داره ارسال میشه به سمت سرور برای ساخت صفحه و از اون طرف کدها دریافت و ران میشن. در نتیجه ازونجایی که قراره کدهای html ارسال بشه و در طرف دریافت کننده ران بشه، این کار با فراخوانی یه فایل html امکان‌پذیر نیست.

      آوریل 10, 2021 at 9:16 ق.ظ
  • سبحان کیانی Reply

    سلام خسته نباشید آیا امکان اجرای کد ها با برد NODE MCU وجود دارد ؟

    مارس 6, 2022 at 12:28 ق.ظ
    • مهران ملکی Reply

      سلام.
      بله امکانش وجود داره. میتونید هم به جای برد آردوینو Uno از NodeMCU استفاده کنید هم به جای برد ESP8266.

      مارس 6, 2022 at 9:15 ق.ظ
  • darkness Reply

    سلام خسته نباشید در خط چهارم و پنجم ما یک یوزر و پسورد تعریف میکنیم که برای اتصال یه اکسس پوینت(مودم) هست آیا ID که در آخر توی اون پورتال میخواد همونه؟

    و یه سوال دیگه من نمیدونم IP رو چطور دریافت کنم. در قسمت سریال مانیتور باند روی 9600 بود ولی هیچی نبود آیا احتیاجی به ارسال چیزی هست که IP رو دریافت کنیم؟

    نوامبر 29, 2022 at 7:43 ب.ظ
    • علی عبدالملکی Reply

      سلام خسته نباشید در خط چهارم و پنجم ما یک یوزر و پسورد تعریف میکنیم که برای اتصال یه اکسس پوینت(مودم) هست آیا ID که در آخر توی اون پورتال میخواد همونه؟

      و یه سوال دیگه من نمیدونم IP رو چطور دریافت کنم. در قسمت سریال مانیتور باند روی 9600 بود ولی هیچی نبود آیا احتیاجی به ارسال چیزی هست که IP رو دریافت کنیم؟

      دسامبر 13, 2022 at 9:04 ق.ظ
    • علی عبدالملکی Reply

      سلام
      خیر. id شما که در برنامه وارد میکنید برای باز شدن درب در خط 27 مربوط به تابع handleRoot قابل تعریف و همچنین تغییر است
      بادریت رو باید روی 115200 قرار بدهید که ip رو روی سریال مانیتور ببینید

      دسامبر 13, 2022 at 9:06 ق.ظ
  • محسن Reply

    سلام. QR کد رو چطور اسکن میکنیم؟ برنامه خاصی نیاز داریم روی گوشی تا اسکن کنه و صفحه کاربری رو بالا بیاره؟

    ژانویه 24, 2023 at 10:53 ق.ظ
    • علی عبدالملکی Reply

      سلام
      معمولا همه گوشیها به صورت پیش فرض قابلیت اسکن QR کد رو دارند
      برنامه خاصی نیاز ندارید

      فوریه 21, 2023 at 4:53 ب.ظ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.