آموزش برنامه نویسی و اجرای کدهای میکروپایتون روی ESP8266

فهرست مطالب

مقدمه

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

آنچه در این آموزش یاد می گیرید

میکروپایتون چیست؟

پایتون یک زبان برنامه نویسی سطح بالا‌ی ‌بسیار محبوب و پرکاربرد است. اما در مواردی که قصد برنامه ریزی میکروکنترلر‌ها را داشته باشیم، معمولا استفاده از دیگر زبان‌های برنامه نویسی به دلیل سرعت بالا و قدرت پردازش مناسب، نسبت به پایتون متداول‌تر است. میکروپایتون پیاده سازی منبع باز از پایتون 3 است که شامل یک زیر مجموعه کوچک از کتابخانه های استاندارد پایتون بوده و برای اجرا بر روی میکروکنترلرهای با محیط محدود مانند ROM محدود و RAM محدود بهینه شده است. این نسخه از زبان پایتون با سرعت بالا طراحی شده است تا بتوان از آن برای ارتباط با برخی میکروکنترلر‌ها مانند pyboard ،Wipy، ESP32 ، ESP8266 و MicroBit استفاده کرد.

لوازمی که به آن احتیاج دارید

قطعات مورد نیاز

برد ESP8266 × 1

نرم افزار های مورد نیاز

MicroPython firmware for ESP8266
ESP8266Flasher
putty

چرا ESP8266 را برای برنامه نویسی میکروپایتون انتخاب کردیم

از بین سخت افزار‌هایی که قابلیت کار با میکروپایتون را دارند، در اینجا از ESP8266 استفاده شده است. مزیت استفاده از ماژول ESP8266 نسبت به برد های دیگر وجود ارتباط Wi-Fi برای اتصال به اینترنت و شبکه ، وجود یک کنترلر قدرتمند با RAM بالا و قیمت مناسب آن است.

اجرای میکروپایتون بر ماژول ESP8266

در قدم اول برای اجرای اسکریپت پایتون روی ماژول ESP8266 باید فریمور (firmware) مربوط به این ماژول را دانلود کرده و روی آن پروگرم کنید.

می‌توانید فریمور مربوط به این برد و برد‌های دیگر را از لینک زیر دریافت کنید:

http://micropython.org/download

پس از نصب این فریمور باید آن را روی ماژول آپلود کنید. برای پروگرم کردن ماژول به برنامه‌ی ESP8266Flasher نیاز دارید. این برنامه را نیز می‌توانید از لینک زیر دریافت کنید:

https://github.com/nodemcu/nodemcu-flasher

برای ورود به محیط برنامه نویسی میکروپایتون یا همان REPL (Read Evaluate Print Loop)  باید از یک ترمینال سریال استفاده کنید. برای اتصال  به ماژول ESP8266 در ویندوز از نرم افزار putty استفاده می کنیم  که می‌توانید آن را از لینک زیر دانلود کنید:

https://www.putty.org/

پس از دانلود برنامه‌های مورد نیاز، نوبت به پروگرم کردن ESP8266 می‌رسد:

1. ابتدا در قسمت Operation پورتی که ماژول به آن متصل شده است را انتخاب کنید.

2. سپس در قسمت Config مسیر فریمور ماژول را که در قسمت قبل دانلود کرده‌اید، اضافه کنید.
3. حالا با کلیک بر روی Flash، فریمور روی ماژول شما نصب می‌شود.
پس از نصب فریمور، برای ورود به محیط برنامه نویسی میکروپایتون یا همان REPL باید تنظیمات زیر را در نرم افزار Putty انجام دهید:
  1. میخواهیم بین ماژول ESP8266 و کامپیوتر ارتباط سریالی برقرار کنیم. پس در تنظیمات Putty ارتباط سریال را انتخاب کنید و پس از انتخاب COM مناسب، سرعت انتقال داده را روی 115200 تنظیم کنید.
2. حالا با کلیک بر روی گزینه Open وارد محیط برنامه نویسی میکروپایتون می‌شوید.
اخطار
در صورتی که پس از ورود به محیط برنامه نویسی بالا، متنی روی صفحه نمایش داده نمی‌شود و یا شما قادر به نوشتن دستوری نیستید، از تنظیمات Putty وارد قسمت Terminal شوید و گزینه Force On را فعال کنید.

اجرای میکروپایتون بر ماژول ESP8266 از طریق وب

برنامه نویسی میکروپایتون در محیط وب نیز قابل انجام است. برای اینکار مراحل زیر را دنبال کنید:

  1. آدرس http://micropython.org/webrepl/ را در مرورگر خود باز کنید. حالا به command prompt برگردید و دستور زیر را اجرا کنید:
>>> import webrepl_setup
2. پس از اجرای این کد از شما پرسیده می‌شود که آیا می‌خواهید محیط Werepl را فعال کنید، شما باید با تایپ E به این سوال پاسخ مثبت دهید.
3. سپس درباره‌ی رمز دسترسی به محیط از شما سوال پرسیده می شود. با تایپ y می‌توانید رمز دلخواه خود را برای برقراری ارتباط وارد کنید.

4. پس از انجام این مراحل باید به WiFi ماژول متصل شوید. این WiFi معمولا micropython نام دارد و رمز آن به صورت پیش فرض micropythoN است.

5. پس از برقراری ارتباط به صفحه WebREPL در مرورگر خود برگردید و پس از کلیک بر روی Connect رمزی که در مرحله قبل انتخاب کرده‌اید را وارد کنید.

به محیط برنامه نویسی میکروپایتون در محیط وب خوش آمدید!

پروژه 1: کنترل LED به کمک میکروپایتون (کنترل دیجیتال)

روشن و خاموش کردن LED

در این قسمت می‌خواهیم یک برنامه ساده مربوط به کنترل یک LED را به کمک میکروپایتون نوشته و اجرا کنیم. ماژول ESP8266 بر روی برد خود دو LED متصل به پین‌های 2 و 16 دارد. برای روشن و خاموش کردن این LED‌ها با میکروپایتون نیاز داریم که پین‌های ورودی و خروجی (GPIO) را کنترل کنیم. برای اینکار از کتابخانه  machine  استفاده می‌کنیم.

>>> import machine

حالا می‌توانیم از دستورات موجود در این کتابخانه استفاده کنیم. با دستور زیر پین 2 ماژول را به عنوان یک پین خروجی تعریف می‌کنیم:

>>> LED = machine.Pin( 2, machine.Pin.OUT)

حالا میتوانیم مدل LED را که در بالا تعریف کردیم، به کمک دستورات زیر روشن و خاموش کنیم:

>>>LED.on()
>>>LED.off()

یا:

>>>LED.value(1)
>>>LED.value(0)

LED چشمک زن

می‌خواهیم با اضافه کردن یک کلید، LED چشمک زن ایجاد کنیم. علاوه بر کتابخانه machine که در قسمت قبل استفاده کردیم، در این قسمت به کتابخانه utime نیز برای ایجاد تاخیر نیاز داریم.

توجه
وقتی یک کد را روی ESP8266 پروگرم می‌کنیم، اجرای این برنامه تا بینهایت ادامه خواهد داشت! برای پروگرم کردن کد جدید روی ماژول لازم است که ابتدا ماژول را از کد قبلی خارج کنیم. برای این کار از کتابخانه sys استفاده میکنیم.
>>> import machine
>>> import utime
>>> import sys
>>> LED = machine.Pin( 2, machine.Pin.OUT)
>>> Button = machine.Pin( 0, machine.Pin.IN, machine.Pin.PULL_UP)

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

>>>while True:
  >>>  if Button.value() == 0:
       >>> sys.exit()
تابع exit()ماژول را از کد قبلی خارج می‌کند.
    # Turn LED on and then off
  >>>  led.on()
  >>> utime.sleep_ms(500)
  >>>led.off()
  >>>  utime.sleep_ms(500)
تابع sleep_ms()  نیز مانند delay عمل کرده و تاخیر مورد نظر به میلی ثانیه را در مدار ایجاد می‌کند.
برای آشنایی با کتابخانه‌ها و توابع دیگر میکروپایتون می‌توانید به لینک زیر مراجعه کنید: https://docs.micropython.org/en/latest/library/index.html

پروژه 2: کنترل LED به کمک میکروپایتون (کنترل آنالوگ)

در این قسمت می‌خواهیم به کمک یک پتانسیومتر نور LED را کنترل کنیم. برای کنترل نور LED نیز از PWM استفاده می‌کنیم. پتانسیومتر را به پین ADC ماژول ESP8266 متصل میکنیم. مقدار آنالوگ پتانسیومتر توسط این پین خوانده شده و به دیجیتال تبدیل می‌شود. سپس این مفدار دیجیتال به بازه 0 تا 1024 برده شده و به عنوان چرخه کار PWM به آن ارسال می‌شود تا شدت نور LED را کنترل کند.

				
					>>> import machine
>>> import utime
>>> import sys
>>> LED = machine.Pin( 2, machine.Pin.OUT)
>>> Button = machine.Pin( 0, machine.Pin.IN, machine.Pin.PULL_UP)
>>> ADCpin = machine.ADC(0)
>>> PWM=PWM(Pin(2))

>>>while True:
  >>>  if Button.value() == 0:
       >>> sys.exit()

>>>AnalogValue = adc.read()
>>>AnalogValue = AnalogValue * (3.3 / 4095)
>>>pwm.duty(AnalogValue)
>>>utime.sleep_ms(2)
				
			

یک گام جلوتر

  • سعی کنید با مراجعه به سایت میکروپایتون، کتابخانه‌ها و توابع بیشتری یاد گرفته و پروژه‌های پیچیده‌تر را اجرا کنید.

از این مطلب خوشتان آمد؟

آخرین مطالت و آموزش ها را در ایمیلتان دریافت کنید:

مطالب بیشتر

Comments (15)

  • Amir Khakestani Reply

    Awesome! I’m proud of you guys

    مارس 7, 2020 at 9:41 ب.ظ
  • Sajad Reply

    سلام ممنون بابت مطلب عالیتون خیلیییییییییی جالب بود لذت بردم. من ترم دوم مهندسی بزشکی هستم و خیلی به این زبان برنامه نویسی علاقه دارم و میخوام که میکروبایتون رو هم یادبگیرم برای اینترنت اشیا (IoT and IoMT) سوالم اینه که از کجا شروع کنم؟ مثلا در مورد میکروبایتون اطلاعاتم کمه و نمیدونم که چطور بروژه ها رو میشه روش بیاده کرد. ممنون میشم یه راهنمایی ای – یک مسیر مطالعه ای بهم نشون بدید. کمی تجربه کار با بایتون دارم و به زبانش تا حدودی اشنا هستم.

    ژوئن 14, 2020 at 12:41 ب.ظ
    • مهران ملکی Reply

      سلام.
      بهترین گزینه بین میکروکنترلرها برای کاربردهای اینترنت اشیا، میکروکنترلر ESP8266 و ESP32 هست. یک سری آموزش‌های جدید در رابطه با ESP32 در دست انجامه که به صورت پایه‌ای و گام به گام نحوه استفاده از اون‌هارو شرح دادیم. انشاالله به زودی در سایت قرار میگیره.

      آگوست 16, 2021 at 2:44 ب.ظ
  • محمد Reply

    بسیار عالی
    من از فروشگاه همین سایت Node mcu با مبدل ch03g سفارش دادم . این آموزش ها با استفاده از این بورد عملی میشه؟

    جولای 13, 2020 at 2:20 ب.ظ
  • حسام Reply

    سلام برای نصب pip ها باید چیکار کنیم ؟

    ژانویه 10, 2021 at 1:27 ب.ظ
    • مهران ملکی Reply

      سلام.
      می تونید از دستور upip install استفاده کنید. مشابه نصب همان پکیج ها رو پایتون.

      ژانویه 16, 2021 at 3:12 ب.ظ
  • یوسف Reply

    سلام من یک مشکلی دارم وقتی من برد رو وصل میکنم و بعد مینویسه driver is unavailable چه کار کنم که درست بشه

    اکتبر 12, 2021 at 4:25 ب.ظ
    • مهران ملکی Reply

      سلام.
      بردی که دارید دقیقا چه بردی هست؟ قسمت device manager سیستمتون رو باز کنید و برد رو به سیستم متصل کنید. ببینید قسمت PORTS آیا مورد جدیدی اضافه میشه یا خیر. اونجا میتونید ببینید دقیقا چه درایوری رو نیازه که نصب کنید. احتمال زیاد درایور مورد نیازتون CH340 باشه که اگه اینطور بود میتونید از آموزش زیر استفاده کنید:
      “https://thecaferobot.com/learn/how-to-install-ch340-driver/”

      اکتبر 13, 2021 at 8:47 ق.ظ
  • علی Reply

    سلام.
    ممنون بابت آموزش.
    ولی وقتی میشه با محیط برنامه نویسی آردوینو به بهترین شکل ممکن برد ESP8266 رو پروگرم کرد ، چرا باید از میکروپایتون کنسولی استفاده کنیم؟!

    آگوست 6, 2022 at 4:30 ب.ظ
    • مهران ملکی Reply

      سلام.
      درست میفرمایید، محیط برنامه‌نویسی آردوینو ساده‌تر و مناسب‌تر از میکروپایتون کنسولی هست. خوشبختانه اما در حال حاضر نرم‌افزارهایی با محیط جذاب و بسیار مناسب برای میکروپایتون طراحی شدن که این مشکل رو حل میکنن. برای اطلاعات بیشتر میتونید به این آموزش مراجعه کنید:
      https://thecaferobot.com/learn/getting-started-with-micropython-on-esp32-a-full-beginners-guide/
      همچنین در رابطه با برتری میکروپایتون نسبت به زبان C که نرم‌افزار آردوینو بر اساس اون طراحی شده میشه به سادگی خیلی بیشتر اشاره کرد.

      آگوست 7, 2022 at 7:56 ب.ظ
  • asghar Reply

    با thonny کار کنید هم میتونید برد رو باهاش روش فریمور آپلود کنید هم پایتون داشته باشید هم تکمیل خودکار و نمودار برا اعداد خروجی مثل سریال پلاتر آردوینو و…….

    آگوست 29, 2023 at 7:21 ب.ظ
  • محسن Reply

    درود بر شما\
    بعد از نصب فریمور، اگر خواستیم دوباره به IDE اردوینو برگردیم، باید فریمور خاصی دوباره اینستال کنیم؟ یا با اولین کد اردوینو خودش فریمور مناسب رو نصب میکنه؟
    مثل AT که با اولین کد اردوینو پاک میشه و بعدش میشه با اردوینو کار کرد؟؟؟

    سپتامبر 26, 2023 at 2:22 ق.ظ
    • محمد دمیرچی Reply

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

      سپتامبر 26, 2023 at 8:10 ق.ظ
      • محسن Reply

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

        سپتامبر 27, 2023 at 7:11 ق.ظ
        • محمد دمیرچی Reply

          مشابه قبل نیازی نیست، همین که یک برنامه از طریق Arduino IDE آپلود کنید تمام فریم ور های قبلی پاک میشود.

          سپتامبر 27, 2023 at 9:38 ق.ظ

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

نشانی ایمیل شما منتشر نخواهد شد.