تعلّم

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

مبتدئ

أو تصفّح كل الدروس.

  • 503قطعة على المنضدة
  • 44لوحة تعمل الآن
  • 1.00xزمن حقيقي، على كل لوحة
ESP32 DevKit V1: مقاومة متغيرة على D32live0.000 s 0.00x
انقر لفتحه في المحرر
مقاومة متغيرة 10 k على D32 (قناة ADC1 رقم 4) تضبط سطوع LED على D4، مع طباعة القراءة.

هذه أطراف ESP32 DevKit V1 بثلاثين طرفاً، لوحة DOIT التي عليها وحدة ESP32-WROOM-32 وتأتي في معظم العدد. كل ثقب في صفيها في الجدول أدناه مع رقم GPIO وما يستطيعه وما يجب الحذر منه. وبعد الجدول أطراف الطاقة، وأطراف التمهيد التي تقرر هل تقلع اللوحة أصلاً، وأطراف الدخل فقط، والأطراف التي يأخذها USB والفلاش، وقائمة بأي طرف تستخدمه لأي غرض.

الدائرة أعلاه هي تلك اللوحة تعمل في Mokxi: مقاومة متغيرة على D32، وهي قناة ADC1 رقم 4، تخفت LED على D4 وتطبع القراءة الخام. يحاكي Mokxi اللوحة ذات الثلاثين طرفاً لا DevKitC بـ 38، والأرقام في هذه الصفحة مقروءة من النموذج نفسه الذي يشغّله المحاكي. وحيث يفعل المحاكي أقل من الرقاقة تقول الصفحة ذلك على الصف.

كل طرف في الصف

تسمّي الطباعة على اللوحة GPIO n بـ "Dn"، فـ D23 هو GPIO 23 وتقوده digitalWrite(23, HIGH). وبعض الثقوب مسماة بوظيفتها: VP وVN هما GPIO 36 و39، وTX0 وRX0 هما GPIO 1 و3، وTX2 وRX2 هما GPIO 17 و16. ينزل الجدول في الصف الأيسر من EN إلى VIN، ثم في الأيمن من D23 إلى 3V3، ومقبس USB في الأسفل.

ترتيب الثقوب هو قراءة Mokxi للوحة DOIT، وتختلف النسخ المقلدة في الأخيرة منها. كثير من لوحات الثلاثين طرفاً بلا ثقب D0 وتضع GND ثانياً على اليمين، وكثير منها ينتهي صفها الأيسر بـ D12 وD13 وGND وVIN. اعتمد على الحروف المطبوعة على لوحتك. أما أرقام GPIO، وهي ما يستخدمه كودك، فلا تتغير.

اللمس وDAC وADC2 في الجدول لأن الرقاقة تملكها وتستخدمها الدروس. لا يحاكي Mokxi أياً من الثلاثة، ويقول كل صف ذلك.

ESP32 DevKit V1 (30 طرفاً): الصف الأيسر من الأعلى إلى الأسفل، ثم الأيمن
الطرفGPIOما يستطيعهاحذر من
EN-تمكين الرقاقة، وهو إعادة الضبط. الانخفاض يبقي الرقاقة في إعادة الضبط؛ وزر EN يفعل ذلك.Not a GPIO.
VP36ADC1_CH0. دخل فقط.لا مشغّل خرج ولا مقاومة رفع أو خفض داخلية.
VN39ADC1_CH3. دخل فقط.لا مشغّل خرج ولا مقاومة رفع أو خفض داخلية.
D3434ADC1_CH6. دخل فقط.لا مشغّل خرج ولا مقاومة رفع أو خفض داخلية.
D3535ADC1_CH7. دخل فقط.لا مشغّل خرج ولا مقاومة رفع أو خفض داخلية.
D3232ADC1_CH4. PWM. اللمس T9 (غير مُحاكى).طرف آمن لكل الأغراض.
D3333ADC1_CH5. PWM. اللمس T8 (غير مُحاكى).طرف آمن لكل الأغراض.
D2525PWM. DAC1 وADC2_CH8 في الرقاقة (غير مُحاكيين).يتوقف ADC2 عن العمل أثناء تشغيل WiFi.
D2626PWM. DAC2 وADC2_CH9 في الرقاقة (غير مُحاكيين).يتوقف ADC2 عن العمل أثناء تشغيل WiFi.
D2727PWM. ADC2_CH7 واللمس T7 في الرقاقة (غير مُحاكيين).يتوقف ADC2 عن العمل أثناء تشغيل WiFi.
D1414PWM. ADC2_CH6 واللمس T6 في الرقاقة (غير مُحاكيين).يتوقف ADC2 عن العمل أثناء تشغيل WiFi.
D1212PWM. ADC2_CH5 واللمس T5 في الرقاقة (غير مُحاكيين).طرف تمهيد: إن كان مرتفعاً عند إعادة الضبط فلن تقلع اللوحة.
GND-Ground.-
D1313PWM. ADC2_CH4 واللمس T4 في الرقاقة (غير مُحاكيين).يتوقف ADC2 عن العمل أثناء تشغيل WiFi.
VIN-سكة 5 V من USB. ضع 5 V هنا لتشغيل اللوحة بلا كابل.Not a GPIO.
D2323PWM. SPI MOSI (افتراضي).-
D2222PWM. I2C SCL (افتراضي).-
TX01UART0 TX: Serial، ورقاقة USB-إلى-تسلسلي.اتركه حراً، وإلا تعطل الرفع والشاشة التسلسلية.
RX03UART0 RX: Serial، ورقاقة USB-إلى-تسلسلي.اتركه حراً، وإلا تعطل الرفع والشاشة التسلسلية.
D2121PWM. I2C SDA (افتراضي).-
D1919PWM. SPI MISO (افتراضي).-
D1818PWM. SPI SCK (افتراضي).-
D55PWM. SPI SS (افتراضي).طرف تمهيد: اتركه بلا حمل عند التشغيل.
TX217PWM. UART2 TX في دروس core 2.x: Serial2.begin(9600, SERIAL_8N1, 16, 17).تضع core 3.x الطرف Serial2 على 4 و25 ما لم تُعطَ الأطراف.
RX216PWM. UART2 RX في دروس core 2.x: Serial2.begin(9600, SERIAL_8N1, 16, 17).تضع core 3.x الطرف Serial2 على 4 و25 ما لم تُعطَ الأطراف.
D44PWM. ADC2_CH0 واللمس T0 في الرقاقة (غير مُحاكيين).خرج آمن؛ تضع الأمثلة LED هنا.
D00PWM. ADC2_CH1 واللمس T1 في الرقاقة (غير مُحاكيين). زر BOOT.طرف تمهيد: انخفاضه عند إعادة الضبط ينتظر رفعاً.
D22PWM. ADC2_CH2 واللمس T2 في الرقاقة (غير مُحاكيين). LED الأزرق، يضيء عند HIGH.طرف تمهيد: يجب أن يكون منخفضاً أو عائماً للرفع.
D1515PWM. ADC2_CH3 واللمس T3 في الرقاقة (غير مُحاكيين).طرف تمهيد: انخفاضه عند إعادة الضبط يُسكت رسائل الإقلاع.
3V3-خرج المنظّم 3.3 V.Not a GPIO.

أطراف الطاقة وحدودها

VIN هو سكة 5 V من مقبس USB. وبلا كابل تستطيع تشغيل اللوحة بوضع 5 V على VIN، ويصنع المنظّم 3.3 V منها. و3V3 خرج ذلك المنظّم: يغذي ESP32 وكل ما تعلقه عليه، فالحساس لا بأس به والسيرفو أو المحرك لا. وGND هو الأرضي.

كل GPIO بجهد 3.3 V ولا يتحمل أي منها 5 V. يحتاج خرج حساس 5 V إلى مقسم أو محوّل مستوى قبل أن يصل إلى طرف. تعطي ورقة بيانات Espressif الطرف نحو 40 mA حين يمدّ التيار بأقوى إعداد للقيادة. اعتبر ذلك سقفاً لا هدفاً، وأبقِ LED عند 10 إلى 20 mA مع مقاومته.

أطراف التمهيد: التي تمنع اللوحة من الإقلاع

تقرأ الرقاقة خمسة أطراف لحظة خروجها من إعادة الضبط، وما تقرأه يقرر كيف تبدأ: GPIO 0 و2 و5 و12 و15. وحين يعمل كودك تصبح أطرافاً عادية، فلا تظهر المشكلة إلا حين يمسك شيء موصَّل بأحدها بها على نحو خاطئ عند التشغيل.

GPIO 0 هو زر BOOT. إن كان منخفضاً عند إعادة الضبط انتظرت الرقاقة برنامجاً جديداً بدل تشغيل برنامجك، فزر أو وحدة تسحب D0 للأسفل يبدو كلوحة لا تبدأ أبداً. ويجب أن يكون GPIO 2 منخفضاً أو عائماً للرفع. وأشدها إيلاماً GPIO 12: ارتفاعه عند إعادة الضبط يخبر الرقاقة أن فلاشها يعمل على 1.8 V، وفلاش WROOM-32 يحتاج إلى 3.3 V، فلن تقلع اللوحة حتى يترك ما يمسك 12 مرتفعاً. وانخفاض GPIO 15 عند إعادة الضبط يُسكت رسائل الإقلاع على المنفذ التسلسلي، وهذا غير ضار لكنه محيّر.

لا يحاكي Mokxi أطراف التمهيد. تبدأ اللوحة المحاكاة أياً كان الموجود على تلك الأطراف، فدائرة تعمل هنا قد ترفض الإقلاع على المنضدة إن سحبت D12 للأعلى أو D0 للأسفل. أعطِ أي شيء له مقاومة رفع أو خفض خاصة به أحد الأطراف الآمنة بدلاً من ذلك.

أطراف الدخل فقط: GPIO 34 و35 و36 و39

لدى GPIO من 34 إلى 39 مخزن دخل ولا شيء غيره: لا مشغّل خرج ولا مقاومة رفع أو خفض داخلية. أربعة منها في هذا الصف: D34 وD35 وVP وVN. وهي مداخل تناظرية جيدة، كلها على ADC1، ولا يمكن أن تكون مخارج إطلاقاً. لا تفعل pinMode(34, OUTPUT) شيئاً في الرقاقة، ولا INPUT_PULLUP كذلك، فزر على أحدها يحتاج إلى مقاومة 10 k خاصة به.

يرفض Mokxi الخرج على هذه الأطراف كما تفعل الرقاقة، ويعدّ كل محاولة، ويضع علامة كهرمانية صغيرة على اللوحة، فلا يستطيع الكود أن يظن أنه يقود أحدها.

LED في اللوحة، وزرا BOOT وEN

LED الأزرق على GPIO 2 ويضيء حين يكون الطرف HIGH. وLED_BUILTIN هو 2. ولأن GPIO 2 طرف تمهيد، يختلف توهج LED أثناء إقلاع اللوحة من لوحة إلى أخرى؛ ويستقر حين تعمل pinMode. أما LED الآخر في معظم اللوحات فهو مؤشر الطاقة وليس على أي طرف.

يسحب BOOT الطرف GPIO 0 للأسفل ما دمت تضغطه، ولذلك يقرأ D0 القيمة LOW عند ضغطه. وEN هو زر إعادة الضبط. في Mokxi تستطيع الضغط على أيٍّ منهما في اللوحة.

الأطراف التي يستخدمها USB والفلاش

TX0 وRX0 هما UART0، موصَّلان برقاقة USB-إلى-تسلسلي في اللوحة، ويحملان كل Serial.print وكل رفع. وصل بهما شيئاً فيفشل الرفع أو تمتلئ الشاشة التسلسلية بالضجيج، فاتركهما حرّين. في Mokxi يصل Serial إلى الشاشة التسلسلية مباشرة، فلن يُظهر المحاكي هذا التعارض؛ أما المنضدة فستُظهره.

GPIO من 6 إلى 11 هي فلاش SPI الذي يعمل منه البرنامج، وليست في هذا الصف إطلاقاً، وهذا أفضل. يُخرجها DevKitC بـ 38 طرفاً باسم D0 إلى D3 وCMD وCLK، وهي الأطراف التي لا تُستخدم أبداً. وTX2 وRX2 حيث يذهب UART2 في معظم الدروس. نقل arduino-esp32 3.x أطراف Serial2 الافتراضية إلى 4 و25، فسمّها: Serial2.begin(9600, SERIAL_8N1, 16, 17);. يحاكي Mokxi UART1 وUART2 بتاً ببت على أي أطراف تعطيها begin()، فيسمعهما GPS أو لوحة ثانية على 16 و17، هنا كما على المنضدة.

التناظري وPWM وI2C وSPI

ADC1 وحده آمن في مشروع مع WiFi: في ESP32 الحقيقية يستخدم الراديو ADC2، وتفشل analogRead على طرف ADC2 أثناء تشغيل WiFi. ADC1 على ستة ثقوب هنا: VP وVN وD32 وD33 وD34 وD35. ويحاكي Mokxi ADC1 فقط، باثني عشر بتاً، بمنحنى قطعة حقيقية عند 11 dB الافتراضي: مقاومة متغيرة على 3.3 V تصل إلى 4095 عند نحو 3.1 V، قبل نهاية مجراها بقليل، وتقرأ نحو 1890 في المنتصف.

PWM هو LEDC، ويمكن لأي طرف له مشغّل خرج أن يملكه: تربط analogWrite قناة أول مرة تُستدعى. ويحاكي Mokxi قنوات السرعة العالية الثماني، بثمانية بتات عند 1 kHz افتراضياً؛ وللرقاقة ست عشرة في المجموع. وتستخدم Wire.begin() الطرف D21 لـ SDA وD22 لـ SCL، وتستخدم SPI الأطراف D18 وD19 وD23 وD5 لـ SCK وMISO وMOSI وSS. في Mokxi يعمل الناقلان بالبرمجيات على تلك الأطراف، لأن وحدتي تحكم I2C وSPI في الرقاقة غير مُحاكاتين.

الأسئلة

أي طرف في ESP32 أستخدمه لزر؟

D4 أو D13 أو D14 أو D18 أو D19 أو D21 إلى D23 أو D25 إلى D27 أو D32 أو D33، مع `INPUT_PULLUP` والزر إلى الأرضي. أما D34 وD35 وVP وVN فتعمل فقط مع مقاومة رفع 10 k من عندك، وD0 وD2 وD12 وD15 أطراف تمهيد.

أي طرف في ESP32 أستخدمه لحساس تناظري؟

طرف من ADC1: D32 أو D33 أو D34 أو D35 أو VP أو VN. تواصل العمل مع تشغيل WiFi. أبقِ الإشارة تحت 3.3 V؛ المدى الكامل الاسمي للمخفِّض 3.9 V مدى قياس لا دخل آمن.

أي أطراف I2C في ESP32 DevKit V1؟

SDA هو D21 وSCL هو D22، الطرفان اللذان تستخدمهما `Wire.begin()`. وتنقل `Wire.begin(sda, scl)` الناقل إلى أي طرفي خرج آخرين.

أي أطراف لا أستخدمها أبداً في ESP32؟

GPIO من 6 إلى 11، الفلاش، وهذه اللوحة لا تُخرجها. وTX0 وRX0 إن أردت أن يعمل الرفع والشاشة التسلسلية. وD12 لأي شيء يكون مرتفعاً عند التشغيل.

هل هذه أطراف لوحة 30 طرفاً أم 38؟

لوحة DOIT DevKit V1 بثلاثين طرفاً. أما Espressif DevKitC بـ 38 طرفاً فهي الرقاقة نفسها بأرقام GPIO نفسها في أماكن مختلفة، وبوصة كاملة بين صفيها، مع إخراج أطراف الفلاش الستة. ولها لوحتها الخاصة في Mokxi.

هل في ESP32 DevKit V1 DAC وأطراف لمس؟

للرقاقة DAC اثنان بثمانية بتات، على D25 وD26، وعشرة مداخل لمس. لا يحاكي Mokxi أياً منهما، فلن تفعل `dacWrite` و`touchRead` شيئاً مفيداً هنا.

ابنِ هذا على أرض الواقع

افتح المحرر وغيّر قيمة وشاهد الرقم يتحرك معها. لا شيء لتثبّته ولا حاجة إلى حساب.