مقدمه
آنچه در این آموزش یاد می گیرید
- آشنایی با میکروپایتون
- آشنایی با محیط برنامه نویسی میکروپایتون
- برنامه نویسی ESP8266 با میکروپایتون
میکروپایتون چیست؟
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزار های مورد نیاز
چرا ESP8266 را برای برنامه نویسی میکروپایتون انتخاب کردیم
اجرای میکروپایتون بر ماژول ESP8266
در قدم اول برای اجرای اسکریپت پایتون روی ماژول ESP8266 باید فریمور (firmware) مربوط به این ماژول را دانلود کرده و روی آن پروگرم کنید.
میتوانید فریمور مربوط به این برد و بردهای دیگر را از لینک زیر دریافت کنید:
http://micropython.org/download
پس از نصب این فریمور باید آن را روی ماژول آپلود کنید. برای پروگرم کردن ماژول به برنامهی ESP8266Flasher نیاز دارید. این برنامه را نیز میتوانید از لینک زیر دریافت کنید:
https://github.com/nodemcu/nodemcu-flasher
برای ورود به محیط برنامه نویسی میکروپایتون یا همان REPL (Read Evaluate Print Loop) باید از یک ترمینال سریال استفاده کنید. برای اتصال به ماژول ESP8266 در ویندوز از نرم افزار putty استفاده می کنیم که میتوانید آن را از لینک زیر دانلود کنید:
پس از دانلود برنامههای مورد نیاز، نوبت به پروگرم کردن ESP8266 میرسد:
1. ابتدا در قسمت Operation پورتی که ماژول به آن متصل شده است را انتخاب کنید.
- میخواهیم بین ماژول ESP8266 و کامپیوتر ارتباط سریالی برقرار کنیم. پس در تنظیمات Putty ارتباط سریال را انتخاب کنید و پس از انتخاب COM مناسب، سرعت انتقال داده را روی 115200 تنظیم کنید.
اجرای میکروپایتون بر ماژول ESP8266 از طریق وب
برنامه نویسی میکروپایتون در محیط وب نیز قابل انجام است. برای اینکار مراحل زیر را دنبال کنید:
- آدرس http://micropython.org/webrepl/ را در مرورگر خود باز کنید. حالا به command prompt برگردید و دستور زیر را اجرا کنید:
>>> import webrepl_setup
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 نیز برای ایجاد تاخیر نیاز داریم.
توجه
>>> 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 عمل کرده و تاخیر مورد نظر به میلی ثانیه را در مدار ایجاد میکند. پروژه 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)
Awesome! I’m proud of you guys
سلام ممنون بابت مطلب عالیتون خیلیییییییییی جالب بود لذت بردم. من ترم دوم مهندسی بزشکی هستم و خیلی به این زبان برنامه نویسی علاقه دارم و میخوام که میکروبایتون رو هم یادبگیرم برای اینترنت اشیا (IoT and IoMT) سوالم اینه که از کجا شروع کنم؟ مثلا در مورد میکروبایتون اطلاعاتم کمه و نمیدونم که چطور بروژه ها رو میشه روش بیاده کرد. ممنون میشم یه راهنمایی ای – یک مسیر مطالعه ای بهم نشون بدید. کمی تجربه کار با بایتون دارم و به زبانش تا حدودی اشنا هستم.
سلام.
بهترین گزینه بین میکروکنترلرها برای کاربردهای اینترنت اشیا، میکروکنترلر ESP8266 و ESP32 هست. یک سری آموزشهای جدید در رابطه با ESP32 در دست انجامه که به صورت پایهای و گام به گام نحوه استفاده از اونهارو شرح دادیم. انشاالله به زودی در سایت قرار میگیره.
بسیار عالی
من از فروشگاه همین سایت Node mcu با مبدل ch03g سفارش دادم . این آموزش ها با استفاده از این بورد عملی میشه؟
سلام برای نصب pip ها باید چیکار کنیم ؟
سلام.
می تونید از دستور upip install استفاده کنید. مشابه نصب همان پکیج ها رو پایتون.
سلام من یک مشکلی دارم وقتی من برد رو وصل میکنم و بعد مینویسه driver is unavailable چه کار کنم که درست بشه
سلام.
بردی که دارید دقیقا چه بردی هست؟ قسمت device manager سیستمتون رو باز کنید و برد رو به سیستم متصل کنید. ببینید قسمت PORTS آیا مورد جدیدی اضافه میشه یا خیر. اونجا میتونید ببینید دقیقا چه درایوری رو نیازه که نصب کنید. احتمال زیاد درایور مورد نیازتون CH340 باشه که اگه اینطور بود میتونید از آموزش زیر استفاده کنید:
“https://thecaferobot.com/learn/how-to-install-ch340-driver/”
سلام.
ممنون بابت آموزش.
ولی وقتی میشه با محیط برنامه نویسی آردوینو به بهترین شکل ممکن برد ESP8266 رو پروگرم کرد ، چرا باید از میکروپایتون کنسولی استفاده کنیم؟!
سلام.
درست میفرمایید، محیط برنامهنویسی آردوینو سادهتر و مناسبتر از میکروپایتون کنسولی هست. خوشبختانه اما در حال حاضر نرمافزارهایی با محیط جذاب و بسیار مناسب برای میکروپایتون طراحی شدن که این مشکل رو حل میکنن. برای اطلاعات بیشتر میتونید به این آموزش مراجعه کنید:
https://thecaferobot.com/learn/getting-started-with-micropython-on-esp32-a-full-beginners-guide/
همچنین در رابطه با برتری میکروپایتون نسبت به زبان C که نرمافزار آردوینو بر اساس اون طراحی شده میشه به سادگی خیلی بیشتر اشاره کرد.
با thonny کار کنید هم میتونید برد رو باهاش روش فریمور آپلود کنید هم پایتون داشته باشید هم تکمیل خودکار و نمودار برا اعداد خروجی مثل سریال پلاتر آردوینو و…….
درود بر شما\
بعد از نصب فریمور، اگر خواستیم دوباره به IDE اردوینو برگردیم، باید فریمور خاصی دوباره اینستال کنیم؟ یا با اولین کد اردوینو خودش فریمور مناسب رو نصب میکنه؟
مثل AT که با اولین کد اردوینو پاک میشه و بعدش میشه با اردوینو کار کرد؟؟؟
با سلام
هر کدی را بر روی ماژول از طریق آردوینو بریزید تمام کد های قبلی پاک می شود و میتوانید به صورت نرمال دوباره استفاده کنید.
فقط در صورتی که میخواهید از میکروپایتون استفاده کنید باید فریمور مربوطه رو نصب بکنید.
ممنونم مهندس جان ،
بعد از نصب فریمور میکرو پایتون بود.. بعد از میکرو پایتون اگر بخوام به آردوینو آی دی ای برگردم آیا فریمور خاصی باید نصب شه؟ یا خیر
مشابه قبل نیازی نیست، همین که یک برنامه از طریق Arduino IDE آپلود کنید تمام فریم ور های قبلی پاک میشود.