MediaTek LinkIt™ Smart 7688 Duo 评测 – 制作冰箱监控器





0/5 (0投票)
LinkIt Smart 7688 Duo - 对于任何需要快速开发物联网原型并希望进入新产品制造和交付阶段的人来说,这是一个不错的开发板。
概述
MediaTek LinkIt ™ Smart 7688 Duo 开发板体积小巧,功能强大。LinkIt Smart 7688 Duo 搭载 OpenWrt Linux 发行版和 580 MHz MIPS 处理器,并辅以 ATMega32U4 Arduino 支持的微控制器。凭借板载 WiFi 支持,该设备真正提供了在如此小巧且经济实惠的开发板上快速构建物联网设备和应用程序所需的一切。
MediaTek Labs 还提供一项名为 Cloud Sandbox 的免费云服务,您可以将数据从原型设备发送并存储到其中。这可以节省大量时间,因为您无需设置和托管自己的云服务器即可确保原型正常运行。此云服务还具备一项功能,可让您定义数据触发器和操作,以便在数据落在特定范围内时收到警报。此外,Cloud Sandbox 还提供了通过 Web 控制台将数据从云端发送到设备的方法,因此您可以实现通过连接到设备的继电器来控制台灯的开关等功能。Cloud Sandbox 确实提供了大量功能,您可以利用这些功能快速启动并运行您的原型。
说到快速启动和运行原型,MediaTek 还提供支持,帮助您将想法变为现实。MediaTek 拥有一个成熟的信任合作伙伴网络,他们可以为您介绍,以通过 其 Partner Connect 计划 将您的物联网设备制造出来并推向消费者。
冰箱监控器
为了熟悉这款开发板,我选择了一个项目,利用这款出色的开发板的 Arduino 和 Linux 功能。该项目是一个冰箱监控器。这将使我能够直观地了解一天中冰箱门打开的次数和时长。我还希望在门打开时收到电子邮件通知,以便查看 Cloud Sandbox 中的图表,了解门打开了多长时间。我保持这个解决方案的实现相当简单。我将把一个光敏传感器(光敏电阻)放入冰箱,并每 1.5 秒将光数据发布到 Cloud Sandbox。此项目还可以解开冰箱灯在关门时是否真的会熄灭的谜团 ;)
入门
开始使用这款开发板非常简单。在 MediaTek Labs 网站 上可以找到完整的指南,该指南将指导您完成将开发板连接到 WiFi、更新固件、将开发板添加到 Arduino IDE 以及运行第一个程序。示例程序演示了如何通过串行控制台,使运行在开发板上的 Arduino 草图能够与运行在 Linux 上的 Python 应用程序通信以闪烁板载 LED。
建立 Arduino 和 Node.js(运行在 Linux 上)之间的通信
这款开发板最大的吸引力之一是它同时支持 Arduino 和 Linux。这意味着您可以选择在一个平台上或另一个平台上进行开发。理想情况下,您可以利用两个平台的优势。
Arduino 积累了大量的免费库,可以与数千种传感器、 breakout 板和 shield 接口。这使得 Arduino 在直接处理硬件方面成为理想的选择。
Linux 在服务器端解决方案方面表现出色。在 Linux 上,您可以托管 Web 服务器、MQTT 代理、数据存储等等。您还可以选择使用任何支持的语言编写应用程序,包括 C、Python 和 Node.js。在本文中,重点将放在 Node.js 上。
核心在于,利用两个平台的能力取决于学习如何它们之间的通信。您可以设置一个 Linux 系统上的 Web 服务器并通过 HTTP 进行通信,但更有效的解决方案是通过串行通信。
为了演示如何通过串行在 Arduino 和 Node.js(运行在 Linux 上)之间进行通信,我们将创建一个简单的计数器应用程序,该应用程序计数到 10。当一个芯片接收到一个数字时,它会增加该值并将其发送回另一个芯片。如果计数器的值超过 10,计数将重新开始。
让我们从 Node.js 端开始。使用 Putty 等 Shell 程序 终端连接到 duo 开发板的 Linux 端。在那里,创建一个新文件夹,并通过执行以下命令导航到该文件夹:
mkdir communication cd communication
现在我们可以初始化一个 Node 应用程序。为此,请执行以下操作:
npm init
回答每个提示(可以将某些答案留空,或按 Enter 接受括号中显示的默认值)。这将创建 package.json 文件,该文件包含描述应用程序的属性,并跟踪模块依赖项。
现在我们准备创建我们的 Node.js 应用程序。使用您喜欢的文本编辑器,创建一个 index.js 文件并将列表替换为以下内容:
// this module is already installed // on the LinkIt Smart 7688 Duo var SerialPort = require("serialport").SerialPort; // Open serial communication to the Arduino var serialPort = new SerialPort("/dev/ttyS0", { baudrate: 57600 }); // when light data is received from the Arduino // send it to the MediaTek Labs Cloud Sandbox serialPort.on('data', function(data) { //receive counter number from Arduino and increment data = Number(data); console.log('Arduino sent: '+ data); var newData = data + 1; if(newData > 10){ newData = 0; } //convert to string and send new count back to Arduino newData = newData +''; console.log('Sending back: '+ newData); serialPort.write(newData); });
通过执行以下操作启动 Node.js 应用程序:
node .
接下来我们将转到 Arduino IDE。请确保它已正确设置 以与 LinkIt Duo 开发板通信。创建一个新草图,并将代码替换为以下内容:
void setup() { // open serial connection to USB Serial //port(connected to your computer) Serial.begin(115200); // open internal serial connection to //MT7688 Linux SOC Serial1.begin(57600); //initiate counting conversation, start at 0 Serial1.print(0); } void loop() { // read from MT7688 if(Serial1.available()) { String received = Serial1.readString(); Serial.println("Received: "+ received); //increment counter int val = received.toInt(); val += 1; if(val > 10) { val = 0; } //send back incremented value Serial.println("Sending: "+ String(val)); Serial1.print(val); delay(1500); //delay 1.5 seconds for user to read the conversation :) } }
将草图上传到开发板,然后观察 Node.js 应用程序通过串行通信与 Arduino 草图进行通信!
现在我们已经建立了 Arduino 和 Linux SoC 之间的双向通信,我们可以继续进行冰箱项目了。
硬件设置
对于这个项目,您需要以下物品:
- LinkIt Smart 7688 Duo
- 2 个面包板(1 个用于 LinkIt 开发板,1 个放入冰箱使用光敏电阻)
- 1 个光敏电阻(光传感器)
- 1 个 10K 欧姆电阻(可以更小,但我想要更高的光读数以确保在检测冰箱门是否打开时的准确性)
- 连接线
- 用于为 LinkIt Smart 7688 Duo 开发板供电的适配器
Fritzing 图
接线详情如下:
- LinkIt 5v 连接到电源轨
- LinkIt GND 连接到 GND 轨
- GND 轨连接到电阻的一端
- 电阻的另一端连接到光敏电阻的一端
- LinkIt A0(模拟引脚 0)连接到电阻/光敏电阻所在的前一行
- 光敏电阻的另一端连接到电源轨
设置 Cloud Sandbox
您需要做的第一件事是登录 MediaTek Labs Cloud Sandbox。我建议创建一个 MediaTek Labs 帐户(如果您还没有),因为这些网站之间具有单点登录功能。
Cloud Sandbox 的结构围绕实现原型应用程序所需的构建块。这些构建块包括一个原型(即项目本身)。原型可以包含任意数量的测试设备。在本例中,测试设备是 LinkIt Smart 7688 duo 开发板。为了使测试设备和原型项目之间能够进行数据通信,需要创建一个数据通道。
我们的云原型最终将如下图所示。在接下来的几节中,我们将构建我们在 MediaTek Labs Cloud Sandbox 中的原型。
创建云原型
需要创建的第一个构件是您原型的注册。在控制台的开发部分,创建一个新原型,我创建了如下所示的原型:
定义数据通道
下一个必需的构件是数据通道。在原型记录中,找到表单底部附近,单击以添加数据通道。
选择 Display 模板,这是用于将数据从设备发送到云端以在线可视化的模板。
最后,按如下方式定义您的通道:
在云中创建设备
现在我们需要创建一个设备,以便发送上来的数据能够与发送数据的物理设备匹配。从您的原型详细信息页面单击“创建测试设备”。
最后,按如下方式定义您的设备:
您刚刚创建的设备将被分配一个设备 ID 和设备密钥。从测试设备的详细信息页面获取这些值,因为您将在接下来的源代码中用到它们!
定义电子邮件触发器
为了在云中设置我们的项目,我们需要做的最后一件事是定义电子邮件触发器。在原型详细信息页面,选择“触发器和操作”选项卡,然后选择“添加触发器和操作”。
按如下方式定义触发器:
现在触发器将显示在列表中:
源代码
将以下源代码加载到您的设备。 使用 Arduino IDE 加载草图,并使用 WinSCP 等程序将 Node.js 文件移动到 LinkIt Smart 7688 Duo。
Arduino 草图 – fridgeMonitor.ino
int lightSensorPin = 0; //A0 void setup() { Serial.begin(9600); //Arduino IDE console, when running tethered to the computer Serial1.begin(57600); // open internal serial connection to MT7688 pinMode(lightSensorPin, INPUT); } void loop() { int val = analogRead(lightSensorPin); // read the input pin Serial.println(val); Serial1.print(val); //send to MT7688 (node app) delay(1500); //delay 1.5 seconds } app.js – Node.js main application file // npm install mcjs var mcs = require('mcsjs'); // this module is already installed // on the LinkIt Smart 7688 Duo var SerialPort = require("serialport").SerialPort; var dataChannel = "[YOUR DATA CHANNEL NAME HERE]"; // define the communication channel to the // MediaTek Cloud Sandbox var deviceCommChannel = mcs.register({ deviceId: '[YOUR DEVICE ID HERE]', deviceKey: '[YOUR DEVICE KEY HERE]', host: 'api.mediatek.com' }); // Open serial communication to the Arduino var serialPort = new SerialPort("/dev/ttyS0", { baudrate: 57600 }); // when light data is received from the Arduino // send it to the MediaTek Labs Cloud Sandbox serialPort.on('data', function(data) { deviceCommChannel.emit(dataChannel, '', data); console.log('data sent: '+ data); }); package.json – Node.js project description and dependencies file { "name": "fridgemonitorjs", "version": "1.0.0", "description": "identifies when the fridge door is opened", "main": "server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Carey Payette", "license": "ISC", "dependencies": { "mcsjs": "0.0.4" } }
运行项目
您需要做的第一件事是将传感器放入冰箱。我使用了两个单独的面包板,因为我不想把开发板放在冰箱里,也不想把粗电源线引入冰箱。
只需细线即可引入冰箱连接到第二个放置传感器的面包板。
第二个面包板放置在冰箱中,准备检测开门时的光线变化。
为开发板通电,然后终端进入 Linux 系统,并创建一个文件夹来存放 Node.js 应用程序。
mkdir fridgeMonitor
将 app.js 和 package.json 复制到该文件夹。然后,我们将需要为应用程序安装依赖项。在 package.json 文件中,您可以看到 mcsjs 包是一个依赖项。该包包含一个用于与 MediaTek Labs Cloud Sandbox 通信的 API。要在项目文件夹内安装此依赖项,请执行以下操作:
npm install
最后,通过执行以下操作运行应用程序:
node app.js
现在您可以开始观看数据流入了(是的,我跑到冰箱去开门了!)
如果您返回 Cloud Sandbox 并调出测试设备详细信息,您将看到一个正在更新最新读数的图块,并且可以显示注册数据点的历史图表。
我检查了与我的 MediaTek Labs 用户帐户关联的电子邮件,并收到了多个来自电子邮件触发器的邮件。
结论
我发现 LinkIt Smart 7688 Duo 是一款非常强大的开发板。最初我在尝试设置 Wi-Fi 连接时遇到了一些问题,但很快就克服了这一障碍(所以如果 http://mylinkit.local 对您不起作用,请在连接到开发板的热点时使用 IP 地址 http://192.168.100.1)。由于其低廉的价格和 Cloud Sandbox,它对于发明家实现其物联网原型来说是一个有吸引力的选择。此外,MediaTek 通过 Partner Connect 计划提供的支持将有助于确保未来的物联网产品得到彻底、准确和可靠的开发。我绝对推荐这款开发板给任何需要快速开发物联网原型并希望进入新产品制造和交付阶段的人。