مقدمه
آیا تابحال به فکر ارتباط سریال بی سیم افتاده اید؟ ارتباط سریال، یکی از محبوبترین روشها در بین افرادی است که با میکروکنترلرها و به خصوص خانواده آردوینو سرو کار دارند. از طریق این ارتباط، هر نوع داده نوشتاری را که بخواهید، می توانید ارسال یا دریافت کنید و یا اینکه به عیب یابی کد خود بپردازید.
اما گاهی این ارتباط که به صورت سیمی است، دست و پا گیر و یا غیر ممکن می شود. مخصوصاً زمانی که یک طرف ارتباط، از طرف دیگر غیر قابل دسترس باشد
تبدیل این ارتباط سیمی به بیسیم، جذابیت زیادی برای بسیاری از کاربران خواهد داشت. در این آموزش، نحوه برقراری ارتباط سریال بی سیم با استفاده از WebSerial را به صورت گام به گام به شما معرفی خواهیم کرد.
ESP32 WebSerial یک تحول در ارتباطات است. از مزایای آن می توان به سادگی، کارایی و انعطافپذیری اشاره کرد. چه یک توسعه دهنده باشید، یا دانشجو یا صاحب کسب و کار، ESP32 WebSerial یک قلمرو کاملاً جدید از امکانات را برای پروژه های شما باز میکند.
آنچه در این آموزش یاد میگیرید
- کار با Wifi برد ESP32
- برقراری ارتباط سریال بیسیم با استفاده از WebSerial
- ارسال و دریافت داده نوشتاری در قالب سریال بیسیم
چگونگی عملکرد ESP32 WebSerial
ESP32 WebSerial به ESP32 اجازه میدهد تا با استفاده از پروتکل ارتباطی شبه سریال و از طریق اینترنت با دیگر تجهیزات ارتباط برقرار کرده و نیاز به پیکربندیهای پیچیده شبکه را دور بزند.
برای برقراری ارتباط شبه سریال بیسیم با ESP32 ، میتوانید از WebSerial API مرورگر وب استفاده کنید.
ویژگی های وب سریال ESP32
- کار بر پایه WebSockets
- امکان Realtime logging
مزایای استفاده از وب سریال ESP32
وب سریال ESP32 چندین مزیت به همراه دارد. اولاً، رابط سریال مبتنی بر وب داخلی آن، نیاز به تنظیمات شبکه پیچیده را از بین می برد. همچنین، اتصال سریال به دیگر تجهیزات را تسهیل کرده و راه اندازی و مدیریت سیستم ها را آسان تر می کند.
یکی دیگر از مزایای ESP32 WebSerial کم مصرف بودن آن است. این میکروکنترلر به گونه ای طراحی شده که از نظر انرژی کارآمد باشد. بنابراین برای کاربردهای IoT با باتری ایده آل می باشد. این عامل، به ما کمک می کند تا در زمینه هایی مانند دستگاه های پوشیدنی، سنسورهای هوشمند و سیستم های نظارت از راه دور فعالیت داشته باشیم.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
*: از هر نوع برد ESP32 دیگر نیز می توانید استفاده کنید.
نرمافزارهای مورد نیاز
برقراری ارتباط شبه سریال (وب سریال) با ESP32 WebSerial
در این بخش، مراحل آماده سازی و اجرای ESP32 وب سریال را به شما آموزش می دهیم.
کد
مراحل زیر را به ترتیب طی کنید:
1. دانلود کتابخانه های WebSerial ، ESPAsyncWebServer و AsyncTCP
2. نصب فایل های دانلود شده کتابخانه، به صورت جداگانه، از مسیر زیر:
Sketch->Include Library->Add .ZIP Library
3. باز کردن فایل مثال ESP32 WebSerial از مسیر زیر:
File->Examples->WebServer->Demo.ino
#include <Arduino.h>
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <WebSerial.h>
#define LED 4
AsyncWebServer server(80);
const char* ssid = "Caferobot-2G"; // Your WiFi SSID
const char* password = "caferobot.ir"; // Your WiFi Password
void recvMsg(uint8_t *data, size_t len){
WebSerial.println("Received Data...");
String d = "";
for(int i=0; i < len; i++){
d += char(data[i]);
}
WebSerial.println(d);
if (d == "ON"){
digitalWrite(LED, HIGH);
}
if (d=="OFF"){
digitalWrite(LED, LOW);
}
}
void setup() {
Serial.begin(115200);
pinMode(LED, OUTPUT);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.printf("WiFi Failed!\n");
return;
}
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
// WebSerial is accessible at "<IP Address>/webserial" in browser
WebSerial.begin(&server);
WebSerial.msgCallback(recvMsg);
server.begin();
}
void loop() {
WebSerial.println("Hello!");
delay(2000);
}
توضیحات
روند اجرای کد به صورت زیر است:
1. بارگذاری کتابخانه های مورد نیاز
#include <Arduino.h>
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <WebSerial.h>
2. انتخاب پایه متصل به خروجی LED
#define LED 4
3. انتخاب شبکه وای فای مورد نظر برای اتصال
const char* ssid = "REPLACE_WITH_YOUR_SSID"; // Your WiFi SSID
const char* password = "REPLACE_WITH_YOUR_PASSWORD"; // Your WiFi Password
4. تعریف تابع recvMsg() برای دریافت و ذخیره موقت عبارت دریافتی
در این تابع، کاراکترهای ورودی از درگاه WebSerial به صورت یکجا وارد سیستم می شود و ما آن را پس از تبدیل به نوع char، در متغیر d ذخیره می کنیم.
در صورتی که عبارت ذخیره شده، برابر با FLASH باشد، لامپ LED متصل به پین GPIO4 فلش خواهد زد.
void recvMsg(uint8_t *data, size_t len){
WebSerial.println("Received Data...");
String d = "";
for(int i=0; i < len; i++){
d += char(data[i]);
}
WebSerial.println(d);
if (d == "FLASH"){
digitalWrite(LED, HIGH);
delay(200);
digitalWrite(LED, LOW);
}
}
5. تابع Setup(): در این تابع، عملیات زیر را انجام می دهیم:
- فعالسازی ارتباط سریال
Serial.begin(115200);
- تعریف پین 4 به عنوان خروجی (برای LED)
pinMode(LED, OUTPUT);
- تعیین مد عملکرد WiFi به صورت Station و اتصال به شبکه WiFi معرفی شده به کد برنامه
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
- چاپ عبارت خطا در صورت عدم موفقیت در اتصال به شبکه
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.printf("WiFi Failed!\n");
return;
}
- چاپ آدرس IP وب سرور ساخته شده در پورت سریال
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
- فعال کردن WebSerial بر روی وب سرور و تعریف تابع recvMsg() به عنوان گیرنده داده دریافتی از WebSerial
WebSerial.begin(&server);
WebSerial.msgCallback(recvMsg);
- فعالسازی سرور
server.begin();
6. حلقه loop():
در این حلقه، هر 2 ثانیه یک بار عبارت !Hello را در درگاه WebSerial چاپ می کنیم.
void loop() {
WebSerial.println("Hello!");
delay(2000);
}
پروگرام کردن ESP32
پس از اعمال تغییرات بر روی کد، برد ESP32 خود را به کامپیوتر متصل و آن را پروگرام کنید.
پس از آن، کلیدهای BOOT و سپس EN را مطابق تصویر زیر بزنید.
در نرم افزار Arduino IDE، در قسمت “Tools->Port”پورتی که مربوط به برد ESP32 است را انتخاب کرده و پنجره Serial Monitor را از قسمت “Tools->Serial Monitor” باز کنید. خروجی زیر را مشاهده خواهید کرد.
در خط آخر خروجی چاپ شده در Serial Monitor، آدرس وب سرور درج شده است. آن را به صورت زیر در مرورگر تایپ کنید و وارد آن شوید.
Your IP Address”/WebSerial”
صفحه زیر را در مرورگر خود مشاهده خواهید کرد.
با وارد کردن لغت FLASH می توانید LED متصل به پین 4 را به مدت 200 میلی ثانیه روشن و سپس خاموش کنید.
یک گام جلوتر
در این آموزش، ابتدا با روند روشن کردن Wifi برد ESP32 و اتصال آن به شبکه های اطراف آشنا شدید. سپس نحوه تبادل داده به صورت ارتباط سریال بی سیم را توضیح دادیم.
کاربردهای بالقوه ESP32 WebSerial، گسترده و متنوع هستند؛ از خانه های هوشمند و اتوماسیون صنعتی گرفته تا مراقبت های بهداشتی و کشاورزی. همانطور که فناوری به تکامل و بلوغ خود ادامه می دهد، می توانیم انتظار داشته باشیم که موارد استفاده خلاقانه تر و تاثیرگذارتری را در آینده شاهد باشیم.