無線 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步 – 連接
第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
我們想感謝誰魯迪翻譯了整個數據表,我們建議所有的開發人員在弄之前來看看這個。