Piny w ESP32

Komunikacja UART

Piny GPIO1 (TX0) i GPIO3 (RX0) są używane do komunikacji UART z komputerem przez USB więc nie powinny być stosowane w innym celu.

Piny GPIO36 (VP), GPIO39 (VN), GPIO34, and GPIO35 mogą być używane tylko w trybie INPUT, nie posiadają wbudowanego pull-up ani pull-down rezystora.

Aby używać UART2, wystarczy dodać Serial2.begin() w funkcji setup(), a następnie używać Serial2.println() do wysyłania wiadomości. Wiadomości wysyłane przez UART2 nie będą wyświetlane w monitorze portu szeregowego, ponieważ UART2 nie jest podłączony do portu USB komputera.

Domyślnie interfejs UART2 jest przypisany do pinów GPIO16 (RX2) i GPIO17 (TX2), ale można je zmienić podczas konfiguracji.

Interfejs UART1 domyślnie korzysta z pinów używanych przez pamięć flash ESP32. Można go jednak używać, wybierając dowolne piny, dzięki funkcji GPIO matrix w ESP32. Poniższy kod pozwala na utworzenie interfejsu szeregowego na pinach GPIO14 i GPIO12, korzystając z magistrali UART1.

void setup() {
  /*
  * UART1  -> Serial1
  * RX Pin -> GPIO 14
  * TX Pin -> GPIO 12
  * UART Configuration -> SERIAL_8N1
  */
  Serial1.begin(115200,SERIAL_8N1,14,12);

}

void loop() {
  Serial1.println("Hello from UART1");
  delay(100);
}

Strapping pins

Niektóre piny mają unikalną funkcję podczas uruchamiania ESP32.
Służą do przełączania ESP32 w tryb BOOT (aby uruchomić program zapisany w pamięci flash) lub w tryb FLASH (aby przesłać program do pamięci flash). W zależności od napięcia na tych pinach, ESP32 uruchomi się w jednym z tych trybów.
Piny strapping to: GPIO0, GPIO2, GPIO12 (MTDI) i GPIO15 (MTDO). Można ich używać do innych celów, ale należy zachować ostrożność przy ustawianiu stanu logicznego (3.3V lub 0V) za pomocą zewnętrznych rezystorów pull-up lub pull-down.

Piny zmieniające stan podczas uruchamiania

Podczas rozruchu ESP32 niektóre piny przez krótki czas szybko zmieniają swój stan logiczny (0V → 3.3V). Może to powodować nieprzewidziane zachowania, np. chwilowe aktywowanie przekaźnika. Problem dotyczy następujących pinów:

  • GPIO 1 – Wysyła logi rozruchowe ESP32 przez UART
  • GPIO 3 – Ma napięcie 3.3V podczas uruchamiania
  • GPIO 5 – Wysyła sygnał PWM podczas uruchamiania
  • GPIO 14 – Wysyła sygnał PWM podczas uruchamiania
  • GPIO 15 – Wysyła logi rozruchowe ESP32 przez UART

Pin EN

Pin EN umożliwia włączanie i wyłączanie ESP32 za pomocą zewnętrznego przewodu. Jest on połączony z przyciskiem EN na płytce.
Kiedy ESP32 jest włączone, na pinie EN występuje napięcie 3.3V. Jeśli podłączysz ten pin do masy (GND), ESP32 się wyłączy. Można to wykorzystać np. do umieszczenia ESP32 w obudowie i sterowania jego zasilaniem za pomocą przełącznika.

Pozostałe piny GPIO

Większość pozostałych pinów GPIO nie ma szczególnych ograniczeń.

Piny ESP32 są znacznie bardziej modułowe niż w Arduino. Możesz przypisać interfejsy UART, I2C, SPI i PWM do dowolnych pinów. W przeciwieństwie do Arduino Uno, gdzie np. interfejs SPI był dostępny tylko na pinach 10, 11, 12 i 13, w ESP32 możesz samodzielnie wybrać odpowiednie piny.
Jedynie ADC (przetwornik analogowo-cyfrowy) oraz sensory pojemnościowe są przypisane do stałych pinów.

Leave a Comment

Scroll to Top