2647浏览
查看: 2647|回复: 5

Gravity:WIFI IoT模块测评1——开箱,上手,物联一条龙

[复制链接]
感谢主办方慷慨,这次申请到了Gravity:WIFI IoT模块进行测评,现在请您随着这篇文章一起来鸟瞰下这个模块的全景吧。

一、开箱:

Gravity:WIFI IoT模块测评1——开箱,上手,物联一条龙图4Gravity:WIFI IoT模块测评1——开箱,上手,物联一条龙图5Gravity:WIFI IoT模块测评1——开箱,上手,物联一条龙图3

我们可以看到,秉承DF一贯的风格,模块封装比较好,有个明显的地方是有:UART/I2C字样的切换开关,也就是说,这样模块是支持两种连接方式的,
不过我看介绍里,还有一款只支持 UART连接的,价格是便宜的。不过要买肯定买豪华版

二、上手:
当我们拿到一个新的DF模块的时候,你首先会干什么?(当然是看看怎么用!)

这里稍微吐槽下: 我看包装上有二维码,以为是直达产品资料库的链接,不过很可惜它指向的是DF的国际版网址。

如果我们想查看使用文档,一般有两种方式:
1. 在DF商城搜这个产品名称: 可以是 TEL0126(包装外壳有带),或者 iot物联网模块,就可以找到模块。
Gravity:WIFI IoT模块测评1——开箱,上手,物联一条龙图1
点产品文档或者下拉到底,直达说明文档链接。
2. 直接在产品维库里搜TEL0126等也能找到访问链接:
Gravity:WIFI IoT模块测评1——开箱,上手,物联一条龙图2,
https://wiki.dfrobot.com.cn/WiFi_IoT_Module_TEL0126 , 这里有这个模块非常详细的说明。
本文我们采用 Arduino来进行测试,为什么是Arduino有几个原因,一是它比较通用,有代码有真相,第二点主要是
当初使用Arduino的时候没有WIFI功能是一大遗憾,这里就用这个模块弥补遗憾。

按照模块说明文档里的信息,安装好相关库文件后,我们可以直接打开Arduino,进行连接使用,然后来到这里:
Gravity:WIFI IoT模块测评1——开箱,上手,物联一条龙图6

这里提供了几种不同物联的连接方法,不过Easy_IoT平台是我比较喜欢的一个平台,(这里赞一下)。
我们使用,这个平台进行连接。代码的配置信息很明显,按照参数要求填写几个这里不赘述。
Gravity:WIFI IoT模块测评1——开箱,上手,物联一条龙图7

不过有个问题要说明下:代码默认是 UART 连接的,如果使用I2C连接,需要把UART的代码注释,并开启I2C的代码,
如上图我的配置。完整代码如下:

  1. #include "DFRobot_WiFi_IoT_Module.h"
  2. #include <SoftwareSerial.h>
  3. //I2C mode
  4. DFRobot_WiFi_IoT_Module_I2C IOT;
  5. //UART mode
  6. //Use software serial port RX:10,TX:11
  7. //SoftwareSerial    mySerial(10, 11);
  8. //DFRobot_WiFi_IoT_Module_UART IOT(&mySerial);
  9. //Configure WiFi name and password
  10. const char *WIFI_SSID                = "";
  11. const char *WIFI_PASSWORD            = "";
  12. //Easy IOT EN configuration
  13. const char *EASY_IOT_SERVER          = "iot.dfrobot.com.cn";
  14. //Easy IOT EN configuration
  15. //const char *EASY_IOT_SERVER        = "iot.dfrobot.com";
  16. const char *EASY_IOT_PORT            = "1883";
  17. const char *EASY_IOT_ID              = "";
  18. const char *EASY_IOT_PWD             = "";
  19. const char *SUBSCRIBE_TOPIC          = "";
  20. const char *PUBLISH_TOPIC            = "";
  21. const char *EASY_IOT_SEND_MESSAGE    = "Send_Message";
  22. //Set callback function
  23. void callback(const char*topic,const char*message){
  24.   Serial.println("Receive [ " + (String)topic + "]," + "Message : " + (String)message);
  25. }
  26. void setup(void){
  27.   //Use serial as print serial port
  28.   Serial.begin(115200);
  29.   //Use softwareserial myserial as communication serial port
  30.   // mySerial.begin(9600);
  31.   //Init communication port
  32.   while(IOT.begin() != 0){  
  33.     Serial.println("init ERROR!!!!");
  34.     delay(100);
  35.   }
  36.   Serial.println("init Success");
  37.   //Connect WiFi
  38.   while(IOT.connectWifi(WIFI_SSID, WIFI_PASSWORD) != 0){  
  39.     Serial.print(".");
  40.     delay(100);
  41.   }
  42.   Serial.println("Wifi Connect Success");
  43.   //Initialize MQTT and connect to platform
  44.   while(IOT.MQTTBegin(EASY_IOT_SERVER, EASY_IOT_PORT, EASY_IOT_ID, EASY_IOT_PWD) != 0){
  45.     Serial.print(".");
  46.     delay(100);
  47.   }
  48.   Serial.println("MQTT Connect Success");
  49.   //Set callback function
  50.   IOT.setCallBack(callback);
  51.   //Subscribe to topics
  52.   while(IOT.subscribe(SUBSCRIBE_TOPIC) != 0){
  53.     Serial.print(".");
  54.     delay(100);
  55.   }
  56.   Serial.println("Subscribe Topic Success");
  57. }
  58. void loop(void){
  59.   
  60.   // Send data to the subscribed topic.
  61.   if(IOT.publish(PUBLISH_TOPIC,EASY_IOT_SEND_MESSAGE) == 0){
  62.       IOT.loop();
  63.   }else{
  64.     Serial.println("Data sending timeout");
  65.   }
  66.   delay(2000);
  67. }
复制代码

刷入程序后,打开串口,看到如下字样就表示程序成功,如果有其它问题,请参考输出对照代码解决。

Gravity:WIFI IoT模块测评1——开箱,上手,物联一条龙图8

模块的灯,也会有相应的变化,

Gravity:WIFI IoT模块测评1——开箱,上手,物联一条龙图10Gravity:WIFI IoT模块测评1——开箱,上手,物联一条龙图11Gravity:WIFI IoT模块测评1——开箱,上手,物联一条龙图9

不过中间,应该还有一种 粉红的灯,没有截图,就此略过。。。

第二吐槽:模块灯太亮,钛金眼受不了。。。,希望可以加个调整亮度的API。。。。

三、物联实现:

为了实现物联,我们这里使用 高精度、响应快、有防尘功能 的Gravity SHT31-F数字温湿度传感器
进行室内温度读取。将 SHT31模块添加到Arduino扩展板的I2C接口上:
Gravity:WIFI IoT模块测评1——开箱,上手,物联一条龙图12

刷入以下代码:并观察串口监视器:
  1. #include "DFRobot_WiFi_IoT_Module.h"
  2. #include <DFRobot_SHT3x.h>
  3. #include <SoftwareSerial.h>
  4. DFRobot_SHT3x   sht3x;
  5. //I2C mode
  6. DFRobot_WiFi_IoT_Module_I2C IOT;
  7. //UART mode
  8. //Use software serial port RX:10,TX:11
  9. //SoftwareSerial    mySerial(10, 11);
  10. //DFRobot_WiFi_IoT_Module_UART IOT(&mySerial);
  11. //Configure WiFi name and password
  12. const char *WIFI_SSID                = "";
  13. const char *WIFI_PASSWORD            = "";
  14. //Easy IOT EN configuration
  15. const char *EASY_IOT_SERVER          = "iot.dfrobot.com.cn";
  16. //Easy IOT EN configuration
  17. //const char *EASY_IOT_SERVER        = "iot.dfrobot.com";
  18. const char *EASY_IOT_PORT            = "1883";
  19. const char *EASY_IOT_ID              = "";
  20. const char *EASY_IOT_PWD             = "";
  21. const char *SUBSCRIBE_TOPIC          = "";
  22. const char *PUBLISH_TOPIC            = "";
  23. const char *EASY_IOT_SEND_MESSAGE    = "Send_Message";
  24. //Set callback function
  25. void callback(const char*topic,const char*message){
  26.   Serial.println("Receive [ " + (String)topic + "]," + "Message : " + (String)message);
  27. }
  28. void setup(void){
  29.   //Use serial as print serial port
  30.   Serial.begin(115200);
  31. // set sht3x
  32.   while (sht3x.begin() != 0) {
  33.     Serial.println("Failed to Initialize the chip, please confirm the wire connection");
  34.     delay(1000);
  35.   }
  36.   Serial.print("Chip serial number:");
  37.   Serial.println(sht3x.readSerialNumber());
  38.   
  39.    if(!sht3x.softReset()){
  40.   
  41.      Serial.println("Failed to Initialize the chip....");
  42.   
  43.    }
  44.   Serial.println("------------------Read adta in single measurement mode-----------------------");
  45.   
  46.   //Use softwareserial myserial as communication serial port
  47.   // mySerial.begin(9600);
  48.   //Init communication port
  49.   while(IOT.begin() != 0){  
  50.     Serial.println("init ERROR!!!!");
  51.     delay(100);
  52.   }
  53.   Serial.println("init Success");
  54.   //Connect WiFi
  55.   while(IOT.connectWifi(WIFI_SSID, WIFI_PASSWORD) != 0){  
  56.     Serial.print(".");
  57.     delay(100);
  58.   }
  59.   Serial.println("Wifi Connect Success");
  60.   //Initialize MQTT and connect to platform
  61.   while(IOT.MQTTBegin(EASY_IOT_SERVER, EASY_IOT_PORT, EASY_IOT_ID, EASY_IOT_PWD) != 0){
  62.     Serial.print(".");
  63.     delay(100);
  64.   }
  65.   Serial.println("MQTT Connect Success");
  66.   //Set callback function
  67.   IOT.setCallBack(callback);
  68.   //Subscribe to topics
  69.   while(IOT.subscribe(SUBSCRIBE_TOPIC) != 0){
  70.     Serial.print(".");
  71.     delay(100);
  72.   }
  73.   Serial.println("Subscribe Topic Success");
  74. }
  75. //void setup(void){
  76. //  Serial.begin(115200);
  77. //while (sht3x.begin() != 0) {
  78. //
  79. //  Serial.println("Failed to Initialize the chip, please confirm the wire connection");
  80. //
  81. //  delay(1000);
  82. //
  83. //}
  84. //Serial.print("Chip serial number");
  85. //
  86. //Serial.println(sht3x.readSerialNumber());
  87. //
  88. // if(!sht3x.softReset()){
  89. //
  90. //   Serial.println("Failed to Initialize the chip....");
  91. //
  92. // }
  93. //Serial.println("------------------Read adta in single measurement mode-----------------------");
  94. //
  95. //
  96. //}
  97. void loop(void){
  98.   //IOT.loop();
  99.   
  100.   //Send data to the subscribed topic.
  101. //  if(IOT.publish(PUBLISH_TOPIC,EASY_IOT_SEND_MESSAGE) == 0){
  102. //      IOT.loop();
  103. //  }else{
  104. //    Serial.println("Data sending timeout");
  105. //  }
  106.   char Temp[10];
  107.   dtostrf(sht3x.getTemperatureC(),1,2,Temp);
  108.   
  109.   Serial.print("Ambient Temperature(°C/F):");
  110.   Serial.print(Temp);
  111.   Serial.print(" C/");
  112.   Serial.print("Relative Humidity(%RH):");
  113.   Serial.print(sht3x.getHumidityRH());
  114.   Serial.println(" %RH");
  115.   //if(IOT.publish(PUBLISH_TOPIC,EASY_IOT_SEND_MESSAGE) == 0){
  116.   if(IOT.publish(PUBLISH_TOPIC,Temp) == 0){
  117.    
  118.       IOT.loop();
  119.   }
  120.   delay(2000);
  121. }
复制代码

Gravity:WIFI IoT模块测评1——开箱,上手,物联一条龙图14

为了展示温度变化,我们可以用手指,轻触传感器,让温度升高,再放掉让温度降低。

Gravity:WIFI IoT模块测评1——开箱,上手,物联一条龙图13

基本的物联功能,已经实现了。你学废了吗?

下一文,准备用这个WIFI模块实现不一样的功能,尽情期待。

szjuliet  版主

发表于 2021-3-11 08:00:55

测评报告好评,有速有料
回复

使用道具 举报

rzegkly  版主

发表于 2021-3-11 08:01:30

模块设计UART/I2C 两个接口,编程更加方便,文章很详实,学习
回复

使用道具 举报

kinger  学徒

发表于 2021-3-11 21:45:17

大佬求解,如何用物联网芯片 结合单片机 在网端发送指令 控制单片机?用的DFRDBOT-Gravity物联网芯片可以反馈信息到网端 想知道在网端发送什么样指令可以控制单片机运行舵机
回复

使用道具 举报

kinger  学徒

发表于 2021-3-11 21:51:18

用的也是easy iot平台
回复

使用道具 举报

kylinpoet  初级技神
 楼主|

发表于 2021-3-12 08:49:11

kinger 发表于 2021-3-11 21:45
大佬求解,如何用物联网芯片 结合单片机 在网端发送指令 控制单片机?用的DFRDBOT-Gravity物联网芯片可以反 ...

在easy iot 平台后台就可以直接发啊,当然命令解析,自己写。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail