树莓派上设置OctoPrint实现3D云打印

如果你已经拥有3D打印机,那么你应该在3D打印的社区中听说过OctoPrint了。它会使你的3D打印工作变得更容易,更方便。

本指南将逐步指导你完成设置过程,并在此过程中提供一些有用的提示。

OctoPrint是一款开源软件,可以向具备USB接口的3D打印机添加Wi-Fi功能。

简单的说,你可以通过Web浏览器将本地文件拖放到打印机上,开始或停止打印。通过实时视频监视打印机,控制电机,控制温度等等。

当然,强大的功能也是会带来风险的。3D打印机超负荷工作的温度足以引起火灾,因此请确保自己有做好安全的设置,不要让它在未经监督的情况下运行。

OctoPrint需求清单:

•Raspberry Pi 3(或更高版本)
• MicroSD卡
•Raspberry Pi电源适配器
•USB线缆(连接器类型取决于你的打印机)
•Webcam / Raspberry Pi摄像头模块(可选)
•3D打印的摄像头安装架(可选)

在开始之前需要强调一下,不建议在该项目中使用低于Raspberry Pi 3的版本。在Pi Zero或更旧的Raspberry Pi上尝试这个软件,可能会遇到意外的打印失败。

下载OctoPrint

地址:https://octoprint.org/download/

截至到本文发布时,最新的版本应该0.17.0。

OctoPrint差不多算是Raspbian的一个分支,所以具体刷系统和Raspbian一样即可,这里不再累述。

设置Wi-Fi网络

刷完系统后,进到SD卡的boot目录,编辑octopi-wpa-supplicant.txt文件。

network={
    ssid="<your network name>"
    psk="<your password>"
}

改好之后,把SD卡插入树莓派,启动。

登陆Octopi

在你的浏览器中访问octopi.local,如果一切顺利。你应该能看到Web界面了。

如果没有看到OctoPrint启动画面?不要害怕,你不是第一个。常见的问题包括:仔细检查octopi-wpa-supplicant.txt文件中是否正确输入了Wi-Fi详细信息,将Raspberry Pi接上显示器并观察会发生什么情况。

https://community.octoprint.org/t/wifi-setup-and-troubleshooting/184 这个页面有详细的故障排除建议。

开始用OctoPrint打印

现在,我们可以根据向导为打印机设置OctoPrint。大部分步骤都简单明了——设置密码,注册。发送匿名使用情况、统计信息等等。

我们建议启用连接检查和插件黑名单,以帮助保持状态稳定。如果计划使用OctoPrint作为切片器和监视工具,可以用此步骤导入Cura配置文件。但是,我们建议跳过此步骤,因为在你自己电脑上切片更快。

最后,我们需要输入打印机详细信息。上面这个图我们是以Creality Ender-3的一些规格为例设置的。如果找不到打印机的确切信息,则可以通过快速网络搜索此部分所需的内容。

带摄像头的OctoPrint更好

现在,你已经设好了OctoPrint,可以开始打印。通过USB数据线将Raspberry Pi和3D打印机连起来。在浏览器中打开OctoPrint,然后单击“ Connect 按钮让已启用Wi-Fi的打印机开始工作。成功连接后,你可以设置“hot end”和“bed temperature”,然后观察实时读数的更新。

在“ Control”选项卡中,我们可以看到视频流(如果有使用摄像头的话)和电机控制,以及定位轴的命令。

有一个G-code文件查看器,可以查看当前加载模型的横截面,还有一个终端可以向打印机发送自定义的G-code命令。最后一个标签是用于设置延时的,有插件可以帮助完成这个过程。

毫无疑问,对打印图像进行视频监控的最简单方法是使用官方的Raspberry Pi摄像头模块。在Thingiverse上有很棒的Raspberry Pi摄像头模块支架,可让你在打印模型时获得最佳视角。还有一些很棒的以OctoPrint为主题的Raspberry Pi保护套可以容纳你新的打印机大脑。

虽然它没有得到OctoPrint的官方支持,但如果你手边有USB网络摄像头,或者只是想要一些高质量的视频流,你可以使用它。OctoPrint wiki有一个众包列表,其中列出了已知可以工作的网络摄像头,还有一个链接,提供了网络摄像头正常工作所需的额外步骤。 地址:http://hsmag.cc/aREXbo

综上所述, 设置完成后的操作,基本就三步:

  1. 用切片软件导出Gcode文件,
  2. 在OctoPrint的Web界面按Upload上传G-code,
  3. 点击Print开始打印。

你会看到文件/打印细节出现,包括打印对象需要多长时间……在开始之前,请查看右侧的G-code Viewer选项卡。你不仅可以滚动浏览对象的各个层,还可以使用底部的滑块来查看3D打印机用来“绘制”每一层的精确图案。现在点击“打印”,看你的打印机是怎么工作的。

OctoPrint拥有社区创建的大量插件,比如我最喜欢的Octolapse,能制造出梦幻般的延时摄影效果。该插件会改变打印对象的G-code,以便每一层打印结束, 挤出机就从打印物上移开,让摄像头毫无阻碍地拍摄模型。结果看起来像是魔法般凭空生长出来的物体。

相关视频效果:https://v.qq.com/x/page/z3050xutjrm.html

插件地址:https://plugins.octoprint.org/

来自:HackSpace & RaspberryPi.org

作者:  Alex Bate

译者:王文文

鸟巢盒子:用树莓派拍摄自己的《春日观察》

英国BBC有一档节目叫做《Springwatch》,翻译过来差不多叫《春日观察》。是在春天万物复苏之际,观察和报道野生动物生活的一档节目。

那持续的拍摄野生动物总会需要特制的道具,大的先不说,像鸟类一样娇小的动物,有没有好的办法可以拍到它从筑巢到孵卵的全过程呢?

英国利物浦的Jay Wainwright就做了这么一个带互联网属性的“鸟巢盒子”。

该巢盒通过树莓派将高质量图像和视频从英国的鸟巢盒子发到Facebook上。

Jay  运营着一个小型的巢盒直播网络,目前有3个已经部署,另外3个正在筹备中。令人兴奋的是,新的巢盒将包括一个红隼盒和一个谷仓猫头鹰盒!

在春季,所有摄像机的视频流都传向“鸟巢盒子”的Facebook页面,该页面稳定地吸引了数千名野生动物爱好者。

鸟巢盒子使用Raspberry Pi和摄像头模块以及Raspberry Pi PoE HAT来提供电源和Internet连接,因此只需要一根电缆接进去。

如果要收音的话,还可以外接USB麦克风,大约几十块钱RMB。

Jay还增加了LED灯和红外线滤光器,以确保白天和晚上都可获得高质量的画面。

最重要的是,他还写了一些Python代码来记录巢箱的访客以便在有突发事件时进入直播模式。

鸟巢盒子的设计显然已经过充分考虑,既能为鸟类提供有吸引力的空间,同时也便于集成所有电子组件。

鸟巢盒子的主要结构

如果想在Facebook上Follow这个项目,请访问:https://www.facebook.com/NestBoxLive

相关小鸟的视频地址:

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

素材:Facebook.com

编译:王文文,热爱物联网,喜欢研究开源软硬件和各种有意思的应用。前51CTO安全频道主编,RedHat认证工程师,华为HCIP-IoT认证工程师。

一个懂音乐的汽车雨刮器

有的人在车上听音乐的时候,遇到喜欢的节奏总会随着一起摇摆。

如果雨刮器能和音乐联动,那该是多么酷的事情啊。

国外有个伊恩·查纳斯(Ian Charnas)的创客,就改装了自己的汽车雨刮器,可以和车载音响播放的音乐联动。

一起来看看他是怎么让树莓派控制雨刮器的吧。

视频地址:https://v.qq.com/x/page/g3009vxldud.html

创客妹子教你做《偷天陷阱》激光警报系统

喜欢电影的朋友可能看过凯瑟琳.泽塔琼斯和肖恩.康纳利演的《偷天陷阱》。

片中,女主角绕过激光警报系统的过程让人印象深刻。

1999年上映的《偷天陷阱》

那这个激光警报系统实现起来难不难呢?

答案可能比你想象的要简单。

对于那些想要尝试自己构建防盗系统的人,创客妹子 Estefannie 提供了一个制作指南。

示例目标:

建立激光警报系统,保护饼干不被窃取。

工作流程:

激光阵列发现入侵者,摄像头拍照并把照片通过Twitter短消息发给主人,同时蜂鸣器警报响起。

配件清单:

10个激光头

10个光敏电阻

10个电容器

1个树莓派Zero W

1个蜂鸣器

1个树莓派相机模块

12英尺PVC管+ 4个角

1个丙烯酸面板

1个电池组

8根扎带

一罐饼干

Estefannie 并联焊接了10个激光头,又把十个光敏电阻连接到它们自己的GPIO引脚。由于灵敏度的原因,她没有将它们串联起来,这样可以简化调试。

选框架需要几次尝试。Estefannie 从一个木头架子开始试,最后意识到更好的解决方案是PVC管。所有的导线都可以放置在管道内部,然后从管道顶部的一个小窗口出来,连到树莓派Zero W。使用PVC管还可以降低制作成本,因为12英尺的管道大约只需要3美元。

管道内部的布线非常棘手,为完成电路, Estefannie 不得不将一些导线先置入管道内再进行焊接。

Estefannie 尝试将激光头粘合到PVC框架上,但是激光使胶水融化导致失焦。她又尝试使用胶带,后来发现腻子比较完美。成型后可以作为激光器的底座,并可在需要时重新校准。此外,无论激光的温度有多高,它们都能保持不移位。

虽然激光不是很强,但在长时间的校准后, Estefannie 还是会紧张她的眼睛。所以大家在调试的时候,可以戴上太阳镜。

Estefannie 最终在自家厨房里把这个装置搞定了。如果你认真观看影片,会发现她最后还皮了一下。希望大家能和她一样,在创作的过程中收获快乐。

相关视频地址:https://v.qq.com/x/page/l3014nzcgx0.html

相关代码: https://github.com/IoToutpost/Lasers/

素材:Raspberrypi.org

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

创客妹子教你做“一键发Twitter眼镜”

关注“IoT前哨站”的朋友可能记得之前我们发过一篇“让相机根据GPS定位自动拍照”的文章。

是的,那位名叫“Estefannie” 的创客妹子又出现了,这次她给大家带来的是一个可以自动发Twitter的眼镜,而且是“侏罗纪公园模式”。

什么叫侏罗纪公园模式呢?

看看这个眼镜发的Twitter内容就知道了。

发现梁龙一只
发现雷龙一只

准确的说, Estefannie 做的这个装置应该叫“侏罗纪恐龙抓拍系统”。因为她这个发的每张照片都会标一个恐龙的名字,比如:“发现梁龙”,“发现雷龙”……她在眼镜上装了一个按钮。按下就能把照片发到Twitter上。

制作流程:

Estefannie 先是找了一个像护目镜一样的眼镜模型。

用3D打印机把眼镜的原型做出来以后,对其进行打磨、喷漆、抛光。然后在上面接好树莓派Zero W,LED和按钮,加上可调节部分、软垫以及绿色镜片……

大量的涂胶、焊接和布线工作之后,她最终得到了一副漂亮的眼镜。

紧接着,她写了一个Python脚本来拍照、与Twitter交互,并通过LED环来提供眼镜当前的状态信息。树莓派系统启动时,会先连到她手机的无线热点。然后,眼镜上的红色LED亮起,表示程序正常运行。

然后,就可以戴着这个眼镜去抓拍有意思的景物了。

背景:

原本这是她被邀请去“Coolest Projects”青少年创客大会演讲而制作的道具,但你可以根据她的代码自己改改,做一个发微博或者抖音的版本。

关于详细流程,建议大家看视频。

相关视频:https://v.qq.com/x/page/c3010lo613b.html

3D模型文件: https://www.thingiverse.com/thing:3732889

代码下载: https://github.com/IoToutpost/JurassicGoggles

素材:Raspberrypi.org

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

一条命令将树莓派变成Wi-Fi接入点

很多开发者都配过无线AP,这几乎是IoT网络配置的一个基本技能。像TP-Link和D-Link那种小盒子,用不了几个步骤就能快速开启无线网络。

这次我们要介绍的是把树莓派编程无线AP的方法。

和之前动则十几个步骤的教程不同。我们借助一个叫 RaspAP 的工具,只要一条命令就能完成部署。

wget -q https://git.io/voEUQ -O /tmp/raspap && bash /tmp/raspap

等到命令执行完成后,重启树莓派,无线AP就做好了。

默认的连接信息如下:

IP 地址: 10.3.141.1
用户名: admin
密码: secret
DHCP 范围: 10.3.141.50 – 10.3.141.255
SSID: raspi-webgui
WiFi 密码: ChangeMe

其实树莓派的Raspbian已经自带了一些无线AP所需的组件, 而RaspAP的好处是它不但自动化相关操作,而且还有一套响应式的 WebUI。非常省事。

对手机浏览器的支持也很好。

官方团队是建议大家在Raspbian Buster版本的树莓派上使用这个工具,在执行安装命令前最好先更新系统。

sudo apt-get update
sudo apt-get dist-upgrade
sudo reboot

然后用sudo raspi-config 命令,在 菜单Localisation Options中设置 WiFi 地区。

如果你还再用没有Wi-Fi模块的老树莓派,可以装一个USB无线网卡。

目前 RaspAP 已通过 GNU Gettext 支持简体中文在内的多国语言,但你得确定系统内已经装中文环境了,如果没装,需要用 sudo dpkg-reconfigure locales  之类的命令自行配置一下语言包。

RaspAP 建议的最佳搭配就是一条有线接树莓派eth0的以太网口,然后通过树莓派自带的Wi-Fi提供无线AP服务。不用重启,也不用额外的操作。

还有一句话官方没明说:为使效果最佳,还是用树莓派3B或3B以后的硬件版本吧。

作者:王文文,前51CTO安全频道主编,RedHat认证工程师,华为HCIP-IoT认证工程师。热爱Linux、Python、Micro:bit和树莓派。

树莓派Raspberry Pi开发板 – 淘宝购买链接:

https://s.click.taobao.com/ClJnOqv

解析Python开发的一款迷你跑步游戏

之前“IoT前哨站”上发了一些用Python写文本游戏的文章。不管对于Python开发者来说还是对于游戏爱好者来说,都非常适合打基础。

这次我们迈入图形时代,来看看国外开发者“Rik Cross”制作的一款迷你跑步游戏。

他用了不到一百行代码,就写出了值得一玩的2D动作游戏,怎么做到的?

在此之前,先向大家介绍一个游戏框架:pgzero。

该框架全名Pygame Zero,是一个基于Pygame的游戏编程框架。它可以更容易地编辑游戏,无需模板、不用编写事件循环,也无需学习复杂的Pygame API,而且支持树莓派。

安装
pip install pgzero

需求:
通过键盘的左右键操作,让运动员向前奔跑,每过25米有路标提醒,最后看谁在百米跑步中耗时最少。

代码下载地址:
https://github.com/IoToutpost/Python_game/tree/master/Sprint

素材(地址同上):
Images文件夹中有21张图,包括运动员的动作分解、跑道等。

其中的关键代码,是一个叫做Sprinter()的类。

class Sprinter(Actor):
     def init(self, **kwargs):
         super().init(image='idle', pos=(200,220), **kwargs)
         self.startTime = time()
         self.finishTime = time()
         self.runFrames = ['run' + str(i) for i in range(1,16)]
         self.timeOnCurrentFrame = 0
         self.speed = 0
         self.lastPressed = None
         self.keyPressed = False
         self.distance = 0
# 将运动员推进到下一帧
def nextFrame(self):
    # 如果当前空闲,则启动正在运行的动画。 
    if self.image == 'idle':
        self.image = self.runFrames[0]
    else:
        # 在列表中找到下一个图像,然后返回到第一个图像 
        # 当列表已经到末尾的时候
        nextImageIndex = (self.runFrames.index(self.image) + 1) % len(self.runFrames)
        self.image = self.runFrames[nextImageIndex]

# 检查左右方向键是否正确
# 被交替按下
def isNextKeyPressed(self):
    if keyboard.left and self.lastPressed is not 'left' and not keyboard.right:
        self.lastPressed = 'left'
        return True
    if keyboard.right and self.lastPressed is not 'right' and not keyboard.left:
        self.lastPressed = 'right'
        return True
    return False

def update(self):
    # 更新运动员的速度
    # 交替按键加速
    if self.isNextKeyPressed() and self.distance < 100:
        self.speed = min(self.speed + ACCELERATION, 0.15)
    # 如果没有按键,减速
    else:
        self.speed = max(0, self.speed-DECELERATION)
    # 根据运动员的速度更新距离 
    self.distance += self.speed
    # 根据运动员的速度对其进行动画 
    self.timeOnCurrentFrame += 1
    if self.speed > 0 and self.timeOnCurrentFrame > 10 - (self.speed * 75):
        self.timeOnCurrentFrame = 0
        self.nextFrame()
    # 如果不移动,则设置为空闲
    if self.speed <= 0:
        self.image = 'idle'

里面有一些变量用来跟踪运动员的速度和距离,以及全局的常量(ACCELERATION和DECELERATION的值)。这样可以确定玩家的速度变化。这些数字很小,因为它们代表了玩家加速和减速时,每一帧对应的米数。

玩家通过交替按左右键来增加运动员的速度。这个输入由Sprinter类中的isNextKeyPressed()方法处理,如果按下正确的键,该方法将返回True。

lastPressed变量用于确保左右键被交替按压。如果未按下任何键,玩家会减速,并且该减速程度应小于加速度,以免让玩家突然停下。

在游戏设计中,作者用了gameart2d.com上一个名为“The Boy”的免费形象来作为运动员,里面有15张跑步动作分解图构成的循环。他将从空闲状态开始,只要速度大于0,就切换到跑步动作循环。

这是通过index()在runFrames列表中查找当前运动员图像的名称来实现的,程序会将当前图像设置为列表中的下一个图像(并且在到达列表的末尾时返回第一个图像)。

我们还需要让运动员在跑步动作循环中以成比例的速度向前移动,通过跟踪当前图像显示的帧数来实现(在那个名为timeOnCurrentFrame的变量中)。

为了给玩家一种移动的错觉,作者添加了一些经过玩家的物品:一条终点线和三个显示跑动距离的标记。

这些物品出现的时机是根据运动员在屏幕上的x位置和运动距离计算出来的。

​然而,这意味着每个物品距离玩家最多只有100像素的距离,似乎移动的有点缓慢。我们可以通过SCALE因子来解决,它对应的是运动员跑过的米数和屏幕上像素之间的关系。比如设成1:75。

这些物品最初被绘制在屏幕看不见的右侧,然后向左移动并更快地经过运动员。

最后,startTime和finishTime变量用于计算比赛时间。这两个值最初都设置为比赛开始的时间,只要跑动的距离小于100,finishTime就会更新。使用time模块,比赛时间可以简单地计算为finishTime – startTime。

附注:该游戏在树莓派和Windows PC上都能跑,如果要试玩,记得在Python文件前面加pgzrun命令。

Have fun.

素材:Wireframe #23

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

给树莓派 CM 的 eMMC 烧录系统的方法

树莓派 CM(计算模块) 上有一个 eMMC 设备连接在主 SD 卡接口上(Lite 版除外),下面将介绍几种方法,通过计算模块的 IO 底板将系统烧录到 eMMC 上。

你还可以在计算模块的 Datasheet 中查看到本文所介绍的方法。

首先需要准备一块树莓派 CM,和一块底板。CMIO 或者其他底板(如 ED-IOTGATEWAY)均可。

烧录步骤

你需要准备一个 Linux 系统(推荐使用树莓派或装了 Ubuntu 的 PC)或 Windows 7、Mac。

注意,对于 BCM2835 (CM1) 的 bootloader 有一个 BUG,它会给主机返回错误的 USB 数据包,但是大多数的 USB 主机会忽略这个无害的错误并能正常工作。这个错误在 BCM2837 中做了修正。

Windows 下的操作

在 Windows 下有一个安装工具来自动安装所需驱动和引导工具。或者你也可以使用 Cygwin 编译并手动安装驱动。

Windows 安装工具

1、下载并运行 安装程序 完成驱动和引导工具的安装。

2、将树莓派 CM 底板的 USB SLAVE 接口连上 PC 的 USB 接口。需确认 J4 跳线(USB SLAVE BOOT ENABLE)设定在 EN 的位置。

3、给树莓派 CM 底板上电,Windows 将自动发现新硬件并安装驱动。

4、驱动安装完成之后,运行 RPiBoot.exe。

5、等待几秒钟之后,计算模块的 eMMC 将作为 USB 大容量启动器出现在系统的磁盘列表中。

6、这时候就可以像 给 SD 卡烧录系统镜像 一样来给计算模块烧录系统了。在写入系统镜像时请将 J4 跳线设置到 disabled 的位置(或者不要使用 USB Slave 接口)。随后给底板上电,系统会从 eMMC 来启动。

Cygwin 手动安装驱动的方法

Cygwin 是一个在 Windows 平台上运行的类 UNIX 模拟环境,首先你需要在Windows 上安装好 Cygwin。

下载和安装参考 http://www.cygwin.com

接下来,和上面介绍的工具安装方法一样,设置好底板上 J4 跳线到 EN 的位置。用 micro USB 线把底板接到 PC 上,请不要给底板上电。

使用 Git 获取 rpiboot 的源码并编译安装。

sudo apt-get install git

如果系统时间没有设置的话, Git 会报错,使用下面的命令设置系统时间即可,此处 MM、DD、hh、mm 分别为月、日、小时、分钟。

sudo date MMDDhhmm
git clone –depth=1 https://github.com/raspberrypi/usbboot
cd usbboot

如果 libusb 没有安装的话,可以用下面的命令安装,若已安装则可忽略。

sudo apt-get install libusb-1.0-0-dev

编译源码

make

运行 rpiboot

sudo ./rpiboot

现在将计算模块底板的 USB Slave 接口(J15)连上 PC,并给底板上电。rpiboot 程序会检测到计算模块并发送启动代码来运行连接 eMMC。

Linux 下的操作

这部分和 Windows 下 Cygwin 的手动安装驱动方法类似。获取 usbboot 的源码并运行 rpiboot,所用到的命令和上面一样故不再赘述。下面说一下烧录这个步骤所用到的命令。

rpiboot 完成之后,你可以在 /dev/ 目录或者运行 lsblk 命令对比看到 rpiboot 运行前后的一些改变。会出现一个新的设备,就是计算模块的 eMMC。

使用 dd 命令将 Raspbian 镜像刷入到该设备即可。下面假设新的设备名为 sdX 则使用下面的命令。

sudo dd if=raw_os_image_of_your_choice.img of=/dev/sdX bs=4MiB

运行结果

/dev/sdX <- Device
/dev/sdX1 <- First partition (FAT)
/dev/sdX2 <- Second partition (Linux filesystem)

现在 /dev/sdX1 和 /dev/sdX2 可以被正常挂载到系统了。

在写入系统镜像时请将 J4 跳线设置到 disabled 的位置(或者不要使用 USB Slave 接口)。随后给底板上电,系统会从 eMMC 来启动。

来自:树莓派实验室

月黑风高无遁逃 —— 用树莓派自制夜视仪

小时候,我花了很多时间玩“细胞分裂”。这个游戏经常要在阴影中徘徊,光线和声音是完成各种任务的重要因素。

游戏中最让人印象深刻的就是情报员 Sam Fisher 戴的夜视仪。因此我一直对能在黑暗中看清事物而着迷,并有了打造便携式夜视设备的想法。

功能要求:

能在黑暗中观察事物(2米到5米)
有图形界面可操作
10个不同功能的按钮
方便的手柄
可调整到最佳视角。
可保存实时视频
可拍照

主要思路:

这个夜视仪核心是红外摄像头(红外线可让你在黑暗中拍摄照片和视频),我买了一个旧的手持式相机闪光灯作为夜视仪的基础。

树莓派Zero小巧,放在这个闪光灯壳子里很完美,有足够的空间支持HyperPixel屏幕和摄像头。而且它还有一个倾斜手柄,这意味着你可以调整夜视角度并且随身携带。

所需硬件:

1、树莓派 Zero W

2、树莓派摄像头 NoIR Camera V2

3、触摸屏 HyperPixel 4.0

代码地址:

https://github.com/IoToutpost/Night-Vision

把程序部署完成之后,可以在桌面放置一个快捷方式,以便随时启动。

十个按钮的功能:

预览 10秒

预览 30秒

预览60秒

预览5分钟

预览10分钟

预览15分钟

拍照

捕捉一个10秒视频

保持预览(没有时间限制)

离开/关闭

因为默认的灰色在黑暗中太亮了,于是作者把按钮改为黑色背景和绿色字体。

编者按:这里用到的HyperPixel 4.0触摸屏似乎与2019年8月发布的Raspbian Buster不太兼容,建议使用Raspbian Stretch。

原先的手持式相机闪光灯没地方展示触摸屏,作者用小刀将其顶部塑料一点一点切掉,这才有了一个不规则的显示区。DIY真是锻炼人啊……

相关视频地址:

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

素材:Tecoed.co.uk

作者:TeCoEd

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

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

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

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

用树莓派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认证工程师。