From af26d5c0718b375a9d91895d28057e622477412b Mon Sep 17 00:00:00 2001 From: Willem Oldemans Date: Sun, 24 Oct 2021 14:06:59 +0200 Subject: [PATCH] added OTA --- FW/leo_muziekdoos_esp32/platformio.ini | 2 + FW/leo_muziekdoos_esp32/src/game.cpp | 4 +- FW/leo_muziekdoos_esp32/src/game.h | 5 ++- FW/leo_muziekdoos_esp32/src/main.cpp | 9 ++-- FW/leo_muziekdoos_esp32/src/network.cpp | 11 +++++ FW/leo_muziekdoos_esp32/src/network.h | 4 ++ FW/leo_muziekdoos_esp32/src/ota.cpp | 60 +++++++++++++++++++++++++ FW/leo_muziekdoos_esp32/src/ota.h | 10 +++++ FW/leo_muziekdoos_esp32/src/power.cpp | 31 ++++++++----- FW/leo_muziekdoos_esp32/src/rfid.cpp | 1 - FW/leo_muziekdoos_esp32/src/secrets.h | 4 ++ 11 files changed, 123 insertions(+), 18 deletions(-) create mode 100644 FW/leo_muziekdoos_esp32/src/network.cpp create mode 100644 FW/leo_muziekdoos_esp32/src/network.h create mode 100644 FW/leo_muziekdoos_esp32/src/ota.cpp create mode 100644 FW/leo_muziekdoos_esp32/src/ota.h create mode 100644 FW/leo_muziekdoos_esp32/src/secrets.h diff --git a/FW/leo_muziekdoos_esp32/platformio.ini b/FW/leo_muziekdoos_esp32/platformio.ini index 9bebabe..4a8ea3f 100644 --- a/FW/leo_muziekdoos_esp32/platformio.ini +++ b/FW/leo_muziekdoos_esp32/platformio.ini @@ -18,3 +18,5 @@ lib_deps = monitor_speed = 115200 lib_ldf_mode = deep+ extra_scripts = ./littlefsbuilder.py +upload_protocol = espota +upload_port = 192.168.2.254 diff --git a/FW/leo_muziekdoos_esp32/src/game.cpp b/FW/leo_muziekdoos_esp32/src/game.cpp index 21c0b35..93222f8 100644 --- a/FW/leo_muziekdoos_esp32/src/game.cpp +++ b/FW/leo_muziekdoos_esp32/src/game.cpp @@ -28,7 +28,7 @@ void handleGame(void) if (hall_idle_count > HALLIDLESAMPLES) { hall_is_Idle = false; - hall_idle_count = 8; + hall_idle_count = HALLPLAYSAMPLES; } else { @@ -47,7 +47,7 @@ void handleGame(void) hall_idle_count--; } } - debugD("HallSensor: val=%d, delta=%d, count=%d, idle=%s\n", + Serial.printf("HallSensor: val=%d, delta=%d, count=%d, idle=%s\n", hall_sample, hall_delta, hall_idle_count, diff --git a/FW/leo_muziekdoos_esp32/src/game.h b/FW/leo_muziekdoos_esp32/src/game.h index de6baa1..6f97f69 100644 --- a/FW/leo_muziekdoos_esp32/src/game.h +++ b/FW/leo_muziekdoos_esp32/src/game.h @@ -5,8 +5,9 @@ #include "SerialDebug.h" #define HALLINTERVAL 100 -#define HALLIDLETHRESHOLD 3 -#define HALLIDLESAMPLES 3 +#define HALLIDLETHRESHOLD 4 +#define HALLIDLESAMPLES 4 +#define HALLPLAYSAMPLES 8 void initGame(void); void handleGame(void); diff --git a/FW/leo_muziekdoos_esp32/src/main.cpp b/FW/leo_muziekdoos_esp32/src/main.cpp index c77ade6..6429f15 100644 --- a/FW/leo_muziekdoos_esp32/src/main.cpp +++ b/FW/leo_muziekdoos_esp32/src/main.cpp @@ -6,6 +6,7 @@ #include "audio.h" #include "rfid.h" #include "config.h" +#include "ota.h" #include "game.h" @@ -18,8 +19,9 @@ void setup() initStorage(); initConfig(); + initOta(); initAudio(); - //initRfid(); + initRfid(); initGame(); @@ -30,7 +32,8 @@ void loop() debugHandle(); handleAudio(); - //handleRfid(); - handleGame(); + handleRfid(); + //handleGame(); handlePower(); + handleOta(); } diff --git a/FW/leo_muziekdoos_esp32/src/network.cpp b/FW/leo_muziekdoos_esp32/src/network.cpp new file mode 100644 index 0000000..c40da47 --- /dev/null +++ b/FW/leo_muziekdoos_esp32/src/network.cpp @@ -0,0 +1,11 @@ +#include "network.h" + +void initNetwork(void) +{ + +} + +void handleNetwork(void) +{ + +} \ No newline at end of file diff --git a/FW/leo_muziekdoos_esp32/src/network.h b/FW/leo_muziekdoos_esp32/src/network.h new file mode 100644 index 0000000..c1b459d --- /dev/null +++ b/FW/leo_muziekdoos_esp32/src/network.h @@ -0,0 +1,4 @@ +#pragma once + +void initNetwork(void); +void handleNetwork(void); diff --git a/FW/leo_muziekdoos_esp32/src/ota.cpp b/FW/leo_muziekdoos_esp32/src/ota.cpp new file mode 100644 index 0000000..a7ba43f --- /dev/null +++ b/FW/leo_muziekdoos_esp32/src/ota.cpp @@ -0,0 +1,60 @@ +#include "ota.h" + +const char *ssid = SECRET_SSID; +const char *password = SECRET_PASS; + +void initOta(void) +{ + // pinMode(led, OUTPUT); + // Serial.begin(115200); + // Serial.println("Booting"); + WiFi.mode(WIFI_STA); + WiFi.begin(SECRET_SSID, SECRET_PASS); + while (WiFi.waitForConnectResult() != WL_CONNECTED) { + Serial.println("Connection Failed! Retry..."); + delay(1000); + } + // Port defaults to 3232 + // ArduinoOTA.setPort(3232); + // Hostname defaults to esp3232-[MAC] + ArduinoOTA.setHostname("muziekdoos"); + // No authentication by default + // ArduinoOTA.setPassword("admin"); + // Password can be set with it's md5 value as well + // MD5(admin) = 21232f297a57a5a743894a0e4a801fc3 + // ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3"); + ArduinoOTA + .onStart([]() { + String type; + if (ArduinoOTA.getCommand() == U_FLASH) + type = "sketch"; + else // U_SPIFFS + type = "filesystem"; + // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end() + Serial.println("Start updating " + type); + }) + .onEnd([]() { + Serial.println("\nEnd"); + }) + .onProgress([](unsigned int progress, unsigned int total) { + Serial.printf("Progress: %u%%\r", (progress / (total / 100))); + }) + .onError([](ota_error_t error) { + Serial.printf("Error[%u]: ", error); + if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed"); + else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed"); + else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed"); + else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed"); + else if (error == OTA_END_ERROR) Serial.println("End Failed"); + }); + ArduinoOTA.begin(); + Serial.println("Ready"); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); +} + +void handleOta(void) +{ + + ArduinoOTA.handle(); +} \ No newline at end of file diff --git a/FW/leo_muziekdoos_esp32/src/ota.h b/FW/leo_muziekdoos_esp32/src/ota.h new file mode 100644 index 0000000..79ed3bc --- /dev/null +++ b/FW/leo_muziekdoos_esp32/src/ota.h @@ -0,0 +1,10 @@ +#pragma once +#include "ArduinoOTA.h" +#include "secrets.h" +// #include +// #include +// #include +// #include + +void initOta(void); +void handleOta(void); \ No newline at end of file diff --git a/FW/leo_muziekdoos_esp32/src/power.cpp b/FW/leo_muziekdoos_esp32/src/power.cpp index 954ca62..218762d 100644 --- a/FW/leo_muziekdoos_esp32/src/power.cpp +++ b/FW/leo_muziekdoos_esp32/src/power.cpp @@ -12,18 +12,27 @@ void initPowerOn(void) { //disable brownout //WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector + if(digitalRead(PWR_BTN)) + { + //enable LDO + pinMode(PWR_HOLD, OUTPUT); + pinMode(PWR_BTN, INPUT); + digitalWrite(PWR_HOLD, HIGH); + powerbutton_released = false; + + //dac_sdMode + pinMode(DAC_SDMODE, OUTPUT); + digitalWrite(DAC_SDMODE, HIGH); + //powerstate = poweringOn; + //buttonPower.begin(); + } + else + { + ESP.deepSleep(10000); + } + - //enable LDO - pinMode(PWR_HOLD, OUTPUT); - pinMode(PWR_BTN, INPUT); - digitalWrite(PWR_HOLD, HIGH); - powerbutton_released = false; - //dac_sdMode - pinMode(DAC_SDMODE, OUTPUT); - digitalWrite(DAC_SDMODE, HIGH); - //powerstate = poweringOn; - //buttonPower.begin(); } @@ -43,6 +52,8 @@ void handlePower(void) debugHandle(); while(digitalRead(PWR_BTN)) {} digitalWrite(PWR_HOLD, LOW); + delay(1000); + ESP.restart(); } else{ powerbutton_released = true; diff --git a/FW/leo_muziekdoos_esp32/src/rfid.cpp b/FW/leo_muziekdoos_esp32/src/rfid.cpp index a84d357..f972a36 100644 --- a/FW/leo_muziekdoos_esp32/src/rfid.cpp +++ b/FW/leo_muziekdoos_esp32/src/rfid.cpp @@ -28,7 +28,6 @@ void initRfid() void handleRfid() { uint32_t timeNow = millis(); - //int8_t TagType = TRACK_NOTHING; if (timeNow - last_rfid_update > RFIDINTERVAL) { diff --git a/FW/leo_muziekdoos_esp32/src/secrets.h b/FW/leo_muziekdoos_esp32/src/secrets.h new file mode 100644 index 0000000..be0d14b --- /dev/null +++ b/FW/leo_muziekdoos_esp32/src/secrets.h @@ -0,0 +1,4 @@ +#pragma once + +#define SECRET_SSID "poes" +#define SECRET_PASS "Rijnstraat214" \ No newline at end of file