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

文章目录

  • 一、前言
  • 二、仿真图
    • 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.hqwc.cn/news/638201.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python爬虫--------requests案列(二十七天)

兄弟姐们&#xff0c;大家好哇&#xff01;我是喔的嘛呀。今天我们一起来学习requests案列。 一、requests____cookie登录古诗文网 1、首先想要模拟登录&#xff0c;就必须要获取登录表单数据 登录完之后点f12&#xff0c;然后点击network&#xff0c;最上面那个就是登录接口…

详解Java中的五种IO模型

文章目录 前言1、内核空间和用户空间2、用户态和内核态3、上下文切换4、虚拟内存5、DMA技术6、传统 IO 的执行流程 一、阻塞IO模型二、非阻塞IO模型三、IO多路复用模型1、IO多路复用之select2、IO多路复用之epoll3、总结select、poll、epoll的区别 四、IO模型之信号驱动模型五、…

VUE运行找不到pinia模块

当我们的VUE运行时报错Module not found: Error: Cant resolve pinia in时 当我们出现这个错误时 可能是 没有pinia模块 此时我们之要下载一下这个模块就可以了 npm install pinia

RattbitMQ安装

1.RabbitMQ是什么? RabbitMQ是消息队列的一种&#xff0c;生态好&#xff0c;好学习&#xff0c;易于理解&#xff0c;时效性强,支持很多不同语言的客户端,扩展性、可用性都很不错。学习性价比非常高的消息队列&#xff0c;适用于绝大多数中小规模分布式系统。 今天先来简单讲…

【webrtc】m114自己实现的PrioritizedPacketQueue及优先级处理

G:\CDN\WEBRTC-DEV\libwebrtc_build\src\modules\pacing\prioritized_packet_queue.h跟m98不同 :webrtc】m98 RoundRobinPacketQueue的优先级处理,m114直接使用taskqueue顺序处理了。甚至自己实现了优先级队列感觉简化了实现,更为清晰 易读,但是去掉了码率低就优先的逻辑。1…

ChatGPT基础(三) 让ChatGPT回答质量提高十倍的提示词模版

上篇文章介绍了ChatGPT使用提示词的一些方法策略和如何优化我们的提示词。这里呢&#xff0c;我介绍一下参照大佬的方法总结的一个提示词的一个用法的模板。使用这个模板之后&#xff0c;我们的提问和获得答案的效率和收集素材的完整度能提高很多。 首先我介绍一下这个模板&am…

R: 阿尔法α多样性计算和箱图制作,以及差异分析

# install.packages("vegan") library(vegan) library(ggplot2) library(ggpubr)setwd("xxx") # 使用read.table()函数读取数据 df <- read.table("xxx", header TRUE, row.names 1)# 转置数据框 df <- t(df)# 计算每个样品的香农多样性…

面试(06)————MySQL篇

目录 问题一&#xff1a;在MySQL中&#xff0c;如何定位慢查询&#xff1f; 方案一&#xff1a;开源工具 方案二&#xff1a;MySQL自带慢日志 模拟面试 问题二&#xff1a;这个SQL语句执行很慢&#xff0c;如何分析的呐&#xff1f; 模拟面试 问题三&#xff1a;了解过索引…

kali没有数字签名

一开始以为是国外源访问缓慢问题&#xff0c;更新国内源后依旧报错 解决方案&#xff1a; 你需要下载apt源对应的签名文件&#xff0c;并使用apt-key命令将其添加到系统中。例如&#xff0c;对于Kali的官方源&#xff0c;你可以使用以下命令下载并安装签名文件&#xff1a; …

Python图像处理【24】面部变形(face morphing)

面部变形 0. 前言1. 网格变形算法2. 实现面部变形小结系列链接 0. 前言 面部变形 (face morphing) 的目的是在计算图像中两个面部之间的平均值&#xff0c;它并不是计算两张图像的平均值&#xff0c;而是计算面部区域的平均值。可以将该过程分解为以下两步&#xff1a; 对齐两…

web渗透xxe漏洞

xxe xml external entity 外部实体注入&#xff0c;用户输入恶意 xml 被后台解析了恶意语句 owasptop10-- 不安全的配置 xml 是什么&#xff1f;&#xff1f; XML 指可扩展标记语言&#xff08; EXtensible Markup Language &#xff09;。 XML 是一种很像 HTML 的标记…

了解网卡、光猫、路由器

了解网卡、光猫、路由器 一、网卡二、光猫三、路由器四、光猫和路由器的联系和区别五、家庭正常上网的简单流程六、企业正常上网的简单流程 一、网卡 网卡&#xff1a;用来允许计算机在计算机网络上进行通讯的计算机硬件 一般来说&#xff0c;笔记本都有两种网卡&#xff0c;有…