# 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. | ![Opis](docs/images/sd_content1.png) | |:--:| | **Rysunek 1.** Zawartość katalogów na karcie SD | | ![Opis](docs/images/sd_content2.png) | |:--:| | **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. | ![Opis](docs/images/esp32s3_1.png) | |:--:| | **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 | ![Opis](docs/images/esp32s3_2.jpeg) | |:--:| | **Rysunek 1.** Pinout modułu ESP32S3 | ## Uzasadnienie wyboru hardware **Testowałem**: Raspberry PI 4 (za duży jitter), Raspberry PICO 2 W, STM32F429 1. 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. 2. Dwa interfejsy SPI. VSPI dla ADXL345 (8x czujników, przełączanych CS). HSPI dla karty SD — separacja magistrali dla stabilnej pracy obu urządzeń. 3. Procesor Xtensa LX7 Dual Core umożliwia obsługę intensywnych zadań SPI i SD w czasie rzeczywistym. 4. ESP32-S3 nie ma wbudowanego RTC, zastosowałem precyzyjny kompensowany temperaturowo RTC DS3231 przez I2C. 5. 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: 1. [Objaśnienia](docs/abbreviations.md) 3. [Pinout](docs/pinout.md) 4. [Wyświetlacz LCD](docs/lcd.md) 5. [Akcelerometr](docs/gy291.md) 6. [Zegar RTC](docs/ds3231.md) 7. [Wymiary elementów](docs/sizes.md) 8. [Budowa](docs/building1.md) 9. [Wtyczka i czujnik](docs/plug.md) [Wersje systemu, poprawki, etc.](docs/versions.md)