標題: 手機藍牙控制智能小車:STM32+藍牙模塊+藍牙APP源碼與資料 [打印本頁]

作者: wyhnb    時間: 2018-11-7 10:17
標題: 手機藍牙控制智能小車:STM32+藍牙模塊+藍牙APP源碼與資料
智能小車是買的,芯片是STM32F103ZET6
代碼也有被我改過,畫圈是可以調(diào)車速的,

藍牙模塊是買的,主要做透傳,

藍牙APP是自己寫的,看程序只要接收到I,A,B,C,D就能行走,還是比較簡單,

在網(wǎng)上找了一個連接藍牙的方法,然后寫四個按鍵,點擊按鍵就發(fā)送相應(yīng)的字母就OK了,最開始是實現(xiàn)的,只不過需要不斷點擊,連續(xù)發(fā)送才能一直行走,就想要按下讓小車一直行走,想著讓手機藍牙在按下按鍵時候一直連續(xù)發(fā)送指令,貌似沒辦法實現(xiàn),因為一直按下就像死循環(huán),Android會檢測到不允許死循環(huán),后來改小車的代碼,接收到前進指令單片機就死循環(huán),一直前進,直到接收到停止指令,在手指抬起后發(fā)送一個停止指令就實現(xiàn)按下一直行走,還是需要轉(zhuǎn)換一下思想。!

智能小車的原理圖和代碼都貼出來了,藍牙模塊直接插上就可以用,手機APP源碼和工程也貼出來了。

單片機源程序如下:
  1. #include "motor.h"
  2. #include "interface.h"
  3. #include "stm32f10x.h"

  4. //GPIO配置函數(shù)
  5. void MotorGPIO_Configuration(void)
  6. {               
  7.         GPIO_InitTypeDef GPIO_InitStructure;
  8.         GPIO_InitStructure.GPIO_Pin = FRONT_LEFT_F_PIN;
  9.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  10.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         
  11.         GPIO_Init(FRONT_LEFT_F_GPIO, &GPIO_InitStructure);   
  12.         
  13.         GPIO_InitStructure.GPIO_Pin = FRONT_LEFT_B_PIN;        
  14.         GPIO_Init(FRONT_LEFT_B_GPIO, &GPIO_InitStructure);
  15.         
  16.         GPIO_InitStructure.GPIO_Pin = FRONT_RIGHT_F_PIN;        
  17.         GPIO_Init(FRONT_RIGHT_F_GPIO, &GPIO_InitStructure);
  18.         
  19.         GPIO_InitStructure.GPIO_Pin = FRONT_RIGHT_B_PIN;        
  20.         GPIO_Init(FRONT_RIGHT_B_GPIO, &GPIO_InitStructure);
  21.         
  22.         GPIO_InitStructure.GPIO_Pin = BEHIND_LEFT_F_PIN;        
  23.         GPIO_Init(BEHIND_LEFT_F_GPIO, &GPIO_InitStructure);  
  24.         
  25.         GPIO_InitStructure.GPIO_Pin = BEHIND_LEFT_B_PIN;        
  26.         GPIO_Init(BEHIND_LEFT_B_GPIO, &GPIO_InitStructure);  
  27.         
  28.         GPIO_InitStructure.GPIO_Pin = BEHIND_RIGHT_F_PIN;        
  29.         GPIO_Init(BEHIND_RIGHT_F_GPIO, &GPIO_InitStructure);  
  30.         
  31.         GPIO_InitStructure.GPIO_Pin = BEHIND_RIGHT_B_PIN;        
  32.         GPIO_Init(BEHIND_RIGHT_B_GPIO, &GPIO_InitStructure);  
  33.         
  34. }

  35. //根據(jù)占空比驅(qū)動電機轉(zhuǎn)動
  36. void CarMove(void)
  37. {   
  38.         
  39.          BEHIND_RIGHT_EN;
  40.         
  41. /* //左前輪
  42.         if(front_left_speed_duty > 0)//向前
  43.         {
  44.                 if(speed_count < front_left_speed_duty)
  45.                 {
  46.                         FRONT_LEFT_GO;
  47.                 }else
  48.                 {
  49.                         FRONT_LEFT_STOP;
  50.                 }
  51.         }
  52.         else if(front_left_speed_duty < 0)//向后
  53.         {
  54.                 if(speed_count < (-1)*front_left_speed_duty)
  55.                 {
  56.                         FRONT_LEFT_BACK;
  57.                 }else
  58.                 {
  59.                         FRONT_LEFT_STOP;
  60.                 }
  61.         }
  62.         else                //停止
  63.         {
  64.                 FRONT_LEFT_STOP;
  65.         }*/
  66.         
  67.                 //右前輪
  68.         if(front_right_speed_duty > 0)//向前
  69.         {
  70.                 if(speed_count < front_right_speed_duty)
  71.                 {
  72.                         FRONT_RIGHT_GO;
  73.                 }else                //停止
  74.                 {
  75.                         FRONT_RIGHT_STOP;
  76.                 }
  77.         }
  78.         else if(front_right_speed_duty < 0)//向后
  79.         {
  80.                 if(speed_count < (-1)*front_right_speed_duty)
  81.                 {
  82.                         FRONT_RIGHT_BACK;
  83.                 }else                //停止
  84.                 {
  85.                         FRONT_RIGHT_STOP;
  86.                 }
  87.         }
  88.         else                //停止
  89.         {
  90.                 FRONT_RIGHT_STOP;
  91.         }
  92.         
  93.         //左后輪
  94.         if(behind_left_speed_duty > 0)//向前
  95.         {
  96.                 if(speed_count < behind_left_speed_duty)
  97.                 {
  98.                         BEHIND_LEFT_GO;
  99.                 }        else                //停止
  100.                 {
  101.                         BEHIND_LEFT_STOP;
  102.                 }
  103.         }
  104.         else if(behind_left_speed_duty < 0)//向后
  105.         {
  106.                 if(speed_count < (-1)*behind_left_speed_duty)
  107.                 {
  108.                         BEHIND_LEFT_BACK;
  109.                 }        else                //停止
  110.                 {
  111.                         BEHIND_LEFT_STOP;
  112.                 }
  113.         }
  114.         else                //停止
  115.         {
  116.                 BEHIND_LEFT_STOP;
  117.         }
  118.         
  119. /*                //右后輪
  120.         if(behind_right_speed_duty > 0)//向前
  121.         {
  122.                 if(speed_count < behind_right_speed_duty)
  123.                 {
  124.                         BEHIND_RIGHT_GO;
  125.                 }        else                //停止
  126.                 {
  127.                         BEHIND_RIGHT_STOP;
  128.                 }
  129.         }
  130.         else if(behind_right_speed_duty < 0)//向后
  131.         {
  132.                 if(speed_count < (-1)*behind_right_speed_duty)
  133.                 {
  134.                         BEHIND_RIGHT_BACK;
  135.                 }        else                //停止
  136.                 {
  137.                         BEHIND_RIGHT_STOP;
  138.                 }
  139.         }
  140.         else                //停止
  141.         {
  142.                 BEHIND_RIGHT_STOP;
  143.         }*/
  144. }

  145. //向前
  146. void CarGo(void)
  147. {
  148.         front_left_speed_duty=SPEED_DUTY;
  149.         front_right_speed_duty=SPEED_DUTY;
  150.         behind_left_speed_duty=SPEED_DUTY;
  151.         behind_right_speed_duty=SPEED_DUTY;
  152. }

  153. //后退
  154. void CarBack(void)
  155. {
  156.         front_left_speed_duty=-SPEED_DUTY;
  157.         front_right_speed_duty=-SPEED_DUTY;
  158.         behind_left_speed_duty=-SPEED_DUTY;
  159.         behind_right_speed_duty=-SPEED_DUTY;
  160. }

  161. //向左
  162. void CarLeft(void)
  163. {
  164.         front_left_speed_duty=SPEED_DUTY;
  165.         front_right_speed_duty=-SPEED_DUTY;
  166.         behind_left_speed_duty=SPEED_DUTY;//+10;//增加后輪驅(qū)動力
  167.         behind_right_speed_duty=-SPEED_DUTY;
  168. }

  169. //向右
  170. void CarRight(void)
  171. {
  172.         front_left_speed_duty=-SPEED_DUTY;
  173.         front_right_speed_duty=SPEED_DUTY;
  174.         behind_left_speed_duty=-SPEED_DUTY;
  175.         behind_right_speed_duty=SPEED_DUTY;//+10;//增加后輪驅(qū)動力
  176. }

  177. //停止
  178. void CarStop(void)
  179. {
  180.         front_left_speed_duty=0;
  181.         front_right_speed_duty=0;
  182.         behind_left_speed_duty=0;
  183.         behind_right_speed_duty=0;
  184. }

  185. void MotorInit(void)
  186. {
  187.         MotorGPIO_Configuration();
  188.         CarStop();
  189. }
復制代碼


所有資料51hei提供下載:
智能小車資料.7z (4.94 MB, 下載次數(shù): 771)
APP工程.7z (3.61 MB, 下載次數(shù): 811)
藍牙模塊資料.zip (4.26 MB, 下載次數(shù): 647)



作者: 不懂裝懂    時間: 2018-11-25 11:45
手機APP怎么安裝啊 樓主
作者: yf980    時間: 2018-11-28 14:45
怎么裝啊
作者: wyhnb    時間: 2018-11-30 13:16
不懂裝懂 發(fā)表于 2018-11-25 11:45
手機APP怎么安裝啊 樓主

手機APP直接下載到手機就可以安裝。。!有問題?
作者: wyhnb    時間: 2018-11-30 13:16
yf980 發(fā)表于 2018-11-28 14:45
怎么裝啊

裝APP?
作者: ll19961225    時間: 2018-12-2 09:32
可不可以發(fā)郵箱呀
作者: cmxgx    時間: 2018-12-3 08:33
STM32+藍牙模塊+藍牙APP源碼與資料
作者: wyhnb    時間: 2018-12-3 09:57
ll19961225 發(fā)表于 2018-12-2 09:32
可不可以發(fā)郵箱呀

可以加我QQ
作者: wyhnb    時間: 2018-12-3 09:58
cmxgx 發(fā)表于 2018-12-3 08:33
STM32+藍牙模塊+藍牙APP源碼與資料

資料都在這里了啊
作者: MG_C    時間: 2018-12-5 19:54
樓主你好,可以QQ發(fā)一下給我嗎
作者: a965718891    時間: 2018-12-6 15:31
謝謝樓主,,,,,,,,,,,,
作者: tanay    時間: 2018-12-7 16:28
謝謝分享
作者: 2515361695    時間: 2018-12-9 11:54
不懂裝懂 發(fā)表于 2018-11-25 11:45
手機APP怎么安裝啊 樓主

看看我的帖子  他這個是源程序 使用 andorid studio寫的   需要打包成apk文件
作者: wyhnb    時間: 2018-12-11 10:04
里面有生成的APK,仔細看!
作者: 是珍惜啊    時間: 2018-12-11 20:52
wyhnb 發(fā)表于 2018-12-11 10:04
里面有生成的APK,仔細看!

拓展名是什么?
作者: wyhnb    時間: 2018-12-12 09:28
是珍惜啊 發(fā)表于 2018-12-11 20:52
拓展名是什么?

手機軟件的后綴就是.apk
作者: wyhnb    時間: 2018-12-17 12:36
本帖最后由 wyhnb 于 2018-12-17 13:06 編輯

藍牙APP

藍牙APP.rar

2.95 MB, 下載次數(shù): 363, 下載積分: 黑幣 -5


作者: cmxgx    時間: 2018-12-17 23:16
看看是用的什么藍牙模塊 學習了
作者: sumissqin    時間: 2019-1-9 11:05
學習學習
作者: mrbanxian    時間: 2019-2-16 08:27
感覺很好玩的樣子
作者: bleach    時間: 2019-3-4 09:27
感謝分享
作者: 9940zwh    時間: 2019-3-15 23:39
謝謝分享
作者: zjls    時間: 2019-3-18 23:00
研究研究
作者: 290697252    時間: 2019-3-31 11:57
值得學習
作者: ghq    時間: 2019-4-16 09:56
有用到小馬達嗎?

作者: wyhnb    時間: 2019-4-16 11:28
ghq 發(fā)表于 2019-4-16 09:56
有用到小馬達嗎?

智能小車是買的,輪子就是馬達啊
作者: 17855836875    時間: 2019-4-28 09:56
學習學習
作者: 1233aaa    時間: 2019-5-3 19:30
, 我手機裝不了

作者: 1233aaa    時間: 2019-5-3 19:32
不懂裝懂 發(fā)表于 2018-11-25 11:45
手機APP怎么安裝啊 樓主

把apk文件發(fā)到手機里,安裝
作者: Ly李大本事    時間: 2019-5-7 11:04
真強大,大神厲害
作者: 一笑泯恩仇啊    時間: 2019-5-7 19:02
我現(xiàn)在也需要編寫一個藍牙,實現(xiàn)手機與51單片機的通信。但是我不知道怎么將軟硬件結(jié)合起來,只會用別人的藍牙軟件實現(xiàn)通信,請問在編寫藍牙怎么通過藍牙模塊hc05和51單片機進行通信啊,拜托,學長一定要看見啊
作者: wyhnb    時間: 2019-5-9 13:04
一笑泯恩仇啊 發(fā)表于 2019-5-7 19:02
我現(xiàn)在也需要編寫一個藍牙,實現(xiàn)手機與51單片機的通信。但是我不知道怎么將軟硬件結(jié)合起來,只會用別人的藍 ...

藍牙就只是透傳功能,藍牙模塊直接像串口通信一樣連接單片機,然后手機端網(wǎng)上都有例程,照抄一個就行,然后把想要發(fā)送到數(shù)據(jù)修改一下
作者: tw081531    時間: 2019-5-10 12:03
樓主請教哈 你的藍牙APP是用什么軟件編寫編譯的
作者: tw081531    時間: 2019-5-10 12:05
藍牙APP是用什么軟件編寫的
作者: wyhnb    時間: 2019-5-15 14:09
tw081531 發(fā)表于 2019-5-10 12:03
樓主請教哈 你的藍牙APP是用什么軟件編寫編譯的

Android stdio
作者: zzxx120021    時間: 2019-5-19 18:19
感謝分享
作者: 1121291439    時間: 2019-5-25 12:16
好東西
作者: 511黑單片機    時間: 2019-7-22 11:05
程序在哪找呢
作者: 威龍1410    時間: 2019-8-4 13:49
wyhnb 發(fā)表于 2018-12-17 12:36
藍牙APP

謝謝大佬分享
作者: 遷就    時間: 2019-8-5 11:41
謝謝分享
作者: tongange24    時間: 2019-9-11 11:38
必須點個贊啊。
作者: 配電箱    時間: 2019-10-5 10:58
wyhnb 發(fā)表于 2018-12-17 12:36
藍牙APP

666
可以的

作者: 1873436189    時間: 2019-10-17 13:03
那這個小車實現(xiàn)的功能是啥?
作者: QSM980405    時間: 2019-11-3 21:59
謝謝謝謝分享資料
作者: 懶惰吃貨    時間: 2019-11-9 08:49
藍牙如何接線啊
作者: wyhnb    時間: 2019-11-12 15:54
懶惰吃貨 發(fā)表于 2019-11-9 08:49
藍牙如何接線啊

看藍牙資料
作者: generalissimo    時間: 2019-11-19 21:28
下載參考下, 謝謝分享
作者: 我愛杯    時間: 2019-11-21 23:12
不懂裝懂 發(fā)表于 2018-11-25 11:45
手機APP怎么安裝啊 樓主

用手機的應(yīng)用寶可以裝
作者: 10K動力    時間: 2019-11-30 01:18
這款STM32-4WD小車好像是慧凈電子家的吧?我們學校組也買過,挺好!謝謝樓主分享,我可以繼續(xù)學習藍牙。
作者: asen816    時間: 2019-12-18 11:05
藍牙APP用什么寫的?
作者: asen816    時間: 2019-12-18 17:01
一笑泯恩仇啊 發(fā)表于 2019-5-7 19:02
我現(xiàn)在也需要編寫一個藍牙,實現(xiàn)手機與51單片機的通信。但是我不知道怎么將軟硬件結(jié)合起來,只會用別人的藍 ...

你用的什么藍牙軟件能共享一下嗎?
作者: hua123456    時間: 2020-2-19 17:13
謝謝分享
作者: hua123456    時間: 2020-2-19 17:13
謝謝分享,學習下
作者: zxd980605    時間: 2020-3-4 11:24
你好,我下了app工程為什么打開后有個地方報錯了
作者: 強123    時間: 2020-3-21 07:37
wyhnb 發(fā)表于 2018-12-17 12:36
藍牙APP

真棒,樓主6666
作者: contactdeshine    時間: 2020-3-21 17:59
很全很好很強大的資料 很有參考價值
作者: lt888666    時間: 2020-4-8 10:56
你好,為什么APP工程打開后在 Build Path / Configure Build Path 下沒有android選項,也不能設(shè)置sdk;總是報錯,怎么解決
作者: psponny    時間: 2020-4-9 08:46
感謝樓主分享
作者: 99312312    時間: 2020-5-15 18:04
謝謝分享 謝謝付出
作者: hujj    時間: 2020-5-17 18:57
下載手機APK,安裝時出現(xiàn)解析錯誤,下載了APK的工程文件,準備嘗試學習如何編譯。謝謝樓主分享!
作者: 劉忠    時間: 2020-6-5 16:32
電動機接口怎么接的可以指導一下嗎
作者: hao05020    時間: 2020-9-26 16:58
能給我發(fā)一份嗎,萬分感謝
作者: hao05020    時間: 2020-9-26 17:05
wyhnb 發(fā)表于 2018-12-17 12:36
藍牙APP

謝謝了。不錯不錯
作者: xiaojianmei    時間: 2020-11-27 21:59
有藍牙app的源碼嗎?有的話可以發(fā)下嗎?
作者: chjchj816    時間: 2021-1-7 08:41
我要學一學  漲些知識
作者: QAQQAQ    時間: 2021-4-15 11:04
正好在學習藍牙模塊的相關(guān)代碼!謝謝樓主
作者: gw1428jk    時間: 2021-5-13 21:48
好資料,51黑有你更精彩!!!
作者: chengdadao    時間: 2022-3-31 11:58
非常感謝,只是3個模塊分別積分。
作者: jiangkeqin_sy    時間: 2023-4-4 11:07
真強大,大神厲害
作者: li64331218    時間: 2023-4-9 15:42
學習了,以前的好東西不少啊。
作者: qiu4466    時間: 2025-1-6 10:43
學習一下,你用什么工具做的藍牙APP,想學習一下




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1