Skip to content

Commit

Permalink
Merge pull request esp8266#370 from Links2004/esp8266
Browse files Browse the repository at this point in the history
add better docu and schematics for easy setup the ESP
  • Loading branch information
igrr committed Jun 5, 2015
2 parents 00f4f91 + c0df9b0 commit 3ff5947
Show file tree
Hide file tree
Showing 6 changed files with 82 additions and 26 deletions.
63 changes: 51 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,28 @@ Libraries that don't rely on low-level access to AVR registers should work well.
Pick the correct serial port.
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 ####

ESPxx Hardware
Expand All @@ -226,26 +248,43 @@ ESPxx Hardware
- Reset is also named RSBT or REST (adding PullUp improves the stability of the Module)
- GPIO2 is alternative TX for the boot loader mode

ESP01 example:

![ESP01 connect](https://raw.githubusercontent.com/Links2004/Arduino/esp8266/docs/ESP01_connect.jpg)
###### esp to Serial
![ESP to Serial](https://raw.githubusercontent.com/Links2004/Arduino/esp8266/docs/ESP_to_serial.png)

#### Minimal hardware Setup for Bootloading only ####
ESPxx Hardware

| PIN | Resistor | Serial Adapter |
| ------------- | -------- | -------------- |
| VCC | | VCC (3.3V) |
| GND | | GND |
| TX or GPIO2 | | RX |
| RX | | TX |
| GPIO0 | | GND |
| PIN | Resistor | Serial Adapter |
| ------------- | -------- | --------------- |
| VCC | | VCC (3.3V) |
| GND | | GND |
| TX or GPIO2 | | RX |
| RX | | TX |
| GPIO0 | | GND |
| Reset | | RTS* |
| GPIO15 | PullDown | |
| CH_PD | PullUp | |
| GPIO15 | PullDown | |
| CH_PD | PullUp | |

* Note
- 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 ###

Expand Down
Binary file added doc/ESP_improved_stability.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/ESP_min.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/ESP_to_serial.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
18 changes: 14 additions & 4 deletions libraries/ESP8266WiFi/src/ESP8266WiFi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@ ESP8266WiFiClass::ESP8266WiFiClass()

void ESP8266WiFiClass::mode(WiFiMode m)
{
if(wifi_get_opmode() == (uint8)m) {
return;
}
ETS_UART_INTR_DISABLE();
wifi_set_opmode(m);
ETS_UART_INTR_ENABLE();
Expand Down Expand Up @@ -357,10 +360,14 @@ void ESP8266WiFiClass::_scanDone(void* result, int status)

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);
} else {
// turn on STA mode
mode(WIFI_STA);
}

int status = wifi_station_get_connect_status();
if (status != STATION_GOT_IP && status != STATION_IDLE)
{
Expand Down Expand Up @@ -532,9 +539,12 @@ void ESP8266WiFiClass::beginSmartConfig()
if (_smartConfigStarted)
return;

if ((wifi_get_opmode() & 1) == 0)//1 and 3 have STA enabled
{
if(_useApMode) {
// turn on AP+STA mode
mode(WIFI_AP_STA);
} else {
// turn on STA mode
mode(WIFI_STA);
}

_smartConfigStarted = true;
Expand Down
27 changes: 17 additions & 10 deletions libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);


bool known = false;
for(uint32_t x = 0; x < APlist.size(); x++) {
WifiAPlist_t entry = APlist[x];
Expand Down Expand Up @@ -152,7 +151,17 @@ bool ESP8266WiFiMulti::APlistAdd(const char* ssid, const char *passphrase) {

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) {
return false;
Expand All @@ -161,16 +170,14 @@ bool ESP8266WiFiMulti::APlistAdd(const char* ssid, const char *passphrase) {
strcpy(newAP.ssid, ssid);

if(passphrase && *passphrase != 0x00) {
newAP.passphrase = (char*) malloc(strlen(passphrase));
}

if(!newAP.passphrase) {
free(newAP.ssid);
return false;
newAP.passphrase = (char*) malloc((strlen(passphrase) + 1));
if(!newAP.passphrase) {
free(newAP.ssid);
return false;
}
strcpy(newAP.passphrase, passphrase);
}

strcpy(newAP.passphrase, passphrase);

APlist.push_back(newAP);
return true;
}
Expand Down

0 comments on commit 3ff5947

Please sign in to comment.