這個最終的效果呢,就是可以通過手機連接上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的電源接口和安卓手機的相同,所以可以直接拿手機充電器供電,舵機和門把間的連接我是實在找不到其他東西了,才拿的纖維膠帶,有條件的話,可以用硬質杠桿
動手能力再強點直接改造門鎖也不錯
