<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      串口通信ESP8266NodeMCU與STM32F106C8T6-Arduino平臺

      還是Arduino平臺,stm32的代碼上一篇記錄是一樣的,僅僅是把esp32換成了esp8266

      總結(jié)

      1. ESP8266NodeMCU一共有兩個USART,UART1僅支持發(fā)送數(shù)據(jù),故串口通信需要用默認的USART。
      2. 因為占用了默認的USART(RX/TX)接口,故需要使用外置電源避免沖突。
      3. 無法通過Serial打印日志,所以我將日志通過MQTT發(fā)送到本地服務(wù)器上查看。

      物料

      ESP8266NodeMCU

      接線

      電腦-esp32-stm32-led

      ESP8266NodeMCU STM32F106C8T6 LED
      3V3 3V3
      GND GND
      RX A10 (Serial1 RX)
      TX A09 (Serial1 TX)
      A01 +
      GND -

      image

      esp8266代碼

      #include <Arduino.h>
      #include <ArduinoJson.h>
      #include <PubSubClient.h>
      #include <ESP8266WiFi.h>
      
      // WiFi配置
      const char *ssid = "****";
      const char *password = "****";
      
      // MQTT配置
      const char *mqtt_server = "192.168.*.*"; // 修改為你的服務(wù)器IP地址
      const int mqtt_port = 1883;
      const char *mqtt_client_id = "****";
      const char *mqtt_topic = "****/****";
      const char *mqtt_command_topic = "****/****"; // 訂閱指令主題
      const char *stm32_device_id = "****";  // STM32F103的設(shè)備ID
      // WiFi客戶端
      WiFiClient espClient;
      // MQTT客戶端
      PubSubClient client(espClient);
      int counter = 0;
      
      void print(String message) {
        Serial.print(message);
      }
      void println(String message) {
        Serial.println(message);
      }
      
      void sendToSTM32(String message) {
        Serial.println(message);
      }
      
      void setupWiFi() {
        println("Connecting to WiFi...");
        WiFi.begin(ssid, password);
      
        while (WiFi.status() != WL_CONNECTED) {
          delay(500);
          println(".");
        }
        println("WiFi connected");
        println("IP address: ");
      }
      
      void setupMQTT() {
        client.setServer(mqtt_server, mqtt_port);
      }
      
      void reconnectMQTT() {
        while (!client.connected()) {
          println("Attempting MQTT connection...");
          if (client.connect(mqtt_client_id)) {
            println("connected");
      
            // 訂閱指令主題
            if (client.subscribe(mqtt_command_topic)) {
              print("Subscribed to: ");
              println(mqtt_command_topic);
            } else {
              println("Failed to subscribe to command topic");
            }
          } else {
            print("failed, rc=");
            println(" retrying in 2 seconds");
            delay(2000);
          }
        }
      }
      
      void sendLog(String message) {
        if (!client.connected()) {
          reconnectMQTT();
        }
      
        // 創(chuàng)建JSON格式的日志消息
        StaticJsonDocument<1024> doc;
        doc["device_id"] = mqtt_client_id;
        doc["type"] = "log";
        doc["message"] = message;
        doc["source"] = "esp8266";
      
        String jsonString;
        serializeJson(doc, jsonString);
        client.publish(mqtt_topic, jsonString.c_str());
      }
      
      void setup() {
        Serial.begin(115200, SERIAL_8N1);
        println("ESP8266 init start");
      
        // 連接WiFi
        setupWiFi();
        println("WiFi connected");
      
        // 配置MQTT
        setupMQTT();
        println("MQTT connected");
      
        delay(1000);
        sendLog("ESP8266 init success");
      }
      
      void loop() {
        // 發(fā)送數(shù)據(jù)到STM32
        String message = String(counter);
        sendToSTM32(message);
        delay(1000);
      
        // 檢查是否收到STM32的數(shù)據(jù)
        if (Serial.available()) {
          String message = "Received from STM32 (" + String(Serial.available()) + " bytes): " + Serial.readStringUntil('\n');
          sendLog(message);
        } else {
          sendLog("No data received from STM32");
        }
      
        counter++;
      }
      

      STM32代碼,

      /*
       * Test program for the STM32F103C8T6
       * 通過USART1 (PA9/PA10) 與ESP32通信
       */
      #include "Arduino.h"
      
      void setup() {
        // 初始化USB串口用于調(diào)試
        Serial1.begin(115200);
        Serial1.println("STM32 starting...");
        pinMode(PA1, OUTPUT);
        Serial1.println("STM32 ready to communicate with ESP32");
      }
      
      void loop() {
        // 發(fā)送數(shù)據(jù)到ESP32
        if (Serial1.available()) {
          String message = "STM32 " + Serial1.readStringUntil('\n');
          Serial1.println(message);
        }else{
          Serial1.println("stm32 nothing");
        }
        // LED指示
        digitalWrite(PA1, HIGH);
        delay(500);
        digitalWrite(PA1, LOW);
        delay(500);
      }
      
      
      posted @ 2025-08-16 21:10  AlpacaGo  閱讀(52)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 草草浮力影院| 国产成人精品亚洲资源| 无码日韩精品一区二区三区免费| 国产女人喷潮视频免费| 国产女主播喷水视频在线观看 | 国产精品一区二区av片| 国产亚洲精品第一综合另类无码无遮挡又大又爽又黄的视频 | 久久人人爽爽人人爽人人片av | 另类国产精品一区二区| 通河县| 成人3d动漫一区二区三区| 青青草无码免费一二三区| 和林格尔县| 日韩av在线不卡一区二区三区| 亚洲AV无码国产在丝袜APP| 阿克苏市| 亚洲人成网站在线播放2019| 东方av四虎在线观看| 亚洲精品日本一区二区| 色综合天天综合网天天看片| 国产免费无遮挡吸乳视频在线观看| 69天堂人成无码免费视频| 开心五月激情五月俺亚洲| 日韩av一区二区三区精品| 午夜色大片在线观看免费| 又大又粗又硬又爽黄毛少妇| 国产精品一区二区传媒蜜臀| 无码毛片一区二区本码视频| 黄石市| 一区二区三区成人| 人妻少妇精品无码专区二区 | 无码人妻aⅴ一区二区三区蜜桃| 国产情侣草莓视频在线| 蜜臀91精品国产高清在线| V一区无码内射国产| 69人妻精品中文字幕| 免费观看全黄做爰大片| 亚洲精品欧美综合二区| 国产精品爽黄69天堂A| 文化| 日韩一区二区三区不卡片|