Raspberry Pi 之 SenseHAT 开发笔记

是Pi 家族的标准组件 , 不仅在硬件设计一与Pi 浑然天成 , 无需任何改动或添加即可完全接入 Rpi , 而且在软件上也能得到官方的支持 , 无论是平台还是平台都提供了完整的驱动和模块 , 非常方便使用和教学 。
本文记录了有关 Sense-HAT 的知识 , 及学习、开发细节 。
Sense-HAT 主板
1. Sense-HAT 引入
1.1 发展及历史
Sense-HAT 创立之初是作为 Astro-Pi 项目的一个基本组件 。Astro-Pi 是 ESA( Space欧洲航天局) 发起的一项年度科学探索与编程竞赛 , 其中 , 由学生编写的代码将有机会在国际空间站上运行 , 但目前此项竞赛仅对 ESA 成员国开放 。
Astro-Pi致力于展示计算机编程的魅力 , 鼓励在校生提高数字写作技能 , 培养它们对于 STEM 学科的兴趣 。空间飞行常被青年们视为令人兴奋和及具创造性的活动 。Astro-Pi 给了他们一个能够主动参与空间科学探索的机会 , 实地探索空间创新 , 实现创意愿望 , 而不仅仅是作为一个旁观者 。
Astro-Pi 项目不限于在太空站中开展 , 也在教室中进行 。它由 Rpi 计算机和 Sense-HAT 传感器板组成 , Sense-HAT 用以感知所在的空间环境 , 检测运动 , 获取地球磁场信息 。
Sense-HAT 作为 Astro-Pi 硬件 , 已展示出了其非凡和独特的能力 。
1. 安装配置
新的到手 , 通常还需要进行硬件的安装 。
1.1 40pin引脚安装
与其它板子引脚焊接方式不同 , Sense-HAT 的引脚居然与板子是分离的 , 而板子上焊接的是引脚座 , 需要装引脚插入引脚座中 , 一般对准孔位后用力按压即可完成 。
1.2 扩展板安装
安装好引脚后 , 就可以装引脚对准 Rpi主板的插座进行安装了 。
1.3 加电
很快安装好硬件 , 进行加电测试 , 可以发现 , 加电后 HAT 的LED阵列以一种七彩的方式显示 , 这时HAT板实际上处于一种空置状态 , Rpi并没有真正管理HAT 。
1.4 配置HAT
Rpi是通过I2C接口与HAT通信的 , 因此 , 需要在中的配置选项中打开 I2C 使能开关 。
1.5 安装驱动
由于HAT是官方标配的硬件 , 系统已经开发了针对HAT的驱动程序 , 直接安装即可 。
$ sudo apt-getsense-hat
很多时候 , 都不需要安装 , 因为系统已安装好了 。

Raspberry Pi 之 SenseHAT 开发笔记

文章插图
驱动安装完成后 , 会有 /usr/src/sense-hat 目录
其中都是案例 , 可以运行 。
1.6 添加配置
这时 , 我们发现还不能正常使用HAT , 在 /boot/.txt 还要添加相应的配置选项 。
在配置文件 .txt 末尾添加如下一行
=rpi-sense
1.7 重新启动
完成以上步骤后 , 需要重新启动Rpi 。启动时 HAT 会如以前一样显示彩虹灯面板 , 便随着驱动的成功加载 , 灯会很快熄灭 , 也就是说如果灯熄灭了 , 则表示驱动加载成功 。
2. 功能测试
2.1 LED
由于是官方硬件 , 自带Sense-HAT的扩展模块 , 可以很方便的进行测试 。
下面是一个版本的LED走马灯程序 , 依次点亮 LED
下面是一个版本的 走马灯程序
#!/usr/bin/env
from
time
sys
black=[[0,0,0]]*64
sense=()
sense.(black)
while 1:
for x in range(0,8):
for y in range(0,8):
sense.(black)
sense.(x,y,255,255,255)
Raspberry Pi 之 SenseHAT 开发笔记

文章插图
time.sleep(0.05)
经过测试 , 命令对于 LED 灯状态的切换时间最小可以达到0.3秒 , 而命令对于 LED 灯状态的控制速度可以达到0.02秒 , 而且还可以再快 , 但如果再快 , 则硬件速度跟不上了 , 则会出现 跳灯的情况 , 即部分LED灯不会被点亮 , 而直接跳到下一灯的情况 。
2.2 IMU 功能测试
Sense帽有一个IMU((Unit惯性测量单元)芯片 , 其中包括一组检测运动的传感器:
?一个陀螺仪(用来检测板上的方向) GYRO 希腊语 "旋转"
?加速度计(用于检测运动)
?磁力仪(用于探测磁场)
我们都知道地球绕着南北两极之间的一个轴旋转 。我们也可以将增加三个轴 , 这些都是:
?俯仰pitch
?滚动roll
?偏航yaw
如果把树莓派的网络和USB接口看作飞机的头的话 , 那么就可以较好理解这三个转轴 。
yaw 就是航向 , 表示飞机的水平飞行方向
roll 就是滚动 , 表示飞机围绕着自己的中轴翻滚
pitch 俯仰就是机头向上抬起 , 或机头向下俯冲
提供的扩展板插件中提供了以下的三个传感器数据的支持
一种简单的测试方法是 , 直接用传感器的值来定义角色面向的方向
如上图所示 , 箭头角色的方向由 yaw 值来决定 。
试验发现 , 这三个变量的取值非常不稳定 , 而且对于动作有一定的延迟效果 , 数值抖动非常厉害 。用下面这个实验可以发现 。将小球在 x, y 坐标上的增量设为 roll 和 pitch 值 , 观察小球的运动 。
【Raspberry Pi 之 SenseHAT 开发笔记】小球实际上做的是类似分子的布朗运动 , 抖动非常厉害 。