空中编程 MKR + 好东西:语音控制等
组件和用品
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 1 |
应用和在线服务
![]() |
| |||
![]() |
| |||
![]() |
| |||
![]() |
| |||
|
关于这个项目
概览
我们的贡献有两部分。
第 1 部分: 可重用组件的集合。 它们可以用作构建各种利用有用功能的物联网项目的框架:
- 无线 (OTA) 编程 Arduino MKR1000(即上传编译后的二进制代码)。有几种方法可用:例如从 LAN 内或 Internet 安全地通过 Microsoft Azure IoT 中心。
- 通用 Windows 平台 (UWP) 客户端应用 ,具有漂亮的用户界面。它通过 Azure IoT 中心与董事会安全通信。
- 语音识别 (在客户端应用程序上),通过 Microsoft Project Oxford 提供的语音识别 API。语音命令可用于通过 Azure IoT 中心控制板。
第 2 部分: 使用案例/示例,由上述组件构建:通过电话(UWP 应用)控制的室内恒温器。 我们已经构建了它作为如何使用组件的示例。我们走得更远:我们已经将它安装在我们的办公室里,当我们写这些台词时,办公室供暖系统就是由这个项目控制的。
第 1 部分:OTA 的可重用组件
OTA工作原理
![](https://www.mfgrobots.com/article/uploadfiles/202112/2021122810473950.png?auto=compress%2Cformat&w=680&h=510&fit=max)
我们开发了以下组件:
对于 Arduino IDE:
- 一个运行时库 .它处理固件上传和复制机制。
- 一个自定义“板”包 .它有一些库需要的链接器相关设置。
- 一个 Arduino IDE 插件 .它发送下载信号和编译后的二进制草图(又名固件)。它与开发板、Azure IoT 中心、IoT 调度程序服务器应用程序(参见下文)进行通信。
要安装在第三方服务器上(例如 Microsoft Azure 网站):
- 物联网调度员 ,一个用于存储和提供固件的 PHP + MySQL 应用程序。
UWP 应用工作原理
![](https://www.mfgrobots.com/article/uploadfiles/202112/2021122810473913.png?auto=compress%2Cformat&w=680&h=510&fit=max)
我们开发了:
- 用 C# 编写的 UWP 客户端应用程序。它通过 Azure IoT 中心与董事会通信,并通过 Microsoft Project Oxford 识别口头命令。它可以用作各种项目的起点。
OTA 演示
第 2 部分:用例/示例:室内恒温器
如前所述,我们开发了房间恒温器来演示如何组合我们的组件来构建现实生活中的项目。在我们的案例中,我们甚至将其投入生产,即控制我们办公室的供暖。
逻辑很简单:
- 当温度低于预设温度 => 继电器(即加热)打开
- 当温度高于预设温度 => 继电器/加热关闭
- 用户界面/UWP 客户端:显示状态,并设置预设温度(通过文本框或语音)
![](https://www.mfgrobots.com/article/uploadfiles/202112/2021122810473945.png?auto=compress%2Cformat&w=680&h=510&fit=max)
![](https://www.mfgrobots.com/article/uploadfiles/202112/2021122810473934.jpg?auto=compress%2Cformat&w=680&h=510&fit=max)
![](https://www.mfgrobots.com/article/uploadfiles/202112/2021122810474189.jpg?auto=compress%2Cformat&w=680&h=510&fit=max)
![](https://www.mfgrobots.com/article/uploadfiles/202112/2021122810474415.jpg?auto=compress%2Cformat&w=680&h=510&fit=max)
1. 制作项目(硬件)
![](https://www.mfgrobots.com/article/uploadfiles/202112/2021122810474749.jpg?auto=compress%2Cformat&w=680&h=510&fit=max)
我们不提供弗里茨图,因为我们使用的是 Beta MKR1000。引脚布局将来可能会发生变化。
2. 为 OTA 和 Azure IoT Hub 设置开发环境
- 安装 Arduino IDE,至少 1.6.7 版
- 安装 Arduino SAMD 板。从 Arduino IDE:Tools> Board:...> Boards Manager ...> 选择“Arduino SAMD Boards”
- 在以下位置下载并解压一些库:SKETCHBOOK_DIR(例如 Documents/Arduino)/libraries :WiFi101、AzureIoT、RTCZero。
现在我们的组件:
- 下载并解压 OTA 运行时库 在:SKETCHBOOK_DIR(例如文档/Arduino)/库。
- 下载我们的定制“板”包 .创建一个目录:SKETCHBOOK_DIR(例如 Documents/Arduino)/hardware/flower-platform .在此处解压缩下载的文件。
- 下载Arduino IDE 插件 .创建一个目录:SKETCHBOOK_DIR(例如 Documents/Arduino)/tools。在此处解压缩下载的文件。
对于通过 Internet/HTTPS 的安全 OTA:
- 下载IoT Dispatcher 并将其安装在 PHP + MySQL 服务器上。例如。我们有关于如何在 Microsoft Azure 云中部署的说明。
3. OTA试驾
OTA上传方式有3种。
1) 通过 LAN 尝试 OTA: 文件> 示例> Arduino-FlowerOTA> WiFiOTA .更改用 "// CHANGE ME" 注释的行 相应地,为了配置 IP 地址、WiFi 参数、plain/ssl、服务器签名。然后花卉平台>上传OTA ...
![](https://www.mfgrobots.com/article/uploadfiles/202112/2021122810474876.png?auto=compress%2Cformat&w=680&h=510&fit=max)
![](https://www.mfgrobots.com/article/uploadfiles/202112/2021122810474853.png?auto=compress%2Cformat&w=680&h=510&fit=max)
确保您使用:
WiFiClient 客户端;
和(参见弹出窗口中的“服务器签名”)。
ota.begin(&udp, &client, "1hvtdliHzKLjMykvfW1MfPwsFthUU/YfjN8fOZJ3Qhc=");
注意 :对于所有 3 种方法,您都需要通过 USB 进行初始上传。之后,您可以继续使用 OTA,使用您选择的方法。
2) 通过安全调度程序尝试 OTA , 使用同一个文件:
![](https://www.mfgrobots.com/article/uploadfiles/202112/2021122810474847.png?auto=compress%2Cformat&w=680&h=510&fit=max)
确保您使用:
WiFiSSLClient 客户端;
和
ota.begin(&udp, &client, "my-iot-dispatcher-upload-key"); //参见在 IoT Dispatcher (PHP) 中配置
3) 通过安全调度程序 + Azure IoT 中心尝试 OTA .文件> 示例> Arduino-FlowerOTA> WiFiOTA-AzureIoTHub。再次:不要忘记调整用“// CHANGE ME”注释的行 ”.
![](https://www.mfgrobots.com/article/uploadfiles/202112/2021122810474890.png?auto=compress%2Cformat&w=680&h=510&fit=max)
4) 尝试用例/示例:房间恒温器。 它可以在这里找到。
4. 试驾用户界面(UWP 应用,带 Azure IoT 中心和语音识别)
UWP 项目可在此处获得。需要 Visual Studio 2015 和 Windows 10。
确保更改连接参数 cf.您的 Azure 帐户:
SendCloudToDevice.cs
class SendCloudToDevice { // 改变我:请将下面的常量替换为实际值(取自 Azure 门户) private const string HOST ="???.azure-devices.net"; private const string DEVICE_ID ="???"; private const string DEVICE_KEY ="???";静态字符串 sharedAccessKeyName ="???";静态字符串 sharedAccessKey ="???";
ReadDeviceToCloud.cs
class ReadDeviceToCloud { // 请用实际值(取自 Azure 门户)替换下面的常量 private static string ConnectionString ="???";私有静态字符串 eventHubEntity ="???";
此代码可以作为各种项目的客户端应用程序的起点。您只需要根据您的项目调整用户界面即可。
未来步骤
Arduino MKR1000 等具有合理处理能力和 SSL 通信能力的开发板代表着创客社区向前迈进了一大步。
我们正在继续从这个项目开始的工作,以开发花卉平台物联网,这是一项将极大地加速物联网项目的在线服务:
- 开发:使用 OOP 组件和图形编程语言(可以与手写代码混合);
- 部署:使用 OTA。
利用花卉平台,我们计划创建一个基金会,专注于教幼儿制作和编程物联网项目。
代码
处理固件上传和复制机制的运行时库 (C++)
https://github.com/flower-platform/Arduino-FlowerOTA具有一些链接器相关设置的自定义“板”包,库需要(链接器脚本)
https://github.com/flower-platform/ArduinoCore-samd-OTAArduino IDE 插件。与董事会、调度员和 IoT 中心 (Java) 进行通信
https://github.com/flower-platform/flower-platform-arduino-ide-plugin物联网调度员。存储和提供 OTA 期间所需的固件(PHP + MySQL)
https://github.com/flower-platform/flower-platform-iot-dispatcher房间恒温器用例/示例(C++)
https://github.com/flower-platform/ThermostatIoTUWP 客户端,用于房间恒温器用例/示例(C#、HTML、JavaScript)
https://github.com/flower-platform/thermostat-uwp-ui示意图
我们不提供弗里茨图,因为我们使用的是 Beta MKR1000。引脚布局将来可能会发生变化。![](https://www.mfgrobots.com/article/uploadfiles/202112/2021122810474814.jpg)
制造工艺