Arduino+esp8266-01+舵机 制作基于局域网的遥控门禁

这个最终的效果呢,就是可以通过手机连接上esp8266创建的wifi,然后连接其创建的服务器,发送特定指令就可实现遥控开门

(做工比较粗糙还请不要见笑...)

 

一、原理

其实这个一看就会明白,非常简单的,由Arduino连接一个舵机和一个esp8266模块,esp8266工作为AP模式,发出热点信息,并且创建服务端,手机连接wifi,然后作为客户端连接服务端,向其发送数据,esp8266收到数据后会通过串口通信传递给Arduino,Arduino如果接受到 open 这条信息便控制舵机开始旋转

分步实现的细节在下面两篇文章

Arduino leonardo+esp8266-01作服务端与APP进行数据通信

Arduino控制舵机

 

二、程序

(esp8266-01需要提前设置为AP或者AP+Station模式,具体见上面文章)

 1 #include <Servo.h>
 2 String string = "";
 3 Servo myservo;
 4 
 5 void setup() {
 6   myservo.attach(10);
 7   Serial.begin(115200);
 8   Serial1.begin(115200);
 9   delay(1000);
10   Serial1.print("AT+CIPMUX=1\r\n");    
11   delay(1000);
12   Serial1.print("AT+CIPSERVER=1,8080\r\n");   
13   delay(1000);
14   myservo.write(180);
15   delay(1000);
16   myservo.detach();
17 }
18 
19 void loop() {
20 
21   while (Serial1.available() > 0)
22   {
23     char c = Serial1.read();
24     string += c;
25     if (Serial1.available() == 0)
26     {
27       if (string.indexOf("open") >=0)
28       {
29         myservo.attach(10);
30         delay(500);
31         myservo.write(10);
32         delay(3000);
33         myservo.write(180);
34         delay(1000);
35         myservo.write(175);
36         delay(1000);
37         myservo.detach();
38       }
39       Serial.print(string);
40       string = "";
41     }
42     delay(10);
43   }
44 
45   while (Serial.available() > 0)
46   {
47     char c = Serial.read();
48     string += c;
49     if (Serial.available() == 0)
50     {
51       Serial1.print(string);//发送AT命令
52       string = "";
53     }
54     delay(10);
55   }
56   
57 }

 

三、测试

 和之前文章相同,手机下载网络调试助手,选择TCP Client,并连接esp8266创建的wifi。然后新增一个链接,这里需要设置的ip在一开始是查看了的,一般都不会变,端口为自己设定的8080

然后发送 open ,就会看到舵机会旋转

 

 

四、安装

这是我很久前做的了,这次只是整理一下步骤,写个学习笔记,没再往门上装,就拿上次视频截的图凑合凑合

 

Arduino leonardo的电源接口和安卓手机的相同,所以可以直接拿手机充电器供电,舵机和门把间的连接我是实在找不到其他东西了,才拿的纤维胶带,有条件的话,可以用硬质杠杆

动手能力再强点直接改造门锁也不错

posted @ 2018-11-05 19:59  淚笑  阅读(3295)  评论(0编辑  收藏  举报