The ESP8266 can easily be programmed with the Arduino IDE and the main benefit using it, is the WiFi interface that reduces your communication wiring to zero.
A $5 Raspberry Pi Zero W with a $5 micro SD Card becomes your Access Point, DHCP Server, Gateway to the Internet, and will also run applications like JMRI and MQTT.
But, now that you have a well connected $3 ESP-xx device, what pins are available to do what? We are not counting the Rx and Tx pins, you could reassign those for your own purpose, but the boot loader is going to talk at startup and updating your firmware might need these pins, so think ahead.
There is some information here, but when you are writing the "Arduino" code for the ESP8266, you need a little more guidance...
The ESP-01 has 2 GPIO pins, so you can do a 3 color signal, 2 relays, 2 digital sensors, or use them for i2c to a port expander and the rest is easy.
The ESP-05 has none, only the RST, RXD and TXD pins...good WiFi shield, if you have a UART on your side.
The ESP-WROOM-02 seems to have 8 or 9 useful GPIO pins (depending if IO16 is used for the deep sleep).
The ESP-WROOM-32 has about 23 useful GPIO pins (and 16 ADC pins, 2 DACs, 10 touch inputs). Expect to see a lot more about this ESP32!
The ESP-12 has 11 GPIO pins, with one ADC capable.
So on to the reason for this post, what are the pin numbers to use, if you do have 11 GPIOs, so first the code that printed these numbers to see where D0 through D10 might lead:
More to come shortly!
For some comparisons, take a look at the bottom of this Edwin Robotics page.
A $5 Raspberry Pi Zero W with a $5 micro SD Card becomes your Access Point, DHCP Server, Gateway to the Internet, and will also run applications like JMRI and MQTT.
But, now that you have a well connected $3 ESP-xx device, what pins are available to do what? We are not counting the Rx and Tx pins, you could reassign those for your own purpose, but the boot loader is going to talk at startup and updating your firmware might need these pins, so think ahead.
There is some information here, but when you are writing the "Arduino" code for the ESP8266, you need a little more guidance...
The ESP-01 has 2 GPIO pins, so you can do a 3 color signal, 2 relays, 2 digital sensors, or use them for i2c to a port expander and the rest is easy.
The ESP-05 has none, only the RST, RXD and TXD pins...good WiFi shield, if you have a UART on your side.
The ESP-WROOM-02 seems to have 8 or 9 useful GPIO pins (depending if IO16 is used for the deep sleep).
The ESP-WROOM-32 has about 23 useful GPIO pins (and 16 ADC pins, 2 DACs, 10 touch inputs). Expect to see a lot more about this ESP32!
The ESP-12 has 11 GPIO pins, with one ADC capable.
So on to the reason for this post, what are the pin numbers to use, if you do have 11 GPIOs, so first the code that printed these numbers to see where D0 through D10 might lead:
void setup( ) {
Serial.begin( 115200 );
delay( 10 );
String printPinStr;
printPinStr += String(D0); printPinStr += ",";
printPinStr += String(D1); printPinStr += ",";
printPinStr += String(D2); printPinStr += ",";
printPinStr += String(D3); printPinStr += ",";
printPinStr += String(D4); printPinStr += ",";
printPinStr += String(D5); printPinStr += ",";
printPinStr += String(D6); printPinStr += ",";
printPinStr += String(D7); printPinStr += ",";
printPinStr += String(D8); printPinStr += ",";
printPinStr += String(D9); printPinStr += ",";
printPinStr += String(D10); // printPinStr += ",";
//printPinStr += String(D12); // ...:44: error:
// 'D12' was not declared in this scope
printPinStr += ";";
Serial.println( printPinStr );
} // setup( )
And the result:16,5,4,0,2,14,12,13,15,3,1;
And this tells that D0 is connected to GPIO16 and D1 is connected to GPIO05.More to come shortly!
For some comparisons, take a look at the bottom of this Edwin Robotics page.