找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4875|回复: 7
收起左侧

ArduinoIDE 开发esp8266连接mqtt阿里云+sntp

  [复制链接]
ID:438023 发表于 2020-4-5 14:29 | 显示全部楼层 |阅读模式
Arduino环境编译esp8266  mqtt连接阿里云,实现设备运云端双向通信,并同时获取sntp网络时间

Arduino源程序如下:
  1. //13=D7 16=D0  15=D8  14=D5  12=D6  4=D2  3=D9  2=D4=GPIO2  1=D10  0=D3=GPIO0
  2. #include <ESP8266WiFi.h>//安装esp8266arduino开发环境
  3. #include <AliyunIoTSDK.h>//引入阿里云 IoT SDK
  4. #include <NTPClient.h>
  5. #include <WiFiUdp.h>
  6. #define PRODUCT_KEY     "***********"//替换自己的PRODUCT_KEY
  7. #define DEVICE_NAME     "***********"//替换自己的DEVICE_NAME
  8. #define DEVICE_SECRET   "***********"//替换自己的DEVICE_SECRET
  9. #define REGION_ID       "cn-shanghai"//默认cn-shanghai

  10. #define WIFI_SSID       "***********"//替换自己的WIFI
  11. #define WIFI_PASSWD     "***********"//替换自己的WIFI
  12. #define ledPin  0
  13. static WiFiClient espClient;
  14. WiFiUDP   ntpUDP;
  15. NTPClient timeClient(ntpUDP,"ntp1.aliyun.com",0,0);//30*60*1000
  16. unsigned long lastMsMain = 0;
  17. String  rxbuff="";

  18. void setup()
  19. {
  20.   Serial.begin(9600);
  21.   pinMode(ledPin, OUTPUT);
  22.   digitalWrite(ledPin, HIGH);

  23.   //连接到wifi
  24.   wifiInit(WIFI_SSID, WIFI_PASSWD);

  25.   timeClient.begin();//SNTP begin

  26.   //初始化 iot,需传入 wifi 的 client,和设备产品信息
  27.   AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);

  28.   //绑定一个设备属性回调,当远程修改此属性,会触发LED函数
  29.   AliyunIoTSDK::bindData("PowerSwitch",   Relay_Control);//电器开关
  30.   AliyunIoTSDK::bindData("VehACSwitch",   Air_Control);//空调开关
  31.   AliyunIoTSDK::bindData("LightLuminance",PWM_Control);//主灯亮度PWM
  32. }

  33. void loop()
  34. {
  35.   int t=36;
  36.   AliyunIoTSDK::loop();//必要函数

  37.   
  38.   //时刻读取硬件串口数据
  39.   while (Serial.available())   
  40.   {
  41.     rxbuff += char(Serial.read());
  42.   }
  43.   while (Serial.read() >= 0) {} //清除串口缓存
  44.   if (rxbuff.length() > 0)
  45.   {
  46.     Serial.println(rxbuff[2]);
  47.     rxbuff="";
  48.   }


  49.   
  50.   if (millis() - lastMsMain >= 2000)//每2秒发送一次
  51.   {
  52.     lastMsMain = millis();

  53.     //发送温度到云平台
  54.     AliyunIoTSDK::send("IndoorTemperature", t);//温度上传
  55.     timeClient.update();
  56.     //Serial.println(timeClient.getFormattedTime());
  57.     //Serial.println(timeClient.getEpochTime());
  58.   }
  59. }

  60. //wifi 连接
  61. void wifiInit(const char *ssid, const char *passphrase)
  62. {
  63.   WiFi.mode(WIFI_STA);
  64.   WiFi.begin(ssid, passphrase);
  65.   while (WiFi.status() != WL_CONNECTED)
  66.   {
  67.     delay(1000);
  68.     Serial.println("WiFi not Connect");
  69.   }
  70.   Serial.println("Connected to AP");
  71. }

  72. //继电器开关的属性修改的回调函数
  73. void Relay_Control(JsonVariant L)//固定格式,修改参数l
  74. {
  75.   int Relay = L["PowerSwitch"];//参数l   “”为aliyun 的标志符
  76.   AliyunIoTSDK::send("PowerSwitch", Relay);
  77.   if (Relay == 1)
  78.   {
  79.     Serial.println("Relay On_____________");
  80.     digitalWrite(ledPin,HIGH);
  81.   }
  82.   else
  83.   {
  84.     Serial.println("Relay Off____________");
  85.     digitalWrite(ledPin,LOW);
  86.   }
  87.   
  88. }

  89. //空调开关的属性修改的回调函数
  90. void Air_Control(JsonVariant L)
  91. {
  92.   int Air = L["VehACSwitch"];//参数l   “”为aliyun 的标志符
  93.   AliyunIoTSDK::send("VehACSwitch", Air);
  94.   if (Air == 1)
  95.     Serial.println("Air PowerOn___________");
  96.   
  97.   else
  98.     Serial.println("Air PowerOff__________");
  99. }
  100. //PWM变频的属性修改的回调函数
  101. void PWM_Control(JsonVariant L)
  102. {
  103.     int PWM = L["LightLuminance"];//参数l   “”为aliyun 的标志符
  104.     AliyunIoTSDK::send("LightLuminance", PWM);
  105.     Serial.println("PWM value:");
  106.     Serial.println(PWM);
  107. }
复制代码

以上程序51hei提供下载:
esp.zip (1.61 KB, 下载次数: 97)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:75737 发表于 2020-6-1 19:58 | 显示全部楼层
不错,正在学习,应该还需要下载对应的库才可以吧!不知哪里有离线下载的
回复

使用道具 举报

ID:74872 发表于 2020-6-2 17:48 | 显示全部楼层
謝謝,正要學習,感謝分享。
回复

使用道具 举报

ID:230374 发表于 2020-6-3 09:50 | 显示全部楼层
正在学习,谢谢分享!
回复

使用道具 举报

ID:94079 发表于 2020-6-3 15:43 | 显示全部楼层
正在学习这方面的知识呢,感谢楼主无私分享
回复

使用道具 举报

ID:804156 发表于 2020-7-21 10:30 | 显示全部楼层
不错   esp8266板子应用广泛
回复

使用道具 举报

ID:46999 发表于 2021-1-18 15:21 | 显示全部楼层
请问楼主用的哪个库来编译的?我试了下,出错如下:D:\My Documents\Arduino\libraries\AliyunIoTSDK\src\AliyunIoTSDK.cpp:4:20: fatal error: SHA256.h: No such file or directory
回复

使用道具 举报

ID:345495 发表于 2021-1-23 10:14 | 显示全部楼层
维超 发表于 2021-1-18 15:21
请问楼主用的哪个库来编译的?我试了下,出错如下:D:\My Documents\Arduino\libraries\AliyunIoTSDK\src\Aliy ...

你这是没有阿里云库
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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