Files
PI_mikrokontroler_2/README.md

116 lines
5.1 KiB
Markdown

# 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)