磁铁、舵机、网页控制、通信协议

This commit is contained in:
kirl committed 2026-07-29 21:11:16 +08:00
1 parent 230ad1254a
commit 40ee976236
17 files changed
+1879 -32

No files matched your search

+18 -31
View File
@@ -1,56 +1,43 @@
/**
* @file main.c
* @brief Emm_V5.0 步进闭环电机驱动演示 (ESP-IDF)
* @brief EDC 步进电机网页控制 (ESP-IDF)
*
* 硬件接线:
* ESP32 TX (GPIO6) -> 电机 RX
* ESP32 RX (GPIO7) -> 电机 TX
* ESP32 GPIO5 -> 电磁铁
* ESP32 GPIO4 -> 舵机
* ESP32 GND -> 电机 GND
*
* WiFi: 连接 ICE (密码 12345678), 获取 IP 后用浏览器打开控制页面
*/
#include "emm_v5.h"
#include "magnet.h"
#include "servo.h"
#include "web_ctrl.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
void app_main(void)
{
uint8_t rx_buf[128] = {0};
uint8_t rx_len;
/* 初始化驱动 (UART1, TX=GPIO6, RX=GPIO7, LED=GPIO2) */
/* 初始化电机驱动 (UART1, TX=GPIO6, RX=GPIO7, LED=GPIO2) */
Emm_V5_Init(UART_NUM_1, GPIO_NUM_6, GPIO_NUM_7);
/* 初始化电磁铁 (GPIO5) */
magnet_init(GPIO_NUM_5);
/* 初始化舵机 (GPIO4, 上限180° 下限0°) */
servo_init(GPIO_NUM_4);
/* 上电延时 2 秒, 等待电机闭环初始化完毕 */
ESP_LOGI("MAIN", "等待电机初始化...");
vTaskDelay(pdMS_TO_TICKS(2000));
/* ---- 速度模式演示 ---- */
ESP_LOGI("MAIN", "发送速度控制命令: 地址1, CW, 1000RPM, 加速度10");
Emm_V5_Vel_Control(1, 0, 100, 10, false);
/* 启动 WiFi + HTTP 网页控制服务器 */
web_ctrl_init();
/* 接收电机返回的数据 */
rx_len = Emm_V5_Receive_Data(rx_buf, sizeof(rx_buf));
/* 验证校验字节 (0x6B), 点亮/熄灭 LED */
if (rx_len > 0 && rx_buf[rx_len - 1] == 0x6B) {
gpio_set_level(EMM_V5_LED_GPIO, 1);
ESP_LOGI("MAIN", "通信正常 (校验通过, LED亮)");
} else {
gpio_set_level(EMM_V5_LED_GPIO, 0);
ESP_LOGW("MAIN", "通信异常 (校验失败, LED灭)");
}
/* 打印返回的原始数据 (调试用, 每个字节+1 避免与电机地址冲突) */
ESP_LOGI("MAIN", "返回数据长度: %d", rx_len);
if (rx_len > 0) {
printf("返回数据(+1偏移): ");
for (int i = 0; i < rx_len; i++) {
printf("%02X ", rx_buf[i] + 1);
}
printf("\n");
}
ESP_LOGI("MAIN", "演示完成, 程序挂起");
ESP_LOGI("MAIN", "系统就绪, 等待网页指令...");
while (1) {
vTaskDelay(pdMS_TO_TICKS(1000));
}