اتصال ماژول ESP8266 به رزبری پای پیکو
ما می دانیم که ESP-01 بهترین و ارزان ترین ماژول وای فای موجود در بازار است. همانطور که از عنوان پیداست، در این آموزش، ما یک ماژول Wi-Fi جداگانه را با Raspberry Pi Pico راه اندازی میکنیم. ما یاد خواهیم گرفت که چگونه ماژول ESP01 را با Raspberry Pi Pico با استفاده از Micropython و ESP8266 متصل و برنامه ریزی کنیم.
ماژول ESP8266-01 با سیستمافزار پیشفرض بارگذاری شده است که میتوانیم با ارسال مجموعههای دستوری AT از طریق UART به آن دسترسی داشته باشیم. با استفاده از میکروپایتون میتوانیم به راحتی ESP8266 را به رزبری پای پیکو متصل کنیم و عملیات http get/post را کامل کنیم.
مدار اتصال ESP8266 به رزبری پای
برای درک نحوه اتصال ماژول raspberry pi pico و esp8266-01 می توانید به شماتیک مدار زیر مراجعه کنید. سیم های قرمز رنگ برای اتصال پین VCC ماژول ESP-01 با پایه 3.3 ولتی که پین شماره 36 برد Pico است استفاده می شود. سیم قهوه ای برای ارائه ولتاژ 3.3 ولت به پین Channel Enable که “CH_EN” ماژول ESP-01 است استفاده می شود. پایه Tx ماژول ESP-01 با استفاده از سیم زرد در نمودار مدار زیر به پایه Rx کانال UART0 که پایه شماره 2 برد Pico است وصل می شود. پایه Rx ماژول ESP-01 با سیم نارنجی به پین Tx کانال UART0 که پایه شماره 1 برد پیکو است وصل می شود. تمام GND دستگاه های برد با سیم های مشکی وصل شده است.
قطعات مورد نیاز
- رزبری پای پیکو
- ماژول ESP8266-01
- برد بورد
- مقاومت 1k یا 10k (اتصال اختیاری بین 3.3v و پین EN)
کد راه اندازی ماژول وای فای با رزبری پای پیکو
کد کامل این پروژه در فایل دانلودی انتهای صفحه قرار داده شده است.
برای عملیات HTTP Get، ما از پیوند وب www.httpbin.org/ip برای دریافت آدرس IP ESP8266 استفاده می کنیم.
{ "origin": "223.229.136.70" }
برای عملیات HTTP Post ما از پیوند وب www.httpbin.org/post برای دریافت پاسخ پست با انواع داده های دیگر در قالب Json استفاده می کنیم. مثال:
{ "args": {}, "data": "{\"name\":\"Noyel\"}", "files": {}, "form": {}, "headers": { "Content-Length": "16", "Content-Type": "application/json", "Host": "httpbin.org", "User-Agent": "RPi-Pico", }, "json": { "name": "Noyel" }, "origin": "223.229.136.70", "url": "http://httpbin.org/post" }
حالا بیایید شروع به کدنویسی کنیم. کتابخانه های ذکر شده در زیر قبل از شروع کد اصلی باید فراخوانی شوند و مورد نیاز هستند. سپس با فراخوانی تابع ESP8266() همانطور که در قطعه کد زیر نشان داده شده است یک شی esp01 ایجاد میکنیم. این کار نیاز به تکمیل فرآیند HTTP دارد.
from machine import UART, Pin import time from esp8266 import ESP8266 esp01 = ESP8266() esp8266_at_ver = None
سپس، تابع ()esp01.startUP
را برای بررسی ارتباط بین RaspberryPi Pico و ESP8266 فراخوانی کنید.
پس از فراخوانی esp01.startUP
سپس esp01.echoING()
را فراخوانی کنید تا دستور AT Echo متوقف شود و سپس esp01.setCurrentWiFiMode()
را برای تنظیم حالت WiFi در STA+SoftAP فراخوانی کنید. پس از پیکربندی حالت WiFi، با دستور روبرو WiFi را با فراخوانی esp01.connectWiFi ("ssid", "pwd")
وصل کنید و منتظر بمانید تا وصل شود.
print("StartUP",esp01.startUP()) #print("ReStart",esp01.reStart()) print("StartUP",esp01.startUP()) print("Echo-Off",esp01.echoING()) print("\r\n\r\n") ''' Print ESP8266 AT command version and SDK details ''' esp8266_at_var = esp01.getVersion() if(esp8266_at_var != None): print(esp8266_at_var) ''' set the current WiFi in SoftAP+STA ''' esp01.setCurrentWiFiMode() #apList = esp01.getAvailableAPs() #for items in apList: # print(items) #for item in tuple(items): # print(item) print("\r\n\r\n") ''' Connect with the WiFi ''' print("Try to connect with the WiFi..") while (1): if "WIFI CONNECTED" in esp01.connectWiFi("ssid","pwd"): print("ESP8266 connect with the WiFi..") break; else: print(".") time.sleep(2)
پس از فراخوانی این توابع، برد منتظر اتصال وای فای می ماند.
پس از برقراری ارتباط، فرآیند برای تکمیل عملیات HTTP Get/Post فراتر می رود و به طور مداوم Get/Post را انجام می دهد.
برای تکمیل عملیات Get/Post، باید تابع esp01.doHttpGet()
و esp01.doHttpPost()
را فراخوانی کنیم. در تابع ()esp01.doHttpGet
، باید Host-URL، سپس مسیر URL، User-Agent و شماره پورت را مشخص کنیم.
در تابع esp01.doHttpPost()
باید Host-URL، مسیر URL، User-Agent[اختیاری]، نوع محتوا [مثلاً. application/json, text/plain و غیره]، محتوا و شماره پورت [اختیاری] مشخص شود.
پس از اتمام هر عملیات Get/Post، تابع کد خطای HTTP را با Response برمیگرداند و در این آموزش کد خطای HTTP و پاسخ را روی خطوط ارتباط سریال چاپ میکند.
print("\r\n\r\n") print("Now it's time to start HTTP Get/Post Operation.......\r\n") while(1): led.toggle() time.sleep(1) ''' Going to do HTTP Get Operation with www.httpbin.org/ip, It return the IP address of the connected device ''' httpCode, httpRes = esp01.doHttpGet("www.httpbin.org","/ip","RaspberryPi-Pico", port=80) print("------------- www.httpbin.org/ip Get Operation Result -----------------------") print("HTTP Code:",httpCode) print("HTTP Response:",httpRes) print("-----------------------------------------------------------------------------\r\n\r\n") ''' Going to do HTTP Post Operation with www.httpbin.org/post ''' post_json="abcdefghijklmnopqrstuvwxyz" #"{\"name\":\"Noyel\"}" httpCode, httpRes = esp01.doHttpPost("www.httpbin.org","/post","RPi-Pico", "application/json",post_json,port=80) print("------------- www.httpbin.org/post Post Operation Result -----------------------") print("HTTP Code:",httpCode) print("HTTP Response:",httpRes) print("--------------------------------------------------------------------------------\r\n\r\n") #break
بعد از کامل شدن کد و اجرا همچنین داده هایی را باید مشاهده کنید:
موارد موجود در فایل : سورس کامل
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود