در این بخش با معرفی پایه های ماژول ESP8266، نوع عملکرد و میزان اولویت در استفاده از پین های این ماژول پرکاربرد در پروژههای کنترل از راه دور و اینترنت اشیاء، را بیان مینماییم.
یکی از مشخصات جالب ماژول ESP8266 NodeMCU، داشتن تعداد پین های GPIO نسبتاً زیاد است. این قابلیت باعث میشود نیاز به مالتی پلکس کردن (ارسال هم زمان چند سیگنال از یک مسیر) پایههای ورودی/خروجی به حداقل برسد؛ اما شاید برای شما هم این سؤال پیش آمده باشد که برای پروژه در حال انجام، از کدام پایه میتوانیم استفاده کنیم؟ برای یافتن پاسخ این سؤال و دانستن نکات مهم هنگام استفاده از این پایه ها، مطالب جمع آوری شده در این مرجع یادگیری میتواند بسیار مفید واقع شود:
توجه:
لطفا دقت داشته باشید، این مرجع معرفی پایه های ورودی و خروجی برای برد توسعه NodeMCU با ماژول وای فای ESP8266 که دارای۳۰ پایه میباشد، تهیه شده است.
اگر از برد توسعه دیگری استفاده میکنید، ممکن است برد شما همه پین ها را در اختیار شما قرار ندهد، اما جدا از اینکه چه بردی در اختیار دارید، هر پین به شکل یکسان کار میکند.
قابلیتهای جانبی پایه های ماژول ESP8266
ماژول ESP8266 NodeMCU در کل دارای ۱۷ پایه GPIO است که از طریق پین هدرهای موجود در دو طرف برد توسعه در دسترس قرار دارند. به این پایه ها میتوان وظایف مختلفی تخصیص داد که شامل موارد زیر میشود:
تعداد پایه | نام پایه GPIO | وظیفه |
---|---|---|
1 | کانال ADC | کانال “مبدل آنالوگ به دیجیتال” از نوع تقریبهای متوالی (SAR) میباشد. |
2 | رابط UART | رابط UART با پشتیبانی از flow control استفاده میشود. |
4 | خروجی PWM | پایه PWM برای کنترل سرعت موتورها یا روشنایی LEDها مورد استفاده قرار میگیرد. |
3 | (2) رابط SPI و (۱) رابط I2C | رابطهای SPI و I2C برای اتصال سنسورها و قطعات جانبی مختلف میباشند. |
1 | رابط I2S | رابط I2S برای اضافه کردن قابلیت صدا به پروژه شما کاربرد دارد. |
البته به یاد داشته باشید که به لطف قابلیت مالتی پلکس کردن پایه های ESP8266، امکان اشتراکگذاری یک پایه GPIO بین چند قطعه جانبی وجود دارد و یک پایه میتواند بهعنوان پایه های I2C ،I2C ،UART PWM و… عمل کند. (شما با دانلود دیتاشیت ESP8266 میتوانید اطلاعات بیشتری را در این زمینه مطالعه و کسب نمایید.)
معرفی پایه های ماژول ESP8266
ماژول برد ESP8266 NodeMCU در مجموع دارای ۳۰ پایه است. برای نمایش سادهتر در تصویر زیر پایه هایی که عملکرد یکسانی دارند را با رنگهایی متفاوت، گروهبندی کردهایم:
هماکنون که با نام و مکان هر پایه آشنا شدید، بیایید تا با معرفی پایه های ESP8266 نگاه دقیقتری به عملکرد آنها داشته باشیم:
پایه های GPIO در ماژول ESP8266
ماژول ESP8266 NodeMCU دارای 17 پایه ورودی/خروجی یا همان GPIO است که هر کدام از این پین ها با برنامهریزی رجیسترهای مرتبط، میتوانند وظایف مختلفی نیز بگیرند. در این ماژول این امکان وجود دارد که هر پایه ورودی-خروجی میتواند به صورت داخلی pull up یا pull down شود یا به حالت امپدانس بالا( میزان مقاومت در برابر جریان الکتریکی) تنظیم شود.
خوب است بدانید که منظور از pull up یا pull down، درواقع عملکردی است که برای اتصال پایه به یک سوئیچ لازم میباشد و باعث جلوگیری از اثرگذاری نویز در ارتباط با میکروکنترلر میشود.
کدام پین در ماژول ESP8266 مناسب پروژه ما است؟
قبل از پاسخ به این سؤال، مهم است بدانید با اینکه ماژول ESP8266 پایه های زیاد با وظایف و عملکردهای گوناگون دارد، برخی از این پایه ها ممکن است برای استفاده در پروژه شما مناسب نباشند. بنابراین پیشنهاد ما برای انتخاب پین مناسب، در مرحله اول، دانستن میزان ریسک در استفاده از پایه های ماژول برد است، به این معنی که کدام پایه ها را میتوانید با خیال راحت استفاده کنید و همینطور متوجه شوید که استفاده از کدام پایهها نیاز به احتیاط بیشتری دارد.
برای انتخاب و استفاده از پایه مورد نظر بهتر است ابتدا جداول زیر را بررسی نمایید:
پایه های با بیشترین اولویت و برای استفاده بدون نگرانی | |
رفتار این پایه ها به خصوص در هنگام بوت میتواند غیر قابل پیشبینی باشد. بنابراین هنگام استفاده از این پایه ها در پروژههای حساس باید نهایت دقت را داشته باشید و تنها در صورت لزوم از آنها استفاده کنید. | |
استفاده از این پایهها توصیه نمیشود. |
نام پایه | شماره GPIO | اولویت استفاده | علت |
D0 | GPIO16 | هنگام بوت HIGH است و برای بیدار کردن میکروکنترلر از حالت خواب عمیق استفاده میشود. | |
D1 | GPIO5 | ||
D2 | GPIO4 | ||
D3 | GPIO0 | به کلید FLASH متصل است و اگر زمین شود میکروکنترلر بوت نمیشود. | |
D4 | GPIO2 | هنگام بوت HIGH است و اگر زمین شود میکروکنترلر بوت نمیشود. | |
D5 | GPIO14 | ||
D6 | GPIO12 | ||
D7 | GPIO13 | ||
D8 | GPIO15 | برای بوت شدن مورد استفاده قرار میگیرد و اگر HIGH شود میکروکنترلر بوت نمیشود. | |
RX | GPIO3 | پایه RX برای فلش کردن و دیباگینگ استفاده میشود | |
TX | GPIO1 | پایه TX برای فلش کردن و دیباگینگ استفاده میشود | |
CLK | GPIO6 | به حافظه فلش متصل است. | |
SDO | GPIO7 | به حافظه فلش متصل است. | |
CMD | GPIO11 | به حافظه فلش متصل است. | |
SD1 | GPIO8 | به حافظه فلش متصل است. | |
SD2 | GPIO9 | به حافظه فلش متصل است. | |
SD3 | GPIO10 | به حافظه فلش متصل است. | |
A0 | ADC0 | پایه ورودی آنالوگ است، نمیتواند خروجی تعریف شود. |
تصویر زیر وضعیت پایه ها را در ماژول ESP8266 NodeMCU نشان میدهد.
پس از دانستن اولویت استفاده از پین های این ماژول، زمان آن رسیده تا با وظیفه هر پایه نیز آشنا شویم:
پایه های مبدل آنالوگ به دیجیتال ADC
میکروکنترلر ESP8266 دارای یک مبدل آنالوگ به دیجیتال 10 بیتی از نوع SAR است. یعنی میتواند ۱۰۲۴ (۲ به توان ۱۰) سطح آنالوگ گسسته را تشخیص دهد. به عبارت دیگر مقادیر آنالوگ ورودی در بازه ۰ تا ۳.۳ ولت (ولتاژ کاری این میکروکنترلر ۳.۳ ولت است) را به اعداد صحیح در بازه ۰ تا ۱۰۲۴ تبدیل میکند. بنابراین رزولوشن این مبدل 3.3/1024 یا 3.2 میلی ولت بر واحد دیجیتال است.
پایه های SPI
ماژول ESP8266 دارای دو باس SPI (SPI و HSPI) در حالتهای کاری slave و master است که مشخصات عمومی زیر را دارند:
- ۴ حالت زمانبندی برای ارتباط SPI
- سرعت انتقال حداکثر ۸۰ مگاهرتز و امکان تقسیم این سرعت کلاک
- حداکثر ۶۴ بایت حافظه FIFO
توجه:
با پیادهسازی نرمافزاری، امکان ایجاد ارتباط SPI روی بقیه پایهها هم وجود دارد.
پایه های I2C
با وجود اینکه ماژول ESP8266 پایه های سختافزاری مخصوص پروتکل I2C را ندارد، اما میتوان این ارتباط را به شکل نرمافزاری پیادهسازی کرد. ارتباط I2C به شکل نرمافزاری نیز به خوبی عمل میکند، به ویژه در زمان ایجاد ارتباط ESP8266 با آردوینو توسط I2C، که با سرعت کافی قابل انجام است.
به شکل پیشفرض پایه های GPIO4 و GPIO5 (SDA و SCL) برای ارتباط I2C استفاده میشوند تا با کتابخانهها و کدهای آماده آردوینو سازگار باشد.
با این حال از هر دو پایه GPIO دلخواه برای ارتباط I2C میتوان استفاده کرد. برای اینکار از تابع wire.begin(SDA,SCL) در IDE آردوینو میتوانید استفاده کنید.
پین های UART
ESP8266 دارای دو رابط UART به نامهای UART0 و UART1 است که ارتباط آسنکرون (RS232 و RS485) را تا حداکثر سرعت ۴.۵ مگابیت بر ثانیه پشتیبانی میکنند.
- UART0 از پایههای TXD0, RXD0, RST0 و CTS0 برای ارتباط استفاده میکند.
- UART1 فقط قابلیت ارسال اطلاعات از پایه TXD1 را دارد و معمولاً برای گرفتن گزارش وضعیت استفاده میشود.
توجه: RXD0 و TXD0 پایه های کنترل سریال و بوت لودر هستند و در درجه اول برای ارتباط با ماژول ESP استفاده میشوند. بنابراین با توجه به اینکه این پایه ها به مبدل USB به سریال متصل هستند و انتقال اطلاعات USB هم از طریق آنها صورت میگیرد، هنگام استفاده از این پایه ها باید دقت کافی را منظور کنید.
پایه های PWM
همه GPIOها (از GPIO0 تا GPIO15) میتوانند برای ساخت پالسهای با عرض مدوله شده (PWM) پروگرام شوند.
نکته: در ESP8266، مدولاسیون پهنای پالس یا PWM دارای رزولوشن ۱۰ بیتی است و دوره تناوب موج PWM بین ۱۰۰۰ میکرو ثانیه تا ۱۰۰۰۰ میکرو ثانیه قابل تنظیم است که معادل فرکانس ۱۰۰ هرتز تا ۱ کیلوهرتز است.
پایه های SDIO
ESP8266 یک رابط SDIO (رابط ورودی خروجی دیجیتال امن) برای اتصال SD cardها دارد که از SDIO نسخه 1.1 (4-bit 25MHz) و نسخه 2.0 (4-bit 50MHz) پشتیبانی میکند.
پایه های تغذیه
برای اتصال مستقیم منبع تامین انرژی به ESP8266 و قطعات جانبی آن توسط تغذیه ۵ ولت، میبایست از پایه VIN استفاده نمود.
- پایه 3V3: این پین خروجی رگولاتور ولتاژ روی برد است که میتوانید تا حداکثر ۶۰۰ میلی آمپر از آن جریان بگیرید.
- پایه GND: پایه زمین است.
پایه های وقفه
جالب است بدانید که همه GPIO ها (به استثنای GPIO16) میتوانند برای راه اندازی وقفه خارجی استفاده شوند، که پروژه مرتبط را میتوانید در این آکادمی مطالعه و بررسی نمایید.
پایه های کنترل
سوئیچ ها و پایه های کنترل در ماژول ESP8266 NodeMCU شامل موارد زیر میباشد:
پایه EN (به نامهای CH_PD یا Chip Power Down هم شناخته میشود) پایه فعالساز ESP8266 است که به شکل پیشفرض پول آپ (pull up) است. وقتی این پایه HIGH باشد ESP8266 فعال است و در غیر اینصورت غیرفعال میشود.
پایه RST پین ریست ESP8266 است که به شکل پیشفرض پول آپ است. وقتی این پایه موقتا LOW شود ESP8266 ریست میشود. با فشردن کلید RST روی برد میتوان این پایه را LOW کرد.
پایه FLASH هنگام فلش کردن بوت لودر ESP8266 استفاده میشود. اگر این پایه هنگام روشن شدن ماژول LOW شود میکروکنترلر به وضعیت BOOTLOADING میرود. با فشردن کلید FLASH روی برد میتوان این پایه را LOW کرد.
پایه WAKE برای بیدار کردن ESP8266 از وضعیت خواب عمیق استفاده میشود.
سخن پایانی
ما در این مرجع با معرفی وظایف و میزان اولویت در استفاده از پایه های ماژول ESP8266، متوجه شدیم این ماژول دارای 30 عدد پین است که برخی از آنها با قابلیت برنامهریزی میتوانند عملکردهایی یکسان داشته باشند و دانستیم که 17 عدد از این پایه ها، بهعنوان پین های ورودی و خروجی یا GPIO به شمار میروند. ما علاوهبر تشریح وظیفه برای هر پایه، با استفاده از ایجاد دیاگرام مخصوص به آن پین، با شماره و مکان قرارگیری آن در برد توسعه ماژول ESP8266 NodeMCU بهشکل تصویری نیز آشنایی پیدا کردیم.
چنانچه در ارتباط با این مبحث و نحوه عملکرد پایه های ماژول ESP8266، دارای پرسش یا پیشنهادی هستید، در بخش دیدگاه این صفحه میتوانید ثبت و پاسخ خود را در اسرع وقت از کارشناسان فنی روبوایکیو دریافت کنید.