在我的系列文章的第一篇中,我写了关于 Astro Pi 竞赛,这是一个让英国学生有机会让他们的编码实验在太空运行的机会。我们越来越接近 12 月 15 日的发射日期,届时英国欧洲航天局 (ESA) 宇航员蒂姆·皮克将开始他为期六个月的“原理号”任务。他将进行科学实验,并参与青年人的教育推广活动。作为其中的一部分,他将携带两台树莓派计算机,装在特制的飞行箱中,每台都连接着摄像头模块和传感器板。这些电脑将运行 Astro Pi 竞赛获奖者编写的 Python 程序。
飞行箱
树莓派必须使用博根臂安装在空间站上,就像用于对接机组人员笔记本电脑的那些臂一样。它们还必须被认证为对 联盟号火箭完全安全,该火箭将把它送往国际空间站,然后在太空继续使用。树莓派团队一直与 ESA 和英国航天局密切合作,以获得飞行安全证书。
除了大量的测试外,我们的工作还包括建造一个定制的航空级铝制外壳,其设计考虑了热力学因素(对流在太空中不会发生)和实用性,以及使电路板的传感器能够在空气中有效工作。由于外壳制造成本高昂,因此不会对外出售,但我们计划发布原型机的 3D 打印文件,以便人们可以自己制作。甚至有一所学校用乐高积木制作了一个模型。
我们制作了一个乐高版本的 @astro_pi 飞行箱,以使汗流浃背的宇航员测试尽可能逼真。pic.twitter.com/pYETedeWgn
— Richard Hayler ☀ (@rdhayler) 2015 年 7 月 9 日
硬件
飞行箱每个都将包含一个树莓派、一个 Sense HAT、一个实时时钟和一个摄像头模块。Sense HAT 是树莓派的一个附加板,由基金会的工程团队专门为 Astro Pi 任务创建。它包含一个 8x8 全彩 LED 显示屏;一个迷你操纵杆;一组用于温度、湿度和压力的传感器;一个加速度计;一个陀螺仪;和一个磁力计。
Sense HAT 现在可以购买了,它注定将在地球上的许多惊人的项目和实验中使用。您可以从英国的 Raspberry Pi Swag Store、美国的 Adafruit 或世界各地的任何其他树莓派配件零售商处购买。
Sense HAT 软件
树莓派基金会提供了一个 Sense HAT 的 Python 编程接口,该接口与 基于 Debian Jessie 的最新 Raspbian 镜像捆绑在一起。该接口提供了对 LED 显示屏和传感器的轻松访问,使用户能够围绕硬件构建自己的应用程序和项目。只需几行代码,您就可以在显示屏上显示当前的温度传感器值
from sense_hat import SenseHat
sense = SenseHat()
temperature = sense.temperature
sense.show_message("Temperature is %d" % temperature)
一个类似的例子是获取湿度值,并通过用绿色像素填充 LED 网格来显示湿度百分比的可视化效果
green = (0, 255, 0)
white = (255, 255, 255)
while True
humidity = sense.humidity
humidity_value = 64 * humidity / 100
print(humidity)
pixels = [green if i < humidity_value else white for i in range(64)]
sense.set_pixels(pixels)
当您对着电路板呼吸时,您会看到绿色像素的数量增加,然后慢慢下降。当您将电路板放入密封的保鲜袋中并用吸管向其中吹气时,这会变得更加有趣。通过一些喘气和吹气,您应该能够使其达到 100%!
.@JarJarGeek 使用 Sense HAT 尝试了我的湿度测试。通过将其放入保鲜袋中,成功使其达到 100%。pic.twitter.com/qfUZGTXdYw
— Ben Nuttall (@ben_nuttall) 2015 年 9 月 12 日
在 64 个长度的列表中构建您自己的颜色元组图像,并将其直接传递给 Sense HAT 以显示图像
X = (255, 0, 0)
O = (255, 255, 255)
question_mark = [
O, O, O, X, X, O, O, O,
O, O, X, O, O, X, O, O,
O, O, O, O, O, X, O, O,
O, O, O, O, X, O, O, O,
O, O, O, X, O, O, O, O,
O, O, O, X, O, O, O, O,
O, O, O, O, O, O, O, O,
O, O, O, X, O, O, O, O
]
sense.set_pixels(question_mark)
您可以提供此类图像的列表以进行动画处理
animation = [image_1, image_2, image_3, image_4]
while True
for image in animation:
sense.set_pixels(image)
sleep(0.5)
...就像这段在 Sense HAT 上显示的一组复古游戏角色的视频一样
您甚至可以将 8x8 像素的图像文件加载到库中
sense.load_image("space_invader.png")
使用 PyGame 捕获操纵杆事件,这些事件映射到键盘按键
if event.key == pygame.K_DOWN
sense.set_pixels(down_image)
elif event.key == pygame.K_UP
sense.set_pixels(up_image)
elif event.key == pygame.K_LEFT
sense.set_pixels(left_image)
elif event.key == pygame.K_RIGHT
sense.set_pixels(right_image)
elif event.key == pygame.K_RETURN
sense.set_pixels(enter_image)
让您的 Sense HAT 显示笑话
jokes = [
"What happens to a frog's car when it breaks down? It gets toad away",
"Why was six scared of seven? Because seven eight nine",
]
joke = random.choice(jokes)
sense.show_message(joke)
joke = pyjokes.get_joke()
sense.show_message(joke)
使用加速度计制作一个魔术 8 球
replies = [
"Signs point to yes",
"Without a doubt",
"Don't count on it",
"It is decidedly so",
]
while True
x, y, z = sense.accelerometer.values()
if x > 2 or y > 2 or z > 2:
reply = random.choice(replies)
sense.show_message()
else:
sense.clear()
了解 Minecraft API 以及如何使用它将 Sense HAT 显示屏变成 您的 Minecraft 世界地图
尝试这些示例以及更多
- Sense HAT Python 文档
- 树莓派学习资源上的 Sense HAT 入门、Astro Pi 指南等
- Dave Honess 的 Sense HAT 示例
- 我的 Sense HAT 示例
- Martin O'Hanlon 的 Sense HAT 示例
- Richard Hayler 的用于创建 8x8 图像的 PyGame 应用程序
专栏
本文是 Ben Nuttall 的 树莓派专栏的一部分,他在其中分享来自微型计算世界的新闻和故事。
5 条评论