查看: 1089|回复: 1

[项目提交] 基于安全感知的车内控制

[复制链接]
  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 952 天

    连续签到: 68 天

    [LV.10]以坛为家III

    发表于 2023-11-27 22:33:21 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 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(红色和绿色)按照程序要求的那样闪烁了。

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

    一、开发板的正面和反面
    图片1.png [attach 图片1.png ]1873008[/attach]

    二、硬件框图
    图片3.png
    三、板载传感器配置
    模块
    描述
    访问地址[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口用来驱动显示屏。

    图片4.png


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


    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-7-5 11:08
  • 签到天数: 120 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2023-11-28 15:30:28 | 显示全部楼层
    好快啊,这几本框图就完事了
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-11-23 15:51 , Processed in 0.124189 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.