这个最终的效果呢,就是可以通过手机连接上esp8266创建的wifi,然后连接其创建的服务器,发送特定指令就可实现遥控开门
(做工比较粗糙还请不要见笑...)
一、原理
其实这个一看就会明白,非常简单的,由Arduino连接一个舵机和一个esp8266模块,esp8266工作为AP模式,发出热点信息,并且创建服务端,手机连接wifi,然后作为客户端连接服务端,向其发送数据,esp8266收到数据后会通过串口通信传递给Arduino,Arduino如果接受到 open 这条信息便控制舵机开始旋转
分步实现的细节在下面两篇文章
Arduino leonardo+esp8266-01作服务端与APP进行数据通信
二、程序
(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的电源接口和安卓手机的相同,所以可以直接拿手机充电器供电,舵机和门把间的连接我是实在找不到其他东西了,才拿的纤维胶带,有条件的话,可以用硬质杠杆
动手能力再强点直接改造门锁也不错