add init stage 5
This commit is contained in:
parent
197e1360d4
commit
42b0b8b81b
@ -51,12 +51,14 @@ void runStartupChecks() {
|
|||||||
"", "", "");
|
"", "", "");
|
||||||
delay(DELAY_FOR_STARTUP_CHECKS);
|
delay(DELAY_FOR_STARTUP_CHECKS);
|
||||||
|
|
||||||
// Этап 5: Проверка WiFi
|
// Этап 5: Инициализация WiFi и WebSocket
|
||||||
oledSetStage(5, TOTAL_STAGES);
|
oledSetStage(5, TOTAL_STAGES);
|
||||||
|
bool wifiOk = webServerInit();
|
||||||
|
bool wsOk = wsInit();
|
||||||
delay(DELAY_FOR_STARTUP_CHECKS);
|
delay(DELAY_FOR_STARTUP_CHECKS);
|
||||||
|
|
||||||
// Все проверки пройдены
|
// Все проверки пройдены
|
||||||
oledSetSystemReady(joyOk && servoOk && ultrasonicOk && actuatorsOk);
|
oledSetSystemReady(joyOk && servoOk && ultrasonicOk && actuatorsOk && wifiOk && wsOk);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
@ -67,9 +69,6 @@ void setup() {
|
|||||||
// Запуск проверок
|
// Запуск проверок
|
||||||
runStartupChecks();
|
runStartupChecks();
|
||||||
|
|
||||||
webServerInit();
|
|
||||||
wsInit();
|
|
||||||
|
|
||||||
robot.lastCmdMs = millis();
|
robot.lastCmdMs = millis();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -6,10 +6,13 @@
|
|||||||
#include "core/controller/controller.h"
|
#include "core/controller/controller.h"
|
||||||
#include "core/robot_state/robot_state.h"
|
#include "core/robot_state/robot_state.h"
|
||||||
#include "core/ultrasonic/ultrasonic.h"
|
#include "core/ultrasonic/ultrasonic.h"
|
||||||
#include "core/deprecate/lcd_status/lcd_status.h"
|
#include "core/display/body/body.h"
|
||||||
|
|
||||||
static WebServer server(80);
|
static WebServer server(80);
|
||||||
|
|
||||||
|
#define WIFI_RETRY_MAX 5
|
||||||
|
#define WIFI_RETRY_DELAY_MS 300
|
||||||
|
|
||||||
void handleRoot() {
|
void handleRoot() {
|
||||||
server.send_P(200, "text/html; charset=utf-8", INDEX_HTML);
|
server.send_P(200, "text/html; charset=utf-8", INDEX_HTML);
|
||||||
}
|
}
|
||||||
@ -65,7 +68,7 @@ void handleMode() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
lcdShowMode(modeToStr(robot.mode));
|
oledShowMode(modeToStr(robot.mode));
|
||||||
// lcdShowText("SERVICE MODE", "Waiting...");
|
// lcdShowText("SERVICE MODE", "Waiting...");
|
||||||
server.send(200, "text/plain",
|
server.send(200, "text/plain",
|
||||||
String("OK MODE=") + modeToStr(robot.mode));
|
String("OK MODE=") + modeToStr(robot.mode));
|
||||||
@ -88,28 +91,48 @@ void handleStatus() {
|
|||||||
server.send(200, "application/json", json);
|
server.send(200, "application/json", json);
|
||||||
}
|
}
|
||||||
|
|
||||||
void webServerInit() {
|
bool webServerInit() {
|
||||||
WiFi.mode(WIFI_STA);
|
WiFi.mode(WIFI_STA);
|
||||||
WiFi.begin(WIFI_SSID, WIFI_PASS);
|
WiFi.begin(WIFI_SSID, WIFI_PASS);
|
||||||
Serial.print("\nConnecting to Wi-Fi");
|
Serial.print("\nConnecting to Wi-Fi");
|
||||||
|
|
||||||
while (WiFi.status() != WL_CONNECTED) {
|
// Показываем экран подключения
|
||||||
|
char statusBuf[32];
|
||||||
|
snprintf(statusBuf, sizeof(statusBuf), "Retry 0/%d", WIFI_RETRY_MAX);
|
||||||
|
oledShowText("Connecting to WiFi...", statusBuf);
|
||||||
|
|
||||||
|
int retryCount = 0;
|
||||||
|
while (WiFi.status() != WL_CONNECTED && retryCount < WIFI_RETRY_MAX) {
|
||||||
Serial.print("\nRetry connecting to Wi-Fi");
|
Serial.print("\nRetry connecting to Wi-Fi");
|
||||||
delay(300);
|
delay(WIFI_RETRY_DELAY_MS);
|
||||||
|
retryCount++;
|
||||||
|
|
||||||
|
// Обновляем дисплей с номером попытки
|
||||||
|
snprintf(statusBuf, sizeof(statusBuf), "Retry %d/%d", retryCount, WIFI_RETRY_MAX);
|
||||||
|
oledShowText("Connecting to WiFi...", statusBuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (WiFi.status() == WL_CONNECTED) {
|
if (WiFi.status() == WL_CONNECTED) {
|
||||||
lcdShowWiFi(WIFI_SSID, WiFi.RSSI());
|
// Показываем успешное подключение
|
||||||
|
String ipStr = "IP: " + WiFi.localIP().toString();
|
||||||
|
oledShowText("WiFi: CONNECTED", ipStr.c_str());
|
||||||
Serial.print("\nConnected. IP: ");
|
Serial.print("\nConnected. IP: ");
|
||||||
Serial.println(WiFi.localIP());
|
Serial.println(WiFi.localIP());
|
||||||
|
|
||||||
|
// Настраиваем маршруты
|
||||||
|
server.on("/", handleRoot);
|
||||||
|
server.on("/cmd", handleCmd);
|
||||||
|
server.on("/speed", handleSpeed);
|
||||||
|
server.on("/mode", handleMode);
|
||||||
|
server.on("/status", handleStatus);
|
||||||
|
server.begin();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
server.on("/", handleRoot);
|
// Не удалось подключиться
|
||||||
server.on("/cmd", handleCmd);
|
oledShowText("WiFi: FAILED", "Check router/network");
|
||||||
server.on("/speed", handleSpeed);
|
Serial.println("\nWiFi connection failed");
|
||||||
server.on("/mode", handleMode);
|
return false;
|
||||||
server.on("/status", handleStatus);
|
|
||||||
server.begin();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void webServerLoop() {
|
void webServerLoop() {
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
void webServerInit();
|
bool webServerInit();
|
||||||
void webServerLoop();
|
void webServerLoop();
|
||||||
|
|||||||
@ -4,11 +4,12 @@
|
|||||||
#include "ws_server.h"
|
#include "ws_server.h"
|
||||||
#include "core/controller/controller.h"
|
#include "core/controller/controller.h"
|
||||||
#include "core/robot_state/robot_state.h"
|
#include "core/robot_state/robot_state.h"
|
||||||
#include "core/display/face/face.h"
|
#include "core/display/body/body.h"
|
||||||
|
|
||||||
static WebSocketsServer ws(81); // порт 81
|
static WebSocketsServer ws(81); // порт 81
|
||||||
|
|
||||||
static uint32_t lastWsCmdMs = 0;
|
static uint32_t lastWsCmdMs = 0;
|
||||||
|
static bool wsReady = false;
|
||||||
|
|
||||||
void wsEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length) {
|
void wsEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
@ -54,16 +55,16 @@ void wsEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (msg.startsWith("FACE:")) {
|
// else if (msg.startsWith("FACE:")) {
|
||||||
String v = msg.substring(5);
|
// String v = msg.substring(5);
|
||||||
v.toUpperCase();
|
// v.toUpperCase();
|
||||||
|
|
||||||
if (v == "HAPPY") faceSet(FACE_HAPPY);
|
// if (v == "HAPPY") faceSet(FACE_HAPPY);
|
||||||
else if (v == "ANGRY") faceSet(FACE_ANGRY);
|
// else if (v == "ANGRY") faceSet(FACE_ANGRY);
|
||||||
else if (v == "BORED") faceSet(FACE_BORED);
|
// else if (v == "BORED") faceSet(FACE_BORED);
|
||||||
else if (v == "SURPRISED") faceSet(FACE_SURPRISED);
|
// else if (v == "SURPRISED") faceSet(FACE_SURPRISED);
|
||||||
else faceSet(FACE_NEUTRAL);
|
// else faceSet(FACE_NEUTRAL);
|
||||||
}
|
// }
|
||||||
|
|
||||||
else if (msg.startsWith("SPEED:")) {
|
else if (msg.startsWith("SPEED:")) {
|
||||||
int v = msg.substring(6).toInt();
|
int v = msg.substring(6).toInt();
|
||||||
@ -77,9 +78,20 @@ void wsEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void wsInit() {
|
bool wsInit() {
|
||||||
|
// Показываем статус инициализации WebSocket
|
||||||
|
// oledShowText("WebSocket: INIT...", "Queue pending");
|
||||||
|
|
||||||
ws.begin();
|
ws.begin();
|
||||||
ws.onEvent(wsEvent);
|
ws.onEvent(wsEvent);
|
||||||
|
|
||||||
|
wsReady = true;
|
||||||
|
|
||||||
|
// Показываем успешную инициализацию
|
||||||
|
// oledShowText("WebSocket: READY", "Listening on :81");
|
||||||
|
Serial.println("WebSocket initialized on port 81");
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wsLoop() {
|
void wsLoop() {
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
void wsInit();
|
bool wsInit();
|
||||||
void wsLoop();
|
void wsLoop();
|
||||||
void wsBroadcastStatus();
|
void wsBroadcastStatus();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user