这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 2025第二期-智能手环DIY过程贴

共6条 1/1 1 跳转至

2025第二期-智能手环DIY过程贴

专家
2025-10-04 19:14:14     打赏

在准备开始做工程之前,先了解一下现有的资源。这次用到的主要开发板是MAX78000FTHR开发板,0.96的黄蓝双色OLED显示屏,基于max30102的MAXREFDES117S模块。

资源的网页主要在这里:

https://www.analog.com/ 

https://www.analog.com/cn/search.html?query=max78000

双核超低功耗微控制器

带FPU的Arm Cortex-M4处理器,工作频率最高可达100MHz 512KB闪存和128KB SRAM 16KB指令缓存帮助优化性能 用于SRAM的可选纠错码(ECC-SEC-DED)功能 32位RISC-V协处理器,工作频率最高可达60MHz 多达52个通用I/O引脚 12位并行摄像头接口 一个I2S主机/从机,用于数字音频接口

神经网络加速器

针对深度卷积神经网络进行了高度优化 442k 8位权重容量,具有1、2、4、8位权重 高达1024 x 1024像素的可编程输入图像尺寸 多达64层的可编程网络深度 多达1024个通道的可编程网络每层通道宽度 一维和二维卷积处理 流模式 灵活支持其他网络类型,包括MLP和循环神经网络

电源管理延长电池应用的续航时间

集成单电感多路输出(SIMO)的开关电源(SMPS) SIMO电源电压范围:2.0V至3.6V 动态电压调节尽可能地降低了内核功耗 在3.0V时缓存执行While循环的电流为22.2µA/MHz(仅CM4内核工作) 支持实时时钟(RTC)使能的低功耗模式的SRAM数据保留

安全性和集成度

安全启动 AES 128/192/256硬件加速引擎 真随机数生成器(TRNG)的随机数种子生成器

人工智能(AI)需要超强的计算能力,而Maxim则大大降低了AI计算所需的功耗。MAX78000是一款新型的AI微控制器,使神经网络能够在互联网边缘端以超低功耗运行,将高能效的AI处理与经过验证的Maxim超低功耗微控制器相结合。通过这款基于硬件的卷积神经网络(CNN)加速器,即使是电池供电的应用也可执行AI推理,同时功耗仅为微焦耳级。 MAX78000是一款先进的片上系统,集成带FPU CPU的Arm® Cortex®-M4内核,通过超低功耗深度神经网络加速器实现高效的系统控制。CNN引擎具有442KB的权重存储器,可支持1、2、4和8位权重(支持高达350万权重的网络)。该CNN权重存储器基于SRAM,因此可进行AI网络的即时更新。同时,CNN引擎还集成了512KB的数据存储器。高度灵活的CNN架构允许用户通过PyTorch®和TensorFlow®等传统工具集训练网络,然后经Maxim提供的工具转换后在MAX78000上运行。 除CNN引擎的存储器之外,MAX78000还具备适配微控制器内核的大型片内系统存储器,具有512KB的闪存和高达128KB的SRAM,支持多个高速和低功耗的通信接口,包括I2S和并行摄像头接口(PCIF)。 该器件采用81引脚的CTBGA(8mm x 8mm、0.8mm间距)封装。

应用

音频处理:多关键字识别、声音分类、降噪 面部识别 目标检测和分类 时间序列数据处理:心率/生命体征信号分析、多传感器分析、预测性维护


上面是开发板的简要介绍,引用自网页,下面开始进入工程示例的学习阶段。




关键词: 二期     智能手环     过程    

专家
2025-10-04 19:24:25     打赏
2楼

搭建环境。

在搭建环境的过程中,还是稍稍遇到点问题,在下面的演示过程中会提及。

首先下载MaximMicrosSDK的win安装包,之后运行。

在这里出现的错误,接下一个图的方法可以跳过此错误继续安装。

可以顺利安装完成。

Ubuntn的版本也尝试了一下,但下载的速度让我放弃了。


专家
2025-10-04 19:34:56     打赏
3楼

完成安装之后,迫不及待的就进行了第一个工程的测试。我在这里使用的是Eclipse。

第一个工程:Hello World!

使用例子里的“Hello_World”工程,完整走一遍编译下载流程。

将MAX78000FTHR开发板通过MicroUSB接入PC之后,可以看到下面的盘符。

然后在在Eclipse界面点击运行,可以看到下面的显示。

第一个工程口串口显示01.png

至此,运行环境、开发板都可以正常工作。


专家
2025-10-04 19:36:42     打赏
4楼

开始尝试IO操作。

第二个工程:点亮RGB灯

RGB LED是红绿蓝三颗LED封装入一个LED的封装中实现的,所以说与点亮一颗LED相比就是现在需要点亮三颗LED灯。
而点亮一颗LED灯这个事情在第一个工程中已实现,现在我们需要做的是找出这部分代码,然后照葫芦画瓢。

  1. 首先查看Hello_World工程的led相关的代码。

    LED_On(LED1);
    MXC_Delay(500000);
    LED_Off(LED1);
    MXC_Delay(500000);    printf("count : %d\n", count++);

可以看到与Led灯相关的语句是"LED_On(LED1);"与"LED_Off(LED1);"两句。找到这两个函数在led.c中的定义,可以看到以下两个函数:

    void LED_On(unsigned int idx)
    {
        MXC_ASSERT(idx < num_leds);    #if (LED_ON == 0)
        MXC_GPIO_OutClr(led_pin[idx].port, led_pin[idx].mask);    #else
        MXC_GPIO_OutSet(led_pin[idx].port, led_pin[idx].mask);    #endif
    }    void LED_Off(unsigned int idx)
    {
        MXC_ASSERT(idx < num_leds);    #if (LED_ON == 0)
        MXC_GPIO_OutSet(led_pin[idx].port, led_pin[idx].mask);    #else
        MXC_GPIO_OutClr(led_pin[idx].port, led_pin[idx].mask);    #endif
    }

核心语句是这两句:

MXC_GPIO_OutClr(led_pin[idx].port, led_pin[idx].mask);
MXC_GPIO_OutSet(led_pin[idx].port, led_pin[idx].mask);

“MXC_GPIO_OutClr”是对led1进行清零操作,“MXC_GPIO_OutSet”是对led1进行置1操作。在上面两上函数中除了对IO进行操作外,还在操作前对宏LED_ON进行了判断。这个判断的作用是把IO的动作与实际电路中的实现对应起来,如当前我们正在使用的MAX78000FTHR开发板,因为其实现LED的阳极接了“3V3_VREGI”供电,所以如果需要led亮的话,应该把led对应IO清接地(清零),故这里的LED_ON对应的是0。
这样我们清楚了,在这块MAX78000FTHR开发板上,如果使用其自带的led,需要做两件事情,一是找到其对应的IO;二是将其对应的IO清0或置1。

找到IO。

从上面的语句中可以看到,操作的是led1,其对应的板子上的元件位号是D1。然后从原理图上看到D1是颗RGB led,她有三个IO控制,那么LED1是哪个IO呢?

第二个工程原理图led部分.png

再回到代码,可以找到LED1的定义在board.h中,对应IO是0,这个与原理图中的P2_0_LED_R对得上,就是你了,小火龙...不是,是P2_0_LED_R。有点长不是?还不太好写,所以在board.h中使用宏定义给她起了一个好写好说的名字“LED1”。
再在LED1的下看不远处看到了LED2、LED3的宏定义,这下齐活了,这两个与原理图中D1的另外两个控制IO对应,到这里为止,RGB灯点亮所需要的IO就集齐了,准备召唤神龙。

清0、置1IO

先做个简单测试,确认下我们的IO是否真的能与原理图对应,也就是测试下IO对led的控制能否实现。
直接对LED1的代码“Ctrl+C”、“Ctrl+V”,把后面两个的LED修改为LED2、LED3,如下:

LED_On(LED1);
MXC_Delay(500000);
LED_Off(LED1);
MXC_Delay(500000);
LED_On(LED2);
MXC_Delay(500000);
LED_Off(LED2);
MXC_Delay(500000);
LED_On(LED3);
MXC_Delay(500000);
LED_Off(LED3);
MXC_Delay(500000);printf("count : %d\n", count+);

编译、运行,可以看到现在D1已经从刚才的一个颜色闪烁变成了红、绿、蓝交替闪烁。
这确认了我们找到的IO是正确的,RGB灯也正式点亮了,那梦想成为宝可梦大师的你,相要RGB灯以什么样的形式闪烁呢?



专家
2025-10-04 20:06:13     打赏
5楼

尝试显示屏。因为需要接线,而且开发板默认是没有焊接排针的,所以在接线之前需要把排针焊到开发板上。

第三个工程:OLED显示

LED指示之后,我们还想要文字类的提示,这个会更直观的显示我们想要的信息。
Grove-OLED-Yellow&Blue-Display-0.96-(SSD1315)_V1.0-SCH.pdf
这里参考“OLED“建立工程。
编译、下载原始的“OLED“工程,可以看到串口显示结果,并可以看到MAX78000FTHR开发板上的D2RGB灯在展示色彩,D3在闪烁。

第三个工程串口显示.png

???I2C在哪里?
没有接显示屏,出错了。

接入显示屏

第三个工程接线示意03.png

连接好显示屏,可以看到串口已不再提示“-->I2C send failed, error:-9”的错误。

第三个工程串口显示02.png

然后在按下SW4后显示屏显示文字:

16:11:08  
Hp02:0.00  
Hear::0

显示的内容明显已有了记时、血氧、心率的内容。但血氧与心率没有数据,因为还没有接入心率模块。

第三个工程接线示意03.jpg



专家
2025-10-04 20:06:48     打赏
6楼

血氧模块在接入前也需要焊接。

第四个工程:驱动max30102

MAXREFDES117_Web.pdf
接着上面的工程,接入MAXREFDES117看看情况。 从MAXREFDES117_web.pdf文件中可以看到模块需要接入5线,分别是INT、SCL、SDA、VIN、GND。再进一步了解,VIN是3.3V供电。这是在MAXREFDES117模块端的接口情况,那么在MAX78000FTHR开发板端的接口是谁呢?

第四个工程接线示意03.png

接入血氧模块

回到代码,可以查到MXC_GPIO_PIN_SDA、MXC_GPIO_PIN_SCL两个端口在xiic.h中有定义,分别为P2.7、P2.6。
在MAXREFDES117模块上焊好排针,接入MAX78000FTHR开发板,上电运行后,可以看到HpO2与Hear两行已经有了数据(如果是显示“nan”,记得把手指放到MAXREFDES117模块的sensor上)。



共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]