【STM32项目】在FreeRtos背景下的实战项目的实现过程(二)

在这里插入图片描述

个人主页~

实战项目的实现过程(一)~


实战项目的实现过程

  • 二、初步了解各个外设硬件
    • 1、OLED模块
    • 2、GPS模块
    • 3、MPU6050模块
    • 4、超声测距模块
    • 5、温度测控模块
    • 6、语音模块
    • 7、SIM模块
    • 8、按键模块
  • 三、查阅资料
    • 1、查看手册
    • 2、查找例程
  • 四、研究硬件功能
    • 1、OLED模块
    • 2、GPS模块
    • 3、MPU6050模块
    • 4、语音模块

二、初步了解各个外设硬件

在我们确定好要实现的功能后,我们要找到实现功能所对应的模块,然后将他们的功能简要列举出来

这里我举几个我使用过的硬件的例子,将它们的简单功能以及物理特性罗列一下,在脑子里要清楚

1、OLED模块

对于OLED模块大家应该很熟悉,它对于程序的调试有很好的帮助以及有显示信息等功能,四脚OLED有SDA、SCK、VCC、GND,两根数据线两根电源线,使用IIC通信实现,现在的产品基本都会有显示屏,所以这个也是必不可少的

2、GPS模块

一根天线加一个解析模块,有VCC、GND、TX、RX、PPS,这里的PPS引脚是GPS特有引脚,是GPS模块上的一个特殊引脚,它用于输出每秒一个的脉冲信号,这个信号与UTC时间同步,具有非常高的精度和稳定性

3、MPU6050模块

MPU6050模块是一个6轴的陀螺仪芯片,它是使用IIC通信实现的,由3轴加速度计和3轴陀螺仪传感器,分别测量X、Y、Z轴的加速度以及X、Y、Z轴的角速度

它有VCC、GND、SCL、SDA、XDA、XCL、AD0、INT,其中XDA、XCL就相当于SDA和SCL,INT引脚是中断引脚,可以产生中断信号,可以用来触发中断

4、超声测距模块

超声测距模块功能就是测量物体与模块之间的距离,有GND、ECHO、TRIG、VCC,ECHO和TRIG分别是回响引脚和触发引脚,TRIG引脚用来触发超声波测距模块开始测距,ECHO引脚用来接收并输出超声波从发射到被障碍物反射回来并被接收的时间信息

5、温度测控模块

温度测控模块没啥好说的,就是一个温控电阻,然后可以测量实时温度,有VCC、DQ、GND,DQ引脚是DS18B20等温度传感器的数据输入输出引脚,用于传输温度数据等数字信号

6、语音模块

语音模块就是在特定任务下,中断所要执行的程序,比如说摄像头监控到行人闯红灯,这时,喇叭就可以播报:有人闯红灯了,禁止闯红灯!也就是起到一个警示和提醒的作用

这块芯片引脚比较多,说几个重要的,SPK+和SPK-是外接喇叭引脚,M+和M-是外接咪头,也就是麦克风引脚,然后有VCC、GND等

7、SIM模块

因为我们的项目是一个贴近生活的项目,所以会用到SIM模块,用以报警或将信息传递给指定号码

8、按键模块

按键模块用以触发中断,一般有几个按钮就有几个+1个引脚

三、查阅资料

一般在购买硬件之后商家会给我们发一个资料包,商家不发我们也可以直接要,或者直接从网络上找
在这里插入图片描述

1、查看手册

一般在刚开始上手硬件之前我们要先翻阅一下手册,第一遍看手册主要是看一下各个引脚的协议,简略的知道它们的连接方法,以及电气属性,其实简单来说就是别给弄坏了就行,保持正确的连接,这样方便我们进行调试

2、查找例程

在资料包中找到这个附带的例程,然后将它下载到单片机里跑一跑,然后我们自己来调试一下,保证程序正常运行,也就是裸机开发,将所有需要该模块实现的程序都移植到一个裸机程序中,实现我们预期的效果,这样这一步就OK了

打开核心板的手册,查看每个引脚对应的协议,修改例程中的某些引脚,避免出现多个设备要共用一个引脚的尴尬局面,这都是要提前规划好的

四、研究硬件功能

挑几个用的比较多的模块解析,其中能用到的比如说串口助手

1、OLED模块

OLED模块就是用来显示图片、数字、文字等的,但是因为单片机它并不是计算机,我们在VS上建一个项目,写一个printf就能直接把文字和数字打印出来,再搭配上数学公式,就可以显示一个精美的图形,在单片机上控制OLED屏幕显示就是控制它的像素点亮灭从而达到视觉上的效果,这时候我们就需要一个文件专门用来存放这些像素点组合起来的文字数字以及图片,然后用一个多个二维数组来维护,但我们怎么知道哪些像素点可以组成文字数字和图片呢,这时我们就可以用到取模工具
在这里插入图片描述
要是想要生成图片,就是下面这个图形模式

其实取模软件上面都自带教程的,我这里就不赘述了
在这里插入图片描述
获得的点阵数据存储到数组当中,按照循环打印的方式让像素亮起,这样就在视觉上形成了自己想要的图像

如此一来这个图像的生成就可以用来做我们优先级最低的一项任务,用来显示一些固定的图像,就像游戏机的开始界面,不按按钮就一直显示,按下某个按钮就会进入中断,然后程序跑到游戏任务里面执行游戏界面

2、GPS模块

调试这个模块的时候需要用到USB转TTL
在这里插入图片描述
就是个东西,可以将USB协议转为TTL协议,那么有人会问了:USB我知道,我们平常用的U盘、很多数据线上的插头都是USB的,TTL是什么?

TTL是一种电子电路中的逻辑电平标准,它使用晶体管进行逻辑电平转换,USB转TTL模块的作用是将计算机上的USB接口的信号转换为TTL电平的串口信号,以便与其他支持TTL电平标准的设备进行串口通信,也就是说是计算机与单片机进行串口通信的桥梁

然后请上我们配套的串口助手
在这里插入图片描述
串口助手可以实时接收到来自模块的信息,然后将信息显示甚至保存在文件当中,然后可以对比着商家给的资料就可以解析出经纬度,由于数据涉及到个人位置的隐私问题,就不拿出来举例了,不管是GPS还是北斗定位,它都会涉及到协议问题,再参照使用手册就可以很好理解这个模块的功能,一般这种模块的手册都是很简单的

3、MPU6050模块

这个模块在很多产品中都会用到,像电赛的循迹小车题等的都会用到,只要是要检测运动状态的产品中都会存在这个模块,这个模块很小,有八个引脚大致可以分为四个模块,一个是电源线(VCC、GND),一个是IIC通信线(SDA、SCL、XDA、XCL),一个是中断控制线(INT),一个是地址线(AD0)

电源线就不必多说了,VCC可接3.3V或5V

SCL:I2C通信的时钟线,用于同步数据传输,在I2C通信中,SCL由主设备控制,用于确定数据传输的速率。

SDA:I2C通信的数据线,用于在主设备和从设备之间传输数据。在MPU6050中,SDA引脚用于接收和发送数据

XDA和XCL:这些是MPU6050的辅助I2C接口引脚,用于连接其他外部设备或传感器,并非所有版本的MPU6050都包含这些引脚,具体取决于模块的封装和配置,效果与SCL与SDA相同,目的是将其他设备也挂载到IIC总线上

INT:中断引脚,可用于输出中断信号,当MPU6050检测到特定事件(如数据就绪、超出阈值等)时,可以通过该引脚输出中断信号,通知主控制器进行相应的处理

AD0:地址选择引脚,用于设置MPU6050的I2C地址,通过将该引脚连接到VCC或GND,可以选择不同的I2C设备地址,从而允许在同一I2C总线上连接多个MPU6050模块而不会发生地址冲突

4、语音模块

语音模块的使用可以是外接一个喇叭,或者一个喇叭一个咪头,对于语音模块的使用还是按照步骤来,发来的资料包中看手册看功能,然后再在网络上搜索,这里调试硬件也是需要USB转TTL,可以极大程度的方便我们使用模块,不过这里我们用到的功能是烧录

按照教程的说法,我们可以在某平台上进行固件下载,未来我们要输出的语音指令就可以是对应固件的,比如说固件的语音输出的包头包尾我们可以写在单片机程序当中,然后再在中间加入要语音输出的内容,这样我们就可以很好的将该模块适配到单片机上
在这里插入图片描述
网上教程有很多,对于入门使用很详细,入门之后自己挖掘就可以了,这样一个固件就下载好了,这个模块也就调试好了,当然编写程序的时候一定要看这个固件的协议是什么样的,以便对症下药

我所使用的芯片是SU-03T,是一款较普遍且稳定的语音模块芯片
在这里插入图片描述
下载是用的烧录工具,在网上可以找到烧录教程
在这里插入图片描述

固件对每个引脚都有配置的参数,用户可以自行调整,如果装载着咪头,还可以进行语音唤醒,语音识别后进行相应的操作,这样可以做一些智能家居、智能遥控器、智能音箱啥的


写到这里我突然明白了为什么现在的企业对于这些智能家居、智能小车那么不感冒了,实现的原理在我们梳理模块功能的时候就能将一个小项目给规划出来,包括智能门锁这样的项目,我在网上看到过教程,裸机开发就能搞定,只需要4*4的按钮,这样的项目还不如做一个小型的游戏机,起码小型的游戏机里面的游戏逻辑也就是代码部分要求还是比较高的,像我C语言项目里面的贪吃蛇游戏就可以进行修改然后做成小游戏机

但进行一些类似上面所说的小的项目实践对于深入了解STM32的各种外设是帮助很大的,因为软硬结合的这种工作是需要动手实践的,只看教程和书本是效率很低的一种行为,练手是可以的,搬上台面就没啥竞争力了


今日分享就到这里了~

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/404112.html

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

相关文章

js使用run编码计算region的交集并集差集

所有shape都转为run编码 转为run编码后再运算可以节约大量内存 subtractIntervals 函数的逻辑:目前的实现假设了所有的 subIntervals 都会与 intervals 完全重叠,这可能导致计算不准确。应该将 subIntervals 从 intervals 中去除时,考虑到可能的部分重叠。 差集计算:sub…

双剑合璧,网络无敌!Windows Server 2012 R2双网卡绑定实战教程

文章目录 双剑合璧,网络无敌!Windows Server 2012 R2双网卡绑定实战教程1 背景信息2 配置步骤2.1 登录服务器2.2 分别清除两块网卡的配置2.3 进入“本地服务器”界面2.4 进入“NIC组合”界面2.5 创建网卡绑定组2.6 设置新建组参数2.7 查看已创建的网卡组…

【kubernetes】k8s配置资源管理

一、ConfigMap资源配置 ConfigMap保存的是不需要加密配置的信息 ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap API 给我们提供了向容器中注入配置信息的机制,ConfigMap 可以被…

银河麒麟V10+qt5,12.11编译mysql驱动连接OceanBase数据库

1、下载mysql数据库,解压后里面包含编译所需要的lib和include文件夹,下载地址:https://www.mysql.com/downloads/ 选择适合自己系统的版本: 解压后的文件夹中包含需要的lib和include文件夹: 使用qt打开mysql源码项目: 根据自己qt安装路径,找到项目: 注释掉如图: …

C++STL之string类:相关习题解析

目录 1,字符串转整型数字 2,字符串最后一个单词的长度(getline的使用) 3,仅仅反转字母 4,字符串中的第一个唯一字符(找字符串中第一个只出现一次的字符) 5,验证回文串 6,验证回文串|| 7,…

Vue 3 + 天地图 + D3.js 绘制行政区划

​🌈个人主页:前端青山 🔥系列专栏:组件封装篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来组件封装篇专栏内容:组件封装-天地图 目录 引入天地图 API 初始化地图 引入 D3.js 加载行政区划数据 添…

mysql聚合函数和分组

我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

小五金加工:细节决定产品质量与性能

在小五金加工领域,细节往往决定着最终产品的质量、性能以及市场竞争力。看似微不足道的细微之处,实际上蕴含着巨大的影响。时利和将介绍小五金加工中细节的重要性。 首先,细节关乎产品的精度。小五金零件通常尺寸较小,但对精度的要…

TorchChat:Ollama的潜在对手

PyTorch最近发布TorchChat,TorchChat允许在本地台式机、笔记本电脑或移动设备上下载和运行大型语言模型。会不会让你想到什么,没错就是Ollama。TorchChat是一个适应性强的框架,旨在提高各种硬件平台的LLMs效率,有助于在各种设备上…

怎样使用sudo的时候不需要输入密码?

在Ubuntu等Linux系统下,经常要在个人账户使用sudo命令来执行一些需要root权限的命令,但是需要输入该账户的密码,有时候显得很繁琐, 那么怎样使用sudo的时候不需要输入密码呢? 有如下两种方法: 常规方法1…

解决 Swift 6 全局变量不能满足并发安全(concurrency-safe)读写的问题

概述 WWDC 24 终于在 Swift 十岁生日发布了全新的 Swift 6。这不仅意味着 Swift 进入了全新的“大”版本时代,而且 Swift 编译器终于做到了并发代码执行的“绝对安全”。 不过,从 Swift 5 一步迈入“新时代”的小伙伴们可能对新的并发检查有些许“水土不…

迭代器失效

一、什么是迭代器失效 迭代器的主要作用就是让算法能够不用关心底层数据结构,其底层实际就是一个指针,或者是对指针进行了封装,比如:vector的迭代器就是原生态指针T* 。因此迭代器失效,实际就是迭代器底层对应指针所指…

使用Virtio Driver实现一个计算阶乘的小程序——QEMU平台

目录 一、概述 二、代码部分 1、Virtio 前端 (1) User Space (2) Kernel Space 2、Virtio 后端 三、运行 QEMU Version:qemu-7.2.0 Linux Version:linux-5.4.239 一、概述 本篇文章的主要内容是使用Virtio前后端数据传输的机制实现一个计算阶乘的…

【RabbitMQ】 相关概念 + 工作模式

本文将介绍一些MQ中常见的概念,同时也会简单实现一下RabbitMQ的工作流程。 MQ概念 Message Queue消息队列。是用来存储消息的队列,多用于分布式系统之间的通信。 系统间调用通常有:同步通信和异步通信。MQ就是在异步通信的时候使用的。 同…

萝卜快跑和端到端的自动驾驶(1)

先看一篇论文 2311.18636 (arxiv.org) 这篇论文里有一个非常好的图 比较了一下模块化任务(级联任务)和端到端自动驾驶的区别 首先什么叫模块化任务(级联) 如上图所示,左边的方块中的子方块,是展示了自动驾驶获取数据的途径,这里包括&…

Java之文件操作和IO

目录 File类 属性 构造方法 方法 文件内容的读写 InputStream OutputStream File类 属性 修饰符及类型属性说明static StringpathSeparator依赖于系统的路径分隔符,String类型的表示static charpathSeparator依赖于系统的路径分隔符,char类型的…

vscode 远程免密登录

Windows R 输入 cmd在命令行终端中输入 ssh-keygen 一直回车、确定 生成秘钥 3. C:\用户\xxx.ssh 拷贝公钥内容 id_rsa.pub 4. 在虚拟机~/.ssh/ 下创建文件touch authorized_keys,拷贝公钥内容 id_rsa.pub粘贴到authorized_keys里即可。

uniapp自定义请求头信息header

添加请求头:uniapp自定义请求头信息header,如下:添加tenant-id参数 代码

信创教育:培养未来科技创新的生力军

随着全球数字化转型的加速,信息技术应用创新(简称“信创”)产业作为推动国家信息技术自主可控和产业升级的关键领域,正迎来前所未有的发展机遇。信创教育,作为培养未来科技创新生力军的重要阵地,其重要性和…

win的netassist TCP测试工具和Linux的nc工具使用

写在前面 有时工作中我们编写一些tcp相关的程序,而netassist就是这样一款辅助我们进行TCP功能测试的工具,你可以从这里下载。 1:netassist使用 我们需要一个server程序,可以参考这篇文章,启动server后,就…