【引言】
近日,我有幸获得了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个反馈的脉冲信号。



【 软件编程】
使用Arduino 2.3.6 IDE编写程序,代码如下:
- #include <WiFi.h>
- #include <PubSubClient.h>
-
- // WiFi 配置
- const char* WIFI_SSID = "***";
- const char* WIFI_PASSWORD = "*********";
-
- // MQTT 配置
- const char* mqttServer = "192.168.31.12"; // 本地 SIoT V2 的 IP 地址
- const int mqttPort = 1883; // MQTT 端口
- const char* clientID = "esp32p4"; // 设备名称
- const char* mqttUser = "siot"; // MQTT 用户名
- const char* mqttPassword = "dfrobot"; // MQTT 密码
-
- WiFiClient espClient;
- PubSubClient client(espClient);
- // 发送消息的主题
- const char* publishTopic = "siot/light";
- // 订阅消息的主题
- const char* subscribeTopic = "siot/motor";
- // 电机控制引脚
- const int motor1M = 20; // 电机1方向控制
- const int motor1E = 21; // 电机1速度控制
- const int motor2M = 22; // 电机2方向控制
- const int motor2E = 23; // 电机2速度控制
-
- void setup_wifi() {
- delay(10);
- WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
- while (WiFi.status() != WL_CONNECTED) {
- delay(500);
- Serial.print(".");
- }
- Serial.println("WiFi connected");
- }
-
- void connect_mqtt() {
- client.setServer(mqttServer, mqttPort);
- while (!client.connected()) {
- if (client.connect(clientID, mqttUser, mqttPassword)) { // 使用用户名和密码连接
- Serial.println("Connected to MQTT Broker!");
- } else {
- Serial.print("Failed to connect to MQTT Broker, rc=");
- Serial.print(client.state());
- delay(5000);
- }
- }
- }
-
- // MQTT 消息回调函数
- void callback(char* topic, byte* payload, unsigned int length) {
- Serial.print("Message arrived [");
- Serial.print(topic);
- Serial.print("] ");
- String message;
- for (unsigned int i = 0; i < length; i++) {
- message += (char)payload[i];
- }
- Serial.println(message);
- if (message == "l") {
- // 左转
- digitalWrite(3, HIGH);
- digitalWrite(motor1M, LOW);
- analogWrite(motor1E, 200);
- digitalWrite(motor2M, LOW);
- analogWrite(motor2E, 255);
- } else if (message == "r") {
- // 右转
- digitalWrite(3, LOW);
- digitalWrite(motor1M, HIGH);
- analogWrite(motor1E, 255);
- digitalWrite(motor2M, HIGH);
- analogWrite(motor2E, 200);
- } else if (message == "s") {
- // 停止
- digitalWrite(motor1M, LOW);
- analogWrite(motor1E, 0);
- digitalWrite(motor2M, LOW);
- analogWrite(motor2E, 0);
- } else if (message == "f") {
- // 前进
- digitalWrite(motor1M, LOW);
- analogWrite(motor1E, 255);
- digitalWrite(motor2M, HIGH);
- analogWrite(motor2E, 255);
- } else if (message == "b") {
- // 后退
- digitalWrite(motor1M, HIGH);
- analogWrite(motor1E, 255);
- digitalWrite(motor2M, LOW);
- analogWrite(motor2E, 255);
- }
- }
-
- void setup() {
- Serial.begin(9600);
- pinMode(motor1M, OUTPUT);
- pinMode(motor1E, OUTPUT);
- pinMode(motor2M, OUTPUT);
- pinMode(motor2E, OUTPUT);
- pinMode(3, OUTPUT);
- setup_wifi();
- client.setCallback(callback);
- connect_mqtt();
- client.subscribe(subscribeTopic);
- client.publish(publishTopic, "hello");
- }
-
- void loop() {
- if (!client.connected()) {
- connect_mqtt();
- }
- client.loop();
- }
复制代码
【Mit inventor2汉化版WxBit 图形化编程】
使用Mit inventor2汉化版WxBit图形化编程制作的手机app,界面设计及代码如下:


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接收消息**:显示短暂提示信息消息内容。

【实际运行效果】

通过上述硬件和软件的结合,我成功制作了一个太阳能供电的智能小车。小车可以通过手机app进行控制,实现前进、后退、左转、右转和停止等功能。实际运行效果非常理想,小车响应迅速,运行平稳。
【演示视频】
【总结】
DFRobot FireBeetle 2 ESP32 P4开发板是一款功能强大、性能优越的开发板,结合DFRobot的其他组件,可以轻松实现各种智能项目。通过这次测评,我深刻体会到了DFRobot产品的易用性和可靠性。无论是硬件选择还是软件编程,DFRobot都提供了详细的教程和支持,使得整个制作过程变得非常简单。
如果你也对智能小车或其他物联网项目感兴趣,我强烈推荐使用DFRobot的产品。它们不仅性能卓越,而且易于使用,是实现创意和项目的理想选择。
|