| 
 
| 本帖最后由 kylinpoet 于 2021-4-19 16:25 编辑 
 在上文中 Gravity:WIFI IoT模块测评1——开箱,上手,物联一条龙,我们介绍了 WIFI IoT模块的基本情况及使用方法,本文我们再来试试用这个模块进行一个真实情境的物联设置。
 一、 物联网平台:
 物联网的关键当然是物联环境,这次我们还是使用 DF自己的 物联网平台:easyIoT,这个是我见过简单,却非常实用,易操作的平台。
  在这里我们可以方便地创建新设备,用于连接。因为具体操作和其它MQTT平台类似,这里就不展开讲了,
 这里说一个大家有可能没怎么用过,但在应用场景中,有意想不到效果的功能:
 也就是 基于HTTP GET 的直接设置功能:
 当我们直接用浏览器访问这个地址的时候:
 
 可以直接实现发送mqtt消息的功能。复制代码https://iot_s1.dfrobot.com.cn/apiv2/publish?topic=【你的设备topic】&msg=【你的消息内容】&token=【服务器生成唯一】&iname=【你的Iot_id】&ipwd=【你的Iot_pwd】&timemark=【时间戳,服务器生成,无需更改】
 这个链接的好处就是有时候提交消息的时候可以直接使用HTTP协议,而无需MQTT协议。
 
 二、人工智能交互接口:
 为了更方便地使用万物互联,人工智能少不了,因为笔者使用的是华为手机,想直接用它的语音助手进行控制,它的自定义功能比较弱,
 
  、  个性回复是文字,快捷设置 主要是打开应用,或者它支持的应用的一些基本功能。只有点击教学,可以录制一定的宏命令使用。【不像IOS的捷径那么方便,还是笔者的资源搜索能力太弱了找不到其它功能?望网友赐教。】
 
 大概的操作是:手机唤醒——》语音技能(开灯)——》打开浏览器——》访问HTTP链接发送相应MQTT指令
 具体操作请稍安勿躁,继续往下看。。。
 
 三、物联设备:
 手工改造一盏小台灯,加上一个小型继电器,进行连接,因为本文主要是介绍 WIFI IoT模块,其它功能就不展开讲了,主要使用设备有:
 
  、  、  、  按如下连接:
 
  
 我们在Arduino内刷入如下代码:
 
 当我们用 WIFI IoT模块连上网后,其它的操作就非常简单了,主要功能在这个回调函数:复制代码/*!
 * @file Easy_IoT.ino
 * @brief  In this example, we will use UART or I2C, and MQTT protocol to send "HI DFROBOT 2020" to Easy IoT website
 * @n Experimental Phenomenon: easy_IoT website receives message every 1 second.
 * 
 * @copyright    Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
 * @licence      The MIT License (MIT)
 * @author       [Tang](jie.tang@dfrobot.com)
 * @version      V1.0
 * @date         2020-07-13
 * @get          from https://www.dfrobot.com
 * @url          https://github.com/DFRobot/DFRobot_WiFi_IOT_Module
 */
#include "DFRobot_WiFi_IoT_Module.h"
// #include <SoftwareSerial.h>
#define PINX 8 //继电器1
//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                = "kylin-";
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          = "Q-";
const char *PUBLISH_TOPIC            = "Q-";
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);
  if ((String)message=="1"){
    digitalWrite(PINX, HIGH);
  };
    if ((String)message=="0"){
    digitalWrite(PINX, LOW);
  };
}
void setup(void){
  //Use softwareserial myserial as communication serial port
  //mySerial.begin(9600);
  //Use serial as print serial port
  pinMode(PINX, OUTPUT);
  Serial.begin(115200);
  //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.
  IOT.loop();
//  if(IOT.publish(PUBLISH_TOPIC,EASY_IOT_SEND_MESSAGE) == 0){
//      IOT.loop();
//  }else{
//    Serial.println("Data sending timeout");
//  }
  delay(500);
}
 
  分别用字符1和0控制继电器的开和关。
 
 演示视频:
 
 
 | 
 | 
|  | 
|
|  | 
|  |  |