磁铁、舵机、网页控制、通信协议
This commit is contained in:
1 parent
230ad1254a
commit
40ee976236
17 files changed
+1879
-32
No files matched your search
+18
-31
@@ -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));
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user