اینترنت اشیا IOT برد ESP8266 برد Nodemcu

راه اندازی و کار با ESP8266، بخش اول: شناخت برد

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

ESP8266 یک ماژول وای فای قدرتمند و کوچک است که برای اتصال دستگاه‌ها به شبکه‌های بی‌سیم طراحی شده است. این برد کوچک اما قدرتمند، دارای قابلیت های بسیاری است که آن را برای کاربردهای اینترنت اشیا (IoT) بسیار مناسب می کند. ESP8266 دارای یک پردازنده قوی و حافظه مناسب است که امکان برنامه نویسی مستقیم بر روی برد را فراهم می کند.این برد با قیمت مناسب و قابلیت‌های بسیار، به عنوان یکی از محبوب‌ترین بردهای توسعه اینترنت اشیا شناخته می شود. از طریق پورت USB می‌توان برنامه‌های توسعه داده شده را به ESP8266 ارسال کرده و توسط برنامه نویسی آن‌ها را اجرا کرد. با استفاده از این برد، می توان تجربه‌های آموزشی در زمینه برنامه نویسی وای فای و اینترنت اشیا را به راحتی به دست آورد و همچنین پروژه‌های متنوعی را در این حوزه پیاده سازی کرد.با توجه به توانایی های بالای ESP8266 در اتصال به شبکه بی سیم و پشتیبانی از پروتکل‌های مختلف مانند TCP/IP، HTTP و MQTT، این برد در اتصال دستگاه‌های هوشمند، کنترل خانه هوشمند، مانیتورینگ سیستم‌ها، رصد هواشناسی و بسیاری از کاربردهای دیگر بسیار مفید است. به طور خلاصه، ESP8266 یک ابزار قدرتمند برای ایجاد دستگاه‌های متصل به اینترنت و ساخت پروژه‌های IoT است که از آن می توان به راحتی بهره برد. در ادامه این آموزش، با مرجع تخصصی ESP8266 به زبان فارسی، دیجی اسپارک، همراه باشید.

 


شناخت برد ESP8266


ESP8266 یک ماژول میکروکنترلر وای فای با قابلیت برنامه نویسی مستقل است که توسط شرکت Espressif Systems توسعه داده شده است. این ماژول، امکان اتصال دستگاه‌ها به شبکه‌های بی‌سیم را فراهم می‌کند و از معماری کوچک و قدرتمند خود برای ایجاد برنامه‌های قابل اجرا بر روی خود استفاده می‌کند.ESP8266 دارای یک پردازنده Tensilica Xtensa LX106 با فرکانس ۸۰ مگاهرتز است که با حافظه فلش داخلی ۴ مگابایت قابل برنامه‌ریزی است. علاوه بر این، این برد دارای چیپ Wi-Fi با استاندارد ۸۰۲٫۱۱ b/g/n است که به دستگاه‌ها امکان اتصال به شبکه‌های بی‌سیم را می‌دهد.ESP8266 به طور معمول از طریق پورت USB یا پین‌های دیجیتال و آنالوگ به کامپیوتر یا سایر دستگاه‌ها متصل می‌شود. برنامه نویسی آن به وسیله زبان Arduino و با استفاده از محیط توسعه Arduino IDE انجام می‌شود.

 برای برنامه نویسی پیشرفته‌تر، می‌توان از زبان‌های برنامه نویسی مانند MicroPython و Lua نیز استفاده کرد.ESP8266 به عنوان یکی از بردهای توسعه اینترنت اشیا (IoT) بسیار محبوب است. با توجه به اندازه کوچک، هزینه مناسب و قابلیت اتصال به شبکه بی‌سیم، این برد در ایجاد انواع پروژه‌های مربوط به اینترنت اشیا، مانند کنترل خانه هوشمند، سامانه‌های رصد و کنترل، دستگاه‌های هوشمند و بسیاری از کاربردهای دیگر مورد استفاده قرار می‌گیرد.علاوه بر اتصال به شبکه‌های بی‌سیم، ESP8266 همچنین دارای پورت‌های UART، I2C و SPI است که به کاربر امکان اتصال به سنسورها، ماژول‌ها را می‌دهد. این قابلیت‌ها، تعامل با دستگاه‌های خارجی را برای پروژه‌های مختلف بسیار آسان می‌کند.ESP8266 همچنین دارای امکانات امنیتی است. این برد از پروتکل‌های رمزنگاری WPA/WPA2 و WEP برای اتصال امن به شبکه‌های بی‌سیم استفاده می‌کند و قابلیت احراز هویت و رمزگذاری را فراهم می‌کند.

  • دارای مدهای مختلف توان مصرفی پایین
  • دارای بازه ولتاژ تغذیه بین ۲٫۵۶ الی ۳٫۶ ولت DC
  • قابلیت اتصال به تلفن های همراه جهت تبادل داده
  • قابلیت اتصال به اینترنت جهت ارسال و دریافت داده ها
  • قابلیت قرار گیری در مد STA جهت اتصال ماژول به مودم ها
  • قابلیت تعریف در حالت سرور جهت دریافت و مدیریت داده های ارسالی
  • دارای حافظه فلش و فرکانس کاری بالا جهت اجرای برنامه های سنگین
  • قابلیت برنامه نویسی به کمک دستورات آردوینو و اجرای برنامه های آردوینو
  • قابلیت برنامه نویسی با دستورات آردوینو و بدون نیاز به هیچ میکروکنترلر اضافی
  • قابلیت قرار گیری در مد نقطه دسترسی AP جهت اتصال سایر دستگاه ها به ماژول

 

 


مشخصات فنی ESP8266


ESP32 یک میکروکنترلر قدرتمند و قابل برنامه‌ریزی است که توسط شرکت Espressif Systems توسعه داده شده است. این میکروکنترلر از معماری Xtensa LX6 با فرکانس ۲۴۰ مگاهرتز استفاده می‌کند و دارای قابلیت‌های بی‌سیم Wi-Fi و بلوتوث نسخه ۴٫۲ است.

  • پردازنده: میکروکنترلر دو هسته‌ای Xtensa LX6 با فرکانس ۲۴۰ مگاهرتز
  • حافظه فلش: ۴ مگابایت
  • حافظه SRAM: 520 کیلوبایت
  • واحد برداری: فرکانس تایمر تا ۸۰ مگاهرتز
  • واحد ADC: 12 بیت با ۱۸ کانال و توانایی تبدیل آنالوگ به دیجیتال با سرعت بالا
  • واحد DAC: 8 بیت با ۲ کانال
  • پورت‌های ارتباطی: UART، SPI، I2C، I2S، CAN
  • بلوتوث: پشتیبانی از بلوتوث نسخه ۴٫۲ با پروفایل‌های GATT و SMP
  • وای فای: پشتیبانی از استاندارد ۸۰۲٫۱۱ b/g/n و حالت‌های عملیاتی STA، AP و STA+AP
  • کدک‌های رمزگذاری و رمزنگاری سخت‌افزاری: AES، RSA، SHA، ECC و بیشتر
  • حسگرها: حسگر دما، حسگر رطوبت، حسگر فشار، حسگر نور و غیره
  • پورت‌های خروجی: GPIO، PWM، DAC
  • ولتاژ کاری: ۲٫۲ تا ۳٫۶ ولت

 


بررسی پایه های ESP8266


ESP8266 دارای پایه‌های مختلفی است که به شما امکان ارتباط با دستگاه‌های خارجی و اتصال به سایر قطعات را می‌دهد. در زیر پایه‌های اصلی ESP8266 را بررسی می‌کنیم:

VCC: این پایه به منبع تغذیه مثبت (۳٫۳ ولت) متصل می‌شود تا ESP8266 را تغذیه کند.

GND: این پایه به زمین متصل می‌شود و پتانسیل صفر ولت را فراهم می‌کند.

GPIO (General Purpose Input/Output): ESP8266 دارای یک سری پایه‌های GPIO است که برای ورودی و خروجی دیجیتال استفاده می‌شوند. این پایه‌ها به عنوان رابط بین ESP8266 و قطعات و سنسورهای خارجی عمل می‌کنند.

RXD/TXD: این پایه‌ها برای ارتباط سریال با دستگاه‌های خارجی استفاده می‌شوند. TXD برای ارسال داده‌ها (Transmit Data) و RXD برای دریافت داده‌ها (Receive Data) مورد استفاده قرار می‌گیرد.

ADC (Analog to Digital Converter): این پایه برای ورودی آنالوگ استفاده می‌شود و به شما امکان می‌دهد ولتاژهای آنالوگ را تبدیل به داده‌های دیجیتال در ESP8266 کنید.

SPI (Serial Peripheral Interface): این پایه‌ها برای اتصال با دستگاه‌هایی مانند صفحه‌ نمایش های OLED، حافظه فلش و سنسورهایی که از رابط SPI پشتیبانی می‌کنند، استفاده می‌شوند.

I2C (Inter-Integrated Circuit): این پایه‌ها برای ارتباط با دستگاه‌هایی مانند سنسورها و صفحه‌نمایشهای OLED که از رابط I2C پشتیبانی می‌کنند، استفاده می‌شوند.

RST (Reset): این پایه برای تنظیم مجدد ESP8266 به حالت اولیه است.

CH_PD (Chip Power Down): این پایه برای تغذیه و قطع تغذیه مدار ESP8266 استفاده می‌شود. با اتصال این پایه به منبع تغذیه مثبت (VCC)، تغذیه مدار فعال شده و ESP8266 قادر به کارکرد است.

GPIO0 و GPIO2: این پایه‌ها در موارد مختلف استفاده می‌شوند. برای حالت بالاخره راه‌اندازی و برنامه‌ریزی مدار، GPIO0 به طور معمول به VCC وصل می‌شود. اما برای حالت عادی عملیات ESP8266، این پایه به گراند (GND) متصل می‌شود. GPIO2 نیز در برنامه‌های خاص می‌تواند برای ورودی و خروجی دیجیتال استفاده شود.

ADC (Analog to Digital Converter) زمینه‌های مستقل ADC بیشتری نیز دارد که به عنوان ورودی آنالوگ مورد استفاده قرار می‌گیرند.

ANT (Antenna): این پایه برای اتصال آنتن به مدار ESP8266 استفاده می‌شود و برای بالابردن قدرت و افزایش برد ارتباط بی‌سیم استفاده می‌شود.

این پایه‌ها به‌علاوه تعدادی پایه تغذیه و زمین دیگر (VCC, GND) و پایه‌های مربوط به کریستال (Crystal) نیز وجود دارند که برای عملکرد صحیح ESP8266 به موارد دیگری نیاز دارند.

EN (Enable): این پایه برای فعال کردن مدار ESP8266 استفاده می‌شود. با اتصال این پایه به منبع تغذیه مثبت (VCC)، ESP8266 را می‌توان روشن کرد و عملکرد آن را آغاز کرد.

GPIO15: این پایه برای تعیین حالت بالاخره (boot mode) مدار استفاده می‌شود. با تنظیم وضعیت این پایه به گراند (GND)، ESP8266 به حالت برنامه‌ریزی ورود می‌کند و می‌توانید برنامه‌ها و کدهای خود را روی آن بارگذاری کنید.

GPIO16: این پایه برای تغذیه خارجی برای اتصال به ماژول‌ها و قطعاتی که به تغذیه اضافی نیاز دارند، مورد استفاده قرار می‌گیرد.

RXD0/TXD0: این پایه‌ها برای ارتباط سریال با رابط UART0 استفاده می‌شوند. TXD0 برای ارسال داده‌ها (Transmit Data) و RXD0 برای دریافت داده‌ها (Receive Data) به‌کار می‌روند.

AREF: این پایه برای تعیین ولتاژ مرجع برای تبدیل‌های آنالوگ به دیجیتال استفاده می‌شود. با اتصال منبع ولتاژ مرجع متصل به این پایه، می‌توانید دقت و تنظیمات ورودی آنالوگ را کنترل کنید.

 

 


تفاوت بردهای ESP


بردهای ESP در واقع نسخه‌های مختلفی از میکروکنترلر ESP8266 یا ESP32 هستند. بردهای ESP بر اساس میکروکنترلر ESP8266 یا ESP32 ساخته می‌شوند. ESP8266 یک میکروکنترلر با قابلیت Wi-Fi است و ESP32 دارای قابلیت‌های Wi-Fi و بلوتوث است. لذا، تفاوت اولیه بین این بردها در نوع میکروکنترلر استفاده شده در آنها است. ESP32 نسبت به ESP8266 قدرت پردازش بیشتری دارد. این به این معنی است که ESP32 قادر به اجرای عملیات پیچیده‌تر، محاسبات متقدم و پردازش داده‌های بیشتر است.ESP32 دارای حافظه فلش و حافظه SRAM بیشتری نسبت به ESP8266 است. این به این معنی است که ESP32 قادر به ذخیره و پردازش حجم بیشتری از داده‌ها است. ESP32 دارای تعداد بیشتری پورت و واحد ارتباطی است که امکان اتصال به سایر ماژول ها را می‌دهد.

به عنوان مثال، ESP32 دارای پورت Ethernet، پورت CAN، واحد I2S و I2C اضافی است که در ESP8266 وجود ندارد.ESP32 در برخی موارد می‌تواند مصرف انرژی کمتری نسبت به ESP8266 داشته باشد، به خصوص در حالت‌های خوابیدن و عملکرد مصرف انرژی پایین. ESP32 دارای قابلیت بلوتوث است که به شما امکان ارتباط با دستگاه‌های بلوتوثی را می‌دهد. این ویژگی برای کاربردهایی مانند اتصال به دستگاه‌های پرینتر بلوتوث، سنسورهای بلوتوث و دیگر دستگاه‌های هوشمند کاربرد دارد. هر دو ESP8266 و ESP32 دارای قابلیت اتصال به شبکه Wi-Fi هستند. اما ESP32 از ویژگی‌های پیشرفته‌تری مانند حالت‌های آنتن داخلی و خارجی، حالت آف‌لاین (station + softAP) و پشتیبانی از مد روتری پیشرفته (WDS) برخوردار است.

 

 

تعداد GPIO در دسترس سوکت آنتن خارجی نام برد
۲ ندارد ESP-01
۷ ندارد ESP-03
۰ دارد EPS-05
۹ دارد ESP-07
۱۵ ندارد ESP-12E
۱۵ ندارد ESP-12F
۹ ندارد WEMODE D1 MINI
۱۵ ندارد NODEMCU

 

  • توجه۱: تعداد در جدول فوق، پایه های رابط سریال UART به عنوان GPIO حساب نشده اند.
  • توجه ۲: جهت آپلود برنامه آردوینو روی ماژول های ESP، می بایست پایه GPIO0 در دسترس باشد. از این رو ماژول ESP-05 قابلیت پروگرام از طریق آردوینو را نخواهد داشت.
  • توجه ۳: ماژول های ESP بر روی خود دارای آنتن از نوع PCB هستند. از طرف دیگر ماژول ESP8266 سری ۱۲E و ۱۲F عملکرد یکسانی دارند. تنها تفاوت آن ها در آنتن PCB (آنتن روی برد) است. ماژول ESP8266-12F دارای آنتن روی بردی قوی تری نسبت به مدل ۱۲E است. در برخی از سری های ماژول ESP، مطابق جدول فوق سوکت UFL جهت اتصال آنتن تعبیه شده است.
  • توجه۴: پایه های GPIO تعبیه شده بر روی ماژول های ESP قابلیت تعریف به صورت ورودی/خروجی به کمک دستورات آردوینو را دارند. در قسمت های بعدی به این موضوع بیشتر می پردازیم.

 


زبان برنامه نویسی ESP8266


ESP8266 با استفاده از زبان برنامه‌نویسی C++ و با استفاده از ابزار توسعه Arduino IDE برنامه‌ریزی می‌شود. این زبان برنامه‌نویسی بر اساس زبان C است و به توسعه‌دهندگان اجازه می‌دهد کدهای کامپایل شده را بر روی برد ESP8266 اجرا کنند.در علاوه بر زبان C++، ESP8266 همچنین قابلیت برنامه‌ریزی با استفاده از زبان‌های برنامه‌نویسی دیگری نظیر MicroPython و Lua را نیز داراست. اما برای برنامه‌ریزی اصلی و پرکاربرد ESP8266، استفاده از زبان C++ و Arduino IDE توصیه می‌شود.با استفاده از Arduino IDE و زبان C++، می‌توانید کدهای برنامه‌ریزی را برای کنترل دستگاه‌ها، ارتباط با شبکه Wi-Fi، خواندن و نوشتن داده‌ها، کنترل پین‌ها و توابع دیگر بر روی ESP8266 نوشته و اجرا کنید. همچنین، بسته به نیاز پروژه، می‌توانید از کتابخانه‌های آماده مربوط به ESP8266 استفاده کنید تا توسعه را سریعتر و آسان‌تر کنید.

 


پروژه های قابل اجرا با ماژول های ESP


بردهای ESP8266 برای اجرای پروژه‌های متنوع در حوزه اینترنت اشیا (IoT) بسیار مناسب هستند. در زیر، چند مثال از پروژه‌هایی که می‌توانید با استفاده از ESP8266 انجام دهید را بررسی می‌کنیم:
سیستم خانه هوشمند: می‌توانید با استفاده از ESP8266، سنسورها، رله‌ها و برنامه‌نویسی مناسب یک سیستم خانه هوشمند را پیاده‌سازی کنید. این سیستم می‌تواند شامل کنترل روشنایی، دما و رطوبت، درب‌ها و پنجره‌ها، دستگاه‌های صوتی و تصویری، و سایر اجزای خانه شما باشد.
مانیتورینگ محیطی: با استفاده از سنسورهای مختلف نظیر دما، رطوبت، نورسنجی و سایر سنسورها، می‌توانید یک سیستم مانیتورینگ محیطی را با ESP8266 پیاده‌سازی کنید. این سیستم قادر است اطلاعات محیطی را دریافت کند و آنها را به یک پایگاه داده مرکزی، پنل کنترل واقع‌زمانی یا برنامه موبایل ارسال کند.
دستگاه‌های هوشمند: با استفاده از ESP8266 می‌توانید دستگاه‌های هوشمندی را طراحی و ساخت کنید. به عنوان مثال، دستگاه‌های کنترل روشنایی و دما، تایمرهای هوشمند، سیستم‌های آلارم و اعلان، وسایل نورپردازی هوشمند و غیره.
ردیابی مکان: با استفاده از ESP8266 و ماژول GPS، می‌توانید یک سیستم ردیابی مکان ساده را پیاده‌سازی کنید. این سیستم قادر است موقعیت مکانی را بر اساس اطلاعات GPS تعیین کند.
سیستم‌های کنترل و اتوماسیون صنعتی: با استفاده از ESP8266 و پروتکل‌های ارتباطی مانند MQTT، می‌توانید سیستم‌های کنترل و اتوماسیون صنعتی را پیاده‌سازی کنید. مثلاً می‌توانید با استفاده از ESP8266 به عنوان یک کنترل کننده، سنسورها، اکتواتورها و تجهیزات دیگر را کنترل کرده و داده‌های مربوطه را به سرور یا سیستم‌های مدیریتی ارسال کنید.
رباتیک: با استفاده از ESP8266 می‌توانید دستگاه‌های رباتیک ساده را ساخت کنید. این دستگاه‌ها می‌توانند شامل ربات‌های کنترلی، ربات‌های خطی، ربات‌های پرنده و سایر نوع دستگاه‌های رباتیک باشند. ESP8266 قابلیت کنترل موتورها، حسگرها و عملکردهای رباتیک را داراست.

 


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


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

ماژول ESP8266-12E

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

 


جمع بندی


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

 

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

 

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

معین صابری

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

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

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

۱۷ دیدگاه