把站台上的电子提示牌建到桌边

一般轻轨和火车的站台上都会有电子提示牌,提醒乘客当前时间、下一班车还要等多久以及该班车的始发站和终点站等等。

那类似的电子提示牌用到了哪些东西?我们能不能自己做一个?

用树莓派Zero、OLED显示器和3D打印的小盒子就可以搞定。它会涉及一些软件,一点焊接工作,还有一些3D打印材料。

引言

不久前,我看到克里斯·哈钦森(Chris Hutchinson)发布的帖子。

Pretty hyped about my most recent @Raspberry_Pi project — a realistic, real-time, train departure board

I’ve open sourced the software over at: 
https://t.co/vGQzagsSpi

Next step: find a case and make it a permanent fixture! 
pic.twitter.com/HEXgzdH8TS— Chris Hutchinson (@chrishutchinson) June 6, 2019

他从交通网站的API中提取数据,并在一个小型OLED上实时显示列车发车信息,以模仿英国列车站台上的那些电子提示牌。

我很欣赏他的项目,所以决定自己也做一个。主要是打算改变软件工作的方式,使其在 balendCloud 上运行,这样部署和配置会更加容易。

此外,我重新设计了显示布局,以实现字体的1:1像素映射。避免任何缩放,以便看起来更像真正的点阵显示。

至此,我已大功告成,并对结果感到满意。你可以按照本教程做一个类似的版本。

列车信息来源

https://www.transportapi.com/

硬件需求

这个项目的硬件需求不多,主要就是下面这几项。

·树莓派Zero W
·8G容量的SD卡
·USB电缆(用于电源)
·SSD1322 OLED显示器

如果你想自己做外壳,那还需要一台3D打印机或3D打印服务。

软件需求

该项目构建在 balenaCloud 上的 Docker 容器中运行,这意味着你只需几步就可以部署项目,从而节省任何耗时的手动包安装或配置。

所以你需要:

• 从GitHub下载项目

https://github.com/IoToutpost/UK-Train-Departure-Display

• 准备好刷系统的工具
• 一个免费的 balenaCloud 账户,用于设置和管理Pi下载并安装balena CLI工具——安装在你的计算机上,允许你在树莓派上安装项目代码。

组合在一起

第一个任务是将显示器连接到树莓派的GPIO头。

我用的是树莓派Zero W,它没有引脚针。虽然可以把它放在一个小得多的空间,但这意味着我必须自己焊接跳线。

我已经在下面列出了2.8英寸显示器(从AliExpress买来的)的引脚分配。

其他基于 SSD1322 的显示器应该也是可以的,你只需要留意一下引脚,并在上电前仔细检查它们是否连接正确。

无论你是否把线焊接到Raspberry Pi,都肯定要将线焊接到显示器上。

设置软件

用 balenaCloud & Docker 大大简化了软件的设置过程。

这意味着你不必手动安装或配置软件包,只需设置应用程序,添加设备并刷写SD卡,然后用 balena CLI 工具从计算机推送代码。我不会在这里详细介绍这个过程,你可以访问以下链接查看相关文档。

https://www.balena.io/docs/learn/deploy/deployment/

• 设置balenaCloud应用程序

首先你要有一个balenaCloud账户。然后添加一个新的应用程序,确保为正在使用的设备选择匹配的硬件类型。

接下来,向应用程序添加一个新设备,配置网络并下载balenaOS映像。

• 给设备刷写SD卡并接通电源

用Etcher或其他工具把下载好的操作系统刷入SD卡。
将SD卡插入树莓派并启动设备。几分钟内,它应该会出现在balenaCloud仪表板上。

• 推送App代码

这一步是将代码推送到balenaCloud,之后它会将其分发到你刚才添加的树莓派。具体步骤:

从GitHub下载代码(本文前面提到的链接),然后在你的计算机上安装 balena CLI 工具,进入项目目录,执行 balena push <appName> ,其中 <appName> 是你之前在 balenaCloud 仪表板中创建的应用程序的名称。例如:balena push TrainDepartureDisplay。

如果一切顺利,你将看到balena 独角兽吉祥物,并且你刚刚推送的代码将自动分发到设备上。

准备好硬件并部署代码后,下一步是配置运行应用程序所需的环境变量。

添加配置信息

不需要手动编辑配置文件,你可以用 balloud 仪表板来设置并随时更改任何变量。如果需要的话,你可以看看如何设置环境变量的文档。

https://github.com/balena-io-playground/UK-Train-Departure-Display#configuration

在获得传输API的密钥和应用ID之前,你需要在 Transport API 上注册一个帐户。这样你才能知道列车目的地和到站时间等信息。

一个基础帐户是免费的,每天只能有1000个请求,但是对于这个项目来说已经足够了。

如果前面工作都没问题,整个系统应该可以运行了,你第一眼看到的画面应该是这样。

做个外壳

接下来要把这个电子提示牌做的更真实一些,至少在外观方面。

我设计了一个外壳来装显示器和树莓派。这样可以把所有的东西紧密地放在一起,不会浪费太多的空间。

然后用Autodesk Fusion 360和Creality Ender 3(通过Cura)将其打印出来。这个外壳的模型可以在balena Thingiverse页面上找到。

将 Raspberry Pi Zero 放进壳中,然后熔化少许卡槽以便将其固定。

然后,用四个2.6毫米螺丝封住后盖。

我的电脑显示屏背面有USB接口,所以我剪了一条旧的USB电缆来供电。用细电线做这样的连接时,两根导线外侧可以加上热收缩管。给它们加热后,会形成一个坚固的接头。

供电线通过外壳顶部引出,以获得清爽的外观,然后用双面胶将我们的成品固定在电脑显示屏的下面。

后记

非常感谢Chris Hutchinson,是他最初启动这个项目,并促使我做进一步的开发。Blake也做了一些改进,这个项目就是他那里 fork 出来的。

Blake的项目地址:
https://github.com/ghostseven/UK-Train-Departure-Display

本项目用到的字体:
https://github.com/DanielHartUK/Dot-Matrix-Typeface

来自:Balena.io

作者:Chris Crocker-White

译者:王文文,前51CTO安全频道主编,Redhat认证工程师,华为HCIP-IoT认证工程师。

拒绝炎热和潮湿 DIY智能换气扇

夏季的上海,烈日炎炎。

白天出门就是一种折磨。

在屋里一直开着空调吧,到了昼夜交替或者深夜的时候,可能又觉得冷。

暴雨的时候,外面空气清新,室内却很闷热……

如果给你两个换气扇,怎样才能让室内空气健康流通呢?

美国有一位名叫 Ishmael Vargas 的创客,给我们带来了他的方案。

在芝加哥地区,夏季的白天和夜晚都是炎热潮湿的。太阳下山的时候外面温度下降,但家里却未必。

这就是窗式换气扇用得着的地方,它可以把冷空气吹进房子里。

但一直这么开着也不行,因为温度在不停变化。

去年夏天,Ishmael Vargas 经常要在半夜起床把换气扇关掉,但他觉得可以用一个更好的方法来控制风扇,无需人工干预,于是他便启动了这个小项目。

Ishmael Vargas 用树莓派和DHT22温湿度传感器来监测室温,然后将其与外部温度进行比较。如果后者更凉爽,则通过智能Wi-Fi电源插头(TP-Link HS100)打开换气扇 —— 这比将风扇连接到继电器要简单得多。

传感器的三根线分别接在树莓派的电源、接地、GPIO 4(建议加上10K电阻)
Smart WiFi Plug 智能插座

室外温度感知

为了简单起见,Ishmael 选择使用 pywapi 库从 Weather Channel 获取室外温度,而不再连接外部传感器。

“Weather Channel 提供的温度和实际温度可能相差一两度。这对于这个项目来说已经足够了。”他解释道。

智能WiFi插座用于打开和关闭窗户风扇

在测试中,Ishmael 发现清晨的风扇可能会把温暖的空气吹进房子里。

他说:“根据风扇的大小、房间的大小和房屋材料的不同,室内的温度可能永远不会像室外那么低。”例如,如果外面的温度是65°F(18°C),那么里面的温度可能会是67°F(19.5°C)。当室外温度开始上升时,你可能需要关掉风扇。”

远程控制

Ishmael 没有让风扇程序在启动时自动运行,而是选择通过Android智能手机手动启动并控制它。后者运行VNC查看器应用程序,允许远程访问Raspberry Pi的桌面,在桌面有一个快捷方式可以启动风扇应用程序。然后显示一个Pygame窗口,其中包含温度信息和控制按钮。

树莓派的桌面

“风扇应用程序有两个按钮,可以向上或向下改变(所需的温度)设定值。”Ishmael说。

此外,右上角的按钮是关闭应用程序并返回桌面。他的目标是在他的树莓派上运行多个项目,并为每个应用程序提供桌面快捷方式。

在手机或PC上,可以通过VNC查看温度数据和控制按钮

虽然最初的项目只使用了一个换气扇,但他后来对其进行了修改,添加了另一个风扇。因为他意识到,要想取得最好的性能,需要两个换气扇。一个吹进来,另一个吹出去。

编者注:最近在上海转悠了几个老小区,发现多户人家的通风问题需要改善。有的是楼道和通风管道设计的问题,这个就不说了。有的纯粹是自己不重视,如果能做科学的改动,应该可以让生活更舒畅。

源码地址:

https://github.com/IoToutpost/Smart-Window-Fan

素材:MagPi,编译:IoT前哨站,转载请注明出处。

王文文,前51CTO安全频道主编,阿里巴巴资深安全工程师。Redhat认证工程师,华为IoT认证工程师。

创客姐姐告诉你,树莓派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,而是要给大家介绍如何构建无人机语音模块。

先来看一段演示:

当然,不是所有无人机都提供了类似的 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前哨站,转载请注明作者和出处。