THỰC NGHIỆM_WIFI_ESP8266 & Giao Tiếp Với Nhau (Phần 1)

        1.Tổng quan

          Wi-Fi viết tắt từ Wireless Fidelity hay Mạng 802.11 is your system       mạng không dây usage sóng vô tuyến , same as điện thoại di động , truyền hình and đài phát thanh .      

          Connections Wifi dựa trên kết nối chuẩn IEEE 802.11 và chủ yếu là hiện sóng Wifi hoạt động trên băng tần 54 Mbps và có tín hiệu mạnh nhất trong khoảng cách 100 feet (gần 31 mét, bạn phải thử hình tượng mỗi 1 Tầng trung bình là 4 mét, theo lý thuyết sóng phát sóng ở tầng 1 sẽ vẫn được bắt đầu nếu bạn đang ở tầng 7 - theo lý thuyết). Còn trong thực tế, trong mỗi ngôi nhà có rất nhiều sóng địa hình, bạn nên chỉ cần đứng trên tầng 4 hoặc 5 là tín hiệu yếu lắm rồi.

2. Nguyên tắc hoạt động của wifi

          Vâng, rất đơn giản, để có sóng Wifi, chúng ta cần phải có bộ phát Wifi - chính là các thiết bị như modem, router. Input, signal Internet source (được cung cấp bởi các công ty ISP như FPT, Viettel, VNPT, CMC ... hiện nay). Modem thiết bị, bộ định tuyến sẽ lấy Internet tín hiệu qua kết nối và chuyển sang vô tuyến tín hiệu và gửi đến các thiết bị sử dụng như điện thoại thông minh, bảng tính, máy tính xách tay ... Đây là quá trình nhận tín hiệu Không dây (hoặc còn gọi là adaptor) - chính là thẻ wifi trên máy tính xách tay, điện thoại ... và chuyển đổi Internet thành tín hiệu. This is complete to be able to reverse back, nghĩa là router, modem nhận tín hiệu vô tuyến từ adaptor và giải mã chúng, gửi qua Internet.

TÌM HIỂU VỀ MODULE WIFI ESP8266

                     

1: Giới thiệu về chip dòng Wifi ESP8266.

     
 Chip ESP8266 được phát triển bởi Espressif để cung cấp giao thức Wifi pháp cho các thiết bị IoT. The special points of the ESP8266 is most on the RF circuits with the balun, antenna switch, TX power amplifier and RX filter within the chip with small size only 5x5mm, nên các bảng ESP8266 không cần phải lớn lên bảng As need more messages. Other ra, the value of ESP8266 also very least enough to attraction the IoT products.

2: Module ESP8266 có chức năng chính sau:

Ø   Hỗ trợ chuẩn 802.11 b / g / n
Ø   WiFi 2.4 Ghz, hỗ trợ WPA / WPA2
Ø   Electric voltage 3.3v (do not connect 5v nhé)
Ø   Trao đổi chuẩn UART với tốc độ Baud lên đến 115200
Ø   Có 3 chế độ hoạt động: Client, Acesspoint, Both /
Ø   Hỗ trợ chuẩn bảo mật như: WEP, WPA_PSK, WPA2_PSK
Ø   Giao thức TCP, UDP

3: The hardware circuit chip ESP8266 có thể bị tắt như sau:

V   Sử dụng lõi MCU 32-bit có tên là Tensilica
V   Tốc độ đồng hồ hệ thống có thể đặt ở 80MHz hoặc 160MHz
V   Unsupported flash memory to save a program
V   Tích hợp 50KB RAM để lưu ứng dụng dữ liệu khi chạy
V   Có đầy đủ các giao tiếp truyền thống như 17 GPIO, 1 SDIO Slave, 3 SPI, 1 I2C, 1 I2S, 2 UART, 2 PWM
V   Tích hợp mạch RF để truyền dữ liệu với tần số 2.4GHz
V   Hỗ trợ các gói IP truyền động hoạt động ở mức hardware như Acknowledgement, Fragmentation and Defragmentation, Aggregation, Frame Encapsulation vv ... (và phần stack TCP / IP sẽ được thực hiện trên phần mềm của ESP8266)

Do không hỗ trợ bộ nhớ flash nên bảng điều khiển ESP8266 phải gắn thêm chip Flash bên ngoài và thường là Flash SPI để ESP8266 có thể đọc chương trình ứng dụng với chuẩn SDIO hoặc SPI.
·       Wifi 802.11 b / g / n
·       Wifi 2,4 GHz, hỗ trợ WPA / WPA2
·       Chuẩn điện áp activity 3.3V
·       Chuẩn nối tiếp nối UART với tốc độ Baud lên đến 115200
·       Có 3 modes activity: Client, Access Point, Cả hai Client và Access Point
·       Hỗ trợ chuẩn bảo mật như: OPEN, WEP, WPA_PSK, WPA2_PSK, WPA_WPA2_PSK
·       Hỗ trợ cả 2 giao tiếp TCP and UDP
·       Tích hợp công suất CPU thấp 32 bit có thể được sử dụng như ứng dụng xử lý bộ vi xử lý
·       SDIO 1.1 / 2.0, SPI, UART
·       Working as the servers can be connect with 5 máy con

V Complete full nguyên nguyên cho ESP8266:

5: Tính năng.


Ø   Sử dụng nguồn 3.3v
Ø   Tích hợp dấu vết PCB trên mô đun
Ø   Tiêu chuẩn wifi: 802.11b / g / n, với mật khẩu bảo vệ mật khẩu và bảo mật WPA2 / WPA2 tần số 2.4GHz
Ø   Khoảng giữa chân 2mm

6: Sơ đồ.


V Chân nối:
·        URXD (RX) - dùng để nhận tín hiệu trong giao tiếp UART với bộ điều khiển
·        VCC - đầu vào 3.3V
·        GPIO 0 - kéo xuống thấp cho trình tải lên chế độ tải lên
·        RST - chân đặt lại mô-đun cứng, kéo khối lượng để đặt lại
·        GPIO 2 - thường được sử dụng như một cổng TX trong UART giao tiếp để gỡ lỗi
·        CH_PD - chip kích hoạt, sử dụng Flash Boot và cập nhật lại mô-đun, kết nối với                                            mức cao
·        GND - nối với khối lượng
·        UTXD (TX) - sử dụng để truyền tín hiệu trong UART giao tiếp với vi điều khiển

7: Kiểm tra mô-đun wifi với tập lệnh AT 


Ø   Tốc độ mặc định giao tiếp mặc định (Tốc độ truyền): 9600 hoặc 115200
Ø   Command AT should be written
Ø   Command AT must be finished by 2 dấu CR (\ r) + LF (\ n), tương ứng với 2 byte 0x0D + 0x0A
Ø   Việc the installation of connected wifi will automatically be saved and not a installing lại on reset module.

A.Các lệnh AT chung:

Lệnh AT
Sự miêu tả
Tham số
Thí dụ
AT
Kiểm tra command, luôn trả về "OK" 

AT
AT + RST
Khởi động lại module

AT + RST
AT + GMR
Fuzzyware version 

AT + GMR




B.Các lệnh AT configure Wifi mô đun

Lệnh AT
Sự miêu tả
Tham số
Thí dụ
AT + CWMODE =  <chế độ>
Setup mode
1 = Trạm
2 = Điểm 
3 = Cả hai
AT + CWMODE = 1
AT + CWMODE?
Installed Accessure

AT + CWMODE?
AT + CWMODE =?
Accessed files may be install

AT + CWMODE =?
AT + CIPMUX = <chế độ>
Installing number of channels channels
0 = 1 channels connectivity
1 = Multiple connect to channel
AT CIPMUX = 1
AT + CIPMODE = <chế độ>
Install data mode
0 = trong suốt 
1 = Dữ liệu
AT CIPMODE = 1
AT + CIPMODE?
Aprocessing data data installation

AT + CIPMODE?


C.Các lệnh AT for Module Wifi cầu là Station / client


Lệnh AT
Sự miêu tả
Tham số
Thí dụ
AT + CWJAP = <ssid>, <mật khẩu>
Connected with 1 wifi network
Ssid "SSID" 
pass "password"
AT + CWJAP = "MLAB", "1235678"
AT + CWJAP?
Wifi truy cập đang kết nối

AT + CWJAP?
AT + CWLAP
Wi-Fi Connectivity on Connected

AT + CWLAP
AT + CWQAP
Đóng kế tiếp wifi với một Access Point

AT + CWQAP
AT + CIFSR
Xem mô đun địa chỉ IP

AT + CIFSR

D.AT với cấu hình Module Wifi là Access Point


Lệnh AT
Sự miêu tả
Tham số
Thí dụ
AT + CWSAP = <ssid>, <password>, <chan>, <enc>
Installed Points for Access Point
 
SSID " 
pass" password " 
chan" channel " 
enc" Mã hóa " 
(0 = mở 
1 = WEP 
2 = WPA_PSK 
3 = WPA2_PSK 
4 = WPA_WPA2_PSK)
AT + CWSAP =
"MLAB", "12345678", 5,3 
AT + CWSAP?
See a installation point of Access Point

AT + CWSAP?
AT + CWLIF
The list of stations are connected 

AT + CWLIF


III: Thực nghiệm kết nối giữa mô-đun wifi ESP8266   với Ban ARDUINO   UNO.

Code Arrduino điều khiển LED sáng tắt thông qua Web Server.

#define LED_PIN 8
#define LED1_PIN 7
#define sw_Pin 2
//Khai bao bien va du lieu
//char ReceiveData;
//int button;
int count=0; //chua lan nhan SW

#define CMD_SEND_BEGIN    "AT+CIPSEND=0" //gui chuoi data qua esp8266
#define CMD_SEND_END    "AT+CIPCLOSE=0"  //dung gui chuoi

#define PROTOCOL_HTTP     88 // port sử dụng kết nối giữa web và esp
#define PROTOCOL_HTTPS    443   // địa chỉ kết nối web
#define PROTOCOL_FTP      21   // địa chỉ nhận dạng web
#define PROTOCOL_CURRENT  PROTOCOL_HTTP // khai báo tên

#define CHAR_CR     0x0D // ky tu bat bat dau của chuổi
#define CHAR_LF     0x0A  // ký tự kết thúc của chuổi

#define STRING_EMPTY  "" // xoa chuoi


#define DELAY_SEED  1000  // tạo deylay
#define DELAY_1X    (1*DELAY_SEED)
#define DELAY_2X    (2*DELAY_SEED)
#define DELAY_3X    (3*DELAY_SEED)
#define DELAY_4X    (4*DELAY_SEED)
#define DELAY_5X    (5*DELAY_SEED)

bool hasRequest = false; // gan gia tri phan hoi ve de kt

void setup()
{
  delay(DELAY_5X);
  Serial.begin(115200);
 
  pinMode(LED_PIN, OUTPUT);  // khai báo chân ra
  digitalWrite(LED_PIN, LOW); led mức thấp

  pinMode(LED1_PIN, OUTPUT);
  digitalWrite(LED1_PIN, LOW);

  pinMode(sw_Pin,INPUT);
 
  initESP8266();
}

void loop()
{
  while(Serial.available())
  {  
    bufferingRequest(Serial.read());
  }
  /*********************************/
  if(digitalRead(sw_Pin)==0)
{
 
  while(digitalRead(sw_Pin)==0);
  count++;
  Serial.write(count);
  int dem=  Serial.write(count);

}
  if(hasRequest == true) //
  {
    String htmlResponse = "<!doctype html>"
                "<html>"
                  "<head>"
                    "<title> GIAO TIEP THIET BI NGOAI VI TEST  ESP8266 </title>"
                  "</head>"
                  "<body>"
                    "<h1>Sinh vien thuc hien  </h1>"
                    "<h1>PHAN HOANG THINH  </h1>"
                    "<h1> LE VAN HIEU </h1>"
                    "<form action='' method='GET'>"
                      "<input type='radio' name='LED8' name='LED8ON' value='ON8' /> LED8 ON</>"
                      "<input type='radio' name='LED8' name='LED8OFF' value='OFF8' /> LED8 OFF<br/>"
                      "<input type='radio' name='LED7' name='LED7ON' value='ON7' /> LED7 ON</>"
                      "<input type='radio' name='LED7' name='LED7OFF' value='OFF7' /> LED7 OFF<br/>"                  
                      "<input type='submit' value='OK' />"
                    "</form>"
                  "</body>"
                 "</html>";
   
    String beginSendCmd = String(CMD_SEND_BEGIN) + "," + htmlResponse.length();
    deliverMessage(beginSendCmd, DELAY_1X);
    deliverMessage(htmlResponse, DELAY_1X);
    deliverMessage(CMD_SEND_END, DELAY_1X);// gia tri gui esp về dừng không gửi chuỗi
    hasRequest = false;
  }

  /***********************************************
if(digitalRead(sw_Pin)==0)
{
 
  while(digitalRead(sw_Pin)==0);
  count++;
  Serial.write(count);
}
/**************************************************/
}

//cau hinh esp truc tiep tren arduino
void initESP8266()
{
  deliverMessage("AT+RST", DELAY_2X);
  deliverMessage("AT+CWMODE=2", DELAY_3X);
  deliverMessage("AT+CWSAP=\"THINH-HIEU \",\"989578912\",1,4", DELAY_3X);
  deliverMessage("AT+CIFSR", DELAY_1X);
  deliverMessage("AT+CIPMUX=1", DELAY_1X);
  deliverMessage(String("AT+CIPSERVER=1,") + PROTOCOL_CURRENT, DELAY_1X); 
}
/***************************/
void bufferingRequest(char c)
{
  static String bufferData = STRING_EMPTY;

  switch (c) // chuỗi nhận dc
  {
    case CHAR_CR:
      break;
    case CHAR_LF:
    {
     chuoinhan(bufferData);
      bufferData = STRING_EMPTY;
    }
      break;
    default:
      bufferData += c;
  }
}

void chuoinhan(const String& command)
{
  hasRequest = command.startsWith("+IPD,"); //cho Arduino nhận biết có một gói tin TCP vừa đc ESP nhận và đem xử lý nó.
  /******************************************/
  //LED13
  if(command.indexOf("OFF8") != -1)
  {
    digitalWrite(LED_PIN, LOW);
  }
  else if(command.indexOf("ON8") != -1)
  {
    digitalWrite(LED_PIN, HIGH);
  }
  //delay(DELAY_1X);
/********************************************/
  //LED12
  if(command.indexOf("OFF7") != -1)
  {
    digitalWrite(LED1_PIN, LOW); 
  }
  else if(command.indexOf("ON7") != -1)
  {
    digitalWrite(LED1_PIN, HIGH);
  }
 
}
//gui message len server
void deliverMessage(const String& msg, int dt)
{
  Serial.println(msg);
  delay(dt);
}


2.Tiến hành thực nghiệm:

Bước 1: Kết nối module fiwi ESP8266 với Board Arduino Uno



Previous
Next Post »