创客姐姐告诉你,树莓派4B到底有多快

作者:长空无名

最近很多科技媒体都报道了树莓派4发布的消息。

虽然整个板子做了大幅升级,基础价格却依然是35美元,称的上是业界良心。

那号称史上性能最强的树莓派4,到底有哪些亮点呢?一起来看产品图。

USB-C供电口 
1.5GHz 四核64位 ARM Cortex-A72 CPU
1GB/2GB/4GB LPDDR4 SDRAM 内存(可选)
全吞吐量千兆以太网(真千兆)
双频 802.11ac 无线网络
蓝牙 5.0
两个 USB 3.0 和两个 USB 2.0 接口
同时支持两个显示器,分辨率高达 4K
VideoCore VI 显卡,支持 OpenGL ES 3.x
HEVC 视频 4Kp60 硬解码

当然,光看图例是不够的。让创客姐姐 Estefannie 来给你讲解一下。

视频地址:

https://v.qq.com/x/page/n0889tx4vsn.html

按小姐姐说的,树莓派4B的Cortex-A72要比树莓派3B的Cortex-A53快不少。

我们在树莓派3B上跑个测试脚本,看看耗时。

可以看到,树莓派3B花了7分55.68秒。

然后再看看 Estefannie 用树莓派4B测的结果。

同一脚本,树莓派4B花了3分41.882秒,耗时仅用了前者的一半不到。性能果然是提高了不少。

脚本内容:

time echo “scale=10000;4*a(1)” | bc -l

有兴趣的朋友可以自行测试。当然,你得先有一块树莓派4B哦。

来自:IoT前哨站

轻装上阵,奋起直追 —— Fedora 30 物联网版亮相

红帽是全球知名的开源大厂,云计算浪潮到来时,他们果断出击,攻城略地。不管是OpenStack还是容器、存储、中间件,都有着极佳的战绩。旗下RHEL、CentOS、Fedora三个发行版,也有着数量可观的用户。

可在物联网领域,他们却有些尴尬。

绝大部分用户都在用Android、Ubuntu和Raspbian(Debian)相关的平台,很难找到红帽系统的物联网设备。

在2017年Eclipse基金会发布的一份物联网开发趋势报告中大家可以看到。

Raspbian(45.5%)和 Ubuntu(44.%)使用率位居一二,红帽系列甚至都没在其中亮相。

一些红帽开发者开始转向其他阵营。

而红帽旗下的Fedora 和 CentOS发布的几款新系统虽然加入对ARM的支持,但对“IoT”的支持还是一般。

以树莓派3x为例,跑Fedora 29之前的版本都有不同程度的卡顿。CentOS倒是可以正常运行,但除了基础软件包以外,很多x86环境下已经支持的第三方应用并没有ARM版,只能自己编译源代码。

目前Linux的各大发行版情况是怎样?

Linux官网上有篇“2018 最佳 Linux 发行版排行”的文章可见一斑。

地址:

https://www.linux.com/blog/learn/intro-to-linux/2018/1/best-linux-distributions-2018

痛定思痛,红帽先锋Fedora终于在近期祭出了大招。

与以往支持Pidora等“野生“版本,或者把ARM归入次级架构不同。

这款系统上来就力推aarch64和x86_64,没有传统的32位ARM,也没有传统的32位x86或其他。

他们专门发布了“Fedora IoT”,并启用二级域名“https://iot.fedoraproject.org/”。

2019年5月,正式推出内核为5.0.9的Fedora 30 For IoT。把一众4.x内核的竞争对手甩在了身后。

包管理工具没有使用经典的yum,也没用dnf。而是采用了 rpm-ostree 这一新式武器。支持原子升级和回滚,干净利落。

在预装程序方面,默认就是Python3.7.3,没有Python2.x等老的组件。

其他开发组件调用的也是最新源,比如刚发布的Perl和Golang等。

传统的 GPIO sysfis 接口也没有了,在系统中不会找到 /sys/class/gpio。

要与GPIO交互,可安装 libgpiod-utils 包来启用相关工具。

经过测试,市面上的几款主流开发板都可以顺畅运行该系统。没有出现烦人的驱动问题,也没有莫名的卡顿。

当然,作为一个刚出道的选手,Fedora IoT还有很多不足之处。

1、缺乏 Ubuntu Core 或 Raspbian 那种强大的生态支持。

2、其原子化操作对新用户来说也会有点门槛,用惯了 Raspbian 的人可能不太适应。

3、诡异的预配置流程(不太方便理解)。

但让人欣慰的是,这是笔者见过红帽系列对树莓派和DragonBoard 410C支持最好的一个版本,是一款可以在中低配ARM板上良好运行的IoT系统。

无论是智能家居,还是物联网网关、边缘计算……精悍的Fedora IoT给我们多了一个选择。

作者:王文文

树莓派整蛊之”突然出现的蜘蛛”

上次发了一个制作整蛊坐垫的文章,貌似有些朋友还不过瘾,那咱们这次就来个升级版 —— “突然出现的蜘蛛”。

我们将制作一个吓人的蜘蛛盒子,让里面的蜘蛛突然出现在人们面前,并发出恐怖的声音。

在启动项目之前,你得先知道:

1、如何用激光切割机制作符合规格的箱子(放蜘蛛和其他道具用)

2、如何控制gpio输入和输出设备

4、如何为了特定目的用函数将命令组合在一起

5、如何使用pygame播放声音

6、如何利用脉宽调制(PWM)信号来控制伺服电机

所需电子硬件:

1、圆按钮

2、伺服电机

3、扬声器

4、LED灯

5、330欧姆电阻器

6、电池组或充电宝

7、树莓派

制作盒子:

要制作这个盒子,我们建议用3毫米厚的胶合板进行激光切割。最简单的方法是找一个本地的创客/黑客空间,问他们是否可以帮助。

许多学校现在也有小型激光切割机,所以你可以问问相关的设计和技术部门是否可以提供帮助。

如果找不到激光切割机,也可以用硬纸板做这个盒子。

盒子的设计图:

https://github.com/IoToutpost/grandpa-scarer/tree/master/en/resources

盒子图形的切割设置:

红色:描边即可

黑色:直接切割

所需切割面积为450 x 400毫米。如果你的激光切割机床比较小,那么用Inkscape或Adobe Illustrator编辑一下,把它分成两张。

由于激光切割机型号较多,且操作起来有一定危险性。不建议新手去摸,最好把该工作交给熟练工。

激光切割出盒子

把盒子粘合:

用热胶枪把盒子的边粘在一起。如果胶水到处都是,不要担心。没有人看到盒子里面。

附上铰链:

用两个铰链把盖子的一侧固定住,在盒盖附近形成活动连接,螺丝一定要拧紧。

用好伺服电机:

接下来我们要用到伺服电机,其内置控制电路,最大可调到180度。

系统会通过非常快的速度打开和关闭一个GPIO管脚来控制伺服电机。脉冲的长度(也称为脉冲宽度)控制着电机指向哪个方向。

这些信号被称为脉宽调制(PWM),允许你做各种各样的事情,从LED调明暗到驱动电机。

树莓派不支持以标准方式生成这些PWM信号,因为它没有专用的时钟系统。

不过在这个项目中,我们依然使用软件生成PWM信号。这种方法的缺点是信号并不完美,因此伺服电机可能会来回抖动。

伺服电机接线

该电机有三个引线。通常,棕色/黑色的是地线,红色的是5v(微型电机供电),黄色/橙色是信号。我们将使用公对母跳线连接电机的母引脚和树莓派的GPIO引脚。

首先将电机的棕色/黑色线连接到树莓派的引脚9。然后将伺服电机的红线连接到树莓派的引脚2。最后,将电机的控制线(黄色/橙色)连接到Pi上的引脚11。

这是接线示意图:

接线按钮

为了控制蜘蛛出现的时机,你需要一个物理按钮。

首先,你要将两根导线的一端分别接到按钮的两个管脚上。这两根导线尽量长一点,如果你不想站在盒子边上操作的话。

两根导线的另一端,要分别接到树莓派的GPIO引脚上。一根线从按钮连接到Pi的第6引脚,另外一根线从按钮连接到Pi的第18引脚。

记得用胶带之类的固定好,然后试一下是否能通。

然后开始敲代码:

import RPi.GPIO as GPIO
import time
import pygame
import random

GPIO.setmode(GPIO.BOARD)

GPIO.setup(11, GPIO.OUT)
GPIO.setup(16, GPIO.OUT)  
GPIO.setup(18, GPIO.IN, GPIO.PUD_UP)
p = GPIO.PWM(11, 50)
p.start(0)

def waitButton():
    GPIO.wait_for_edge(18, GPIO.RISING)

def sound():
    sounds = [
        "Female_Scream_Horror-NeoPhyTe-138499973.mp3",
        "Monster_Gigante-Doberman-1334685792.mp3",
        "Scary Scream-SoundBible.com-1115384336.mp3",
        "Sick_Villain-Peter_De_Lang-1465872262.mp3",
    ]

    choice = random.choice(sounds)
    
    pygame.mixer.init()
    pygame.mixer.music.load(choice)
    pygame.mixer.music.play()

    # Wait for the sound to finish
    while pygame.mixer.music.get_busy():
        continue
    time.sleep(0.3)

# Main program section
while True:  # Forever loop (until you hit ctrl+c)
    try:
        waitButton()           # Wait until the button is pushed
        p.ChangeDutyCycle(3)   
        time.sleep(0.1)        # Allow the servo to move
        sound()                # Play a sound file
        time.sleep(2)          
        waitButton()           # Wait until the button is pushed
        p.ChangeDutyCycle(12)  
        time.sleep(1)          
    except(KeyboardInterrupt):  
        p.stop()               # Stop the PWM
        GPIO.cleanup()         # Resets the GPIO pins

播放声音:

当你按下按钮时,你的蜘蛛就会跳出来,然后发出很大的声音。

可是树莓派没有任何内置扬声器,所以你要使用一个小型便携式扬声器,把插头塞到到Pi的3.5毫米音频插孔即可。

完整装箱:

现在你需要把所有的电子设备都装进盒子里。因为树莓派是整个项目的大脑,所以你要先把它装上去。

如果你是按上面设计图纸制作的盒子,你应该可以看到一个激光雕刻的侧边区域,那里有四个螺丝固定孔。用3D打印垫片和M2.5螺丝将树莓派固定在这个区域。

蜘蛛要选好,与盒子的大小要匹配。

将蜘蛛绑好线后,反着放进盒子,把伺服电机固定在盒子的开盖处,等会要用它扣住盖子。

合上盖子,把按钮到树莓派的两根线绑到一起。

最后,把盒子安全的固定到房檐或门框上。别挂在不受力的地方。千万别按钮一按,蜘蛛没出来,盒子掉下来砸到人。

祝大家玩的开心~

PS:如果要加入预警提示可以在电路中加LED灯,再串接一个330欧的电阻,以便在蜘蛛出现前先闪一下。

相关代码和设计:

https://github.com/IoToutpost/grandpa-scarer/

素材:Raspberrypi.org

编译:IoT前哨站

十行代码就能写个整蛊玩具

有时候看国外的街头搞笑节目,经常会看到一种会出声的坐垫。

当不知情的人坐上去时候,椅子上的坐垫便会发出各种奇怪的声音。让人还误以为是自己造成的。

其实做这个并不难,如果用我们这套方法,可能只要十行代码就搞定了,而且还可以指定任意的音乐。

所需工具:

1、树莓派

2、小音箱

3、鳄鱼线和公母跳线各两条

4、几个夹子

5、铝箔

6、硬纸板

7、铜带和海绵若干

开始制作:

从硬纸板上剪两个圆圈,然后把铝箔纸粘在圆圈上。

用一些铜带把铝箔纸和圆纸板的边缘连接起来,做成两个盘子。

把海绵切成长方体,把它们粘在其中一个盘子的箔纸上,这样箔纸就不会互相接触,除非有人坐在盘子上。

它应该是这样的:

把两个盘子叠在一起,铝箔片相对而置。铜带部分不要接触。

你现在有一个“垫子”了。你可以把两个盘子粘在一起,或者用夹子或回形针,这样你就可以测试你的坐垫是否工作正常,并且很容易调试相关硬件。

接下来是树莓派插线位置:

将鳄鱼夹一头接在纸板的铜带部分,然后将另一头夹在所连接的跳线的外销上。两条线同样操作。最后的样子是这样。

硬件部分完成后,先连到树莓派上测试一下声音播放。

接好小音箱,然后在命令行播放你事先准备的wav格式音乐。比如:

aplay burp.wav

确定可以听见音乐之后,开始编码。用Python比较简单,十行就搞定了。

import os,random
from time import sleep
from gpiozero import Button
button = Button(2)

trumps = ['ben-fart.wav','ca-fart.wav','marc-fart.wav']

while True:
    button.wait_for_press()
    parp = random.choice(trumps)
    os.system("aplay {0}".format(parp))
    sleep(2)

三个音乐文件都要提前准备好,最后运行一下看看是否能跑起来。

小心地把“坐垫”放在沙发或椅子上。接好电源(最好用电池组),让程序保持在运行状态。然后……

如果整蛊成功,别忘记回来点个赞。

来源:Raspberrypi.org

编译:IoT前哨站

用LAKKA和树莓派做复古游戏机

树莓派可以做复古游戏机和街机,想必大家都已经听说过了。

包括RetroPie、Recalbox和Lakka在内的几个游戏机系统,在业内都是小有名气。

我们这次就用 树莓派3b+ 和 Lakka 来做一台。

Lakka在树莓派3b+上的安装

在树莓派3b+上安装 Lakka 非常简单。安装过程与以前的 Lakka 版本完全相同。只需前往官方的 Lakka 网站,下载合适的镜像,并将其安装到 microSD 卡。然后用安装好的 microSD 卡插入树莓派3b+。

Lakka for 树莓派2/3版本下载地址:

http://le.builds.lakka.tv/RPi2.arm/Lakka-RPi2.arm-2.2.2.img.gz

Lakka启动后的界面:

如果你们在屏幕上看到如下画面,基本就算装成功了。第一件事,先进“设置区”把 Wi-Fi 连上。看到自己 SSID 边上有个“Online”就是连成功了。

注:如果想查看 IP 什么的可以进“System Information”菜单。

添加游戏

首先要进“Services”菜单把 Samba 启用,不然你没法往里面拷游戏。

生效之后就可以往里面拷游戏了,在 Windows 网上邻居里找到它的共享目录。

找到 ROMs 目录,然后把你能找到的游戏镜像拷贝进去。接着,你要回到游戏机操作界面,选择“Scan This Directory”。让 Lakka 知道你的游戏镜像对应的是哪些模拟器。屏幕底部会提示你扫描的进度。

然后你就可以“load content”加载游戏了,系统会自己调用相关模拟器解析。完成后,您将在菜单的右端看到一个新选项卡。

开始玩吧

转到刚刚创建的选项卡,你会在列表中看到装好的游戏。

选择并运行,看到画面出来的一刻。也就意味着你的游戏机已经做好了。

目前测下来是 红白机镜像 的识别和运行还不错,FB Alpha 类的稍差。

关于 Lakka 背景颜色和语言环境都可以自己调,比如我自己用的是一个蓝色背景的中文环境。

关于一般操作,键盘就够了。但如果想玩的开心,还是去买两个手柄吧, Xbox 和 PS 的都可以。

附注:

虽然树莓派3b+的速度比树莓派3快,但性能并没有特别大的增长,主要改进集中在网络方面。

有些游戏系统可能还没支持树莓派3b+,但 Lakka 很早就兼容了。也就是说,上面那个镜像同时支持树莓派2、3、3b+,大家可以放心刷。IoT前哨站已经帮你们挨个试过了。

相关视频讲解(英语):

http://v.qq.com/x/page/n0864t98yof.html

编译:IoT前哨站

素材:Lakka.tv

带摄像功能的树莓派水下潜航器

作者:长空无名

永远不要低估创客对树莓派的热情以及对其潜能的挖掘。

比如一位名叫 叶夫根尼·特卡琴科(Ievgenii Tkachenko)的朋友最近就完成了一个挑战,他做了一个带摄像功能的无人潜航器,并且在努力改进它的原型。

在 “Discovery 探索频道”发明家节目的启发下,Ievgenii 学到了很多。

“对我来说,这是一个很有意义的工程挑战。”他说。

“尽管陷入了反复试验的过程中,但迄今为止的结果令人印象深刻。”

能潜水的树莓派

在 Ievgenii 的印象中,这个项目是从零星的想法开始的。他解释说:“我知道我在这个项目中至少应该具备什么 —— 比如运动系统、灯光、摄像头和陀螺仪,以及外部的手机控制。”

“但我不知道该用什么东西来开发并驱动无人潜艇,而且我的预算也有限制。”

考虑到这一点,他的第一个举措是选择了Raspberry Pi 3B,这可以完美控制电机,二极管和陀螺仪,同时从摄像机采集视频流并且从终端接收命令。

壳中的 Raspberry Pi 3 用锂电池做电源,该电池也为 LED 和电机供电

“我真的很惊讶,这个小板子上能跑一个功能齐全的类 unix 操作系统,而且像 Node.js这样的软件可以很容易地在上面跑起来,”他告诉我们。

“它有控制输入和输出的针脚,还有很多配套软件库。有以太网端口、无线网卡和摄像头,即插即用。没有比它更好的解决方案了。”

LED连接到散热器以防止过热,脉冲驱动用于闪光灯控制

Ievgenii 与一位朋友合作,打算为这些组件做合适的外壳。其中包括一根能在水下传输数据的双绞线、一个电子速度控制装置、一个带有脉冲驱动器的LED和一块电池。四个 确保能在水中工作的马达。

把配件装入准备好的外壳之后,他们在浴缸和湖里进行了测试。

流媒体视频

岸上的路由器通过 RJ45 连接器和以太网电缆连接到Raspberry Pi,Ievgenii开发了一个 Android 应用程序,通过 IP 地址和端口连接到Raspberry Pi。

这允许通过触摸屏控制移动,或者使用支持 Android 系统的手柄。当它启动并运行时,Pi 将视频从摄像机传输到 Android 应用程序。

“实时视频流不简单,我花了很多时间在解决方案上”,但有线连接意味着潜航器目前在线缆长度允许的范围内活动。

相机放置在这个透明防水的盒子里,并附在防水外壳的前部

从这个意义上说,它并不完美。Ievgenii 承认:“操控无人潜航器很困难,它需要增加一个额外的控制板和几个电动机,以便保持平衡。”

但是,除了想把这个项目用可靠的 C++ 代码来写,并用USB连接4K摄像头探访水下世界之外,他还看到了这个项目的未来的潜力。

他指出:“类似的无人潜航器用于船只检查,也可以用于救援队或科学目的。”

“它们可以用来探索巨大的海洋世界,而不需要人类为其训练和冒险。事实上,现在我已了解树莓派,我可以用它创造几乎任何东西,从无线电玩具车到智能家居。”

来自:The MagPi 80

编译:IoT前哨站

用废旧物品和树莓派做个自动演奏机

一位名叫 Banjowise 的外国人用一堆废旧物品做了个自动的音乐演奏机。

从机械角度讲,这并不太复杂。只需一套由树莓派触发的电磁铁就能搞定。

真正的可取之处在于,他做了一个名为“PiBeat”的步进音序器,以此驱动电磁阀来演奏音乐。当然,我们要在树莓派上先安装它。

代码地址:https://github.com/IoToutpost/pibeat

简单的说,用手机或平板电脑操作浏览器,就可以让这个装置演奏设定的曲目。

很够意思的,他们已经把制作方法在 Instructables 上发布了。你可以照他的教程实现一个类似的演奏装置。

地址:
https://www.instructables.com/id/A-Raspberry-Pi-Powered-Junk-Drum-Machine/

这个链接将展示如何制作这个自动演奏机。

作者用到的演奏材料大致就是:在海滩上发现的渔网、捡来的木头勺子、小锤子、鳄鱼响板、空啤酒瓶、空罐头、桌铃、一些啤酒瓶盖子……

电子材料大致是:

1、八路继电器

2、一包杜邦线

3、两个接线端子

4、十二伏特十安培的电源

5、八个电磁阀

6、八个整流二极管

7、五十厘米长,口径0.5毫米的电线

8、树莓派

核心软件框架:

1、Angular

2、Python+Web Socket

代码地址:

https://github.com/IoToutpost/pibeat

相关视频地址(1)驱动电磁铁:

https://v.qq.com/x/page/t0854m6hxwx.html

相关视频地址(2)有趣的演奏:

http://v.qq.com/x/page/y0854qv53kl.html

这真是一个有趣又环保的项目,不但可以给我们提供“现场版”的音乐,更能提醒我们珍惜资源,保护环境。

线索:instructables.com

编译:王文文

让无人机听懂我们说话

大部分无人机都要靠手机或手持遥控器控制。

总而言之,不管是转向还是拍照……都离不开双手来控制。

如果能让无人机听懂我们的诉求,根据语音提示来行动,那就太棒了。

之前曾有一款名叫 XEagle 的语音控制无人机在 Kickstarter 上众筹。

有了它之后,运动爱好者和户外工作人员获得了极大的解放。因为 XEagle 无需双手就能操控,其语音控制、智能手表一键控制、智能避障等功能,不仅将无人机的操控极简化,还能进行自动跟踪拍摄。

不过我们今天的重点不 XEagle,而是要给大家介绍如何构建无人机语音模块。

先来看一段演示:

http://v.qq.com/x/page/h0850udk504.html

当然,不是所有无人机都提供了类似的 SDK。所以目前这个方案主要支持的是 Parrot minidrone 系列产品。

相关 Python 和 JS 代码:

https://github.com/IoToutpost/dronecontrol

硬件需求:

1、Cargo 或 Mambo 这类支持蓝牙遥控的 Parrot minidrone 无人机。

2、负责把 AWS 云服务连接到无人机的 树莓派 。

软件需求:

1、配置遥控用的 Alexa 框架。

2、配置 lambda 将 Alexa 语音命令连接到 AWS。

关于AWS的 lambda 请访问:

https://aws.amazon.com/lambda/

3、在树莓派上安装这个 kickass 库(由@amymcgovern创建):

https://github.com/amymcgovern/pyparrot

这个库提供了python-api 来通过蓝牙连接无人机。

主要流程:

1、调用 AWS lambda 函数,该函数接收操作请求并将事件发送到队列(AWS SQS)。

关于 AWS 的 SQS 消息队列服务请访问:

https://aws.amazon.com/cn/sqs/

2、树莓派上的 DroneService 轮询 SQS 并处理事件

3、DroneService 通过蓝牙向 Parrot 无人机发送移动指令。

DroneService:

无人机服务是一个做以下工作的微循环程序:

轮询AWS的SQS,如果消息可用,则提取有效信息并调用相应的方法。

例如:”TakeOffDroneIntent” -> takeOff()
该方法调用 pyparrot 库来执行无人机的动作,如“向上移动”、“向下移动”、“着陆”。

Alexa 技能:

这个技能包支持6种类型的语言表达:
TakeOffDroneIntent: 无人机起飞
LandDroneIntent: 无人机降落
RotateDroneIntent: 无人机旋转+90或-90度。
位置:RotationType(2个值:[+ 90,-90])
定位精度:“顺时针” -> 90,“逆时针” -> -90。
DroneMovementIntent: 无人机在6个可能的方向上移动。
位置:DirectionType(6个值:[“向上”,“向下”,“向左”,“向右”,“向前”,“向后”])
HoverDroneIntent: 徘徊一次。
FlightPlanIntent: 无人机在 flight_plan 中调用硬编码的飞行计划

构建模型将各种话语指向这个任务集合。

一些提示和计划:

队列应该只有一个执行者和一个发布者,它不适用于多个树莓派轮询相同的队列。

除了AWS,其他云计算提供商也有类似的语音识别、消息队列服务。

该项目未来计划在树莓派中添加面部识别以支持“请无人机来找我”类型的用例,以及支持无人机内部通信。

小结:

以上内容只是用语音代替了双手,遥控器依然需要。之前也有其他人用 Alexa 实现了类似功能,但 IoT前哨站 认为改进的空间依然很大,希望大家可以继续创新。让无人机变得更加人性化!

作者:长空无名

本文内容来自IoT前哨站,转载请注明作者和出处。

只要有想象力,打印机都能做游戏

不知道为什么,文本冒险游戏最近频频被人提及。这不,现在又出来一个基于实时打印的文本冒险游戏 —— Quest Smith。

这位脑洞较大的创客名叫 Bekir Dağ ,他用微型打印机和树莓派做出了这个手持游戏设备。

关于文本冒险游戏的背景知识:

1975年左右,程序员兼业余洞穴探险者 威尔·克劳瑟(Will Crowther)编写了第一个文本冒险游戏 —— Adventure。最初名为 ADVENT,因为在他使用的操作系统中,文件名不能超过六个字符,后来被命名为《巨大的洞穴冒险》 —— Giant Cave adventure。

玩家需要阅读周围环境的描述并从一组选项中进行选择,或者输入下一步并希望游戏能够理解玩家提及的内容。

Bekir Dağ 的创新之处是他把一个文本冒险游戏做成实时打印剧情了。玩家用 Yes 和No 两个按钮来决定游戏的走向 。

Quest Smith是个啥?

在柏林的一家游戏博物馆里,Bekir Dağ 看到了一个手持式游戏设备,于是他决定用树莓派 Zero W自己做一个。

他设计了Quest Smith 的躯壳,用3d绘图软件输出了 STL 文件并在
Thingiverse 网站上免费分享。

下载地址:

https://www.thingiverse.com/thing:3471217

树莓派 Zero W 与热敏打印机、电池和各种按钮紧密贴合在一起。由安装在外壳上的太阳能电池板供电,所有组件都连接到 TP4056 板,该板允许电池为树莓派供电。

硬件材料:

1、Raspberry Pi Zero Wireless 一个

2、GOOJPRT 热敏打印机一个

3、五伏电压升压模块 一个

4、 TP4056 板 一个

5、 18650电池 一个

6、瞬时触碰式开关

7、 Micro usb 转大口接头

8、螺钉 3.5 x 20毫米 四个

9、 滑动开关 一个

10、太阳能电池板60 x 60毫米 5.5V

另外要准备热熔枪、电烙铁和3D打印机。

相关的代码:

https://github.com/IoToutpost/quest_smith

1、系统需要安装的组件

sudo apt-get install libpython3-dev libpython3-stdlib libqt5printsupport5 php7.0-mbstring python3-rpi.gpio python-rpi.gpio python-setuptools python-dev build-essential

2、安装composer

步骤在此: https://getcomposer.org/download/

3、安装两个python库

pip install setuptools
pip install locustio

4、拉取代码

mkdir quest_smith
cd quest_smith
git clone git@github.com:bekirdag/quest_smith.git .
composer install

5、 在重新启动时,通过在crontab上添加一行来运行 Quest Smith 脚本

crontab -e
@reboot sudo /usr/bin/screen -dmS story-game /usr/bin/python3 /home/pi/thermal/push3.py

6、 再次向 crontab 添加另一行代码,以便在每次重启时更新软件,这样你的故事就会是最新的。

@reboot sudo cd /home/pi/quest_smith && sudo git pull origin master

Quest Smith 目前仍在开发中。虽然用户现在可以构建并开始玩这个游戏,但作者呼吁社区用户提交他们自己的故事(有好的分支剧情就发过去)。

Bekir Dağ 说:“每个关卡都需要两个版本的故事,这使得可能性呈指数级增长。所以一个人完成整个故事线对我来说是非常困难的。比如为了让玩家达到9级,我们需要编写1023个故事部分。如果你能帮我,那就太好了! ”

如果想看这个设备是怎么玩的点这里:

http://v.qq.com/x/page/y0846fbymnz.html

相关阅读:

Python写文本冒险游戏的要点

https://mp.weixin.qq.com/s/jtxOqDlYLt3VjdsnLXfdAg

新手可以在研究这篇文章的同时学会面向对象编程。

来自:Raspberrypi.org

编译:王文文

让相机根据GPS定位自动拍照

你是否厌倦了那种每到一个地方就要停下来摆pose的自拍?

但是在参观名胜古迹或知名景点的时候,还是希望能留下一些自己的照片做留念?

来看看一个名叫 Estefannie 的妹子发明了什么 —— 根据 GPS 定位来判断是否要拍照的GoPro相机。

具体是什么意思呢?有些妹子喜欢抓拍和自然拍摄,但要么走着走着错过关键景点,要么拍来拍去抓不到什么重点。让路人拍?人家也不一定愿意帮忙。

如果能有一个发现自己进入知名景点(指定地点)就自动拍照的装置,那就太省心了。旅途中的美好一个都不落下。

Estefannie 用Raspberry Pi 3、GPS模块、充电宝和带杆子的 GoPro,创建了PAGCPPT,可以在系统里预置伦敦各个景点的GPS坐标,到地方就自动触发拍摄。无需人工干预。

依靠尼龙搭扣和热胶,她把这个装置固定在背包上,然后又做了一些编程和设置,让她在城里晃悠的时候可以拍点照片。

白金汉宫到了,来一张

具体材料:

1、Raspberry Pi 3 Model B

2、GPS 模块 U-blox NEO-6M with 3m Active Antenna (STM32 51 )

3、PNY 7800 充电宝

4、 GoPro HERO 系列摄像头

5、GOPRO 3-way 三向摄像机手柄相机支架

硬件配置:

把 GPS 模块连接到树莓派上,树莓派通过 WiFi 向 GoPro 发送信号。

GPS:不用焊接,把GPS模块插到Raspberry Pi 的 USB 口上即可。

WiFi:打开 GoPro 的 WiFi ,让树莓派和它连接起来。WiFi SSD 由 GoPro App 配置。

树莓派:用那个充电宝供电。

都准备好了!你可以把 GoPro 手臂加到任何你想要的地方,比如旅行背包。

软件配置:

Estefannie 整理了一张她想去的伦敦景点(对应坐标)清单。然后用Python3写了一个脚本来计算她当前坐标和预置景点坐标之间的距离。

程序中比较关键的是 GoPro API库,基于这个库稍微做些开发,GoPro相机就可以在GPS预置地标(如塔桥、哈利波特魔法站台)半径10米以内的任何地方自动拍照。

你可以在树莓派上执行如下命令来安装它:

pip install goprocam

GPS的启动命令比较简单:

gpsd /dev/ttyACM0 -F /var/run/gpsd.sock

最后一步执行代码:

python3 /home/pi/LondonGPS.py 

代码地址:

https://github.com/IoToutpost/GoPro/

只要她打开电源(充电宝),她的树莓派就会在启动时运行脚本,并检查她的坐标。在预置景点内就自动拍照,从而满足 Estefannie 在游览名胜古迹时无需求人,也无需刻意摆造型就能拍到合适的照片。

当然,是妹子终究会有停下来认真拍照的时刻……比如这张。

项目作者 Estefannie 在纽约公立图书馆

相关视频链接:

http://v.qq.com/x/page/p0845yexsaw.html

素材:Raspberrypi.org
编译:王文文