一板网电子技术论坛

风筝
发表于: 2019-3-1 22:13:27 | 显示全部楼层

在本篇文章中,您将学习如何基于Arduino开发板制作一款智能门锁,并能够通过手机解锁。在本文结束时,您将可以:

●    学习到如何生成特定的QR码。

●    学习如何通过ESP8266制作一个登录页面。

●   学习通过手机解锁门锁。


智能门锁的安全门

如今,您可以通过添加技术来改善您的家庭或办公室安全。使用智能手机和设备对人们来说非常受欢迎,这对我们来说是一个很好的选择,让我们的东西变得更聪明。每天,工程师和技术人员都会生成新的系统和工具,您可以通过使用它们来创建更智能的家庭自动化,并创建新的方法来让您的生活更安全、更轻松。您可能已经看到过带有键盘或使用指纹设置门锁或解锁的门的智能锁。

61l06w8.jpg


在本篇文章中,我们想要制作一个基于Arduino的系统,帮助您通过wifi和电磁锁来制作门的登录部分。我们不使用键盘或复杂的机械元件,这些都是该系统的优点。我们只在门上粘贴二维码,允许的人可以扫描它以查看登录页面并输入密码。输入密码后,电磁锁将被激活。我们只使用Arduino开发板和电磁驱动器,以及ESP8266连接到本地wifi。我们开始做吧。


所需的组件

●    Arduino UNO R3开发板

●    带有PCB天线的ESP8266 WiFi模块

●    TIP120功率达林顿晶体管

●    锁式电磁阀

●    Arduino IDE

Untitled-1.gif


电路连接

Untitled-2.gif


代码

首先,我们为ESP-01编写代码,以创建登录页面并从用户接收密码,然后通过串行端口将其发送到Arduino。然后我们为Arduino编写另一个代码,从ESP-01获取数据并控制伺服电机。您可以使用Arduino IDE编译这两个代码并将它们上传到电路板。


您必须添加库,然后上载代码。您如果这是您是第一次运行Arduino开发板,请不要担心。只需按以下步骤操作:

●    访问www.arduino.cc/en/Main/Software并下载操作系统的软件。按照说明安装IDE软件。

●    运行Arduino IDE并清除文本编辑器,然后在文本编辑器中复制以下代码。

●    导航到草图并包含库。现在单击添加ZIP库并添加库

●    在tools and boards菜单中选择您使用的Arduino电路板。

●    将Arduino连接到PC,然后在tools and port中设置COM端口。

●    按上传(箭头符号)按钮。

●    现在都准备好了!

  1. String inputString = "";         // a String to hold incoming data
  2. bool stringComplete = false;  // whether the string is complete

  3. void setup() {
  4.   // initialize serial:
  5.   Serial.begin(9600);
  6.   // reserve 200 bytes for the inputString:
  7.   inputString.reserve(200);

  8.   pinMode(9,OUTPUT);
  9. }

  10. void loop() {
  11.   // print the string when a newline arrives:
  12.   if (stringComplete) {
  13.     if (inputString=="your_password")
  14.    {
  15.        digitalWrite(9,HIGH);
  16.        delay(300);
  17.        digitalWrite(9,LOW);

  18.        Serial.println(inputString);
  19.        // clear the string:
  20.        inputString = "";
  21.       stringComplete = false;
  22.     }
  23.   }
  24. }


  25. void serialEvent() {
  26.   while (Serial.available()) {
  27.     // get the new byte:
  28.     char inChar = (char)Serial.read();
  29.     // add it to the inputString:
  30.     inputString += inChar;
  31.     // if the incoming character is a newline, set a flag so the main loop can
  32.     // do something about it:
  33.     if (inChar == '\n') {
  34.       stringComplete = true;
  35.     }
  36.   }
  37. }
复制代码

现在是时候上传ESP-01代码了。 您应该使用Arduino IDE将草图上传到ESP。 在上传代码之前,您应该为IDE选择ESP板。


转到File -> Preferences,然后在其他板中添加http://arduino.esp8266.com/stable/package_esp8266com_index.json。 然后下载并安装它。 现在您可以在Tools -> Board上看到ESP板。 选择“Generic ESP8266 Module”,然后将代码复制到新草图中。 然后你应该将USB设置为TTL转换器作为上传器硬件。 只需插入转换器并在Tools -> Port中设置正确的端口。 它已准备好上传。

  1. #include <ESP8266WiFi.h>
  2. #include <ESP8266WebServer.h>
  3. // WiFi network
  4. const char* ssid     = "YourSSID";
  5. const char* password = "YourPASSWORD";
  6. ESP8266WebServer server ( 80 );
  7. char htmlResponse[3000];
  8. void handleRoot() {
  9. snprintf ( htmlResponse, 3000,
  10. "<!DOCTYPE html>\
  11. <html lang="en">\
  12. <head>\
  13. <style>\
  14. body {background-color: rgb(160, 0, 53);}\
  15. h3   {color: white;text-align:center;}\
  16. p    {color: white; text-align:center;}\
  17. div  {color: white; text-align:center;}\
  18. ID {text-align:center;}\
  19. input {text-align:center;}\
  20. </style>\
  21.    <meta charset="utf-8">\
  22.    <meta name="viewport" content="width=device-width, initial-scale=1">\
  23. </head>\
  24. <body>\
  25.          <h3>\<canter>Electropeak Smart Security Door</canter>\</h3>\
  26.          <p>\<canter>Please type your ID</canter>\</p>\
  27.          <div>ID: <input type='text' name='pass_word' id='pass_word' align='center' size=10 autofocus></div> \
  28.          <div>\
  29.          <br><button id="save_button">Log In</button>\
  30.          </div>\
  31.    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>\   
  32.    <script>\
  33.      var pass;\
  34.      $('#save_button').click(function(e){\
  35.        e.preventDefault();\
  36.        pass = $('#pass_word').val();\        
  37.        $.get('/save?pass=' + pass, function(data){\
  38.          console.log(data);\
  39.        });\
  40.      });\      
  41.    </script>\
  42. </body>\
  43. </html>");
  44.   server.send ( 200, "text/html", htmlResponse );  
  45. }
  46. void handleSave() {
  47. if (server.arg("pass")!= ""){
  48.    Serial.println(server.arg("pass"));
  49. }
  50. }
  51. void setup() {
  52. // Start serial
  53. Serial.begin(115200);
  54. delay(10);
  55. // Connecting to a WiFi network
  56. Serial.println();
  57. Serial.println();
  58. Serial.print("Connecting to ");
  59. Serial.println(ssid);
  60. WiFi.begin(ssid, password);
  61. while (WiFi.status() != WL_CONNECTED) {
  62.    delay(500);
  63.    Serial.print(".");
  64. }
  65. Serial.println("");
  66. Serial.println("WiFi connected");  
  67. Serial.println("IP address: ");
  68. Serial.println(WiFi.localIP());
  69. server.on ( "/", handleRoot );
  70. server.on ("/save", handleSave);
  71. server.begin();
  72. Serial.println ( "HTTP server started" );
  73. }
  74. void loop() {
  75. server.handleClient();
  76. }
复制代码

上传代码后,打开Arduino IDE的串口监视器(Serial Monitor),然后就可以得到您的IP。 现在,如果您在浏览器地址栏中键入IP,则可以看到Web服务器的界面。 在文本框中键入您的ID,如果您输入正确,Arduino将激活门锁。 请注意,您必须使用ESP8266连接到公共wifi路由器。

2019-02-19_2-03-48.png


现在是时候制作一个二维码(QR),并为用户提供一种简单的方式来访问这个网页。 有很多在线工具可以为您生成特定的QR码。 我们建议这个。


只需在栏中复制您的IP,然后单击“Create QR Code”。

2019-02-19_2-22-03-1200x514.png


打印并粘贴在门附近。 要解锁门,您必须连接到wifi,扫描二维码并输入您的ID。


接下来是什么?

以下是一些建议:

●    尝试为登录页面创建专业界面。

●    尝试为用户添加更多选项,例如不同的权限级别或基于时间的权限。

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 262 | 回复: 421



Archiver|手机版|小黑屋|

GMT+8, 2019-3-22 09:04 , Processed in 0.031250 second(s), 32 queries . Powered by Discuz! X3.4

YiBoard一板网 © 2015-2018 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表