单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
上一页
1/2
下一页
查看:45008|回复:69
打印上一主题下一主题

手机蓝牙控制智能小车:STM32+蓝牙模块+蓝牙APP源码与资料

 [复制链接]
跳转到指定楼层
楼主
ID:380690发表于 2018-11-7 10:17|只看该作者回帖奖励
智能小车是买的,芯片是STM32F103ZET6

代码也有被我改过,画圈是可以调车速的,

蓝牙模块是买的,主要做透传,

蓝牙APP是自己写的,看程序只要接收到I,A,B,C,D就能行走,还是比较简单,

在网上找了一个连接蓝牙的方法,然后写四个按键,点击按键就发送相应的字母就OK了,最开始是实现的,只不过需要不断点击,连续发送才能一直行走,就想要按下让小车一直行走,想着让手机蓝牙在按下按键时候一直连续发送指令,貌似没办法实现,因为一直按下就像死循环,Android会检测到不允许死循环,后来改小车的代码,接收到前进指令单片机就死循环,一直前进,直到接收到停止指令,在手指抬起后发送一个停止指令就实现按下一直行走,还是需要转换一下思想!!!

智能小车的原理图和代码都贴出来了,蓝牙模块直接插上就可以用,手机APP源码和工程也贴出来了。

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

  4. //GPIO配置函数
  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. //根据占空比驱动电机转动
  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;//增加后轮驱动力
  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;//增加后轮驱动力
  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, 下载次数: 768)
APP工程.7z(3.61 MB, 下载次数: 808)
蓝牙模块资料.zip(4.26 MB, 下载次数: 644)


评分

黑币 +130
收起理由
+ 30
很给力!
+ 100
共享资料的黑币奖励!

查看全部评分

来自 2#
ID:380690发表于 2018-12-17 12:36|只看该作者
本帖最后由 wyhnb 于 2018-12-17 13:06 编辑

蓝牙APP

蓝牙APP.rar

2.95 MB, 下载次数: 362, 下载积分: 黑币 -5

评分

黑币 +50
收起理由
+ 50
回帖助人的奖励!

查看全部评分

板凳
ID:336990发表于 2018-11-25 11:45|只看该作者
手机APP怎么安装啊 楼主
地板
ID:434968发表于 2018-11-28 14:45|只看该作者
怎么装啊
5#
ID:380690发表于 2018-11-30 13:16|只看该作者
不懂装懂 发表于 2018-11-25 11:45
手机APP怎么安装啊 楼主

手机APP直接下载到手机就可以安装啊!!!有问题?
6#
ID:380690发表于 2018-11-30 13:16|只看该作者

装APP?
7#
ID:437503发表于 2018-12-2 09:32|只看该作者
可不可以发邮箱呀
8#
ID:89134发表于 2018-12-3 08:33|只看该作者
STM32+蓝牙模块+蓝牙APP源码与资料
9#
ID:380690发表于 2018-12-3 09:57|只看该作者
ll19961225 发表于 2018-12-2 09:32
可不可以发邮箱呀

可以加我QQ
10#
ID:380690发表于 2018-12-3 09:58|只看该作者
cmxgx 发表于 2018-12-3 08:33
STM32+蓝牙模块+蓝牙APP源码与资料

资料都在这里了啊
11#
ID:440361发表于 2018-12-5 19:54|只看该作者
楼主你好,可以QQ发一下给我吗
12#
ID:303722发表于 2018-12-6 15:31|只看该作者
谢谢楼主,,,,,,,,,,,,
13#
ID:441706发表于 2018-12-7 16:28|只看该作者
谢谢分享
14#
ID:166208发表于 2018-12-9 11:54|只看该作者
不懂装懂 发表于 2018-11-25 11:45
手机APP怎么安装啊 楼主

看看我的帖子  他这个是源程序 使用 andorid studio写的   需要打包成apk文件
15#
ID:380690发表于 2018-12-11 10:04|只看该作者
里面有生成的APK,仔细看!
16#
ID:437105发表于 2018-12-11 20:52|只看该作者
wyhnb 发表于 2018-12-11 10:04
里面有生成的APK,仔细看!

拓展名是什么?
17#
ID:380690发表于 2018-12-12 09:28|只看该作者

手机软件的后缀就是.apk
18#
ID:89134发表于 2018-12-17 23:16|只看该作者
看看是用的什么蓝牙模块 学习了
19#
ID:58625发表于 2019-1-9 11:05|只看该作者
学习学习
20#
ID:477028发表于 2019-2-16 08:27|只看该作者
感觉很好玩的样子
21#
ID:146874发表于 2019-3-4 09:27|只看该作者
感谢分享
22#
ID:491774发表于 2019-3-15 23:39|只看该作者
谢谢分享
23#
ID:493630发表于 2019-3-18 23:00|只看该作者
研究研究
24#
ID:501638发表于 2019-3-31 11:57|只看该作者
值得学习
25#
ID:269090发表于 2019-4-16 09:56|只看该作者
有用到小马达吗?
26#
ID:380690发表于 2019-4-16 11:28|只看该作者
ghq 发表于 2019-4-16 09:56
有用到小马达吗?

智能小车是买的,轮子就是马达啊
27#
ID:508379发表于 2019-4-28 09:56|只看该作者
学习学习
28#
ID:449395发表于 2019-5-3 19:30|只看该作者
, 我手机装不了
29#
ID:449395发表于 2019-5-3 19:32|只看该作者
不懂装懂 发表于 2018-11-25 11:45
手机APP怎么安装啊 楼主

把apk文件发到手机里,安装
30#
ID:528890发表于 2019-5-7 11:04|只看该作者
真强大,大神厉害
31#
ID:229106发表于 2019-5-7 19:02|只看该作者
我现在也需要编写一个蓝牙,实现手机与51单片机的通信。但是我不知道怎么将软硬件结合起来,只会用别人的蓝牙软件实现通信,请问在编写蓝牙怎么通过蓝牙模块hc05和51单片机进行通信啊,拜托,学长一定要看见啊
32#
ID:380690发表于 2019-5-9 13:04|只看该作者
一笑泯恩仇啊 发表于 2019-5-7 19:02
我现在也需要编写一个蓝牙,实现手机与51单片机的通信。但是我不知道怎么将软硬件结合起来,只会用别人的蓝 ...

蓝牙就只是透传功能,蓝牙模块直接像串口通信一样连接单片机,然后手机端网上都有例程,照抄一个就行,然后把想要发送到数据修改一下
33#
ID:243076发表于 2019-5-10 12:03|只看该作者
楼主请教哈 你的蓝牙APP是用什么软件编写编译的
34#
ID:243076发表于 2019-5-10 12:05|只看该作者
蓝牙APP是用什么软件编写的
35#
ID:380690发表于 2019-5-15 14:09|只看该作者
tw081531 发表于 2019-5-10 12:03
楼主请教哈 你的蓝牙APP是用什么软件编写编译的

Android stdio
36#
ID:542229发表于 2019-5-19 18:19|只看该作者
感谢分享
37#
ID:546866发表于 2019-5-25 12:16|只看该作者
好东西
38#
ID:461278发表于 2019-7-22 11:05|只看该作者
程序在哪找呢
39#
ID:425175发表于 2019-8-4 13:49来自手机|只看该作者
wyhnb 发表于 2018-12-17 12:36
蓝牙APP

谢谢大佬分享
40#
ID:484435发表于 2019-8-5 11:41|只看该作者
谢谢分享

手机版|小黑屋|51黑电子论坛|51黑电子论坛6群QQ管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网