树莓派北美团队 vs 树莓派驱动的“密室逃脱”

作者:Christina Foust

编译:IoT前哨站

几天前,树莓派北美团队在旧金山体验了一个非常特别的,由树莓派驱动的密室逃脱店。

这就是由Palace Games运营的一个充满灯光、传感器和大量惊喜体验的“爱迪生密室”。

以下是关于我们如何进入、探索并最终逃离这个房间的经过。

在今年的世界创客大会(World Maker Faire)上,我们的社交媒体明星亚历克斯•贝特(Alex Bate)遇到了乔丹•邦克(Jordan Bunker),他是制作Palace Games的艺术家之一。

经过电子邮件的连番轰炸后,树莓派北美团队订好日期,“直面交锋”爱迪生密室!

密室逃脱

“密室逃脱”是一种物理世界的冒险游戏,玩家通过线索、逻辑和策略来解决一系列的谜题和谜语,从而完成游戏的目标。许多密室逃脱设计师使用实体互动装置来控制玩家体验中涉及的众多传感器和触发器。

树莓派北美团队 vs 爱迪生密室

进入爱迪生密室后,我和我的团队很快意识到自己身处一个像巨型计算机一样的复杂系统中!所以即使这是我们第一次玩密室逃脱,也不是一个劣势。

(小编语:难道你们很擅长巨型计算机?)

我们的目标是完成各种任务。包括解决许多谜题,在任何事情中寻找隐藏的线索,完成电路,移动地板,并进行一些试验。

然而,真正的考验是我们之间的沟通和合作 —— 我们在这方面做得非常出色!

我们做了分工,以便有效地找出不同的谜题和线索,大家不停的在房间里大喊:“试试这样做”,“也许它是这个意思”,“如果它应该那样做呢?”

当我们完成最后一个挑战并最终逃脱时,我们欣喜若狂!每个人都戴上了爱迪生思维帽。

内部机制

逃离密室后,我们有机会去幕后一探究竟。

我们发现了一个由多个树莓派组成的本地网络,这些Pi由一个中心服务器(也是树莓派)协调。而Python写的Banyan框架(The Python Banyan framework)是树莓派及其附属组件之间的连接关键。

该框架帮助Pi和中心服务器之间的内网通信。树莓派被用来读取各种类型的传感器,控制灯光、开门或播放音乐。上面还跑着一个用来让工作人员设置和跟踪游戏的控制面板。

“树莓派让我们进步,它是我们密室的核心和灵魂。” ——伊丽莎白·桑德,密室设计师兼产品经理说道。

我们强烈推荐你去Palace Games(https://palace-games.com/)玩一个密室。这是一种很好的团建方式,可以让你了解和你一起工作的人。最后感谢Palace Games团队对我们的接待,希望不久以后能再回去探索他们的密室!

双因素认证就够了?让我们用树莓派做个三因素的

双因素认证就够了?让我们用树莓派做个三因素的。

虽然双因素认证一直在我们在线访问电子邮件和网上银行时提供更多的安全性,但在物理世界,现在已经有三因素认证可以保护我们的贵重物品。

扫描指纹进行身份验证

不明白什么意思? 以下是来自Switched On Network的视频,演示了如何使用Raspberry Pi构建三因素门锁,包括RFID密钥环,6位密码和发送到手机的一次性密码。

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

Alex Bate的三因素门锁制作关键

要构建Switched On Network的三因素门锁,你需要采购Raspberry Pi 3,USB RFID读取器和遥控器,触摸屏,电子门锁和继电器开关。如果这些都有了,你最好再找个电源和胶枪。

胶水枪

为屏幕安装适当的驱动程序(如果点不亮屏幕)后,你就可以安装Switched On Network在GitHub repo公布的Python脚本。

地址:https://github.com/paulfp/Three-Factor-Security-Door

在竖屏模式下连接到Pi的三因素认证

然后是物理构造:你需要把门锁、引线和其他东西连接到Pi上,所有这些都要连接到门和门框上。

三因素认证门锁组件

最终成品是一个你提供密码、RFID标签(或卡片)和手机短信才能打开的高级门锁。 虽然我们不建议你用这种技术从外侧保护你的房屋,但它却是办公室或密室的完美配置。

《德克斯特实验室》经典台词

正如美国经典动画角色,德克斯特说的那样:“每个人都要有个私密之地。”

用树莓派和TV HAT做个电视机

不知道是不是用树莓派看电视的人非常多,树莓派官方干脆在近日推出一款电视帽(TV HAT),让树莓派粉丝直接拥有做电视机的能力。

该电视帽的全称是”Raspberry Pi DVB TV HAT”,价格是20英镑。相信将给喜欢看电视的树莓派开发者带来极大的满足。

电视帽可以让任何版本的树莓派(带有40针GPIO)实时解码数字电视信号,并将其传输到远程设备。比如另一台Pi、电脑,甚至智能手机。

电视帽内置的Sony CXD2880调谐器支持DVB-T2和DVB-T标准(英国Freeview),你可以通过它观看所有喜欢的频道。

在这里,我们向你展示如何设置它,甚至通过它把树莓派变成全合一的电视/PVR。

装配工作

将随附的银色射频电缆适配器的细端插入电视帽侧面的金色接头。取出40针的接头,将其插入电视帽底部的孔(不是插入顶部的黑色母头)!

然后把电视帽扣在Pi上,将RF适配器装在microSD卡插槽端。 为了确保安全,你要将螺丝和螺帽拧紧。

安装Tvheadend

首先你需要一个靠谱的数字电视(比如英国的Freeview)接收装置才能让调谐器工作。然后把电视信号线插入电视帽上的射频适配器。

在microSD卡上装好树莓派系统,启动后会看见一个绿色的LED点亮电视帽。

我们需要安装一个名为Tvheadend的后端电视服务来流化视频。

打开终端窗口并输入:

sudo apt-get update
sudo apt-get install tvheadend

配置Tvheadend

安装Tvheadend需要几分钟,所以你可能想去泡杯茶。

最后会出现一个配置屏幕,提示你输入Tvheadend管理员用户名。为了简单起见,在这里输入kodi,然后也输入kodi作为密码,你以后可以随时更改它。现在可以从另一个设备登录了。

远程登录

现在,Tvheadend正在运行,你可以从另一台计算机访问它(可以是第二个树莓派)。

在Web浏览器中,输入http://raspberrypi.local:9981/extjs.html。

如果不行就用Pi的IP地址,后面跟着:9981/extjs.html。

使用kodi这个用户名和密码登录后。将出现一个配置向导,允许你选择电视网络类型和信号源。

配置电视网络

在配置向导的“网络设置”中,应该显示“Tuner: Sony CDX2880 #0 DVB-T #0”。

对于网络类型,选择“DVB-T网络”。

对于预定义的muxes,选择你本地信号源。

例如,我们的是uk-Rowridge。单击Save & Next,它将开始扫描mux和服务(通道)。

当它达到100%后,在所有三个框中打勾(映射所有服务、创建提供者标记、创建网络标记),一个电视频道列表(EPG)将出现。

看电视

现在你可以在浏览器中通过电视帽观看直播。在EPG中,点击任何节目左边的电视图标,都可以在窗口中显示,可以全屏。也有计划任务和记录等选项 —— 使用“帮助”获得更多细节。

除了使用Web浏览器,你还能使用各种客户端,比如Kodi、omxplayer、VLC和智能手机应用程序 —— 你可以在Tvheadend网站上找到完整的列表。

友情提示:不是所有国家都支持这款电视帽,采购时请注意自己所在地区支持该标准和协议。

来自:https://www.raspberrypi.org/magpi/raspberry-pi-tv-hat-kodi/

编译:IoT前哨站

为避免重新洗衣服而做的降雨报警机

没有什么比刚晾干的衣服更舒服了,除非一场突如其来的阵雨把一切都毁了。

从一名家庭成员那里听到:“下雨了!”,然后紧接着是楼梯上雷鸣般的脚步声。

这样的话太惨了。

想要拯救你最好的周日时光,免于再一次去洗衣房的痛苦吗?

看看这个小东西。

当雨点开始时,这个简单的设备就会在你的手机检测到雨点时发出警报。不需要焊接,只需要几根电缆。借助低功耗电路板和WiFi,我们能做出一个基于Raspberry Pi Zero W的完美项目。

测雨器需要的组件:

2个雨水传感器板和一个控制器
面包板
充电宝
密封小食品容器
跳线
树莓派 Zero w

核心代码:

from gpiozero import DigitalInputDevice
from time import sleep
import http.client, urllib.parse

# Some setup first:
APP_TOKEN = ‘YOUR_PUSHOVER_APP_TOKEN’ # The app token – required for Pushover
USER_TOKEN = ‘YOUR_PUSHOVER_USER_TOKEN’ # Ths user token – required for Pushover

# Set up our digital input and assume it’s not currently raining
rainSensor = DigitalInputDevice(17)
dryLastCheck = True

# Send the pushover alert
def pushover(message):
print(message)
conn = http.client.HTTPSConnection(“api.pushover.net:443”)
conn.request(“POST”, “/1/messages.json”,
urllib.parse.urlencode({
“token”: APP_TOKEN, # Insert app token here
“user”: USER_TOKEN, # Insert user token here
“title”: “Rain Detector”,
“message”: message,
}), { “Content-type”: “application/x-www-form-urlencoded” })
conn.getresponse()

# Loop forever
while True:

# Get the current reading
dryNow = rainSensor.value
print(“Sensor says: ” + str(dryNow))

if dryLastCheck and not dryNow:

pushover(“It’s Raining!”)

elif not dryLastCheck and dryNow:

pushover(“Yay, no more rain!”)

# Remember what the reading was for next check
dryLastCheck = dryNow

# Wait a bit
sleep(5)

在做其他事情之前,在SD卡上安装一个Raspbian Stretch Lite(我们不需要桌面),然后插入到Pi中。确保已启用SSH访问。执行sudo apt更新和升级的常规程序,然后重启,检查SSH连接,然后关机。

将传感器安装到盖子上:

你可以使用任意数量的传感器,但是两个就可以了。用保温层或管道胶带将两块板固定在盖子上。

注:3d打印外壳图片(STL文件可从这里得到)。

需要连接两对跳线;每个传感器板一个,极性无关紧要。电缆的另一端必须穿入容器内,所以在适当的地方尽可能地挖一个小洞,这样电线才能通过,从而减少水进入的机会。

将传感器连接到控制器

为了让树莓派明白发生了什么,一个小的控制板(与传感器一起提供)是必需的。这就把被水短路的小电流转换成数字信号。利用面包板,将传感器上的两对导线并联起来(这样两个传感器都可以构成电路),然后将控制器的接收引脚(带有两个连接器的一侧)插入到面包板上,使每个引脚与传感器上的一根导线相连。

连接控制器

为了完成我们的电路,仔细看看控制板上的四个引脚。它们将被标记为A0、D0、GND和VCC。

使用一些跳线,将控制器与Pi连接如下:

VCC到GPIO pin 2 (5v),

GND到GPIO上的任何GND(例如pin 6),

D0到GPIO 17 (pin 11)。

D0和A0是传感器读取输出的两种不同方式。D0是一个直接的数字开关,阈值由板子上的可变电阻控制。A0是一个模拟输出(当转换为数字时),范围在0到1024之间,取决于雨的强度。

装配雨探测器

把充电宝接上树莓派,然后放进容器。理想情况下,东西不应该移动,所以要用胶带或大头针把所有东西都固定好。

你现在应该可以把所有东西都密封在容器里了,连接传感器板的电线不会被挤压或变形。一旦你高兴,打开它并连接电源,然后再次关闭它并检查你的连接。确保充电宝能给树莓派至少几个小时的电力。

检测软件

在这个特性的末尾添加脚本,并将其保存为rainbot.py(或从GitHub下载)到一个方便的位置,比如~/pi/rainbot。一旦就位,通过运行python3 ~/pi/rainbot/rainbo.py来执行一个初始测试。你应该每五秒钟就会看到一个读数:

如果是干的,是“真”;如果是湿的,是“假”。按CTRL+C停止脚本。

Pushover:在你的手机上获取降雨警报

为了获得提醒,我们将使用Pushover,这是一个向智能手机推送消息的服务(有七天的免费试用)。

注册pushover.net后,你将看到一个“用户密钥”,把这个复印一份。按照说明创建一个“应用程序令牌”。

编辑脚本,把现有的API键值替换成你自己的(在提示的地方),然后在你的手机安装了“pushover”程序。

再次运行脚本。把其中一块感应板稍微弄湿。控制器上应该亮一盏灯。如果一切正常,几秒钟后你的手机就会显示一个警报。

自动运行雨探测器

让我们设置脚本在启动时运行。 作为超级用户创建以下文件:

sudo nano /lib/systemd/system/rainbot.service
填入:

[Unit]
Description=Rainbot
After=multi-user.target

[Service]
Type=idle
ExecStart=/usr/bin/python3 /home/pi/rainbot/rainbot.py

[Install]
WantedBy=multi-user.target

按CTRL+X保存并退出nano。

然后输入以下命令:

sudo chmod 644 /lib/systemd/system/rainbot.service
sudo systemctl enable rainbot.service
sudo systemctl daemon-reload
重新启动树莓派。脚本将在重新启动时运行(尽管您不会看到任何输出)。再用水测试一下。

为你的雨天探测器做改进

Pushover很方便,而且可以很容易地替换为任何你喜欢的函数。检查的频率可以改变(目前是每五秒一次)。或者把模拟电路改成数字电路,然后用A0输出来测量雨下得有多大。

如果你开始记录这些数据,这对气象站项目来说也是一个很好的起步。你还可以增加一个使用后安全关闭树莓派的按钮。

用树莓派实现网站访客LED闪亮提醒

用树莓派实现网站访客LED闪亮提醒,每当有用户访问你博客时LED就会闪一下,闪得频率越快访问者越多。

以下是清单列表:

LED 1个、公/母杜邦线2条、220欧姆电阻1个、面包版1个。
首先我们先来安装WiringPi(通过它我们可以用php来控制GPIO)

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git-core
git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
./build

下面我们开始链接LED到GPIO,直接看图就好,你可以连接到任何一个绿色的借口,我们这里连接的是GPIO.0(LED正负极我就不讲了自己百度吧),PS,图不是我画的如果严谨点GND应该用黑线。

好了接下来我们来写点PHP代码,可以直接嵌入到网站的PHP页面内。

<? php
exec(“gpio mode 0 out”);/*mode 0就是蓝线插入的针脚,可以使用0-7*/
exec(“gpio write 0 1”);/*点亮led*/
exec(“gpio write 0 0”);/*关闭led*/
? >

到这里我们的游客提醒功能就完成了,各位还可以发挥想象力,比如用三(绿,黄,红)显示剩余内存,CPU使用率等等。

怎么用 Fio 来测试树莓派的磁盘性能

为了测试系统IO性能的高低,在实际开发中,需要使用IO性能测试工具进行测试。

这里要介绍一款经典神器 —— Fio(Flexible I/O Tester)。

这是一款由 Jens Axboe 开发的用于测评和压力/硬件验证的开源软件。

它支持 19 种不同类型的 I/O 引擎 (sync、mmap、libaio、posixaio、SG v3、splice、null、network、 syslet、guasi、solarisaio,以及更多), I/O 优先级(针对较新的 Linux 内核),I/O 速度,fork 的任务或线程任务等等。它能够在块设备和文件上工作。

Fio被广泛的应用在非常多的地方,包括测评、QA,以及验证用途。它支持 Linux、BSD、OS X、Android 以及 Windows。

简单来说,Fio是用来测试系统IO性能的工具,它的强大之处在与提供了一套测试框架,能够支持多线程多进程的IO测试,用户只需进行参数的配置,便能够方便地定制不同的IO行为(顺序读写,随机读写等),并对其性能进行监测。

对于Debian/Raspbian来说,Fio的安装很容易。

执行 sudo apt-get install fio 即可。

一般的参数和说明:

bs : 设置IO请求的块大小,可以给出上下限
支持对read,write,trim分别进行设置,以逗号隔开
比如:bs=1k-2k,3k-4k,5k-6k
size : 文件请求的大小,控制job结束
rw : 控制读写类型: read/write/rw/randread/randwrite/randrw
direct : 1表示绕过buffer,直接作用于设备
ioengine: io引擎:libaio(异步IO),syslet等
iodepth : 异步IO情况下,IO队列的长度
runtime : 执行时间限制,控制job结束
filename: 输出文件或者设备名,eg:/dev/sba

例子:

bs=4k:单次io的块文件大小为4k
ioengine=libaio:IO引擎使用libaio方式
direct=1: 测试过程绕过机器自带的buffer,使得测试结果更真实,等效于buffered=0
runtime=7200:运行时间设置7200s
size=20G :设置本次测试的空间为20G
filename=/dev/sdb20 :被测裸盘的盘符
group_reporting=1:汇总每一个进程的信息
rate_iops=5000 : rate_iops设置额定的iops,一般测试不需要设置
time_based :设置测试基于时间,注:虽然设置了runtime为7200s,如果没有设置time_based,在空间写满之后停止。
write_iops_log=w-4kb-7200s-numjobs4-iodepth128-ssd:表示将iops写入到一个在fio目录下名叫4kb-7200s-numjobs4-iodepth128.iops.1.log的文件中,注:如果numjobs设置为多线程,则每一个线程的iops写入到一个log文件中。
log_avg_msec=1000: 每隔1000ms往log中写一次数据
rw=randwrite : 测试方式随机写

numjobs=4:设置测试线程数
iodepth=128:io 深度设置为128

实际操作:

随机写入的性能测试:

sudo fio –name=randwrite –ioengine=libaio –iodepth=1 –rw=randwrite –bs=4k –direct=0 –size=512M –numjobs=2 –runtime=240 –group_reporting

输出的结果:

随机读取的测试:

sudo fio –name=randread –ioengine=libaio –iodepth=16 –rw=randread –bs=4k –direct=0 –size=512M –numjobs=2 –runtime=240 –group_reporting

输出的结果:

结果里面包含吞吐量和时间。io=表示总共完成的IO量。在基于容量的测试中,这个值能匹配size参数。aggrb是所有进程/设备的汇总带宽。minb/maxb表示测量到的最小/最大带宽。mint/maxt表示测试的最短和最长耗时。和io=参数类似,时间值对于基于时间的测试应该能匹配runtime参数,对于基于容量的测试是一个变量。

如果对相关参数搞不明白可以看帮助:

好了,IoT前哨站希望大家熟练掌握这个性能检测工具。

在树莓派上实现人脸识别和身份鉴定

介绍

预计在不久后的将来,人脸识别和身份认证技术将在我们的日常生活中扮演一个非常重要的角色。这项技术为我们开辟了一个全新的世界,它几乎适用于我们生活的方方面面。面部识别/身份认证的使用案例包括安全系统、认证系统、个性化智能家居和家庭护理助理等。

我们将搭建什么?

本教程将帮助你建立一个可以训练 HARASCALDES 模型的树莓派,该模型可用于检测已识别的/未识别过的人,使用监控摄像头进行实时监控,并利用物联网 JumpWay 来发送传感和警告消息,进而允许你的设备利用其他物联网 JumpWay 网与其他设备进行通信。

本教程将利用 TechBubble Technologies 物联网 JumpWay Python MQTT 库进行通信,利用 OpenCV 实现计算机视觉,在本地端口上建造移动 Web 流和安全的 NGNX 服务器,以便可以安全地从外部访问视频流。

这个例子是我们最初的 TASS 版本,因为我们的进步依靠了很多更先进的计算机视觉库和框架,所以我们决定将代码进行开源。

Python 版本

2.7 版本
3.4 或更高版本

软件要求

1、Jessie

2、TechBubble IoT JumpWay Python MQTT Client

(https://github.com/TechBubbleTechnologies/

IoT-JumpWay-Python-MQTT-Clients)

3、Linux 驱动

4、Nginx

硬件要求

1、树莓派
2、Linux 兼容摄像头

准备工作

在开始之前,有几个教程你应该看一下,尤其是如果这是你第一次按照我们的树莓派教程,或者如果这是你第一次使 TekBaseIO-JavaWoW 开发程序。

如果这是你第一次在物联网项目中使用 TechBubble IoT JumpWay,在你创建 IOT 设备之前需要注册开发帐户,并在进行一些基本的设置。

访问下面的物联网 JumpWay 开发者使用文档(5-10 分钟阅读/设置 https://github.com/TechBubbleTechnologies/IoT-JumpWay-Docs/),并查看引导来进行注册并设置你的位置、区域、设备和应用程序(大约 5 分钟)。

物联网 JumpWay 开发者程序文档

(https://github.com/TechBubbleTechnologies/IoT-JumpWay-Docs/)

准备你的树莓派

(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/1-Raspberry-Pi-Prep.md)

设置区域名字 & 树莓派的 SSL

(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/3-Raspberry-Pi-Domain-And-SSL.md)

在你的树莓派上配置 OpenCV

(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/2-Installing-OpenCV.md)

在你的树莓派上配置 Linux 驱动

(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/5-Installing-Motion.md)

在树莓派上为 Linux 驱动安装

(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/6-Secure-Nginx-Server-For-Motion.md)

用 IPTables 确保树莓派的安全

(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/4-Securing-Your-Raspberry-Pi-With-IPTables.md)

准备你的树莓派

花一些时间来确保你的树莓派的硬件和包都是最新的,并且确保你的准备过程严格按照树莓派 3 的教程文件(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/1-Raspberry-Pi-Prep.md),设备是安全的。

复制 Repo

你将需要将 echBubble IoT JumpWay (https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples)树莓派实例 Examples 示例库下载到你的树莓派上,并导航到你想下载的目录,以下命令是将其下载到主目录最简单的方式。

git clone https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples.git

安装要求

接下来,你需要将计算机视觉库导航到目录并按照要求进行安装,如果你已经将库复制到你的主目录上,那么这一部分的命令如下:

cd IoT-JumpWay-RPI-Examples/Computer-Vision/Python
pip install –upgrade pip
pip install -r requirements.txt

安装 OpenCV

OpenCV 需要遵循树莓派教程(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/2-Installing-OpenCV.md)进行安装,它是我们将使用的一种计算机视觉库。

安装 Linux 驱动

我们将使用 Linux 驱动把视频流传送到树莓派本地端口上,OpenCV 在这里连接到视频流并从中读取图像帧。

为了建立 Linux 驱动,遵循安装教程(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/5-Installing-Motion.md)在你的树莓派教上安装 Linux 驱动。

这里有一些修改,在驱动安装教程的第 9 部分中,它告诉你如何修改媒体的保存目录,在本教程中,你应该将这些设置更改为:

/home/YOURUSERNAME/IoT-JumpWay-RPI-Examples/Computer-Vision/Python/media

不要忘记注意第 10 部分中关于关闭图像保存来节省磁盘空间的问题。

设置域名和 SSL

我们希望我们提供的教程可以确保帮助人们学会创建安全的项目。为了使视频流安全工作,你需要设置指向你的树莓派域名,你也需要设置 SSL 证书来确保用于视频流的服务器是安全的。

树莓派域名和 SSL 设置教程会向你详细解释如何做到这一点,如果有疑问,你可以让你的注册员或主机来协助你。

(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/3-Raspberry-Pi-Domain-And-SSL.md)

如果你将这个存储库复制到你的主目录中,你需要使用如下的 CSR 和密钥生成的路径:

/etc/nginx/key.key
/etc/nginx/csr.csr

一旦你从证书颁发机构收到你的签名 crt.crt 和 ca.crt 文件,你需要将它们上传到:

/etc/nginx/ca.crt
/etc/nginx/crt.crt

为 Linux 驱动安装安全的 NGINX 服务器

我们将使用 NGNIX 作为我们的服务器解决方案,并在 Qualys-SSL 实验室 SSL 报告中将其设置为 A 级+ SSL 等级。

为了做到这一点,我们提供了一个可以在 RasBuriPi 上的 Linux 驱动上安装 NGINX 服务器的指南(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/6-Secure-Nginx-Server-For-Motion.md)。

在开始这一步之前,你需要在你的树莓派上安装 Linux 驱动(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/5-Installing-Motion.md),并为你的树莓派设置域名和 SSL(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/3-Raspberry-Pi-Domain-And-SSL.md)。

用 Iptables 保证树莓派的安全

下一个你应该采取的安全步骤是设置 Iptable。遵循 Securing Your Raspberry Pi With IPTables 文件(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/4-Securing-Your-Raspberry-Pi-With-IPTables.md)来实现这一点。

视频流

如果你遵循了以上步骤,如果它们还没有运行,你需要按照下面的步骤操作。

sudo service motion start

sudo /etc/init.d/motion start

启动 NGINX

sudo service nginx start

sudo /etc/init.d/nginx start

重要的是:这种流式传输是一个新的特性,我们仍然在消除一些扭结,如果你想让 OpenCV 直接访问网络摄像头,而不需要驱动/NGNIX 流,那么在 TASS.py 重取消注释 43 行,注释 44 行和 45 行。

连接证书和传感设置

下一步是在互联网 JumpWay 开发者控制台中安装设备实例。遵循 IoT JumpWay Location Device Doc (https://github.com/TechBubbleTechnologies/IoT-JumpWay-Docs/blob/master/4-Location-Devices.md)来设置你的设备。你将需要设置一个有闭路监控的设备,并且添加了传感器/执行器部分。

检索你的连接证书并用新的连接证书和相机 ID 设置更新配置文件 JSON 文件(你需要在创建它之后进入设备页面以获得正确的摄像头 ID)。

“IoTJumpWaySettings”: {
“SystemLocation”: 0,
“SystemZone”: 0,
“SystemDeviceID”: 0,
“SystemDeviceName” : “Your Device Name”,
“SystemCameraID”:0
}
“IoTJumpWayMQTTSettings”: {
“username”: “Your MQTT Username”,
“password”: “Your MQTT Password”
}

训练你的数据

现在基本构架已经搭建好,是时候用你自己的照片训练你的模型了。当你下载这个 RPO 时,在那个被处理的文件夹中已经有一个经过训练的模型和被处理的图像,但是这个模型不会识别你。你需要选择自己在不同的位置和灯光下的照片。你训练模型的照片越多,它就越精确,如果你的设备没有识别你,你只需要用更多的图像来训练它。

你可以添加你喜欢的图片(这取决于你的树莓派 3 可用的空间),有很多像你这样人。为了将训练数据导航到训练文件夹中并创建目录,目录应该是一个数字,而且不是那个已处理文件夹中的数字。

一旦你建立了图像的文件夹,进入 Tas.Py 文件改变第 34 行(self.train = 0)为 self.train = 1,并启动程序。程序将循环检测你的图像,如果它检测到脸部,它将以模型所需的格式重新创建一个图像,将其保存到匹配文件夹处理后的目录中中,并删除原始图像以节省空间。如果它没有检测到面部,它将简单地删除原始图像,因为它是无效的面部识别。

一旦处理阶段完成,你的新模型将自动开始训练,训练完成后,它将自动运行主面部识别程序。把你的脸放在你连接的摄像头前面,看着程序的输出你是谁。

注意:从处理目录中删除 read me 文件。

执行程序

sudo python/python3 TASS.py

自主物联网通信

当你的设备每次检测到一个人时,设备会把传感器数据传送到 TechBubble IoT JumpWay(https://iot.techbubbletechnologies.com/),当运动传感器检测到入侵者时会发出警报。你可以使用传感器值和警告消息与连接到 IoT JumpWay Location 的其他设备实现自主通信。

在「设备编辑」页面上,向下滚动到「执行器/传感器」下的「创建规则」部分。你可以在这里利用下拉菜单创建规则,允许你的设备发电子邮件给你,或者在状态更新、传感器数据和警告的情况下自主地与其网络上的其他设备进行通信。

查看数据

每次你的设备检测到一个人或一个入侵者,它将发送数据到 TechBubble IoT JumpWay。你将能够访问 TechBubble IoT JumpWay 开发区中的数据(https://iot.techbubbletechnologies.com/developers/dashboard/)。

一旦登录到开发区,访问 TechBubble IoT JumpWay Location Devices Page 页面(https://iot.techbubbletechnologies.com/developers/location-devices),找到你的设备,然后访问传感器/执行器页和警告页,查看从你的设备发送的数据。物联网 JumpWay 树莓派计算机视觉实例缺陷/问题

当你在运行物联网 JumpWay 树莓派计算机视觉实例遇到困难时请保持一种释然,当你遇到麻烦时你也可以在提问区寻求帮助。

物联网 JumpWay 树莓派实例贡献者

TechBubble 科技公司创始人:Adam Milton Barker(https://github.com/AdamMiltonBarker)
TechBubble Technologies Dev 公司:Andrej Petelin(https://github.com/AndrejPetelin)
原文链接:https://www.hackster.io/AdamMiltonBarker/facial-recognition-identification-on-raspberry-pi-1c7495
转自雷锋网:https://club.leiphone.com/page/TextTranslation/624

树莓派常用工具

树莓派官方系统 Raspbian(lite版和桌面版注意分清):

下载地址:https://www.raspberrypi.org/downloads/raspbian/

默认帐号:Username: pi Password: raspberry

镜像烧录工具 Win32diskimager(用来将镜像文件写入 MicroSD 卡):

下载地址:https://sourceforge.net/projects/win32diskimager/files/latest/download

SSH客户端 Putty(远程连入树莓派命令行操作工具):

下载地址:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

WinSCP客户端(远程传输文件到树莓派的工具):

下载地址:https://winscp.net/eng/download.php

SD卡格式化工具:

下载地址:https://www.sdcard.org/downloads/formatter_4/

 

 

Raspbian 中国软件源(2018.7.13版)

使用树莓派 Raspbian 系统的中国用户,通常会遇到从官方站更新和安装软件时候速度比较慢的问题,IoT前哨站整理了一些东亚地区速度比较快的软件源供大家使用(如果有不能用的可通知我们剔除,有新的可信的也可以让我们加进去)。

相关镜像站:

浙江大学
http://mirrors.zju.edu.cn/raspbian/raspbian/

中国科学技术大学
http://mirrors.ustc.edu.cn/raspbian/raspbian/

阿里云
http://mirrors.aliyun.com/raspbian/raspbian/

清华大学
http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/

华南农业大学(华南用户)
http://mirrors.scau.edu.cn/raspbian/

大连东软信息学院源(北方用户)
http://mirrors.neusoft.edu.cn/raspbian/raspbian/

重庆大学源(中西部用户)
http://mirrors.cqu.edu.cn/raspbian/raspbian/

新加坡国立大学
http://mirror.nus.edu.sg/raspbian/raspbian

韩国KAIST大学
http://ftp.kaist.ac.kr/raspbian/raspbian/

使用方式:

编辑/etc/apt/sources.list 文件,参考如下命令:

sudo nano /etc/apt/sources.list

如果是 stretch 版本,用以下内容取代(以此类推):

deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free

# Uncomment line below then ‘apt-get update’ to enable ‘apt-get source’
#deb-src http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi

保存文件后用root权限执行:

apt update即可。

可根据自己的情况选择就近的站点。

 

怎样为树莓派安装Rust开发包和相关实用软件?

随着软件业的蓬勃发展,越来越多的新技术开始呈现在大家面前。比如Golang和Rust这两门计算机编程语言。

Golang可能大家接触的多一些,毕竟容器和区块链等大量开发者在用。稍晚一年出现的Rust,可能有些朋友不熟悉。

Rust是Mozilla主导开发的注重安全、速度和并发的系统级编程语言,随着Rust的成熟,Mozilla开始尝试用Rust开发Firefox的组件,其中包括核心引擎Servo/Project Quantum。

普通PC和Mac电脑咱们这里就不说了,这里讲讲如何在树莓派上安装Rust开发包和那些没有加入“系统软件库”的Rust软件。

这里还是拿出我的Raspberry Pi Zero W。

在确保网络状态良好的情况下,在命令行执行:

sudo curl https://sh.rustup.rs -sSf | sh

默认安装选1即可,它会自动安装稳定版的Rust for ARM。这里可以看到版本号是1.27.0。

安装成功后可以写个hello world试试是否可以正常编译。

cat > hello.rs << EOF

rustc hello.rs

这个命令可以生成二进制文件直接执行。

从图中我们能看到,树莓派已经可以编译rust程序了。然后我们用cargo这个rust包管理工具来安装一个文件搜索工具 —— fd-find。

执行:cargo install fd-find

下载和编译的过程比较漫长。当然,如果你是高性能PC可以很快。单核ARM的话你就慢慢等吧。

差不多一场世界杯足球赛的耗时,终于编译完成了这个fd-find(我这里用了84分 2.69秒)。

最后就是享受劳动成果了,试试这个由Rust语言开发,传说中可取代“find”命令的小工具吧。

速度快,更简洁,支持正则表达式。还可以和其他Shell命令融合。

欢迎大家和我探讨IoT物联网终端上的开发和应用。

版权声明:本文为“IoT前哨站”原创,转载请注明原文作者和出处。