feat: moods, emotions, needs
This commit is contained in:
@@ -164,13 +164,19 @@ Content-Type: application/json
|
||||
|
||||
### Konfiguracja WiFi
|
||||
|
||||
Dane sieci są na razie hardcoded w `src/main.cpp`:
|
||||
Dane sieci przechowywane są w pliku `data/config.json` na LittleFS (osobny obszar flash). Plik **nie jest commitowany do repozytorium** (`.gitignore`).
|
||||
|
||||
```cpp
|
||||
const char *WIFI_SSID = "twoja_siec";
|
||||
const char *WIFI_PASS = "twoje_haslo";
|
||||
```json
|
||||
{
|
||||
"wifi": {
|
||||
"ssid": "twoja_siec",
|
||||
"password": "twoje_haslo"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Plik wgrywany jest osobnym poleceniem (`task uploadfs`) — zmiana WiFi nie wymaga rekompilacji firmware.
|
||||
|
||||
---
|
||||
|
||||
## Instalacja i build
|
||||
@@ -178,13 +184,36 @@ const char *WIFI_PASS = "twoje_haslo";
|
||||
### Wymagania
|
||||
|
||||
- [PlatformIO](https://platformio.org/) (CLI lub VS Code extension)
|
||||
- [Task](https://taskfile.dev/) (`brew install go-task`)
|
||||
|
||||
### Build i upload
|
||||
### Pierwsze uruchomienie
|
||||
|
||||
```bash
|
||||
cd esp32-c6
|
||||
pio run --target upload
|
||||
pio device monitor
|
||||
cp data/config.json.example data/config.json # lub edytuj ręcznie
|
||||
# uzupełnij ssid i password w data/config.json
|
||||
|
||||
task flash-monitor # uploadfs + upload + monitor
|
||||
```
|
||||
|
||||
### Typowe komendy
|
||||
|
||||
| Komenda | Opis |
|
||||
|---------|------|
|
||||
| `task build` | Tylko kompilacja |
|
||||
| `task flash` | Wgraj filesystem + firmware |
|
||||
| `task upload` | Wgraj tylko firmware |
|
||||
| `task uploadfs` | Wgraj tylko `data/config.json` |
|
||||
| `task monitor` | Monitor portu szeregowego |
|
||||
| `task flash-monitor` | Pełne wgranie + monitor |
|
||||
| `task config-upload` | Edytuj config WiFi + wgraj FS |
|
||||
| `task erase-flash` | Skasuj flash i wgraj od nowa |
|
||||
| `task` | Lista wszystkich zadań |
|
||||
|
||||
### Zmiana WiFi bez rekompilacji
|
||||
|
||||
```bash
|
||||
# Edytuj data/config.json, potem:
|
||||
task uploadfs
|
||||
```
|
||||
|
||||
### Zależności (pobierane automatycznie)
|
||||
@@ -196,46 +225,32 @@ bblanchon/ArduinoJson@^7.2.1
|
||||
mathieucarbou/ESPAsyncWebServer@^3.3.12
|
||||
```
|
||||
|
||||
### platformio.ini
|
||||
|
||||
```ini
|
||||
[env:esp32-c6]
|
||||
platform = https://github.com/pioarduino/platform-espressif32/releases/download/stable/platform-espressif32.zip
|
||||
board = seeed_xiao_esp32c6
|
||||
framework = arduino
|
||||
lib_deps =
|
||||
olikraus/U8g2
|
||||
acrandal/RevEng PAJ7620
|
||||
bblanchon/ArduinoJson@^7.2.1
|
||||
mathieucarbou/ESPAsyncWebServer@^3.3.12
|
||||
build_flags = -std=gnu++17
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Architektura kodu
|
||||
|
||||
Cały projekt mieści się w jednym pliku `src/main.cpp` (~650 linii).
|
||||
Cały projekt mieści się w jednym pliku `src/main.cpp` (~700 linii).
|
||||
|
||||
```
|
||||
setup()
|
||||
Wire.begin(22, 23) ← I2C0 HP dla obu urządzeń
|
||||
u8g2.begin() ← SSD1306 HW I2C
|
||||
sensor.begin(&Wire) ← PAJ7620 HW I2C
|
||||
loadWiFiConfig() ← LittleFS /config.json → WIFI_SSID/PASS
|
||||
Wire.begin(22, 23) ← I2C0 HP dla obu urządzeń
|
||||
u8g2.begin() ← SSD1306 HW I2C
|
||||
sensor.begin(&Wire) ← PAJ7620 HW I2C
|
||||
connectWiFi()
|
||||
configTzTime(...) ← NTP sync
|
||||
setupHttpServer() ← AsyncWebServer port 80
|
||||
configTzTime(...) ← NTP sync
|
||||
setupHttpServer() ← AsyncWebServer port 80
|
||||
|
||||
loop() ← ~200 fps bez rysowania
|
||||
sensor.readGesture() ← polling co 500 ms
|
||||
loop() ← ~200 fps bez rysowania
|
||||
sensor.readGesture() ← polling co 500 ms
|
||||
handleGesture()
|
||||
executeAction() ← overlay na OLED
|
||||
fireWebhook() ← FreeRTOS task (async)
|
||||
executeAction() ← overlay na OLED
|
||||
fireWebhook() ← FreeRTOS task (async)
|
||||
setBuddyMood()
|
||||
updateBuddyAnim() ← tick co 50 ms (stan)
|
||||
showBuddyScreen() ← rysowanie co 50 ms (~20 fps)
|
||||
showDateTimeScreen() ← overlay jeśli aktywny
|
||||
showWiFiStatusScreen() ← overlay jeśli aktywny
|
||||
updateBuddyAnim() ← tick co 50 ms (stan)
|
||||
showBuddyScreen() ← rysowanie co 50 ms (~20 fps)
|
||||
showDateTimeScreen() ← overlay jeśli aktywny
|
||||
showWiFiStatusScreen() ← overlay jeśli aktywny
|
||||
```
|
||||
|
||||
### Kluczowe decyzje techniczne
|
||||
|
||||
Reference in New Issue
Block a user