KalkMate — Hardware i Zaawansowany Firmware IoT
Pełny proces badawczo-rozwojowy (R&D) inteligentnego kalkulatora KalkMate. Sercem najnowszej rewizji (v1.0.0, PCB v4) jest potężny, dwurdzeniowy układ ESP32-S3 z oprogramowaniem opartym o FreeRTOS. Projekt kładzie ogromny nacisk na cyberbezpieczeństwo i wydajność, wprowadzając autorskie mechanizmy takie jak Signed OTA (podpisy cyfrowe ECDSA), obfuskację kluczy kryptograficznych.
- Pamięć Flash / PSRAM
- 16 MB / 8 MB
- Szyfrowanie OTA
- ECDSA P-256
- Architektura MCU
- Dual-Core Xtensa LX7
Przegląd
Wraz z przejściem na rewizję PCB v4, projekt KalkMate ewoluował w dojrzały, wysoce bezpieczny produkt IoT, zoptymalizowany pod kątem działania w szkole i na egzaminach. Skok wydajnościowy w warstwie sprzętowej otworzył drogę do wdrożenia mechanizmów oprogramowania niespotykanych dotąd w projektach amatorskich.
Architektura Sprzętowa (Hardware) Nowym "mózgiem" urządzenia został moduł ESP32-S3-WROOM-1-N16R8 posiadający dwurdzeniowy procesor Xtensa LX7 (240 MHz), gigantyczną pamięć 16 MB na dane Flash (Quad-SPI) oraz 8 MB operacyjnej pamięci PSRAM (Octal-SPI).
{graph TD A[ESP32-S3-WROOM] -->|Interfejs SPI| B(Ekran OLED SSD1322) A -->|Magistrala I2C| C(Ekspander MCP23017) A -->|Równoległy 8-bit| D(Aparat OV2640) C --> E[Klawiatura 27 klawiszy] F[Zasilanie LiPo + Przetwornica MT3608 14.5V] --> A}
Architektura Pamięci i Firmware
Kod źródłowy urządzenia został stworzony modularnie we frameworku PlatformIO (Arduino ESP32 Core + FreeRTOS). Mikrokontroler wykorzystuje zaawansowane zarządzanie strukturą pamięci:
Dual Boot OTA (app0, app1): Dwie niezależne, fabryczne partycje (każda po 6.25 MB). Aktualizacje pobierane są "w tle" z możliwością automatycznego wycofania (rollback), jeśli nowa wersja ulegnie awarii (kernel panic) podczas rozruchu. Partycja NVS (Non-Volatile Storage): Izolowane bloki pamięci przechowujące poświadczenia sieci WiFi (WPA2/WPA3), licencje oraz kołowy magazyn historii zapytań AI. System Plików SPIFFS: Używany m.in. do buforowania pobranych z chmury notatek i arkuszy ze sprawdzianami. Cyberbezpieczeństwo, Izolacja i "Panic Key" KalkMate to inteligentne urządzenie przebywające w środowisku szkolnym – z tego względu wdrożyliśmy bezkompromisowe techniki zabezpieczeń.
Signed OTA (Zabezpieczenie przed Malware): Każda bezprzewodowa aktualizacja oprogramowania (OTA) jest chroniona kryptograficznie. Zanim kod trafi do pamięci Flash, urządzenie weryfikuje pobrany podpis cyfrowy (format DER) wykorzystując wbudowany klucz publiczny ECDSA P-256 oraz bibliotekę mbedtls. Podmienione pakiety serwerowe są natychmiast odrzucane.
Obfuskacja Kluczy API (Compile-time XOR): Tajny klucz komunikacyjny nie jest nigdzie zapisany w kodzie łańcuchowym jako czysty tekst. Podczas kompilacji wprowadzany jest do losowej maski (XOR). Odszyfrowanie następuje bezpośrednio w RAM tylko na ułamek sekundy przed wyjściem pakietu sieciowego, w 100% niwelując odczyt klucza komendą strings z pliku firmware.bin.
Systemowy Panic Key: Kalkulator posiada wyznaczony programowalny klawisz ewakuacyjny (mapowany w przestrzeni NVS), który wywołuje przerwanie, całkowicie maskuje funkcje AI i powraca do trybu tradycyjnego kalkulatora szkolnego.
Sprzętowa izolacja aparatu: Płyta główna zarządza aparatem OV2640 za pomocą pinu PWDN z ekspandera I2C. Po zrobieniu zdjęcia kamera jest zasilana tylko napięciem szczątkowym, co sprzętowo uniemożliwia nasłuch i "podglądanie" użytkownika z zewnątrz.
Komunikacja Sieciowa i Energooszczędność
Urządzenie łączy się z infrastrukturą w Next.js używając protokołu HTTPS (TLS 1.2/1.3). Zapytania opatrzone są odpowiednimi nagłówkami (x-device-id, x-license-key). Wysłany przez kamerę obraz (zabezpieczony przed atakami DoS po stronie serwera – max. 8MB) trafia ostatecznie do chmury obliczeniowej Google Gemini 2.5 Pro, by zwrócić uczniowi czytelne rozwiązanie na ekranie OLED.
{// Aktywna redukcja limitu Mocy Nadawczej (TX) radia WiFi do 11 dBm (~12.5 mW). // Cel: minimalizacja szczytowego spadku napięcia akumulatora pod dużym obciążeniem // oraz utrzymanie emisji wielokrotnie poniżej europejskiej normy 100 mW. WiFi.setTxPower(WIFI_POWER_11dBm); }
Rezultaty
- 16 MB / 8 MB
- Pamięć Flash / PSRAM
- ECDSA P-256
- Szyfrowanie OTA
- Dual-Core Xtensa LX7
- Architektura MCU