目录
一、系统设计
1.硬件设计

图1.1 硬件系统设计
- 主控制器:STM32F103ZET6是一款基于ARM Cortex-M3内核的微控制器,由意法半导体(STMicroelectronics)生产。该控制器具有高性能、低功耗、低成本等优点,能够满足小车控制系统的需求。
- 循迹模块: 采用TCRT5000传感器,具有探测距离远、灵敏度高、响应速度快、可靠性强等优点,可以广泛应用于机器人、智能小车、自动化生产线等场合。同时,该传感器还具有抗干扰能力强、稳定性高等特点,能够有效地降低外界干扰对传感器的影响,提高检测的准确性和稳定性。
- 超声波避障模块:HC-SR04模块包括超声波发射器、接收器和控制电路。它具有测距精度高、使用方便等优点,可广泛应用于移动机器人、智能小车、自动控制等领域。
- 蓝牙模块:HC-05是一种基于蓝牙协议的无线通信模块,常用于微控制器与其他设备之间的无线通信。可用于智能家居、远程控制、数据记录、机器人、监控系统等领域。
- 电机驱动模块:选用L298N电机驱动模块,该模块具有驱动能力强、稳定性好等优点,能够满足小车运动需求。
- 电压转换模块:采用AMS1117 ,5V转换为3.3V模块。AMS1117是一个正向低压降稳压器,在1A电流下具有1.2V的压降。这个器件主要应用于提供1A的输出电流和低至1V的压差,适用于电池供电和便携式计算机等设备。
2.软件设计
软件编程方面使用STM32CubeMX,STM32CubeMX是一款图形化工具,用于配置STM32微控制器。它可以帮助开发者通过直观的图像界面快速完成STM32微控制器的硬件配置、外设初始化以及中间件设置等工作。
使用CubeMX生成的代码是基于HAL库的,而不是标准库。HAL库是英文Hardware Abstraction Layer的缩写,中文意思是硬件抽象层。HAL库提供了一种硬件和软件的抽象层,使开发者能够更加方便地操作内核,并且让不同内核下的编程不再复杂。
之所以选择STM32CubeMX,是因为通过CubeMX,开发者可以大幅提高开发效率,降低开发难度,尤其是对于刚接触STM32的新手。

图1.2 软件系统设计
根据上图:
- 初始化:在程序开始时,需要对STM32微控制器、传感器和电机驱动模块进行初始化配置。
- 数据采集:通过编程控制HC-SR04超声波传感器和红外传感器和蓝牙HC-05模块进行数据采集,并将采集到的数据发送给STM32微控制器。
- 数据处理:在STM32微控制器中,对采集到的数据进行处理和分析,判断小车是否需要改变运动状态或方向。
- 驱动电机:根据数据处理结果,通过编程控制电机驱动模块实现小车的运动和方向控制。
二、硬件系统设计
2.1单片机整体系统电路设计

图2.1 整体硬件电路图
如图2.1硬件电路图,包括了复位电路模块、电源部分和超声波模块、HC-05蓝牙模块、红外避障模块、DDC滤波器以及3x2的GND线。
2.2单片机最小系统电路设计
1.晶振电路
STM32F103ZET6芯片内置了HSI时钟,其频率为8M。在STM32中,时钟源的选择和配置通常是通过修改相应的寄存器来完成的。对于STM32F103ZET6,可能需要修改的寄存器包括RCC_CFGR和RCC_CR。

图2.2 高速内部时钟
一般来说,如果使用HSI(High Speed Intrenal,高速内部时钟)作为时钟源,可能需要将RCC_CR寄存器的HSIRDY位设置为1,以使能HSI时钟源。然后,可以在RCC_CFGR寄存器中配置预分频器和倍频系数,以得到所需的系统时钟频率。
2.复位电路
复位电路是用于将电路恢复到初始状态的电路。在数字电路中,复位电路通常用于将寄存器或计数器等数字电路组件的输出状态设置为初始值,以确保电路的正确启动和运行。
对于STM32F103ZET6这样的微控制器,复位电路的作用是将微控制器的内部寄存器和状态机等组件的状态恢复到初始状态,以确保微控制器能够正常工作。

图2.3 复位电路
复位电路通常由复位引脚、复位去抖电路、上电复位电路和按键复位电路等部分组成。复位引脚用于接收外部的复位信号,复位去抖电路用于消除由于按键抖动等原因引起的虚假复位信号,上电复位电路用于在电源上电时自动产生复位信号,按键复位电路用于通过按键手动产生复位信号。
在STM32F103ZET6中,复位电路的设计包括低电平复位和上电复位两部分。当复位引脚保持在低电平状态时,微控制器将进行复位操作。此外,在上电时,微控制器会自动检测电源电压是否稳定,如果电源电压稳定,则自动产生复位信号,将微控制器内部组件的状态恢复到初始状态。
3.BOOT电路
STM32F103ZET6的BOOT电路是用于设置微控制器启动方式的电路。BOOT电路通过BOOT0和BOOT1两个引脚来选择不同的启动模式。

图2.4 BOOT电路
在STM32F103ZET6中,可以选择三种不同的启动模式:主闪存存储器启动模式、系统存储器启动模式和内置SRAM启动模式。这些启动模式的选择对应于不同的数据存储和读写擦除方式。
主闪存存储器启动模式是将微控制器从主闪存存储器中启动,这是最常见的启动模式。系统存储器启动模式是将微控制器从系统存储器中启动,这种模式通常用于在厂家进行生产时将启动程序设置好,不允许用户修改。内置SRAM启动模式是将微控制器从内置SRAM中启动,这种模式通常用于调试。
| BOOT0 | BOOT1 | 功能 | |
|---|---|---|---|
| ROM启动模式 | 0 | 1 | 启动的程序功能由厂家设置,从系统存储器启动程序 |
| SRAM启动模式 | 1 | 0 | 可以用于调试 |
| FLASH启动模式 | 1 | 1 | 正常的工作模式 |
在BOOT电路中,通过将BOOT0和BOOT1引脚设置为不同的状态来选择不同的启动模式。例如,当BOOT0=1、BOOT1=1时,选择主闪存存储器启动模式;当BOOT0=0、BOOT1=1时,选择系统存储器启动模式;当BOOT0=1、BOOT1=0时,选择内置SRAM启动模式。
总之,BOOT电路是STM32F103ZET6中非常重要的组成部分,它能够选择不同的启动模式,从而决定微控


668

被折叠的 条评论
为什么被折叠?



