Kamod ESP32-C3 (PL)
From Kamamilabs.com - Wiki

Opis
Kamod ESP32-C3 - Płytka rozwojowa z układem ESP32-C3 Mini-1
Kamod ESP32-C3 jest układem opartym na zintegrowanym module mikrokontrolera ESP32-C3 Mini-1 firmy Espressif. ESP32-C3 Mini-1 zawiera 32-bitowy jednordzeniowy mikrokontroler SoC o architekturze RISC-V i maksymalnej częstotliwości taktowania 160 MHz. Dzięki 22 konfigurowalnym wejściom GPIO, 400 KB wewnętrznej pamięci RAM i obsłudze trybu niskiego zużycia energii, może być stosowany w różnych zastosowaniach związanych na przykład z układami IoT, systemami nadzoru lub sterowania. MCU jest dostępny w wielu wariantach ze zintegrowaną i zewnętrzną pamięcią flash. Wysoka maksymalna temperatura pracy sprawia, że idealnie nadaje się do zastosowań przemysłowych. Możliwości stosowania ESP32- C3 znacznie poszerzają wbudowane radiowe interfejsy Wi-Fi i Bluetooth 5 (LE) z obsługą dalekiego zasięgu (LR). Bezpieczeństwo aplikacji zapewniają funkcje bezpiecznego rozruchu oparty na RSA-3072 i szyfrowanie flash z AES-128/256-XTS.
Moduł Kamod ESP32 C3 jest przeznaczony do uruchomiania i testowania własnych aplikacji na przykład w środowisku Arduino, lub w języku Rust . Pomocne w tym mogą być umieszczone na płytce modułu układy peryferyjne: dokładny czujnik temperatury i wilgotności SHTC3, oraz czujnik MEMS typu ICM42670 zawierający 3-osiowy żyroskop i 3-osiowy akcelerometr. Dodatkowo do testów można wykorzystać diodę LED podłączoną do jednego z portów mikrokontrolera i programowaną 3-kolorową diodę WS28212.
Moduł jest zasilany napięciem +5V dostarczanym przez złącze USB-C, lub napięciem z baterii Li-Jon. Napięcie +3,3V zasilające mikrokontroler i układy peryferyjne wytwarza przetwornica Buck DC/DC typu SY8088 o napięciu wejściowym z zakresu 2.5….5V. Po zaniku napięcia ze złącza USB-C zasilanie przełącza się automatycznie na baterię (jeżeli jest podłączona). Układ zasilania bateryjnego jest uzupełniony o ładowarkę baterii Li-Jon opartą o układ MCP7383 zasilany z napięcia VBUS +5V pochodzącego ze złącza USB-C.
Podstawowe cechy i parametry
- Moduł ESP32C3 Mini-1
- IEEE 802.11 b/g/n-compliant
- Bluetooth 5, Bluetooth
- 32-bit RISC-V jednordzeniowy taktowanie do160MHz
- 384 KB ROM
- 400 KB SRAM (16 KB pamięć cache)
- 8 KB SRAM dla modułu RTC
- 22 × programowanych linii GPIO
- 3 × SPI
- 2 × UART
- 1 × I2C
- 1 × I2S
- 2 × 54-bit uniwersalnych timerów
- 3 × watchdog timers
- 1 × 52-bit system timer
- Remote Control Peripheral (RMT)
- LED PWM controller (LEDC)
- Full-speed USB Serial/JTAG controller
- General DMA controller (GDMA)
- 1 × TWAI®
- 2 × przetwornik 12-bit SAR ADCs, do 6 kanałów
- 1 × sensor temperatury
- Akcelerometr ICM42670
- Trójosiowy żyroskop MEMS Czujniki prędkości kątowej osi X, Y i Z z wyjściem cyfrowym (z programowalnym zakresem pełnej skali ±250, ±500, ±1000 i ±2000 stopni/sek.
- Trójosiowy akcelerometr MEMS osi X, Y i Z z wyjściem cyfrowym i programowalnym zakresem pełnej skali ±2 g, ±4 g, ±8 g i +16 g
- Zasilanie od+1.7V do +3,3V
- Interfejs komunikacyjny I3C, I2C, SPI
- Termometr/higometr SHTC3
- Zakres pomiaru wilgotności 0…100%RH z dokładnością +/- 2%
- Zakres pomiaru temperatury -40 do +125 °C. Dokładność pomiaru +/-0.2°C w zakresie od 0°C do +60°C
- Napięcie zasilania od+1.6V do +3,6V
- Interfejs komunikacyjny I2C
- Przetwornica DC/DC SY8088
- Układ ładowarki baterii Li-JON MCP73831
- Programowana dioda WS2812
- Złącze USB-C
- Zasilanie modułu napięciem +5V
- Interfejs programujący pamięć Flash mikrokontrolera
- Interfejs JTAG
- Przyciski Reset i Boot
Wyposażenie standardowe
| Kod | Opis |
|---|---|
| KAmod ESP32-C3 |
Zmontowany i uruchomiony moduł |

Schemat elektryczny

Opis wyprowadzeń
Zasilanie układu
Standardowo moduł jest zasilany napięciem VBUS o wartości +5V ze złącza USB-C. To napięcie jest również wykorzystywane do ładowania pojedynczej celi baterii Li-Jon podłączonej do wyjścia Charger. Ładowaniem zajmuje się układ MCP7381 wykorzystujący algorytm ładowania o stałym natężeniu prądu/stałym napięciu z możliwością wyboru wstępnego kondycjonowania i zakończenia ładowania. Stała regulacja napięcia jest ustalona za pomocą czterech dostępnych opcji: 4,20 V, 4,35 V, 4,40 V lub 4,50. Stała wartość prądu jest ustawiana za pomocą jednego zewnętrznego rezystora. W naszym przypadku prąd ładowania to 100mA, a napięcie wyjściowe 4,20V.
Konfiguracja środowiska Arduino i program testowy
Czynności wstępne
Podłączany moduł Kamod ESP-C3 do komputera z zainstalowanym środowiskiem Arduino IDE. W oknie wyboru modułu wybieramy moduł ESP32C3 Dev Module i wirtualny port szeregowy COMx z którym moduł jest połączony.

W naszej procedurze testowej będziemy używali okna terminala, w którym będą wyświetlanie wyniki działania programu. Żeby to było możliwe trzeba odblokować domyślnie zablokowaną opcję USB CDC On Boot

Konfiguracja okna preferences
Otwieramy okno preferencji File->Preferences. W polu Additional boards manager ULRs zakładki Settings wpisujemy adres https://dl.espressif.com/dl/package_esp32_index.json

Wybór typu procesora dla programowanego modułu
Wybieramy kolejno zakładkę Tools, następnie Board, rodzinę procesorów esp32 i moduł z procesorem ESP32C3. Każda zmiana modułu podłączonego do komputera przez USB będzie wymagała powtórzenia tego kroku. Jeżeli nie wykonamy go na początku, to można go wykonać przed kompilacją. W przeciwnym razie projekt nie zostanie prawidłowo skompilowany.

Instalowanie bibliotek
Program testowy wymaga zainstalowania bibliotek obsługujących układy peryferyjne: akcelerometr ICM42670P, termometr/higrometr SHTC3 i 3-kolorową diodę LED typu WS2812B.
Instalowanie biblioteki do obsługi układu ICM42670P
Klikamy na pionowym pasku narzędzi ikonę bibliotek. W oknie wyszukiwanie wpisujemy ICM42670, wybieramy ICM42670P by TDK/Invensense i klikamy Install.

Instalowanie biblioteki do obsługi układu SHTC3
Wybieramy bibliotekę Adafruit SHTC3 Library dostarczaną przez Adafruit. Ta biblioteka wymaga doinstalowania koniecznych współpracujących z nią innych bibliotek. Aby to zrobić w wyskakującym dodatkowym oknie Install library dependencies klikamy Install All.

Instalowanie biblioteki obsługującej 3-kolorową diodę RGB typu WS2812
Do sterowania 3-kolorowej diody RGB wykorzystamy bibliotekę dostarczana przez Adafruit - Adafruit NeoPixel

Obsługa akcelerometru ICM42670P
ICM42670P jest połączony z mikrokontrolerem za pomocą magistrali I2C. Do jej obsługi jest przeznaczona biblioteka Wire. Do inicjowania interfejsu I2S jest używana metoda begin z argumentami określającymi linie portów przypisane do sygnałów SDA i SCL
#define I2C_SDA 10 //SDA IO10
#define I2C_SCL 8 //SCL IO8
Wire.begin(I2C_SDA, I2C_SCL);
Obsługa termometru/higrometru SHTC3
Układ SHTC3 łączy się z mikrokontrolerem również za pomocą interfejsu I2C. Konfiguracja i inicjacja tego interfejsu została pokazana powyżej. Inicjalizacja biblioteki układu SHTC3 jest wykonywana standardowo przez metodę begin.
shtc3.begin();
Odczytywanie i konwersję wartości temperatury wykonuje metoda htc3.getEvent
htc3.getEvent(&humidity, &temp); // read temp and humidity
Dane wyjściowe są umieszczane w zmiennych temp.temperature i humidity.relative_humidity i można je bezpośrednio wyświetlić.
Przykładowy wydruk odczytanych danych z czujnika SHTC3 na konsoli znakowej Arduino IDE

Obsługa diody RGB WS2812B
Tworzymy instancję WS2812B, w której określamy: ilość diod WS2812 połączonych w łańcuchu (NUM_PIXELS), oraz numer portu linii danych (PIN_WS2812B). Pozostałe parametry można zostawić domyślnie. U nas jest jedna dioda (NUM_PIXELS = 1) podłączona do linii poru DO2 (PIN_WS2812B =2)
#define PIN_WS2812B 2 // ESP32 pin that connects to WS2812B
#define NUM_PIXELS 1 // The number of LEDs (pixels) on WS2812B
Adafruit_NeoPixel WS2812B(NUM_PIXELS, PIN_WS2812B, NEO_GRB + NEO_KHZ800);
Inicjalizacja drivera jest standardowo wykonywana przez metodę begin:
WS2812B.begin(); //WS2812 driver config
Metoda setBrightness służy do ustawiania jasności świecenia wszystkich diod
WS2812B.setBrightness(50); //WS8212 brightness
Metoda clear wygasza wszystkie diody, a metoda setPixelColor określa składowe koloru dla każdej z diod.
WS2812B.setPixelColor(0, WS2812B.Color(255, 0, 0)); //kolor czerwony
Skutki działania metod clear i setPixelColor są widoczne po wywołaniu metody show:
WS2812B.show();
Sprawdzanie działania modułu WiFi
Program testowy
Program testowy ma zadanie przetestować wszystkie komponenty umieszczone na płytce modułu. Test składa się z kolejnych kroków:
- Zapaleniu diody czerwonej LED podłączonej do linii portu IO7
- Odczytaniu i wyświetleniu w konsoli Arduino IDE odczytanych danych z ICM42670P
- Odczytaniu i wyświetleniu w konsoli Arduino IDE odczytanych danych z SHTC3
- Skanowaniu sieci WIFI i wyświetleniu w konsoli Arduino IDE identyfikatorów SSID siłę sygnału radiowego, numer kanału WIFI i rodzaj kodowania danych w sieci dla każdej ze znalezionych sieci
- Zgaszeniu czerwonej diody LED
- Zapaleniu co 0,5 sekundy kolejnych diod WS2812B czerwonej, zielonej i niebieskiej
- Zgaszeniu wszystkich diod WS2812B i rozpoczęciu testu od nowa
Poniżej pokazany jest fragment ekranu konsoli znakowej Arduino IDE wyświetlający jeden przebieg programu testowego