WIFI小車APP遠程控制,無線智能小車之ESP8266例程

WIFI小車無線遠程控制,智能小車之ESP8266例程

原理講解

原理簡述:利用發佈訂閱模式,即:利用ESP8266 訂閱了一個主題,再利用app inventor 編寫的app 往這個主題發佈消息,由於ESP8266 訂閱了這個消息,所以就可以收到app發佈得消息,從而執行相應得動作,比如前進\後退\左轉\右轉。

小車改裝

如果有小車的話可以進行改裝,改裝成WIFI小車,如果沒有小車的話,可以現行組裝。

STM32改裝方案: 建議採用串口通信的方式,ESP8266可以收到手機app發來的控制指令,如果ESP8266收到指令,可通過串口給stm32發送信息,stm32收到指令後,對小車執行相關動作即可。

arduino uno 改裝方案方案一,這個可以採用和stm32一樣的原理,利用串口通信,esp8266收到雲端指令,通過串口給arduino 發信息,arduino收到串口信息,對小車執行相關動作即可。方案二,更換NodeMCU開發板,把arduino uno 更換爲NodeMCU開發板,直接用NodeMCU當作小車的動作控制器,這種方式比較推薦,較爲簡單,nodeMCU收到雲端指令,直接執行小車動作函數即可。NodeMCU編程完全兼容arduino開發,更換的時候,把控制引腳對應好就行。

樹莓派小車改裝方案: 寫個python腳本,腳本爲TCP客戶端,通過TCP客戶端連接到服務器,當app通過雲端發送控制指令時,樹莓派就會收到命令,就可以執行相關小車動作即可。

其他開發板: 參考arduino uno 改裝方案即可。

ESP8266 例程代碼

點擊 代碼下載

代碼修改:

//用戶私鑰,可在控制檯獲取,修改爲自己的UID
#define UID  "4d9ec352e0376f2110a0c601a2857225"
//主題名字,可在控制檯新建
#define TOPIC  "mycar"

巴法創客雲控制檯 新建一個主題,主題名字隨意,例如mycar,本實例用用mycar,使用示例代碼時應修改爲自己的主題名字,字母或數字或字母加數字組合。UID爲用戶私鑰,在 巴法創客雲控制檯 註冊登陸後可獲得。

小車控制引腳:
本例程中是四驅小車

//**************************************************//
#define DIRA D0
#define PWMA D1
#define DIRB D2
#define PWMB D3
#define DIRC D5
#define PWMC D4
#define DIRD D6
#define PWMD D7

//**************************************************//

控制函數:

void forward();
void back();
void turnLeft();
void turnRight();
void Stop();

void forward(){//小車前進
   Serial.println("forward");
   digitalWrite(DIRA,HIGH);
   digitalWrite(DIRB,HIGH);
   digitalWrite(DIRC,LOW);
   digitalWrite(DIRD,LOW);
   
   analogWrite(PWMA,500);
   analogWrite(PWMB,500);
   analogWrite(PWMC,500);
   analogWrite(PWMD,500);
}

 void back(){//小車後退
   Serial.println("back");
   digitalWrite(DIRA,LOW);
   digitalWrite(DIRB,LOW);
   digitalWrite(DIRC,HIGH);
   digitalWrite(DIRD,HIGH);
   
   analogWrite(PWMA,500);
   analogWrite(PWMB,500);
   analogWrite(PWMC,500);
   analogWrite(PWMD,500);
 }

ESP8266消息檢測:

    if((TcpClient_Buff.indexOf("&msg=1") > 0)) {
      forward();
      oldtime = millis();
      t_flag = true;
    }else if((TcpClient_Buff.indexOf("&msg=2") > 0)) {
      back();
      oldtime = millis();
      t_flag = true;
    }else if((TcpClient_Buff.indexOf("&msg=3") > 0)) {
      turnLeft();
      oldtime = millis();
      t_flag = true;
    }else if((TcpClient_Buff.indexOf("&msg=4") > 0)) {
      turnRight();
      oldtime = millis();
      t_flag = true;
    }else if((TcpClient_Buff.indexOf("&msg=0") > 0)) {
      Stop();
    }else if((TcpClient_Buff.indexOf("&msg=on") > 0)) {
      up_flag = true;
    }else if((TcpClient_Buff.indexOf("&msg=off") > 0)) {
      up_flag = false;
    }

程序說明: 如上所示,通過字符串匹配,
檢測到字符串 &msg=1 執行前進動作,
檢測到字符串 &msg=2 執行後退動作,
檢測到字符串 &msg=3 執行左轉動作,
檢測到字符串 &msg=4 執行右轉動作,
檢測到字符串 &msg=0 執行停止動作,
檢測到字符串 &msg=on 打開一直運動開關,
檢測到字符串 &msg=off 關閉一直運動開關。
(默認情況下,如果收到前進等指令,小車只會前進1.5s,如果發送on指令後,再收到前進等指令,就會一直前進。off指令是關閉)。
如果是採用串口通信的同學,當收到相關指令,通過發送串口發送相關指令控制小車即可。

WIFI配網

本程序需要給WIFI板配網,首先關注公衆號“巴法雲”,或掃碼
在這裏插入圖片描述
手機需要先連接到WIFI,在“雲設備”中點擊“WIFI配網”即可,配網成功後設備會重啓,稍等幾秒即可,只需配網一次即可,如需再次重新配網,需要連續重啓5次開發板,每次間隔2s內,開發者也可接串口開輸出的調試信息。

程序測試

巴法創客雲控制檯 此主題處(本例程demo中爲mycar) 推送消息 1 ,開小車是否正常前進。

指令定義 前進是推送1,後退是推送2,左轉是3,右轉是4,停止是0,如需更多動作,可在單片機中自定義即可,簡單說就是檢測到某個字符串就執行相關動作,這個應該還是很好理解的。例如檢測到msg=1,單片機就會認爲是前進指令,會執行前進。在本例程中小車不會一直前進,如果收到前進指令,只會前進1.5s,如需一直前進,推送on,即可,關閉一直前進,推送off。

如果測試程序都正常運行,可以通過生成自己的安卓手機app進行控制。

安卓app製作

安卓app 採用App Inventor開發。拖拽編程,大家不用擔心不會玩。

Google App Inventor是一個完全在線開發的Android編程環境,拋棄複雜的程式代碼而使用積木式的堆疊法來完成您的Android程序。而且這款編程軟件不一定非要是專業的研發人員,甚至根本不需要掌握任何的程序編制知識。因爲這款軟件已經事先將軟件的代碼全部編寫完畢,用戶只需要根據自己的需求向其中添加服務選項即可。也就是我們所要做的只是寫簡單的代碼拼裝程序。

程序下載

需要修改爲自己的UID和topic主題,需要和單片機裏的保持一致,不然單片機會接收不到消息。

在這裏插入圖片描述
具體可參考上篇帖子的第三節(app inventor 開發):帖子 https://blog.csdn.net/bemfa/article/details/98478379

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章