Mini Raspberry Pi ——受波士顿动力启发的四足机器人

波士顿动力的机器狗,每次升级都会让大家眼前一亮。

波士顿动力-机器狗

但大家能不能用开源软件DIY一只呢?

一个外国朋友就在Raspberry Pi 3B的基础上开发了“Spot Micro”四足机器人。

树莓派开发的机器狗

通过构建此项目,redditor/thetrueonion(又名Mike)用C++和Python自学机器人软件开发,让机器人行走并掌握速度和方向控制。

Mike受到了Spot的启发,而Spot是波士顿动力公司为工业开发的机器人之一,可以执行远程操作和自主感应。

它如何行走?

迷你“Spot Micro”机器人通过键盘调整三轴角度命令/身体姿势控制模式,可以实现“步行状态”或“小跑状态”。

前者是一种四阶段步态,一次有两条腿对称运动(就像小跑)。

后者是八阶段步态,一次腿部摆动,并且在两者之间进行身体移动以保持平衡(就像人类走路一样)。

在此广泛的演练中,Mike分解了如何使机器人行走,并按顺序将舵机连接到PCA9685控制板。

操作系统和框架

Ubuntu 16.04 + ROS

用到那些零件?


1、树莓派3B
2、舵机控制板:PCA9685,通过I2C控制
3、舵机:12×PDI-HV5523MG
4、液晶面板:16×2 I2C液晶面板
5、电池:2s 4000 mAh锂电池,直接连接至电源伺服器
6、UBEC:HKU5 5V/5A ubec,作为5V稳压器为Raspberry Pi,LCD面板,PCA9685控制板供电
7、“Spot Micro”的Thingiverse 3D打印文件

代码地址:

https://github.com/mike4192/spotMicro

老游戏新写之Jetpac重返地球

主人公流落外星球,遇到一群不讲道理的外星人。想跑路,载具又摔得七零八落。

任务:​顶着外星人的进攻,把宇宙飞船的零件都找回来组装好,然后为其添加燃料。最后安全逃离,重返地球。

这是由Chris和Tim Stamper兄弟于1983年创建的8位机游戏Jetpac里的剧情,也是其工作室Ultimate Play the Game出品的首批热门游戏之一。

8位ZX Spectrum电脑上的Jetpac

而当一个宇航员和Ultimate Play the Game的徽标在屏幕上出现时,你知道之前的等待是值得的(八十年代能有这么个游戏玩已经很激动)。

游戏的角色是不幸的宇航员杰特曼,他必须收集四处散落的零件,制造火箭并为其添加燃料,同时还要与成群的致命外星人战斗。

本文提供的代码片段包含收集火箭零件和燃料,以便杰特曼搭载火箭起飞的技巧。

我们可以对所有屏幕元素和Actor碰撞例程使用内置的Pygame Zero Actor对象,以便处理重力并拾取物品。

首先,我们需要初始化Actor。

我们需要游戏中的主人公杰特曼,地面,火箭的三个零件,还有火箭发动机所需的一些燃料。

每个Actor的行为方式将由一组列表决定。我们有一个重力对象列表,每帧绘制的对象,平台列表,碰撞对象列表以及可以拾取的对象列表。

杰特曼跳进火箭,回家了。欢呼!

我们的draw()函数很简单,因为它循环遍历绘制列表中的项目列表,然后再绘制几个条件元素。

update()功能是所有动作发生的地方:我们检查键盘输入来移动杰特曼,将重力应用于重力列表上的所有项目,检查与平台列表的碰撞,如果杰特曼触摸它,则拾取这个项目(对象),应用对杰特曼的任何推力,并移动杰特曼持有的任何物品随他一起移动。

完成所有操作后,我们可以检查添加的燃料量是否已达到火箭可升空的程度。

如果查看辅助函数checkCollisions()checkTouching(),你会发现它们使用了不同的碰撞检测方法,第一种方法是检查与指定点的碰撞,以便我们可以检测到与actor顶部或底部的碰撞以及触摸冲突是矩形或边界框的冲突,因此如果两个Actor的边界框相交,则会记录一个冲突。

另一个辅助函数applyGravity()使重力列表中的所有元素向下移动,直到Actor的底部撞到碰撞列表上的某物为止。

目前的程序主要就是组装一枚火箭,加满燃料,然后升空。你后续要添加的是一群讨厌的外星人,以及一种用激光枪摧毁它们的方法。

以上就是Mark的Jetpac代码,你可以在这里下载。

https://github.com/IoToutpost/Python_game/

Have fun.

八年无人干预的蜂巢健康监测系统

用技术更好的感知世界,一直是大家追求的目标。

大学毕业后,Glyn Hudson一直忙着创业,成立了一家名叫OpenEnergyMonitor的能源监测公司。

在威尔士的斯诺登尼亚,他接触到几个蜂箱,每年可生产12至15公斤蜂蜜。

作为变温动物,蜜蜂的体温会随着气温而变化。因此,温度是影响蜜蜂生活的重要因素之一。

怎样才能时刻获知蜜蜂当前的生活环境是否适宜?蜂箱里会不会太潮?温度会不会太热?

Glyn打算通过获悉蜂箱内外的温度和湿度,构建一个监测蜂群健康的系统 —— BeeMonitor。

格林(Glyn)在检查BeeMonitor装置
既要监测蜂巢内部的温湿度,也要监测核心温度、周边温湿度、蜂巢外部的温湿度,然后进行比较。
电子组件连接示意图

Glyn解释说:“蜜蜂需要获得更好的帮助和关爱,如果没有它们给植物授粉,我们将很难种庄稼。

为了保持健康的育雏温度,我们要让蜂巢保持33.5-34.5度,而这一温度也是菌落健康的关键指标。”

没有Wi-Fi怎么办

BeeMonitor这套系统在2012年就开始跟踪蜂群的状态,也是Raspberry Pi最早的成功案例子之一。

Glyn自己为BeeMonitor做了大部分工作,而之前为OpenEnergyMonitor项目开发的软件提供了可以在线查看数据记录和图表的平台。

穿着防护服的观众参观 BeeMonitor 蜂箱

蜂箱距离房屋太远,无法通过Wi-Fi传输。因此Glyn装了一个低功耗的RF发射器,该发射器连到蜂巢内部的Arduino,以便进行读数。然后再由远端的Raspberry Pi和另外一个Arduino接收。

该装置的远端部分包括了Arduino,RF接收器,USB电缆和树莓派

这些数据被保存到SD卡,明显的缺点是它不显示实时数据读数。在最初的设定中,Glyn还必须亲自提取和分析CSV数据。

他说:“这非常耗时,但确实产生了一些有趣的数据。”

传感器的取舍

BeeMonitor成功运转后,Glyn意识到数据在Internet上实时传输会更好。这样一来,他就可以从任何地方查看实时的蜂箱数据,还可以让其他人参与其中。

最初,蜂箱内部有一个DS18B20温度传感器和一个DHT22湿度传感器。但Glyn后来决定放弃DHT22湿度传感器。

相关设置方式:

https://learn.openenergymonitor.org/electricity-monitoring/temperature/DS18B20-temperature-sensing

“它消耗了很多电量,而蜜蜂还不喜欢它,一直在用蜂蜡覆盖湿度传感器!奇怪的是,蜜蜂似乎并不介意DS218B20温度传感器,大概是因为与DHT22的塑料格栅相比,温度传感器是圆形的金属物体,” Glyn指出。

与湿度传感器不同,蜜蜂似乎不在乎温度传感器的探头

该系统由一个旧的汽车电池和一个小的太阳能电池板供电,运营成本可以忽略不计。

目前已稳定运行八年,几乎不用人工干预。

“Raspberry Pi非常适合在低功耗状态下可靠地运行此类项目。”Glyn说。

他之所以选择树莓派,是因为硬件背后繁荣的社区。以及有竞争力的价格 —— 整个装置花了他大约50英镑。

相关代码地址:

https://github.com/glynhudson/BeeMonV2

Glyn告诉我们,(如果不考虑联网)仅用树莓派,DS28B20温度传感器,电池组和太阳能电池板结合,就足以打造一个基本的蜂巢监测器。

来源:Raspberrypi.org

编译:王文文

树莓派音乐盒,让你像DJ一样玩音乐

用按钮来控制LED灯,是树莓派比较经典的一种应用。

那用按钮来控制音乐呢?

我们这次的任务是做个树莓派音乐盒,以便你能像DJ一样,通过它不停的切换和调整音乐。

硬件需求:

  • 树莓派1个
  • 面包板1个
  • 接触式开关4个
  • 公对母跳线5根
  • 母对母跳线4根
  • 扬声器或耳机1个

软件需求:

Raspbian 最新版

制作过程:

先找到你想播放的音频文件,如果你自己没有什么准备,可以在Raspbian系统的/usr/share/sonic-pi/samples目录中找一些示例音乐。

不过你要用Python播放声音的话,得将里面的.flac文件转换为.wav文件。

批量转换命令:

for f in *.flac; do ffmpeg -i "$f" "${f%.flac}.wav"; done

如果没出错,你现在应该得到大量的wav文件了。

挑出四个备用,对应4个按钮。将其保存在gpio-music-box目录中

drum_tom_mid_hard.wav
drum_cymbal_hard.wav
drum_snare_hard.wav
drum_cowbell.wav

电路最基本的接法:

当然,用面包板会让你更方便。

示例程序中有四个按钮,所以我们要分别接入GPIO4、10、17、27四个口。

接下来开始撸代码。

import pygame
from gpiozero import Button

pygame.init()

drum = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_tom_mid_hard.wav")
cymbal = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_cymbal_hard.wav")
snare = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_snare_hard.wav")
bell = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_cowbell.wav")

btn_drum = Button(4)
btn_cymbal = Button(17)
btn_snare= Button(27)
btn_bell = Button(10)

btn_drum.when_pressed = drum.play
btn_cymbal.when_pressed = cymbal.play
btn_snare.when_pressed = snare.play
btn_bell.when_pressed = bell.play

以上的代码应该能正常工作,但不够简洁优雅,我们用Python的字典功能来优化一下。

创建一个字典。

button_sounds = {Button(4): pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_tom_mid_hard.wav"),
                 Button(17): pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_cymbal_hard.wav"),
                 Button(27): pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_snare_hard.wav"),
                 Button(10): pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_cowbell.wav")}

然后用Button作为键,Sound作为值。

优化后的代码:

import pygame
from gpiozero import Button

pygame.init()

button_sounds = {Button(4): pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_tom_mid_hard.wav"),
                 Button(17): pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_cymbal_hard.wav"),
                 Button(27): pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_snare_hard.wav"),
                 Button(10): pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_cowbell.wav")}

for button, sound in button_sounds.items():
    button.when_pressed = sound.play

是不是简洁多了?

好了,拿去玩吧。

视频讲解地址:

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

线索:Raspberrypi.org

编译:王文文

你能不损失数百万美元成功登月吗?

对航空知识有兴趣的朋友都知道,飞行器在月球软着陆不是一件容易的事情。

即使在刚刚过去的2019年,印度也没能成功实现该技术,承载着希望的“月船2号”着陆器在距离月球表面2.1公里的时候失去了信号,从此不知所踪。

迄今为止,只有中美俄三个国家实现了月球软着陆。

印度“月船2号”着陆器失联前的直播画面

在阿波罗11号登月十周年纪念日的时候,阿塔里(Atari)公司曾经出了一款名叫“Lunar Lander”的投币式街机游戏。

游戏的玩法是通过方向调整和推力控制来引导你的着陆器,将其轻轻地放到安全而平坦的停靠区。如果玩家能将着陆器成功停放在更具挑战的险峻区域,将获得额外的积分。

街机的版本是有操纵杆的,玩家可以用其控制方向和大小不同的推力,并以屏幕顶部的海拔,水平速度和垂直速度为指导,在燃料有限的情况下按时降落飞船。

游戏内置了四个难度级别,分别调整了着陆控制器和着陆区域,玩家需要凭借高超的技巧才能涉险过关。

我们这次用Pygame Zero来简单还原一下这款游戏,如果你不打算外接操纵杆,用键盘操作也可以。

构思

首先用绘制好的静态背景替换矢量图形,并将其用作碰撞检测和高度统计。

如果我们的背景是着陆器可以飞行的黑色背景,而着陆区所在的地方是另一种颜色,那么我们可以使用Pygame的image.get_at()函数来测试像素点是否在着陆位置。

我们还可以检测着陆器沿Y轴向下的像素线,直到抵达着陆区,这将让我们获悉着陆器当前的高度。

着陆器的控制非常简单,因为我们可以捕获左右箭头键来增加或减少着陆器的旋转角度。

然而当施加推力(通过按向上箭头)时,事情会变得有些复杂。我们需要记住推力来自哪个方向,让飞船即使打转也将继续沿该方向运动。所以我们在着陆器对象上附加了direction属性。对着陆器的位置施加一点重力,然后我们只需要一点三角函数的知识即可根据着陆器的速度和行进方向算出其运动轨迹。

要判断着陆器安全着陆还是在月球表面撞坏,我们要观察其到达高度1时,飞行器的下降速度和角度。

如果速度足够慢且角度接近垂直,则我们触发着陆成功的消息,游戏结束。

如果着陆器在没有满足这些条件的情况下达到零高度,则我们将判定坠机事故。

有兴趣的话,你还可以在此基础上添加一个有限的燃料表和可变的难度级别之类的东西。甚至可以尝试添加原始街机游戏中火箭助推器噪音的声音。

要点:

推力方位的改变可以有多种方法完成。在本例中我们简单一点,一个方向被施加推力,它就逐渐往那个方向移动,直到新的方向出现推力。你可以尝试对其进行X轴和Y轴方向计算,以获得结合点的坐标值。还可以添加操纵杆控制,提供可变的推力。

以下是核心代码段:

接下来看看效果:

视频:https://v.qq.com/x/page/b095944gc59.html

完整代码请访问:https://github.com/IoToutpost/Python_game

调试前记得先安装Pygame Zero。

线索:Wireframe #37

编译:王文文

另类艺术时钟 让你的每一分钟都不同

为了庆祝乔迁之喜,哥本哈根的插画家兼UX设计师Riccardo Cereser为自己的新家做了一个独特的时钟。

这个名为Instaclock时钟的特点是,用特别的图案代替数字,且每分钟显示的图案都不一样。

在哥本哈根互动设计学院学习后,出生于意大利的里卡多(Riccardo)特别想在他的新公寓摆一个能够体现他艺术细胞的东西。

他先是在Photoshop中草拟构想,用图案来代表数字。比如伸出指头的手,类似数字0的车轮,蛋糕上的蜡烛,或录制开始前出现的倒数……

决定将这个idea用于交互式时钟后,他迅速想到了这种基于图案的时钟如何在显示器上展示出来。

接着,Riccardo出发前往哥本哈根。

他回忆道:“我开始拍摄任何类似于数字的东西,目的是根据特定主题创建十张一组的图片集合。如果可能的话,通过使用Instagram来切换主题并随时创建新的图案组合一定很棒。”

这就是该项目为何被称为Instaclock的原因。Riccardo能用Photoshop可视化他的计划,并为他自己的想法制作原型。

让其栩栩如生

接下来要弄清楚如何调用和刷新图案。Riccardo有使用Raspberry Pi的经验,甚至还装了RetroPie游戏机。

他找到交互式设计课上的一个朋友,创意编码人员Andreas Refsgaard,在他的帮助下,Instaclock项目所需要的 Processing sketch 被处理好了。

小提示:Processing是一个为开发面向图形的应用(visually oriented application)而生的简单易用的编程语言和编程环境。Processing的创造者将它看作是一个代码素描本。它尤其擅长算法动画和即时交互反馈,所以近年来在交互动画,复杂数据可视化,视觉设计,原型开发和制作方向越发流行,大家都喜欢这个可爱贴心,简洁好用的编程工具。

Riccardo花了数十个小时的时间研究了如何调用API​​来为自己的时钟提取特定图案,并且在cron中为每个Raspberry Pi设置计划任务参数,以便让Instaclock在启动时就加载图案,每隔十秒钟就切换。

为了让Instaclock尽可能地方便用户使用,他们还添加了一条规则,如果按下屏幕上方的按钮十秒钟或更长时间,则关闭屏幕。该脚本是他从The MagPi获得的。

地址:https://magpi.raspberrypi.org/articles/off-switch-raspberry-pi

组合时间

该项目最有趣的方面之一是有机会拍摄、绘制表示数字的图像。当然,这也是最耗时的。然后还得选择合适的屏幕和盒子来显示它们,如果不想自己做可以去宜家看看。

比如Riccardo就是偶然发现自己的Waveshare屏幕跟店里的Dragan文件整理盒比较适配,才买回去加以改造,做成了我们现在能看到的样子。

项目源代码:https://github.com/IoToutpost/InstaClock

线索:Raspberrypi.org

编译:王文文

无暇逗猫?加激光二极管的树莓派能帮忙

逗猫遛狗是假期必不可少的事情,但人们总要工作或学习,不能一直陪在宠物身边。

可想让猫单独在家也能玩的开心,只给一个毛线球可不够了。

抓激光小红点是猫喜欢的一个游戏,能不能做一个发现猫靠近就自动投射小红点的装置呢?

有个叫Enzo的老外养了一只猫,Enzo平时住在​​公寓里,外出工作时,他的猫Xander会无聊地呆在室内。

为了让猫咪有点娱乐活动,Enzo搞了一个由Raspberry Pi驱动的逗猫项目。

“我们注意到它喜欢追逐激光红点,所以我们决定做一个能让它自己玩起来的激光游戏装置 。” Enzo解释道。

演示视频地址:https://v.qq.com/x/page/i30629h4tyb.html

Enzo给这个装置起名为:Tri-Lasers for Felines。

当PIR运动传感器检测到猫在附近时,该装置会向房间内随机方位发射激光点,供Xander在生成的小红点之间追赶。从上面的演示视频来看,Xander似乎很喜欢这个装置。

云台控制

激光的主要运动轨迹,是通过控制水平和垂直的两个伺服电机处理的。其上层是一块Pan-Tilt HAT控制板。

“一对坐标(x,y)随机生成。” Enzo解释道。

“激光点以状态变量定义的速度从当前点移动到新坐标,并沿着连接两个点的线段移动。到达新坐标后,我们将循环回到第一个点。”

为了给Xander带来更多的趣味,该装置通过在三个激光二极管之间切换,以便非常快速地执行随机运动,频繁的移动红点。

Enzo表示:“在三个有源激光器之间切换,可以使激光点快速运动,从而让光线轨迹产生更多的变化,这对猫来说似乎更愉悦。”

虽然激光点在白天也可见,但在光线较暗的情况下会显示的更好。Xander在房间完全黑暗时很喜欢它。

该装置的三个激光二极管安装在3D打印的三角形支架中,该支架位于Pan-Tilt HAT的丙烯酸支架上,该支架通常用于固定相机。Enzo还设计了PIR传感器的外壳。

猫的日志

除了处理激光移动之外,Python脚本还保存了Xander活动的日志。

“我们会不时的检查一下它的好奇心,” Enzo说。

当Xander还是小猫时,会经常和这个装置一起玩。

现在Xander长大了,比起玩闹,它更喜欢睡觉。Enzo晚上出门的时候会打开这个装置,让自己长时间不在时,Xander也有的玩耍。

有一个问题是,猫是天生的好奇宝宝,很喜欢研究新事物。Enzo说:“我们把逗猫装置放得尽可能高,防止被它碰倒,但猫的爬高技巧非常娴熟,有几次都抓到了设备。因此,保护设备免受猫攻击的最佳方式是使其尽可能的保持静止,从而使猫失去兴趣。”

因此,Enzo将倾角传感器添加到装置中,这样可以让整个装置在Xander好奇的触碰下自动关闭,从而降低了损坏的风险。

相关材料清单:

激光二极管,3个

Raspberry Pi Zero ,1个

Pimoroni Pan-Tilt HAT ,1个

封装好的倾斜开关,1个

PIR运动传感器 (通用版),1个

跳线(通用版) ,10根

普通硬纸盒,1个

可能用到的工具:

3D打印机,电烙铁,热熔枪

该项目的Python代码:

https://github.com/IoToutpost/CatFitBot

这不是Enzo唯一专注于猫科动物的项目,他还构建了IoT食品秤来监控Xander的进餐时间和食用量,并将数据发送到Google Cloud的在线仪表板。

他现在正在研究轮式机器人,可以用摄像头追踪猫并进行一些互动,以便了解Xander会如何应对。

来自:RaspberryPi.org

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

一小时入门Scratch机器学习

一说到人工智能和机器学习,人们总会觉得很高深。除了相关从业者,其他人可能就望而却步了。别说让孩子学,自己都很少看一眼。

其实除了那些涉及算法的专项研究和底层嵌入式开发,还有很多上层应用需要人们开发,去运用。

比如今天我要讲的,一个用Scratch机器学习完成智能化教室控制的演示。

在这个项目中,我们将使用 MachinelearningforKids.co.uk 的在线服务来制作一个智能教室助理,让它对我们所输入的内容作出反应。

首先,我们将创建一个使用规则列表来理解命令的助手。但这种方法比较单调,不是很智能。

而我们这次的重点是让计算机能读懂我们的“弦外之意”。

具体是怎么操作的呢?

首先找一台能联网的计算机,且能正常浏览网页。

在浏览器中打开 machinelearningforkids.co.uk ,然后点击“Get Started”,如果你是中文环境,应该是“开始使用”。

点击“立即尝试”后,+ Add a new project 创建一个项目。

这里先说明一下,该平台是支持中文识别的。但为了方便大家入门,我这里用他们的英文版本做讲解了。

建好之后, 再点击“smart classroom”会看到三个选项,选最后一个 “Make”。

这个时候Scratch要出场了。

选择“ Scratch 3”,然后再点“Open in Scratch 3”。不想自己从零开始,就从“ Project templates”里面选择“智能教室”。

点击箭头处的classroom,然后在代码区输入以下内容:

然后点击“小绿旗”测试一下程序是否正常工作。

挨个输入以下命令,并查看程序的反应:

  • Turn on the lamp
  • Turn off the lamp
  • Turn on the fan
  • Turn off the fan

输入“ Turn on the lamp”的时候,看看画面中的灯是不是真的亮了。

如果你上面的操作都没错的话,你现在已经做好了一个传统的教室电器控制系统。接下来就是我们今天的重头戏了。让计算机经过训练之后,不再呆板的钉是钉,铆是铆。要举一反三,像人类一样理解话语中的含义。

比如有时候我们不一定会说“打开这个电扇!”,而是会感叹“天好热啊。”

那如果是一个聪明的助理,肯定就默默的把电扇打开了,并不需要你一字不差的发号施令。

这个是怎么做的呢?

收集训练样本

首先,你要收集足够多的样本。

回到项目首页,点击第一个“Train”。

然后“ + Add new label ”,添加四个新标签。分别在四个池子里输入要训练的词,这一步相当关键。

在“fan on”这个标签里面,你可以表示房间里太热了。

在“fan off”,你可以抱怨房间里太凉了。

在“lamp on”,你可以表示你看不见。

在“lamp off”,你可以抱怨灯太亮了。

如果还不太理解,就照着图做吧。

样本输入的要点:

1、表达一定要准确,不要在冷的要命的时候还说要更多风。

2、词汇尽量多一些,这样计算机可以理解的也更多。

训练和测试一个机器学习模型

再次返回项目首页, 点击“Learn & Test”, 我们要开始让计算机学习,并测试它的学习效果。

如果你的样本数量比较多,可能要在这个环节多等一会儿。如果就几个,基本上一分钟内就可以测试了。

在箭头处输入你想表达的冷热明暗相关意思,看看计算机是不是都认对了。如果觉得满意,就可以继续下一步了。

在Scratch中使用机器学习

再次回到“Make”,点击“Open in Scratch 3”。

你会发现左下角多了一个块积木,那就是我们刚才让计算机辛勤努力后的成果。用它来改造我们前面的程序。

再次单击绿色小旗,看看程序是不是比之前聪明多了?人性多了?

到现在为止,你的“智能教室助理”基本雏形已经完成,如果有兴趣,可以把电视机、音乐播放机什么的都加上。

小结:

一般情况下,真正智能助理都是可以语音控制的。以后如果想实战相关的内容,可以进行更高阶段的研究,比如和IoT的硬件结合等等。

目前已经有人根据亚马逊的Alexa语音识别功能制作了自己的智能助手。国内也有相关厂商提供类似服务,你也可以试试。

素材:Raspberrypi.org

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

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

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

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

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认证工程师。