使用 Arduino Yun 进行数据投放

此教程介绍如何从 Arduino Yun 到 Data Drop 上传数据. 与 Data Drop 连接,Arduino Yun 需要与互联网连接. 注意该功能仅与 Arduino Yun 兼容, 不能用于 Arduino Uno.
设置 Yun 的互联网连接
设置 Arduino Yun 的最简单的方法是将以太网电缆插孔连接到网络. 这样做不需要在 Yun 上设置,也是最可靠的网络连接形式. 请注意,Yun 需要向互联网传出请求,因此如果有防火墙存在的话,您的网络管理员需要允许通过防火墙进行访问.
若要设置 Arduino Yun 使用 Wi-Fi 无线连接,您需要将它设置成连接到您的无线网络. 这个链接有生产厂商提供的有关如何设置的在线文档.
将 Sketch 上传到 Board
将 Arduino Yun 连接到互联网之后,下一步是把自定义的 Wolfram 语言 sketch 上传到 board. 该 sketch 以函数形式向 Data Drop 上传值,使得 Arduino Yun 能够与 Wolfram 语言通讯,并提供 Data Drop 功能.
首先,使用 DeviceOpen 打开与该设备的连接,指定选项 "BoardType""Yun" 启动 Yun 支持.
默认情况下,这将把自定义的 Wolfram 语言 sketch 上传至该设备,因为选项 "InitialUpload" 的默认值为 True. 这将在 Arduino 上启动特殊函数 DatabinAdd.
上传至 Data Drop 的一个先决条件是具有接受所上传数据的 Databin. 它可以是一个事先存在的数据仓,或者通过 CreateDatabin 新建的数据仓.
通过 DeviceExecute 添加数据
DatabinAdd 函数会把指定引脚的当前值添加至仓中的 Data Drop. 若要上传至仓,需要仓的 "UUID" 或者"ShortID",或者仓自身作为选项 "Databin" 的值. 另外,必须指定所要读取的引脚. 它可以使用DeviceExecute 中的选项 "Databin" 指定,或者可以通过 DeviceConfigure 配置为默认的仓.
使用 DeviceConfigure 指定 "Databin",需要重新上传.
现在,调用该函数不需要指定 "Databin".
也可以对 DatabinAdd 函数进行排程;这将从 Wolfram 语言内核以异步方式完成,并将在 Wolfram 语言会话退出后继续. 这通过选项 "Scheduling" 实现. 这里,引脚4的值每隔三秒钟上传至 Data Drop 一次,最多上传10次.
当上传至 Data Drop 时,默认情况下根据所读取的引脚类型,所上传的键名形式为 "DigitalPinX""AnalogPinX". 这可以通过选项 "Key" 更改.
自动上传至 Data Drop
通过向 Arduino Yun 上传 "BootFunction",数据可以自动添加到 Data Drop. 该 "BootFunction" 将在设备开启后立即运行. 这使您可以将任务部署到 Arduino Yun 以上传至 Data Drop,然后删除该设备并实地部署它,让该设备开始自行上传.
设备一旦开启,这将立刻从引脚 "A5" 上传一个单一值.
通过 "Scheduling" 选项对此进行排程,让它在设备开启后按指定日程运行也很容易做到. 这里,自动上传被无限期地设定为每个60秒运行一次.
向 Data Drop 添加自定义数据值
通过 DeviceConfigure"Functions" 选项,从上传至 Arduino Yun 的 C/C++ 代码函数内部向 Data Drop 上传自定义数据也是可能的.
在 sketch 中有三个原型函数可用于向 Data Drop 上传自定义值:DatabinIntegerAddDatabinRealAddDatabinStringAdd,它们全部上传 val 到由 binID 指定的 Databin,并且有 keyNameKey. 这允许您编写自定义的函数,将除了引脚值外的值上传至 Data Drop.
void DatabinIntegerAdd(char * binID, char * keyName, long val)
void DatabinRealAdd(char * binID, char * keyName, double val)
  • DatabinRealAddDatabin 上传 Real 数.
  • void DatabinStringAdd(char * binID, char * keyName, char * val)
  • DatabinStringAddDatabin 上传 String 数.
  • 例如,如果您想要计算引脚的平均值并上传,可以编写一个自定义函数来做到这一点.
    在上传之后,可以使用 DeviceExecute 像调用任何自定义函数一样正常调用该函数.
    它甚至可以通过 "Scheduling" 选项进行排程,来按需调用. 这里,上传将在计算后的未来45秒发生.
    也可以很容易地把该函数改编成 "BootFunction",一旦设备通电则立即自动运行. 这里的选项 "Scheduling" 将该函数配置为每30秒运行一次.