برد Nodemcu

شناخت پایه‌های GPIO برد NodeMcu با نرم افزار Arduino IDE

nodemcu-gpio-pin-address-in-arduino-ide-digispark
نوشته شده توسط پریسا پوربلورچیان

برد NODEMCU به واسطه ی طراحی فوق العاده و امکانات متمایزی که در اختیار ما قرار داده است، امکان طراحی و اجرای پروتوتایپ اولیه ی پروژه های IOT اینترنت اشیا برای ما ساده تر شده است. در این آموزش کوتاه به معرفی پایه های GPIO برد خواهیم پرداخت. در ادامه آموزش پایه‌های GPIO برد NodeMcu با مرجع تخصصی آردوینو به زبان فارسی دیجی اسپارک همراه باشید.

 

پایه‌های GPIO برد NodeMcu - دیجی اسپارک


منظور از GPIO چیست؟


GPIO مخفف عبارت General – Purpose input / output است که پین های آی سی به شمار می‌آید. توسط این پایه ها ارتباط با سخت افزارهای دیگر فراهم شده و با تمامی سنسورهایی که ولتاژ آن ها همخوانی دارد، قابل تست و راه اندازی است. پایه های آی سی میتوانند به صورت ورودی و خروجی در هر زمانی بسته به نوع نیاز ما در کدها تعریف شده و عمل خاصی را انجام دهند. برد Nodemcu امکان دسترسی به پایه های GPIO را توسط تراشه ESP8266 ساده تر می‌کند.

پایه های GPIO برد Nodemcu برپایه ESP8266 - دیجی اسپارک

 

نام پایه ها در برد Nodemcu با برد تراشه ESP8266 متفاوت است. جدول زیر را با هم بررسی کنیم.

اسم پایه ها در برد NODEMCU شماره پایه های داخلی ESP8266
D0 GPIO16
D1 GPIO5
D2 GPIO5
D3 GPIO0
D4 GPIO2
D5 GPIO14
D6 GPIO12
D7 GPIO13
D8 GPIO15
D9 = RX GPIO3
D10 = TX GPIO1
D11 = SD2 GPIO9
D12 = SD3 GPIO10

 

نکته ی اصلی در ترتیب پایه ها اشتباه نشدن شماره های آن هاست که ممکن است با یک اشتباه ساده در کدنویسی و اتصال اشتباه پایه تا مدتی دنبال روش رفع عیب باشید!!

  • از GPIO با شماره های ۱, ۳, ۹, ۱۰ به صورت معمول به عنوان ورودی و خروجی استفاده نمی‌شود.
  • GPIO با شماره های D1 , D2, D5, D6, D7 در دسترس و قابل استفاده است.
  • پایه های D8, RX , TX در زمان بوت شدن ممکن است خطاهایی در برنامه ایجاد کند که پیشنهاد می‌شود از آن ها استفاده نکنید.

تراشه ESP8266 با توجه به اینکه از SOC ساخته شده است و بسیاری از GPIO ها به صورت داخلی استفاده می‌شود، در مجموع ۱۱ پایه GPIO در اختیار ما قرار دارد. دو پایه از ۱۱ پایه GPIO یعنی TX, RX برای ارتباط سریال و ارتباط با دیگر سخت افزارها و کامیپوتر استفاده می‌شود. با این وجود تا این لحظه فقط ۹ پایه دیجیتال D0 تا D8 تحت کنترل و اختیار ما است. همانطور که اشاره شد چهار پایه ۱ و ۳ و ۹ ۱۰ به دلیل استفاده در فرآیندهای داخلی استفاده نمی‌شود اما از پایه SD3 یا همان D12 برای برقراری ارتباط GPIO/ PWM/ INTERRUPT قابل تست و استفاده است. پایه D0 – GPIO16 فقط برای خواندن و نوشتن READ AND WRITE استفاده می‌شود و نمیتوانید تاثیری در مدار بگذارد.

 


جزییات پایه‌های GPIO


در این جدول تمامی پایه های قابل استفاده در برد NODEMCU نوشته شده است. شماره پایه برد با شماره GPIO به همراه نقش ورودی INPUT, نقش خروجی OUTPUT و عملکرد آن ها کامل شرح داده شده است. مطابق با جدول و نیاز پروژه پایه های مناسب را انتخاب کرده و در کدنویسی برنامه از آن ها استفاده کنید.

پایه ها GPIO ورودی خروجی سایر توضیحات
D0 GPIO16 اینتراپت داخلی ندارد از PWM و I2C پشتیبانی نمی‌کند. در زمان BOOT شدن همیشه HIGH است و برای DEEP SLEEP  در برد استفاده می‌شود.
D1 GPIO5 به عنوان ورودی قابل استفاده است به عنوان خروجی قابل استفاده است I2C = SCL
D2 GPIO4 به عنوان ورودی قابل استفاده است به عنوان خروجی قابل استفاده است I2C = SDA
D3 GPIO0 پایه PULLED UP به عنوان خروجی قابل استفاده است مستقیم به کلید فلش در برد متصل است و اگر غیرفعال باشد، بوت موفق نیست.
D4 GPIO2 پایه PULLED UP به عنوان خروجی قابل استفاده است به ال ای دی داخلی برد متصل است
D5 GPIO14 به عنوان ورودی قابل استفاده است به عنوان خروجی قابل استفاده است SPI = SCLK
D6 GPIO12 به عنوان ورودی قابل استفاده است به عنوان خروجی قابل استفاده است SPI = MISO
D7 GPIO13 به عنوان ورودی قابل استفاده است به عنوان خروجی قابل استفاده است SPI = MOSI
D8 GPIO15 مستقیم به  GND وصل است به عنوان خروجی قابل استفاده است اما پیشنهاد نمی‌شود. SPI = CS
A0 ADC0 ANALOG ورودی  

 

 


خطر بوت نشدن!


بعضی از پایه های GPIOدر زمان بوت شدن استفاده می‌شوند به همین دلیل فعال شدن و غیرفعال شدن هر یک از این پایه ها در زمان درست ممکن است مانع بوت شدن برد NODEMCU شوید. همچنین در نظر داشته باشید اتصال هر دیوایس، سنسور و حتی کوچکترین قطعه الکترونیکی در مسیر اتصال ممکن است باعث HIGH و LOW شدن پایه ها شود و در نتیجه مانع از بوت شدن شود که بایستی این مورد توسط خودتان تست و بررسی شود. ال ای دی داخلی برد در بعضی از بردها D4 و در برخی از بردها GPIO16 است.

 پایه GPIO0

این پایه پس از گدشت ۱۰۰ میلی ثانیه پایدار شده و HIGH می‌شود. پس قبل از این زمان ممکن است وضعیت آن LOW شود و برد NODEMCU بوت نشود.

پایه GPIO1

در مدت زمان ۵۰ میلی ثانیه غیر فعال است و سپس HIGH می‌شود.

پایه GPIO2

این پایه پس از گدشت ۱۰۰ میلی ثانیه پایدار شده و HIGH می‌شود.

پایه GPIO3

در مدت زمان ۵۰ میلی ثانیه غیر فعال است و سپس HIGH می‌شود.

پایه GPIO9

این پایه در زمان بوت شدن HIGH است.

پایه GPIO10

این پایه در زمان بوت شدن HIGH است.

پایه GPIO15

این پایه در زمان بوت شدن LOW است.

پایه GPIO16

این پایه در زمان بوت شدن HIGH است و تا ۱ ولت کاهش پیدا می‌کند.

 


پایه‌های فعال در زمان بوت شدن


بعضی از پایه ها در زمان بوت شدن به ولتاژ ۳٫۳ ولت میرسند. به همین دلیل اگر رله و قطعه ای با ولتاژ بیشتر به این پایه متصل باشد، برد بوت BOOT نخواهد شد.

GPIO16
GPIO3
GPIO1
GPIO10
GPIO9

 


پایه ورودی آنالوگ


برد NODEMCU فقط و فقط یک پایه ADC با عنوان A0 دارد! شاید در لحظه ی اول دردناک باشد، اما جای نگرانی نیست! تا به امروز بسیاری از مبدل های I2C تولید شده است که تعداد پایه های آنالوگ بیشتری در اختیار ما قرار میدهد. ولتاژ ورودی در این پایه بین ۰ تا ۳٫۳ ولت و در برد از تقسیم ولتاژ داخلی استفاده می‌کنند.

 

 


پایه‌های I2C برد NodeMcu


برد ESP8266 به تنهایی از I2C پشتیبانی نمی‌کند اما در نرم افزار امکان اختصاص پایه های I2C به برد فراهم است.

  • GPIO5: SCL
  • GPIO4: SDA

 


پایه‌های SPI برد NodeMcu


پایه های SPI در ESP8266 به صورت زیر است.

  • GPIO12: MISO
  • GPIO13: MOSI
  • GPIO14: SCLK
  • GPIO15: CS

 

 


پایه‌های PWM برد NodeMcu


تمامی پایه های ESP8266 در نرم افزار امکان استفاده از پایه های ورودی و خروجی در GPIO را در نقش PWM فراهم می‌کند!!!!

 


پایه‌های INTERRUPT


پایه‌های GPIO برد NodeMcu با تراشه ESP8266 در نرم افزار امکان استفاده از پایه های ورودی و خروجی در GPIO را در نقش وقفه INTERRUPT فراهم می‌کند!!!!

 


جمع بندی


خیلی از افراد بدون بررسی دیتاشیت و بررسی پایه‌های GPIO برد NodeMcu نسبت به خرید برد اقدام کرده اند. در یکی از آخرین تیکت هایی که پاسخ دادم، کاربری اعلام کرده بود که چرا به اشتباه در ویژگی های کالا تعداد پایه ها ۱۶ عدد نوشته شده است. برای تست و اجرا فقط و فقط ۹ پایه در اخیتار ما است که میتوانیم از آن ها استفاده کنیم که در این بخش به معرفی و وضعیت HIGH , LOW بودن هر پایه در زمان بوت شدن هم پرداخته شده است. قبل از خرید با توجه به نیاز پروژه پایه ها را بررسی کنید.

 

 

چنانچه در مراحل ارایه شده در این آموزش سوالی داشتید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۳ دیدگاه

  • سلام
    مگر حداکثر ولتاژ ورودی پورت آنالوگ یک ولت نیست؟
    در این مطلب ۳.۳ ولت نوشته شده است.

    • با سلام
      ولتاژ اکسترنال adc بین ۰ تا ۳٫۳ ولت dc است. در برد nodemcu از یک resistive voltage divider استفاده شده است. موردی که شما میفرمایید برای تراشه Esp8266 است.

  • سلام
    تازه متوجه اشتباهاتم شدم و فکر میکردم ایراد از برد خودمه
    ممنونم بابت توضیحات خوبتون

    • سلام
      من پایه D3 gpio0 را در سریال سافت ویر به عنوان اتصال به tx ماژول سیم کارت معرفی کرده بودم هدر برد بوت نمیشد
      بعد از روشن کردن مدار یبار هم باید ریستارت میکردم تا از توی ست اپ وارد لوپ بشه
      پایه را عوض کردم درست شد
      در هر صورت از توضیحات دیرهنگام شما سپاسگزارم

  • سلام وقتتون بخیر
    من از پایه آنالوگ برد خروجی گرفتم (بدون اینکه سنسوری متصل کنم) بین سیگنال ۰ تا ۱۳۱۸ تغییر میکنه مدام و باعث میشه من دیتای دقیقی از سنسورام نمیتونم بگیرم. علت این چیه؟

      • با سلام و احترام
        nodeMcu Esp32
        بدون اینکه سنسوری به پین آنالوگ وصل کنم، از قطعه کد analogRead(analogPin) خروجی عددی گرفتم (توی متد loop) و پرینت کردم
        عدد خروجی بین ۰ تا ۱۳۱۸ متغیره و سریعا تغییر میکنه
        اما من هیچ سنسوری متصل نکردم چرا باید خروجی بده وقتی چیزی بهش وصل نیست؟
        آیا مشکل از برد هست؟ یا بخاطر نویزه؟
        حتی وقتی به پین انالوگ دست میزنم این عدد یهو تغییر میکنه.

        این مشکل باعث میشه من از سنسورام دیتای دقیق نمیگیرم. اول فکر میکردم سنسورا ایراد دارن یا دقیق کار نمیکنن

        اگه امکانش هست یه راه ارتباطی بدید که من بتونم ویدیوشو بفرستم خیلی ممنون میشم.

        • با سلام
          در این حالت خروجی نمایش داده شده همان ولتاژ قرار گرفته شده بر روی پایه های آنالوگ است که به آن adc گفته می‌شود.