Gravity:WIFI IoT模块测评1——开箱,上手,物联一条龙
感谢主办方慷慨,这次申请到了Gravity:WIFI IoT模块进行测评,现在请您随着这篇文章一起来鸟瞰下这个模块的全景吧。一、开箱:
,,
我们可以看到,秉承DF一贯的风格,模块封装比较好,有个明显的地方是有:UART/I2C字样的切换开关,也就是说,这样模块是支持两种连接方式的,
不过我看介绍里,还有一款只支持 UART连接的,价格是便宜的。不过要买肯定买豪华版{:7_220:}
二、上手:
当我们拿到一个新的DF模块的时候,你首先会干什么?(当然是看看怎么用!)
这里稍微吐槽下: 我看包装上有二维码,以为是直达产品资料库的链接,不过很可惜它指向的是DF的国际版网址。
如果我们想查看使用文档,一般有两种方式:
1. 在DF商城搜这个产品名称: 可以是 TEL0126(包装外壳有带),或者 iot物联网模块,就可以找到模块。
,
点产品文档或者下拉到底,直达说明文档链接。
2. 直接在产品维库里搜TEL0126等也能找到访问链接:
,
https://wiki.dfrobot.com.cn/WiFi_IoT_Module_TEL0126 , 这里有这个模块非常详细的说明。
本文我们采用 Arduino来进行测试,为什么是Arduino有几个原因,一是它比较通用,有代码有真相,第二点主要是
当初使用Arduino的时候没有WIFI功能是一大遗憾,这里就用这个模块弥补遗憾。
按照模块说明文档里的信息,安装好相关库文件后,我们可以直接打开Arduino,进行连接使用,然后来到这里:
,
这里提供了几种不同物联的连接方法,不过Easy_IoT平台是我比较喜欢的一个平台,(这里赞一下)。
我们使用,这个平台进行连接。代码的配置信息很明显,按照参数要求填写几个这里不赘述。
,
不过有个问题要说明下:代码默认是 UART 连接的,如果使用I2C连接,需要把UART的代码注释,并开启I2C的代码,
如上图我的配置。完整代码如下:
#include "DFRobot_WiFi_IoT_Module.h"
#include <SoftwareSerial.h>
//I2C mode
DFRobot_WiFi_IoT_Module_I2C IOT;
//UART mode
//Use software serial port RX:10,TX:11
//SoftwareSerial mySerial(10, 11);
//DFRobot_WiFi_IoT_Module_UART IOT(&mySerial);
//Configure WiFi name and password
const char *WIFI_SSID = "";
const char *WIFI_PASSWORD = "";
//Easy IOT EN configuration
const char *EASY_IOT_SERVER = "iot.dfrobot.com.cn";
//Easy IOT EN configuration
//const char *EASY_IOT_SERVER = "iot.dfrobot.com";
const char *EASY_IOT_PORT = "1883";
const char *EASY_IOT_ID = "";
const char *EASY_IOT_PWD = "";
const char *SUBSCRIBE_TOPIC = "";
const char *PUBLISH_TOPIC = "";
const char *EASY_IOT_SEND_MESSAGE = "Send_Message";
//Set callback function
void callback(const char*topic,const char*message){
Serial.println("Receive [ " + (String)topic + "]," + "Message : " + (String)message);
}
void setup(void){
//Use serial as print serial port
Serial.begin(115200);
//Use softwareserial myserial as communication serial port
// mySerial.begin(9600);
//Init communication port
while(IOT.begin() != 0){
Serial.println("init ERROR!!!!");
delay(100);
}
Serial.println("init Success");
//Connect WiFi
while(IOT.connectWifi(WIFI_SSID, WIFI_PASSWORD) != 0){
Serial.print(".");
delay(100);
}
Serial.println("Wifi Connect Success");
//Initialize MQTT and connect to platform
while(IOT.MQTTBegin(EASY_IOT_SERVER, EASY_IOT_PORT, EASY_IOT_ID, EASY_IOT_PWD) != 0){
Serial.print(".");
delay(100);
}
Serial.println("MQTT Connect Success");
//Set callback function
IOT.setCallBack(callback);
//Subscribe to topics
while(IOT.subscribe(SUBSCRIBE_TOPIC) != 0){
Serial.print(".");
delay(100);
}
Serial.println("Subscribe Topic Success");
}
void loop(void){
// Send data to the subscribed topic.
if(IOT.publish(PUBLISH_TOPIC,EASY_IOT_SEND_MESSAGE) == 0){
IOT.loop();
}else{
Serial.println("Data sending timeout");
}
delay(2000);
}
刷入程序后,打开串口,看到如下字样就表示程序成功,如果有其它问题,请参考输出对照代码解决。
模块的灯,也会有相应的变化,
不过中间,应该还有一种 粉红的灯,没有截图,就此略过。。。
第二吐槽:模块灯太亮,钛金眼受不了。。。,希望可以加个调整亮度的API。。。。
三、物联实现:
为了实现物联,我们这里使用 高精度、响应快、有防尘功能 的Gravity SHT31-F数字温湿度传感器 ,
进行室内温度读取。将 SHT31模块添加到Arduino扩展板的I2C接口上:
刷入以下代码:并观察串口监视器:
#include "DFRobot_WiFi_IoT_Module.h"
#include <DFRobot_SHT3x.h>
#include <SoftwareSerial.h>
DFRobot_SHT3x sht3x;
//I2C mode
DFRobot_WiFi_IoT_Module_I2C IOT;
//UART mode
//Use software serial port RX:10,TX:11
//SoftwareSerial mySerial(10, 11);
//DFRobot_WiFi_IoT_Module_UART IOT(&mySerial);
//Configure WiFi name and password
const char *WIFI_SSID = "";
const char *WIFI_PASSWORD = "";
//Easy IOT EN configuration
const char *EASY_IOT_SERVER = "iot.dfrobot.com.cn";
//Easy IOT EN configuration
//const char *EASY_IOT_SERVER = "iot.dfrobot.com";
const char *EASY_IOT_PORT = "1883";
const char *EASY_IOT_ID = "";
const char *EASY_IOT_PWD = "";
const char *SUBSCRIBE_TOPIC = "";
const char *PUBLISH_TOPIC = "";
const char *EASY_IOT_SEND_MESSAGE = "Send_Message";
//Set callback function
void callback(const char*topic,const char*message){
Serial.println("Receive [ " + (String)topic + "]," + "Message : " + (String)message);
}
void setup(void){
//Use serial as print serial port
Serial.begin(115200);
// set sht3x
while (sht3x.begin() != 0) {
Serial.println("Failed to Initialize the chip, please confirm the wire connection");
delay(1000);
}
Serial.print("Chip serial number:");
Serial.println(sht3x.readSerialNumber());
if(!sht3x.softReset()){
Serial.println("Failed to Initialize the chip....");
}
Serial.println("------------------Read adta in single measurement mode-----------------------");
//Use softwareserial myserial as communication serial port
// mySerial.begin(9600);
//Init communication port
while(IOT.begin() != 0){
Serial.println("init ERROR!!!!");
delay(100);
}
Serial.println("init Success");
//Connect WiFi
while(IOT.connectWifi(WIFI_SSID, WIFI_PASSWORD) != 0){
Serial.print(".");
delay(100);
}
Serial.println("Wifi Connect Success");
//Initialize MQTT and connect to platform
while(IOT.MQTTBegin(EASY_IOT_SERVER, EASY_IOT_PORT, EASY_IOT_ID, EASY_IOT_PWD) != 0){
Serial.print(".");
delay(100);
}
Serial.println("MQTT Connect Success");
//Set callback function
IOT.setCallBack(callback);
//Subscribe to topics
while(IOT.subscribe(SUBSCRIBE_TOPIC) != 0){
Serial.print(".");
delay(100);
}
Serial.println("Subscribe Topic Success");
}
//void setup(void){
//Serial.begin(115200);
//while (sht3x.begin() != 0) {
//
//Serial.println("Failed to Initialize the chip, please confirm the wire connection");
//
//delay(1000);
//
//}
//Serial.print("Chip serial number");
//
//Serial.println(sht3x.readSerialNumber());
//
// if(!sht3x.softReset()){
//
// Serial.println("Failed to Initialize the chip....");
//
// }
//Serial.println("------------------Read adta in single measurement mode-----------------------");
//
//
//}
void loop(void){
//IOT.loop();
//Send data to the subscribed topic.
//if(IOT.publish(PUBLISH_TOPIC,EASY_IOT_SEND_MESSAGE) == 0){
// IOT.loop();
//}else{
// Serial.println("Data sending timeout");
//}
char Temp;
dtostrf(sht3x.getTemperatureC(),1,2,Temp);
Serial.print("Ambient Temperature(°C/F):");
Serial.print(Temp);
Serial.print(" C/");
Serial.print("Relative Humidity(%RH):");
Serial.print(sht3x.getHumidityRH());
Serial.println(" %RH");
//if(IOT.publish(PUBLISH_TOPIC,EASY_IOT_SEND_MESSAGE) == 0){
if(IOT.publish(PUBLISH_TOPIC,Temp) == 0){
IOT.loop();
}
delay(2000);
}
为了展示温度变化,我们可以用手指,轻触传感器,让温度升高,再放掉让温度降低。
,
基本的物联功能,已经实现了。你学废了吗?
下一文,准备用这个WIFI模块实现不一样的功能,尽情期待。
测评报告好评,有速有料 模块设计UART/I2C 两个接口,编程更加方便,文章很详实,学习{:5_116:} 大佬求解,如何用物联网芯片 结合单片机 在网端发送指令 控制单片机?用的DFRDBOT-Gravity物联网芯片可以反馈信息到网端 想知道在网端发送什么样指令可以控制单片机运行舵机 用的也是easy iot平台 kinger 发表于 2021-3-11 21:45
大佬求解,如何用物联网芯片 结合单片机 在网端发送指令 控制单片机?用的DFRDBOT-Gravity物联网芯片可以反 ...
在easy iot 平台后台就可以直接发啊,当然命令解析,自己写。
页:
[1]