برد ESP8266 برد Nodemcu برد ویموس Wemos

راه اندازی و کار با ESP8266، بخش سوم: معرفی پایه ها و بررسی سخت افزاری

نوشته شده توسط معین صابری

در سلسله آموزش های ماژول ESP8266، در قسمت سوم به معرفی و بررسی پایه های GPIO می پردازیم. در قسمت اول به معرفی کلی این ماژول و امکانات آن پرداختیم. در قسمت دوم نصب هسته نرم افزاری و پروگرام کردن ماژول با دستورات آردوینو را مشاهده نمودیم. در این قسمت، به معرفی پایه های GPIO ،کاربرد و کارکرد هر یک می پردازیم. .  در ادامه با مرجع تخصصی آردوینو به زبان فارسی ، دیجی اسپارک همراه باشید.

 


 پایه های آزاد به عنوان ورودی/خروجی


همانطور که پیشتر گفته شد، ما در این سلسله آموزش از ماژول ESP8266-12E استفاده می کنیم. تصویر زیر نمایی از پایه های این ماژول که به صورت فیزیکی(به کمک برد مبدل SMD به DIP) قابل دسترسی هستند را نمایش می دهد.

esp8266 Introduction of bases and hardware review

 

مطابق تصویر فوق، در ماژول ESP8266-12E به کمک برد مبدل SMD به DIP پایه های مشخص شده با کادرهای سبز رنگ قابل دسترسی بوده و پایه های مشخص شده با کادر قرمز رنگ، قابل دسترسی نیستند. البته با اتصال سیم می توانید به این پایه های هم دسترسی داشته باشید. در کنار این، از بین پایه های مشخص شده با کادر سبز رنگ، تعدادی از این پایه ها نیز در شرایط خاصی قابلیت دسترسی داشته و باید الزامات خاصی را برای آن در نظر گرفت. این موضوع را در جدول زیر برای کلیه پایه های قابل دسترس از لحاظ فیزیکی، بیان کرده ایم.

شرح وضعیت تعریف به صورت خروجی وضعیت تعریف به صورت ورودی نام پایه
در هنگام راه اندازی ماژول(بوت) به صورت HIGH است. هنگام تعریف به صورت ورودی به این نکته دقت کنید. به عنوان خروجی نمی توان تعریف کرد. با رعایت نکات می توان به صورت ورودی تعریف کرد RX
در زمان بوت به صورت HIGH است. چنانچه این پایه به هر دلیل LOW شود، ماژول بوت نخواهد شد. با رعایت نکات می توان به عنوان خروجی تعریف کرد نمی توان به عنوان ورودی تعریف کرد. TX
این پایه به عنوان پایه SDA در ارتباط I2C استافده می شود. بدون مشکل می توان به عنوان خروجی تعریف کرد. بدون مشکل می توان به عنوان ورودی تعریف کرد. GPIO4
این پایه به عنوان پایه SCL در ارتباط I2C استفاده می شود. بدون مشکل می توان به عنوان خروجی تعریف کرد. بدون مشکل می توان به عنوان ورودی تعریف کرد. GPIO5
در زمان بوت HIGH است. چنانچه حین بوت LOW شود، ماژول بوت نخواهد شد. بدون مشکل می توان به عنوان خروجی تعریف کرد. نمی توان به عنوان ورود تعریف کرد. این پایه پول اپ است. GPIO2
در زمان بوت HIGH است. چنانچه حین بوت LOW شود، ماژول بوت نشده و وارد مد پروگرام می شود. بدون مشکل می توان به عنوان خروجی تعریف کرد. نمی توان به عنوان ورودی تعریف کرد. این پایه پول آپ است. GPIO0
در صورتیکه حین بوت ماژول این پایه HIGH شود، ماژول بوت نخواهد شد. هممچنین این پایه ، پایه CS ارتباط SPI است. با رعایت نکات می توان به عنوان خروجی تعریف کرد نمی توان به عنوان ورودی تعریف کرد. این پایه پول داون است. GPIO15
زمان بوت HIGH است. این پایه جهت خارج سازی ماژول از مد اسلیپ به کار می رود. به عنوان خروجی می توان تعریف کرد. اما روی این پایه نمی توان PWM تعریف کرد. به عنوان ورودی می توان تعریف کرد. وقفه روی این پایه فعال نیست. GPIO16
این پایه، پایه کلاک (SCLK) ارتباط SPI است. بدون مشکل می توان به عنوان خروجی تعریف کرد. بدون مشکل می توان به عنوان ورودی تعریف کرد. GPIO14
این پایه، پایه MISO ارتباط SPI است. بدون مشکل می توان به عنوان خروجی تعریف کرد. بدون مشکل می توان به عنوان ورودی تعریف کرد. GPIO12
این پایه، پایه MOSI ارتباط SPI است. بدون مشکل می توان به عنوان خروجی تعریف کرد. بدون مشکل می توان به عنوان ورودی تعریف کرد. GPIO13
به کمک این پایه می توانید ورودی آنالوگ داشته باشید. این پایه به عنوان ورودی آنالوگ به کار می رود. A0

 

پس از معرفی و بررسی پایه های GPIO، به بررسی مثال هایی از نحوه کار با امکانات ماژول می پردازیم. از آنجاییکه به کمک آردوینو قصد برنامه نویسی داریم، لذا کلیه دستورات آردوینو در ESP با دستورات آردوینو در حالت عادی، به عنوان مثال آردوینو UNO یکسان است. در نظر داشته باشید که ماژول ESP8266-12E دارای حافظه فلش ۴ مگابایتی است. این ماژول می تواند با فرکانس ۸۰ و ۱۶۰ مگاهرتزی، برنامه را اجرا کند.

 


تعریف GPIO ورودی و خروجی


همانطور که در جدول قسمت قبل مشاهده شد، برخی از پایه های جهت تعریف به عنوان ورودی/ خروجی، نیزامند رعایت الزاماتی هستند. این در حالیست که می توانیم به سادگی از پایه های دیگر استفاده کنیم. در این قسمت، پایه شماره ۴ را به عنوان ورودی و پایه شماره ۵ را به عنوان خروجی انتخاب می کنیم. پایه شماره ۴ را با مقاومت داخلی پول آپ می کنیم. همانطور که اطلاع دارید، در این حالت این پایه مقدار HIGH را بر روی خود دارد. چنانچه این پایه با اتصال به GND مقدار LOW به خود بگیرد، پایه شماره ۵ به صورت HIGH تغییر وضعیت می دهد. برای نمایش بهتر، شما می توانید با اتصال یک LED به پایه ۵، روال کار را مشاهده کنید. در زیر کد این برنامه را مشاهده می کنید.

 

همانطور که در کد فوق مشاهده می کنید، دستورات تعریف ورودی/خروجی عینا مشابه آردوینو است. بدین ترتیب به سادگی و بدون نیاز با یادگیری زبان جدید، می توانید بردهای ESP را با برنامه های آردوینو پروگرام کنید.  همچنین توجه داشته باشید که بر روی پایه های ماژول ESP8266 می توانید وقفه خارجی( به جز پایه GPIO16) نیز فعال کنید.

esp8266 Introduction of bases and hardware review

 


خواندن ورودی آنالوگ در ESP8266


همانطور که پیشتر گفته شد، ماژول ESP8266 دارای یک ورودی آنالوگ است. به کمک این ورودی می توانید سیگنال های آنالوگ را با تابع analogRead آردوینو، به معادل دیجیتال آن تبدیل کنید. در رابطه با ADC ماژول ESP توجه به نکات ضروری است.

  • ولتاژ مرجع ADC برابر با ۱ ولت است.
  • فرکانس نمونه برداری ADC  در حالت بیشینه برابر با ۵ کیلوهرتز است.

در زیر نمونه کد مربوط به خواندن مقدار از ورودی ADC را مشاهده می کنید. در این برنامه مقدار ADC خوانده شده و در سریال مانیتور نمایش داده می شود.

 

پس از آپلود برنامه و در پی آن اجرا، خروجی را در سریال مانیتور همانند تصویر زیر مشاهده خواهید کرد.

esp8266 Introduction of bases and hardware review

 

از ADC ماژول ESP8266 استفاده های فراوانی می شود. به عنوان مثال در آموزشی، اقدام به طراحی و پیاده سازی نمایشگر شارژ باتری به کمک ADC ماژول پرداختیم. برای مطالعه این آموزش می توانید بر روی این لینک کلیک نمایید.

 


تولید پالس PWM در پایه ESP8266


یکی از توابع فوق العاده کاربردی آردوینو، تابع analogWrite است. به کمک این تابع می توانید به سادگی بر روی پایه های ESP8266(مطابق جدولی که پیشتر ارائه شد) پالس PWM ایجاد کنید. به کمک این تابع می توانید مقادیر ۰ الی ۱۰۲۳ را در خروجی به عنوان duty cycle تعریف کنید. کد برنامه زیر، یک پالس PWM بر روی پایه GPIO4 ایجاد می کند.

 

در برنامه فوق نور LED از کم به زیاد افزایش می یابد. توجه داشته باشید که فرکانس PWM در ESP8266 به صورت پیشفرض ۱ کیلو هرتز است. شما می توانید به کمک تابع زیر، این فرکانس را تغییر دهید.

در نهایت با اجرای برنامه، با تصویر زیر رو که نور LED آرام آرام زیاد می شود، رو به رو خواهید شد.

esp8266 Introduction of bases and hardware review

 


ایجاد سریال نرم افزاری روی پایه‌های ESP8266


از دیگر امکانات ماژول ESP8266 امکان تعریف و ایجاد سریال نرم افزاری بر روی پایه های دلخواه ESP8266 است. این رویه دقیقا مشابه دستورات آردوینو است. برنامه زیر یک نمونه برنامه جهت ارسال فرامین AT کامند به ماژول SIM800L است.

 


کار با پورت های I2C و SPI در ESP8266


ماژول ESP8266 دارای پورت I2C و SPI است. راه اندازی و کار با این پورت ها با دستورات آردوینو و کتابخانه wire.h  و spi.h صورت می گیرد.  برای این مورد می توانید دو آموزش زیر را با کلیک بر روی هر یک، مطالعه کنید.

آموزش فوق با برد NODEMCU انجام شده، اما با توجه به یکسان بودن پردازنده، کدها برای ماژول ESP8266-12E نیز قابل اجراست.

 


لوازم مورد نیاز


مبدل سریال به USB

ماژول ESP8266-12E

ماژول مبدل SMD به DIP

 


جمع بندی


در سلسله آموزش های ماژول ESP8266، در قسمت سوم به سراغ بررسی پایه های GPIO این ماژول پرداختیم. در این آموزش به تحلیل و بررسی وضعیت پایه های GPIO طی یک جدول پرداختیم. در ادامه با ارائه یک نمونه کد، نحوه تعریف ورودی و خروجی در کد تابع را مشاهده نمودیم. پس از آن به بررسی قابلیت های مختلف نظیر ADC ، تولید پالس PWM و سریال نرم افزاری پرداختیم. در نهایت با ارائه نمونه پروژه، نحوه کار با پورت های I2C و SPI در این ماژول را مورد بررسی قرار دادیم. در قسمت های بعدی این سلسله آموزش، وارد مباحث و امکانات شبکه ای ماژول با دستورات آردوینو خواهیم شد.

 

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

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

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

۶ دیدگاه