單芯片解決方案,開啟全新體驗(yàn)——W55MH32 高性能以太網(wǎng)單片機(jī)
W55MH32是WIZnet重磅推出的高性能以太網(wǎng)單片機(jī),它為用戶帶來前所未有的集成化體驗(yàn)。這顆芯片將強(qiáng)大的組件集于一身,具體來說,一顆W55MH32內(nèi)置高性能Arm? Cortex-M3核心,其主頻最高可達(dá)216MHz;配備1024KB FLASH與96KB SRAM,滿足存儲與數(shù)據(jù)處理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP協(xié)議棧、內(nèi)置MAC以及PHY,擁有獨(dú)立的32KB以太網(wǎng)收發(fā)緩存,可供8個獨(dú)立硬件socket使用。如此配置,真正實(shí)現(xiàn)了All-in-One解決方案,為開發(fā)者提供極大便利。
在封裝規(guī)格上,W55MH32 提供了兩種選擇:QFN100和QFN68。
W55MH32L采用QFN100封裝版本,尺寸為12x12mm,其資源豐富,專為各種復(fù)雜工控場景設(shè)計(jì)。它擁有66個GPIO、3個ADC、12通道DMA、17個定時器、2個I2C、5個串口、2個SPI接口(其中1個帶I2S接口復(fù)用)、1個CAN、1個USB2.0以及1個SDIO接口。如此豐富的外設(shè)資源,能夠輕松應(yīng)對工業(yè)控制中多樣化的連接需求,無論是與各類傳感器、執(zhí)行器的通信,還是對復(fù)雜工業(yè)協(xié)議的支持,都能游刃有余,成為復(fù)雜工控領(lǐng)域的理想選擇。同系列還有QFN68封裝的W55MH32Q版本,該版本體積更小,僅為8x8mm,成本低,適合集成度高的網(wǎng)關(guān)模組等場景,軟件使用方法一致。更多信息和資料請進(jìn)入http://www.w5500.com/網(wǎng)站或者私信獲取。
此外,本W(wǎng)55MH32支持硬件加密算法單元,WIZnet還推出TOE+SSL應(yīng)用,涵蓋TCP SSL、HTTP SSL以及 MQTT SSL等,為網(wǎng)絡(luò)通信安全再添保障。
為助力開發(fā)者快速上手與深入開發(fā),基于W55MH32L這顆芯片,WIZnet精心打造了配套開發(fā)板。開發(fā)板集成WIZ-Link芯片,借助一根USB C口數(shù)據(jù)線,就能輕松實(shí)現(xiàn)調(diào)試、下載以及串口打印日志等功能。開發(fā)板將所有外設(shè)全部引出,拓展功能也大幅提升,便于開發(fā)者全面評估芯片性能。
若您想獲取芯片和開發(fā)板的更多詳細(xì)信息,包括產(chǎn)品特性、技術(shù)參數(shù)以及價格等,歡迎訪問官方網(wǎng)頁:http://www.w5500.com/,我們期待與您共同探索W55MH32的無限可能。
第二十三章 W55MH32 MQTT_OneNET示例
本篇文章,我們將詳細(xì)介紹如何在W55MH32芯片上面實(shí)現(xiàn)MQTT協(xié)議。并通過實(shí)戰(zhàn)例程,為大家講解如何使用W55MH32的MQTT協(xié)議連接OneNET平臺,實(shí)現(xiàn)與OneNET物模型的數(shù)據(jù)交互。
該例程用到的其他網(wǎng)絡(luò)協(xié)議,例如DHCP和DNS,請參考相關(guān)章節(jié)。有關(guān)W55MH32的初始化過程,請參考Network Install章節(jié),這里將不再贅述。
1 MQTT簡介
MQTT(Message Queuing Telemetry Transport,消息隊(duì)列遙測傳輸協(xié)議)是一種輕量級的、基于發(fā)布/訂閱模式的消息傳輸協(xié)議,廣泛應(yīng)用于物聯(lián)網(wǎng)(IoT)領(lǐng)域,尤其是在網(wǎng)絡(luò)帶寬受限、設(shè)備資源有限的環(huán)境中。它由IBM在1999年提出,主要用于遠(yuǎn)程監(jiān)控和控制系統(tǒng)中的設(shè)備通信。MQTT協(xié)議具有低帶寬、低功耗、低延遲等優(yōu)點(diǎn),特別適用于嵌入式系統(tǒng)和物聯(lián)網(wǎng)設(shè)備的通信。
2 MQTT特點(diǎn)
輕量級:MQTT協(xié)議采用極簡的協(xié)議頭,減少了消息頭的大小,適合帶寬有限和計(jì)算資源有限的設(shè)備。
可靠性:MQTT支持三種服務(wù)質(zhì)量(QoS)級別,能夠確保數(shù)據(jù)可靠送達(dá)。
實(shí)時性:MQTT適合低延遲應(yīng)用場景,消息會盡可能地實(shí)時推送到訂閱者。
保留消息:MQTT支持“保留消息”功能,代理會保存最后一條發(fā)布的消息,當(dāng)有新設(shè)備訂閱某個主題時,代理會立即發(fā)送保留的消息。
持久會話:MQTT允許客戶端在斷開后恢復(fù)會話狀態(tài),斷開期間的消息可以在客戶端重新連接后繼續(xù)接收。
3 MQTT應(yīng)用場景
工業(yè)自動化:在工業(yè)環(huán)境中,生產(chǎn)設(shè)備、傳感器、控制器等都需要進(jìn)行數(shù)據(jù)交換,MQTT協(xié)議適用于在復(fù)雜的工業(yè)自動化系統(tǒng)中提供實(shí)時通信。
智能電網(wǎng):智能電網(wǎng)應(yīng)用中,電力設(shè)備(如變電站、智能電表、開關(guān)設(shè)備等)通過以太網(wǎng)與控制中心進(jìn)行實(shí)時數(shù)據(jù)交換,使用MQTT協(xié)議進(jìn)行遠(yuǎn)程監(jiān)控和控制。
遠(yuǎn)程設(shè)備監(jiān)控與管理:適用于需要遠(yuǎn)程監(jiān)控和管理的設(shè)備,如遠(yuǎn)程氣象站、環(huán)境監(jiān)測設(shè)備等。通過MQTT協(xié)議實(shí)時獲取設(shè)備的傳感器數(shù)據(jù)。
4 MQTT發(fā)布/訂閱模式
發(fā)布訂閱模式(Publish-Subscribe Pattern)是一種消息傳遞模式,它將發(fā)送消息的客戶端(發(fā)布者)與接收消息的客戶端(訂閱者)解耦,使得兩者不需要建立直接的聯(lián)系也不需要知道對方的存在。
MQTT發(fā)布/訂閱模式的精髓在于由一個被稱為代理(Broker)的中間角色負(fù)責(zé)所有消息的路由和分發(fā)工作,發(fā)布者將帶有主題的消息發(fā)送給代理,訂閱者則向代理訂閱主題來接收感興趣的消息。
在 MQTT中,主題和訂閱無法被提前注冊或創(chuàng)建,所以代理也無法預(yù)知某一個主題之后是否會有訂閱者,以及會有多少訂閱者,所以只能將消息轉(zhuǎn)發(fā)給當(dāng)前的訂閱者,如果當(dāng)前不存在任何訂閱,那么消息將被直接丟棄。
MQTT發(fā)布/訂閱模式有 4個主要組成部分:發(fā)布者、訂閱者、代理和主題。
發(fā)布者(Publisher):負(fù)責(zé)將消息發(fā)布到主題上,發(fā)布者一次只能向一個主題發(fā)送數(shù)據(jù),發(fā)布者發(fā)布消息時也無需關(guān)心訂閱者是否在線。
訂閱者(Subscriber):訂閱者通過訂閱主題接收消息,且可一次訂閱多個主題。
代理(Broker):負(fù)責(zé)接收發(fā)布者的消息,并將消息轉(zhuǎn)發(fā)至符合條件的訂閱者。另外,代理也需要負(fù)責(zé)處理客戶端發(fā)起的連接、斷開連接、訂閱、取消訂閱等請求。
主題(Topic):主題是 MQTT進(jìn)行消息路由的基礎(chǔ),它類似 URL路徑,使用斜杠/進(jìn)行分層,比如sensor/1/temperature。一個主題可以有多個訂閱者,代理會將該主題下的消息轉(zhuǎn)發(fā)給所有訂閱者;一個主題也可以有多個發(fā)布者,代理將按照消息到達(dá)的順序轉(zhuǎn)發(fā)。
MQTT協(xié)議的通信流程如下圖:
5 MQTT QoS詳解
QoS 0:消息最多傳遞一次,可能會丟失,且不做重試。這是最基本的QoS級別,不保證消息的傳送或順序。
使用場景:實(shí)時傳輸?shù)母聰?shù)據(jù),如溫度、濕度等,消息丟失對應(yīng)用的影響較小。
QoS 1:消息至少傳送一次。為了確保消息到達(dá),發(fā)送方會重復(fù)發(fā)送消息,直到收到接收方的確認(rèn)應(yīng)答(PUBACK)。可能會導(dǎo)致消息重復(fù)接收。
使用場景:電力監(jiān)測數(shù)據(jù),或需要確保狀態(tài)信息準(zhǔn)確傳輸?shù)膽?yīng)用場景。
QoS 2:確保消息只能被傳遞一次,且只傳遞一次。該級別保證了消息的可靠性、唯一性和順序性。通過四次握手過程確保消息不丟失、不會重復(fù)。
適用場景:高安全要求的應(yīng)用,如支付系統(tǒng)、重要的設(shè)備控制等,不能容忍消息重復(fù)或丟失。
6 MQTT消息
在 MQTT中,客戶端可以在連接時在服務(wù)端中注冊一個遺囑消息,與普通消息類似,我們可以設(shè)置遺囑消息的主題、有效載荷等等。當(dāng)該客戶端意外斷開連接,服務(wù)端就會向其他訂閱了相應(yīng)主題的客戶端發(fā)送此遺囑消息。這些接收者也因此可以及時地采取行動。這一特性通常用于檢測和響應(yīng)客戶端故障或掉線事件,特別適合在需要高可靠性的物聯(lián)網(wǎng)系統(tǒng)和實(shí)時監(jiān)控場景中使用。
有關(guān)MQTT協(xié)議的報(bào)文,可以參考:Introduction · MQTT協(xié)議中文版,本文不再贅述。
7 OneNET物聯(lián)網(wǎng)平臺簡介
OneNET是由中國移動打造的物聯(lián)網(wǎng)開放平臺,在物聯(lián)網(wǎng)應(yīng)用和真實(shí)設(shè)備之間搭建高效、穩(wěn)定安全的應(yīng)用平臺。該平臺支持適配各種網(wǎng)絡(luò)環(huán)境和協(xié)議類型,可實(shí)現(xiàn)各種傳感器和智能硬件的快速接提供豐富的 API和應(yīng)用模板以支撐各類行業(yè)應(yīng)用和智能硬件的開發(fā)。
8 OneNET物模型介紹
物模型是物聯(lián)網(wǎng)平臺中用于描述和管理設(shè)備能力的抽象模型,它定義了設(shè)備的屬性、行為和事件,使設(shè)備與平臺、應(yīng)用之間的交互更加標(biāo)準(zhǔn)化和統(tǒng)一。在OneNET平臺中,物模型是設(shè)備管理與數(shù)據(jù)交互的核心概念,通過物模型,開發(fā)者可以方便地對設(shè)備進(jìn)行建模、管理和使用。
9 MQTT連接OneNET收發(fā)數(shù)據(jù)流程
1.準(zhǔn)備階段
注冊與實(shí)名認(rèn)證:用戶需要在OneNET平臺注冊賬號,并完成實(shí)名認(rèn)證。
創(chuàng)建產(chǎn)品和添加物模型:登錄阿里云物聯(lián)網(wǎng)平臺,創(chuàng)建產(chǎn)品并在產(chǎn)品下添加以下物模型功能。
創(chuàng)建設(shè)備:在剛剛創(chuàng)建的產(chǎn)品下創(chuàng)建一個設(shè)備。
2.記錄參數(shù)
連接參數(shù):可在OneNET - 中國移動物聯(lián)網(wǎng)開放平臺官方文檔中找到MQTT協(xié)議所需的連接參數(shù),從中可得:
服務(wù)器地址及端口和安全認(rèn)證三要素:
clientld為我們創(chuàng)建的設(shè)備名,usemame為我們創(chuàng)建產(chǎn)品后平臺分配的產(chǎn)品ID,password則需使用token生成工具生成,工具說明及下載鏈接:OneNET - 中國移動物聯(lián)網(wǎng)開放平臺。
發(fā)布主題:$sys/{pid}/{device-name}/thing/property/post(屬性上報(bào)消息主題)
訂閱主題:$sys/{pid}/{device-name}/thing/property/post/reply(屬性上報(bào)響應(yīng)主題)
訂閱主題:$sys/{pid}/{device-name}/thing/property/set(設(shè)置主題)
注意:上面兩個主題中的{pid}需要替換成產(chǎn)品ID,{device-name}替換成設(shè)備名。
3.連接、訂閱和發(fā)布消息
接著我們可以使用上面記錄的連接參數(shù)進(jìn)行連接,當(dāng)連接成功后,訂閱上面的訂閱主題。并通過發(fā)布主題上報(bào)物模型數(shù)據(jù)。
在OneNET平臺,如果產(chǎn)品創(chuàng)建階段選擇的數(shù)據(jù)格式為OneJson格式時,接收和發(fā)送數(shù)據(jù)格式都會遵守下面這個格式:
{ "id":"123", "version":"1.0", "params":{ "Power":{ "value":"on", "time":1524448722123 }, "WF":{ "value":23.6, "time":1524448722123 } }, "method":"thing.{功能類型}.{方法}" }
字段id是請求的唯一標(biāo)識符,值為"123",用于跟蹤請求的響應(yīng);version表示OneJSON數(shù)據(jù)格式的版本號,這里為"1.0";params字段包含設(shè)備的屬性數(shù)據(jù),包含了屬性標(biāo)識符、對應(yīng)的值和時間戳;method字段指定設(shè)備執(zhí)行的操作類型,這里是thing.{功能類型}.{方法},用于指明設(shè)備進(jìn)行的操作。
4.接收消息處理
接收消息:當(dāng)接收到消息時,我們只需要按照上面的json格式進(jìn)行解析,然后進(jìn)行相應(yīng)的處理即可。
10實(shí)現(xiàn)過程
接下來,我們看看在W55MH32上如何實(shí)現(xiàn)MQTT連接OneNET,并進(jìn)行訂閱、發(fā)布消息以及接收消息處理。
注意:因?yàn)楸臼纠枰L問互聯(lián)網(wǎng),請確保W55MH32的網(wǎng)絡(luò)環(huán)境及配置能夠正常訪問互聯(lián)網(wǎng)。
步驟一:初始化MQTT客戶端
mqttconn mqtt_params = { .mqttHostUrl = "mqtts.heclouds.com", .server_ip = { 0, }, /*Define the Connection Server IP*/ .port = 1883, /*Define the connection service port number*/ .clientid = "W5100S_W5500", /*Define the client ID*/ .username = "70TwP2gxl5", /*Define the user name*/ .passwd = "version=2018-10-31&res=products%2F70TwP2gxl5%2Fdevices%2FW5100S_W5500&et=1791400694&method=sha1&sign=0SchVg6Y2MRYn%2B9zItNZwt%2F%2FN4Y%3D", /*Define user passwords*/ .pubtopic = "$sys/70TwP2gxl5/W5100S_W5500/thing/property/post", /*Define the publication message*/ .pubtopic_reply = "$sys/70TwP2gxl5/W5100S_W5500/thing/property/post/reply", .subtopic = "$sys/70TwP2gxl5/W5100S_W5500/thing/property/set", /*Define subscription messages*/ .subtopic_reply = "$sys/70TwP2gxl5/W5100S_W5500/thing/property/set_reply", .pubQoS = QOS0, /*Defines the class of service for publishing messages*/ .willtopic = "/wizchip/will", /*Define the topic of the will*/ .willQoS = QOS0, /*Defines the class of service for Will messages*/ .willmsg = "wizchip offline!", /*Define a will message*/ .subQoS = QOS0, /*Defines the class of service for subscription messages*/ }; /** * @brief Initializing the MQTT client side * * Initialize the MQTT client side with the given parameters, including network configuration and MQTT connection parameters. * * @param sn socket number * @param send_buf send buffer pointer * @param recv_buf recv buffer pointer */ void mqtt_init(uint8_t sn, uint8_t *send_buf, uint8_t *recv_buf) { wiz_NetInfo get_info = {0}; wizchip_getnetinfo(&get_info); /* DNS parsing */ if (do_dns(send_buf, (uint8_t *)mqtt_params.mqttHostUrl, mqtt_params.server_ip)) { while (1) { } } NewNetwork(&n, sn); /*Obtain network configuration information*/ ConnectNetwork(&n, mqtt_params.server_ip, mqtt_params.port); /*Connect to the MQTT server*/ MQTTClientInit(&c, &n, 1000, send_buf, MQTT_ETHERNET_MAX_SIZE, recv_buf, MQTT_ETHERNET_MAX_SIZE); data.willFlag = 0; /* will flag: If the will annotation bit is 0, the following will-related settings are invalid*/ willdata.qos = mqtt_params.willQoS; /* will QoS */ willdata.topicName.lenstring.data = mqtt_params.willtopic; /* will topic */ willdata.topicName.lenstring.len = strlen(willdata.topicName.lenstring.data); /* will topic len */ willdata.message.lenstring.data = mqtt_params.willmsg; /* will message */ willdata.message.lenstring.len = strlen(willdata.message.lenstring.data); /* will message len */ willdata.retained = 0; willdata.struct_version = 3; data.will = willdata; data.MQTTVersion = 4; data.clientID.cstring = mqtt_params.clientid; data.username.cstring = mqtt_params.username; data.password.cstring = mqtt_params.passwd; data.keepAliveInterval = 30; data.cleansession = 1; }
修改為自己平臺的clientid和username以及passwd,還包括pubtopic和subtopic的產(chǎn)品和設(shè)備名的更改。
步驟二:主循環(huán),處理MQTT相關(guān)操作(連接、發(fā)送、接收等)
while(1) { do_mqtt(); }
步驟三:進(jìn)入do_mqtt()函數(shù)
void do_mqtt(void) { uint8_t ret; switch (run_status) { case CONN: { // 連接到MQTT服務(wù)器 ret = MQTTConnect(&c, &data); printf("Connect to the MQTT server: %d.%d.%d.%d:%drn", mqtt_params.server_ip[0], mqtt_params.server_ip[1], mqtt_params.server_ip[2], mqtt_params.server_ip[3], mqtt_params.port); printf("Connected:%srnrn", ret == SUCCESSS ? "success" : "failed"); if (ret != SUCCESSS) { run_status = ERR; } else { run_status = SUB; } break; } case SUB: { // 訂閱第一個主題 ret = MQTTSubscribe(&c, mqtt_params.subtopic, mqtt_params.subQoS, messageArrived); printf("Subscribing to %srn", mqtt_params.subtopic); printf("Subscribed:%srnrn", ret == SUCCESSS ? "success" : "failed"); if (ret != SUCCESSS) { run_status = ERR; } else { run_status = PUB_MESSAGE; } // 訂閱第二個主題(回復(fù)主題) ret = MQTTSubscribe(&c, mqtt_params.pubtopic_reply, mqtt_params.subQoS, messageArrived); printf("Subscribing to %srn", mqtt_params.pubtopic_reply); printf("Subscribed:%srnrn", ret == SUCCESSS ? "success" : "failed"); if (ret != SUCCESSS) { run_status = ERR; } else { run_status = PUB_MESSAGE; } break; } case PUB_MESSAGE: { // 配置發(fā)布消息參數(shù) pubmessage.qos = QOS0; pubmessage.payload = "{"id":"123","version":"1.0","params":{"CurrentTemperature":{"value":26.6}}}"; pubmessage.payloadlen = strlen(pubmessage.payload); // 發(fā)布消息 ret = MQTTPublish(&c, (char *)&(mqtt_params.pubtopic), &pubmessage); if (ret != SUCCESSS) { run_status = ERR; } else { printf("publish:%s,%srnrn", mqtt_params.pubtopic, (char *)pubmessage.payload); run_status = KEEPALIVE; } break; } case KEEPALIVE: { // 維持MQTT連接(心跳) if (MQTTYield(&c, 30) != SUCCESSS) { run_status = ERR; } delay_ms(100); break; } case RECV: { // 處理接收到的消息 if (mqtt_recv_flag) { mqtt_recv_flag = 0; json_decode(mqtt_recv_msg); // 解析接收到的JSON消息 } delay_ms(100); break; } case ERR: /* 運(yùn)行錯誤狀態(tài) */ printf("system ERROR!"); delay_ms(1000); break; default: break; } }
進(jìn)入該函數(shù)后,程序首先嘗試連接到指定的MQTT服務(wù)器。如果連接成功,則進(jìn)入訂閱狀態(tài);如果連接失敗,則直接進(jìn)入錯誤狀態(tài)并打印錯誤信息。
在訂閱狀態(tài)中,訂閱兩個主題:一個是用于接收消息的訂閱主題,另一個是用于發(fā)布回復(fù)的發(fā)布主題。如果這兩個主題都成功訂閱,則進(jìn)入發(fā)布消息狀態(tài);如果訂閱過程中出現(xiàn)失敗,則進(jìn)入錯誤狀態(tài)并打印錯誤信息。
進(jìn)入發(fā)布消息狀態(tài)后,構(gòu)建一條消息并嘗試發(fā)布。如果發(fā)布成功,則進(jìn)入保持連接狀態(tài);如果發(fā)布失敗,則進(jìn)入錯誤狀態(tài)并打印錯誤信息。
在保持連接狀態(tài)中,持續(xù)接收消息并檢查是否有需要處理的消息。如果有接收到需要處理的消息,則進(jìn)行相應(yīng)的處理。
在任何步驟中,如果發(fā)生錯誤,都會立即進(jìn)入錯誤狀態(tài),并打印出詳細(xì)的錯誤信息。
11運(yùn)行結(jié)果
燒錄例程運(yùn)行后,首先進(jìn)行了PHY鏈路檢測,接著是通過DHCP獲取網(wǎng)絡(luò)地址信息和DNS解析服務(wù)器域名,然后連接服務(wù)器和訂閱主題,最后發(fā)送物模型數(shù)據(jù),隨后就接收到OneNET平臺響應(yīng)的上報(bào)成功的信息,此時查看平臺物模型數(shù)據(jù)已經(jīng)得到更新顯示。如下圖所示:
然后我們使用ONENET平臺的在線設(shè)備調(diào)試功能,調(diào)試LWDSwish狀態(tài),下發(fā)數(shù)據(jù),此時W55MH32就接收到下發(fā)的消息并進(jìn)行響應(yīng)操作了,如下執(zhí)行LED OFF:
12總結(jié)
本文講解了如何在 W55MH32芯片上實(shí)現(xiàn) MQTT協(xié)議并連接 OneNET平臺,通過實(shí)戰(zhàn)例程展示了從準(zhǔn)備工作、連接配置到消息訂閱、發(fā)布及接收處理的完整過程。文章詳細(xì)介紹了 MQTT協(xié)議的概念、特點(diǎn)、應(yīng)用場景、發(fā)布 /訂閱模式、QoS級別,以及 OneNET物聯(lián)網(wǎng)平臺和物模型相關(guān)知識,幫助讀者理解其在物聯(lián)網(wǎng)設(shè)備與云端數(shù)據(jù)交互中的實(shí)際應(yīng)用價值。
下一篇文章將講解如何在 W55MH32上實(shí)現(xiàn)多路 Socket設(shè)置為 TCP客戶端模式,并進(jìn)行連接同一個服務(wù)器測試,解析多路 Socket連接的核心原理及應(yīng)用,同時講解在 W55MH32上實(shí)現(xiàn)該功能的具體步驟與要點(diǎn),敬請期待!
WIZnet是一家無晶圓廠半導(dǎo)體公司,成立于 1998年。產(chǎn)品包括互聯(lián)網(wǎng)處理器 iMCU?,它采用 TOE(TCP/IP卸載引擎)技術(shù),基于獨(dú)特的專利全硬連線 TCP/IP。iMCU?面向各種應(yīng)用中的嵌入式互聯(lián)網(wǎng)設(shè)備。
WIZnet在全球擁有 70多家分銷商,在香港、韓國、美國設(shè)有辦事處,提供技術(shù)支持和產(chǎn)品營銷。
香港辦事處管理的區(qū)域包括:澳大利亞、印度、土耳其、亞洲(韓國和日本除外)。
審核編輯 黃宇
-
嵌入式
+關(guān)注
關(guān)注
5154文章
19708瀏覽量
318119 -
以太網(wǎng)
+關(guān)注
關(guān)注
41文章
5684瀏覽量
176261 -
MQTT
+關(guān)注
關(guān)注
5文章
687瀏覽量
23753
發(fā)布評論請先 登錄
科技賦能推動綠色低碳發(fā)展 第二十三屆高交會“環(huán)保”亮點(diǎn)看這里!

第二十三章 IWDG——獨(dú)立看門狗

火力發(fā)電廠水汽分析方法 第二十三部分:化學(xué)耗氧量的測定(重鉻
第二十三講 異步計(jì)數(shù)器

模擬電路網(wǎng)絡(luò)課件 第二十三節(jié):乙類雙電源互補(bǔ)對稱功率放大電路
2017中國西部微波射頻技術(shù)研討會暨第二十三屆國際電子測試測量研討會
【正點(diǎn)原子FPGA連載】第二十三章RGB-LCD字符和圖片顯示實(shí)驗(yàn) -摘自【正點(diǎn)原子】新起點(diǎn)之FPGA開發(fā)指南_V2.1

烽火通信光纖技術(shù)獲“第二十三屆中國專利獎”銀獎
中國電子科技集團(tuán)公司第二十三研究所選購我司炭黑含量測試儀

第十三章 W55MH32 UPnP端口轉(zhuǎn)發(fā)示例

第二十一章 W55MH32 PHY配置示例

第二十二章 W55MH32 MQTT&Aliyun示例

第二十六章 W55MH32?上位機(jī)搜索和配置示例

第二十七章 W55MH32?Interrupt示例

第二十九章 W55MH32 Modbus_TCP_Server示例

評論