image

無線 Wi-Fi 串行收發器模塊 ESP8266

概觀

ESP8266 是專為新的互聯世界的需求的高度集成的芯片。它提供了一個完整的,自成體系的 Wi-Fi 無線網絡解決方案,允許其任一主機的應用程序,或者從另一個應用程序處理器卸載所有 Wi-Fi 網絡功能。

ESP8266 具有強大的板載處理和存儲能力,允許它與傳感器集成和其它應用專用設備通過其的 GPIO 在運行期間使用最小加載時間,以及最小的前期開發。其高的片上集成度能達到最小的外部電路,而整個解決方案,包括前端模塊,都設計成佔據最小的 PCB 面積。
在本教程中,我們將使用 seeeduino 控制 ESP8266 Wi-Fi 模塊從 Internet 要求載入一個靜態頁面。這是一個基本的使用 TCP 的端口,至於其它用途,請參考模塊的 AT 命令指南。

材料清單

  • Seeeduino V3/ Arduino Uno
  • ESP8266 串行 Wi-Fi 模塊
  • UartSBee V4 / 其他 USB 至 TTL 轉換器

注:我們使用一個軟件序列來顯示一些調試信息,因為 seeeduino 板只有一個硬件串口。但軟件串口的限制是,它不能在波特率高於19200 通信,所以部分從ESP 模塊輸出的通信將被丟棄,因為 ESP 模塊的波特率 57600 比軟件串口的高。如果你有一個板子與多個硬件序列(如 Arduino Mega 2560),情況會更較容易。

第1步 – 連接

image

第2步 – 編程

打開 Arduino 的IDE,並創建一個新的 sketch;
貼上下面的代碼插入 sketch 編輯器(需要修改 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()
{
 // 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.0rnrn";
 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;
 }
}

第3步 – 監視器

打開串行監視器,按板上的復位按鈕,你會看到的輸出。

資源

下面是它的主要維基項目:

http://www.seeedstudio.com/wiki/WiFi_Serial_Transceiver_Module

我們想感謝誰魯迪翻譯了整個數據表,我們建議所有的開發人員在弄之前來看看這個。

https://nurdspace.nl/ESP8266