1回答

0收藏

基于安全感知的车内控制

#竞赛 #竞赛 1763 人阅读 | 1 人回复 | 2023-11-27

本帖最后由 suncat0504 于 2023-12-2 20:16 编辑

之前国内发生了多起在盛夏把熟睡的儿童单独置于车内,由于阳光曝晒、车窗紧闭导致的安全事故。因此萌发了制作一个监测控制系统,在车内有人在熟睡状态下,出现高温、闷热、氧气不足场合,产生报警以及自动将车窗打开一定缝隙,增加空气流动,避免对孩童产生伤害的系统。在这里要感谢得捷提供的机会,让我可以申请到合适的开发板,来着手制作这个系统。

我申请的是以STM32U585AII6Q为控制核心的B-U585I-IOT02A物联网开发板,之所以选择这块开发板,是因为看中了这块开发板上集成多种传感器,可以直接拿来使用。集成度高,接口已经设置好,可以快速搭配起开发环境。

板子刚拿到手里的时候,按照习惯,马上上网查找它的资料。不过很遗憾啊,这个板子的中文资料,我最终没有找到,找到的是英文版的资料。对于一个二外不是英语的人来说,是有些痛苦的。好在有其它板子的开发经验可以借鉴。在下载的支持包中,有例程可以参考,通常从习惯上说,都是从点亮LED开始的,这次也不例外。多说一句,在查找资料的过程中,曾经想着用CubeMX辅助开发,弄了几下,感觉得花点时间学习才行。所以就先放放,直接以GPIO例程为基础,后面一步一步拓展,来实现预想的功能。
从官网下载下来的stm32cube_fw_u5_v111.zip(这个可以通过CubeMX来获得,不需要费力去网上找了,这也是我初次接触CubeMX得到的经验)中包含了GPIO_IOToggle例程,里面有适用于CubeIDE的工程。打开它,做一些必要的修改,然后按照“STM32 C/C++  Application”执行,就能实现下载(事实上如何在CubeIDE中进行下载,我还没学会呢,哈哈哈哈)。

为了方便观察,主程序中的代码我改了下,和原程序有出入。

  1. <font size="3">int main(void) {
  2.   /* USER CODE BEGIN 1 */
  3.   /* STM32U5xx HAL library initialization:
  4.        - Configure the Flash prefetch
  5.        - Configure the Systick to generate an interrupt each 1 msec
  6.        - Set NVIC Group Priority to 3
  7.        - Low Level Initialization
  8.      */
  9.   /* USER CODE END 1 */

  10.   /* MCU Configuration--------------------------------------------------------*/

  11.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  12.   HAL_Init();

  13.   /* USER CODE BEGIN Init */

  14.   /* USER CODE END Init */

  15.   /* Configure the system clock */
  16.   SystemClock_Config();

  17.   /* Configure the System Power */
  18.   SystemPower_Config();

  19.   /* USER CODE BEGIN SysInit */

  20.   /* USER CODE END SysInit */

  21.   /* Initialize all configured peripherals */
  22.   MX_ICACHE_Init();
  23.   /* USER CODE BEGIN 2 */

  24.    /* -1- Enable GPIO Clock (to be able to program the configuration registers) */
  25.   LED7_GPIO_CLK_ENABLE();
  26.   LED6_GPIO_CLK_ENABLE();

  27.   /* -2- Configure IO in output push-pull mode to drive external LEDs */
  28.   GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
  29.   GPIO_InitStruct.Pull  = GPIO_NOPULL;
  30.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;

  31.   GPIO_InitStruct.Pin = LED7_PIN;
  32.   HAL_GPIO_Init(LED7_GPIO_PORT, &GPIO_InitStruct);
  33.   GPIO_InitStruct.Pin = LED6_PIN;
  34.   HAL_GPIO_Init(LED6_GPIO_PORT, &GPIO_InitStruct);

  35.   /* USER CODE END 2 */

  36.   /* Infinite loop */
  37.   /* USER CODE BEGIN WHILE */
  38.   while (1) {
  39.     /* USER CODE END WHILE */

  40.     /* USER CODE BEGIN 3 */

  41.         HAL_GPIO_TogglePin(LED7_GPIO_PORT, LED7_PIN);
  42.         HAL_GPIO_TogglePin(LED6_GPIO_PORT, LED6_PIN);
  43.     /* Insert delay 100 ms */
  44.     HAL_Delay(500);

  45.     /* USER CODE END 3 */

  46.   }
  47. }</font>
复制代码


修改的就是USER CODE BEGIN 3USER CODE END 3之间的代码,运行后可以看到开发板上蓝色按钮的左边的两个LED(红色和绿色)按照程序要求的那样闪烁了。

根据这个开发板的用户手册,我找到了一些相关的资料。

一、开发板的正面和反面
[attach
]1873008[/attach]

二、硬件框图

三、板载传感器配置
模块
描述
访问地址[7:0] + R/W
I2C写地址
I2C读地址
HTS221
电容式数字相对传感器 湿度和温度
1011111x
0xBE
0xBF
IIS2MDCTR
三轴磁力仪
0011110x
0x3C
0x3D
LPS22HH
MEMS纳米压力传感器
1011101x
0xBA
0xBB
ISM330DHCX
3D加速度计和3D陀螺仪
1101011x
0xD6
0xD7
VL53L5CXV0GC/1
飞行时间测距和姿态检测传感器
0101001x
0x52
0x53
STSAFE-A110
身份验证和安全性
0100000x
0x40
0x41
VEML6030/VEML3235
环境光传感器。在物联网板上,VEML6030 (BU585IIO2A$GTx)或VEML3235 (BU585IIO2A1$GTx)。已安装。
0010000x
0x20
0x21

3.1、麦克风接口定义
Mic1 (U6)
CLK
PE9 (MIC_CCK0
DOUT
PE10 (MIC_SDINx
Mic2 (U7)
CLK
PB1 (MIC_SDIN0)
DOUT
PF10 (MIC_CCK1)

3.2、湿度传感器接口:
-
DRDY
PH4
I2C_SCL
PH5
I2C_SDA

3.3、磁力计接口
PD10
INT/DRDY (Mems.INT_IIS2MDC)
PH4
I2C_SCL
PH5
I2C_SDA

3.4、3D加速度计和3D陀螺仪(ISM330DHCX)接口(提供了一个中断端口)
PE11
INT1 (Mems.ISM330DLC_INT1)
PH4
I2C_SCL
PH5
I2C_SDA

3.5、压力传感器接口
PG2
INT/DRDY (Mems.INT_LPS22HH)
PH4
I2C_SCL
PH5
I2C_SDA

3.6、飞行时间测距和姿态检测传感器接口
PG5
GPIO1 (Mems.VLX_GPIO)
PH1
LPn (Mems.VL53_xshut)
PH4
I2C_SCL
PH5
I2C_SDA

3.7、用于外围设备和物联网设备的STSAFE认证和安全性(ST safe 10s 8 spl 03),PF11 I/O用于启用或关闭STSAFE:
PF11
STASAFE enable/disable
PH4
I2C_SCL
PH5
I2C_SDA

3.8、按键以及LED配置
I/O
标签
颜色
名称
说明
NRST
B2
黑色
RST
系统复位
-
B1
黑色
BT-RST
复位蓝牙模块
PC13
B3
蓝色
USER
用户按钮
-
LD3
红色+绿色
COM
闪烁或调试时闪烁
-
LD4
红色
STLK_OVC
当电流高于500毫安时为红色
PH7
LD7
绿色
LD7
用户LED。PH7=0时亮
PH6
LD6
红色
LD6
用户LED。PH6=0时亮
-
LD5
绿色
PWR
5V可用指示
PE13
LD2
蓝色
ARD
ARDUINO? LED。PE13=1时亮。
-
LD1
绿色
5V_USB
VBUS_C可用时


四、STMOD+接口

我准备在这两个接口(CN2和CN3)中寻找合适的GPIO口用来驱动显示屏。




有了这些资料,可以在GPIO例程的基础上进行后续的开发了。下一次,先把显示的部分弄好,方便其后的传感器数据检测和显示。


分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

qintian0303

发表于 2023-11-28 15:30:28 | 只看该作者

好快啊,这几本框图就完事了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条