783浏览
查看: 783|回复: 1

[ESP8266/ESP32] 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模块。如下:
Beetle ESP32 C6迷你开发板串口透传测试图1

Beetle ESP32 C6迷你开发板串口透传测试图2


代码
  1. #include <Arduino.h>
  2. #include <HardwareSerial.h>
  3. unsigned short i;
  4. uint8_t temp;
  5. uint8_t received_data[2048]; // 创建一个全局数组来保存接收到的数据
  6. uint8_t received_data2[2048]; // 创建一个全局数组来保存接收到的数据
  7. uint32_t send_type = 0;
  8. unsigned long lastPacketTime = 0;
  9. // 清理串口读取缓存区的缓存
  10. void clear_usart_buffer() {
  11.   i = Serial0.available();
  12.   if(i != 0) {
  13.     Serial.print("清空串口接收区的缓存......");
  14.     Serial.println(Serial0.available());
  15.     while(i--) Serial0.read(); // 读取并删除一个数据
  16.     for(int j = 0; j < sizeof(received_data); j++) { // 清空数组
  17.       received_data[j] = 0;
  18.     }
  19.   } else {
  20.     //Serial.println("串口接收区的缓存为空!!!");
  21.   }
  22. }
  23. // 读取串口数据并保存到数组
  24. void read_usart() {
  25.   i = Serial0.available(); // 返回目前串口接收区内的已经接受的数据量
  26.   int index = 0; // 创建一个索引来跟踪数组的当前位置
  27.   if(i != 0) {
  28.     Serial.print("串口接收到的数据量为:");
  29.     Serial.println(Serial0.available());
  30.     while(i--) {
  31.       temp = Serial0.read(); // 读取并删除一个数据
  32.       received_data[index] = temp; // 将数据保存到数组中
  33.       index++; // 增加索引
  34.       Serial.print(temp);
  35.     }
  36.     received_data[index] = '\0'; // 在数组的末尾添加一个空字符,以标记字符串的结束
  37.     Serial.println("");
  38.     Serial.print("接收到的数据为: ");
  39.     for(int j = 0; j < index; j++) { // 打印接收到的数据
  40.       Serial.print(received_data[j], HEX);
  41.       Serial.print(" ");
  42.     }
  43.     Serial.println("");
  44.     Serial1.write(received_data,index);//向上传发送
  45.   } else {
  46.     Serial.println("串口接收区没有数据!");
  47.   }
  48. }
  49. void setup() {
  50.   Serial.begin(115200); // 开启串口,设置波特率为115200
  51.   Serial0.begin(9600, SERIAL_8N1, /*rx =*/17, /*Tx =*/16);//传感器吐得数据
  52.   Serial1.begin(9600,SERIAL_8N1,/*rx =*/4,/*Tx =*/5);//DTU
  53.   clear_usart_buffer(); // 清空接收区缓存
  54. }
  55. void loop() {
  56.   Serial.println("usart test!!!");
  57.   read_usart();
  58.   clear_usart_buffer();
  59.   delay(10);
  60. }
复制代码
上位机调试显示
Beetle ESP32 C6迷你开发板串口透传测试图3

总结

Beetle ESP32 C6串口资源丰富,串口数据传输稳定,适合查询其他传感器数据然后发送至DTU模块透传数据,如果串口转接485模块,还可以利用根据485地址设置查询更多485并联的传感器设备做透传。




腿毛利小五郎  初级技匠
 楼主|

发表于 2024-11-15 19:14:07

回看一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail