这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【开箱】STX-STM32MP-MSP01传感器扩展板——让STM32MP秒变传

共1条 1/1 1 跳转至

【开箱】STX-STM32MP-MSP01传感器扩展板——让STM32MP秒变传感中枢

助工
2026-05-30 17:19:52     打赏

前言

最近入手了一块ST的传感器扩展板——X-STM32MP-MSP01,搭配手上的STM32MP157F-DK2开发板使用。迫不及待拆箱体验,特来分享。这块板子最大的亮点是:一块板子整合了9种常用传感器,几乎涵盖了嵌入式开发中会用到的所有传感器类型


开箱照

板子采用ST经典的白蓝色调PCB设,尺寸小巧,可直接叠扣在STM32MP1开发板的40pin接口上。

d5d9c36fac6a4fd9792b2720dfae05c1.jpg


支持的开发板:

  • STM32MP157F-DK2(主力推荐)

  • STM32MP135F-DK


板载传感器一览

传感器类型数量
ISM330DHCX3轴加速度计+陀螺仪1
IIS2MDC3轴磁力计1
LPS22HHMEMS压力传感器1
STTS22H数字温度传感器1
VD6283TX环境光传感器1
IIS2DLPC3轴加速度计1
VL53L5CX多区域ToF测距传感器1
MP23DB02MM数字MEMS麦克风1*
ST25DV64KC动态NFC/RFID标签1*

(标注的传感器在当前SDK版本中暂未完全支持)*


快速上手指南

硬件准备

X-STM32MP-MSP01 × 1
STM32MP157F-DK2 × 1
microSD卡 × 1
网线 / WiFi模块 × 1

软件准备

第一步:下载OpenSTLinux Starter Package,烧录到SD卡。

OPEN ST LINUX 桌面如图:1a376369045b8faa2d21a97e135cff72.jpg

第二步:下载本工程 X-LINUX-MSP1_1.0.0-RC4,将以下文件拷贝到开发板:

# 创建目录
ssh root@"mkdir -p /usr/local/demo/sensor-sdk"

# 拷贝传感器SDK
scp -r applications/sensor-sdk/* root@:/usr/local/demo/sensor-sdk/

第三步:安装Python依赖:

apt-get install python3-websockets python3-aiohttp python3-asyncio

第四步:运行!

# 命令行查看传感器数据
cd /usr/local/demo/sensor-sdk/api
python3 api_test.py

然后在PC浏览器访问开发板IP,即可看到实时的3D传感器数据界面。


部分程序展示:

#!/usr/bin/python3

##
##############################################################################
# @file   test.py
# @author SRA-SAIL, Noida
# @brief  Module for Industrial Accelerometer (PN = IIS2DLPC) through IIO
##############################################################################
# @attention
#
# Copyright (c) 2024 STMicroelectronics.
# All rights reserved.
#
# This software is licensed under terms that can be found in the LICENSE file
# in the root directory of this software component.
# If no LICENSE file comes with this software, it is provided AS-IS.
#
##############################################################################
##

from sensors import SensorEnumerator
import iis2dlpc
import ism330dhcx
import lps22hh
import stts22h

# Module Test
if __name__ == "__main__":

    enumerator = SensorEnumerator()
    enumerator.enumerate_iio_devices_by_name()

    iis2dlpc = iis2dlpc.iis2dlpc(enumerator)

    iis2dlpc.accel_set_sampling_freq(25)

    print("X-----Accelerometer-----X")

    accel = iis2dlpc.accel_read()
    print(f"Acceleration: X = {accel[0]}, Y = {accel[1]}, Z = {accel[2]}")

    current_sampling_frequency = iis2dlpc.accel_get_sampling_freq()
    print(f"Current Sampling Frequency: {current_sampling_frequency}")

    available_sampling_frequency = iis2dlpc.accel_get_available_sampling_freq()
    print(f"Available Sampling Frequency: {available_sampling_frequency}")

    current_scale = iis2dlpc.accel_get_scale()
    print(f"Current Scale: X = {current_scale[0]}, Y = {current_scale[1]}, Z = {current_scale[2]}")

    available_scales = iis2dlpc.accel_get_available_scale()
    print(f"Available Scales: {available_scales}")

    ism330dhcx = ism330dhcx.ism330dhcx(enumerator)

    ism330dhcx.accel_set_sampling_freq(52.0)
    ism330dhcx.gyro_set_sampling_freq(52.0)

    print("X-----Accelerometer-----X")

    accel = ism330dhcx.accel_read()
    print(f"Acceleration: X = {accel[0]}, Y = {accel[1]}, Z = {accel[2]}")

    current_sampling_frequency = ism330dhcx.accel_get_sampling_freq()
    print(f"Current Sampling Frequency: {current_sampling_frequency}")

    available_sampling_frequency = ism330dhcx.accel_get_available_sampling_freq()
    print(f"Available Sampling Frequency: {available_sampling_frequency}")

    current_scale = ism330dhcx.accel_get_scale()
    print(f"Current Scale: X = {current_scale[0]}, Y = {current_scale[1]}, Z = {current_scale[2]}")

    available_scales = ism330dhcx.accel_get_available_scale()
    print(f"Available Scales: {available_scales}")


    print("X-----Gyroscope-----X")

    ang_vel = ism330dhcx.gyro_read()
    print(f"Angular Velocity: X = {ang_vel[0]}, Y = {ang_vel[1]}, Z = {ang_vel[2]}")

    current_sampling_frequency = ism330dhcx.gyro_get_sampling_freq()
    print(f"Current Sampling Frequency: {current_sampling_frequency}")

    available_sampling_frequency = ism330dhcx.gyro_get_available_sampling_freq()
    print(f"Available Sampling Frequency: {available_sampling_frequency}")

    current_scale = ism330dhcx.gyro_get_scale()
    print(f"Current Scale: X = {current_scale[0]}, Y = {current_scale[1]}, Z = {current_scale[2]}")

    available_scales = ism330dhcx.gyro_get_available_scale()
    print(f"Available Scales: {available_scales}")

    lps22hh = lps22hh.lps22hh(enumerator)

    lps22hh.pres_set_sampling_freq(10)

    print("X-----Pressure-----X")

    temp = lps22hh.pres_read()
    print(f"Temperature: T = {temp}")

    current_sampling_frequency = lps22hh.pres_get_sampling_freq()
    print(f"Current Sampling Frequency: {current_sampling_frequency}")

    available_sampling_frequency = lps22hh.pres_get_available_sampling_freq()
    print(f"Available Sampling Frequency: {available_sampling_frequency}")

    current_scale = lps22hh.pres_get_scale()
    print(f"Current Scale: {current_scale}")

    stts22h = stts22h.stts22h(enumerator)

    print("X-----Temperature-----X")

    temp = stts22h.temp_read()
    print(f"Temperature: T = {temp}")

    current_sampling_frequency = stts22h.temp_get_sampling_freq()
    print(f"Current Sampling Frequency: {current_sampling_frequency}")

    available_sampling_frequency = stts22h.temp_get_available_sampling_freq()
    print(f"Available Sampling Frequency: {available_sampling_frequency}")

    current_scale = stts22h.temp_get_scale()
    print(f"Current Scale: {current_scale}")

    print("--->> Sensor Test Completed : PASS <<---")

SDK架构简析

本工程的软件架构分为三层:

┌─────────────────────────────────────┐
│  应用层 (GTK App / Web App)         │
├─────────────────────────────────────┤
│  Python API (sensor-sdk/api)        │  ← 统一传感器接口
├─────────────────────────────────────┤
│  驱动层 (Linux IIO / 用户态驱动)     │
├─────────────────────────────────────┤
│  硬件 (X-STM32MP-MSP01 传感器板)     │
└─────────────────────────────────────┘

sensor-sdk/api 是整个工程的核心,提供统一的Python接口访问所有传感器,开发者无需关心底层I2C通信细节。例如读取加速度数据:

from sensors import SensorManager
sm = SensorManager()
sm.create_sensor("ism330dhcx")
acc = sm.read_sensor_property("ism330dhcx", "accel")

sensor-sdk/web 则提供WebSocket实时数据流,在浏览器端用WebGL渲染3D可视化效果。


支持的内核版本

内核版本状态推荐度
Linux 6.1✅ 当前推荐⭐⭐⭐⭐⭐
Linux 5.15✅ 可用⭐⭐⭐⭐

总结

X-STM32MP-MSP01最大的价值在于一条龙式的传感器解决方案

  • 不想折腾驱动?→ 用预编译二进制,30分钟上手

  • 想深度定制?→ 内核补丁+设备树源码完全开放

  • 想快速验证算法?→ Python API直接读取原始数据

  • 想做远程监控?→ 内置WebSocket+WebGL一条龙

对于做嵌入式传感器开发、边缘计算、工业IoT原型的开发者来说,这块板子配合STM32MP157的双核A7+实时核的架构,可玩性相当高。


附:相关资料链接


(开箱体验帖,觉得有用欢迎点赞收藏)



共1条 1/1 1 跳转至

回复

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