Beetle ESP32 C6迷你开发板串口透传测试
本帖最后由 腿毛利小五郎 于 2024-4-22 23:54 编辑基于Beetle ESP32 C6实现串口透传前言Beetle ESP32 C6体积小串口资源丰富。探索串口数据透传功能,意在可添加DTU模组,作为中继实现获取其他传感器数据发送至DTU模块透传数据,本文将探索实现Beetle ESP32 C6的串口数据透传。
所需材料
一、Beetle ESP32 C6开发板二、USB转TTL * 2三、杜邦线若干
硬件连接
typeC线接电脑监视,现测试中使用2个串口工具作为传感器和DTU模块。如下:
代码#include <Arduino.h>
#include <HardwareSerial.h>
unsigned short i;
uint8_t temp;
uint8_t received_data; // 创建一个全局数组来保存接收到的数据
uint8_t received_data2; // 创建一个全局数组来保存接收到的数据
uint32_t send_type = 0;
unsigned long lastPacketTime = 0;
// 清理串口读取缓存区的缓存
void clear_usart_buffer() {
i = Serial0.available();
if(i != 0) {
Serial.print("清空串口接收区的缓存......");
Serial.println(Serial0.available());
while(i--) Serial0.read(); // 读取并删除一个数据
for(int j = 0; j < sizeof(received_data); j++) { // 清空数组
received_data = 0;
}
} else {
//Serial.println("串口接收区的缓存为空!!!");
}
}
// 读取串口数据并保存到数组
void read_usart() {
i = Serial0.available(); // 返回目前串口接收区内的已经接受的数据量
int index = 0; // 创建一个索引来跟踪数组的当前位置
if(i != 0) {
Serial.print("串口接收到的数据量为:");
Serial.println(Serial0.available());
while(i--) {
temp = Serial0.read(); // 读取并删除一个数据
received_data = temp; // 将数据保存到数组中
index++; // 增加索引
Serial.print(temp);
}
received_data = '\0'; // 在数组的末尾添加一个空字符,以标记字符串的结束
Serial.println("");
Serial.print("接收到的数据为: ");
for(int j = 0; j < index; j++) { // 打印接收到的数据
Serial.print(received_data, HEX);
Serial.print(" ");
}
Serial.println("");
Serial1.write(received_data,index);//向上传发送
} else {
Serial.println("串口接收区没有数据!");
}
}
void setup() {
Serial.begin(115200); // 开启串口,设置波特率为115200
Serial0.begin(9600, SERIAL_8N1, /*rx =*/17, /*Tx =*/16);//传感器吐得数据
Serial1.begin(9600,SERIAL_8N1,/*rx =*/4,/*Tx =*/5);//DTU
clear_usart_buffer(); // 清空接收区缓存
}
void loop() {
Serial.println("usart test!!!");
read_usart();
clear_usart_buffer();
delay(10);
}
上位机调试显示
总结
Beetle ESP32 C6串口资源丰富,串口数据传输稳定,适合查询其他传感器数据然后发送至DTU模块透传数据,如果串口转接485模块,还可以利用根据485地址设置查询更多485并联的传感器设备做透传。
回看一下{:5_116:}
页:
[1]