【2016 年最浪漫礼物】像扎克伯格一样,DIY 机器人(附教程)

Facebook CEO 马克·扎克伯格(Mark Zuckerberg)周末在 Facebook 个人页面上撰文,公布了他 2016 年的一大目标:开发能控制家庭环境的人工智能技术。

以下是扎克伯格的文章全文:

每年,我都会接受个人挑战,学习新事物,在Facebook的工作以外获得成长。近年来,我设定的挑战包括每月读两本书,学习中文,以及每天认识一位新朋友。

2016年,我的个人挑战是开发简单的人工智能技术,控制家庭环境,并协助我开展工作。这类似于《钢铁侠》中的人工智能助手贾维斯。

最开始,我将了解市场上已有什么样的技术。随后,我将教会人工智能助手理解我的语音,以控制家中一切,包括音乐、照明和温度等等。我将教会它识别朋友们的面部图片,在朋友们按门铃时让他们进入。我将教会它提醒我,当我没有陪伴着女儿麦柯斯时,她的房间里是否发生了什么事需要我去查看。关于工作,它将通过虚拟现实实现数据可视化,帮助我开发更优秀的服务,更有效地领导我的组织。

每次挑战都有一个主题,而今年的主题就是发明。

在Facebook,我花了很多时间与工程师们合作,开发新产品。深入了解技术项目的细节使我获益良多。关于Internet.org,我们探讨开发太阳能飞机和卫星,提供互联网接入服务;关于Oculus,我们会了解所涉及的控制器或软件的细节;关于Messenger,我们讨论通过人工智能回答你的问题。但自行开发产品将带来完全不同的收获。因此,今年我的个人挑战就是去做这件事。

对我自己来说,编写代码是有趣的智力挑战。我很期待,在经过一年的学习后可以与你们分享。

by 扎克伯格

制作一个贾维斯那样的机器人,自然不是一件容易的事,这篇文章也只是机器人教学入门,很难有“强大”的智能。但是像扎克伯格一样去探索,去好奇,去挑战 2016 的自己,是我们都可以做的事情。

你也可以@身边的某人,让Ta给你做一个可爱的机器人,这是2016年最浪漫的礼物了~

教学全文

制作一个机器人只需要五步:组装机器人;给机器人接线;连接电源 ;安装Arduino软件;给机器人编程。

你想要学习如何制作你自己的机器人吗?有很多种可以DIY的机器人。大部分人想要让一个机器人从A点移动到B点。你完全可以通过模拟分量(analogue components)或者购买初学者工具包来制作机器人。制作机器人是自学电子学和计算机编程的一种非常好的方式。

第一步:组装机器人

1.收集元件。为了制作一个基本的机器人,你将需要一些简单元件。你能从附近的业余爱好者商店或者在线零售店买到大部分元件(如果不是全部的话)。一些基本的工具包也可能包括所有的元件。这款机器人不需要很多的焊料。

Arduino UNO(或者其他的微控制器)

2个连续旋转舵机

2个适合上述舵机的轮子

1个连铸机辊

1个小型无焊料的试验电路板(要找一个每边有两个正负线的电路板)

1个远程传感器(有四脚连接器电缆)

1个包含1个1万欧姆的电阻的按钮开关

1套线对板连接器

1个6 x AA的电池支架,包含一个9V DC插座

1包跨接线或者22 gauge的布线用电线

强力双面胶带或者热粘接剂

2.翻转电池支架,背面朝上。你将会用这个电池支架作为机器人身体的基础

3.将两个舵机与电池支架末端对齐。这应该是电池支架的电线伸出来的末端。舵机应该触到底部,并且每个舵机的旋转部分应该在电池支架的两边。舵机被合理的对齐是很重要的,这是为了让轮子放的直一些。端机的电线应该从电池支架的背部出来。

4.用胶带或胶水黏贴舵机。确定它们被牢牢地粘在一起。舵机的背部应该和电池支架的背部紧紧地贴在一起。

舵机现在应该占了电池支架背部的一半

5.将电路板平行贴在电池支架背部空下的区域上。它应该距离电池支架前端有一点点距离,横向在电池支架两边应该露出一小部分。在下一步之前,确定它粘附的很牢。“A”排应该很接近舵机。

6.将Arduino微控制器粘在舵机的顶部。如果两个舵机放的很合适的话,应该它们之间的接触部分应该有一段平的区域。将Arduino微控制器放在这部分区域上,以使Arduino的USB和电源线朝后(远离电路板)。Arduino的前端应该刚刚与线路板有重叠。

7.将轮子装在舵机上。将轮子紧紧的装到舵机的旋转部分中。这可能需要很大的力量,因为轮子被设计目的就是为了紧紧嵌入舵机来提供最大的牵引力。

8.将连铸辊接在接线板底部。如果你把机身反过来,你应该看到电路板露在外边一点。将连铸辊装到露在外面的部分,必要的话使用冒口。连铸辊的作用是前轮,方便机器人转向。

如果你买了一个工具包,里面可能附带了一些对应连铸辊的冒口,以保证连铸辊接触地面。

第二步:给机器人接线

1.改造两个三脚连接器。你将用这些将舵机连到电路板上。移动针部,让两边距离相等。

2.插入两个连接器到电路板E排的1-3插口和6-8插口。确定它们被牢牢的插入。

3.将舵机电缆连到连接器上,黑色电缆在左边。(接到1口和6口上)。这会将舵机与电路板连接在一起。确定左边的舵机连接到左边的连接器上,右边的舵机连接到右边的连接器上。

4.红色跨接线分别从C2针和C7针连到红色导轨(正级)针上。确定你用的是电路板后部的红色导轨针(red rail)(靠近机身的其他部分区域的红色导轨针)。

5.将黑色跨接线分别从B1针和B6针接到蓝色导轨针(地线)上。确定你用的是电路板后部的蓝色导轨针(blue rail pins)。不要插到红色导轨针上。

6.白色跨接线从Arduino 的针12和针13连接到A3和A8上。这让Arduino控制这些舵机和轮子。

7.将传感器装到电路板前面。它不能插到电路板的外部电源区域中,应该插到第一排J行中。确定你精确地插到了中间区域,两边有数量相等的针数剩余。

8.黑色跨接线连接针I14和传感器左侧第一个可用的蓝色针。这会让传感器接地。

9.黑色跨接线连接针I 17和传感器右侧第一个可用的红色针。这给传感器提供电力。

10.白色跨接线连接针I 15和Arduino上的针9,类似地,再连接针I16和针8。这将传感器的信息提供给微控制器。

第三步:连接电源

1.翻转机身,看到支架中的电池。让其电池支架的电缆线从左下角伸出。

2.用红色的电缆线连接左下角的弹簧。一定要确定电池支架放置正确。

3.用黑色电缆线连接右下角最后一个弹簧。这两个电线给Arduino提供正确的电压。

4.将上述红色和黑色的电线连到电路板最右边红色和蓝色的针上。黑色电线应该插入到蓝色导轨针的针30处。红色电缆线应该插到红色电缆线的针30处。

5.黑色电线连接Arduino上的GND针和电路板后部的蓝色导轨针。蓝色导轨针处连接位置是针28.

6.一个黑色电线连接电路板后部的蓝色导轨针和前部的蓝色导轨针(位置均在针29处)。不要连接红色导轨,因为那样很可能损坏Arduino。

7.连接电路板前部的红色导轨针(针30)到Arduino上的5V针。这将会给Arduino提供电力。

8.在两排的间隔处pin24-26处插入按钮开关。这个开关让你不需要通过拔电源就能关闭机器人。

9.用一根红色线连接H24和传感器右侧下一个可用的针。这会给按钮提供电力。

10.用电阻连接H26和蓝色导轨针。直接将电阻与针连接,并连到几步之前用到的黑色线旁边。

11.用一根白色线连接G26和Arduino的针2处。这让Arduino在按钮那里注册。

第四步:安装Arduino软件

1.下载并提取Arduino IDE。这是Arduino的开发环境,这样,你可以将指令编程并上传到你的Arduino微型控制器中。你可以从arduino.cc/en/main/software网站中免费下载它。解压下载下来的文件,找到该文件夹,不需要安装程序,只需要双击arduino.exe来运行它。

2.将电池架连到Arduino上。给Arduino的连接器接上电池组来为其提供电力。

3.用USB将Arduino接入电脑。Windows很有可能不识别这个设备。

4.按下win+R,并输入“devmgmt.msc”。这会调出设备管理器。

5.右击在“其他设备”选项中的“未知设备”,并选择“更新驱动软件”。如果你没有看到这个选项,点击“属性”,选择“驱动”标签,接着点击“更新驱动”。

6.选择“浏览我的电脑来寻找驱动软件。”选择Arduino IDE中自带的驱动软件。

7.点击“浏览”,接着找到你之前下载并解压好的文件夹。你会在文件夹里找到一个名为“drivers”的文件夹。

8.选择“drivers”文件夹,并点击“确定”。如果你被警告“这是未知软件”,确认你想要继续。

第五步:为机器人编程

1.双击IDE文件夹中的“arduino.exe”启动Arduino IDE。你会看到一个空白的工程。

2. 粘贴以下代码来让你的机器人可以走直线。以下的代码将会让你的Arduino不停地前进。

回复“code1”得到代码

3.构建并上传代码。点击左上角的“向右的箭头”来将代码构建并上传到USB连接着的Arduino。

你可能想要把机器人拿起来,因为一旦代码上传好,它会继续向前移动。

4.增加关闭功能。增加代码(回复“Code2”得到代码)到源代码的“void loop()”部分中来激活关闭功能。具体位置在“void loop()”中“write()”函数上面。

5.上传并测试你的代码。有了增加后的关闭功能,你可以上传并测试机器人了。它应该在你按下按钮之前不停的前进,当你按完后,它会停止。回复“Code3”得到,全部代码。

示例

这里提供一份示例代码,它用了机器人身上的传感器,来让它在遇到障碍时向左转。代码中的注释解释了代码每个部分是用来做什么的。回复“Code4”得到示例代码。

原文发布于微信公众号 - 新智元(AI_era)

原文发表时间:2016-01-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

程序员如何提一个好问题

提出好的问题是在编写软件时的一个非常重要的技能。这么多年来我对此也算略有小成。这里有一些我用着觉得很棒的指导方针!

713
来自专栏刺客博客

SS详解(一):原理

7004
来自专栏腾讯数据中心

你必须认识的数据中心安全标识

行话说“年头出事白干一年,年尾出事一年白干”。临近年关,数据中心“安全”也变得热门了起来。数据中心的人身、物理及信息安全有千头万绪。今天,我们就从数据中心标识系...

4145
来自专栏ThoughtWorks

TW洞见 | 重构是每个程序员的洗髓经

今日TW洞见 文章作者来自ThoughtWorks: 扎西。 本文所有内容,包括文字、图片和音视频资料,版权均属ThoughtWorks公司所有,任何媒体、网站...

2596
来自专栏生信技能树

GTX.Zip--基因领域唯一100%安全无误的企业级压缩大咖!

目前国内约莫有85台illumina的最新版novaseq测序仪,通常可以做到70元/Gbp的单价,一个人重测序标准的30X,也就是(3G X 30)90Gbp...

1242
来自专栏程序人生

Sound of silence: 数据传输的小众黑科技

上周面试了一个来自俄罗斯的 android 工程师。很 geek,对 office 的 binary format(不是后来的 xml format)做过深入的...

2605
来自专栏嵌入式程序猿

学会设计符合IEC60730的产品

现在很多的产品都需要过IEC60730的标准,在产品设计的时候,工程师就应该很好的考虑你的软硬件要求。那么IEC60730到底是什么呢,我们先来原版资料看一下,...

3108
来自专栏轮子工厂

RSS订阅 | 购物者福利,什么值得买?

RSS(Really Simple Syndication,简易信息聚合)是一种定制个性化推送信息的服务。它能解决你漫无目的浏览网页的问题。它不会过时,信息越是...

754
来自专栏Golang语言社区

【Golang语言社区】--无线视频监控传输原理

监视前端一体摄像机安装在圆形防护罩内,内带全方位云台。摄制的图像转换成视频信号传输到微波发射机的调制端,微波发射机将其加载到载波上,经微波天线定向辐射到监控中心...

3979
来自专栏SAP最佳业务实践

从SAP最佳业务实践看企业管理(86)-PP-CTO按订单配置

PP147含变式配置按订单生产 目的: MTO–使用变式配置的销售订单处理业务情景展示的是带预选特征值的变式物料的生产和销售,包括其零部件的生产和采购过程。如果...

2505

扫码关注云+社区