آموزش راه اندازی 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 دیدگاه

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

  • سلام
    خسته نباشید
    من این مدارو مثل تصاویر و متن های گفته شده بستم وبا این ارور مواجع شدم
    esptool.FatalEror : failed to connectto ESP8266 Timed out waiting for packet header
    Arduino: 1.8.13 (Windows 10), Board: “Generic ESP8266 Module, 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), dtr (aka nodemcu), 26 MHz, 40MHz, DOUT (compatible), 1MB (FS:64KB OTA:~470KB), 2, nonos-sdk 2.2.1+100 (190703), v2 Lower Memory, Disabled, None, Only Sketch, 115200”

    Executable segment sizes:

    IROM : 228624 – code in flash (default or ICACHE_FLASH_ATTR)

    IRAM : 26756 / 32768 – code in IRAM (ICACHE_RAM_ATTR, ISRs…)

    DATA : 1248 ) – initialized variables (global, static) in RAM/HEAP

    RODATA : 688 ) / 81920 – constants (global, static) in RAM/HEAP

    BSS : 24880 ) – zeroed variables (global, static) in RAM/HEAP

    Sketch uses 257316 bytes (26%) of program storage space. Maximum is 958448 bytes.

    Global variables use 26816 bytes (32%) of dynamic memory, leaving 55104 bytes for local variables. Maximum is 81920 bytes.

    esptool.py v2.8

    Serial port COM5

    Connecting…….._____….._____….._____….._____….._____….._____…..____Traceback (most recent call last):

    _

    File “C:\Users\Shahriyar\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4/tools/upload.py”, line 65, in

    esptool.main(cmdline)

    File “C:/Users/Shahriyar/AppData/Local/Arduino15/packages/esp8266/hardware/esp8266/2.7.4/tools/esptool\esptool.py”, line 2890, in main

    esp.connect(args.before)

    File “C:/Users/Shahriyar/AppData/Local/Arduino15/packages/esp8266/hardware/esp8266/2.7.4/tools/esptool\esptool.py”, line 483, in connect

    raise FatalError(‘Failed to connect to %s: %s’ % (self.CHIP_NAME, last_error))

    esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header

    esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header

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

  • سلام . من میخوام برنامه ای نوشتم که میخوام بریزم روی اردوینو esp32 اما ارور esp8266wifi .h میگیره . لطفا راهنمایی کنید.

    • با سلام.
      لطفا تصویری از خطای خود ارسال بفرمایید.
      با تشکر.

  • سلام. موقع آپلود یک ارور میده:
    An error occurred while uploading the sketch
    esptool.py v2.8
    Serial port COM3
    Connecting…..
    مشکل چیه؟
    gpio . تو موقع آپلود روی زمین هست.

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

  • سلام این کارو با اردوینو نانو نمیشه انجام داد ؟
    ممنون بخاطر سایت خوبتون

    • با سلام.
      بله از این بابت مشکلی ندارد و میتوانید این ماژول را با Arduino NANO نیز راه اندازی کنید.

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