如何使用Arduino和node.js?


9

我是Arduino新手,但是我具有Web开发经验,最近我一直在使用流星js和用于不同项目的均值堆栈。但是,我愿意尝试使用任何语言进行开发。

我正在尝试做的是构建一个简单的应用程序,以通过网络控制Arduino上的LED。

我正在与另一个人一起工作,而Arduino将在防火墙后面,因此我不确定如何通过互联网访问它。我确实可以使用Arduino Uun进行家庭测试,该Arduino确实通过桥接器连接了linio,但我对此不太了解。

我也听说过这个,但想走就走从第三方建立尽可能多的,如果我自己能行。

在防火墙后面使用Arduino的常用方法是什么?我该如何使用Arduino Yun?运云容易吗?

Answers:


9

我正在从事类似的项目,该项目使用Internet与外部设备(移动设备)进行通信。我正在从传感器读取数据,并使用Web套接字在Web上传递它们。我正在为此项目使用Arduino Yun和Spacebrew(用于Web套接字通信)。这是非常有趣的方法,但在某些情况下是一个挑战。您可能会遇到异步/同步问题,在我的情况下,这使我不得不在处理代码触发的Yun上运行一些Python脚本。我目前在我的VPN上运行Spacebrew服务器,因此我可以连接留在家里的Yun,并从任何地方使用iphone来获取读数。

还值得一提的是,Yun附带了预安装的Temboo库,这是Web通信的理想起点。该配置非常简单快捷。您还会发现官方文档非常方便并且易于理解。这是尝试与Arduino Yun集成的类似Web的应用程序的绝佳起点。

太空酿造

  • http://docs.spacebrew.cc/

    Spacebrew是一个开放的,可动态重新路由的软件工具包,用于对交互式空间进行编排。或者,换句话说,是一种将交互式事物相互连接的简单方法。连接到系统的每个元素都可以订阅和发布数据提要。

  • http://github.com/Spacebrew/pySpacebrew

    此存储库包含适用于Python的Spacebrew库以及文档和示例应用程序。

  • http://github.com/julioterra/yunSpacebrew

    Spacebrew Yun库具有两个主要组件-在linino上运行的一组python脚本,以及在atmel芯片上运行的库。您可以找到有关如何安装这两个组件的信息,以便可以从Arduino草图连接到Spacebrew。

滕博

Yun还内置了Temboo库,这是开始尝试的好方法,一旦您证明了这一概念,就可以开始缩小环境并在不想使用第三方软件的情况下迁移。

  • http://www.temboo.com/arduino

    使用Temboo库,可以轻松连接到100多种基于Web的资源和服务。当前,您可以找到适用于Android,Arduino,iOS,Java,Node.js,PHP,Processing,Python,REST API,Ruby,Twyla的库

Node.js

您也可以在Yun本身上运行node.js,这是一篇不错的文章,其中包括一些可以安装的软件包:

什么是Arduino Yun的Bridge库?

您还询问了Bridge库。如您所知,Yun有两个处理器,一个正在运行您的处理代码,另一个在上面运行Linux(Linino)。Bridge基本上简化了它们之间的通信,因此它们可以彼此“交谈”,更多信息请参见:

  • http://arduino.cc/en/Reference/YunBridgeLibrary

    (摘自arduino.cc文档:)

    ArduinoYún板上有两个处理器。一个是像Arduino Leonardo一样的ATmega32U4。另一个是运行Linux和OpenWRT无线堆栈的Atheros 9331,它使开发板可以连接到WiFi和以太网。可以通过Arduino调用Linux系统上的程序或自定义脚本,以连接各种互联网服务。

    桥接库简化了ATmega32U4与AR9331之间的通信。它继承自Stream,许多方法应该从Serial和Stream的其他派生类熟悉。

    来自32U4的网桥命令由AR9331上的Python解释。它的作用是在Arduino要求时在GNU / Linux端执行程序,提供共享的存储空间,以在Arduino和Internet之间共享数据(例如传感器读数),并从Internet接收命令并将它们直接传递给Arduino。

    Bridge允许双向通信,充当Linino命令行的接口。

从哪儿开始?

如果您是我,我将从Temboo开始,这是一个很好的学习过程,而且非常简单。您还将学习并了解董事会的工作方式以及如何与“外部世界”进行交流。一旦有了概念证明,就可以尝试使用不同的库并改进方法。也许以后您会发现Spacebrew更方便,甚至发现其他解决方案。


欢迎使用Arduino Stack Exchange!您能否在答案中添加更多详细信息?全部或大部分链接的答案在Stack Exchange上是不可接受的,因为如果站点出现故障,答案将无用。到库的链接很好,因为如果站点出现故障,库将无用。文章和教程应改为:也许只是引用一些句子并添加一些示例代码?谢谢!
匿名企鹅2014年

1

首先,您需要明确需要做什么。Arduino UNO只是具有串行(通过USB)连接的微控制器。为了使您的arduino可以从Internet访问,它需要与Internet连接,或者具有充当桥梁的作用。您可以使用以太网屏蔽,wifi屏蔽或YUN巫婆是arduino UNO +带有以太网和wifi的微型linux(可在phyton中编程,或者芯片可以使用特殊的桥接库命令linux将命令发送到bash外壳) )您甚至可以通过usb在PC上连接arduin并创建桥程序,或者,如果您的防火墙/路由器是未锁定的linux /类似操作系统,则可以使用它。

有多少选择,我们通过事件startint来决定如何与之交谈。当您要使用node.sj时,可以使用套接字或get / post。使用套接字更快,更轻便,并且可以创建拉连接,而js将是必需的。使用get / post甚至不需要js,纯HTML表单就可以了。

然后,在确定您喜欢的女巫系统(arduino作为http服务器或普通套接字)之后,您可以在防火墙/ nat上打开相应的端口。但这只是最后一部分


我有一个云,所以我会用它。我已经通过wifi和ssh连接到yun。如何设置linux服务器,然后如何打开端口?
安德斯·基特森

见官方教程,它已经有一个webv服务器,您只需要添加自己的页面即可:)scuola.arduino.cc/lesson/b4EoRkV/…–
Lesto
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.