传感器扩展板
简介
在 GitHub 上修改
Raspberry Pi Sense HAT 是一款附加板,可为您的Raspberry Pi提供一系列传感功能。板载传感器允许您监控压力、湿度、温度、颜色、方向和运动。8×8 RGB LED矩阵允许您可视化来自传感器的数据。五按钮操纵杆允许用户与您的项目进行交互。

官方支持的 Python library 提供对板载传感器、LED矩阵和操纵杆的访问。Sense HAT与任何具有40针GPIO接口的Raspberry Pi设备兼容。
功能
在 GitHub 上修改
Sense HAT具有8×8 RGB LED矩阵和五键操纵杆,并包括以下传感器:
-
陀螺仪
-
加速计
-
磁力计
-
温度
-
气压
-
湿度
-
颜色和亮度
Sense HAT和Sense HAT V2的原理图和机械图纸可供下载。
LED 矩阵
LED矩阵是ID为 RPi-Sense FB
的RGB565 framebuffer。可以将适当的设备节点写入标准文件或mmap-ed。包含的蛇示例显示了如何访问帧缓冲区。
Joystick
操纵杆是一个名为 Raspberry Pi Sense HAT Joystick
的输入事件设备,映射到箭头键和 Enter。任何能够处理输入的库都应该支持它,或者直接通过 evdev 接口。合适的库包括 SDL、http://www.pygame.org/docs/[pygame] 和 python-evdev。包含的 snake
示例显示了如何直接访问操纵杆。
安装
在 GitHub 上修改
为了正常工作,Sense HAT需要:
-
最新的内核
-
在 Raspberry Pi 上启用 I2C。
-
一些依赖项
完成以下步骤,让您的Raspberry Pi设备准备好连接到Sense HAT:
-
首先,确保您的Raspberry Pi运行最新的软件。运行以下命令进行更新:
$ sudo apt update && sudo apt full-upgrade
-
接下来,安装
sense-hat
包,这将确保内核是最新的,启用I2C,并安装必要的依赖项:$ sudo apt install sense-hat
-
最后,重新启动您的Raspberry Pi以启用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
。然后将显示以下消息。按任意键开始。
磁力计最小/最大校准 ------------------------------- 左右摆动IMU芯片,确保所有六个轴 (+x,-x,+y,-y和+z,-z)通过它们的极值。 当所有极值都达到时,输入's'保存,'r'重置 或“x”中止并丢弃数据。 按任意键启动…
启动后,你会看到类似下面的输出在屏幕上滚动:
Min x: 51.60 min y: 69.39 min z: 65.91 Max x: 53.15 max y: 70.97 max z: 67.97
关注屏幕最下方的两行,因为这两行是程序最近发布的测量结果。
现在,拿起 Raspberry Pi 和 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。
Use the Sense HAT with C++
RTIMULib是一个 C++ 和Python库,可在嵌入式Linux系统中轻松使用9-dof和10-dof IMU。在 /etc/RTIMULib.ini`中提供了一个预校准设置文件,`sense-hat`也会复制并使用该文件。附带的示例会在当前工作目录下查找 `RTIMULib.ini
,因此您可能希望将该文件复制到该目录下,以获得更准确的数据。
RTIMULibDrive11 示例已预编译,可帮助确保一切按预期运行。运行 RTIMULibDrive11
即可启动该示例,按下 Ctrl C
即可关闭。
注意:C/C++ 示例可通过在相应目录下运行 make
进行编译。
故障分析
读写EEPROM数据
这些步骤仅供调试之用。
Note
|
在 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 reboot
-
下载并构建烧录工具:
$ git clone https://github.com/raspberrypi/hats.git $ cd hats/eepromutils $ make
写
Note
|
此操作不会损坏 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
-
Write the EEPROM data:
$ sudo ./eepflash.sh -f=sense.eep -t=24c32 -w
-
Finally, re-enable write protection:
$ i2cset -y -f 1 0x46 0xf3 0