概述
ESP8266/esp32接入阿里云物联网平台点灯控制类案例
- ????阿里云物联网云平台介绍:
https://help.aliyun.com/product/30520.html
????需要自己在阿里云物联网云平台注册自己的账户,这里不做介绍了。
????阿里云物联网云平台创建设备过程
- ????选择设备类型-选择
入墙开关
。
????
入墙开关
最多能同时接入9路开关按键控制
-
????找到设备栏,添加设备
-
????配置界面
-
????创建成功,并点击
前往管理
-
????将设备三元组填写到代码中
-
????所属地区(
REGION_ID
)一般都是华东地区,地址填写:cn-shanghai
-
⌛上传代码后,打开串口监视器
????如果接入成功,设备将自动激活。
- ⛳进入设备
在线调试
,选择好控制指令,(在线调试页面只支持一路开关控制),点击设置
即可将开关类的值发送到设备端并让ESP8266执行动作。
- ????在线调试和串口信息输出
????代码上传后报MQTT Connect err:2
处理方法
找到安装的PubSubClient.h
库所在文件夹位置:C:UsersAdministratorDocumentsArduinolibrariesPubSubClientsrcPubSubClient.h
MQTT_MAX_PACKET_SIZE,将256修改为1024,
再找到MQTT_KEEPALIVE,将15修改为60。
????代码依赖库
????所需库均可在
Arduino IDE
管理库(Ctrl + Shift + I)页面搜索并下载到。
AliyunIoTSDK
-点击这里会自动打开管理库页面: http://librarymanager/All#AliyunIoTSDKTicker
-点击这里会自动打开管理库页面: http://librarymanager/All#TickerPubSubClient
-点击这里会自动打开管理库页面: http://librarymanager/All#PubSubClientCrypto
-点击这里会自动打开管理库页面: http://librarymanager/All#CryptoArduinoJson
-点击这里会自动打开管理库页面: http://librarymanager/All#ArduinoJson
????实例代码
/*
*
* 报错:MQTT Connect err:2处理方法
* 修改库文件:C:UsersAdministratorDocumentsArduinolibrariesPubSubClientsrcPubSubClient.h
*
* 找到: MQTT_MAX_PACKET_SIZE,将256修改为1024,再找到MQTT_KEEPALIVE,将15修改为60。
*
*/
/*
* 所需库
* AliyunIoTSDK -点击这里会自动打开管理库页面: http://librarymanager/All#AliyunIoTSDK
* Ticker -点击这里会自动打开管理库页面: http://librarymanager/All#Ticker
* PubSubClient -点击这里会自动打开管理库页面: http://librarymanager/All#PubSubClient
* Crypto -点击这里会自动打开管理库页面: http://librarymanager/All#Crypto
* ArduinoJson -点击这里会自动打开管理库页面: http://librarymanager/All#ArduinoJson
*
*/
#ifdef ESP8266
#include <ESP8266WiFi.h>
#elif
ESP32
#include <WiFi.h> // esp32开发板自带库
#endif
#include <AliyunIoTSDK.h> //引入阿里云 IoT SDK
#include <Ticker.h>
//定时操作
//设置产品和设备的信息,从阿里云设备信息里查看
#define PRODUCT_KEY
"a1ebNdJFkLq"//替换自己的PRODUCT_KEY
#define DEVICE_NAME
"test01"//替换自己的DEVICE_NAME
#define DEVICE_SECRET
"bd2aeba7fd133436155ba85030c1c363"//替换自己的DEVICE_SECRET
#define REGION_ID
"cn-shanghai"//默认cn-shanghai
#define WIFI_SSID
"MERCURY_D268G"//替换自己的WIFI
#define WIFI_PASSWD
"pba5ayzk"//替换自己的WIFI
#define LED_BUILTIN
(2)
#define led2
(23)
#define led3
(22)
static WiFiClient espClient;
int Data = 0;
//定义要上传的数据
int count = 0;
//定义一个计数值
Ticker ticker;
//建立Ticker用于实现定时功能
void setup()
{
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
wifiInit(WIFI_SSID, WIFI_PASSWD); //连接到wifi
ticker.attach(1,myfunction);
//相当于定时器中断函数,一秒执行一次myfunction这个函数
//初始化 iot,需传入 wifi 的 client,和设备产品信息
AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);
/*在阿里云物联网平台,添加标准品类-选择"入墙开关",最多能同时接入9路开关按键控制*/
//绑定一个设备属性回调,当远程修改此属性,会触发LED函数
AliyunIoTSDK::bindData("PowerSwitch_1", LED);
//绑定一个设备属性回调,当远程修改此属性,会触发LED函数
AliyunIoTSDK::bindData("PowerSwitch_2", LED2);
//绑定一个设备属性回调,当远程修改此属性,会触发LED函数
AliyunIoTSDK::bindData("PowerSwitch_3", LED3);
}
void loop()
{
AliyunIoTSDK::loop();//必要函数
/**每隔5秒上传一次数据**/
if(count >= 5)
{
count = 0;
AliyunIoTSDK::send("Data", Data); //发送数据
}
}
//wifi 连接
void wifiInit(const char *ssid, const char *passphrase)
{
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, passphrase);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.println("WiFi not Connect");
}
Serial.println("Connected to AP");
}
//开关1的属性修改的回调函数
void LED(JsonVariant L)//固定格式,修改参数l
{
int LED = L["PowerSwitch_1"];//参数l
LED == 0 ? digitalWrite(LED_BUILTIN, HIGH) : digitalWrite(LED_BUILTIN, LOW);
Serial.printf("收到的LED是:"); Serial.println(LED);
}
//开关2的属性修改的回调函数
void LED2(JsonVariant L)//固定格式,修改参数l
{
int LED = L["PowerSwitch_2"];//参数l
LED == 0 ? digitalWrite(led2, HIGH) : digitalWrite(led2, LOW);
Serial.printf("收到的LED2是:"); Serial.println(LED);
}
//开关3的属性修改的回调函数
void LED3(JsonVariant L)//固定格式,修改参数l
{
int LED = L["PowerSwitch_3"];//参数l
LED == 0 ? digitalWrite(led3, HIGH) : digitalWrite(led3, LOW);
Serial.printf("收到的LED3是:"); Serial.println(LED);
}
void myfunction(){
Data ++;
count ++;
if(Data >= 50)Data = 0;
}
/*
* esp8266编译信息
* 使用 1.0
版本的库 ESP8266WiFi 在文件夹: C:UsersAdministratorAppDataLocalArduino15packagesesp8266hardwareesp82663.0.2librariesESP8266WiFi
使用 0.3
版本的库 AliyunIoTSDK 在文件夹: C:UsersAdministratorDocumentsArduinolibrariesAliyunIoTSDK
使用 6.19.4
版本的库 ArduinoJson 在文件夹: C:UsersAdministratorDocumentsArduinolibrariesArduinoJson
使用 1.0
版本的库 Ticker 在文件夹: C:UsersAdministratorAppDataLocalArduino15packagesesp8266hardwareesp82663.0.2librariesTicker
使用 2.8
版本的库 PubSubClient 在文件夹: C:UsersAdministratorDocumentsArduinolibrariesPubSubClient
使用 0.4.0
版本的库 Crypto 在文件夹: C:UsersAdministratorDocumentsArduinolibrariesCrypto
"C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed/bin/xtensa-lx106-elf-size" -A "C:\Users\ADMINI~1\AppData\Local\Temp\arduino_build_760762/esp8266.ino.elf"
项目使用了 288249 字节,占用了 (27%) 程序存储空间。最大为 1044464 字节。
全局变量使用了30924字节,(37%)的动态内存,余留50996字节局部变量。最大为81920字节。
*/
/*
* esp32编译信息
* 使用 2.0.0
版本的库 WiFi 在文件夹: C:UsersAdministratorAppDataLocalArduino15packagesesp32hardwareesp322.0.5librariesWiFi
使用 0.3
版本的库 AliyunIoTSDK 在文件夹: C:UsersAdministratorDocumentsArduinolibrariesAliyunIoTSDK
使用 6.19.4
版本的库 ArduinoJson 在文件夹: C:UsersAdministratorDocumentsArduinolibrariesArduinoJson
使用 2.0.0
版本的库 Ticker 在文件夹: C:UsersAdministratorAppDataLocalArduino15packagesesp32hardwareesp322.0.5librariesTicker
使用 2.8
版本的库 PubSubClient 在文件夹: C:UsersAdministratorDocumentsArduinolibrariesPubSubClient
使用 0.4.0
版本的库 Crypto 在文件夹: C:UsersAdministratorDocumentsArduinolibrariesCrypto
"C:\Users\Administrator\AppData\Local\Arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\gcc8_4_0-esp-2021r2-patch3/bin/xtensa-esp32-elf-size" -A "C:\Users\ADMINI~1\AppData\Local\Temp\arduino_build_806781/esp8266.ino.elf"
项目使用了 707617 字节,占用了 (21%) 程序存储空间。最大为 3342336 字节。
全局变量使用了39384字节,(12%)的动态内存,余留288296字节局部变量。最大为327680字节。
*
*/
最后
以上就是幽默香烟为你收集整理的ESP8266/esp32接入阿里云物联网平台点灯控制类案例的全部内容,希望文章能够帮你解决ESP8266/esp32接入阿里云物联网平台点灯控制类案例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复