ESP8266接入阿里云(Arduino)

打印 上一主题 下一主题

主题 748|帖子 748|积分 2244

下载Arduino

下载链接一Software | Arduino
下载连接二Arduino IDE下载(2月21日更新到1.8.19)-Arduino中文社区 - Powered by Discuz!
安装好之后安装esp8266的包

安装ESP8266包

安装方式一:

安装方式二:第3章 ESP8266-NodeMCU通过C/C++开发使用物联网 – 太极创客
从上述的网站中下载esp8266的插件,然后点击安装即可

安装MQTT包 

搜索pubsubclient,然后安装如下所示的包,版本自己选择


修改源文件(!!!) 

        这一步挺重要的,之前按照网上的教程装好上述的包之后还是一直连接不上阿里云,总是一直返回错误。后来找到一个教程说要修改源文件,然后就好了。不过我搞忘记在哪看到的了。具体步骤是:


  • 找到包安装的位置

    • 第一个可能的位置(默认位置):在C盘文档里面有个Arduino,然后点开里面有个libraries,安装的包都在这里面
    • 第二个可能的位置:就是可能自己选了一个目录,在首选项里面可以看到,然后包就会放在那个目录的libraries下

  • 修改PubSubClient的头文件

    • 路径PubSubClient->src



    •  打开并修改如下


      • 包大小可以尽可能大一点,阿里云官方给的mqtt消息长度小于256k即可






连接测试



  • 测试代码

      1. #include <ESP8266WiFi.h>
      2. /* 依赖 PubSubClient 2.4.0 */
      3. #include <PubSubClient.h>
      4. /* 连接您的WIFI SSID和密码 */
      5. #define WIFI_SSID         "WIFI名称"
      6. #define WIFI_PASSWD       "WIFI密码"
      7. /* 线上环境域名和端口号 */
      8. #define MQTT_SERVER       "你的域名"
      9. #define MQTT_PORT         1883//端口号
      10. #define MQTT_USRNAME      "你的username"
      11. #define CLIENT_ID         "你的clientId"
      12. #define MQTT_PASSWD       "你的password"
      13. //发布消息用的topic
      14. #define PubTopic "你的topic"
      15. unsigned long lastMs = 0;
      16. WiFiClient espClient;
      17. PubSubClient  client(espClient);
      18. //收到消息后的回调函数
      19. void callback(char *topic, byte *payload, unsigned int length)
      20. {
      21.   Serial.print("Message arrived [");
      22.   Serial.print(topic);
      23.   Serial.print("] ");
      24.   payload[length] = '\0';
      25.   Serial.println((char *)payload);
      26. }
      27. //wifi初始化
      28. void wifiInit()
      29. {
      30.   WiFi.mode(WIFI_STA);
      31.   WiFi.begin(WIFI_SSID, WIFI_PASSWD);
      32.   while (WiFi.status() != WL_CONNECTED)
      33.   {
      34.     delay(1000);
      35.     Serial.println("WiFi not Connect");
      36.   }
      37.   Serial.println("Connected to AP");
      38.   Serial.println("IP address: ");
      39.   Serial.println(WiFi.localIP());
      40.   Serial.print("espClient [");
      41.   client.setServer(MQTT_SERVER, MQTT_PORT);   /* 连接WiFi之后,连接MQTT服务器 */
      42.   client.setCallback(callback);
      43. }
      44. //发布一个字符串的消息
      45. void pubMsg(char *msg)
      46. {
      47.     boolean d = client.publish(PubTopic, msg);
      48.     if(d){
      49.       Serial.println("publish success");
      50.     }else{
      51.       Serial.println("publish fail");
      52.     }
      53. }
      54. //发布指定长度的字符消息
      55. void pubMsgLen(uint8_t *msg,int len)
      56. {
      57.     boolean d = client.publish(PubTopic,msg,len);
      58.     if(d){
      59.       Serial.println("publish success");
      60.     }else{
      61.       Serial.println("publish fail");
      62.     }
      63. }
      64. //连接到服务器
      65. void mqttCheckConnect()
      66. {
      67.   while (!client.connected())
      68.   {
      69.     Serial.println("Connecting to MQTT Server ...");
      70.     if (client.connect(CLIENT_ID, MQTT_USRNAME, MQTT_PASSWD))
      71.     {
      72.       Serial.println("MQTT Connected!");
      73.     }
      74.     else
      75.     {
      76.       Serial.print("MQTT Connect err:");
      77.       Serial.println(client.state());
      78.       delay(5000);
      79.     }
      80.   }
      81. }
      82. void setup()
      83. {
      84. /* initialize serial for debugging */
      85.     Serial.begin(115200); //开启串口
      86.     Serial.println("Demo Start");
      87.     wifiInit();//连接wifi
      88.     unsigned char i=0;
      89.     mqttCheckConnect();//连接阿里云
      90.     pubMsg("hello aliyun!");
      91. }
      92. // the loop function runs over and over again forever
      93. void loop()
      94. {
      95.   client.loop();//保持客户端的连接
      96. }
      复制代码

  • 代码烧录好之后,在云平台就可以查看发送来的消息



  • 我们再从云平台发送一条消息过去测试


    • 在串口调试界面可以看到



注意

   收到消息的速度与
   client.loop();//保持客户端的连接
  这句有很大关系  放入延时中可能会让接收消息也延迟
          

来源:https://blog.csdn.net/xyx0610/article/details/123934145
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

耶耶耶耶耶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表