Files
edc-mcu/main/main.c
T
2026-08-01 02:41:29 +08:00

82 lines
2.3 KiB
C

/**
* @file main.c
* @brief EDC 步进电机网页控制 (ESP-IDF)
*
* 硬件接线:
* ESP32 TX (GPIO6) -> 电机 RX
* ESP32 RX (GPIO7) -> 电机 TX
* ESP32 GPIO5 -> 电磁铁
* ESP32 GPIO4 -> 舵机
* ESP32 GPIO11 -> 协议 UART TX (→ MPU) (UART0)
* ESP32 GPIO12 -> 协议 UART RX (← MPU) (UART0)
* ESP32 GPIO2 -> I2C SDA (← MPU)
* ESP32 GPIO3 -> I2C SCL
* ESP32 GPIO27 -> RGB LED (WS2812)
* ESP32 GND -> 电机 GND / MPU GND
*
* 注: 日志控制台已切换到 USB Serial/JTAG (COM 口监视),
* UART0 (GPIO11/12) 专用于 MPU 协议通讯。
*
* WiFi: 连接 ICE (密码 12345678), 获取 IP 后用浏览器打开控制页面
*/
#include "emm_v5.h"
#include "magnet.h"
#include "servo.h"
#include "web_ctrl.h"
#include "protocol.h"
#include "rgb.h"
#include "actuator.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"
static const char *TAG = "MAIN";
void app_main(void)
{
/* 初始化 RGB LED (GPIO27, 最先启动, 指示系统状态) */
rgb_init(GPIO_NUM_27);
rgb_set(32, 32, 0); /* 黄色 (低亮), 表示启动中 */
/* 初始化执行器 (步进电机 + 舵机) */
actuator_init();
/* 初始化电磁铁 (GPIO5) */
magnet_init(GPIO_NUM_5);
/* 初始化通讯协议 (I2C 从机 GPIO2/3 + UART0 GPIO11/12) */
edc_proto_init(NULL);
/* 启动协议接收任务 */
xTaskCreate(edc_proto_task, "proto", 4096, NULL, 2, NULL);
/* 上电延时 2 秒, 等待电机闭环初始化完毕 */
ESP_LOGI(TAG, "等待电机初始化...");
vTaskDelay(pdMS_TO_TICKS(2000));
/* 启动 WiFi + HTTP 网页控制服务器 */
web_ctrl_init();
/* 系统就绪: 黄灯 (低亮) */
rgb_set(32, 32, 0);
rgb_set_state(RGB_STATE_IDLE);
ESP_LOGI(TAG, "系统就绪, 等待网页指令...");
while (1) {
/* 根据系统状态选择闪烁颜色 */
rgb_state_t st = rgb_get_state();
if (st == RGB_STATE_DONE) {
/* 绿灯慢闪: Cycle 执行完毕 */
rgb_set(0, 32, 0);
} else {
/* 黄灯慢闪: 待机 */
rgb_set(32, 32, 0);
}
vTaskDelay(pdMS_TO_TICKS(500));
rgb_off();
vTaskDelay(pdMS_TO_TICKS(500));
}
}