Files
Rader_Success_5/src/main.cpp

80 lines
2.6 KiB
C++
Raw Normal View History

#include <Arduino.h>
#include <WiFi.h>
#include <esp_task_wdt.h>
#include <ArduinoJson.h>
#include <Preferences.h>
#include "wifi_manager.h"
#include "radar_manager.h"
#include "data_processor.h"
#include "emotion_analyzer_simple.h"
#include "tasks_manager.h"
Preferences preferences; // Flash存储对象
WiFiManager wifiManager; // WiFi管理器对象
uint16_t currentDeviceId = 0000; // 当前设备ID
void checkBootButton();
void loadDeviceId();
/**
* @brief
*
*/
void setup() {
Serial.begin(115200); // 初始化串口通信
checkBootButton(); // 检查Boot按钮状态
analogWrite(CONFIG_CLEAR_PIN, 0); // 关闭配置清除指示灯
WiFi.onEvent(WiFiEvent); // 注册WiFi事件处理函数
setNetworkStatus(NET_INITIAL); // 初始化网络状态
esp_task_wdt_init(30, true); // 初始化看门狗定时器
esp_task_wdt_add(NULL); // 将主任务添加到看门狗
preferences.begin("radar_data", false); // 初始化Flash存储
loadDeviceId(); // 加载设备ID
initRadarManager(); // 初始化雷达管理器
initAllTasks(); // 创建所有FreeRTOS任务
if (WiFi.status() == WL_CONNECTED) // 启动时发送睡眠数据
sendSleepDataToInfluxDB();
Serial.println("✅ 系统初始化完成");
}
/**
* @brief
*
*/
void loop() {
esp_task_wdt_reset();
vTaskDelay(100 / portTICK_PERIOD_MS);
}
/**
* @brief Boot按钮状态
* Boot按钮是否松开
*/
void checkBootButton() {
pinMode(BOOT_BUTTON_PIN, INPUT_PULLUP);
delay(10);
if (digitalRead(BOOT_BUTTON_PIN) == LOW) {
Serial.println("⚠️ 检测到Boot按钮按下请释放按钮后继续启动");
while (digitalRead(BOOT_BUTTON_PIN) == LOW) {
delay(50);
}
Serial.println("✅ Boot按钮已释放正常启动");
}
}
/**
* @brief ID
* Flash中读取保存的设备IDFlash中没有则使用默认值1001并保存
*/
void loadDeviceId() {
if (preferences.isKey("deviceId")) {
currentDeviceId = preferences.getUShort("deviceId", 1001);
} else {
currentDeviceId = 1001;
preferences.putUShort("deviceId", currentDeviceId);
Serial.printf("Flash中无设备ID使用默认值1001并保存\n");
}
Serial.printf("从Flash加载设备ID: %u\n", currentDeviceId);
}