传感器扩展板

简介

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

Sense HAT

Sense HAT 最初是为在国际空间站上使用而开发的,是 树莓派基金会欧洲航天局 合作开展的教育 Astro Pi 计划的一部分。它可以用于任何需要位置、运动、方向或环境传感的项目。

官方支持的 Python library 提供对板载传感器、LED矩阵和操纵杆的访问。Sense HAT与任何具有40针GPIO接口的Raspberry Pi设备兼容。

功能

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 示例显示了如何直接访问操纵杆。

安装

为了正常工作,Sense HAT需要:

  • 最新的内核

  • 在 Raspberry Pi 上启用 I2C

  • 一些依赖项

完成以下步骤,让您的Raspberry Pi设备准备好连接到Sense HAT:

  1. 首先,确保您的Raspberry Pi运行最新的软件。运行以下命令进行更新:

    $ sudo apt update && sudo apt full-upgrade
  2. 接下来,安装 sense-hat 包,这将确保内核是最新的,启用I2C,并安装必要的依赖项:

    $ sudo apt install sense-hat
  3. 最后,重新启动您的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 数据之前,必须完成以下步骤:

  1. /boot/firmware/config.txt 文件中添加以下一行,启用 I2C0 和 I2C1:

    dtparam=i2c_vc=on
    dtparam=i2c_arm=on
  2. 运行以下命令重新启动:

    $ sudo reboot
  3. 下载并构建烧录工具:

    $ git clone https://github.com/raspberrypi/hats.git
    $ cd hats/eepromutils
    $ make

要读取 EEPROM 数据,请运行以下命令:

$ sudo ./eepflash.sh -f=sense_read.eep -t=24c32 -r

Note
此操作不会损坏 Raspberry Pi 或 Sense HAT,但如果发生错误,Raspberry Pi 可能无法自动检测 HAT。
  1. 首先,下载 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
  2. 然后,禁用写保护:

    $ i2cset -y -f 1 0x46 0xf3 1
  3. Write the EEPROM data:

    $ sudo ./eepflash.sh -f=sense.eep -t=24c32 -w
  4. Finally, re-enable write protection:

    $ i2cset -y -f 1 0x46 0xf3 0