0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用树莓派搭建一个物联网运动控制伺服

454398 来源:电子发烧友网编译 作者:Esa 2016-03-21 15:48 次阅读

安全性、可靠的实时数据流是物联网必不可少的两样东西。在见过很多“这边按下去,那边灯就会点亮”这之类的硬件后,我和一个朋友却想做一些明明在操纵它却几乎感觉不到数据流的存在这样更具有互动性的东西!所以,我们决定建立一个可以控制“物”的模型,即模仿你的手部动作,并显示颜色基础上的手指定位的议案。希望在这篇文章的帮助下,你能做出属于自己的硬件产品

概念性的概述和一些更深入的了解可以在PubNub博客中找到相关源代码,完整的代码可在这个GitHub库中查到,和Instructable上“the LED matrix driver circuitry”这篇文章详细介绍了LED矩阵驱动电路如何被写入。

Step 1: 零件和工具

解决这一难题有很多细小的片段,这里尝试列出了一些主要的事情。

零部件及片段

· 树莓派---这里使用V1型B +

· 跳跃运动控制器

· 5V电源

· I2C能的PWM驱动器

· 4个微型舵机 - 便宜的TowerPros即可。

· 4个微型伺服支座

· LED和限流电阻器 –-为达到视觉效果,但非必要。

· 项目机箱 --- 这一个是激光削减Ponoko。

· 螺丝,螺栓,螺母,曲别针 - 和其他类似的东西固定在一起的东西。

· 电缆包裹- --为了保持导线整洁。

· 电源插座,开关和电缆 --- 这样才能传输电能。

· 拨动开关 --- 用于选择伺服输出模式

· 小按钮 ---- 用作的R丕重启/关机按钮

· RGB LED+2×470欧姆的电阻 - 重启/关机指示

· 支座 --- 便于安装各种器件,这些在亚马逊上很多。

· 挂接导线 --- 用于连接。

该RGB矩阵坐在舵机的顶部使用的是定制的驱动程序。该项目的这一部分是相当先进的,Instrucable里对此有专门的描述。

软件与服务

· PubNub - 数据流服务。免费的沙盒模式的开发!

· Java SE的 --- JDK8 - 一定要得到正确的版本为您的操作系统

· 跳跃运动展示台和Java SDK - 再一定要得到你的操作系统的正确软件包。

· PubNub Java SE SDK --- 这需要进入项目库目录

· Java IDE - 用你最喜欢的,比如JGrasp,NetBeans中的IntelliJ,或者Eclipse

· 项目源代码存储库 - 托管在GitHub上

树莓派搭建

· PubNub Python库 - 这是关于树莓派搭建的一个较深入的指南。

· Internet连接 - WiFi或以太网都可以。如果可以ping谷歌,那么也是好去处。

工具之类的

· 计算机 - 写代码,查看Instructables等

· 电钻+钻头/驱动器 - 钻洞,扭螺丝等。

· Dremel旋转刀具 - 用于切割孔,在机箱。。。都某些朋友来说可能没有这个必要。

· 热胶枪 – 请问还有其他粘合方式吗?

· 烙铁+焊接 - 不要吸入油烟!

· 激光切割机 - 同样,我用了一个服务,但你可以DIY,如果你有你自己的机器周围铺设。

· 螺丝刀,钳子 等你现在应该有的这些东西!

Step 2: 项目预览

顶层设计,主要分为三个主要组成部分:

1. 计算机与跳跃运动控制器 -----用于将数据发布到网上。

2. “盒子”里的树莓派- ---从网上订阅数据。

3. PubNub - 通讯层安全地连接这些东西。

计算机部分是很简单的,但在“盒子”有更多一点事。。。

1. 树莓派 - 主控制器,采用采用I2C总线通信

2. ATMEGA328P矩阵驱动电路 - 通过I2C总线接收命令,控制28×8矩阵RGB

3. 基于TLC5916 LED的电路 -- 由ATMEGA328P控制,水槽LED矩阵电流

4. Adafruit PWM驱动器 -----通过I2C总线,驱动4舵机接收命令

5. 5V,5A电源

用树莓派搭建一个物联网运动控制伺服

首先,我们需要设置用户计算机便于使用跳跃运动控制器。

Step 3:Java和跳跃运动控制器设置

Java 设置

我们将使用Java SDK的跳跃运动控制器,因此只需要安装Java开发工具包,其中包括Java运行环境。这是非常简单的,只要根据您的操作系统选择正确的程序包。

不是创建一个安装包,而是直接从Java IDE中运行的源代码。这可以让你自己操作代码,修改,学习!当安装JDK后,你需要一个好的IDE(也就是集成开发环境)。一些常见的诸如Eclipse中的IntelliJ,和NetBeans。你可以随便选一个。每个使用者建立的库是不同的,所以你必须要参考文档了解如何设置一个新的项目!

Java 源代码

只有一个java文件需运行代码,但是也必须安装跳跃运动和PubNub Java库。。。 GitHub的项目库包含一些非常必要的Java文件。

Leap 设置

设置跳跃可有点棘手,并且这个会根据系统不同而不同,而不是逐步完成的。这里不是通过告诉你我如何做到的,而是逐步引导您到相应的文章。哪个地方不懂,可以随时寻求帮助。

1. 下载SDK,驱动程序,和跳跃运动中的应用。

2. 安装跳跃应用,这将会安装任何必要的驱动程序和进程。

3. 运行跳跃运动诊断可视化工具,以确保跳跃的工作。

4. 浏览Java SDK文档,尤其是设置项目。

PubNub 设置

最后一步是下载PubNub Java SDK的,文档页面会讲到如何将库添加到Java项目。

Step 4:Java源代码

如果您对Java代码没有兴趣,你可以跳过这一步;但是,你将至少需要把你的个人PubNub钥匙到代码为它工作!源代码可以在GitHub上查看。

下面是一些入口需要。如果这出现错误,很可能是没有正确安装的SDK库。

用树莓派搭建一个物联网运动控制伺服

要让项目实现Runnable,让所有跳跃活动工作在自己的线程是至关重要的。我们首先设置项目为主,Runnable接口的实现和初始化全局变量便于后面使用。最主要的是要注意:全局变量“CHANNEL”,以及一对主宣称键。

用树莓派搭建一个物联网运动控制伺服

这些字符串是唯一可以改变的值,通道名称可以保留默认的“leap2pi”,也可以是其他一些字母数字值。使用PubNub超过一个信道通信会谈一切,所以要使用一个唯一的名称,以防止不同项目之间的串扰!发布和订阅键,当你注册一个PubNub帐户含有独特的个人标识符可以保证他们的安全性和私有性,这些键防止别人从你的信道(S)交谈,请留意,有可能是在具体使用字符串“leap2pi”,而不是不断的“CHANNEL,”而所有这些情况下应该改变代码的一些地方。

跳跃运动捕获300帧每秒。在每一帧,我们有机会获得非常多的信息,如手指伸直,俯仰,偏航和手势等等。由飞跃俯仰和偏航(手腕云台)返回的值是弧度,这不会帮助我们太多。我们希望这些值转换为通过在框中PWM驱动器接受的格式。我们首先弧度转换为度,然后度到150和600之间,该范围相当于一个伺服的(500 - 2000我们)的典型的工作范围内的可接受的伺服PWM值由12位伺服驱动器来表示。

基本公式是美国2500/(2^13-1)*(伺服最小/最大脉冲宽度),所以[500,2000]我们映射到[150,600]。。。。。。大概在代码中,这些转换是通过以下方法进行处理。

用树莓派搭建一个物联网运动控制伺服

另外,请原谅不正确的伺服和PWM术语中的代码。。。。。。不是每个制作爱好者都是这些学科的专家!

确保您的代码在工作的最好方法是加载PubNub调试控制台。从这里,你可以输入通道名字,同发布和订阅键一样。点击“订阅”,当操作跳跃运动控制器将Java代码运行的时候,公布的数据应显示在消息盒子。

Step 5:树莓派安装

随着Java代码的工作,是时候来设置树莓派订阅数据,并用它来驱动LED和舵机。在已经配置了树莓派有工作的互联网连接,可以是WiFi或以太网,但这部分需要你来完成!如果你需要帮助,可以在PubNub上找找看(前一段时间有人写了一篇)。此外,你可以使用显示器和键盘直接在Pi上完成任何一个步骤,或用SSH远程登录。无论哪种方式都可以,但该项目的最终目标是拥有一个独立的,无头,安装程序会自动运行启动所需的文件。

第一步骤是在安装PubNub Python的SDK。

打开终端,安装以下内容:

用树莓派搭建一个物联网运动控制伺服

嗯,这是很简单的!现在,我们需要得到所有在GitHub的资源库的皮目录中的文件的副本。要做到这一点最简单的方法是使用Git克隆回购,然后删除其他不需要的东西:

用树莓派搭建一个物联网运动控制伺服

现在,leap2pi目录的内容应该与GitHub库Pi目录中的文件相同。最后,我们希望Python脚本在启动运行。这里有两个Python脚本要运行:

用树莓派搭建一个物联网运动控制伺服

这是很简单的,我们只需要编辑一个Linux系统文件作为根用户。首先,确保脚本是可执行的,然后打开rc.local文件进行编辑。

用树莓派搭建一个物联网运动控制伺服

你可以使用任何你喜欢的编辑,我更喜欢VI。该文件的最后一行应该是“exit 0”,即是允许使用该文件的清洁出口和击终端的初始化。这里可以添加任意数量的命令,只要它们运行最后的“exit”命令。

插入以下,正上方的“exit 0”命令:

用树莓派搭建一个物联网运动控制伺服

保存文件,退出,并在开机后,Pi会自动运行这些脚本。而“&&”部分确保每一个命令运行。如果你离开了关,在bash终端将永远载入,所以你会被无限期地锁定您的个人信息的!

Step 6:树莓派与伺服驱动器的连接

用树莓派搭建一个物联网运动控制伺服

树莓派可用于直接驱动伺服系统,但是这需要花些功夫。有一个专用的PWM通道,但我们需要4根导线。因为在软件中可以虚拟,但是,这不是简单的事情。作为一台电脑,树莓派在高层级的处理比低级别的控制好多了。这一步你当然可以使用任何PWM驱动器,但我用这16通道,12位驱动程序的形式Adafruit。是的,这有点过了,这是很容易编程的ATtiny24操作4舵机通过 I2C总线通信。可以创建你自己的,但可能会超出了本指南的范围。

网上很多教程可以帮助你使用这款主板,您将需要一些额外的源代码文件。这些都可以在源代码库的命名文件为“Adafruit”的目录中找到 -。。。。。。”它将会告诉数树莓派如何与PWM驱动器通信。

连接树莓派的板很容易。在树莓派I2C线路上发现插针3和5,但这样的情况下也需要打开I2C通信信道,记得查看。一个重要的输入引脚被标为“OE”,即低电平有效“输出使能”引脚,当此引脚保持低电平伺服系统才会启用,它可以直接连接到地,或者驱动另一个端IO引脚。在这个项目中,实际上也是从ATMEGA328P矩阵驱动电路也采用I2C数据线连接到R派。

在该图中,伺服附着到通道1 PWM驱动的。在项目中,设置像这样的舵机:

用树莓派搭建一个物联网运动控制伺服

Step 7:近观servo.py

Python代码来控制舵机是非常简单的,只要你理解了Python。就个人而言,我没有很喜欢这种语言,但是这是题外话,您可以在GitHub上查看servo.py文件的这个副本。

就像在Java代码中,你需要把你的个人PubNub发布,在这里订阅键,以及通信信道的名称。

该树莓派会做引导执行以下操作:

1.复位AVR矩阵驱动电路。

2.初始化PubNub与你的钥匙。

3.订阅PubNub通道“leap2pi”。

4.永远循环下去,检查输出模式切换(一分钟内多次检查)。

在系统底层,在PubNub库处理所有的工作。这其会调用完成所有的操作,我们只需要指定一些回调 ---- 这是指当事件发生而需要调用的函数。

用树莓派搭建一个物联网运动控制伺服

关于连接回调应该是显而易见的(连接,重新连接,等等),但一个没有将大部分工作是适当命名的“回调”的回调。这个函数实际上在做从订阅频道接收消息这些事。如上所述,该箱具有一对连接到几IO线的滑动开关选择的输出模式。

•镜像 - 机器人将反映你的动作;因此,你的左手反向控制权机器人

•禁用 - 伺服系统会停止响应

•克隆 - 的机器人会克隆你的动作;因此,你的左手直接控制左机器人

这些模式的逻辑还有I2C驱动报表中的回调函数来处理。

值得注意此文件中的唯一项目就是利用GPIO引脚4作为输出。该引脚驱动MOSFET,连接蓝光LED地面阵列的大门。该引脚使能PubNub连接上,这样的LED作为连接指示灯,这是一个无头的设置的一个非常重要的方面 ---- 需要有一些现象表明我们成功地连接到互联网!

Step 8:近观shutdown.py

这个脚本是一个更容易跟随比教上一个,但也同样重要。由于树莓派也作为全功能计算机,应当正确地关闭,只是杀伤力不同,它可能会导致驱动器故障,数据丢失,内存损坏。

为了解决这个问题,我在盒子背面装了RGB LED指示灯的一个简单按钮。持续按一秒以上便可切换蓝色灯光,当按钮松开时会重新启动派。再按住按钮持续几秒钟将导致LED变红,信号完全关闭。

此功能在shutdown.py脚本下完全处理。 “永远的循环”运行的情况下,将发生以下情况:

1.0.25秒休眠状态

2.检查按下一个按钮(引脚上的低状态)

3.重复永远

1.在按钮按下,睡眠1秒

2.重新检查引脚,看看按钮是否仍然被按下

3.如果按钮仍然在举行,我们可能要重新启动?如果没有,请随时查看!

4.设置RGB LED为蓝色

5.睡眠2秒

6.重新检查引脚,看看是否仍然被按下按钮

7.如果按钮仍然在举行,应该关机!

8.设置RGB LED为红色

9.如果没有,重新启动!

Step 9: 构建盒子

在构建此盒子的过程中,朋友Eric在Illustrator中创建一对矢量文件。这些被送到激光切割公司(Ponoko),它给我们送来一束激光切割木块和丙烯酸。这些碎片送回来的时候还很大,但让人有装配他们的喜悦心情。

如果你很小心,可以在丙烯酸(以及木材)钻导向孔,并用细螺钉来安装在一起。如果你不想这样做,可以随意构建你想要的情况,从部件列表支座应该被用来保持牢固地安装到该基座的电路元件,也可以减少一些额外的孔,在包装盒背面安装电源插口,按钮和RGB领导。

最重要的是伺服钻机的安装。当他们在移动的时候,舵机会造成任何重量轻安装框架跌倒或跳来跳去。至关重要的是,他们被牢牢地安装在一个坚固的表面,这里选择了箱子的盖子!

Step 10:完成

有些部分需要进行定制,特别是构建实际的盒子和伺服支架。只要是有创意,大胆的去做吧!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22416

    浏览量

    645754
  • PWM
    PWM
    +关注

    关注

    114

    文章

    4885

    浏览量

    209796
  • 物联网
    +关注

    关注

    2865

    文章

    41524

    浏览量

    358057
  • 树莓派
    +关注

    关注

    113

    文章

    1635

    浏览量

    104670
收藏 人收藏

    评论

    相关推荐

    树莓一个关注的领域是什么?

    ?众多的电子DIY爱好者纷纷猜测,联网?智能家居?可穿戴设别?对于广大电子DIY爱好者的提问,树莓的创始人Eben Upton在次受访
    发表于 09-15 09:51

    树莓初学者?先做做这十项目吧

    就能很好地完成,当然树莓就更不用说了。打造简单的结合运动传感器和压电蜂鸣器的报警系统能够让你更快地了解
    发表于 12-01 17:45

    树莓可发射“炮弹”和实时视频的超级坦克(上)

    通信,它还能用树莓相机捕捉实时视频伺服板:确保有外部电源为伺服供电I2C总共连4条线I2C端口取决于你使用树莓
    发表于 01-15 14:55

    树莓2控制LED灯

    ` 本帖最后由 348081236 于 2016-1-19 16:57 编辑 这个教程教你怎样树莓控制
    发表于 01-19 16:55

    树莓网络控制的船

    ` 本帖最后由 348081236 于 2016-1-20 15:26 编辑 图上的船是由遥控船改造的。它通过互联网控制,可以用来检查人不方便去的下水道,并实时向web浏览器上
    发表于 01-20 15:24

    【Raspberry Pi 3申请】基于树莓3的多项服务搭建与使用

    直以来就是我心中的念想,在去年10月份,在参加全国机器人比赛时,我曾用过树莓做过二维码识别,以下是链接视频链接:http://pan.baidu.com/s/1bnQLqsn 密
    发表于 04-14 14:35

    如何用树莓搭建钓鱼WiFi热点?

    最近在做一个实验,树莓搭建钓鱼WiFi热点,
    发表于 10-11 00:11

    labview软件连接云数据库,实现文件管理,版本更新,联网搭建~~~

    。方案B:在家里或者公司里搭建mySQL数据库,树莓或者NAS都可以。我的是QNAP的N
    发表于 12-28 09:44

    分享款不错的基于树莓Raspberry Pi CM的联网网关方案

    分享款不错的基于树莓Raspberry Pi CM的联网网关方案
    发表于 06-15 07:01

    基于树莓采集网关

    使用.net core 基于树莓采集网关1-基础准备罗里吧嗦:  本人之前直从事的电控工作 就是搞PLC 触摸屏 变频器这些,后台由于换工作接触到了工业
    发表于 07-02 06:13

    树莓联网开发的应用

    从Arduino开始接触电子编程,也就是所谓的联网开发吧。从最初的超声波测距开始,到现在的各种开发,其实直在浪费时间考虑到底哪种技术,
    发表于 08-03 06:38

    如何利用树莓派去设计联网智能小车

    如何利用树莓派去设计联网智能小车?基于树莓
    发表于 08-18 07:22

    如何利用树莓实现联网

    如何利用树莓实现联网
    发表于 10-19 06:58

    通过树莓的GPIO进行串口通讯

    树莓用在了系列智能化改造的项目中,通过树莓的GPIO进行串口通讯,控制智能电量表、水表、电
    发表于 01-13 08:15

    如何利用树莓搭建完整的机器人系统?

    如何利用树莓搭建完整的机器人系统?
    发表于 01-18 06:37