Actions

Kamod ESP32-C3 (PL): Difference between revisions

From Kamamilabs.com - Wiki

Line 170: Line 170:
Przykładowy wydruk odczytanych danych z czujnika SHTC3 na konsoli znakowej Arduino IDE
Przykładowy wydruk odczytanych danych z czujnika SHTC3 na konsoli znakowej Arduino IDE


======Obsługa diody RGB WS2812B ======
======<span style="color:#FFFFFF; background:#009999 ">Obsługa diody RGB WS2812B</span>======


=====Sprawdzanie działania modułu WiFi =====
=====Sprawdzanie działania modułu WiFi =====

Revision as of 18:32, 20 October 2025

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ł
1 x prosta listwa goldpin 12-pin raster 2,54 mm 1 x prosta listwa goldpin 16-pin raster 2,54 mm


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

Konfiguracja środowiska do programowania w języku Rust i programy testowe


Włączenie repozytorium Universe
Instalacja pakietów libssl-dev, libudev, kompilatora C/C++ clang i interpretera Python 3
Instalacja pakietów Rust i menadżera Cargo
Tworzenie projektu
Testowanie modułu – miganie diody D2 podłączonej do portu IO7
Testowanie modułu – odczyt danych z termometru SHTC3 i akceleratora ICM42670

Wymiary


Linki zewnętrzne