Mozilla 推出物联网平台项目 WebThings

Mozilla 物联网团队宣布去年发布的物联网开放平台项目 Project Things 脱离实验阶段,并正式更名为 Mozilla WebThings。

Mozilla 的使命是确保互联网是一个全球公共资源,对所有人开放,所有人都可以访问。互联网将真正把人民放在第一位,个人能获得赋权、安全和独立。而 Mozilla 物联网团队的使命则是创建一种 Web of Things 实现去体现那些价值,帮助推动制定物联网的安全、隐私和互操作标准。

秉承了使命的产物 Mozilla WebThings 志在打破大厂只想绑架消费者使用自家路由器的局面,改变当前物联网生态的破碎现状,从而进一步降低市场物联网设备的售价。此前 Mozilla WebThings 已经历了两年的开发和七个季度的更新,已经引起了开发者和制造商社区的极大兴趣。

WebThings 让用户可以通过网页监控设备,它包括WebThings Gateway和WebThings Framework两个部分。其中,WebThings Gateway 是用于家庭智能网关的软件发行版,专注于隐私、安全和互动;WebThings Framework 可以帮助开发者构建可重复利用的软件组件集。

在宣布推出 WebThings 后,Mozilla 发布了新版本 WebThings Gateway 0.8。新版让用户可以私密记录并监控智能家居设备的数据,还添加了警报、日志的功能和网络设置 UI。

此外,Mozilla 还透露团队正在构建基于 OpenWrt(针对嵌入式设备的 Linux 操作系统)的 WebThings Gateway 版本。该版本将针对消费级无线路由器,本身就可以充当 Wi-Fi 接入点,而不仅仅是作为客户端连接到现有的无线网络。

有兴趣对项目进一步了解,可查阅 WebThings 官网

关于什么是物联网网关:

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

微软发布“VSCode Remote” 让远程开发更自在

近期有很多微软 VSCode 编译器的新闻,最搞笑的是这个:

不过我们这次讲的不是 VSCode 的八卦,而是要给经常做远程调试的开发者介绍一个强力插件:“Remote Development”。

在给树莓派、香橙派等各种开发板做调试的时候,很多人是先登录到板载系统上,然后再开始操作的。

这倒还不是慢的问题,而是原本咱们 PC 或 Macbook 上强大的IDE派不上用场了。

为了解决这个问题,微软推出了“VScode Remote Development”。以便大家直接远程调试,不用再登录后操作了。

目前,Visual Studio Code Remote Development Extension Pack支持SSH、容器、WSL 三种模式。

对应的三个扩展:

Remote – SSH – 通过使用 SSH 打开远程计算机或者VM。

Remote – Containers – 把 Docker 作为你的调试环境。

Remote – WSL – 在 Windows Subsystem for Linux 中,像 Linux 一样开发。

不管你做嵌入式开发还是服务器开发,都可以通过这个插件简化工作。

如图所示,一位在做机器学习的朋友正在用SSH模式远程调试Python代码。

该插件下载地址:

https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack

安装前先确保你电脑上已经有“Visual Studio Code Insiders”。

更多物联网开发资讯,请关注“IoT前哨站”。

在文本冒险游戏中加入道具

上次发了一篇“Python写文本冒险游戏的要点”之后,有的朋友说形式太简单了,能不能在游戏中加入道具?

既然如此,我们这次就来给它升一级。

很多人都玩过“刺激战场”类的游戏,进一个房子就拼命捡枪捡子弹什么的。这些都是游戏人物的重要道具。

下面我们就继续以《回村》为例子,在其中加入道具拾取和过关判定。

先把游戏环境概念图画出来。

1、森林里有牛肉

2、小山里有红酒

3、湖泊边有强盗

获胜判定:

带着牛肉和红酒,避开强盗,回到村庄即获胜。否则游戏继续。

好了,现在就在代码中更新道具和强盗。

代码地址:

https://github.com/IoToutpost/Python_game

Gohome.py是之前的版本,Gohome_v0.2.py是我们加了道具的版本。

需要注意的是,我们现在用字典来存储地点、方向和道具了。这样对于数据读写来说会更方便。

Python中的字典是啥?

字典是Python中唯一内建的映射类型。字典中的值并没有特殊的顺序,但是都存储在一个特定的键(Key)里。键可以是数字、字符串甚至是元组。

字典由多个键及与其对应的值构成的对组成。每个键和它的值之间用冒号(:)隔开,项之间用逗号(,)隔开,而整个字典由一对大括号括起来。字典中的键是唯一的,而值并不唯一。

好了,跑一下试试。

到此,一个简单的RPG游戏算是做好了。

如果想让游戏更好玩,要加的东西还很多。比如战斗元素,生命值,时间……探索无止境。

注:这个系列的文章是写给新手的,高手就不用看了哈。当然,欢迎指导,欢迎分享更有意思的版本。

QEMU 4.0 发布 ARM和RISC-V支持加强

做 IoT 总得做一些设备测试,但身边又不是什么设备都有的。这时候通常需要模拟器或虚拟机来替代一下。

QEMU 是一个纯软件实现的通用模拟器和虚拟机,在业界非常流行。它有三种模式,几乎可以模拟任何硬件设备。

1、Full-system emulation:可在硬件架构上运行任意操作系统

2、User-mode emulation:运行另一个 Linux/BSD 程序

3、Virtualization:接近本机性能运行 KVM 和 Xen 虚拟机。

近日,他们发布了4.0.0版本。

这个版本包含了来自220个作者的3100多次代码提交。

下载地址:
https://www.qemu.org/download/#source

主要更新内容:

  • ARM:实现了一批 ARMv8.X 的扩展,包括 SB、PredInv、HPD、LOR、FHM、AA32HPD、PAuth、JSConv、CondM、FRINT 与 BTI
  • ARM:virt:支持 >255 GB 的 RAM 和 u-boot“noload”镜像类型
  • ARM:改进 ARM PMU 模拟
  • HPPA:支持 TLB 保护 ID 和 TLB 跟踪事件
  • MIPS:支持多线程 TCG 模拟
  • MIPS:对 I7200 I6500 CPU 的模拟支持,基于 QMP 的 CPU 类型查询以及对 SAARI 和 SAAR 配置寄存器的改进支持
  • PowerPC:pseries:模拟支持 XIVE 中断控制器
  • PowerPC:pseries:支持热插拔 PCI 主桥(PHB)
  • PowerPC:pseries:默认情况下启用 Spectre/Meltdown 缓解,同时支持 count-cache-flush 缓解
  • RISC-V:virt:支持 PCI 与 USB
  • RISC-V:  支持 mstatus 的 TSR、TW 和 TVM 字段,FS 字段现在支持三个统计数据(dirty、clean 和 off)
  • RISC-V:内置 gdbserver 通过 XML 文件支持寄存器列表
  • s390:支持 z14 GA 2 CPU 型号,默认情况下启用 Multiple-epoch 和 PTFF 功能
  • s390:vfio-ap:支持热插拔,不再禁止内存膨胀
  • x86:HAX 加速器现在支持除 Darwin 以外的 POSIX 主机,包括 Linux 和 NetBSD
  • x86:可以使用“-kernel”选项启动 Xen PVH 镜像
  • Xtensa:xtfpga:改进了对 Linux(中断分发器,IPI和运行系统)SMP 的支持,支持 SMP 的test_mmuhifi_c3 核心配置
  • Xtensa:支持灵活长度指令扩展(FLIX)
  • GUI:新的’-display spice-app’选项用于配置/启动具有与 QEMU GTK 类似 UI 的 Spice 客户端 GUI。VNC 服务器现在通过 tls-authz/sasl-authz 选项支持访问控制
  • Xen:新的’xen-disk’设备,可以创建 Xen PV 磁盘后端,并为 Xen PV 磁盘后端提供性能改进
  • Network Block Device:改进跟踪与错误诊断,qemu-nbd 新选项 –bitmap、–list 与 –tls-authz
  • virtio-blk 现在支持 DISCARD 和 WRITE_ZEROES

完整更新日志:

https://wiki.qemu.org/ChangeLog/4.0

用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

编译:王文文

英伟达推出平价开发者套件 Jetson Nano,用法类似树莓派

最近,在美国加利福尼亚州举办的英伟达 GPU 技术大会(GPU Technology Conference,GTC)上,英伟达宣布推出一款名为 Jetson Nano,售价99美元的人工智能开发者套件。据了解,Jetson Nano可以为机器人带来足够的AI算力。

Jetson Nano(左)及其开发板(右)

Jetson Nano是一款形状小巧的嵌入式主板,搭载了四核Cortex-A57处理器,128核英伟达Maxwell GPU以及4GB LPDDR 内存。

此外,Jetson Nano还支持一系列流行的AI框架,包括TensorFlow、PyTorch、Caffe、Keras和MXNet,因此大多数算法都属于即插即用型。另外还有一些常见的端口和接口,包括USB A接口和B接口、千兆以太网接口,并且支持microSD存储。

Jetson Nano与英伟达的开源机器人相连

英伟达希望 Jetson Nano 的价位能够让一些新用户接触人工智能硬件开发。英伟达自动化机器副总裁兼总经理Deepu Talla表示:“预计将会有许多制造商都想要进入人工智能领域,但是,这在过去一直无法实现,Jetson Nano将帮助他们做到这一点。

Jetson Nano的价格确实具有竞争力,但它并不是特例。例如,英特尔推出的售价为79美元的Neural Compute Stick(一款基于USB的深度学习推理套件和独立的人工智能加速器),谷歌最近也推出了两款类似的设备,分别是售价150美元的Coral Dev Board单板计算机,以及售价75美元可以为机器学习提供推理能力的Coral USB加速器。

相关视频地址:

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

来自:天极网

让无人机听懂我们说话

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

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

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

之前曾有一款名叫 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前哨站,转载请注明作者和出处。

Linux 基金会宣布红队项目,致力于孵化开源安全工具

谁都想软件有着很高的安全性吧。毕竟,每一天都会有不一样的安全漏洞,从糟糕软件的沼泽中冒出来。

在近期举办的开源领导力峰会上,Linux 基金会宣布了新的红队项目(Red Team Project)。新项目将孵化出开源网络安全工具,帮助开源软件安全性的提高。

对于不在安全领域的人来说,红队可以模仿现实中攻击者追踪系统的方法,是一个公司测试安全软件的有效选择。而红队项目正是开源安全工具的孵化器,这些工具包括了网络攻防(cyber range)自动化、容器化渗透测试工具、二进制风险量化和标准验证程序。

这个项目并非凭空产生,而是基于 Fedora 红队特别兴趣小组。Jason Callaway,现在是谷歌客户工程师,在当时开启了 “Fedora 红队 SIG。红队项目有一些想要构建的漏洞映射工具,同时也想做出 Cyber-ITL 项目的开源实现。

这里提到的网络攻防(Cyber-range),是指模拟黑客攻击的虚拟空间,理论上是在云上进行的。一次网络攻防包括了易受攻击的机器镜像、易受攻击的应用配置,攻击平台,漏洞利用和操作者。用户可以部署黑客脚本,用代表着现实情况的红蓝队进行安全训练。通俗点说,就是用你的安全基础设施进行“战争游戏”。

开源 CTL (Cyber Test Lab)提供给了开源软件一个代码分析的方法。除了可以帮到开发者,终端用户也可以使用 CTL 帮助预防糟糕的二进制文件。

目前可以在 GitHub 上看到红队项目的一些开源信息

来自:开源中国