惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
D
DataBreaches.Net
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
V
Visual Studio Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog RSS Feed
Recent Announcements
Recent Announcements
The Register - Security
The Register - Security
S
Secure Thoughts
Y
Y Combinator Blog
The Last Watchdog
The Last Watchdog
L
LINUX DO - 最新话题
V2EX - 技术
V2EX - 技术
腾讯CDC
GbyAI
GbyAI
G
Google Developers Blog
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
T
The Exploit Database - CXSecurity.com
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
Schneier on Security
Schneier on Security
Microsoft Security Blog
Microsoft Security Blog
Jina AI
Jina AI
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
MyScale Blog
MyScale Blog
Help Net Security
Help Net Security
K
Kaspersky official blog
P
Privacy & Cybersecurity Law Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
AI
AI
MongoDB | Blog
MongoDB | Blog
Scott Helme
Scott Helme
J
Java Code Geeks
Engineering at Meta
Engineering at Meta
H
Heimdal Security Blog
H
Help Net Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
云风的 BLOG
云风的 BLOG
Microsoft Azure Blog
Microsoft Azure Blog
S
Security Affairs
TaoSecurity Blog
TaoSecurity Blog
The GitHub Blog
The GitHub Blog
Hacker News: Ask HN
Hacker News: Ask HN
Martin Fowler
Martin Fowler
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Project Zero
Project Zero
T
The Blog of Author Tim Ferriss
Last Week in AI
Last Week in AI

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) micro:bit使用笔记 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事 blockly与结对编程
Hungry Robot - Eat everything
种瓜 · 2018-10-22 · via 夜行人

Stay hungry, Stay foolish

带着Hungry Robot参加北京的maker faire,它可能是全场最受欢迎的robot了。

Hungry Robot是EunchanPark制作的一系列有趣的机器人中的一个。

来自丹麦的EunchanPark喜欢做令人快乐之事,也乐于与社区分享创作的过程。[Happy Things Maker]是Ta的使命。EunchanPark想建立“快乐之物博物馆”,在其中尽可能多地放置令人愉悦之物。这是Ta的100 HAPPY THINGS

Hungry Robot100 HAPPY THINGS之一。

EunchanPark创作Hungry Robot的动机是

I want to make a robot for emotional purpose not for functional. This is fun, makes smile and feels good.

Hungry Robot的外壳采用3D打印制作,控制芯片选用Arduino。这些东西都对社区开放:

我的制作笔记

TrashEatingRobot源码中可以看出,Hungry Robot的控制逻辑十分简单: 当红外测距传感器检测到有物体靠近时(如有人放置硬币),便触发舵机转动,把硬币倒入口中。这就是Hungry Robot的所有控制逻辑。

较之于Arduino,我更喜欢micro:bit,所以决定采用micro:bit来制作Hungry Robot。

开始制作

准备工作

制作Hungry Robot,需要以下素材

  • micro:bit
  • 3D打印的机器人外壳
  • 红外测距传感器模块(夏普 GP2Y0A21YK0F 10-80cm)
  • SG90舵机
  • 尼龙扎带(细)
  • 导线若干

以上物资都可以通过淘宝搞定。除了micro:bit,其他材料都在几块钱到十几块钱之间。

单独说说3D打印的机器人外壳,如果你有3D打印机,直接从Hungry Robot 3D print files中下载模型,打印出来即可。如果你没有3D打印机,可以在淘宝上购买3D打印服务,给店家发去3D打印文件即可。

我采用了光敏树脂,打印出的外壳十分细腻。

组装机器人

如何从一堆零件中,组装出Hungry Robot呢?

Hungry Robot (Eat everything) long take without edit (How to make)给出了细致的引导。

视频在Youtube上,需要翻墙。我已经把它搬运到本地.你可以在此观看

开始编程

我喜欢把对知识的教学放在制作项目的过程中,之前在基于兴趣的学习面临的诘难写道:

当一个孩子有了兴趣和冲动,Ta为了追逐这个兴趣,就需要动手实践。你知道的,魔鬼都在细节里,动手实践的过程总会碰到许多障碍,于是Ta就要熟悉材料,运用独创性、坚持以及机智,这个过程必然包含着各种训练、以及需要教育者提供知识来帮助Ta。

约翰.杜威说:

如果我们有设备和材料的结构,在我们面前就开辟了另一条路径。我们可以指导儿童的活动,使它们沿着一定方向运行,把它们渐渐引导到这条道路逻辑上必然要达到的目标上。

接下来让我们看看制作Hungry Robot,需要熟悉的材料,并在这个过程中学习编程相关的知识。

红外测距传感器

在Hungry Robot中,红外测距传感器用于测距,当检测到有物体靠近时(有人放置硬币),则触发舵机转动。

图中的三条线中:

  • 红色接电源线(Vcc)
  • 黑色接地(GND)
  • 黄色是数据线(Vo),我将其接在micro:bit pin1引脚,你可以选择其他引脚

红外测距传感器通过黄色数据线,对外输出模拟信号(analog signal),制作Hungry Robot并不需要对模拟信号有深入连接,你只需知道红外测距传感器在测距时,会把距离信息对外输出就行。

如果你对模拟信号有兴趣,维基百科是很好的学习入口,无论你对什么有兴趣,维基百科常是入门的好伴侣。

下边我们动手来熟悉一下红外测距传感器。

使用mu-editor作为编辑器,来为micro:bit编程。

mu-editor是一款Python编辑器,我们可以使用Python来为micro:bit编程。当然也可以使用图形化编辑器makecode

连接好电路之后,使用数据线将microbit连上电脑,打开mu-editor,只需要4行代码我们就能源源不断获取红外测距传感器测得的信息

1
2
3
4
5
6
from microbit import *

while True:
    distance = pin1.read_analog()
    print(distance)  # 说明
    sleep(100)

写完代码后,我们需要将代码烧入(flash)到microbit,在编辑器中点击flash即可。microbit背后的信号灯开始闪烁,片刻之后,闪烁停止,代码烧入即已完成。

此时打开编辑器上的REPL按钮,将看到红外测距传感器输出的模拟信号。

repl

这些模拟信号并不是真实的距离。在这个例子中,我们并不需要知道模拟信号如何转化为距离,我们只需要观察模拟信号与距离的关系即可。

mu-editor可以将打印出来的模拟信号绘制成一条曲线

plotter

为了将模拟信号绘制成曲线,需要微调一下代码

1
2
3
4
5
6
from microbit import *

while True:
    distance = pin1.read_analog()
    print((distance,)) # 
    sleep(100)

将distance改为 (distance,)(distance,)是python中的元组。Plotter会将元组中的数据绘制成图像。可以暂时不关心这些,这些只是语法上的约定,对于学习编程没有特别重要。需要时查一下规则就行,不必去记它。

重新烧入(flash),点击Plotter按钮,即可看到红外测距传感器输出的信号被绘制成了图像。如果你观察仔细,会发现信号中存在噪声。

将你的手掌从远到近,逐渐靠近红外测距传感器,你将看到曲线的变化。距离越近,数值越大

演示

经过一番实验,我将临界值设为700. 当我的手离机器人大约10多厘米时,图中数值大约是700。我们用这个数值表达:有东西机器人很近,翻译成你看到的场面就是: 你正把拿着硬币靠近机器人,准备放在它手上。

mu-editor是个非常好的Python编辑器,它使用简单,对初学者友好,很适合用来做一些探索性的实验。

舵机

下边来说说舵机。我们采用SG90舵机,这是使用最广的控制舵机,价格低廉。

如果你对舵机的控制原理有兴趣,可以使用搜索引擎做细致的了解(PWM)。在此我们只需知道,通过编程可以控制舵机转动某个角度就足够了。

SG90舵机如图所示。

sg90

  • 红色: VCC
  • 棕色: GND
  • 橙黄是信号线(脉冲输入)

将舵机的橙黄是信号线接在microbit的pin0上。

最初我完全准备采用Python来实现Hungry Robot的控制逻辑,结果发现,使用Python控制SG90舵机并不方便,社区里有人写了一些通用的源码,来精确控制舵机转动角度,但源码似乎有问题servo.py

最终决定采用makecode来编程。

最终项目

先把最终项目的源码直接放上来,大家可以点击查看

梳理一下代码逻辑:在一个无限循环中,不断检测红外测距传感器测得的距离,当距离小于临界值时(说明有人给它喂食),则调用eat函数,eat函数用于驱动舵机:从180度的位置,转动都60度的位置,再转回去,舵机带动手臂,于是完成了进食。这些角度通过实验来获得。

tips

推荐使用电脑或移动电源为microbit供电,使用5号电池组供电,可能无法驱动电机。

scratch3-dapter版hungry robot

使用scratch3-dapter将hungry robot的舵机接管到scratch3中,如此一来,就可以让hungry robot与所有扩展交互,诸如接入物联网或人工智能。

makecode固件部分的源码

scratch部分的源码为:

在我的例子中,我将hungry robot与声音响度积木结合,当我们给hungry robot喂食时,它无动于衷,只有我们敲敲碗,它才张嘴吃东西。我们于是制作了一个巴布洛夫的robot

后话: 漫游者计划

某天逛树莓派社区,发现NASA(美国国家航空航天局)开放了一个教育项目: JPL Open Source Rover Project。我很喜欢这个项目,但制作这个项目可能得花费我好多个周末的时间。想在青旅(我在南京和朋友一起开了家青旅)中邀请更多的人周末一起来制作这个项目,召集那些对此有热情的人,大家分工协作。如此一来,就不会像大多的个人周末项目,因为遇到困难而放弃。更多的人参与,意味着,更多元的技能,以及更多的碰撞和灵感。好比我极不擅长拼搭的工作,但善于编程。在这个过程里,我就可以观察和学习那些善于拼搭的人,是如何做好这个工作的,同时,我也可以带着那些渴望获得编程技能的小伙伴一起编程。

那我自己是否应该先拼完下整个项目,有了充分把握,再带着大家一起做呢?

我很快否定了这个想法,我并不乐意对项目了然于心,之后作为老师/志愿者带着大家玩。这个过程,不只教学者没有获得成长,学习者也无法看到制作项目的真实过程。制作真实的项目,会遇到困难,需要思考来解决问题。如果有个人充当上帝的角色,什么都懂,也设计了路线,那么其他人只是按照固定的流程在做机械性的工作。这没什么价值。我希望让大家参与到真实项目里。这也是我们吸引志愿者以及有专长的人的原因,他们不只是来做贡献,所有人都将面对未知、获得成长。不喜欢课堂上的那种不真实,我喜欢杜威说的

education as life

生活没有彩排,每天都是现场直播,这正是它有趣且令人充满热情的原因。

漫游者计划希望去实践这些。我这个月底去广州,我们会在天河的中心区域拿下一个办公室,它是可编程的,而且会非常酷。我们在其中创作各种好玩的项目,我们也在其中办公以及交流,我们会开放它,作为漫游者计划的据点之一。

在漫游者计划中。参与者、志愿者、学习者、教师这些角色融为一体。或者说我们不需要这些角色分类,在这儿,只有协作者,即便是一对父母带着他们的孩子前来,他们也是平等的协作者。对参与者的年龄没有限制,多元总是好的,它会带来更多的创意。

我将漫游者计划视为探索codelab.club的一步。它club的一种形式。

其他的club形式会并行运作。诸如邀请制的club,在这种club中,我们每周末的晚上,会进行线下成员聚会,会邀请一些有趣的hacker/maker做分享和交流,大家分享有趣的信息以及各自正在制作的项目。这种club是邀请制,你可以邀请你周围最聪明的朋友加入,但要求申请者有自己的作品,且能展示自己创作和分享的热情。

参考