Öğren

ESP32 DevKit V1 pinout: every pin, and which ones to avoid

Başlangıç

Ya da tüm dersleri gör.

  • 503parça tezgahta
  • 44kart şu an çalışıyor
  • 1.00xgerçek zamanlı, her kartta
ESP32 DevKit V1: D32'de bir potlive0.000 s 0.00x
Düzenleyicide açmak için tıkla
D32'deki (ADC1 kanal 4) 10 k pot, D4'teki bir LED'in parlaklığını ayarlar ve okuma yazdırılır.

Bu, çoğu kitin gönderdiği, üzerinde ESP32-WROOM-32 modülü bulunan DOIT kartı olan 30 pinli ESP32 DevKit V1 pinout'udur. İki header'ındaki her delik, aşağıdaki tabloda GPIO numarası, ne yapabildiği ve nelere dikkat edileceğiyle yer alır. Tablodan sonra güç pinleri, kartın hiç açılıp açılmayacağına karar veren strapping pinleri, yalnızca giriş pinleri, USB'nin ve flash'ın aldığı pinler ve hangi pinin ne için kullanılacağının listesi gelir.

Yukarıdaki devre, Mokxi'de çalışan o karttır: ADC1 kanal 4 olan D32'deki bir potansiyometre, D4'teki bir LED'i kısar ve ham okumayı yazdırır. Mokxi 38 pinli DevKitC'yi değil 30 pinli kartı modeller ve bu sayfadaki sayılar simülatörün çalıştırdığı aynı modelden okunur. Simülatörün çipten az yaptığı yerde sayfa bunu satırda söyler.

Header'daki her pin

Serigrafi GPIO n'ye "Dn" der, yani D23 GPIO 23'tür ve digitalWrite(23, HIGH) onu sürer. Birkaç delik bunun yerine görevleriyle adlandırılmıştır: VP ve VN GPIO 36 ve 39, TX0 ve RX0 GPIO 1 ve 3, TX2 ve RX2 GPIO 17 ve 16'dır. Tablo, USB soketi altta olacak şekilde sol header'da EN'den VIN'e, sonra sağda D23'ten 3V3'e iner.

Deliklerin sırası Mokxi'nin DOIT kartı okumasıdır ve klonlar son birkaçında farklıdır. Birçok 30 pinli kartta D0 deliği yoktur ve sağa ikinci bir GND koyar; birçoğunda sol header D12, D13, GND, VIN ile biter. Kartında basılı harflere göre git. Kodunun kullandığı GPIO numaraları değişmez.

Dokunma, DAC ve ADC2 tabloda, çünkü çipte var ve dersler kullanıyor. Mokxi üçünü de modellemez ve her satır bunu söyler.

ESP32 DevKit V1 (30 pin): sol header yukarıdan aşağı, sonra sağ
PinGPIONe yapabilirDikkat et
EN-Çip etkinleştirme, yani sıfırlama. Düşük, çipi sıfırlamada tutar; EN butonu bunu yapar.Not a GPIO.
VP36ADC1_CH0. Yalnızca giriş.Çıkış sürücüsü yok, iç pull-up ya da pull-down yok.
VN39ADC1_CH3. Yalnızca giriş.Çıkış sürücüsü yok, iç pull-up ya da pull-down yok.
D3434ADC1_CH6. Yalnızca giriş.Çıkış sürücüsü yok, iç pull-up ya da pull-down yok.
D3535ADC1_CH7. Yalnızca giriş.Çıkış sürücüsü yok, iç pull-up ya da pull-down yok.
D3232ADC1_CH4. PWM. Dokunma T9 (modellenmez).Güvenli bir çok yönlü pin.
D3333ADC1_CH5. PWM. Dokunma T8 (modellenmez).Güvenli bir çok yönlü pin.
D2525PWM. Çipte DAC1 ve ADC2_CH8 (modellenmez).WiFi açıkken ADC2 çalışmayı bırakır.
D2626PWM. Çipte DAC2 ve ADC2_CH9 (modellenmez).WiFi açıkken ADC2 çalışmayı bırakır.
D2727PWM. Çipte ADC2_CH7 ve dokunma T7 (modellenmez).WiFi açıkken ADC2 çalışmayı bırakır.
D1414PWM. Çipte ADC2_CH6 ve dokunma T6 (modellenmez).WiFi açıkken ADC2 çalışmayı bırakır.
D1212PWM. Çipte ADC2_CH5 ve dokunma T5 (modellenmez).Strapping pini: sıfırlamada yüksekse kart açılmaz.
GND-Ground.-
D1313PWM. Çipte ADC2_CH4 ve dokunma T4 (modellenmez).WiFi açıkken ADC2 çalışmayı bırakır.
VIN-USB'den gelen 5 V rayı. Kartı kablosuz çalıştırmak için buraya 5 V ver.Not a GPIO.
D2323PWM. SPI MOSI (varsayılan).-
D2222PWM. I2C SCL (varsayılan).-
TX01UART0 TX: Serial ve USB-seri çip.Boş bırak, yoksa yüklemeler ve seri monitör bozulur.
RX03UART0 RX: Serial ve USB-seri çip.Boş bırak, yoksa yüklemeler ve seri monitör bozulur.
D2121PWM. I2C SDA (varsayılan).-
D1919PWM. SPI MISO (varsayılan).-
D1818PWM. SPI SCK (varsayılan).-
D55PWM. SPI SS (varsayılan).Strapping pini: açılışta yüksüz bırak.
TX217PWM. Core 2.x derslerinde UART2 TX: Serial2.begin(9600, SERIAL_8N1, 16, 17).Core 3.x, pinler verilmezse Serial2'yi 4 ve 25'e koyar.
RX216PWM. Core 2.x derslerinde UART2 RX: Serial2.begin(9600, SERIAL_8N1, 16, 17).Core 3.x, pinler verilmezse Serial2'yi 4 ve 25'e koyar.
D44PWM. Çipte ADC2_CH0 ve dokunma T0 (modellenmez).Güvenli bir çıkış; örnekler buraya bir LED koyar.
D00PWM. Çipte ADC2_CH1 ve dokunma T1 (modellenmez). BOOT butonu.Strapping pini: sıfırlamada düşükse yüklemeyi bekler.
D22PWM. Çipte ADC2_CH2 ve dokunma T2 (modellenmez). Mavi LED, HIGH iken yanar.Strapping pini: yüklemek için düşük ya da havada olmalı.
D1515PWM. Çipte ADC2_CH3 ve dokunma T3 (modellenmez).Strapping pini: sıfırlamada düşükse boot mesajlarını susturur.
3V3-Regülatörün 3.3 V çıkışı.Not a GPIO.

Güç pinleri ve sınırları

VIN, USB soketinden gelen 5 V rayıdır. Kablo yokken VIN'e 5 V vererek kartı çalıştırabilirsin ve regülatör ondan 3.3 V üretir. 3V3 o regülatörün çıkışıdır: ESP32'yi ve ona bağladığın her şeyi besler, yani bir sensör sorun değil ama servo ya da motor öyle değil. GND topraktır.

Her GPIO 3.3 V'tur ve hiçbiri 5 V'a dayanıklı değildir. 5 V'luk bir sensör çıkışı, pine ulaşmadan önce bölücü ya da seviye dönüştürücü ister. Espressif'in veri sayfası, en güçlü sürüş ayarında akım verirken bir pine yaklaşık 40 mA tanır. Bunu hedef değil tavan say ve bir LED'i direnciyle 10 ile 20 mA'de tut.

Strapping pinleri: kartın açılmasını engelleyenler

Beş pin, çip sıfırlamadan çıktığı anda okunur ve okuduğu şey nasıl başlayacağına karar verir: GPIO 0, 2, 5, 12 ve 15. Kodun çalışmaya başlayınca bunlar sıradan pinlerdir, bu yüzden sorun yalnızca birine bağlı bir şey açılışta onu yanlış yönde tuttuğunda ortaya çıkar.

GPIO 0 BOOT butonudur. Sıfırlamada düşük tutulursa çip seninkini çalıştırmak yerine yeni bir program bekler, bu yüzden D0'ı düşüğe çeken bir buton ya da modül hiç başlamayan bir kart gibi görünür. GPIO 2 yüklemek için düşük ya da havada olmalıdır. GPIO 12 en çok ısırır: sıfırlamada yüksek olması çipe flash'ının 1.8 V'ta çalıştığını söyler, WROOM-32'nin flash'ı 3.3 V ister ve 12'yi yüksek tutan şey bırakana kadar kart açılmaz. Sıfırlamada düşük GPIO 15 seri porttaki boot mesajlarını susturur; zararsızdır ama kafa karıştırır.

Mokxi strapping'i modellemez. Simüle kart o pinlerdeki her şeyi başlatır, bu yüzden D12'yi yükseğe ya da D0'ı düşüğe çeken bir devre burada çalışsa da masada açılmayı reddedebilir. Kendi pull-up ya da pull-down'u olan her şeye bunun yerine güvenli pinlerden birini ver.

Yalnızca giriş pinleri: GPIO 34, 35, 36 ve 39

GPIO 34'ten 39'a girişte tampon var ve başka bir şey yok: çıkış sürücüsü yok, iç pull-up ya da pull-down yok. Dördü bu header'da: D34, D35, VP ve VN. İyi analog girişlerdir, hepsi ADC1'de ve hiç çıkış olamazlar. pinMode(34, OUTPUT) çipte hiçbir şey yapmaz ve INPUT_PULLUP da yapmaz, bu yüzden onlardan birindeki bir butonun kendi 10 k direncine ihtiyacı vardır.

Mokxi bu pinlerde çıkışı çipin yaptığı gibi reddeder, her denemeyi sayar ve kartın üzerine küçük bir kehribar işareti koyar; böylece bir kod, birini sürdüğüne inanamaz.

Kart üstü LED ile BOOT ve EN butonları

Mavi LED GPIO 2'dedir ve pin HIGH iken yanar. LED_BUILTIN 2'dir. GPIO 2 bir strapping pini olduğundan, kart açılırken LED'in yanıp yanmaması karttan karta değişir; pinMode çalışır çalışmaz oturur. Çoğu kartta diğer LED güç ışığıdır ve hiçbir pinde değildir.

BOOT, basılı tuttuğun sürece GPIO 0'ı düşüğe çeker; bu yüzden basılınca D0 LOW okur. EN sıfırlama butonudur. Mokxi'de kart üzerinde ikisine de tıklayabilirsin.

USB ve flash'ın kullandığı pinler

TX0 ve RX0, kartın USB-seri çipine bağlı UART0'dır ve her Serial.print ile her yüklemeyi taşır. Onlara bir şey bağlarsan yüklemeler başarısız olur ya da seri monitör çöple dolar, bu yüzden boş bırak. Mokxi'de Serial doğrudan seri monitöre ulaşır, yani simülatör bu çakışmayı göstermez; masa gösterir.

GPIO 6'dan 11'e programın üzerinden çalıştığı SPI flash'tır ve bu header'da hiç yoktur; bu iyi bir şey. 38 pinli DevKitC onları D0'dan D3'e, CMD ve CLK olarak çıkarır ve bunlar hiç kullanılmaması gereken pinlerdir. TX2 ve RX2, çoğu derste UART2'nin gittiği yerdir. Arduino-esp32 3.x, Serial2 varsayılan pinlerini 4 ve 25'e taşıdı, bu yüzden onları adlandır: Serial2.begin(9600, SERIAL_8N1, 16, 17);. Mokxi, begin()'in verdiği her pinde UART1 ve UART2'yi bit bit modeller, böylece 16 ve 17'deki bir GPS ya da ikinci bir kart onları burada da masadaki gibi duyar.

Analog, PWM, I2C ve SPI

WiFi'li bir projede yalnızca ADC1 güvenlidir: gerçek bir ESP32'de radyo ADC2'yi kullanır ve WiFi açıkken ADC2 pininde analogRead başarısız olur. ADC1 burada altı delikte: VP, VN, D32, D33, D34 ve D35. Mokxi yalnızca ADC1'i, on iki bit olarak ve varsayılan 11 dB'de gerçek bir parçanın eğrisiyle modeller: 3.3 V'a bağlı bir pot yaklaşık 3.1 V'ta, hareketinin sonundan biraz önce 4095'e ulaşır ve ortada yaklaşık 1890 okur.

PWM, LEDC'dir ve çıkış sürücüsü olan her pin onu alabilir: analogWrite ilk çağrıldığında bir kanal bağlar. Mokxi sekiz yüksek hızlı kanalı, varsayılan olarak 1 kHz'de sekiz bit olarak modeller; çipte toplam on altı var. Wire.begin() SDA için D21'i ve SCL için D22'yi kullanır; SPI SCK, MISO, MOSI ve SS için D18, D19, D23 ve D5'i kullanır. Mokxi'de iki veri yolu da o pinlerde yazılımla çalışır, çünkü çipin I2C ve SPI denetleyicileri modellenmez.

Sorular

Bir buton için hangi ESP32 pinini kullanmalıyım?

D4, D13, D14, D18, D19, D21 ile D23, D25 ile D27, D32 veya D33, `INPUT_PULLUP` ile ve buton toprağa. D34, D35, VP ve VN yalnızca kendi 10 k pull-up'ınla çalışır; D0, D2, D12 ve D15 strapping pinleridir.

Bir analog sensör için hangi ESP32 pinini kullanmalıyım?

Bir ADC1 pini: D32, D33, D34, D35, VP veya VN. WiFi açıkken çalışmaya devam ederler. Sinyali 3.3 V altında tut; zayıflatıcının nominal 3.9 V tam ölçeği bir ölçüm aralığıdır, güvenli bir giriş değil.

ESP32 DevKit V1'de I2C pinleri hangileri?

SDA D21 ve SCL D22'dir, `Wire.begin()` bu pinleri kullanır. `Wire.begin(sda, scl)` veri yolunu başka iki çıkış pinine taşır.

ESP32'de hangi pinleri hiç kullanmamalıyım?

Bu kartın çıkarmadığı flash olan GPIO 6'dan 11'e. Yüklemelerin ve seri monitörün çalışmasını istiyorsan TX0 ve RX0. Ve açılışta yüksek olan her şey için D12.

Bu 30 pinli mi yoksa 38 pinli pinout mu?

30 pinli DOIT DevKit V1. 38 pinli Espressif DevKitC aynı çip, aynı GPIO numaraları farklı yerlerde, sıraları arasında tam bir inç ve çıkarılmış altı flash pini. Mokxi'de kendi kartı var.

ESP32 DevKit V1'de DAC ve dokunma pinleri var mı?

Çipte D25 ve D26'da iki 8 bitlik DAC ve on dokunma girişi var. Mokxi ikisini de modellemez, bu yüzden `dacWrite` ve `touchRead` burada işe yarar bir şey yapmaz.

Bunu gerçekten kur

Düzenleyiciyi aç, bir değeri değiştir ve sayının onunla birlikte oynadığını izle. Kurulacak bir şey yok ve hesap gerekmez.