forked from Akcelerometry_drgania_WMT/PI_mikrokontroler
74026a3ce0cb2f3d0c2d890714cb60cf10c10e38
Urzędzenie do pomiaru drgań (akcelerometry)
autorzy: A. Chmielowiec, L. Klich
Firmware do urządzenia ESP32S3 PSRAM.
Przyciski
- UP: przełączanie trybu
- START: start pomiaru
- DOWN: konfiguracja pomiaru
Przy starcie:
- UP + DOWN: reset do ustawień domyślnych
- OK: ustawienie daty i godziny
Zapraszamy studentów do rozwijania projektu.
IDE: PlatformIO
Jak student może się zaangażować w projekt?
- Zaprojektowanie obudowy w 3D dla urządzenia i czujników.
- Budowanie urządzeń prototypowych wg dokumentacji.
- Testowanie działania i zgłaszanie błędów.
- Rozwijanie dokumentacji.
- Rozwijanie firmware urządzenia.
- Stworzenie oprogramowania WEB i REST API do akwizycji danych, filtrowania, wyświetlania i analizy danych z urządzenia.
Założenia do projektu
- Pomiar drgań przy pomocy akcelerometrów (moduły ADXL345) podłączone przez SPI.
- Automatyczne wykrywanie podłączonych akcelerometrów (maksymalnie 4 ze wzlędu na brak GPIO, docelowo więcej).
- Jednoczesny pomiar próbki z każdego podłączonego akcelerometru i zapis do bufora PSRAM, po zakończeniu akwizycji na kartę SD.
- Każda partia pomiaru składa się z wielu próbek (szybkość zależna od ilości podłączonych).
- Pomiar o konfigurowalnym czasie próbkowania (domyśłnie 5 sekund).
- Pomiar zapisywany do pliku binarnego na karcie SD. Karta musi być sformatowana w systemie FAT. Foldery są automatycznie tworzone i nazywane numerami (1, 2, 3, etc). W każdym folderze zapisywane są binarne pliki odczytów nazwie xxxxxxx.wmt, na przykład 00000001.wmt, gdzie numer oznacza numer kolejnego pomiaru. W każdym pliku zapisany jest pełen pomiar, tzn x sekund (czas pomiaru) ze wszystkich podłączonych akcelerometrów. Jeśli ilość plików w folderze przekroczy 400, tworzony jest koleny folder o wyższym numerze i urządzenie zapisuje w nim pliki zaczynająć od 00000001.wmt. Po restarcie urządzenia karta SD jest skanowana i urządzenie kontynuuje zapis wg ciągłości numeracji. Zawartość karty SD na rysunku poniżej.
![]() |
|---|
| Rysunek 1. Zawartość katalogów na karcie SD |
![]() |
|---|
| Rysunek 1. Zawartość plików w katalogu na karcie SD |
Hardware
ESP32-S3-DEV-KIT-N8R8 - płytka rozwojowa WiFi + Bluetooth - Waveshare 24243 Indeks: WSR-23341
cena brutto: 49,90 zł. (Botland)
Kompaktowa płytka rozwojowa, z modułem ESP32-S3-WROOM-1-N8R8 od firmy Waveshare. Posiada dwurdzeniowy procesor Xtensa 32-bit LX7 (240 MHz), 512 KB SRAM, 8 MB Flash oraz 8 MB PSRAM. Zintegrowane układy CH343 i CH334 umożliwiają programowanie przez USB-C. To narzędzie zapewnia efektywność i wygodę w procesie rozwoju aplikacji dla ESP32-S3.
![]() |
|---|
| Rysunek 1. Moduł deweloperski ESP32S3 |
Specyfikacja techniczna
- Wbudowany układ: ESP32-S3-WROOM-1-N8R8 Procesor: dwurdzeniowy procesor Xtensa LX7 o częstotliwości 240 MHz
- PSRAM 8 MB (zewnętrzna pamięć pseudo-RAM do buforowania)
- SRAM (internal) 512 KB
- Flash 8 MB
- GPIO ~44 GPIO (przy PSRAM nie wszystkie dostępne fizycznie)
- Interfejsy: SPI (dostępne 2), I2C (2), UART (3), I2S
- USB-CDC (native USB) USB typu C
- WiFi 802.11 b/g/n (2.4 GHz)
- Bluetooth LE v5.0
- Kompatybilność: ESP-IDF, Arduino, MicroPython
- Wymiary: 63,3 x 25,4 mm
![]() |
|---|
| Rysunek 1. Pinout modułu ESP32S3 |
Uzasadnienie wyboru hardware
Testowałem: Raspberry PI 4 (za duży jitter), Raspberry PICO 2 W, STM32F429
- PSRAM 8MB - buforowanie dużych ilości danych z 8xADXL345 w blokach, zanim zapiszę karcie SD. Dzięki temu główna pamięć RAM jest nieprzeciążana.
- Dwa interfejsy SPI. VSPI dla ADXL345 (8x czujników, przełączanych CS). HSPI dla karty SD — separacja magistrali dla stabilnej pracy obu urządzeń.
- Procesor Xtensa LX7 Dual Core umożliwia obsługę intensywnych zadań SPI i SD w czasie rzeczywistym.
- ESP32-S3 nie ma wbudowanego RTC, zastosowałem precyzyjny kompensowany temperaturowo RTC DS3231 przez I2C.
- OLED Display 128x64 podłączony przez I2C.
Wady i ograniczenia ESP32
- Niekorzystne GPIO: część portów GPIO jest współdzielona z FLASH i PSRAM. Np. GPIO19/20 (USB), GPIO35-37 (PSRAM) są zajęte. Trzeba uważać przy pinout (SD/ADXL/OLED).
- Brak RTC z podtrzymaniem.
- SPI throughput SD: moliwe ograniczenie prędkości SD na SPI poniewa brak jest SDIO jak w STM32. Ale dla dużych bloków buforowanych w PSRAM jest ok.
- Potencjalne problemy z przerwaniami SPI: nie można mieszać przerwań w czasie zapisu SD i odczytu ADXL — trzeba dobrze zsynchronizować próbki.
- Średnia energooszczędność: przy rejestratorach zasilanych bateryjnie lepszy byłby ESP32-C3 lub STM32L4, ale one nie mają PSRAM.
Linki do dokumentacji:
Description
Languages
C++
98.6%
C
0.7%
Python
0.4%
CMake
0.3%



