【Beetle ESP32 C6迷你开发板】多功能桌面空气质量检测仪-03自带USB串口控制灯的颜色
本帖最后由 eew_cT3H5d 于 2024-5-22 20:59 编辑<p>一、USB串口作用(Beetle ESP32 C6没有USB转串口芯片,怎么才能使用USB虚拟串口呢?)</p>
<p node="">串口调试在嵌入式系统开发中起着至关重要的作用,主要用于以下几个方面:</p>
<ol>
<li>
<p node=""><strong>确认串口状态</strong>:通过系统信息(如/proc系统信息)或设备节点(如dmesg | grep ttyS)来确认串口是否正常工作<sup><canvas height="18" width="20"></canvas></sup>。</p>
</li>
<li>
<p node=""><strong>配置和测试串口参数</strong>:使用stty命令等工具来配置串口的波特率、数据位、奇偶校验位等参数,并进行自检以确保串口功能正常<sup><canvas height="18" width="20"></canvas></sup><sup><canvas height="18" width="30"></canvas></sup>。</p>
</li>
<li>
<p node=""><strong>数据收发</strong>:串口调试助手可以用于发送和接收数据。它允许用户通过电脑端的串口线与另一端的设备进行通信,实现数据的发送和接收<sup><canvas height="18" width="20"></canvas></sup><sup><canvas height="18" width="20"></canvas></sup><sup><canvas height="18" width="28"></canvas></sup>。</p>
</li>
<li>
<p node=""><strong>硬件调试</strong>:串口调试助手不仅用于软件调试,还可以用于硬件调试。通过配置好串口参数,可以对硬件设备进行详细的测试和调试<sup><canvas height="18" width="20"></canvas></sup><sup><canvas height="18" width="30"></canvas></sup>。</p>
</li>
<li>
<p node=""><strong>数据监控和分析</strong>:在工控领域,串口调试工具广泛应用于数据监控、数据采集和数据分析等工作,是串口应用开发及调试工作必备的专业工具之一<sup><canvas height="18" width="20"></canvas></sup>。</p>
</li>
<li>
<p node=""><strong>协议解析和显示</strong>:一些高级的串口调试助手支持多种串口通信协议,并能够实现串口数据的发送、接收、显示和解析等功能<sup><canvas height="18" width="30"></canvas></sup>。</p>
</li>
<li>
<p node=""><strong>扩展命令和自定义设置</strong>:一些串口调试工具提供了扩展命令和自定义命令列表的功能,使得用户可以创建和保存多条命令,方便进行复杂的数据发送和接收操作<sup><canvas height="18" width="30"></canvas></sup>。</p>
</li>
<li>
<p node=""><strong>虚拟串口模拟</strong>:对于没有物理串口的电脑,可以使用虚拟串口模拟器来模拟串口通信,这在调试和测试过程中非常有用<sup><canvas height="18" width="30"></canvas></sup>。</p>
</li>
</ol>
<p node="">综上所述,串口调试在嵌入式系统开发中具有多种功能,不仅可以用于确认和测试串口状态和参数,还可以用于数据收发、硬件调试、数据监控和分析等多个方面,是一个非常重要的工具。</p>
<p node=""><span style="color:#e74c3c;"><strong>Beetle ESP32 C6和其它Arduino开发板类似单片机直接通过USB与电脑USB进行通讯,只不过需要进行设置才能使用串口功能,DFrobot这款官网介绍也是不是特别清楚,比较含糊的告诉你,需要设置才能使用USB虚拟串口</strong></span></p>
<p node="">官网链接:<a href="https://wiki.dfrobot.com.cn/SKU_DFR1117_Beetle_ESP32_C6#target_6" target="_blank">https://wiki.dfrobot.com.cn/SKU_DFR1117_Beetle_ESP32_C6#target_6</a></p>
<p node=""> </p>
<p node=""> </p>
<p node="">二、尝试使用自带的USB串口</p>
<p node="">查阅一些案例,和Arduion的产品特点,感觉Beetle ESP32 C6可以通过自带USB进行串口通讯的</p>
<p>参考教程:<a href="https://mc.dfrobot.com.cn/thread-318977-1-1.html" target="_blank">https://mc.dfrobot.com.cn/thread-318977-1-1.html</a></p>
<p> <a href="https://docs.espressif.com/projects/esp-idf/en/latest/esp32c6/get-started/establish-serial-connection.html" target="_blank">https://docs.espressif.com/projects/esp-idf/en/latest/esp32c6/get-started/establish-serial-connection.html</a></p>
<p>尝试写个程序进行调试:串口</p>
<p>以下是重点:</p>
<ul>
<li>检查USB CDC是否处于Enable状态</li>
<li>使用其他的串口调试助手查看打印信息</li>
</ul>
<p> </p>
<p>程序代码:</p>
<pre>
<code>int ledPin = 15;
void setup() {
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
}
void loop() {
if (Serial.available()) {
int receivedData = Serial.read();
if (receivedData == '1') {
digitalWrite(ledPin, HIGH);
} else if (receivedData == '0') {
digitalWrite(ledPin, LOW);
}
}
delay(100);
Serial.println("Hell EEWORLD! ");
}</code></pre>
<p>成功通过USB串口接收到数据</p>
<p> </p>
<p> </p>
<p>三、通过USB串口控制ws2812颜色变化</p>
<p> </p>
<p>代码:</p>
<pre>
<code>int ledPin = 15;
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
// Which pin on the Arduino is connected to the NeoPixels?
#define PIN 6 // On Trinket or Gemma, suggest changing this to 1
// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 16 // Popular NeoPixel ring size
// When setting up the NeoPixel library, we tell it how many pixels,
// and which pin to use to send signals. Note that for older NeoPixel
// strips you might need to change the third parameter -- see the
// strandtest example for more information on possible values.
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 500 // Time (in milliseconds) to pause between pixels
void setup() {
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
// END of Trinket-specific code.
pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
//pixels.clear(); // Set all pixel colors to 'off'
}
void loop() {
if (Serial.available()) {
int receivedData = Serial.read();
if (receivedData == '1') {
digitalWrite(ledPin, HIGH);
pixels.setPixelColor(1, pixels.Color(0, 150, 0));
pixels.show(); // Send the updated pixel colors to the hardware.
}
else if (receivedData == '2')
{
pixels.setPixelColor(1, pixels.Color(150, 0, 0));
pixels.show(); // Send the updated pixel colors to the hardware.
}
else if (receivedData == '3')
{
digitalWrite(ledPin, LOW);
pixels.setPixelColor(1, pixels.Color(0, 0, 150));
pixels.show(); // Send the updated pixel colors to the hardware.
}
}
delay(100);
Serial.println("Hell EEWORLD! ");
}</code></pre>
<p> </p>
<p>显示效果</p>
<p> </p>
<p> </p>
<p>演示视频</p>
<p> </p>
<p>d92b739dd21f7475acec60d1358ae3b6<br />
</p>
<p> </p>
页:
[1]