STM32 AI实验课程—HAR在STM32L4上的实现

发布者:legend9最新更新时间:2023-02-08 来源: zhihu关键字:STM32  HAR  STM32L4 手机看文章 扫描二维码
随时随地手机看文章

课程目的:旨在为AI深度学习解决方案提供关于ST生态系统的实践体验

实验步骤:


下载AI演示项目到ST开发板上

借助智能手机/平板电脑上的应用程序,将传感器数据和标签记录在ST开发板上

给定的Python脚本将处理数据集并训练NN模型


在STM32CubeMX.AI工具的帮助下,将神经网络训练好的模型导入到STM32项目中

相关软硬件简介

软硬件需求列表

IoT开发板—B-L475E-IOT01A

FP-AI-SENSING1

  • AI特定功能:训练用的数据集、数据标注、STM32模型转换对应代码

  • 其他功能:使用RTOS实现低功耗、手机应用软件“ST BLE Sensor”

实验1:STM32固件下载和演示测试

连接B-L475-IOT01A

  • 用Micro USB线连接到B-L475-IOT01A

  • 连接之后,驱动会自动安装,请稍等一会儿

在ST-LINK(调试器)驱动程序已正确安装的情况下,端口(LD6)附近的指示灯将切换为红色

ST-LINK驱动安装

ST-LINK驱动安装检查

  • 还可以在设备管理器的端口中检查是否会出现新的虚拟COM端口

B-L475-IOT01A默认固件下载

打开工程

  • 双击SENSING1.eww,打开工程(IAR)

修改main.c文件

修改main.c文件中的InitBlueNRG_Stack(void)函数,BoardName字符串将是手机/平板APP中显示的开发板名字

FP-AI-SENSING1编译及下载

单击Rebuild all,然后单击Download and Debug按钮。将固件成功下载到STM32后,单击Stop按钮

Open the FW project in CubeIDE

修改main.c文件

修改main.c文件中的Init_BlueNRG_Stack (void)函数,BoardName字符串将是手机/平板APP中显示的开发板名字

Build the code

下载到开发板

ST BLE Sensor App

BLE Sensor应用程序。选择BLE名称;在下面的选项卡中选择“Activity Recognition”;晃动开发板,确认活动将从“Still”变为“Walking”或“Running”。

实验2:数据收集和神经网络训练

数据收集

使用ST BLE Sensor应用程序,我们现在可以收集特定状态(步行、慢跑、静止、楼梯)的运动传感器数据,并标记它们,以便通过重新训练神经网络来更新它。

  • 数据记录功能可用于使用户能够创建用于训练其NN模型的数据集

  • 文件包中还提供了用于模型重新培训的预处理Python脚本

在记录新手势的数据时,请注意以下细节:先启动日志,再打开标签。

手势完成后,可以禁用手势标签(手势末尾也会做注释)并停止日志(关闭.csv文件)。

  1. 断开USB连接

  2. 跳线从位置“1-2”移动到“5-6”

  3. 将USB电缆连接到USB OTG端口

  4. 在保持按下“USER”(用户)按钮的同时,还按下“Reset”(复位)按钮

  5. 先松开“Reset”(重置)按钮后,再松开“USER”(用户)按钮

神经网络训练

Python脚本命令行参数选项

实验3:导入更新的网络模型并下载

STM32固件更新

  • 为了生成模型文件我们需要创建一个新的CubeMX项目


关键字:STM32  HAR  STM32L4 引用地址:STM32 AI实验课程—HAR在STM32L4上的实现

上一篇:智能锁中用到的加解密以及STM32 Cryptolib
下一篇:STM32MP1设备树

推荐阅读最新更新时间:2024-11-02 10:15

关于stm32 APB总线上的"接口时钟使能"与"外设时钟使能"
今天看 例说stm32 上的RTC时钟,发现他没有使能APB1的上BKP时钟,就能读出BKP寄存器里的内容.很是不解,又看了一遍发现APB总线上的时钟使能分为两种,一种是时接口时钟一种是外设时钟. 又仔细观查了一下时钟树发现在APB外设时钟使能寄存器上表现为接口时钟的都已经有了自己的时钟,再经实验证明所有这种不需要在APB上使能就有自已时钟的外设(即在APBxENR的某一位上代表的是这个外设的接口时钟的外设)在不需要使能接口时钟的情况下就能读出这种外设的寄存器的内容!
[单片机]
STM32 PWM的输出与Keil软件仿真
STM32 PWM的输出 脉冲宽度模式(PWM模式)可以用来产生一个由TIMx_ARR寄存器确定平率,由TIMx_CCRx寄存器确定占空比的信号。在STM32开发中,由于官方提供了较为完善的库函数,使得我们的开发工作变得相当的轻松,甚至可以在不需要太多了解硬件结构的条件下,完成我的开发工作,实现我们所需要的功能。在此,笔者也建议大家,在初学的时候尽量去熟悉固件库中提供的函数来调节PWM的频率和占空比,对底层寄存器的操作应尽量减少。 本文使用的STM32F103RB的芯片,输出通道是TIM2_CH2通道,STM32有较强的可移植性,如果读者的芯片类型跟我不一样,可以做适当的修改,完成自己的开发。 使用到的库函数有: s
[单片机]
STM32 串口通讯 发送 接收
STM32的使用有利有弊,种类多---但是种类有太多,资料也是比较乱的,还有就是库的调用,经常忘记一些函数的使用------比如最常用的串口------ ------------------------------------------------------------------------------USART ----设置------------------------------- void USART1_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure;
[单片机]
stm32 外设配置时注意RCC开启的问题
RCC的全称是Reset and Clock Control 复位和时钟控制 复位就不必讲了,和实际编程的联系不是很大。 时钟是必须要理解的,不然程序就不能按照设计的来运行。 例如: GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); RCC_APB2PeriphClockCmd(RCC_APB2Periph
[单片机]
STM32 USB软件移植注意事项 及硬件接线注意
移植了个自定义HID USB程序到STM32开发板上,成功运行,但是最近自己做的板子上(用的是F103C8T6)就不行,死活没有反应。经过几番调试终于发现问题,以下做个小结: 1.一定要保证USB时钟是48MHZ; 使用PLL作系统时钟SCLK;而USB时钟只能是SCLK的1分频或者1.5分频,要得到48MHZ的USB时钟,则SCLK只能为48MHZ或者72MHZ;由于我是用的内部晶振8MHZ,PLL时钟最大是8MHZ Div2 再倍频16 也就是最大只能到64MHZ,所以只能配成48MHZ才能满足要求;如果使用外部晶振,PLL可以直接倍频HSE 而不用Div2; 2.注意中断向量名称; 由于我使用的是Keil 里
[单片机]
DFSDM模块的配置
1、引言 客户在使用 STM32H743 的 DFSDM 模块时,配置有误。于是协助客户按照下面的方法进行配置并分享之。 2、参数的计算 使用 NUCLEO-H743 开发板进行测试。由于客户需要 16KHz 音频数据, 24bits 的音频数据,因此配置如下。 PDMMic - PDM data - 滤波器类型 - 过采样率 Fosr(滤波器)- 过采样率 Isor(积分器)- 右移位器 - 偏移补偿 - 采样数据 Clock out (CKOUT)的计算 Fs= Fclockout/( Fosr*Iosr) Fs= 16kHz 音频数据 Fosr:滤波器过采样率,也就是抽取率,在这里取 128 Iosr:积分器过采样率,在
[单片机]
DFSDM模块的配置
STM32:STM32学习记录3:按键输入
1:IO配置:。上拉输入模式:区别在于没有输入信号的时候默认输入高电平(因为 有弱上拉)。下拉输入模式:区别在于没有输入信号的时候默认输入低电平(因为有弱下拉)。对于浮空输入模式顾名思义也就是输入什么信号才是什么信号,对于浮空输入要保证有明确的输入信号。 2:stm32的GPIO既可以设置为输出也可以设置为输入,当设置为输入时,输出还是可以有效的,当设为上拉时,可以把输出设为高电平,而设为下拉输入时,把输出设为低电平,这样就有了上拉和下拉。 3:STM32 支持 JTAG 和 SWD 两种仿真接口,他们和普通的 IO 口共用,当需要使用普通 IO口的时候,则必须先禁止 JTAG/SWD。STM32 在默认状态下是开启 JT
[单片机]
stm32若干技巧
技巧1:关于串口接收 对于串口数据帧到检测,对于串口接收有判定帧头、尾 FIFO缓存等方式,推荐采用超时判断来确定一帧数据接收完成,尤其对于处理GPS,3G模块数据效,比判断帧头、尾效果好的多。参考网友模式 //检测超时函数 供定时器中断调用-1ms一次 // t为超时时间 __inline void Chk_TimeOut(u8 t) { if(!uartRMsg.rcOK && (uartRMsg.rcIndex =8) && (++uartRMsg.rcS =t) ) //超时之后,开始重新解码 uartRMsg.rcOK = true; } //接收函数, 供USART中断调用 __inline void Recie
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
    做任何事情之前,一定要想好目标。没有目标的事情是做不好的,也做不成。我的目标就是学习ARM开发,当然是深入的学习。目标如下 :1、学习A ...
  • 学习ARM开发(2)
    天是星期天,刚好在家里休息。又是学习ARM的大好时机了。早上起得很早,因为都想着怎么样搞好这个ARM开发环境,总是心急的。搞得睡觉,也睡 ...
  • 学习ARM开发(4)
    已经把CPU大体架构学会了,当然我之前已经学习过80X86的结构,所以对于像RISC的计算机,也能想像到它是什么样的东西。如果没有学习过《微机 ...
  • 学习ARM开发(6)
  • 学习ARM开发(7)
  • 学习ARM开发(8)
  • 学习ARM开发(9)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved