1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-04-21 10:26:06 +03:00

Merge pull request #370 from Links2004/esp8266

add better docu and schematics for easy setup the ESP
This commit is contained in:
Ivan Grokhotkov 2015-06-05 13:55:34 +03:00
commit 3ff5947305
6 changed files with 82 additions and 26 deletions

View File

@ -206,6 +206,28 @@ Libraries that don't rely on low-level access to AVR registers should work well.
Pick the correct serial port. Pick the correct serial port.
You need to put ESP8266 into bootloader mode before uploading code. You need to put ESP8266 into bootloader mode before uploading code.
#### Power Supply ####
For stable use of the ESP8266 a power supply with 3V3 and >= 250mA is required.
* Note
- using Power from USB to Serial is may unstable, they not deliver enough current.
#### Serial Adapter ####
There are many different USB to Serial adapters / boards.
* Note
- for full upload management you need RTS and DTR
- the chip need to have 3V3 TTL (5V may damage the chip)
- not all board have all pins of the ICs as breakout (check before order)
- CTS and DSR are not useful for upload (they are Inputs)
* Working ICs
- FT232RL
- CP2102
- may others (drop a comment)
#### Minimal hardware Setup for Bootloading and usage #### #### Minimal hardware Setup for Bootloading and usage ####
ESPxx Hardware ESPxx Hardware
@ -226,27 +248,44 @@ ESPxx Hardware
- Reset is also named RSBT or REST (adding PullUp improves the stability of the Module) - Reset is also named RSBT or REST (adding PullUp improves the stability of the Module)
- GPIO2 is alternative TX for the boot loader mode - GPIO2 is alternative TX for the boot loader mode
ESP01 example: ###### esp to Serial
![ESP to Serial](https://raw.githubusercontent.com/Links2004/Arduino/esp8266/docs/ESP_to_serial.png)
![ESP01 connect](https://raw.githubusercontent.com/Links2004/Arduino/esp8266/docs/ESP01_connect.jpg)
#### Minimal hardware Setup for Bootloading only #### #### Minimal hardware Setup for Bootloading only ####
ESPxx Hardware ESPxx Hardware
| PIN | Resistor | Serial Adapter | | PIN | Resistor | Serial Adapter |
| ------------- | -------- | -------------- | | ------------- | -------- | --------------- |
| VCC | | VCC (3.3V) | | VCC | | VCC (3.3V) |
| GND | | GND | | GND | | GND |
| TX or GPIO2 | | RX | | TX or GPIO2 | | RX |
| RX | | TX | | RX | | TX |
| GPIO0 | | GND | | GPIO0 | | GND |
| Reset | | RTS* | | Reset | | RTS* |
| GPIO15 | PullDown | | | GPIO15 | PullDown | |
| CH_PD | PullUp | | | CH_PD | PullUp | |
* Note * Note
- if no RTS is used a manual power toggle is needed - if no RTS is used a manual power toggle is needed
#### Minimal hardware Setup for running only ####
ESPxx Hardware
| PIN | Resistor | Power supply |
| ------------- | -------- | --------------- |
| VCC | | VCC (3.3V) |
| GND | | GND |
| GPIO0 | PullUp | |
| GPIO15 | PullDown | |
| CH_PD | PullUp | |
###### minimal
![ESP min](https://raw.githubusercontent.com/Links2004/Arduino/esp8266/docs/ESP_min.png)
###### improved stability
![ESP improved stability](https://raw.githubusercontent.com/Links2004/Arduino/esp8266/docs/ESP_improved_stability.png)
### Issues and support ### ### Issues and support ###
Forum: http://www.esp8266.com/arduino Forum: http://www.esp8266.com/arduino

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
doc/ESP_min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

BIN
doc/ESP_to_serial.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -46,6 +46,9 @@ ESP8266WiFiClass::ESP8266WiFiClass()
void ESP8266WiFiClass::mode(WiFiMode m) void ESP8266WiFiClass::mode(WiFiMode m)
{ {
if(wifi_get_opmode() == (uint8)m) {
return;
}
ETS_UART_INTR_DISABLE(); ETS_UART_INTR_DISABLE();
wifi_set_opmode(m); wifi_set_opmode(m);
ETS_UART_INTR_ENABLE(); ETS_UART_INTR_ENABLE();
@ -357,10 +360,14 @@ void ESP8266WiFiClass::_scanDone(void* result, int status)
int8_t ESP8266WiFiClass::scanNetworks() int8_t ESP8266WiFiClass::scanNetworks()
{ {
if ((wifi_get_opmode() & 1) == 0)//1 and 3 have STA enabled if(_useApMode) {
{ // turn on AP+STA mode
mode(WIFI_AP_STA); mode(WIFI_AP_STA);
} else {
// turn on STA mode
mode(WIFI_STA);
} }
int status = wifi_station_get_connect_status(); int status = wifi_station_get_connect_status();
if (status != STATION_GOT_IP && status != STATION_IDLE) if (status != STATION_GOT_IP && status != STATION_IDLE)
{ {
@ -532,9 +539,12 @@ void ESP8266WiFiClass::beginSmartConfig()
if (_smartConfigStarted) if (_smartConfigStarted)
return; return;
if ((wifi_get_opmode() & 1) == 0)//1 and 3 have STA enabled if(_useApMode) {
{ // turn on AP+STA mode
mode(WIFI_AP_STA); mode(WIFI_AP_STA);
} else {
// turn on STA mode
mode(WIFI_STA);
} }
_smartConfigStarted = true; _smartConfigStarted = true;

View File

@ -72,7 +72,6 @@ wl_status_t ESP8266WiFiMulti::run(void) {
WiFi.getNetworkInfo(i, ssid_scan, sec_scan, rssi_scan, BSSID_scan, chan_scan, hidden_scan); WiFi.getNetworkInfo(i, ssid_scan, sec_scan, rssi_scan, BSSID_scan, chan_scan, hidden_scan);
bool known = false; bool known = false;
for(uint32_t x = 0; x < APlist.size(); x++) { for(uint32_t x = 0; x < APlist.size(); x++) {
WifiAPlist_t entry = APlist[x]; WifiAPlist_t entry = APlist[x];
@ -152,7 +151,17 @@ bool ESP8266WiFiMulti::APlistAdd(const char* ssid, const char *passphrase) {
WifiAPlist_t newAP; WifiAPlist_t newAP;
newAP.ssid = (char*) malloc(strlen(ssid)); if(!ssid || strlen(ssid) > 31) {
// fail SSID to long or missing!
return false;
}
if(passphrase && strlen(passphrase) > 63) {
// fail passphrase to long!
return false;
}
newAP.ssid = (char*) malloc((strlen(ssid) + 1));
if(!newAP.ssid) { if(!newAP.ssid) {
return false; return false;
@ -161,16 +170,14 @@ bool ESP8266WiFiMulti::APlistAdd(const char* ssid, const char *passphrase) {
strcpy(newAP.ssid, ssid); strcpy(newAP.ssid, ssid);
if(passphrase && *passphrase != 0x00) { if(passphrase && *passphrase != 0x00) {
newAP.passphrase = (char*) malloc(strlen(passphrase)); newAP.passphrase = (char*) malloc((strlen(passphrase) + 1));
if(!newAP.passphrase) {
free(newAP.ssid);
return false;
}
strcpy(newAP.passphrase, passphrase);
} }
if(!newAP.passphrase) {
free(newAP.ssid);
return false;
}
strcpy(newAP.passphrase, passphrase);
APlist.push_back(newAP); APlist.push_back(newAP);
return true; return true;
} }