找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 24161|回復(fù): 48
打印 上一主題 下一主題
收起左側(cè)

STM32+ESP8266遙控Wifi小車(chē)程序設(shè)計(jì)與安卓APP使用資料下載

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
Wifi遙控小車(chē)使用說(shuō)明
本例程采用ESP8266 wifi模塊與STM32串口連接,并提供AT指令封裝庫(kù)與STM32通訊,實(shí)現(xiàn)如下的通訊方式:



1、硬件部分
Wifi模塊絲印圖即引腳如下:
硬件連接如下:
Wifi模塊
Stm32核心板
說(shuō)明
GND
GND

UTXD
PB11(RXD)
串口發(fā)送IO
CH_PD
VCC
3.3V,wifi使能位
URXD
PB10(TXD)
串口接收IO
VCC
3.3V
3.3V
其他

懸空

2、手機(jī)APP部分
APP部分我們采用常用的APP  wifi調(diào)試軟件 ITEAD WIFI,安裝完成后打開(kāi)
如下界面,點(diǎn)擊Set up進(jìn)入設(shè)置:
進(jìn)入后會(huì)自動(dòng)獲取到手機(jī)的IP,注意手機(jī)是連接到一個(gè)路由器下的,支持局域網(wǎng)內(nèi)調(diào)試,先設(shè)置端口,一般是 8080
然后設(shè)置指令,我們使用到了如下紅框內(nèi)的指令,指令協(xié)議可以參考工程文件interface.h有如下描述:
//指令定義
#define COMM_STOP  'I'//停止
#define COMM_UP    'A'//前進(jìn)
#define COMM_DOWN  'B'//后退
#define COMM_LEFT  'C'//左轉(zhuǎn)
#define COMM_RIGHT 'D'//右轉(zhuǎn)
指令設(shè)置好之后就可以啟動(dòng)服務(wù)了,如下點(diǎn)擊開(kāi)始就好了
設(shè)置完成后如下,這里記下服務(wù)端IP和端口號(hào),我這里是 192.168.31.195,端口 8080 ,然后返回:
3、stm32軟件部分
設(shè)置完APP軟件后,再來(lái)修改我們的工程文件,打開(kāi)工程“wifi遙控小車(chē)”,打開(kāi)main.c文件,修改紅框內(nèi)信息:
HOST_NAME和HOST_PORT為手機(jī)上面的IP和端口號(hào),SSID為您的路由器名,PSD為路由器密碼,修改好后重新編譯后下載。
下載完成復(fù)位一下,就可以運(yùn)行了,程序會(huì)自動(dòng)連接手機(jī)開(kāi)啟的服務(wù),實(shí)現(xiàn)TCP/IP通信,連接成功后,看手機(jī)端的設(shè)置會(huì)有如下提示:
本程序還是用了串口1來(lái)輸出調(diào)試信息,將串口1連接電腦后也會(huì)在串口調(diào)試助手看到如下信息:
連接成功后即可在如下界面按鍵,操作小車(chē)運(yùn)行:

如有其他問(wèn)題請(qǐng)先詳細(xì)參考wifi模塊資料以及本實(shí)驗(yàn)程序。

stm32單片機(jī)源程序:
  1. /********************************* 深圳市航太電子 *******************************
  2. * 實(shí) 驗(yàn) 名 :小車(chē)藍(lán)牙遙控實(shí)驗(yàn)
  3. * 實(shí)驗(yàn)說(shuō)明 :使用手機(jī)連接藍(lán)牙模塊后,通過(guò)手機(jī)發(fā)送指令來(lái)控制小車(chē)
  4. * 實(shí)驗(yàn)平臺(tái) :航太ARM單片機(jī)開(kāi)發(fā)板
  5. * 連接方式 :請(qǐng)參考interface.h文件
  6. * 注    意 :指令必須連續(xù)發(fā)送才會(huì)使小車(chē)動(dòng)作,若停止發(fā)送指令,則小車(chē)會(huì)停止
  7. ****************************************************************************************/

  8. #include "stm32f10x.h"
  9. #include "interface.h"
  10. #include "LCD1602.h"
  11. #include "IRCtrol.h"
  12. #include "motor.h"
  13. #include "uart.h"
  14. #include "ESP8266.h"
  15. #include "serialportAPI.h"
  16. #include <stdlib.h>
  17. #include <stdio.h>

  18. //全局變量定義
  19. unsigned int speed_count=0;//占空比計(jì)數(shù)器 50次一周期
  20. char front_left_speed_duty=SPEED_DUTY;
  21. char front_right_speed_duty=SPEED_DUTY;
  22. char behind_left_speed_duty=SPEED_DUTY;
  23. char behind_right_speed_duty=SPEED_DUTY;

  24. unsigned char tick_5ms = 0;//5ms計(jì)數(shù)器,作為主函數(shù)的基本周期
  25. unsigned char tick_1ms = 0;//1ms計(jì)數(shù)器,作為電機(jī)的基本計(jì)數(shù)器
  26. unsigned char tick_200ms = 0;//刷新顯示
  27. unsigned int tick_3s = 0;//隔3s斷線(xiàn)檢測(cè)

  28. char ctrl_comm = COMM_STOP;//控制指令
  29. unsigned char continue_time=0;
  30. unsigned char wifi_rec_flag=0;//藍(lán)牙控制標(biāo)志位

  31. #define HOST_NAME   "192.168.31.195" //主機(jī)IP
  32. #define HOST_PORT   8080  //主機(jī)端口

  33. #define SSID "Hantech"  //路由器名
  34. #define PSD  "hantechinternet" //密碼

  35. #define RECVBUF_SIZE 16
  36. unsigned char buffer[RECVBUF_SIZE] = {0};

  37. int main(void)
  38. {
  39.         USART1Conf(9600);
  40.         DBG("system begin");
  41.         delay_init();
  42.         GPIOCLKInit();
  43.         UserLEDInit();
  44.         LCD1602Init();
  45.         TIM2_Init();
  46.         MotorInit();
  47.         ServoInit();
  48. //        USART3Conf(9600);

  49.                 while(1)
  50.         {
  51.                 DBG("chang baud");
  52.                
  53.                 UartBegin(115200,&USART3Conf,&PutChar);//每次設(shè)置完波特率后需要做一點(diǎn)延時(shí)
  54.                 delay(500);
  55.                 SetBaud(19200);
  56.                 UartBegin(19200,&USART3Conf,&PutChar);//更改波特率到19200
  57.                 delay(500);
  58.                 if(0 != SetBaud(19200))//在新波特率下檢查是否成功
  59.                 {
  60.                         break;//成功就退出
  61.                 }        
  62.         }

  63.         while(0 == WifiInit(SSID,PSD,HOST_NAME,HOST_PORT));
  64.         
  65. while(1)
  66. {        
  67.                 if(SerialAvailable() > 5)//接收到至少5個(gè)字符
  68.                 {
  69.                         int len;
  70.                         len = recv(buffer, RECVBUF_SIZE, 100);
  71.                         if (len > 0)
  72.                         {
  73.                                         char inChar;
  74.                                         inChar = buffer[0];
  75.         //                          send(buffer, len);
  76.                                         if (ctrl_comm != inChar || continue_time == 1)
  77.                                         {
  78.                                                 wifi_rec_flag = 1;
  79.                                                 ctrl_comm = inChar;
  80.                                         }
  81.                                         continue_time = 60;//更新持續(xù)時(shí)間
  82.                                   tick_3s = 0;//心跳包周期
  83.                         }
  84.                 }
  85.                
  86.                          if(tick_5ms >= 5)
  87.                 {
  88.                         tick_5ms = 0;
  89.                         tick_200ms++;
  90.                         if(tick_200ms >= 40)
  91.                         {
  92.                                 tick_200ms = 0;
  93.                                 tick_3s++;
  94.                                 LEDToggle(LED_PIN);
  95.                                 if(tick_3s >= 15)//15*200=3000
  96.                                 {
  97.                                         tick_3s = 0;
  98.                                         //定時(shí)檢查連接是否正常,如果不正常,wifi復(fù)位重新連接
  99.                                         if (getSystemStatus() != STATUS_GETLINK)
  100.                                         {
  101.                                                 DBG("TCP unlink");
  102.                                                 while(!WifiInit(SSID,PSD,HOST_NAME,HOST_PORT));
  103.                                         }else
  104.                                         {
  105.                                                 DBG("TCP link tick");
  106.                                         }                                       
  107.                                 }
  108.                         }
  109.                         //continue_time--;//200ms 無(wú)接收指令就停車(chē)
  110.                         if(continue_time == 0)
  111.                         {
  112.                                 continue_time = 1;
  113.                                 CarStop();
  114.                         }
  115.                         //do something
  116.                         if(wifi_rec_flag == 1)//接收到紅外信號(hào)
  117.                         {
  118.                                 wifi_rec_flag = 0;
  119.                                 switch(ctrl_comm)
  120.                                 {
  121.                                         case COMM_UP:    CarGo();break;
  122.                                         case COMM_DOWN:  CarBack();break;
  123.                                         case COMM_LEFT:  CarLeft();break;
  124.                                         case COMM_RIGHT: CarRight();break;
  125.                                         case COMM_STOP:  CarStop();break;
  126.                                         default : break;
  127.                                 }
  128.                                 LCD1602WriteCommand(ctrl_comm);
  129.                                 DBG("recv COMM");
  130.                         }
  131.                 }
  132.                
  133. }
  134. }

復(fù)制代碼


全部資料下載(stm32源碼+app+資料):
11.wifi遙控小車(chē)實(shí)驗(yàn).7z (1.65 MB, 下載次數(shù): 801)


評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
liuyuxi1123 + 5 很給力!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏35 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:281263 發(fā)表于 2018-2-1 10:47 | 只看該作者
挺不錯(cuò)的源程序,很有用
回復(fù)

使用道具 舉報(bào)

板凳
ID:99778 發(fā)表于 2018-3-7 23:01 | 只看該作者
需要app下一個(gè)
回復(fù)

使用道具 舉報(bào)

地板
ID:154092 發(fā)表于 2018-3-16 09:55 | 只看該作者
太好了 感謝版主您的分享
回復(fù)

使用道具 舉報(bào)

5#
ID:66302 發(fā)表于 2018-3-22 22:49 | 只看該作者
看看資料
回復(fù)

使用道具 舉報(bào)

6#
ID:65956 發(fā)表于 2018-3-31 16:48 | 只看該作者
可惜我還沒(méi)會(huì)STM32的單片機(jī)
回復(fù)

使用道具 舉報(bào)

7#
ID:300037 發(fā)表于 2018-4-15 16:13 | 只看該作者
很想下載這個(gè)材料怎么辦,但是沒(méi)有足夠的黑幣,看來(lái)我要加油了
回復(fù)

使用道具 舉報(bào)

8#
ID:309487 發(fā)表于 2018-4-16 19:00 | 只看該作者
學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

9#
ID:341350 發(fā)表于 2018-5-30 14:30 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

10#
ID:343211 發(fā)表于 2018-6-7 13:21 | 只看該作者
我正要學(xué)習(xí)遙操作
回復(fù)

使用道具 舉報(bào)

11#
ID:388978 發(fā)表于 2018-8-22 17:22 | 只看該作者
大家共同學(xué)習(xí),我分享的esp8266:http://www.torrancerestoration.com/bbs/dpj-132715-1.html
回復(fù)

使用道具 舉報(bào)

12#
ID:398852 發(fā)表于 2018-9-17 09:07 | 只看該作者
新手下載觀(guān)摩
回復(fù)

使用道具 舉報(bào)

13#
ID:216150 發(fā)表于 2018-11-14 10:21 | 只看該作者
看上去不錯(cuò)謝謝
回復(fù)

使用道具 舉報(bào)

14#
ID:442212 發(fā)表于 2018-12-8 16:19 | 只看該作者
怎么下載
回復(fù)

使用道具 舉報(bào)

15#
ID:442270 發(fā)表于 2018-12-8 17:30 | 只看該作者
這東西好,就是沒(méi)黑筆
回復(fù)

使用道具 舉報(bào)

16#
ID:307935 發(fā)表于 2018-12-10 14:28 | 只看該作者
支持一下,最近一直在做8266相關(guān)的東西。哈哈
回復(fù)

使用道具 舉報(bào)

17#
ID:104779 發(fā)表于 2018-12-10 22:45 | 只看該作者
請(qǐng)問(wèn)你是用什么軟件編寫(xiě)手機(jī)APP的呢?可經(jīng)公布編手機(jī)APP軟件嗎?
回復(fù)

使用道具 舉報(bào)

18#
ID:462215 發(fā)表于 2019-1-16 17:09 | 只看該作者
觀(guān)察學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

19#
ID:283315 發(fā)表于 2019-1-20 16:12 | 只看該作者
請(qǐng)問(wèn)電機(jī)和STM32是怎么連接的  那個(gè)引腳接電機(jī)
回復(fù)

使用道具 舉報(bào)

20#
ID:138273 發(fā)表于 2019-3-13 09:14 | 只看該作者
我看馬達(dá)引腳定義8個(gè),四個(gè)輪子都單獨(dú)控制的嗎?
回復(fù)

使用道具 舉報(bào)

21#
ID:275398 發(fā)表于 2019-3-17 22:01 | 只看該作者
用手機(jī)網(wǎng)絡(luò)可以使用嗎?
回復(fù)

使用道具 舉報(bào)

22#
ID:493202 發(fā)表于 2019-3-18 14:43 | 只看該作者
今年年初,ESP-EYE的參考設(shè)計(jì)正式上線(xiàn),這絕對(duì)是近來(lái)AIoT應(yīng)用的最接地氣方案之一。令許多用戶(hù)驚喜的是,利用ESP-EYE這設(shè)計(jì),就可以輕易試水人臉識(shí)別的開(kāi)發(fā)。

這里和還沒(méi)注意到的各位朋友分享一下!

以下是入門(mén)指南 :
https://github.com/espressif/esp ... ng_Started_Guide.md
基于搭載 ESP32 芯片、200 W 像素?cái)z像頭、數(shù)字麥克風(fēng)、8 MB PSRAM 和 4 MB Flash,開(kāi)發(fā)者就可動(dòng)手人臉識(shí)別的 AI 應(yīng)用開(kāi)發(fā)。重點(diǎn)來(lái)了: 因?yàn)橛袌D傳功能,用上PSRAM,就可作為內(nèi)存緩沖功能,存儲(chǔ)計(jì)算空間多了,視覺(jué)上的識(shí)別性能表現(xiàn)當(dāng)然更優(yōu)。而我的公司就是生產(chǎn)PSRAM的廠(chǎng)商。需要PSRAM可以找我啊 !
利用ESP-EYE能開(kāi)發(fā)的應(yīng)用方面,我來(lái)舉例一下:
最主打的,應(yīng)該是 : 門(mén)禁、考勤、自動(dòng)售賣(mài)設(shè)備、智能儲(chǔ)物鎖、VIP識(shí)別系統(tǒng),這些基於人臉識(shí)別的系統(tǒng),都可利用ESP EYE的基礎(chǔ)去進(jìn)行深度開(kāi)發(fā)。
另外,識(shí)物應(yīng)用也有很廣泛的應(yīng)用可能性。如工廠(chǎng)生產(chǎn)線(xiàn)的圖像檢查、警報(bào)裝置、環(huán)境監(jiān)察、農(nóng)作物品質(zhì)分類(lèi)。
此外,該開(kāi)發(fā)板還支持 Wi-Fi 圖像傳輸、Micro USB 調(diào)試和供電,可以實(shí)現(xiàn)語(yǔ)音喚醒,可協(xié)助用戶(hù)開(kāi)發(fā)高度集成的 AI 解決方案。

希望以上一些分享能對(duì)大家有幫助,歡迎交流~~
回復(fù)

使用道具 舉報(bào)

23#
ID:286638 發(fā)表于 2019-3-21 13:16 | 只看該作者
絕對(duì)支持,謝謝分享
回復(fù)

使用道具 舉報(bào)

24#
ID:87000 發(fā)表于 2019-3-21 15:34 | 只看該作者
STM32+ESP8266遙控Wifi小車(chē)程序設(shè)計(jì)與安卓APP使用資料下載
回復(fù)

使用道具 舉報(bào)

25#
ID:498851 發(fā)表于 2019-3-27 02:15 來(lái)自手機(jī) | 只看該作者
好棒的樣子,贊,好想試試
回復(fù)

使用道具 舉報(bào)

26#
ID:395480 發(fā)表于 2019-4-14 01:35 來(lái)自手機(jī) | 只看該作者
很好很強(qiáng)大
回復(fù)

使用道具 舉報(bào)

27#
ID:424794 發(fā)表于 2019-4-29 08:52 來(lái)自手機(jī) | 只看該作者
四輪和兩輪
回復(fù)

使用道具 舉報(bào)

28#
ID:424794 發(fā)表于 2019-4-29 08:53 來(lái)自手機(jī) | 只看該作者
四輪和兩輪小車(chē)操作起來(lái)有差別的嘛?這個(gè)程序
回復(fù)

使用道具 舉報(bào)

29#
ID:523089 發(fā)表于 2019-5-4 17:04 | 只看該作者
敢問(wèn)樓主大神,怎么改動(dòng)讓小車(chē)變?yōu)辄c(diǎn)動(dòng)???
回復(fù)

使用道具 舉報(bào)

30#
ID:523089 發(fā)表于 2019-5-4 17:05 | 只看該作者
199610123 發(fā)表于 2019-4-29 08:53
四輪和兩輪小車(chē)操作起來(lái)有差別的嘛?這個(gè)程序

這個(gè)程序輸出的是8口,兩個(gè)機(jī)的,只接前面4個(gè)io就行
回復(fù)

使用道具 舉報(bào)

31#
ID:523089 發(fā)表于 2019-5-4 17:21 | 只看該作者
點(diǎn)動(dòng)問(wèn)題解決了,請(qǐng)問(wèn)下怎么改成AP模式,手機(jī)連8266

回復(fù)

使用道具 舉報(bào)

32#
ID:398067 發(fā)表于 2019-6-11 14:00 | 只看該作者
一直需要這個(gè)例子,謝謝分享
回復(fù)

使用道具 舉報(bào)

33#
ID:398067 發(fā)表于 2019-6-11 14:01 | 只看該作者
挺不錯(cuò)的源程序,很有用
回復(fù)

使用道具 舉報(bào)

34#
ID:511461 發(fā)表于 2019-6-12 16:12 | 只看該作者
謝謝大佬分享
回復(fù)

使用道具 舉報(bào)

35#
ID:31534 發(fā)表于 2019-6-29 11:26 | 只看該作者
怎么下了都是空白的
回復(fù)

使用道具 舉報(bào)

36#
ID:218449 發(fā)表于 2019-8-2 20:32 | 只看該作者
電機(jī)驅(qū)動(dòng)用的什么?
回復(fù)

使用道具 舉報(bào)

37#
ID:564417 發(fā)表于 2019-8-9 16:36 | 只看該作者
不知道怎么改為在AP模式下
回復(fù)

使用道具 舉報(bào)

38#
ID:564417 發(fā)表于 2019-8-9 16:39 | 只看該作者
怎么改為在ESP8266的AP模式下,STM32和手機(jī)通信進(jìn)行小車(chē)控制
回復(fù)

使用道具 舉報(bào)

39#
ID:563554 發(fā)表于 2019-8-22 14:37 | 只看該作者
好東西,謝謝
回復(fù)

使用道具 舉報(bào)

40#
ID:532469 發(fā)表于 2019-9-7 21:40 | 只看該作者
麻煩問(wèn)一下編程用的是什么軟件,是keil嗎?還是別的?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表