日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 程序員小哈
[導(dǎo)讀]新朋友 點(diǎn)擊藍(lán)色小字 關(guān)注程序員小哈 老朋友 點(diǎn)擊右上角 分享本文 我們上一篇網(wǎng)文已經(jīng)介紹了mini D1 WiFi模塊,具體參見(jiàn)下面鏈接: mini D1 WiFi模塊Arduino開(kāi)發(fā)簡(jiǎn)介 下面網(wǎng)文介紹了如何在阿里云生活物聯(lián)網(wǎng)平臺(tái)創(chuàng)建一個(gè)智能設(shè)備: 七步快速開(kāi)啟產(chǎn)品智能化 本


新朋友

點(diǎn)擊藍(lán)色小字

關(guān)注程序員小哈

老朋友

點(diǎn)擊右上角

分享本文


我們上一篇網(wǎng)文已經(jīng)介紹了mini D1 WiFi模塊,具體參見(jiàn)下面鏈接:

mini D1 WiFi模塊Arduino開(kāi)發(fā)簡(jiǎn)介

下面網(wǎng)文介紹了如何在阿里云生活物聯(lián)網(wǎng)平臺(tái)創(chuàng)建一個(gè)智能設(shè)備:

七步快速開(kāi)啟產(chǎn)品智能化

本文我們利用之前創(chuàng)建的測(cè)試設(shè)備的三元組信息:

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

使用Arduino的方式快速連接阿里云物聯(lián)網(wǎng)平臺(tái)。

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

AliyunIoTSDK可以幫助你快速連接阿里云 IoT 平臺(tái),通過(guò)和阿里云物聯(lián)網(wǎng)開(kāi)發(fā)平臺(tái)配合,可快速實(shí)現(xiàn)各種硬件應(yīng)用,包括了很上層的封裝,無(wú)需自己解析數(shù)據(jù)體,綁定事件即可,在ESP8266平臺(tái)充分測(cè)試(NodeMCU 1.0)

AliyunIoTSDK庫(kù),除了上面在Arduino庫(kù)商店里直接搜索外,還可以手動(dòng)把 github 上的項(xiàng)目 clone 下來(lái),放到 Arduino 的 library 庫(kù)下。

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


拷貝上面網(wǎng)址上的測(cè)試代碼:Usage使用示例

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

設(shè)備管理器中查看當(dāng)前ESP8266 WiFi所占用的串口號(hào):

Arduino中選擇對(duì)應(yīng)的串口號(hào):

填寫(xiě)三元組和WiFi信息:

點(diǎn)擊“√”對(duì)號(hào)對(duì)工程進(jìn)行編譯:

編譯后出錯(cuò):

添加:ArduinoJson庫(kù)

再次編譯仍舊報(bào)錯(cuò):

錯(cuò)誤信息如下所示:

Arduino:1.8.8 (Windows 10), 開(kāi)發(fā)板:"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"

構(gòu)建選項(xiàng)已變更,全部重新構(gòu)建
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
為開(kāi)發(fā)板 WeMos D1 R1 編譯時(shí)出錯(cuò)。

在文件 -> 首選項(xiàng)開(kāi)啟
“編譯過(guò)程中顯示詳細(xì)輸出”選項(xiàng)
這份報(bào)告會(huì)包含更多信息。

因?yàn)锳liyunIoTSDK庫(kù),底層連接依據(jù) PubSubClient 庫(kù),所以繼續(xù)安裝:PubSubClient庫(kù)。

缺少:SHA256庫(kù),繼續(xù)安裝:SHA256庫(kù)

“AWS-SDK-ESP8266”庫(kù)。

再次編譯,成功。

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

上傳成功之后顯示如下:

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

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

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

ArduinoJson.h,是支持Json數(shù)據(jù)格式的頭文件; 

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

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

這個(gè)串口號(hào)換了,不是上面的COM7了,因?yàn)槲腋鼡Q了USB口,所以串口號(hào)變化了。

下面是在PubSubClient.h文件中關(guān)于錯(cuò)誤類型的定義:

報(bào)錯(cuò)MQTT Connect err : -2,說(shuō)明MQTT沒(méi)有連接。

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

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

登錄生活物聯(lián)網(wǎng)平臺(tái)--飛燕平臺(tái)

生活物聯(lián)網(wǎng)平臺(tái):https://living.aliyun.com/#/

查看飛燕平臺(tái),正常應(yīng)該可以看到設(shè)備上線了。

點(diǎn)擊上圖中設(shè)備右邊的“查看”,然后進(jìn)入下面的運(yùn)行狀態(tài)頁(yè)面,可以看到我們上傳的當(dāng)前溫度:26℃。

與下面我們代碼中設(shè)置的值是一致的,進(jìn)而說(shuō)明上傳屬性值成功。

在“設(shè)備調(diào)試”頁(yè)面,我們選擇調(diào)試設(shè)備為“ZNFS0001”,然后選擇一個(gè)調(diào)試功能,然后選擇方法,然后點(diǎn)擊發(fā)送指令,我們可以在實(shí)時(shí)日志中查看到下發(fā)數(shù)據(jù)的日志,說(shuō)明下發(fā)數(shù)據(jù)成功。

此時(shí)查看WiFi模塊的打印信息,可以看到模塊收到了服務(wù)器下發(fā)的數(shù)據(jù)包。

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

我們只需要能夠正確解析上面的數(shù)據(jù)包內(nèi)容,解析出{"PowerSwitch":0},然后單片機(jī)就可以針對(duì)此內(nèi)容做相應(yīng)的動(dòng)作。

上面“設(shè)備調(diào)試”中下發(fā)的數(shù)據(jù),其實(shí)過(guò)程跟手機(jī)App中點(diǎn)擊某個(gè)的按鈕的動(dòng)作邏輯是一樣的,至此走通了設(shè)備屬性的上傳及設(shè)備的無(wú)線控制。

之后的內(nèi)容,我們將針對(duì)“智能風(fēng)扇”的具體設(shè)計(jì),實(shí)現(xiàn)STM32+ESP8266整體與阿里云進(jìn)行數(shù)據(jù)交互。

完整代碼如下:

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

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

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

// 設(shè)置 wifi 信息
#define WIFI_SSID "XXXXXX"
#define WIFI_PASSWD "XXXXXXXX"

void setup()
{
    Serial.begin(115200);
    
    // 初始化 wifi
    wifiInit(WIFI_SSID, WIFI_PASSWD);
    
    // 初始化 iot,需傳入 wifi 的 client,和設(shè)備產(chǎn)品信息
    AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);
    
    // 綁定一個(gè)設(shè)備屬性回調(diào),當(dāng)遠(yuǎn)程修改此屬性,會(huì)觸發(fā) powerCallback
    // PowerSwitch 是在設(shè)備產(chǎn)品中定義的物聯(lián)網(wǎng)模型的 id
    AliyunIoTSDK::bindData("PowerSwitch", powerCallback);
    
    // 發(fā)送一個(gè)數(shù)據(jù)到云平臺(tái),CurrentTemperature 是在設(shè)備產(chǎn)品中定義的物聯(lián)網(wǎng)模型的 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");
}

// 電源屬性修改的回調(diào)函數(shù)
void powerCallback(JsonVariant p)
{
    int PowerSwitch = p["PowerSwitch"];
    if (PowerSwitch == 1)
    {
        // 啟動(dòng)設(shè)備
    } 
}
```




點(diǎn)個(gè)“在看”表示朕

已閱



免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉