در این پروژه، قصد داریم تا با کمک ماژول وای فای ESP8266، یک قفل در هوشمند بسازیم. به این صورت که فرد برای ورود به اتاق، باید با موبایل خود QR-CODE نصب شده بر روی در را اسکن کرده تا صفحه ورود بر روی موبایل او ظاهر شود! سپس با وارد کردن رمز عبور یا شماره پرسنلی، درب برای او باز میشود.
با این آموزش از سیسوگ همراه باشید!
توضیحاتی درباره پروژه!
ایده اصلی این پروژه، از قسمت پروژههای وبسایت آردوینو گرفته شد. در پروژه اصلی، شما میبایست ابتدا ماژول وای فای ESP8266 را به یک مودم وای فای متصل میکردید تا توسط مودم، یک آی پی آدرس محلی (Local IP Address) به آن اختصاص مییافت. این آی پی آدرس توسط ماژول در پنجره سریال مانیتور چاپ میشد. سپس باید موبایل خود را نیز به همان شبکه (مودم وای فای) متصل میکردید تا بتوانید به ماژول ESP8266 متصل بشوید. اگر آی پی ماژول را در مرورگر تلفن همراه خود وارد میکردید، صفحه ورود را مشاهده میکردید و میتوانستید از طریق آن، رمز را وارد کنید. پس از اینکه کاربر رمز عبور (یا شماره پرسنلی) را وارد کرد، خود ماژول ESP8266 کنترل رله یا سرو موتور را مستقیماً در اختیار نداشت و تنها آن را از طریق پورت سریال برای یک برد آردوینو ارسال میکرد تا برد آردوینو آن را بررسی و عملیات کنترل درب را به عهده بگیرد.
تغییرات پروژه!
ما در این پروژه، سعی کردیم که تا حد امکان قطعات کمتری استفاده کنیم. برای مثال، نیازی به برد آردوینو دیگری نبود، و از پایههای GPIO خود ESP8266 برای کنترل رله استفاده میکنیم و نیازی به استفاده بیهوده از یک آردوینو دیگر، درون پروژه نیست! پایه ESP8266 که به LED متصل بود را برای این کار انتخاب کردیم تا در صورتی که رمز درست وارد شد، توسط علامت چراغ مشخص گردد. همچنین ایراد دیگری که در این پروژه وجود داشت، این بود که فرد برای وارد کردن رمز عبور، حتماً میبایست به وای فای شما نیز متصل شود! یکی از قابلیتهای ماژول ESP8266، ایجاد یک نقطه اتصال (Access point) است! بنابراین، حتی نیازی به مودم وای فای نیز نخواهید داشت! در مورد صفحه ورود نیز، یکی از ایراداتی که وجود داشت این بود که پس از وارد کردن رمز، نتیجه را به شما نمایش نمیداد. همچنین برای اجرا حتماً باید موبایل شما از طریق اینترنت فایل j-query را دانلود میکرد. که وابستگی جی-کوئری را نیز حذف کردیم. همچنین صفحه ورود نیز فارسی شده است. همیشه سعی کنید پروژه هاتون رو بهبود بدید. ?
پروژه رایگان مشابه همین پروژه!
البته دقت داشته باشید که قبلاً نیز در سیسوگ، پروژهای مشابه به همین پروژه با عنوان ساخت درب بازکن RFID مجهز به وای فای و پنل مدیریت حرفهای منتشر کردیم، توصیه میکنیم آن را نیز از دست ندهید!
سخت افزار
برای راه اندازی این پروژه، حداقل به موارد زیر احتیاج دارید:
- ماژول وای فای ESP8266 یا NodeMcu
- گوشی هوشمند
و برای راه اندازی درب هوشمند، قطعات و موارد زیر را نیز احتمالا نیاز خواهید داشت:
- ترانزیستور پرقدرت دارلینگتون
- باتری 9 ولت
- یک عدد مقاومت یک کیلو اهم
- سرو موتور
- تعدادی سیم
- برد بورد
- نرم افزار بارکد خوان (QR_CODE)
راه اندازی پروژه
گام اول – آماده سازی نرم افزار آردوینو
خوب، برای اینکه بتوانید برای ماژول ESP8266 برنامه بنویسید و کامپایل بگیرید، ابتدا باید آن را به عنوان یک برد به نرم افزار آردوینو معرفی کنید و ابزار های آن را نیز اضافه کنید. این آموزش قبلا در سیسوگ تحت عنوان “نصب ماژول ESP8266 و ESP32 در ویرایشگر آردینو” منتشر شده است. لطفا این مطلب را مطالعه کنید. اما به طور خلاصه، وارد منو زیر شده:
File->preferences
سپس در کادر Additional Boards Manager URLs، آدرس زیر را وارد کرده و OK می کنیم.
1 | http://arduino.esp8266.com/stable/package_esp8266com_index.json |
سپس، مجددا از طریق منوی
Tools -> Board -> Boards Manager
عبارت ESP8266 را جستجو کرده و آن را نصب می کنیم. در انتها نیز آردوینو را یک بار باز و بسته می کنیم.
گام دوم – ریختن برنامه
خوب، در این مرحله، شما کافی است یک اسکچ جدید در آردوینو باز کرده و کد های زیر را به آن منتقل کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #ifndef APSSID #define APSSID "sisoog" #define APPSK "" #endif /* Set these to your desired credentials. */ const char *ssid = APSSID; const char *password = APPSK; String html = "<!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 dir='rtl'>\ <h3>\<canter>سیستم ورود هوشمند</canter>\</h3>\ <p>\<canter>لطفا شماره پرسنلی خود را وارد کنید</canter>\</p>\ <form method='post' action=''><div>شماره پرسنلی: <input type='text' name='pass_word' id='pass_word' align='center' size=10 autofocus></div> \ <div>\ <br><input type='submit' value='ورود' />\ </div></form>"; ESP8266WebServer server ( 80 ); void handleRoot() { String htmlResponse = html; if (server.method() == HTTP_POST){ Serial.println("INPUT: "+ server.arg(0)); if(server.arg(0) == "1234") {htmlResponse +="<p><canter>در باز شد!</canter></p>"; openDoor();} else htmlResponse +="<p><canter>اشتباه است!</canter></p>"; } htmlResponse += "</body></html>"; server.send ( 200, "text/html", htmlResponse ); } void openDoor(){ // but actually the LED is on; this is because // it is active low on the ESP-01) digitalWrite(LED_BUILTIN, LOW); // Turn the LED off by making the voltage HIGH delay(1000); digitalWrite(LED_BUILTIN, HIGH); // Turn the LED on (Note that LOW is the voltage level } void setup() { pinMode(LED_BUILTIN, OUTPUT); // Initialize the LED_BUILTIN pin as an output digitalWrite(LED_BUILTIN, HIGH); // Turn the LED off by making the voltage HIGH // Start serial Serial.begin(115200); delay(10); // Connecting to a WiFi network Serial.println(); Serial.println(); Serial.print("Configuring access point..."); /* You can remove the password parameter if you want the AP to be open. */ WiFi.softAP(ssid, password); IPAddress myIP = WiFi.softAPIP(); Serial.print("AP IP address: "); Serial.println(myIP); server.on ( "/", handleRoot ); server.onNotFound(handleRoot); server.begin(); Serial.println ( "HTTP server started" ); } void loop() { server.handleClient(); } |
در کد بالا، همچنین، میتوانید نام وای فای ایجاد شده توسط ماژول را به دلخواه خودتان تغییر بدهید و برای آن، رمز نیز در نظر بگیرید. در حال حاضر، یک شبکه با نام sisoog و بدون رمز ایجاد میشود. میتوانید شبکه خودتان را نیز با یک تصویر بارکد QR-CODE با کمک این لینک (یا دیگر سایت ها و نرم افزار های مشابه) به اشتراک بگذارید!
تنها کافی است تا گذرواژه و نام کاربری وای فای خود در کد زیر جای گذاری (خطوط ابتدایی برنامه بالا) کنید:
1 2 3 4 | #ifndef APSSID #define APSSID "sisoog" #define APPSK "" #endif |
رمز عبور فعلی نیز 1234 است که میتوانید در خط 43 کد بالا، آن را تغییر دهید:
1 | if(server.arg(0) == "1234") {htmlResponse +="<p><canter>در باز شد!</canter></p>"; openDoor();} |
گام سوم – بستن مدار
شما می توانید خروجی ESP8266 را که در حال حاضر به پایه شماره 2، یعنی ال ای دی داخلی ESP8266 متصل است را، به یک رله و سرو موتور متصل کنید. مدار پیشنهادی را در شکل زیر میبینید. دقت داشته باشید که ESP8266 با 3.3 ولت کار میکند!
گام چهارم – چاپ کردن بارکد
پس از اینکه برنامه را بر روی برد آپلود کردید، در پنجره سریال آردوینو، آی پی لوکال ماژول به نمایش در می آید. شما میتوانید این آی پی را با نرم افزار یا با سرویس های مختلف به تصویر QR-CODE تبدیل کنید. یکی از این سرویس های آنلاین را میتوانید ازینجا استفاده کنید. به احتمال خیلی زیاد، آی پی شما همیشه 192.168.4.1 خواهد بود. ( هر چند این آی پی را نیز می توان با تنظیمات DHCP، هم در مودم (اگر ماژول را به مودم متصل می کنید) و هم به صورت کد در ESP8266 تنظیم کرد.)
گام پنجم (نهایی) – تست مدار!
خوب! تقریباً همه چیز تمام است! حالا وقتی شما درون شبکههای وای فای جستجو میکنید، باید وای فای با نام sisoog مشاهده کنید! به این شبکه متصل شوید و با اسکن کردن بارکد، وارد صفحه ورود شوید! رمز را وارد کنید و وارد اتاق شوید! اگر رمز درست باشد، هم نتیجه در این صفحه به شما نمایش داده میشود، هم ال ای دی ماژول روشن میشود!
با عرض سلام و احترام لطفا برنامهای را که نوشتید در دسترس بنده قرار دهی شماره تماس بنده که در ایتا هم هستم د با تشکر از لطف شما شماره تماس بنده که در ایتا هم هستم
09172132326
سلام ایا نیاز به برنامه نویسی اندروید برای موبایل هم هست ؟ ینی دو برنامه جدا برای فرستنده و گیرنده لازم داریم؟
سلام
همونطور که در مطلب هم مشخص هست نیازی به برنامه نویسی اپ نیست و فقط به یک اپلیکیشن بارکد خوان نیاز هست که قابل دانلوده
در مورد فرستنده و گیرنده هم متوجه منظورتون نمیشم
سلام ممنون از مطلب خودبتون !
یه سوال داشتم :
اگر پایه شماره 2 را LED فرض کنیم یه جوری تغییرش بدیم که با زدن 1234 فقط روشن بشه و با زدن 12345 خاموش بشه امکان همچین کاری هست ؟ میشه اموزش بدین طریقه ی نوشتن کدش رو ؟
ممنون
چه طور میشه توسط گوشی رمز wifi یا شماره پرسنلی رو تغییر داد ؟
سلام دوست عزیز
برای این کار اول باید در کد تغییرات مورد نظراون رو اعمال کنید و مجددا برنامه رو کامپایل کنید و بر روی ماژول پروگرام کنید.
سلام خسته نباشید امکانش هست رمزش رو بجای 4 رقم 8 رقمی کنیم
بله امکانش هست با دست کاری برنامه البته
سلام وقت بخیر امکانش هست راهنمایی کنید برای esp32 چطور این کد رو بنویسم
درود بر شما
داکیومنت های ESP32 موجود هستند و همین طور اگه طبق آموزشی که لینک دادم ESP32 رو هم به آردوینو اضافه کرده باشید، از قسمت Examples میتونید مثال های مشابه دو تاشون رو باز کنید و فرقشون رو متوجه بشید. احتمالا نام بعضی توابع و فایل های سرآیند فرق داشته باشه. موقع کامپایل هم که بدیهیه باید برد ESP32 رو در آردوینو انتخاب کرده باشید.
سلام- خسته نباشید
این IP که تولید میشه تغییر هم میکنه؟ مگر نباید ای پی استاتیک داشته باشیم؟
درود بر شما.
این آی پی داخلی هست و آدرس صفحه ورود هم (درون شبکه LOCAL خود ESP8266) ثابته و مشکلی رو ایجاد نمیکنه. برای اطمینان نوشتم تست کنید.
سلام. خیلی خوب و قشنگ توضیح دادید و هم پروژه اصلی رو بهبودش دادید حرکت قشنگی بود فقط موردی که هست به نظرم به اینترنتم بشه متصلش کرد اما این آپشنش اختیاری باشه. یعنی لزوما هم اینترنت نخواد ولی بشه به عنوان یه پروژه اینترنت اشیا که از دور کنترل هم میشه ازش استفاده کرد. نظر شما چیه؟ من تونستم پروژتون رو خودم عملی بسازمش خیلی حال کردم. خسته نباشید.
درود بر شما. خوشحالم که از پروژه خوشتون اومده. بله، ایده خوبی میتونه باشه، هیچ وقت خلاقیت تموم نمیشه.
به نظرم اگه به این کار علاقه دارید، داکیومنت های برنامه نویسی ESP8266 رو مطالعه کنید و باز هم روی برنامه اون کار کنید.
موفق باشید.
ایده خیلی باحالیه که با یه ماژول ارزون قیمت بتونیم همچین کاری کنیم. البته تغییراتی هم که دادید خیلی بهترش کرده. ممنون.
درود بر شما.
خواهش میکنم!
سلام.
اون قسمت که پروژه رو بومی سازی کردید و مشکلاتش رو بهبود دادید خیلی حال کردم باش! موفق باشید…
درود بر شما!
باز هم با خلاقیت میشه پروژه رو بهترش هم کرد!
ساخت قفل با وای فای و در پایان یه حمله Deauthentication و موندن پشت در 😐
ها ها ها ها!
دیگه بستگی داره جایی که این پروژه رو کار میکنید چند نفر این تکنیکو بلد باشن!
معلومه تو محله هکرا زندگی میکنید!!
اره خوب یه دفع می بینی علی هکر از پنجره داره بهمون نگاه می کنه و از این که پشت در نشستیم ها ها ها ها می خنده 😐 جدا از شوخی برای پروژه های صنعتی وای فای مناسب نیست و ان اف سی برای این پروژه ها ایده آله … و میشه یه ارتباط رمز نگاری شده رو داشت و ساخت یه قفل در با استفاده از ان اف سی می تونه خیلی هم معقول باشه
ها ها ها!
بله، ممنون از نظرتون.
یه پروژه مشابه هم با ESP8266 توی سایت معرفی کردیم، توی اون از NFC استفاده شده بود و میتونسید کلا WIFI اون رو هم رو هم غیر فعال کنید.
البته اگر بتونیم قدرت سیگنال ماژول رو کم کنیم و به چند متر برسونیم کاربردیه
درود بر شما.
ممنون از ایده خوبتون. بله این کار با تابع
wifi.setphymode()
شدنیه، کافیه داکیومنت برنامه نویسی ESP8266 رو مطالعه کنید:
nodemcu.readthedocs.io/en/latest/en/modules/wifi/#wifisetphymode
esp8266 نهايتاً با 3.6 كار ميكنه نه با 5 ولت!
درود بر شما.
خیلی خیلی ممنون از توجه و دقت شما!
اصلاح گردید.
اقا دست خوش . واقعا مطلب مفید و جالبی بود
چاکریم!
ما رو به دوستاتون و دوستای دوستاتونم معرفی کنید!
یعنی چی ESP8266 با 5 ولت کار میکند ما که تا الان با ۳.۳.ولت با این ماژول کار میکردیم فکرمیکنم اشتباه تایپی شده
درود بر شما!
بله بله!
اشتباه شده بود.
بسیار سپاسگزارم!
به نظر جالبتر میشد اگه ماژول رو به اینترنت خونه متصل کنیم و به یه سرویس ابری متصلش کنیم و از طریق همون سرویس ابری یا اپلیکیشنی که داره بشه رله یا سرو موتور رو کنترل کرد
درود بر شما!
بله، همه کار میشه کرد!
داکیومنت های برنامه نویسی ESP8266 رو هم مطالعه کنید، کلی ایده دیگه هم ممکنه به ذهنتون برسه.
متشکرم!