9浏览
查看: 9|回复: 0

[项目] DFRobot FireBeetle 2 ESP32 P4 太阳能车

[复制链接]
【引言】

近日,我有幸获得了DFRobot FireBeetle 2 ESP32 P4开发板的测试机会,并结合DFRobot的其他组件,制作了一个太阳能供电的智能小车。本文将详细介绍这次测评的全过程,包括硬件选择、软件编程以及实际运行效果。

【 硬件选择】

1. FireBeetle 2 ESP32 P4开发板

FireBeetle 2 ESP32 P4是一款基于ESP32-P4R32芯片设计的高性能微控制器(MCU)开发板,支持单精度FPU和 AI指令扩展,具有强大的AI处理能力。开发板也拥有强大的图像处理能力,最高支持1080p@30fps图像采集和显示。开发板集成了ESP32-C6模组,扩展了WiFi和蓝牙功能,适用于AI网络摄像头、AI机器人、智能家居中控屏幕、电子相册等多种应用。

2.太阳能电源套件(10W)

为了给小车提供持续、可靠的电力,我选择了DFRobot的太阳能电源套件(10W)。该电源支持12V1A和5V1A两种电压输出,能够为传感器、数据记录仪等多种设备提供稳定的电力。这款户外太阳能电源经过精心设计,具有极高的防护能力,所有部件都集成在一个防水外壳中,只需打开外壳并装入18650锂电池即可使用。

3. 72W 直流稳压电源(12V@6A)

太阳能电源套件的12V输出通过72W直流稳压电源(12V@6A)提供稳定的输出供电。该电源能将不稳定的8V-40V直流电源通过升/降压的方式稳定到12V直流电输出,最高支持6A输出,并具有过流、过温、短路等自动保护功能。

4. L298N直流电机驱动模块DF-MD V1.3

L298N直流电机驱动模块DF-MD V1.3采用LGS公司优秀大功率电机专用驱动芯片L298N,可直接驱动直流电机,驱动电流达2A。该电路线路布线合理、均采用贴元件片、体积小、方便安装,输出端采用高速肖特基二极管作为保护。

5. 12V 直流减速电机143rpm 带编码器

我选择了四个12V直流减速电机143rpm带编码器来驱动小车。这款电机适用12V直流电源,电机转速8000±12% rpm,配减速比56的行星减速箱,输出转速143±10% rpm,还提供了一个高精度的霍尔编码器,脉冲数13,可提供输出轴每转663个反馈的脉冲信号。
DFRobot FireBeetle 2 ESP32 P4 太阳能车图4

DFRobot FireBeetle 2 ESP32 P4 太阳能车图5

DFRobot FireBeetle 2 ESP32 P4 太阳能车图2

【 软件编程】

使用Arduino 2.3.6 IDE编写程序,代码如下:
  1. #include <WiFi.h>
  2. #include <PubSubClient.h>
  3. // WiFi 配置
  4. const char* WIFI_SSID = "***";
  5. const char* WIFI_PASSWORD = "*********";
  6. // MQTT 配置
  7. const char* mqttServer = "192.168.31.12"; // 本地 SIoT V2 的 IP 地址
  8. const int mqttPort = 1883; // MQTT 端口
  9. const char* clientID = "esp32p4"; // 设备名称
  10. const char* mqttUser = "siot"; // MQTT 用户名
  11. const char* mqttPassword = "dfrobot"; // MQTT 密码
  12. WiFiClient espClient;
  13. PubSubClient client(espClient);
  14. // 发送消息的主题
  15. const char* publishTopic = "siot/light";
  16. // 订阅消息的主题
  17. const char* subscribeTopic = "siot/motor";
  18. // 电机控制引脚
  19. const int motor1M = 20;  // 电机1方向控制
  20. const int motor1E = 21;  // 电机1速度控制
  21. const int motor2M = 22; // 电机2方向控制
  22. const int motor2E = 23; // 电机2速度控制
  23. void setup_wifi() {
  24. delay(10);
  25. WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  26. while (WiFi.status() != WL_CONNECTED) {
  27. delay(500);
  28. Serial.print(".");
  29. }
  30. Serial.println("WiFi connected");
  31. }
  32. void connect_mqtt() {
  33. client.setServer(mqttServer, mqttPort);
  34. while (!client.connected()) {
  35. if (client.connect(clientID, mqttUser, mqttPassword)) { // 使用用户名和密码连接
  36. Serial.println("Connected to MQTT Broker!");
  37. } else {
  38. Serial.print("Failed to connect to MQTT Broker, rc=");
  39. Serial.print(client.state());
  40. delay(5000);
  41. }
  42. }
  43. }
  44. // MQTT 消息回调函数
  45. void callback(char* topic, byte* payload, unsigned int length) {
  46. Serial.print("Message arrived [");
  47. Serial.print(topic);
  48. Serial.print("] ");
  49. String message;
  50. for (unsigned int i = 0; i < length; i++) {
  51. message += (char)payload[i];
  52. }
  53. Serial.println(message);
  54. if (message == "l") {
  55. // 左转
  56. digitalWrite(3, HIGH);
  57. digitalWrite(motor1M, LOW);
  58. analogWrite(motor1E, 200);
  59. digitalWrite(motor2M, LOW);
  60. analogWrite(motor2E, 255);
  61. } else if (message == "r") {
  62. // 右转
  63. digitalWrite(3, LOW);
  64. digitalWrite(motor1M, HIGH);
  65. analogWrite(motor1E, 255);
  66. digitalWrite(motor2M, HIGH);
  67. analogWrite(motor2E, 200);
  68. } else if (message == "s") {
  69. // 停止
  70. digitalWrite(motor1M, LOW);
  71. analogWrite(motor1E, 0);
  72. digitalWrite(motor2M, LOW);
  73. analogWrite(motor2E, 0);
  74. } else if (message == "f") {
  75. // 前进
  76. digitalWrite(motor1M, LOW);
  77. analogWrite(motor1E, 255);
  78. digitalWrite(motor2M, HIGH);
  79. analogWrite(motor2E, 255);
  80. } else if (message == "b") {
  81. // 后退
  82. digitalWrite(motor1M, HIGH);
  83. analogWrite(motor1E, 255);
  84. digitalWrite(motor2M, LOW);
  85. analogWrite(motor2E, 255);
  86. }
  87. }
  88. void setup() {
  89. Serial.begin(9600);
  90. pinMode(motor1M, OUTPUT);
  91. pinMode(motor1E, OUTPUT);
  92. pinMode(motor2M, OUTPUT);
  93. pinMode(motor2E, OUTPUT);
  94. pinMode(3, OUTPUT);
  95. setup_wifi();
  96. client.setCallback(callback);
  97. connect_mqtt();
  98. client.subscribe(subscribeTopic);
  99. client.publish(publishTopic, "hello");
  100. }
  101. void loop() {
  102. if (!client.connected()) {
  103. connect_mqtt();
  104. }
  105. client.loop();
  106. }
复制代码


【Mit inventor2汉化版WxBit 图形化编程】

使用Mit inventor2汉化版WxBit图形化编程制作的手机app,界面设计及代码如下:
DFRobot FireBeetle 2 ESP32 P4 太阳能车图3
DFRobot FireBeetle 2 ESP32 P4 太阳能车图1
1. **初始化屏幕**:输出调试信息“屏幕初始化”,调用MQTT客户端连接。
2. **MQTT连接成功**:输出调试信息“物联网连接成功”,调用MQTT客户端订阅主题“siot/light”,消息可靠性级别为0。
3. **按钮前进**:发布主题“siot/motor”,消息“f”,调用声音和振动震动100毫秒。
4. **按钮后退**:发布主题“siot/motor”,消息“b”,调用声音和振动震动100毫秒。
5. **按钮左转**:发布主题“siot/motor”,消息“l”,调用声音和振动震动100毫秒。
6. **按钮右转**:发布主题“siot/motor”,消息“r”,调用声音和振动震动100毫秒。
7. **按钮停止**:发布主题“siot/motor”,消息“s”,调用声音和振动震动100毫秒。
8. **MQTT接收消息**:显示短暂提示信息消息内容。
DFRobot FireBeetle 2 ESP32 P4 太阳能车图7

【实际运行效果】
DFRobot FireBeetle 2 ESP32 P4 太阳能车图6
通过上述硬件和软件的结合,我成功制作了一个太阳能供电的智能小车。小车可以通过手机app进行控制,实现前进、后退、左转、右转和停止等功能。实际运行效果非常理想,小车响应迅速,运行平稳。
【演示视频】


【总结】

DFRobot FireBeetle 2 ESP32 P4开发板是一款功能强大、性能优越的开发板,结合DFRobot的其他组件,可以轻松实现各种智能项目。通过这次测评,我深刻体会到了DFRobot产品的易用性和可靠性。无论是硬件选择还是软件编程,DFRobot都提供了详细的教程和支持,使得整个制作过程变得非常简单。

如果你也对智能小车或其他物联网项目感兴趣,我强烈推荐使用DFRobot的产品。它们不仅性能卓越,而且易于使用,是实现创意和项目的理想选择。


微信图片_20250727204822.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

硬件清单

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

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

mail