基于STM32的蓝牙小车(虚拟串口模拟)的Proteus仿真

文章目录


一、前言

proteus本身并不支持蓝牙仿真,这里我采用虚拟串口的方式来模拟蓝牙控制。

这里给出链接,有需要的小伙伴可以自行下载。

VSPD虚拟串口软件安装及使用

二、仿真图

1.要求

整部小车采用12V电源供电,由白色开关控制整体供电和断电,电机驱动采用TB6612FNG模块,另外还有控制方式有按键模式和蓝牙模式,蓝牙模块采用HC-05模块,超声波测距采用HC-SR04模块,进行自动避障,还需一个显示屏来显示当前模式和状态以及测距的距离。

2.思路

电源方面可以直接采用DCDC电源芯片或者LDO进行降压。

电机驱动是TB6612FNG模块,直接根据引脚定义进行连线即可。

至于驱动电机正转反转对着真值表写程序即可。

按键模式放置几个按键简单,但是在Proteus仿真中按键要注意接上拉电阻。

蓝牙模式由于仿真里面没有蓝牙,所以这边用虚拟串口代替,然后通过PC端的串口调试助手进行串口指令控制。

超声波测距模块HC-SR04在仿真里面是有,但是好像没办法模拟障碍物,所以只能显示个测距的距离。

至于显示屏当然是选用引脚较少的OLED显示屏。

3.画图

3.1 电源部分

这里电源输入是12V,然后通过SW1开关打到正极,(这里如果SW1打到负极GND,仿真时就会报错,算是模拟开关按下把。)

12V先经过TL783这个LDO进行降压到5V,再通过AMS1117-3.3再次降压到3.3V。

(这里其实直接用AMS1117-3.3一个就可以了,因为AMS1117-3.3输入电压可以达到18V,那时候画了就懒得改了。)

最后,有个红灯来代表电源指示灯,只要仿真开启,3.3V供电正常,这个灯就会常亮,算是代表供电正常。

3.2 超声波测距部分

3.3 电机驱动部分

3.4 按键部分

3.5 蓝牙部分

3.6 显示屏部分

3.7 整体

4.仿真

开始仿真,初始模式为按键模式,小车状态为停止状态。超声波测距模块设置为5.0,显示屏上面显示为50mm,上电串口发送指令Uart Test OK表示串口通讯正常。

按键模式,按下除模式切换和停止以外的按键,这里以右转为例,按下右转按键,小车开始模拟右转运动,左右电机开始按照右转状态进行转动。

按下模式切换按键,切换到蓝牙模式,用串口调试助手来模拟蓝牙发送小车前进串口指令进行控制小车运动。

5.软件

主函数

c 复制代码
/* Includes ------------------------------------------------------------------*/
#include "Drv_UserSystem.h"

/**
  * @brief  main function.
  * @param  none
  * @retval none
  */
int main(void)
{
	UserSystemInit();//用户配置初始化		
	while (1)
	{				
		if (stSysTime.flg._10ms + TEN_MILLISECOND < Time_millis()) //10ms
		{
			stSysTime.flg._10ms = Time_millis();	
            Key_Scan();//按键扫描			
		}
		if (stSysTime.flg._50ms + FIFTY_MILLISECOND < Time_millis()) //50ms
		{
			stSysTime.flg._50ms = Time_millis();					
		}
		if (stSysTime.flg._100ms + BEST_MILLISECOND < Time_millis()) //100ms
		{
			stSysTime.flg._100ms = Time_millis();	
			Receive_data_Handel();//数据接收判断
			IWDG_ReloadCounter();//清开门狗 
		}
		if (stSysTime.flg._1s + THOUSAND_MILLISECOND < Time_millis()) //1s
		{
			stSysTime.flg._1s = Time_millis();	 
			Led_Flicker();//灯光闪烁 	
			Measurement_function();//测距函数				
			OLED_Handel();//OLED显示							
	  }
  }
}

三、总结

今天主要讲了基于STM32的蓝牙小车的Proteus仿真(虚拟串口模拟)。感兴趣的可以去试试。

感谢你的观看!

相关推荐
GFCGUO9 分钟前
ubuntu18.04运行OpenPCDet出现的问题
linux·python·学习·ubuntu·conda·pip
丝丝不是土豆丝2 小时前
学习 CSS 新的属性 conic-gradient 实现环形进度条
学习
S hh2 小时前
【Linux】进程地址空间
java·linux·运维·服务器·学习
wusam2 小时前
螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习04(环境准备)
学习·docker·centos
攸攸太上2 小时前
Spring Gateway学习
java·后端·学习·spring·微服务·gateway
CV金科3 小时前
蓝桥杯—STM32G431RBT6(IIC通信--EEPROM(AT24C02)存储器进行通信)
stm32·单片机·嵌入式硬件·算法·蓝桥杯
Geek之路3 小时前
QT系统学习篇(1)
开发语言·qt·学习
IFTICing3 小时前
【文献阅读】Attention Bottlenecks for Multimodal Fusion
人工智能·pytorch·python·神经网络·学习·模态融合
新手unity自用笔记4 小时前
项目-坦克大战学习-子弹的移动与销毁
笔记·学习·c#
神一样的老师4 小时前
讯飞星火编排创建智能体学习(四):网页读取
人工智能·学习·语言模型·自然语言处理