Sense HAT
关于
Raspberry Pi Sense HAT 是一块附加板,可为 Raspberry Pi 提供一系列传感功能。通过板载传感器,您可以监测压力、湿度、温度、颜色、方向和移动。通过 8×8 RGB LED 矩阵,您可以将传感器的数据可视化。五键操纵杆可让用户与项目互动。
Sense HAT 最初是为在国际空间站上使用而开发的,是 树莓派基金会 与 欧洲航天局 合作开展的教育 Astro Pi 计划的一部分。它可以帮助任何需要位置、运动、方向或环境传感的项目。
官方支持的 Python 库 提供了对板载传感器、LED 矩阵和操纵杆的访问。Sense HAT 兼容任何带有 40 引脚 GPIO 接头的 Raspberry Pi 设备。
特性
Sense HAT 有一个 8×8 RGB LED 矩阵和一个五键操纵杆,还包括以下传感器:
- 陀螺仪
- 加速计
- 磁力计
- 温度计
- 气压
- 湿度
- 颜色和亮度
可下载 Sense HAT 和 Sense HAT V2 的原理图和机械图纸。
LED矩阵
LED 矩阵是一个 RGB565 帧缓冲器,id 为 RPi-Sense FB。相应的设备节点可作为标准文件或mmap文件写入。附带的 "snake" 示例展示了如何访问帧缓冲器。
操纵杆
操纵杆作为输入事件设备出现,名为 Raspberry Pi Sense HAT Joystick,映射到方向键和 回车键。任何能够处理输入的库都应支持它,或者直接通过 evdev 接口 支持。合适的库包括 SDL、pygame 和 python-evdev 等。附带的 snake 示例展示了如何直接访问操纵杆。
安装
为了正常工作,Sense HAT 需要
- 最新的内核
- 在 Raspberry Pi 上启用 I2C。
- 一些依赖项
完成以下步骤,让您的 Raspberry Pi 设备准备好连接到 Sense HAT:
- 首先,确保 Raspberry Pi 运行最新软件。运行以下命令更新:
sudo apt update
- 接下来,安装 sense-hat 软件包,它将确保内核是最新的,启用 I2C 并安装必要的库和程序:
sudo apt install sense-hat
- 最后,如果在安装之前禁用了 I2C 或内核不是最新的,可能需要重启:
sudo reboot
校准
安装必要的软件并运行校准程序,如下所示:
sudo apt update
sudo apt install octave -y
cd
cp /usr/share/librtimulib-utils/RTEllipsoidFit ./ -a
cd RTEllipsoidFit
RTIMULibCal
校准程序将显示以下菜单:
Options are:
m - calibrate magnetometer with min/max
e - calibrate magnetometer with ellipsoid (do min/max first)
a - calibrate accelerometers
x - exit
Enter option:
按小写 m。按任意键开始。
Magnetometer min/max calibration
--------------------------------
Waggle the IMU chip around, ensuring that all six axes
(+x, -x, +y, -y and +z, -z) go through their extrema.
When all extrema have been achieved, enter 's' to save, 'r' to reset
or 'x' to abort and discard the data.
Press any key to start...
启动后,你 会看到类似下面的输出在屏幕上滚动:
Min x: 51.60 min y: 69.39 min z: 65.91
Max x: 53.15 max y: 70.97 max z: 67.97
关注屏幕最下方的两行,因为这两行是程序最近发布的测量结果。
现在,拿起树莓派和 Sense HAT,以你能想到的各种方式移动它。如果能拔掉所有非必要的电缆,就能避免杂乱无章。
尝试在俯仰、滚动和偏航轴上各绕一圈。注意在此过程中不要意外弹出 SD 卡。花几分钟移动 Sense HAT,当发现数字不再变化时停止。
现在按小写 s,然后按小写 x 退出程序。现在运行 ls 命令,你会看到一个新的 RTIMULib.ini 文件已经创建。
除上述步骤外,您还可以按上述步骤进行椭圆拟合,但要按 e 而不是 m。
完成后,将生成的 RTIMULib.ini 文件复制到 /etc/,并删除 ~/.config/sense_hat/ 中的本地副本:
rm ~/.config/sense_hat/RTIMULib.ini
sudo cp RTIMULib.ini /etc
开始使用
安装完成后,可在 /usr/src/sense-hat/examples 下找到示例代码。
Python使用Sense HAT
sense-hat 是官方支持的 Sense HAT 库;它提供了对所有板载传感器和 LED 矩阵的访问。
有关该库的完整文档,请访问 sense-hat.readthedocs.io。
C++使用Sense HAT
RTIMULib 是一个 C++ 和 Python 库,可在嵌入式 Linux 系统中轻松使用 9-dof 和 10-dof IMU。/etc/RTIMULib.ini中提供了一个预校准设置文件,sense-hat也可以复制并使用该文件。附带的示例会在当前工作目录下查找 RTIMULib.ini,因此您可以将该文件复制到该目录下,以获得更准确的数据。
RTIMULibDrive11 示例已预编译,有助于确保一切按预期运行。运行 RTIMULibDrive11 即可启动该示例,按下 Ctrl C 关闭该示例。
C/C++ 示例可通过在相应目录下运行 make 进行编译。
故障排除
读写EEPROM数据
这些步骤仅供调试之用。
在 Raspberry Pi 2 Model B Rev 1.0 和 Raspberry Pi 3 Model B 板上,这些步骤可能不起作用。固件将控制 I2C0,使 ID 引脚配置为输入。
在向 Sense HAT 读写 EEPROM 数据之前,必须完成以下步骤:
- 在 /boot/firmware/config.txt 文件中添加以下一行,启用 I2C0 和 I2C1:
dtparam=i2c_vc=on
dtparam=i2c_arm=on
- 运行以下命令重新启动
sudo systemctl reboot
- 下载并构建 flash 工具:
git clone https://github.com/raspberrypi/hats.git
cd hats/eepromutils
make
读取
要读取 EEPROM 数据,请运行以下命令:
sudo ./eepflash.sh -f=sense_read.eep -t=24c32 -r
写入
此操作不会损坏 Raspberry Pi 或 Sense HAT,但如果发生错误,Raspberry Pi 可能无法自动检测 HAT。
- 首先,下载 EEPROM 设置并构建
.eep二进制文件:
wget https://github.com/raspberrypi/rpi-sense/raw/master/eeprom/eeprom_settings.txt -O sense_eeprom.txt
./eepmake sense_eeprom.txt sense.eep /boot/firmware/overlays/rpi-sense-overlay.dtb
- 下一步,禁用写保护:
i2cset -y -f 1 0x46 0xf3 1
- 写入 EEPROM 数据:
sudo ./eepflash.sh -f=sense.eep -t=24c32 -w
- 最后,重新启用写保护:
i2cset -y -f 1 0x46 0xf3 0
中文翻译版以英文版相同知识授权方式共享:CC-BY-SA 4.0。交流 Q群:498908352