آموزش استفاده از میکروپایتون در برد ESP8266
در این پست به صورت بسیار سریع با نحوه استفاده از میکروپایتون در ESP8266 آشنا میشیم .
سلام .
در پست قبل با هم یاد گرفتیم چطور روی برد esp میکروپایتون نصب کنیم و در این مقاله قصد دارم چند دستور از دستورات میکروپایتون که برای تنظیم بردهای ESP8266 با این زبان برنامه نویسی احتیاج دارید آشنا میشم .
در این آموزش یاد میگیریم :
- چطور تنظیمات سخت افزاری پایتون برای برد ESP8266 رو تغییر بدیم ،
- چطور برد ESP8266 رو در میکروپایتون به شبکه بی سیم متصل کنیم
- نحوه ایجاد تاخیر در میکروپایتون
- چطور از پایه های برد ESP8266 در میکروپایتون استفاده کنیم
به صورت پیش فرض سرعت ارتباط با ESP8266 در میکروپایتون از نرخ ارسال 115200 استفاده میکنه .
تنظیمات سخت افزاری در میکرو پایتون:
کتابخانه machine مربوط به سخت افزار esp هست .
یکی از کارهایی رو که میتونید با استفاده از این دستور انجام بدید تغییر سرعت CPU هست که به صورت پیش فرض در ESP8266 روی 8مگاهرتز تنظیم شده .
دقت داشته باشید تغییر این فرکانس به مقادیر بالاتر میتونه پایدار بودن پردازنده رو کاهش بده و باعث گرم شدن بیشتر بشه پس دقت کنید !
|
1 2 3 4 |
import machine machine.freq() # دریافت مقدار فعلی فرکانس پردازنده machine.freq(160000000) # تنظیم فرکانس پردازنده روی 16 مگاهرتز |
تنظیمات شبکه در میکروپایتون :
در قسمت تنظیمات شبکه شما میتونید برد ESP8266 رو به 2 صورت استفاده کنید
- استفاده از ESP8266 به عنوان کاربر (station) / اگر میخواهید بردتون رو به شبکه بی سیمی که از قبل وجود داره متصل کنید از این حالت استفاده کنید
- استفاده از ESP8266 به عنوان نقطه دسترسی (Access Point) / اگر میخواهید برد ESP به عنوان نقطه مرکزی شبکه بی سیم استفاده کنید از این حالت استفاده کنید .
برای استفاده از دستورات شبکه کتابخانه network رو باید فراخونی کنید .
اتصال به شبکه در حالت کلاینت (Station) در میکروپایتون ESP8266 :
برای اتصال ESP8266 به شبکه بی سیم اول با دستور زیر شبکه برد رو به حالت Station میبریم .
|
1 |
wlan = network.WLAN(network.STA_IF) |
حالا میریم سراغ تنظیمات به صورت کلی و سریع :
دقت داشته باشید به جای اسم essid باید نام شبکه بی سیم خودتون رو بزنید و به جای password رمز عبور شبکه بیسیم رو وارد کنید .
|
1 2 3 4 5 6 7 8 9 |
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 کنیم که دستگاه های دیگه رو بهش متصل کنیم دستورات زیر رو استفاده میکنیم .
|
1 2 3 4 |
import network ap = network.WLAN(network.AP_IF) # ساخت نقطه دسترسی ap.active(True) # فعال کردن شبکه بیسیم ap.config(essid='ESP-AP') # تنظیم نام شبکه بی سیم به ESP-AP |
تاخیر و زمان بندی:
اگر جایی احتیاج داشتید از تاخیر استفاده کنید که خیلی مهمه از دستورات زیر استفاده میکنیم . اگر نمیدونید از این دستورات چطور استفاده کنید این آموزش کوتاه رو ببینید .
|
1 2 3 4 5 6 7 |
import time time.sleep(1) # توقف 1 ثانیه ای time.sleep_ms(500) # توقف 500 میلی ثانیه ای time.sleep_us(10) # توقف 10 میکرو ثانیه ای start = time.ticks_ms() # get millisecond counter delta = time.ticks_diff(time.ticks_ms(), start) # compute time difference |
تایمر در میکروپایتون :
خوب مفهوم تایمر ها خیلی باحال و کاربردیه ، شما بخواید یه کار رو مدام تکرار کنید یا در یه دوره خاص تکرارش کنید ، در این مورد میتونید از تایمر داخلی خود برد استفاده کنید تا نخواید یه تایمر اختصاصی ایجاد کنید .
کد ها رو با هم ببینیم :
|
1 2 3 4 5 |
from machine import Timer tim = Timer(-1) tim.init(period=5000, mode=Timer.ONE_SHOT, callback=lambda t:print(1)) # در این حالت عدد 1 فقط یکبار بعد از 5 ثانیه چاپ میشود tim.init(period=2000, mode=Timer.PERIODIC, callback=lambda t:print(2)) |
خوب طبق معمول اول کتابخانه رو فراخوانی کردم .
عبارت tim رو به تایمر 1 میدیم .
وقتی mode=Timer.ONE_SHOT رو استفاده میکنیم دستور ما یکبار اجرا میشه . زمانی که mode=Timer.PERIODIC رو استفاده میکنیم به صورت دوره ای اجرا میشه دستور
استفاده از پایه ها در میکروپایتون :
|
1 2 3 4 5 6 7 8 9 10 11 12 |
from machine import Pin p0 = Pin(0, Pin.OUT) # تعریف پایه 0 بع عنوان خروجی و نام P0 p0.on() # روشن کردن P0 p0.off() # خاموش کردن P0 p0.value(1) # نمایش وضعیت فعلی P0 p2 = Pin(2, Pin.IN) # تعریف پایه 2 به عنوان ورودی print(p2.value()) # get value, 0 or 1 p4 = Pin(4, Pin.IN, Pin.PULL_UP) # فعال کردن وضعیت PUUL UP برای پایه 4 p5 = Pin(5, Pin.OUT, value=1) # با تعریف value |
پایه ها در میکروپایتون با شماره های [0,1,2,3,4,5,12,13,14,15,16] شناخته میشن که پایه های 1 و 3 برای ارتباط سریال استفاده میشن و بهتره ازشون استفاده نکنید . همچنین پایه 16 معمولا برای فعال کردن برد در حالت خواب عمیق (DeepSleep mode) استفاده میشه و برای استفاده از Neo Pixel ها توصیه نمیشن !
در آموزش بعدی ارتباط با سریال و همچنین PWM در میکروپایتون آشنا میشیم .
منبع : سایت رسمی Micropython