99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

程序員小哈
認證:優質創作者
作者動態
自動洗碗機綜合實例第二講 - 最小系統核心板PCB繪制
2024-07-18 09:21
自動洗碗機綜合實例第一講 - 最小系統核心板原理圖繪制
2024-07-16 09:40
線路板焊接的干貨都在這里呢
2024-07-14 12:08
基于單片機的智能風扇DIY總結
2024-07-13 14:42
基于HAL庫實現按鍵(外部中斷)翻轉一個LED
2024-06-30 14:02

ESP8266連接阿里云物聯網平臺(Arduino方式)

我們上一篇網文已經介紹了mini D1 WiFi模塊,具體參見下面鏈接:

mini D1 WiFi模塊Arduino開發簡介

下面網文介紹了如何在阿里云生活物聯網平臺創建一個智能設備:

七步快速開啟產品智能化

本文我們利用之前創建的測試設備的三元組信息:

"product_key": "a1xHkDRtfRl","device_name": "ZNFS0001","device_secret": "xnOe5VcOkvXFTBAZaik4hz7y67t7IUhI"

使用Arduino的方式快速連接阿里云物聯網平臺。

文中提到的 AliyunIoTSDK 這個 Arduino 庫,可以在 Arduino 庫商店里搜索到(搜索 AliyunIoTSDK)

AliyunIoTSDK可以幫助你快速連接阿里云 IoT 平臺,通過和阿里云物聯網開發平臺配合,可快速實現各種硬件應用,包括了很上層的封裝,無需自己解析數據體,綁定事件即可,在ESP8266平臺充分測試(NodeMCU 1.0)

AliyunIoTSDK庫,除了上面在Arduino庫商店里直接搜索外,還可以手動把 github 上的項目 clone 下來,放到 Arduino 的 library 庫下。

github 地址:https://github.com/xinyu198736/arduino-aliyun-iot-sdk

拷貝上面網址上的測試代碼:Usage使用示例

隨意命名文件名,保存代碼文件:

設備管理器中查看當前ESP8266 WiFi所占用的串口號:

Arduino中選擇對應的串口號:

填寫三元組和WiFi信息:

點擊“√”對號對工程進行編譯:

編譯后出錯:

添加:ArduinoJson庫

再次編譯仍舊報錯:

錯誤信息如下所示:

Arduino:1.8.8 (Windows 10), 開發板:"WeMos D1 R1, 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), 4MB (FS:2MB OTA:~1019KB), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

構建選項已變更,全部重新構建
C:\Users\juban\Documents\Arduino\libraries\AliyunIoTSDK\src\AliyunIoTSDK.cpp:3:26: fatal error: PubSubClient.h: No such file or directory

 #include <PubSubClient.h>

                          ^

compilation terminated.

exit status 1
為開發板 WeMos D1 R1 編譯時出錯。

在文件 -> 首選項開啟
“編譯過程中顯示詳細輸出”選項
這份報告會包含更多信息。

因為AliyunIoTSDK庫,底層連接依據 PubSubClient 庫,所以繼續安裝:PubSubClient庫

缺少:SHA256庫,繼續安裝:SHA256庫

“AWS-SDK-ESP8266”庫

再次編譯,成功。

編譯并下載程序,上傳固件至mini D1 WiFi模塊。

上傳成功之后顯示如下:

arduino上阿里云所需要用到的四個庫文件。PubSubClient,ArduinoJson,AliyunIoTSDK,Crypto(SHA256)。

PubSubClient.h,是發布/訂閱功能的頭文件; 

SHA256.h,是加密功能的頭文件(Crypto里面已有包含這個了);

ArduinoJson.h,是支持Json數據格式的頭文件; 

AliyunIoTSDK.h,是阿里云SDK的頭文件。

打開Arduino軟件,工具-->串口監視器,可以查看模塊打印輸出的信息:

這個串口號換了,不是上面的COM7了,因為我更換了USB口,所以串口號變化了。

下面是在PubSubClient.h文件中關于錯誤類型的定義:

報錯MQTT Connect err : -2,說明MQTT沒有連接。

解決方法是更改PubSubClient.h文件中的兩個宏MQTT_MAX_PACKET_SIZE和MQTT_KEEPALIVE,將其改大點,比如改成1024和60。

修改后,重新下載程序,然后看到可以正常上傳數據了。

登錄生活物聯網平臺--飛燕平臺

生活物聯網平臺:https://living.aliyun.com/#/

查看飛燕平臺,正常應該可以看到設備上線了。

點擊上圖中設備右邊的“查看”,然后進入下面的運行狀態頁面,可以看到我們上傳的當前溫度:26℃。

與下面我們代碼中設置的值是一致的,進而說明上傳屬性值成功。

在“設備調試”頁面,我們選擇調試設備為“ZNFS0001”,然后選擇一個調試功能,然后選擇方法,然后點擊發送指令,我們可以在實時日志中查看到下發數據的日志,說明下發數據成功。

此時查看WiFi模塊的打印信息,可以看到模塊收到了服務器下發的數據包。

{"method":"thing.service.property.set","id":"2028064192","params":{"PowerSwitch":0},"version":"1.0.0"}

我們只需要能夠正確解析上面的數據包內容,解析出{"PowerSwitch":0},然后單片機就可以針對此內容做相應的動作。

上面“設備調試”中下發的數據,其實過程跟手機App中點擊某個的按鈕的動作邏輯是一樣的,至此走通了設備屬性的上傳及設備的無線控制。

之后的內容,我們將針對“智能風扇”的具體設計,實現STM32+ESP8266整體與阿里云進行數據交互。

完整代碼如下:

// 引入 wifi 模塊,并實例化,不同的芯片這里的依賴可能不同
#include <ESP8266WiFi.h>
static WiFiClient espClient;

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

// 設置產品和設備的信息,從阿里云設備信息里查看
#define PRODUCT_KEY "a1xHkDRtfRl"
#define DEVICE_NAME "ZNFS0001"
#define DEVICE_SECRET "xnOe5VcOkvXFTBAZaik4hz7y67t7IUhI"
#define REGION_ID "cn-shanghai"

// 設置 wifi 信息
#define WIFI_SSID "XXXXXX"
#define WIFI_PASSWD "XXXXXXXX"

void setup()
{
    Serial.begin(115200);
    
    // 初始化 wifi
    wifiInit(WIFI_SSID, WIFI_PASSWD);
    
    // 初始化 iot,需傳入 wifi 的 client,和設備產品信息
    AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);
    
    // 綁定一個設備屬性回調,當遠程修改此屬性,會觸發 powerCallback
    // PowerSwitch 是在設備產品中定義的物聯網模型的 id
    AliyunIoTSDK::bindData("PowerSwitch", powerCallback);
    
    // 發送一個數據到云平臺,CurrentTemperature 是在設備產品中定義的物聯網模型的 id
    AliyunIoTSDK::send("CurrentTemperature", 26);
}

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");
}

// 電源屬性修改的回調函數
void powerCallback(JsonVariant p)
{
    int PowerSwitch = p["PowerSwitch"];
    if (PowerSwitch == 1)
    {
        // 啟動設備
    } 
}
```
聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 3
收藏 3
關注 69
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 日本护士体内SHE精2╳╳╳ | 国产在线视频福利 | 欧美中文字幕第一页 | 久操资源 | 成人午夜爽爽爽免费视频 | 午夜精品久久17c | 欧美人c交zoozooxx | 亚洲乱码一区二区三区四区 | 国产成人三区 | 在线观看无码AV网站永久免费 | 国精品无码一区二区三区在线A片 | WWW国产亚洲精品久久 | 一本一道久久a久久综合蜜桃 | 欧美一区二区三区在线看 | 国产9999精品 | 精品国产丝袜自在线拍国语 | 亚洲AV久久无码 | 成人福利网址 | 女人爽到高潮免费视频大全 | 久久久久久久久91 | 国产又黄又硬又粗 | 欧美性猛交xxxx乱大交免费看 | 亚洲综合在线另类色区奇米 | 日韩三级在线观看 | 国产AV国片精品有毛 | 免费黄在线看 | 色之久久| 国产A级毛片色咪味 | 国产一区二区三区18 | 中文在线精品 | 中文字幕免费久久 | 国内不卡的一区二区三区中文字幕 | 神马老子午夜 | 91视频在线网站 | 给我免费观看片在线观看 | 国产无套露脸在线观看 | 中文字幕免费一区二区 | 亚洲欧美日韩网站 | 18gay男同69亚洲帅男蓝宇 | 亚洲经典视频在线观看 | 高H猛烈失禁潮喷A片在线观看 |