ESP-8266接入阿里云开关LED

ESP-8266接入阿里云开关LED

我们通过esp8266连接到阿里云,再通过阿里云绑定修改led属性,esp8266接收到mqtt协议报文处理我们的开关灯函数

阿里云控制台添加设备,esp8266程序环境搭建,esp8266程序烧录

个人开发测试阿里云是免费的


操作步骤

1.阿里云添加设备

ESP-8266接入阿里云开关LED_第1张图片
ESP-8266接入阿里云开关LED_第2张图片
ESP-8266接入阿里云开关LED_第3张图片
ESP-8266接入阿里云开关LED_第4张图片
ESP-8266接入阿里云开关LED_第5张图片
到这里我们就有了一个设备了。当前现在还没有在线。
ESP-8266接入阿里云开关LED_第6张图片
ESP-8266接入阿里云开关LED_第7张图片
ESP-8266接入阿里云开关LED_第8张图片

ESP-8266接入阿里云开关LED_第9张图片

ESP-8266接入阿里云开关LED_第10张图片
查看复制设备证书!等会要把这些放到代码中
ESP-8266接入阿里云开关LED_第11张图片

2.Arduino引入库

Arduino需要安装 ArduinoJson,Crypto,PubSubClient库
Esp8266 需要在Arduino中安装 ESP8266库

① 搜索安装mqtt

ESP-8266接入阿里云开关LED_第12张图片

② 搜索安装ArduinoJson

ESP-8266接入阿里云开关LED_第13张图片

③ 搜索安装CryptoESP-8266接入阿里云开关LED_第14张图片

④ 搜索安装PubSubClientESP-8266接入阿里云开关LED_第15张图片

3 修改PubSubClient.h两个参数

如果不修改的话,会提示-2的错误
我的文件夹地址 C:\Users\Administrator\Documents\Arduino\libraries\PubSubClient\src
ESP-8266接入阿里云开关LED_第16张图片

4 编写点灯代码变更自己的wifi和产品信息

// 引入 wifi 模块,并实例化,不同的芯片这里的依赖可能不同
#include <ESP8266WiFi.h>
static WiFiClient espClient;

// 引入阿里云 IoT SDK
#include <AliyunIoTSDK.h>

// 设置产品和设备的信息,从阿里云设备信息里查看
#define PRODUCT_KEY "a14xxxxxfXtk"
#define DEVICE_NAME "LED_1"
#define DEVICE_SECRET "504a83a60bxxxxxxxxxxxxxxx18ed6"
#define REGION_ID "cn-shanghai"

// 设置 wifi 信息
#define WIFI_SSID "0"
#define WIFI_PASSWD "12345678"

void setup()
{
    // set the digital pin as output:
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);
    
    Serial.begin(115200);
    
    // 初始化 wifi
    wifiInit(WIFI_SSID, WIFI_PASSWD);
    
    // 初始化 iot,需传入 wifi 的 client,和设备产品信息
    AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);
    
    // 绑定一个设备属性回调,当远程修改此属性,会触发 ledSwitchCallback
    // PowerSwitch 是在设备产品中定义的物联网模型的 id
    AliyunIoTSDK::bindData("LEDSwitch", ledSwitchCallback);
}

void loop()
{
    AliyunIoTSDK::loop();
}

// 初始化 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");
}

// LED状态修改的回调函数
void ledSwitchCallback(JsonVariant p)
{
    int LEDSwitch = p["LEDSwitch"];
    // 变更LED状态
    digitalWrite(LED_BUILTIN, LEDSwitch);
}

最后

Arduino烧录到esp8266
ESP-8266接入阿里云开关LED_第17张图片
打开串口调试
ESP-8266接入阿里云开关LED_第18张图片
ESP-8266接入阿里云开关LED_第19张图片

你可能感兴趣的:(笔记,阿里云,arduino,wifi,物联网)