921浏览
查看: 921|回复: 0

WIFI IoT模块测评2——真实情境之华为手机语音智能台灯

[复制链接]
本帖最后由 kylinpoet 于 2021-4-19 16:25 编辑

在上文中 Gravity:WIFI IoT模块测评1——开箱,上手,物联一条龙,我们介绍了 WIFI IoT模块的基本情况及使用方法,本文我们再来试试用这个模块进行一个真实情境的物联设置。
一、 物联网平台:
物联网的关键当然是物联环境,这次我们还是使用 DF自己的 物联网平台:easyIoT,这个是我见过简单,却非常实用,易操作的平台。 MonApril-202104199436..png
在这里我们可以方便地创建新设备,用于连接。因为具体操作和其它MQTT平台类似,这里就不展开讲了,
这里说一个大家有可能没怎么用过,但在应用场景中,有意想不到效果的功能:
也就是 基于HTTP GET 的直接设置功能:
当我们直接用浏览器访问这个地址的时候:
  1. https://iot_s1.dfrobot.com.cn/apiv2/publish?topic=【你的设备topic】&msg=【你的消息内容】&token=【服务器生成唯一】&iname=【你的Iot_id】&ipwd=【你的Iot_pwd】&timemark=【时间戳,服务器生成,无需更改】
复制代码
可以直接实现发送mqtt消息的功能。

这个链接的好处就是有时候提交消息的时候可以直接使用HTTP协议,而无需MQTT协议。

二、人工智能交互接口:
为了更方便地使用万物互联,人工智能少不了,因为笔者使用的是华为手机,想直接用它的语音助手进行控制,它的自定义功能比较弱,
MonApril-202104199692..png MonApril-202104197086..png
个性回复是文字,快捷设置 主要是打开应用,或者它支持的应用的一些基本功能。只有点击教学,可以录制一定的宏命令使用。【不像IOS的捷径那么方便,还是笔者的资源搜索能力太弱了找不到其它功能?望网友赐教。】

大概的操作是:手机唤醒——》语音技能(开灯)——》打开浏览器——》访问HTTP链接发送相应MQTT指令
具体操作请稍安勿躁,继续往下看。。。

三、物联设备:
手工改造一盏小台灯,加上一个小型继电器,进行连接,因为本文主要是介绍 WIFI IoT模块,其它功能就不展开讲了,主要使用设备有:
MonApril-202104194163..png MonApril-202104193441..png MonApril-202104193970..png MonApril-202104192995..png
按如下连接:
MonApril-202104191863..png

我们在Arduino内刷入如下代码:
  1. /*!
  2. * @file Easy_IoT.ino
  3. * @brief  In this example, we will use UART or I2C, and MQTT protocol to send "HI DFROBOT 2020" to Easy IoT website
  4. * @n Experimental Phenomenon: easy_IoT website receives message every 1 second.
  5. *
  6. * @copyright    Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
  7. * @licence      The MIT License (MIT)
  8. * @author       [Tang](jie.tang@dfrobot.com)
  9. * @version      V1.0
  10. * @date         2020-07-13
  11. * @get          from https://www.dfrobot.com
  12. * @url          https://github.com/DFRobot/DFRobot_WiFi_IOT_Module
  13. */
  14. #include "DFRobot_WiFi_IoT_Module.h"
  15. // #include <SoftwareSerial.h>
  16. #define PINX 8 //继电器1
  17. //I2C mode
  18. DFRobot_WiFi_IoT_Module_I2C IOT;
  19. //UART mode
  20. //Use software serial port RX:10,TX:11
  21. //SoftwareSerial    mySerial(10, 11);
  22. //DFRobot_WiFi_IoT_Module_UART IOT(&mySerial);
  23. //Configure WiFi name and password
  24. const char *WIFI_SSID                = "kylin-";
  25. const char *WIFI_PASSWORD            = "";
  26. //Easy IOT EN configuration
  27. const char *EASY_IOT_SERVER          = "iot.dfrobot.com.cn";
  28. //Easy IOT EN configuration
  29. //const char *EASY_IOT_SERVER        = "iot.dfrobot.com";
  30. const char *EASY_IOT_PORT            = "1883";
  31. const char *EASY_IOT_ID              = "";
  32. const char *EASY_IOT_PWD             = "";
  33. const char *SUBSCRIBE_TOPIC          = "Q-";
  34. const char *PUBLISH_TOPIC            = "Q-";
  35. const char *EASY_IOT_SEND_MESSAGE    = "Send_Message";
  36. //Set callback function
  37. void callback(const char*topic,const char*message){
  38.   Serial.println("Receive [ " + (String)topic + "]," + "Message : " + (String)message);
  39.   if ((String)message=="1"){
  40.     digitalWrite(PINX, HIGH);
  41.   };
  42.     if ((String)message=="0"){
  43.     digitalWrite(PINX, LOW);
  44.   };
  45. }
  46. void setup(void){
  47.   //Use softwareserial myserial as communication serial port
  48.   //mySerial.begin(9600);
  49.   //Use serial as print serial port
  50.   pinMode(PINX, OUTPUT);
  51.   Serial.begin(115200);
  52.   //Init communication port
  53.   while(IOT.begin() != 0){  
  54.     Serial.println("init ERROR!!!!");
  55.     delay(100);
  56.   }
  57.   Serial.println("init Success");
  58.   //Connect WiFi
  59.   while(IOT.connectWifi(WIFI_SSID, WIFI_PASSWORD) != 0){  
  60.     Serial.print(".");
  61.     delay(100);
  62.   }
  63.   Serial.println("Wifi Connect Success");
  64.   //Initialize MQTT and connect to platform
  65.   while(IOT.MQTTBegin(EASY_IOT_SERVER, EASY_IOT_PORT, EASY_IOT_ID, EASY_IOT_PWD) != 0){
  66.     Serial.print(".");
  67.     delay(100);
  68.   }
  69.   Serial.println("MQTT Connect Success");
  70.   //Set callback function
  71.   IOT.setCallBack(callback);
  72.   //Subscribe to topics
  73.   while(IOT.subscribe(SUBSCRIBE_TOPIC) != 0){
  74.     Serial.print(".");
  75.     delay(100);
  76.   }
  77.   Serial.println("Subscribe Topic Success");
  78. }
  79. void loop(void){
  80.   //Send data to the subscribed topic.
  81.   IOT.loop();
  82. //  if(IOT.publish(PUBLISH_TOPIC,EASY_IOT_SEND_MESSAGE) == 0){
  83. //      IOT.loop();
  84. //  }else{
  85. //    Serial.println("Data sending timeout");
  86. //  }
  87.   delay(500);
  88. }
复制代码
当我们用 WIFI IoT模块连上网后,其它的操作就非常简单了,主要功能在这个回调函数:

MonApril-202104191623..png
分别用字符1和0控制继电器的开和关。

演示视频:

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

本版积分规则

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

硬件清单

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

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

mail