这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 树莓派SenseHAT开箱

共1条 1/1 1 跳转至

树莓派SenseHAT开箱

助工
2026-05-18 08:57:44     打赏

Sense HAT 是什么

HAT 是 hardware attached on top 的简称, 是树莓派基金会官方提供内核驱动,用户层接口以及相关文档的官方支持扩展板。它拥有自己的设计规范以及接入树莓派的软件硬件要求,细节都写到了HAT+规范中。


2015 年树莓派基金会和欧洲航天局(European Space Agency) 联合开展的教育项目 AstroPi, 他们的目标很简单:让年轻人有机会在太空中运行他们的电脑程序。 Sense HAT 就是在项目上用的传感器板卡,它以廉价简易的方式提供一系列可靠的传感器数据,包括:陀螺仪(gyroscope) , 加速度计(accelerometer), 磁力计(magnetometer), 温度计(temperature), 气压计(barometric pressure),湿度计(humidity),颜色和亮度传感器(Colour and brightness)。额外的它还提供了 8x8 的彩色 LED 显示屏,以及摇杆输入按键组合。

2a721a02a568bccb316c5074702faffe.pngbce1540244852320b6efd7c710e39ea9.png


板卡开箱

2026年4月初参与 EEPW 的 我要开发板 活动得到 Sense hat 的试用机会德捷下单了一块,收到的内容如下。

8a24d2efa25c8c8bcc06bc9a2134bbc3.jpg

通过塑料立柱和排针槽和树莓派组装在一起,上电后, LED 矩阵就会默认显示静态彩虹色。
b61aba59c3ac54150e2761c23fdf9794.png

简单看了下官方文档,结合丝印确认到手的 Sense Hat 是 2.0 版本(这是 2025年10月6日提交的产品修改说明上可以看到具体细节):多了一颗 颜色传感器
2d3ee50469a53ef51191d155315eb703.png

板块的具体技术细节如下:
5a2e56e0961979d1e235880ceb08bc20.png

pcb 原理图:https://pip.raspberrypi.com/categories/676-raspberry-pi-sense-hat


查看原理图看到,其中搭载了一块 ATHEL 的单片机, 用于实现 LED 矩阵刷新 以及 摇杆组合按键的中断上报和事件读取。


具体细节如下:

  • 板载 Atmel (艾特梅尔) TINY88 (AVR 单片机)

    1. 复用的GPIO 口, 采用周期扫描的方式切换输入和输出来读取 摇杆按键 以及控制 RGB矩阵的行使能

    2. 按键输入串联1.8k的电阻屏蔽按键对 RGB 矩阵显示的影响。

    3. RGB 矩阵的行使能采用 P沟道MOSFET 对 整行 LED进行使能控制。

    4. RST 引脚 挂接了 BAV99 快速通断二极管用于防止电源反接二烧坏单片机。

    5. 通过输出 LED_CLK/LED_LE/LED_SDI/LED_SDO/LED_OE_N 信号到 LED2472G 联动 (SPI通讯)。

    6. 通过 GPIO2_SDA1/GPIO3_SCL1 以 I2C 的方式与树莓派通讯

    7. 通过 GPIO10_MOSI/GPIO9_MISO/GPIO11_SCK/GPIO8_CE0/GPIO25 以 与树莓派通讯, 大概率是用于烧录 MCU 固件用。

    8. 通过 GPIO24_INIT/GPIO23_INIT 与树莓派连接, 其中23是作为 按键的事件中断, 24 可能是保留功能。

    9. 与 LSM9DS1 的 LSM_INIT_M、LSM_INIT1_A/G、LSM_INIT2_A/G 连接接收传感器的中断。

  •  LED2472G (意法半导体)的24通道恒流LED驱动

    1. 24 通道分为 R/G/B 三组, 每组 8路

    2. 支持64级 电流控制,每组单独使用 6bit 寄存器控制

    3. 也有全局 电流增益控制,有 7bit 寄存器控制, 用于整体亮度控制

    4. 拥有 LED 开路短路检测,可以诊断 LED 故障

  • SN74AHCT245PW (意法半导体) 丝印(HB245)总线控制器,提供8位总线方向控制,DIR 上拉,用于连通 TINY88 的八个LED 行使能信号传输到对应的 MOSFET 的栅极。 估计是用于上电过程中避免错误信号而导致 LED 矩阵上电, 以及信号隔离防止反向电流干扰单片机信号。

  • CAT24C32WI-GT3(意法半导体)丝印(24C32FP) 32Kb 的 EEPROM,提供 I2C 的方式用于读写,通过ID_SD/ID_SC (I2C-0)(PIN27/28)与树莓派通讯, 这是两个树莓派保留的引脚(专用于 HAT (Hardware Attached on Top) 的识别), 树莓派通过这个 EEPROM 来读取 HAT 的信息自动加载设备树配置。

  • LSM9DS1(意法半导体) 丝印(2308-9s1) 惯性模块:3D加速计,3D陀螺仪,3D磁力计. 也以 I2C 的形式和 GPIO2_SDA1/GPIO3_SCL1 总线连接。拓扑结构有点复杂。

  • LPS25HB (意法半导体)丝印看不清的气压传感器,位置在三颗竖向排列的传感器中间, 与GPIO2_SDA1/GPIO3_SCL1 总线连接

  • HTS221 (意法半导体)丝印最小,湿度和温度传感器,与GPIO2_SDA1/GPIO3_SCL1 总线连接

  • TCS34725(也可能是TCS3400) (TAOS 德州先进光电技术公司)没有丝印,透明外壳的那个,与GPIO2_SDA1/GPIO3_SCL1 总线连接

值得强调的是 板块背面提供和 18个触点可以用于板块内单独模块功能的测试 以及调试, 丝印以PP前缀。正面也有的探针触电用于调试运行状态, 以 TP为丝印前缀。

总体看, 除了挂载在 TINY88 上的 LED矩阵 和 按键 以外的传感器功能模块我们都可以通过树莓派的 I2C 去做通讯获取。


板块功能验证

首先不卖关子,直接通过官方提供的软件组件来验证板块功能, 其中遇到的坑一笔带过,后续文章会详细解释。

我使用的树莓派是比较古老的 3B,手头虽然有树莓派 5, 但是奈何它是 micro-hdmi 没有配套接口,这次暂时没用上。

试用期间刚好 Ubuntu 26.04 发布了出来,顺便体验下最新版本的系统,使用官方 image 刷新工具制作了 SD 卡。制作过程中除了网络不太好使,试了很多次以外,没遇到大毛病。
35ccf6eebd869aa7e294bf865c995a3e.pngb55a5e877a70b7edc1e204a927b035a5.png

环境准备好了,接着就是确认传感器功能:

  1. 安装必备工具:
    apt install i2c_tools sense-hat python3-rtimulib librtimulib-utils python3-pygame python3-evdev

  2. (可选)下载最新 sense-hat 源码 到树莓派 (因为默认安装的版本太老不包含颜色传感器):
    sudo python3 ./setup.py install #安装.
    注意在 docs/examples/ 目录下有用例可以实验。

  3. 移除自动加载的传感器驱动 :
    sudo rmmod st_sensors st_pressure st_pressure_i2c  st_pressure_i2c  st_magn_i2c st_magn  st_sensors_i2c  st_sensors   -f

  4. 标定 磁力计和加速度范围:

    1. 磁场最大值最小值标定:按照6个轴方向移动或者旋转设备 s 保持。26752ce8f8e71c3fd255593c76cd5ada.png

    2. 椭圆拟合, 当数据足够时会自动推出保留参数d44ce513690a23b239c5aa19fd725c62.png

    3. 加速度最大值最小值标定, 手动开启和禁用某个轴,获得轴上两个方向的最大值即可,输入e 开始标定对应轴,快速前后晃动更新数据, 通过空格切换轴,直到所有值都获得后,s 保持be2e3b51cef2299ebaa6fd7a55e14e52.png
      b4f865027feb1a19dda02eb5ae3eb706.png

    4. 保存标定, 当前标定数据默认保持在当前文件夹下的 RTIMULib.ini 覆盖原始的 /etc/RTIMULib.ini


运行 sense-hat 的示例

(在源码位置 sense-hat/docs/examples)

    1. compass.py 指南针,在 LED 矩阵会显示蓝点指向北方
      7a5629349f506bc67d2f9976ab169679.png

    2. rotation.py 静态显示外星人logo, colour_cycle.py  和  rainbow.py 以及 text_scroll.py 和 rotation.py 都是用于动态验证 LED 矩阵是否正常
      e7ab2ce1ddd212b0efa33c5b2aed365e.png

    3. evdev_joystick.py  通过 evdev 直接读取三轴按键LED矩阵显示对应区域两点
      VID20260517222148.gif

    4. pygame_joystick.py 与 evdev_joystick.py  很像, 但是是使用 pygame 模块来读取按键, 在 LED 矩阵显示区域位置点,没有额外功能。需要额外安装依赖 python3-pygame


开箱总结

Sense HAT 高密度的使用了 四颗传感器,可以获取到 七类 物理数据,广泛适合大大部分物理实验需求场景。而显示用的 LED 矩阵 和 组合按键 也可以很方便的调试功能。拥有官方的支持,这是树莓派理想搭档。

板块设计上也充分利用了 I2C 总线的灵活性,巧妙的结合 Tiny88 MCU 完成 彩色LED矩阵 和 摇杆组合按键的输入输出 GPIO 复用简化板块软件设计。

充分了解板块功能和实现后,完全有信心很好的使用这块板块,完成这次 LED 矩阵+六轴传感器完成 贪吃蛇的挑战任务。感谢得捷和EEPW,期待平台越办越好。


参考

python 版本的教程: https://projects.raspberrypi.org/en/projects/getting-started-with-the-sense-hat/
sense hat 设备主页:
https://www.raspberrypi.com/products/sense-hat/
官方 sense hat 文档主页:
https://www.raspberrypi.com/documentation/accessories/sense-hat.html
sense hat 的驱动第一版代码:
https://github.com/raspberrypi/linux/pull/1043
hat 的源码仓库(包含eeprom刷新工具,和一些 hat 开发规范 ):
https://github.com/raspberrypi/hats  
新版本 hat eeprom的工具源码:
https://github.com/raspberrypi/utils
tiny88 控制LED 和 按键读取的源码:
https://github.com/raspberrypi/rpi-sense.git
树莓派定制的 RTIMULIB, 支持 STM LSM9DS1 和 LPS25HB 以及 HTS221:
https://github.com/RPi-Distro/RTIMULib
hat 相关论坛:
https://forums.raspberrypi.com/viewforum.php?f=45





关键词: Sense HAT     树莓派     板块试用    

共1条 1/1 1 跳转至

回复

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