بررسی اجمالی
ESP8266 یک تراشه بسیار یکپارچه است که برای نیازهای یک دنیای جدید متصل طراحی شده است. این یک راه حل کامل و مستقل شبکه Wi-Fi را ارائه می دهد که به آن امکان می دهد برنامه را میزبانی کند یا تمام عملکردهای شبکه Wi-Fi را از یک پردازنده برنامه دیگر بارگیری کند.
ESP8266 دارای قابلیتهای پردازش و ذخیرهسازی داخلی قدرتمندی است که به آن اجازه میدهد با سنسورها و سایر دستگاههای خاص برنامه از طریق GPIOهای خود با حداقل توسعه اولیه و حداقل بارگذاری در طول زمان اجرا، یکپارچه شود. درجه بالای یکپارچگی روی تراشه آن، حداقل مدارهای خارجی را امکان پذیر می کند، و کل راه حل، از جمله ماژول جلویی، به گونه ای طراحی شده است که حداقل منطقه PCB را اشغال کند.
در این آموزش، ما از seeeduino برای کنترل ماژول WiFi ESP8266 برای درخواست صفحه ایستا از اینترنت استفاده می کنیم. این یک استفاده اساسی از سوکت TCP است، برای استفاده دیگر، لطفاً به راهنمای فرمان AT ماژول مراجعه کنید.
لیست مواد
- Seeeduino V3 / Arduino Uno
- ماژول وای فای سریال ESP8266
- UartSBee v4 / دیگر مبدل USB به TTL
توجه: ما از یک سریال نرم افزاری برای چاپ برخی از اطلاعات اشکال زدایی استفاده کردیم زیرا تنها یک سریال سخت افزاری روی برد seeeduino وجود دارد. اما محدودیت سریال نرم افزار این است که نمی تواند با نرخ باود بالاتر از 19200 ارتباط برقرار کند. بنابراین بخشی از خروجی ماژول ESP حذف می شود زیرا نرخ باود 57600 ماژول ESP از سریال نرم افزار بالاتر است. اگر بردی با بیش از یک سریال سخت افزاری دارید (مثلاً آردوینو مگا 2560)، کیس راحت تر خواهد بود.
مرحله 1 - اتصال
![پروژه وای فای پایه آردوینو با استفاده از ماژول وای فای ESP8266](https://duino4projects.com/wp-content/uploads/2015/01/Arduino-Basic-Wifi-Project-using-ESP8266-wifi-module.jpg)
پروژه وای فای پایه آردوینو با استفاده از ماژول وای فای ESP8266
مرحله 2 - برنامه نویسی
- Arduino IDE را باز کنید و یک طرح جدید ایجاد کنید.
- کد زیر را در ویرایشگر طرح تجزیه و تحلیل کنید (نیاز به تغییر ماکروهای SSID و PASS در شرایط خود دارید).
#include <softwareserial.h>
#define SSID "xxxxxxxx"
#define PASS "xxxxxxxx"
#define DST_IP "220.181.111.85" //baidu.com
SoftwareSerial dbgSerial(10, 11); // RX, TX
void setup()
{
// ارتباطات سریال را باز کنید و منتظر بمانید تا پورت باز شود:
Serial.begin(57600);
Serial.setTimeout(5000);
dbgSerial.begin(9600); //سریعتر از 19200 برای dbgSerial.println
("ESP8266 Demo");
//تست اگر ماژول آماده است
Serial.println("AT+RST");
تاخیر (1000);
if(Serial.find("ready"))
{
dbgSerial.println("ماژول آماده است");
}
else
{
dbgSerial.println("ماژول پاسخی ندارد.");
while(1);
}
delay(1000);
//اتصال به وای فای
بولی Connect=false;
for(int i=0;i<5;i++) {if(connectWiFi()) {connected = true; زنگ تفريح؛ } } if (!connected){while(1);} delay(5000); //پرینت ip addr /*Serial.println("AT+CIFSR"); dbgSerial.println("آدرس IP:"); while (Serial.available()) dbgSerial.write(Serial.read());*/ //تنظیم حالت اتصال واحد Serial.println("AT+CIPMUX=0"); } void loop() { String cmd = “AT+CIPSTART=\”TCP\”,\””; cmd += DST_IP; cmd += "\",80"; Serial.println(cmd); dbgSerial.println(cmd); if (Serial.find ("خطا")) بازگشت; cmd = "GET / HTTP/1.0\r\n\r\n"؛ Serial.print("AT+CIPSEND="); Serial.println(cmd.length()); if(Serial.find(">"))
{
dbgSerial.print(">");
}else
{
Serial.println("AT+CIPCLOSE");
dbgSerial.println ("موقعیت اتصال");
تاخیر (1000);
برگشت؛
}
Serial.print(cmd);
تاخیر (2000);
//Serial.find("+IPD");
while (Serial.available())
{
char c = Serial.read();
dbgSerial.write(c);
if(c=='\r') dbgSerial.print('\n');
}
dbgSerial.println(“====”);
تاخیر (1000);
}
boolean connectWiFi()
{
Serial.println(“AT+CWMODE=1″);
رشته cmd=”AT+CWJAP=\””;
cmd+=SSID;
cmd+=”\”,\””;
cmd+=PASS;
cmd+=”\””;
dbgSerial.println(cmd);
Serial.println(cmd);
تاخیر (2000);
if(Serial.find("OK"))
{
dbgSerial.println("OK، به WiFi متصل است.");
بازگشت درست؛
}else
{
dbgSerial.println("نمی توان به وای فای متصل شد.");
بازگشت نادرست؛
}
}
مرحله 3 - نظارت
Serial Monitor را باز کنید و دکمه ریست برد را فشار دهید، خروجی را مشاهده خواهید کرد.
در نهایت، هک مبارک!
منابع
در اینجا آیتم ویکی اصلی برای آن آمده است:
http://www.seeedstudio.com/wiki/WiFi_Serial_Transceiver_Module
مایلیم از رودی تشکر کنیم که کل دیتاشیت را ترجمه کرده است، به همه توسعه دهندگان توصیه می کنیم قبل از اینکه بخواهید به آن نگاهی بیندازند.
با تشکر از Arduino Basic Wifi Project با استفاده از ماژول وای فای ESP8266
در ادامه، متن انگلیسی این مطلب را میتوانید مشاهده نمایید:
Overview
In this tutorial, we’ll use a seeeduino to control the ESP8266 WiFi module to request a static page from the internet. This is a basic use of TCP socket, for other usage, please refer to the AT command guide of the module.
Material list
- Seeeduino V3 / Arduino Uno
- ESP8266 Serial WiFi module
- UartSBee v4 / other USB to TTL converter
Note: We used a software serial to print some debugging information as there’s only one hardware serial on seeeduino board. But the limitation of software serial is that it can’t communicate in a higher baud rate than 19200. So part of the output from ESP module will be dropped because the baud rate 57600 of ESP module is higher than that of the software serial. If you have a board with more than one hardware serial (e.g. Arduino Mega 2560), the case will be easier.
Step 1 – Connection
![Arduino Basic Wifi Project using ESP8266 wifi module](https://duino4projects.com/wp-content/uploads/2015/01/Arduino-Basic-Wifi-Project-using-ESP8266-wifi-module.jpg)
Step 2 – Programming
- Open Arduino IDE and create a new sketch;
- Parse the following code into the sketch editor (need modifying the SSID and PASS macros into your own situation);
#define SSID “xxxxxxxx”
#define PASS “xxxxxxxx”
#define DST_IP “220.181.111.85” //baidu.com
SoftwareSerial dbgSerial(10, 11); // RX, TX
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(57600);
Serial.setTimeout(5000);
dbgSerial.begin(9600); //can’t be faster than 19200 for softserial
dbgSerial.println(“ESP8266 Demo”);
//test if the module is ready
Serial.println(“AT+RST”);
delay(1000);
if(Serial.find(“ready”))
{
dbgSerial.println(“Module is ready”);
}
else
{
dbgSerial.println(“Module have no response.”);
while(1);
}
delay(1000);
//connect to the wifi
boolean connected=false;
for(int i=0;i<5;i++) { if(connectWiFi()) { connected = true; break; } } if (!connected){while(1);} delay(5000); //print the ip addr /*Serial.println(“AT+CIFSR”); dbgSerial.println(“ip address:”); while (Serial.available()) dbgSerial.write(Serial.read());*/ //set the single connection mode Serial.println(“AT+CIPMUX=0”); } void loop() { String cmd = “AT+CIPSTART=\”TCP\”,\””; cmd += DST_IP; cmd += “\”,80″; Serial.println(cmd); dbgSerial.println(cmd); if(Serial.find(“Error”)) return; cmd = “GET / HTTP/1.0\r\n\r\n”; Serial.print(“AT+CIPSEND=”); Serial.println(cmd.length()); if(Serial.find(“>”))
{
dbgSerial.print(“>”);
}else
{
Serial.println(“AT+CIPCLOSE”);
dbgSerial.println(“connect timeout”);
delay(1000);
return;
}
Serial.print(cmd);
delay(2000);
//Serial.find(“+IPD”);
while (Serial.available())
{
char c = Serial.read();
dbgSerial.write(c);
if(c==’\r’) dbgSerial.print(‘\n’);
}
dbgSerial.println(“====”);
delay(1000);
}
boolean connectWiFi()
{
Serial.println(“AT+CWMODE=1″);
String cmd=”AT+CWJAP=\””;
cmd+=SSID;
cmd+=”\”,\””;
cmd+=PASS;
cmd+=”\””;
dbgSerial.println(cmd);
Serial.println(cmd);
delay(2000);
if(Serial.find(“OK”))
{
dbgSerial.println(“OK, Connected to WiFi.”);
return true;
}else
{
dbgSerial.println(“Can not connect to the WiFi.”);
return false;
}
}
Step 3 – Monitor
Open Serial Monitor and press the reset button of board, you’ll see the output.