آموزش راه اندازی ESP8266 با آردوینو – {بخش دوم – تست اولین کد}

مقدمه

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

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

بخش سخت افزاری

ما برای این که بتونیم کدهامون رو روی برد ESP8266 بریزیم نیاز به یک مبدل USB به سریال داریم. حالا چرا؟ ببینید دوستان، استاندارد برد ESP که باهاش عمل پروگرم انجام میشه ارتباط سریال هست در حالی که ما داریم روی یک کامپیوتر یا لپتاپ کدهامون رو مینویسیم که این کامپیوتر استانداردش از نوع USB هست. خوب حالا این دو تا استاندارد مختلف چگونه باید با هم ارتباط برقرار کنن؟ اینجاست که به یک مبدل USB به سریال نیاز پیدا میکنیم.

مبدل های USB به سریال مختلفی توی بازار وجود داره. از CP2102 گرفته تا  PL2303  . اما ما در اینجا نمیخوایم از این مبدل ها استفاده کنیم. ما میخوایم با استفاد از همین برد آردوینو این کار رو انجام بدیم. چون برد آردوینو روی خودش یک مبدل USB به سریال داره و ما میتونیم از اون مبدل برای پروگرم کردن استفاده کنیم. ولی نکته مهم اینه که باید حتما میکروکنترلر رو از روی برد برداریم تا داده ها بر روی برد ESP ریخته ( البته راه هایی هم هست که بدون این که میکروکنترلر رو برداریم بشه پروگرم کرد که چون ما در ابتدای کار هستیم اون راه ها رو پیشنهاد نمیکنیم)

مهمترین کار در این قسمت این هست که چگونه سیم ها رو وصل کنیم. یعنی چه سیم هایی رو از آردوینو به برد ESP وصل کنیم. در شکل زیر ابتدا پایه های این برد آورده شده و سپس جدولی رو آوردیم که در اون جدول نشون دادیم باید سیم های چطوری به هم دیگه وصل بشن.

پایه های ماژول ESP8266 - راه اندازی ESp8266

اتصال ماژول esp به برد آردوینو

در شکل زیر هم نحوه سیم بندی رو به صورت کاملا عملی میبینید:

مدار اتصال esp8266 به آردوینو برای پروگرم کردن

دوستان حتما توجه داشته باشید که باید پایه GPIO_0 به زمین وصل باشه وگرنه عمل پروگرم کردن به درستی انجام نخواهد شد. حالا بریم وارد بخش نرم افزاری قضیه بشیم.

بخش نرم افزاری

محیط های مختلفی وجود داره که میشه با استفاده از اون ها میشه برای ماژول ESP8266 رو برنامه نوشت. از Notepad گرفته تا Eclipse . اما ما در اینجا میخوایم از نرم افزار Arduino استفاده کنیم و پیشنهاد ما هم برای کسانی که تازه کار با این ماژول رو شروع کرده اند همینه. 

برای این که بتونیم برای این ماژول در محیط آردوینو کدنویسی کنیم باید یک افزونه رو نصب کنیم. در ادامه  آموزش قصد داریم یاد بگیریم که چگونه این افزونه رو در آردوینو نصب کنیم. مثل همیشه مستقیم میریم سر اصل مطلب:

آموزش نصب افزونه:

از نسخه 1.6.4 نرم افزار آردوینو ، یه بخشی برای اضافه کردن بردهای دیگه به نرم افزار اضافه شد. بدیهی هست که اگه از نسخه های قبل از این نسخه استفاده میکنید باید نسخه جدیدتری رو دانلود کنید. جدیدترین نسخه این نرم افزار رو میتونید از این لینک دانلود کنید.

برای شروع نیاز هست که ما قسمت board manager در نرم افزار arduino رو با یک URL مشخص آپدیت کنیم. برای این کار ابتدا نرم افزار arduino را باز کنید. سپس از منوی File گزینه Preferences رو انتخاب کنید. سپس مطابق شکل از قسمت Additional Board Manager URLs آدرس زیر رو وارد کنید: ( میتونید هم بر روی گزینه مشخص شده در شکل زیر کلیک کنید و در پنجره باز شده آدرس رو وارد کنید( مطابق شکل زیر))

http://arduino.esp8266.com/stable/package_esp8266com_index.json

نصب افزونه esp8266 در آردوینو - کتابخانه esp8266 برای آردوینو

اگه شما در اینجا یک URL داشتید قبلا و دوست دارید که اون URL باقی بمونه تنها کافیه که URL ها رو با یک کاما از همدیگه جدا کنید. ( در arduino 1.6.5 یک گزینه ای اضافه شد در همین بخش که وقتی روش کلیک میکنید یه پنجره کوچیک برای شما باز میشه و در این پنجره برای وارد کردن چند URL تنها کافی است هر بار که URL خود را وارد میکنید به خط بعد بروید و پس از وارد کردن URL های خود روی OK کلیک کنید. در این صورت نرم افزار به صورت اتوماتیک URL ها را یک علامت کاما برای شما جدا خواهد کرد. )

بعد از وارد کردن آدرس بر روی گزینه OK کلیک کنید تا پنجره Preferences برای شما بسته بشه. سپس از منوی Tools وارد بخش Boards و سپس Board manager بشید. در این صورت برای شما پنجره ای مطابق شکل زیر باز خواهد شد. در این پنجره دنبال بخش esp8266 بگردید و سپس روی گزینه Install کلیک کنید.

نصب کتابخانه ESP8266 در آردوینو

حالا این برد هم برای شما تعریف میشه و یک سری ابزارها مثل GCC و فایل های باینری کامپایل شده و … شروع به دانلود شدن میکنند. به همین خاطر این فرایند چندین دقیقه طول میکشه ( حجم فایل دانلودی حدود 110 مگابایت هست). وقتی که نصب تموم شد جلوی پنجره مربوطه عبارت INSTALLED نوشته میشه.

انتخاب برد:

بعد از تکمیل عملیات بالا حالا باید برای استفاده از این کتابخانه برد ESP8266 رو انتخاب کنید که این کار از منوی Tools و بخش Boards قابل انجام هست.

 انتخاب برد ESP8266 در نرم افزار

در آخرین مرحله  از منوی Tools  در بخش Port ، پورتی که از طریق اون با ماژول ارتباط برقرار کردید رو انتخاب کنید.

آپلود اولین کد

برای این که چک کنید ببینید همه چیز درست هست. اون کد معروف LED چشمک زن که جزو مثال های آردوینو است رو باز کنید ( از منوی File ، بخش Example ، قسمت Basic و سپس گزینه Blink ) ولی به جای 13 باید یکی از دو عدد 0 یا2 رو قرار بدید. چون برد ESP8266-01 فقط دو پایه GPIO داره که یکی از اون ها GPIO 0 و دیگری GPIO 2 هست.

void setup()
{
  pinMode(2, OUTPUT);
}

void loop() 
{
  digitalWrite(2, HIGH);
  delay(500);
  digitalWrite(2, LOW);
  delay(500);
}

 

سپس کد رو بر روی برد آپلود کنید. اگه آپلود با ارور مواجه شد قبل از همه چیز مطمین باشید که تغذیه برد ESP8266وصل هست و  LED قرمز رنگ روی برد روشنه.

در شکل زیر مدار مورد نظر برای این کد و پروگرم کردنش آورده شده ولی حتما بعد از آپلود کردن کد حتما اتصال پایه GPIO_0 از زمین رو قطع کنید تا این مدار به درستی کار کنه. ( در این شکل این پایه قطع نشده است چون میخواستیم همزمان مدار پروگرم کردن و LED با هم نشان داده شود. )

مدار LED چشمک زن برای ESP8266

سوال: چگونه کد خود را سریعتر آپلود کنیم؟

سرعت ارتباط سریال در این روش پروگرم به طور پیش فرض 115200 هست (که خیلی هم قابل اطمینان هست) و اگه عمل پروگرم رو انجام داده باشید خواهید دید که مدت زمانی طول خواهد کشید تا پروگرم کامل انجام بشه. اما میشه این سرعت رو افزایش داد و زمان کمتری برای پروگرم کردن منتظر بمونید. این کار از منوی Tools بخش Upload Speeds قابل انجام هست. شکل زیر گویای همه چیز هست:

افزایش سرعت آپلود کد بر روی ESP8266

البته دوستان توجه داشته باشید که پروگرم کردن این برد هنوز هم با یک سری باگ ها مواجه هست که این اشکالات در برد ESP-01 برطرف نشده. مثلا این که اگه دوبار روی upload کلیک کنید و بخواید کد رو روی برد ESP بریزید احتمالا با یک خطایی مواجه خواهید شد که این اشکال مربوط به خود برد ESP هست.

خوب این جلسه هم به پایان رسید. مثل همیشه میتونید ما رو در تلگرام و یا اینستاگرام دنبال کنید:

 

 

اشتراک گذاری:
مطالب زیر را حتما بخوانید

52 دیدگاه

به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

  • با سلام
    دلیل این خطا چیه ؟
    با تشکر از سایت فوق العادتون
    Arduino: 1.6.12 (Windows 10), Board: “Generic ESP8266 Module, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck, Disabled, None”

    In file included from C:\Users\****\Documents\Arduino\libraries\ESP8266WiFi\src\WiFiUdp.cpp:41:0:

    C:\Users\****\Documents\Arduino\libraries\ESP8266WiFi\src\include/UdpContext.h: In member function ‘void UdpContext::setMulticastInterface(ip_addr_t)’:

    C:\Users\****\Documents\Arduino\libraries\ESP8266WiFi\src\include/UdpContext.h:109:48: error: ‘udp_set_multicast_netif_addr’ was not declared in this scope

    udp_set_multicast_netif_addr(_pcb, addr);

    ^

    C:\Users\****\Documents\Arduino\libraries\ESP8266WiFi\src\include/UdpContext.h: In member function ‘void UdpContext::setMulticastTTL(int)’:

    C:\Users\****\Documents\Arduino\libraries\ESP8266WiFi\src\include/UdpContext.h:117:40: error: ‘udp_set_multicast_ttl’ was not declared in this scope

    udp_set_multicast_ttl(_pcb, ttl);

    ^

    Multiple libraries were found for “ESP8266WiFi.h”
    Used: C:\Users\****\Documents\Arduino\libraries\ESP8266WiFi
    Not used: C:\Users\****\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\ESP8266WiFi
    exit status 1
    Error compiling for board Generic ESP8266 Module.

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    • و این رو هم بگم خدمتتون که هیچی ننوشتم و فقط کتابخونه ESP8266.h (و متعلقاتش )رو به کمک include خود نرم افزار ، به برنامه اضافه کردم.
      اما این خطا رو میدهد
      باز هم متشکرم

      • لطفا بفرمایید که آیا تنظیمات را مطابق تنظیمات این جلسه اعمال کرده اید یا خیر ؟

    • با سلام.
      در گام اول تنظیمات را دقیقا مطابق ان چیزی که در جلسه گفته شده انجام دهید. همچنین بفرمایید که از چه مدلی از ESP8266 استفاده میکنید و علاوه بر آن تصویری از مدار خود را ارسال بفرمایید.
      موفق باشید.

      • با سلام
        ممنونم از زحمتی که میکشید.
        درست شد ، مشکل این بود که قبلا به صورت دستی کتابخونه های esp8266 اضافه کرده بودم

  • سلام
    من میخام ماژول esp8266رو به آردوینو متصل کنم وبر نامه اصلی رو روی آردوینو بریزم واز ماژول هم به عنوان سرور استفاده کنم این عمل امکان پذیر هست؟
    اگر هست لطفا راهنمایی کنید
    باتشکر

    • با سلام.
      بله این کار امکان پذیر می باشد و کافی است مد ماژول را بر روی حالت سرور قرار دهید. متاسفانه نمیتوان در قالب یک کامنت به این پرسش پاسخ داد ولی در آینده قطعا یک آموزش در این خصوص منتشر خواهد شد.
      موفق باشید.

  • با سلام
    من یک بار پروژه led را روی برد آردوینو آپلود کرد.حالا می خواهم برنامه دیگری را روی برد آپلود کنم آیا باید برنامه قبلی را پاک کنم، اگر جواب آره هست لطفا بفرمایید چگونه باید برنامه قبلی را پاک کنم؟
    (من با میکرو که کار کردم بعد از هر پروگرام برنامه را باید پاک می کردم و برنامه بعدی را پروگرام می کردم آیا آدوینو نیز اینگونه هست؟؟؟)

    منتظر جواب شما هستم
    باتشکر

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

  • با سلام و عرض خسته نباشید
    ببخشید میخواستم بدونم که چطور میشه برای کنترل وسایل منزل به وسیله ی ارتباط wifi به طور هم زمان از esp8266 و برد اردویینو استفاده کرد؟؟؟طریق این کار و استفاده ی تنها از esp8266 برای این کار رو تقریبا بلدم اما چون در عنوان پروژه کارشناسیم از واژه ی آردویینو استفاده شده باید حتما در پروژم ازش استفاده کنم…در واقع میخوام بدونم راهی هست که این دو سخت افزار رو به هم وصل کنم؟
    با تشکر

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

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