آموزش استفاده از میکروپایتون در برد ESP8266
در این پست به صورت بسیار سریع با نحوه استفاده از میکروپایتون در ESP8266 آشنا میشیم .
سلام .
در پست قبل با هم یاد گرفتیم چطور روی برد esp میکروپایتون نصب کنیم و در این مقاله قصد دارم چند دستور از دستورات میکروپایتون که برای تنظیم بردهای ESP8266 با این زبان برنامه نویسی احتیاج دارید آشنا میشم .
در این آموزش یاد میگیریم :
- چطور تنظیمات سخت افزاری پایتون برای برد ESP8266 رو تغییر بدیم ،
- چطور برد ESP8266 رو در میکروپایتون به شبکه بی سیم متصل کنیم
- نحوه ایجاد تاخیر در میکروپایتون
- چطور از پایه های برد ESP8266 در میکروپایتون استفاده کنیم
به صورت پیش فرض سرعت ارتباط با ESP8266 در میکروپایتون از نرخ ارسال ۱۱۵۲۰۰ استفاده میکنه .
تنظیمات سخت افزاری در میکرو پایتون:
کتابخانه machine مربوط به سخت افزار esp هست .
یکی از کارهایی رو که میتونید با استفاده از این دستور انجام بدید تغییر سرعت CPU هست که به صورت پیش فرض در ESP8266 روی ۸مگاهرتز تنظیم شده .
دقت داشته باشید تغییر این فرکانس به مقادیر بالاتر میتونه پایدار بودن پردازنده رو کاهش بده و باعث گرم شدن بیشتر بشه پس دقت کنید !
۱ ۲ ۳ ۴ |
import machine machine.freq() # دریافت مقدار فعلی فرکانس پردازنده machine.freq(۱۶۰۰۰۰۰۰۰) # تنظیم فرکانس پردازنده روی ۱۶ مگاهرتز |
تنظیمات شبکه در میکروپایتون :
در قسمت تنظیمات شبکه شما میتونید برد ESP8266 رو به ۲ صورت استفاده کنید
- استفاده از ESP8266 به عنوان کاربر (station) / اگر میخواهید بردتون رو به شبکه بی سیمی که از قبل وجود داره متصل کنید از این حالت استفاده کنید
- استفاده از ESP8266 به عنوان نقطه دسترسی (Access Point) / اگر میخواهید برد ESP به عنوان نقطه مرکزی شبکه بی سیم استفاده کنید از این حالت استفاده کنید .
برای استفاده از دستورات شبکه کتابخانه network رو باید فراخونی کنید .
اتصال به شبکه در حالت کلاینت (Station) در میکروپایتون ESP8266 :
برای اتصال ESP8266 به شبکه بی سیم اول با دستور زیر شبکه برد رو به حالت Station میبریم .
۱ |
wlan = network.WLAN(network.STA_IF) |
حالا میریم سراغ تنظیمات به صورت کلی و سریع :
دقت داشته باشید به جای اسم essid باید نام شبکه بی سیم خودتون رو بزنید و به جای password رمز عبور شبکه بیسیم رو وارد کنید .
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ |
import network wlan = network.WLAN(network.STA_IF) # فعال کردن حالت station wlan.active(True) # فعال کردن شبکه بیسیم wlan.scan() # جستجو برای پیدا کردن شبکه های بی سیم اطراف wlan.isconnected() # بررسی وضعیت اتصال یا عدم اتصال به شبکه wlan.connect('essid', 'password') # اتصال به شبکه بی سیم wlan.config('mac') # دریافت آدرس مک شبکه بی سیم wlan.ifconfig() # دریافت اطلاعات شبکه بی سیم برد IP/netmask/gw/DNS addresses |
اتصال به شبکه در حالت نقطه دسترسی (Access Point)در میکروپایتون ESP8266 :
خوب برای اینکه برد ESP8266 رو تبدیل به Access Point کنیم که دستگاه های دیگه رو بهش متصل کنیم دستورات زیر رو استفاده میکنیم .
۱ ۲ ۳ ۴ |
import network ap = network.WLAN(network.AP_IF) # ساخت نقطه دسترسی ap.active(True) # فعال کردن شبکه بیسیم ap.config(essid='ESP-AP') # تنظیم نام شبکه بی سیم به ESP-AP |
تاخیر و زمان بندی:
اگر جایی احتیاج داشتید از تاخیر استفاده کنید که خیلی مهمه از دستورات زیر استفاده میکنیم . اگر نمیدونید از این دستورات چطور استفاده کنید این آموزش کوتاه رو ببینید .
۱ ۲ ۳ ۴ ۵ ۶ ۷ |
import time time.sleep(۱) # توقف ۱ ثانیه ای time.sleep_ms(۵۰۰) # توقف ۵۰۰ میلی ثانیه ای time.sleep_us(۱۰) # توقف ۱۰ میکرو ثانیه ای start = time.ticks_ms() # get millisecond counter delta = time.ticks_diff(time.ticks_ms(), start) # compute time difference |
تایمر در میکروپایتون :
خوب مفهوم تایمر ها خیلی باحال و کاربردیه ، شما بخواید یه کار رو مدام تکرار کنید یا در یه دوره خاص تکرارش کنید ، در این مورد میتونید از تایمر داخلی خود برد استفاده کنید تا نخواید یه تایمر اختصاصی ایجاد کنید .
کد ها رو با هم ببینیم :
۱ ۲ ۳ ۴ ۵ |
from machine import Timer tim = Timer(-۱) tim.init(period=۵۰۰۰, mode=Timer.ONE_SHOT, callback=lambda t:print(۱)) # در این حالت عدد ۱ فقط یکبار بعد از ۵ ثانیه چاپ میشود tim.init(period=۲۰۰۰, mode=Timer.PERIODIC, callback=lambda t:print(۲)) |
خوب طبق معمول اول کتابخانه رو فراخوانی کردم .
عبارت tim رو به تایمر ۱ میدیم .
وقتی mode=Timer.ONE_SHOT رو استفاده میکنیم دستور ما یکبار اجرا میشه . زمانی که mode=Timer.PERIODIC رو استفاده میکنیم به صورت دوره ای اجرا میشه دستور
استفاده از پایه ها در میکروپایتون :
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ |
from machine import Pin p0 = Pin(۰, Pin.OUT) # تعریف پایه ۰ بع عنوان خروجی و نام P0 p0.on() # روشن کردن P0 p0.off() # خاموش کردن P0 p0.value(۱) # نمایش وضعیت فعلی P0 p2 = Pin(۲, Pin.IN) # تعریف پایه ۲ به عنوان ورودی print(p2.value()) # get value, 0 or 1 p4 = Pin(۴, Pin.IN, Pin.PULL_UP) # فعال کردن وضعیت PUUL UP برای پایه ۴ p5 = Pin(۵, Pin.OUT, value=۱) # با تعریف value |
پایه ها در میکروپایتون با شماره های [۰,۱,۲,۳,۴,۵,۱۲,۱۳,۱۴,۱۵,۱۶] شناخته میشن که پایه های ۱ و ۳ برای ارتباط سریال استفاده میشن و بهتره ازشون استفاده نکنید . همچنین پایه ۱۶ معمولا برای فعال کردن برد در حالت خواب عمیق (DeepSleep mode) استفاده میشه و برای استفاده از Neo Pixel ها توصیه نمیشن !
در آموزش بعدی ارتباط با سریال و همچنین PWM در میکروپایتون آشنا میشیم .
منبع : سایت رسمی Micropython