本帖最后由 kylinpoet 于 2021-4-19 16:25 编辑
在上文中 Gravity:WIFI IoT模块测评1——开箱,上手,物联一条龙,我们介绍了 WIFI IoT模块的基本情况及使用方法,本文我们再来试试用这个模块进行一个真实情境的物联设置。
一、 物联网平台:
物联网的关键当然是物联环境,这次我们还是使用 DF自己的 物联网平台:easyIoT,这个是我见过简单,却非常实用,易操作的平台。
在这里我们可以方便地创建新设备,用于连接。因为具体操作和其它MQTT平台类似,这里就不展开讲了,
这里说一个大家有可能没怎么用过,但在应用场景中,有意想不到效果的功能:
也就是 基于HTTP GET 的直接设置功能:
当我们直接用浏览器访问这个地址的时候:
- https://iot_s1.dfrobot.com.cn/apiv2/publish?topic=【你的设备topic】&msg=【你的消息内容】&token=【服务器生成唯一】&iname=【你的Iot_id】&ipwd=【你的Iot_pwd】&timemark=【时间戳,服务器生成,无需更改】
复制代码
可以直接实现发送mqtt消息的功能。
这个链接的好处就是有时候提交消息的时候可以直接使用HTTP协议,而无需MQTT协议。
二、人工智能交互接口:
为了更方便地使用万物互联,人工智能少不了,因为笔者使用的是华为手机,想直接用它的语音助手进行控制,它的自定义功能比较弱,
、
个性回复是文字,快捷设置 主要是打开应用,或者它支持的应用的一些基本功能。只有点击教学,可以录制一定的宏命令使用。【不像IOS的捷径那么方便,还是笔者的资源搜索能力太弱了找不到其它功能?望网友赐教。】
大概的操作是:手机唤醒——》语音技能(开灯)——》打开浏览器——》访问HTTP链接发送相应MQTT指令
具体操作请稍安勿躁,继续往下看。。。
三、物联设备:
手工改造一盏小台灯,加上一个小型继电器,进行连接,因为本文主要是介绍 WIFI IoT模块,其它功能就不展开讲了,主要使用设备有:
、、、
按如下连接:
我们在Arduino内刷入如下代码:
- /*!
- * @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);
- }
复制代码
当我们用 WIFI IoT模块连上网后,其它的操作就非常简单了,主要功能在这个回调函数:
分别用字符1和0控制继电器的开和关。
演示视频:
|
|
|
|
|
|