前言
不久前,爱板网收到来自LINKSPRITE的BLE蓝牙开发板并进行了评测,这是一块面向物联网开发的评估板,使用的是蓝牙互联技术。1999 年,Kevin Ashton 首先提出物联网(IOT)这个名词。当时 Ashton 为 P&G,开始引入 RFID 管理 P&G 的供应链。经过十几年的发展,物联网技术已经比较成熟,基于无线通信的产品和方案全面绽放,正逐步进入大众的视线。在IOT的领域,BT、WIFI和ZIGBEE三种技术最为广泛和普及。这三种技术,各有所长,分别适用不同的领域和应用场景,成为物联网无线通信最流行的通信协议。
LinkNode D1是LINKSPRITE推出的另一款物联网开发评估板,使用的是WIFI技术,板载ESP8266EX模块,提供Arduino兼容接口,使用开源社区提供的源代码,可以在Arduino IDE中轻松访问ESP8266EX。
开箱
打开快递包装盒,看到的是一个小巧的包装盒。包装盒设计简洁,正面是LINKSPRITE的LOGO及文字标识。不干胶贴纸上列出了产品型号,编号等信息。当然最重要的是有产品配套的WIKI页面,可以迅速入门,立即体验产品的特色及功能。包装整体感觉就是:醒目、简洁、实用。
图1:包装盒,醒目、简洁、实用
打开包装盒,LinkNode D1映入眼帘。整个PCB基板使用白色油墨覆盖,丝印清晰,整体感觉比较舒服。LinkNode D1整个开发板上元器件数目较少,显得非常宽松,这主要得益于ESP8266模块的高度集成特性。Arduino兼容接口分布在开发板两侧,除此之外,还有一个DC电源接口,可外接9-24V外部DC电源。MICRO USB接口也可以供电,同时还兼有UART通信功能。
图2:开发板正面,上有USB及DC接口,Arduino兼容接口肯定是少了不了
图3:ESP8266模块,高集成度多功能模块
资源
LinkNode D1开发板上主要包含的资源如下
- ESP-8266EX模块
- 11 个数字接口
- 1 个模拟接口
- 1 个MICRO USB接口,可用于供电或通信
- 9-24V 直流外部供电接口
ESP8266EX是乐鑫推出的一款高集成度WIFI芯片,ESP8266EX 高度集成了天线开关,射频 balun,功率放大器,低噪放大器,过滤器,电源管理模块,仅需很少的外围电路。包括前端模块在内的整个解决方案可将所占 PCB 空间降到最低。这也是LinkNode D1上元器件数目这么少的主要原因。
ESP8266EX 内置 Tensilica L106,32 位微型控制器(MCU),具有超低功耗和 16 位 RSIC。CPU 时钟速度高达 80 MHz,最高可达 160 MHz。支持实时操作系统(RTOS)。目前 Wi-Fi 协议栈只用了 20% 左右,其它的都可用于用户编程和开发。ESP8266EX 专为移动设备、可穿戴电子产品和物联网应用而设计,通过多项专有技术实现了最低功耗。ESP8266EX 有三种省电模式:激活模式、睡眠模式和深度睡眠模式。工作温度范围达到 -40°C 到 +125°C。
ESP8266目前广泛用户智能灯具、智能开关等应用场景。
上电
LinkNode D1提供Arduino兼容接口,同时,社区爱好者也将ESP8266的SDK集成到了Arduino IDE中,可以在Arduino IDE中开发ESP8266程序了,听到这个消息有木有激动3秒钟?呃,没有激动?你一定是绝顶高手,请路过!
先安装Arduino IDE,从附录给出的列表去下载并安装,一并安装好ESP8266EX的BSP支持模块,如此这般,不赘述。
接下来通个信,初步熟悉下开发板,如果你不熟悉Arduino IDE,也借此机会好好熟悉一下。
ESP8266自带一个UART通信设备,通过LinkNode D1上的CH340G引出至USB接口,这样板载的MICRO USB接口就同时具有供电及UART通信的功能了。在代码里只需要简单的配置好通信参数,就能实现与PC通信了。
图5:ESP8266外设引脚
测试用代码如下
void setup() {
// put your setup code here, to run once:
pinMode(BUILTIN_LED, OUTPUT);
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly/
digitalWrite(BUILTIN_LED, HIGH);
delay(500);
digitalWrite(BUILTIN_LED, LOW);
delay(500);
Serial.println("Hello, LINK D1");
}
将上述代码编译后下载到开发板。LinkNode D1上的指示灯以1HZ的频率开始闪烁,同时终端窗口会显示来自开发板的消息。
图4:UART通信测试
WIFI
ESP8266EX本质是一个WIFI模块,使用并体验WIFI功能才是重点。
ESP8266EX模块集成了MCU模块在内部,加上一系列的外设模块,其功能框图如下
图5:ESP8266EX功能框图
ESP8266EX主要参数
- 802.11 b/g/n
- Integrated low power 32-bit MCU
- Integrated 10-bit ADC
- Integrated TCP/IP protocol stack
- Integrated TR switch, balun, LNA, power amplifier and matching network
- Integrated PLL, regulators, and power management units
- Supports antenna diversity
- WiFi 2.4 GHz, support WPA/WPA2
- Support STA/AP/STA+AP operation modes
- Support Smart Link Function for both Android and iOS devices
- SDIO 2.0, (H) SPI, UART, I2C, I2S, IR Remote Control, PWM, GPIO
- STBC, 1x1 MIMO, 2x1 MIMO
- MPDU & A-MSDU aggregation & 0.4sguard interval
- Deep sleep power <10uA, Power down leakage current < 5uA
- Wake up and transmit packets in < 2ms
- Standby power consumption of < 1.0mW (DTIM3)
- +20 dBm output power in 802.11b mode
- Operating temperature range -40C ~ 125C
- FCC, CE, TELEC, WiFi Alliance, and SRRC certified
ESP8266EX模块既可以配置为工作站模式,也可以配置为AP模式,还可以配置为二者的组合。ESP8266EX工作在2.4G频段,支持WPA/WPA2加密。
AP模式
下述代码将LinkNode D1配置为AP工作模式,并且可能通过WEB配置来配置SSID及PASSWORD等。
#include <ESP8266WiFi.h> //https://github.com/esp8266/Arduino
//needed for library
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h> //https://github.com/tzapu/WiFiManager
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
//WiFiManager
//Local intialization. Once its business is done, there is no need to keep it around
WiFiManager wifiManager;
//reset saved settings
//wifiManager.resetSettings();
//set custom ip for portal
wifiManager.setAPStaticIPConfig(IPAddress(10,0,1,1), IPAddress(10,0,1,1), IPAddress(255,255,255,0));
//fetches ssid and pass from eeprom and tries to connect
//if it does not connect it starts an access point with the specified name
//here "AutoConnectAP"
//and goes into a blocking loop awaiting configuration
wifiManager.autoConnect("LinkNodeAP");
//or use this for auto generated name ESP + ChipID
//wifiManager.autoConnect();
//if you get here you have connected to the WiFi
Serial.println("connected... :)");
}
void loop() {
// put your main code here, to run repeatedly:
}
编译并下载到开发板后,可以通过手机连接并登录到AP上查看相关信息。
图6:连接到LinkNode AP
图7:WEB配置界面
图8:关于AP的基本信息
实际使用测试,LinkNode D1能够实现AP的基本功能,但功能比较简陋,离真正的AP还差很远,毕竟像OPENWRT之类的设备都有LINUX的支撑,功能丰富程度自是不可同日而语。
好在LinkNode D1的定位也并非是AP,他只不过是收集、传递信息而已。
LINKSPRITE IO
LINKSPRITE IO是一个物联网平台,借助该平台,我们可以在该平台上注册自己的网络结点,通过移动设备来控制这些结点工作。首先到LINKSPRITE IO的网站注册一个用户名,注册好并登录进去。然后创建自己的设备结果,本测试使用到LinkNode D1上的LED灯,通过远程来控制LED灯的亮、灭。
图9:注册一个设备结点
注意两个地方,一个是APIKEY,另一个是DEVICEID,这两个值随注册信息而异,SPRITELINK IO内部使用该值来区分不同的网络节点设备,通信数据包使用JSON格式封装,通过分析提取JSON数据包信息,从而来控制IO状态。下面是测试用代码,注意用自己的ID及KEY替换
#include <ESP8266WiFi.h>
#include <WString.h>
//the library are needed for autoconfig WiFi
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>
// replace with your own API key and device ID,
String apikey = "1114360a-3e2e-4063-b55e-9a40f34b0d28";
const char* deviceID = "0200000013";
const char* server = "www.linksprite.io";
WiFiClient client;
void setup() {
Serial.begin(115200);
pinMode(BUILTIN_LED, OUTPUT);
WiFiManager wifiManager;
wifiManager.setAPStaticIPConfig(IPAddress(192, 168, 99, 200), IPAddress(192, 168, 99, 1), IPAddress(255, 255, 255, 0));
wifiManager.autoConnect("LinkNodeAP");
Serial.print("WiFi Connected ...\n");
Serial.println("WiFi connected");
}
void loop() {
if (client.connect(server, 80)) {
String postStr = "{";
postStr += "\"action\":\"query\",";
postStr += "\"apikey\":\"";
postStr += apikey;
postStr += "\",";
postStr += "\"deviceid\":\"";
postStr += deviceID;
postStr += "\",";
postStr += "\"params\":";
postStr += "[";
postStr += "\"light\"";
postStr += "]";
postStr += "}";
client.print("POST /api/http HTTP/1.1\n");
client.print("Host: ");
client.print(server);
client.print("\nContent-Type: application/json\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);
}
delay(1000);
Serial.println("Store response...");
String request = "";
while (client.available()) {
char c = client.read();
request += c;
}
if (request != NULL)
{
int index1 = request.indexOf(":{");
int index2 = request.indexOf("},");
String param = request.substring(index1, index2 + 1);
Serial.print("The param is ");
Serial.println(param);
if (param.indexOf("off") > 0) {
digitalWrite(BUILTIN_LED, HIGH);
Serial.println("OFF");
} else if (param.indexOf("on") > 0) {
digitalWrite(BUILTIN_LED, LOW);
Serial.println("ON");
}
client.stop();
Serial.println("Waiting...");
delay(2000);
}
}
编译并上传到开发板。为了和LINKSPRITE IO平台连接,选择自己平时上网用的WIFI路由器(注意,不是开发板本身,而是你自己上网用的WIFI路由),连接上上网用的WIFI路由后,就可以通过WEB来控制开发板上的LED灯亮或灭的效果了。下面是测试结果
图10:SPRITELINK IO平台WEB控制效果,此时开发板上的LED灯与WEB上指示状态应当一致
LINKSPRITE IO提供了一个通过JSON数据传递控制的通信机制,这也是大部分网络通信比较常用的格式。和传统的通过CGI网关来通信相比较,这样对结点的开销要求更低,不需要一个独立的WEB服务器来实现信息的收集,大部分工作由LINKSPRITE IO平台完成并处理实现了。
结论
LinkNode D1板载ESP8266EX WIFI通信模块,模块集成了必要MCU及基本的外设,使得开发板的设计非常简洁。ESP8266EX本身提供了丰富的文档,加上官方SDK及各种示例代码,一般用户都能迅速上手,集中精力于功能上的设计。开源社区将ESP8266EX的SDK移植到Arduino IDE环境中,进一步简化了这一过程,Arduino爱好者在不需要更换开发环境的情况下就能集成ESP8266强大的WIFI功能到产品中,无疑是锦上添花!
实际使用过程中发现在将二进制代码上传至开发板的过程中,偶尔会出现类似“error: espcomm_open failed”的错误,具体原因不详,需要重插拔USB接口才能解决错误。估计应该是Arduino IDE与硬件兼容性问题。测试过程中LinkNode D1本身运行稳定,没有出现死机及其它异常情况。
参考资料
- LinkNode D1官方WIKI
- ESP8266EX模块介绍
- Arduino IDE下载
- ESP8266EX SDK,代码
- LINKSPRITE IO官网
原创申明:本文为爱板网原创,谢绝转载!
前言
不久前,爱板网收到来自LINKSPRITE的BLE蓝牙开发板并进行了评测,这是一块面向物联网开发的评估板,使用的是蓝牙互联技术。1999 年,Kevin Ashton 首先提出物联网(IOT)这个名词。当时 Ashton 为 P&G,开始引入 RFID 管理 P&G 的供应链。经过十几年的发展,物联网技术已经比较成熟,基于无线通信的产品和方案全面绽放,正逐步进入大众的视线。在IOT的领域,BT、WIFI和ZIGBEE三种技术最为广泛和普及。这三种技术,各有所长,分别适用不同的领域和应用场景,成为物联网无线通信最流行的通信协议。
LinkNode D1是LINKSPRITE推出的另一款物联网开发评估板,使用的是WIFI技术,板载ESP8266EX模块,提供Arduino兼容接口,使用开源社区提供的源代码,可以在Arduino IDE中轻松访问ESP8266EX。
开箱
打开快递包装盒,看到的是一个小巧的包装盒。包装盒设计简洁,正面是LINKSPRITE的LOGO及文字标识。不干胶贴纸上列出了产品型号,编号等信息。当然最重要的是有产品配套的WIKI页面,可以迅速入门,立即体验产品的特色及功能。包装整体感觉就是:醒目、简洁、实用。
图1:包装盒,醒目、简洁、实用
打开包装盒,LinkNode D1映入眼帘。整个PCB基板使用白色油墨覆盖,丝印清晰,整体感觉比较舒服。LinkNode D1整个开发板上元器件数目较少,显得非常宽松,这主要得益于ESP8266模块的高度集成特性。Arduino兼容接口分布在开发板两侧,除此之外,还有一个DC电源接口,可外接9-24V外部DC电源。MICRO USB接口也可以供电,同时还兼有UART通信功能。
图2:开发板正面,上有USB及DC接口,Arduino兼容接口肯定是少了不了
图3:ESP8266模块,高集成度多功能模块
资源
LinkNode D1开发板上主要包含的资源如下
- ESP-8266EX模块
- 11 个数字接口
- 1 个模拟接口
- 1 个MICRO USB接口,可用于供电或通信
- 9-24V 直流外部供电接口
ESP8266EX是乐鑫推出的一款高集成度WIFI芯片,ESP8266EX 高度集成了天线开关,射频 balun,功率放大器,低噪放大器,过滤器,电源管理模块,仅需很少的外围电路。包括前端模块在内的整个解决方案可将所占 PCB 空间降到最低。这也是LinkNode D1上元器件数目这么少的主要原因。
ESP8266EX 内置 Tensilica L106,32 位微型控制器(MCU),具有超低功耗和 16 位 RSIC。CPU 时钟速度高达 80 MHz,最高可达 160 MHz。支持实时操作系统(RTOS)。目前 Wi-Fi 协议栈只用了 20% 左右,其它的都可用于用户编程和开发。ESP8266EX 专为移动设备、可穿戴电子产品和物联网应用而设计,通过多项专有技术实现了最低功耗。ESP8266EX 有三种省电模式:激活模式、睡眠模式和深度睡眠模式。工作温度范围达到 -40°C 到 +125°C。
ESP8266目前广泛用户智能灯具、智能开关等应用场景。
上电
LinkNode D1提供Arduino兼容接口,同时,社区爱好者也将ESP8266的SDK集成到了Arduino IDE中,可以在Arduino IDE中开发ESP8266程序了,听到这个消息有木有激动3秒钟?呃,没有激动?你一定是绝顶高手,请路过!
先安装Arduino IDE,从附录给出的列表去下载并安装,一并安装好ESP8266EX的BSP支持模块,如此这般,不赘述。
接下来通个信,初步熟悉下开发板,如果你不熟悉Arduino IDE,也借此机会好好熟悉一下。
ESP8266自带一个UART通信设备,通过LinkNode D1上的CH340G引出至USB接口,这样板载的MICRO USB接口就同时具有供电及UART通信的功能了。在代码里只需要简单的配置好通信参数,就能实现与PC通信了。
图5:ESP8266外设引脚
测试用代码如下
void setup() {
// put your setup code here, to run once:
pinMode(BUILTIN_LED, OUTPUT);
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly/
digitalWrite(BUILTIN_LED, HIGH);
delay(500);
digitalWrite(BUILTIN_LED, LOW);
delay(500);
Serial.println("Hello, LINK D1");
}
将上述代码编译后下载到开发板。LinkNode D1上的指示灯以1HZ的频率开始闪烁,同时终端窗口会显示来自开发板的消息。
图4:UART通信测试