ESP8266特點介紹
- 802.11 b/g/n
- 內置Tensilica L106 超低功耗 32 位微型 MCU,主頻支持 80 MHz 和160 MHz,支持 RTOS
- 內置10 bit高精度ADC
- 內置TCP/IP協議棧
- 內置TR 開關、balun、LNA、功率放大器和匹配網絡
- 內置PLL、穩壓器和電源管理組件,802.11b 模式下+20 dBm的輸出功率
- A-MPDU 、 A-MSDU 的聚合和 0.4 s的保護間隔
- WiFi @ 2.4 GHz,支持 WPA/WPA2 安全模式
- 支持AT遠程升級及雲端OTA升級
- 支持 STA/AP/STA+AP 工作模式
- 支持 Smart Config 功能(包括 Android 和 iOS 設備)
- HSPI 、UART、I2C、I2S、IR Remote Control、PWM、GPIO
- 深度睡眠保持電流為 10 uA,關斷電流小於 5 uA
- 2 ms 之內喚醒、連接並傳遞數據包
- 待機狀態消耗功率小於1.0 mW (DTIM3)
- 工作溫度范圍:-40℃- 125℃
WeMos D1開發板
全稱是WeMos D1 WiFI UNO R3開發板,基於ESP-8266,兼容Arduino。
有了這款物聯網開發板,我們就可以愉快的使用arduino方式開發ESP8266,玩轉物聯網項目。
引腳
WeMos D1包含:
數字IO引腳11個。除了D0引腳外,其余引腳均支持pwm、I2C、中斷、單總線。
模擬輸入引腳1個(最大支持3.3v輸入)。
模擬引腳僅有1個。數字引腳(包括RX,TX)共有11個
需要注意的一點是:WeMos D1上數字引腳的一側引腳數量遠大於11個,
這是因為該板上D3與D15、D4與D14、D5與D13、D6與D12、D7與D11、D9與板載LED 它們兩兩之間是互通的。
具體引腳的定義可以參考我整理的引腳定義庫。
1.Arduino IDE下載
鏈接:https://pan.baidu.com/s/1ig6psM6GvWJk0CwqaIqs7A
提取碼:uyy4
2.示例(搜索WIFI)
1 /* 2 * This sketch demonstrates how to scan WiFi networks. 3 * The API is almost the same as with the WiFi Shield library, 4 * the most obvious difference being the different file you need to include: 5 */ 6 #include "ESP8266WiFi.h" 7 8 void setup() { 9 Serial.begin(115200); 10 11 // Set WiFi to station mode and disconnect from an AP if it was previously connected 12 WiFi.mode(WIFI_STA); 13 WiFi.disconnect(); 14 delay(100); 15 16 Serial.println("Setup done"); 17 } 18 19 void loop() { 20 Serial.println("scan start"); 21 22 // WiFi.scanNetworks will return the number of networks found 23 int n = WiFi.scanNetworks(); 24 Serial.println("scan done"); 25 if (n == 0) 26 Serial.println("no networks found"); 27 else 28 { 29 Serial.print(n); 30 Serial.println(" networks found"); 31 for (int i = 0; i < n; ++i) 32 { 33 // Print SSID and RSSI for each network found 34 Serial.print(i + 1); 35 Serial.print(": "); 36 Serial.print(WiFi.SSID(i)); 37 Serial.print(" ("); 38 Serial.print(WiFi.RSSI(i)); 39 Serial.print(")"); 40 Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*"); 41 delay(10); 42 } 43 } 44 Serial.println(""); 45 46 // Wait a bit before scanning again 47 delay(5000); 48 }
3.WIFI搜索
4.點燈控制
/* * This sketch demonstrates how to set up a simple HTTP-like server. * The server will set a GPIO pin depending on the request * http://server_ip/gpio/0 will set the GPIO2 low, * http://server_ip/gpio/1 will set the GPIO2 high * server_ip is the IP address of the ESP8266 module, will be * printed to Serial when the module is connected. */ #include <ESP8266WiFi.h> const char* ssid = "your-ssid"; const char* password = "your-password"; // Create an instance of the server // specify the port to listen on as an argument WiFiServer server(80); void setup() { Serial.begin(115200); delay(10); // prepare GPIO2 pinMode(2, OUTPUT); digitalWrite(2, 0); // Connect to WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // Start the server server.begin(); Serial.println("Server started"); // Print the IP address Serial.println(WiFi.localIP()); } void loop() { // Check if a client has connected WiFiClient client = server.available(); if (!client) { return; } // Wait until the client sends some data Serial.println("new client"); while(!client.available()){ delay(1); } // Read the first line of the request String req = client.readStringUntil('\r'); Serial.println(req); client.flush(); // Match the request int val; if (req.indexOf("/gpio/0") != -1) val = 0; else if (req.indexOf("/gpio/1") != -1) val = 1; else { Serial.println("invalid request"); client.stop(); return; } // Set GPIO2 according to the request digitalWrite(2, val); client.flush(); // Prepare the response String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now "; s += (val)?"high":"low"; s += "</html>\n"; // Send the response to the client client.print(s); delay(1); Serial.println("Client disonnected"); // The client will actually be disconnected // when the function returns and 'client' object is detroyed }