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

news/2024/10/20 21:11:58/

文章目录

  • 一、前言
  • 二、仿真图
    • 1.要求
    • 2.思路
    • 3.画图
      • 3.1 电源部分
      • 3.2 超声波测距部分
      • 3.3 电机驱动部分
      • 3.4 按键部分
      • 3.5 蓝牙部分
      • 3.6 显示屏部分
      • 3.7 整体
    • 4.仿真
    • 5.软件
  • 三、总结


一、前言

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.软件

主函数

/* 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仿真(虚拟串口模拟)。感兴趣的可以去试试。

感谢你的观看!

在这里插入图片描述


http://www.ppmy.cn/news/1435861.html

相关文章

Nginx代理MinIO时出现“Access Denied“错误

MinIO与Nginx集成时&#xff0c;如果出现"Access Denied"错误&#xff0c;通常意味着Nginx代理的请求没有被正确地转发到MinIO服务。 出现错误&#xff1a; <Error><Code>AccessDenied</Code><Message>Access Denied.</Message><…

【第3节】“茴香豆“:搭建你的 RAG 智能助理

目录 1 基础知识1.1.RAG技术的概述1.2 RAG的基本结构有哪些呢&#xff1f;1.3 RAG 工作原理&#xff1a;1.4 向量数据库(Vector-DB )&#xff1a;1.5 RAG常见优化方法1.6RAG技术vs微调技术 2、茴香豆介绍2.1应用场景2.2 场景难点2.3 茴香豆的构建&#xff1a; 3 论文快读 1 基础…

Java从坚持到精通-SpringAI

1.加入坐标 2.项目配置 如上图&#xff0c;SpringAI需要api-key和base-url&#xff0c;都是需要科学上网才可以。 3.编写方法 直接注入OpenAIChatClient对象即可&#xff0c;高版本springboot已经自动装配了。 然后调用该方法的call方法&#xff0c;表示发送请求。 4.生成图…

模块三:二分——852.山脉数组的峰顶索引

文章目录 题目描述算法原理解法一&#xff1a;暴力查找解法二&#xff1a;二分查找 代码实现暴力查找二分——C二分——Java 题目描述 题目链接&#xff1a;852.山脉数组的峰顶索引 算法原理 解法一&#xff1a;暴力查找 峰顶&#xff1a;比左右区间都大 遍历整个数组&…

人生关卡设计:内在动力、外在挑战与成长路径的构建

人生被喻为一场旅程&#xff0c;其中充满了无数的关卡&#xff0c;这些关卡不仅是外在环境施加的挑战&#xff0c;更是个体内心动力驱动下自我设定的成长节点。本文旨在探讨人生关卡设计的概念&#xff0c;及其如何通过内在动力、外在挑战与成长路径的交织构建&#xff0c;塑造…

若依顶部导航栏Navbar一些个性化设置

navbar改造 删除部分默认工具栏 代码所在位置 src–>layout–>component–>Navbar.vue <div class"right-menu"><template v-if"device!mobile"> <!-- <search id"header-search" class"right-menu-ite…

跨境电商爬数据

跨境电商爬虫是一种用于获取跨境电商平台上商品信息的自动化工具。它通过模拟用户在网页上的操作&#xff0c;自动访问跨境电商平台的页面&#xff0c;并提取所需的商品数据。跨境电商爬虫可以帮助商家或研究人员快速获取大量商品信息&#xff0c;进行市场分析、价格比较、竞争…

AndroidStudio 新建工程的基本修改及事件添加

注&#xff1a;2022.3.1&#xff0c;新建Empty Activity默认是Kotlin&#xff0c;可以选择新建Empty View Activity&#xff0c;修改语言为JAVA 应用名称 修改应用名称 路径&#xff1a;res-values-strings.xml 是否显示应用名称 路径&#xff1a;res-values-themes.xml …