0_外設學習_ESP8266+云流轉(no 0基礎)

1、環境+要求

????????2個ESP8266模塊、2個USB轉ESP8266,通過ESP8266_A-->(阿里云)云流轉-->ESP8266_B,實現ESP8266_A發布話題,ESP8266_B訂閱該話題。

2、阿里云云流轉配置

????????1、基礎要求:

? ? ? ? ? ? ? ? 添加1個產品(包含2個設備,標記2個設備的MQTT的信息(略))

????????2、只講重點

? ? ? ? ? ? ? ? 阿里云云流轉配置(網上很多-略),需要注意的重點是:數據源中的話題,可以一樣

若需要修改為自定義的話題,可以在產品一欄進行添加,然后在產品流轉欄刪除更換新的話題

3、ESP8266_B作為訂閱配置

? ? ? ? 1、添加庫文件ArduinoMqttClient
? ? ? ? ? ? ? ?在arduino里下載即可

????????

? ? ? ? 2、編寫ESP8266_B的訂閱代碼

#include <ArduinoMqttClient.h>
#if defined(ARDUINO_SAMD_MKRWIFI1010) || defined(ARDUINO_SAMD_NANO_33_IOT) || defined(ARDUINO_AVR_UNO_WIFI_REV2)#include <WiFiNINA.h>
#elif defined(ARDUINO_SAMD_MKR1000)#include <WiFi101.h>
#elif defined(ARDUINO_ARCH_ESP8266)#include <ESP8266WiFi.h>
#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_GIGA) || defined(ARDUINO_OPTA)#include <WiFi.h>
#elif defined(ARDUINO_PORTENTA_C33)#include <WiFiC3.h>
#elif defined(ARDUINO_UNOR4_WIFI)#include <WiFiS3.h>
#endif#include "arduino_secrets.h"
char ssid[] = "wifi名字";    // 你的WiFi名稱
char pass[] = "wifi密碼";    // 你的WiFi密碼WiFiClient wifiClient;
MqttClient mqttClient(wifiClient);// MQTT服務器信息
const char broker[]    = "設備2的MQTT的mqttHostUrl";
int        port        = 1883;
const char willTopic[] = "arduino/will";// 重點:訂閱的主題需要與發布的主題匹配(這里修改為發布日志中的主題)
//如/k1j6lspLmdS/ESP8266_B/user/get,ESP8266_B訂閱話題
// /k1j6lspLmdS/ESP8266_B/user/update,ESP8266_B發布話題
//注意訂閱和發布的設備名字和get/update
const char inTopic[]   = "/k1j6lspLmdS/ESP8266_B/user/get";  // 改為發布的主題
const char outTopic[]  = "arduino/out";// 設備認證信息(保持不變)
const char clientId[] = "MQTT的clientId";
const char username[] = "MQTT的username";
const char password[] = "MQTT的密碼";const long interval = 10000; 
unsigned long previousMillis = 0;
int count = 0;void setup() {Serial.begin(115200);while (!Serial) {;}  // 等待串口連接// 連接WiFiSerial.print("連接WiFi: ");Serial.println(ssid);while (WiFi.begin(ssid, pass) != WL_CONNECTED) {Serial.print(".");delay(5000);}Serial.println("\nWiFi連接成功");// 配置MQTT客戶端mqttClient.setId(clientId);mqttClient.setUsernamePassword(username, password);// 設置遺囑消息String willPayload = "設備離線";mqttClient.beginWill(willTopic, willPayload.length(), true, 1);mqttClient.print(willPayload);mqttClient.endWill();// 連接MQTT服務器Serial.print("連接MQTT服務器: ");Serial.println(broker);if (!mqttClient.connect(broker, port)) {Serial.print("MQTT連接失敗! 錯誤碼: ");Serial.println(mqttClient.connectError());while (1);}Serial.println("MQTT服務器連接成功");// 設置消息接收回調mqttClient.onMessage(onMqttMessage);// 關鍵修正:執行實際訂閱操作int subscribeQos = 0;  // QoS等級if (mqttClient.subscribe(inTopic, subscribeQos)) {Serial.print("成功訂閱主題: ");Serial.println(inTopic);} else {Serial.print("訂閱主題失敗: ");Serial.println(inTopic);
}
}void loop() {mqttClient.poll();  // 必須定期調用,用于接收消息和保持連接
}// 消息接收回調函數
// 消息接收回調函數
void onMqttMessage(int messageSize) {// 存儲接收到的主題和消息內容String topic = mqttClient.messageTopic();String payload;// 讀取消息內容while (mqttClient.available()) {payload += (char)mqttClient.read();}// 打印接收到的信息Serial.println("-------------------");Serial.print("收到消息,主題: '");Serial.print(topic);Serial.print("',長度: ");Serial.println(messageSize);Serial.print("內容: ");Serial.println(payload);Serial.println("-------------------");// 在這里可以添加消息處理邏輯// 例如判斷特定命令并執行相應操作if (payload == "ON") {Serial.println("執行打開操作");// digitalWrite(LED_PIN, HIGH);  // 示例:控制LED} else if (payload == "OFF") {Serial.println("執行關閉操作");// digitalWrite(LED_PIN, LOW);   // 示例:控制LED}
}

3、上述過程中,編寫代碼在arduino中,使用USB轉ESP8266,將代碼燒錄到ESP8266模塊里。

4、ESP8266_A發布話題

5、ESP8266_B訂閱話題

6、上述代碼
https://gitee.com/dawn-of-a-new-century/learn_peripheral_modules

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/92461.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/92461.shtml
英文地址,請注明出處:http://en.pswp.cn/web/92461.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI漫畫翻譯器-上傳圖片自動翻譯,支持多語言

本文轉載自&#xff1a;AI漫畫翻譯器-上傳圖片自動翻譯&#xff0c;支持多語言 - Hello123 ** 一、AI 漫畫翻譯器的核心定位 AI 漫畫翻譯器是專為漫畫愛好者設計的智能翻譯平臺&#xff0c;通過深度學習技術實現漫畫文本的精準識別與本地化轉換。它能在保留原圖排版和藝術風格…

有效介電常數

有效介電常數:如果導體的橫截面被介質完全包裹&#xff0c;位于導體之間的電力線(如帶狀線)就會感受到相同的介電常數。然而&#xff0c;對于微帶線、雙絞線或共面線&#xff0c;導體周圍的介質不是均勻的&#xff0c;所以一些電力線穿過空氣&#xff0c;而另一些則穿過介質。圖…

51c視覺~合集16

自己的原文哦~ https://blog.51cto.com/whaosoft/14117000 #港大成立計算與數據科學學院&#xff0c;計算機統計雙劍合璧 剛剛&#xff0c;港大成立新的計算與數據科學學院&#xff0c;由計算機科學系和統計學系合并。馬毅教授被任命為學院首任院長。 馬毅教授官宣…

慣量時間常數 H 與轉動慣量 J 的關系解析

慣量時間常數 H 與轉動慣量 J 的關系解析 在電力系統穩定分析、旋轉機械動力學等領域&#xff0c;慣量時間常數&#xff08;H&#xff09; 和 轉動慣量&#xff08;J&#xff09; 是描述旋轉體慣性特性的兩個核心參數。二者雖然出發點不同&#xff0c;但在數學和物理層面具有緊…

DeepSeek-V3/R1 架構深度剖析:國產大模型的創新突圍之路

本文深入解析 DeepSeek-V3/R1 的核心架構設計,揭示其如何在模型效率、推理性能與知識處理等維度實現突破,成為中文大模型領域的標桿之作。 引言:大模型競技場中的"中國速度" #mermaid-svg-9Kk7tHp57CilWIFU {font-family:"trebuchet ms",verdana,arial,…

【從0到1制作一塊STM32開發板】5. 整體布局

在之前的學習中&#xff0c;我偏向的多是嵌入式軟件開發的工作&#xff0c;如果想要自己diy一款具備特定功能的嵌入式工具的話&#xff0c;還需要具備畫板子的能力。但由于我目前還沒學模電&#xff0c;故我打算直接找個b站的學習視頻先跟著畫個板子出來&#xff0c;簡單理解各…

nflsoi 8.8 題解

感覺這把難&#xff0c;不過今天狀態比較差&#xff0c;頭昏昏的。怎么后面幾道藍題別人光速切掉了&#xff1f;不過賽后再來看感覺也不算特別麻煩的題目。 C.#11698 雙循環錦標賽 / TopCoder 10687 The Basketball Div One 題意 約翰與布魯斯對團體體育賽事頗有研究&#xff0…

面向真實場景的定制化圖像降質模型設計方案

面向真實場景的定制化圖像降質模型設計方案 1. 核心思路&#xff1a;從真實圖像中學習退化模型 1.1 問題定義&#xff1a;合成數據與真實數據的域差距 在超分辨率&#xff08;Super-Resolution, SR&#xff09;算法的實際應用中&#xff0c;一個核心挑戰源于訓練數據與真實測…

計算機網絡:一個 IP 地址可以同時屬于 A 類、B 類或 C 類嗎?

一個IP地址不可以同時屬于A類、B類或C類。A類、B類、C類IP地址的劃分有明確的規則&#xff0c;通過網絡位的最高幾位即可唯一確定其類別&#xff0c;不存在重疊的可能。 IP地址分類的核心規則&#xff08;針對IPv4&#xff09; IPv4地址由32位二進制數組成&#xff0c;通常分為…

利用哥斯拉(Godzilla)進行文件上傳漏洞滲透實戰分析

利用哥斯拉(Godzilla)進行文件上傳漏洞滲透實戰分析本實驗通過DVWA靶機環境演示如何利用哥斯拉工具進行文件上傳漏洞的滲透測試&#xff0c;最終獲取目標服務器控制權限。實驗環境 攻擊工具&#xff1a;哥斯拉(Godzilla) v4.0.1靶機地址&#xff1a;http://192.168.3.101/dvwa目…

MMBFJ310LT1G一款N溝道JFE 晶體管適用于高頻放大器和振蕩器等射頻應用MMBFJ310LT1

MMBFJ310LT1G 是一款 N溝道JFET晶體管 &#xff0c;適用于高頻放大器和振蕩器等射頻應用。以下是其核心性能參數&#xff1a;基本參數 ??漏源擊穿電壓?&#xff1a;25V ??柵源擊穿電壓?&#xff1a;25V ??漏源電流&#xff08;Vgs0V&#xff09;?&#xff1a;24mA至60…

【洛谷題單】--分支結構(二)

&#x1f525;個人主頁&#xff1a;草莓熊Lotso &#x1f3ac;作者簡介&#xff1a;C研發方向學習者 &#x1f4d6;個人專欄&#xff1a; 《C語言》 《數據結構與算法》《C語言刷題集》《Leetcode刷題指南》 ??人生格言&#xff1a;生活是默默的堅持&#xff0c;毅力是永久的…

Django模型開發全解析:字段、元數據與繼承的實戰指南

目錄 一、字段類型&#xff1a;精準匹配業務需求 1. 字符型字段的“長短之爭” 2. 數值型字段的“范圍控制” 3. 時間日期型字段的“自動記錄” 4. 布爾型字段的“三態處理” 5. 文件字段的“存儲策略” 二、元數據&#xff1a;控制數據庫與行為的“幕后玩家” 1. 數據…

使用 Grunt 替換 XML 文件中的屬性值

使用 Grunt 替換 XML 文件中的屬性值 在 Grunt 中替換 XML 文件的屬性值可以通過幾種方式實現&#xff0c;以下是詳細的解決方案&#xff1a; 方法1&#xff1a;使用 grunt-xmlpoke 插件&#xff08;推薦&#xff09; 1. 安裝插件 npm install grunt-xmlpoke --save-dev2. 配置…

docker緩存目錄轉移設置和生效過程

docker緩存目錄默認在系統盤/var/lib/docker&#xff0c;存在系統盤打滿&#xff0c;導致系統崩潰問題。 這里嘗試將docker緩存目錄轉移到數據存儲盤/store/docker。 1 查看現有緩存目錄 docker info 一般情況下是 Docker Root Dir: /var/lib 2 停止服務 systemctl stop dock…

滴滴云原生可觀測 HUATUO 開源項目正式入駐 CCF

8月2日&#xff0c;滴滴宣布其開源云原生操作系統可觀測性項目HUATUO正式入駐中國計算機學會&#xff08;CCF&#xff09;&#xff0c;加入其重點孵化項目序列。本次入駐不僅體現了滴滴長期踐行開源共建共享的理念&#xff0c;也希望通過行業協作&#xff0c;共同推動可觀測領域…

python學智能算法(三十二)|SVM-軟邊界理解

【1】引言 前序學習進程中&#xff0c;已經對SVM的KKT條件&#xff0c;Slater條件等進行了探究&#xff0c;但這些都是完美情況&#xff0c;數據線性可分。 實際生活中需要處理的數據往往因為各式各樣的原因會不可分&#xff0c;所以必須學會容忍一些小錯誤&#xff0c;完美的…

實名認證 —— 騰訊云駕駛證識別接口

官方地址&#xff1a; API Explorer - 云 API - 控制臺https://console.cloud.tencent.com/api/explorer?Productocr&Version2018-11-19&ActionDriverLicenseOCR前置操作與下面博客前置操作一致&#xff1a;實名認證 —— 騰訊云身份證認證接口-CSDN博客 首先編寫Con…

科技云報到:Agent應用爆發,誰成為向上托舉的力量?

科技云報道原創。經過兩年多的發展后&#xff0c;AI開始加速進入Agent時代。當AI從“被動響應”邁向“主動決策”&#xff0c;AI Agent正成為連接數字世界與物理世界的核心樞紐。從自動處理客戶服務工單的企業Agent&#xff0c;到協調多步驟科研實驗的學術Agent&#xff0c;再到…

Python字典高階操作:高效提取子集的技術與工程實踐

引言&#xff1a;字典子集提取在現代數據處理中的關鍵作用在Python數據工程領域&#xff0c;字典結構作為核心數據載體占比高達68%&#xff08;2025年Python生態調查報告&#xff09;。字典子集提取作為高頻操作&#xff0c;在以下場景中至關重要&#xff1a;??API響應處理?…