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

WiFi IoT模块开箱上电之小转盘

[复制链接]
本帖最后由 kevinzhang19701 于 2021-3-3 12:31 编辑

模块买到手好几天了,乘周末有时间开箱上电试试。

WeChat Image_20210227144612.jpg

材料:DFRduino UNO R3一枚、IO 传感器扩展板 V7.1一枚、Gravity:WIFI IoT模块一枚、DMS-MG90舵机一枚。

打算从EasyIoT上向设备发送字符,控制舵机转起来,一个简单的小转盘,协议用MQTT。

WeChat Image_202102271446123.jpg

WeChat Image_202102271446124.jpg

WeChat Image_20210227145847.jpg

WiFi模块拨到I2C模式,连接扩展板I2C端口。舵机连接数字端口9。在https://github.com/DFRobot/DFRobot_WiFi_IoT_Module下载库文件(我下载的是ZIP格式)。

Untitled001.png

下面处理代码部分,涉及ID/密码的地方我用星号代替。

  1. #include <Servo.h>
  2. #include <SoftwareSerial.h>
  3. #include "DFRobot_WiFi_IoT_Module.h"
  4. DFRobot_WiFi_IoT_Module_I2C IoT;
  5. Servo myservo;
  6. int pos = 0;
  7. String flag01 = ""; // compare if new data sent from EasyIoT
  8. // WiFi SSID and password
  9. const char *WIFI_SSID                       = "Linksys19544";
  10. const char *WIFI_PASSWORD          = "********";
  11. // setup EasyIoT essential parameters
  12. const char *EASY_IOT_SERVER        = "iot.dfrobot.com.cn";
  13. const char *EASY_IOT_PORT            = "1883";
  14. const char *EASY_IOT_ID                  = "********";
  15. const char *EASY_IOT_PWD             = "********";
  16. const char *SUBSCRIBE_TOPIC        = "auwZY6AWg";
  17. const char *PUBLISH_TOPIC             = "auwZY6AWg";
  18. const char *EASY_IOT_SEND_MESSAGE  = "";
  19. String receiveMessage = "";
  20. // setup CallBack function (for listening info sent by EasyIoT)
  21. void callback(const char *topic, const char *message)
  22. {
  23.   receiveMessage = (String)message;
  24. }
  25. // main initialization
  26. void setup()
  27. {
  28.    Serial.begin(115200);
  29.    // initialize IoT port
  30.    while(IoT.begin() != 0)
  31.    {  
  32.      Serial.println("IoT init ERROR!!!!");
  33.      delay(100);
  34.    }
  35.    Serial.println("IoT init Success");
  36.    // connect to WiFi
  37.    while(IoT.connectWifi(WIFI_SSID, WIFI_PASSWORD) != 0)
  38.    {  
  39.      Serial.print(".");
  40.      delay(100);
  41.    }
  42.    Serial.println("Wifi Connect Success");
  43.    // initialize MQTT (EasyIoT)
  44.    while(IoT.MQTTBegin(EASY_IOT_SERVER, EASY_IOT_PORT, EASY_IOT_ID, EASY_IOT_PWD) != 0)
  45.    {
  46.      Serial.print(".");
  47.      delay(100);
  48.    }
  49.    Serial.println("MQTT Connect Success");
  50.    // invoke callback function for listening
  51.    IoT.setCallBack(callback);
  52.    // subscribe a topic (listening info from this device)
  53.    while(IoT.subscribe(SUBSCRIBE_TOPIC) != 0)
  54.    {
  55.      Serial.print("?");
  56.      delay(100);
  57.    }
  58.    Serial.println("Subscribe Topic Success");
  59.    // initial servo to 0 degree
  60.    myservo.attach(9);
  61.    myservo.write(pos);
  62.    delay(15);
  63.    pinMode(13, OUTPUT);
  64.    digitalWrite(13, HIGH);
  65.   }
  66. // regular works
  67. void loop()
  68. {
  69.    if(strcmp(flag01.c_str(), receiveMessage.c_str()) !=0)
  70.    {
  71.      flag01 = doJob(receiveMessage);
  72.    }
  73.    IoT.loop();
  74.    delay(100);
  75.   }
  76.   String doJob(String code)
  77. {
  78.      if (code.equals("1"))
  79.     {
  80.        pos = 0;
  81.        myservo.write(pos);
  82.        delay(15);
  83.     }
  84.    if (code.equals("2"))
  85.    {
  86.      pos = 45;
  87.      myservo.write(pos);
  88.      delay(15);
  89.    }
  90.    if (code.equals("3"))
  91.    {
  92.      pos = 90;
  93.      myservo.write(pos);
  94.      delay(15);
  95.    }
  96.    if (code.equals("4"))
  97.    {
  98.      pos = 135;
  99.      myservo.write(pos);
  100.      delay(15);
  101.    }
  102.    if (code.equals("5"))
  103.    {
  104.      pos = 180;
  105.      myservo.write(pos);
  106.      delay(15);
  107.    }
  108.    return code;
  109. }
复制代码

编译的时候出现了很多错误,处女座的同学比较紧张,见下图:

Untitled003.png

Untitled002.png

看了一下,基本上都是字符类型转换的错误,编译可以正常通过,正常导入UNO板子。

WiFi模块灯会从红色转到蓝色,最后停在绿色。

WeChat Image_202102271446121.jpg

WeChat Image_202102271446122.jpg

WeChat Image_202102271446125.jpg

在浏览器打开EasyIoT(http://iot.dfrobot.com.cn/):

Untitled004.png

第一个设备(auwZY6AWg),向其发送字符(1~5,),分别对应舵机的0度、45度、90度、135度,以及180度。

Untitled005.png

搭建过程中记录的几个小视频:














除了PC浏览器端可以向设备发送控制字符外,也可以使用EasyIoT微信小程序。不过,昨天晚上还行,今天我这里显示的就是空白了,不知道是不是微信小程序不太稳定。

WeChat Image_20210227144117.png

总体来说,该模块上手还比较容易,连接无线路由器也很快速。除了有点小贵,其他都挺好。

一会儿再试试HTTP协议,向上位机发送点数据看看,先写到这里。


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

本版积分规则

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

硬件清单

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

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

mail