The ESP-01 NanoBoardis a small “motherboard” for the famous ESP modules-01 (ESP8266) with some features for ease of use: Serial-USB adapter (CH340), 3.3V regulator with resettable fuse on the USB, connector for an external power supply, optional expander 16 GPIO, I2C connector, GPIO connector (ESP-01), connectors for GPIO dell'espander, circuit for the automatic upload (Arduino IDE), configurable USER button with jumper solder, RESET button, various control led.
The basic idea was to reuse the ESP modules-01 that many have in the drawer to realize a schedina “battle” easy to use and program, ideal for beginners and fields “educational”.
In the following pictures is shown a fully assembled tab (or by inclusion of the optional parts relating expander GPIO MCP23017 realized with a powered at 3.3V):
The following short video shows the NanoBoard is performed while uploading “automatic” Arduino IDE a demo program that blinks the LED GPA0 MCP23017 expander connected through an I2C interface:
Note that to enable automatic upload Arduino IDE you need to select from the menu “TOOLS” in the row “Reset Method” the value “nodemcu” (instead of the default value equal to “ck”).
2. The optional GPIO expander
In the NanoBoard wiring diagram is provided for an optional section that can not be “populated” PCB. This section relates expander of 16 GPIO realized with an integrated MCP23017 via the I2C interface type connected to pins GPIO0 GPIO2 and the ESP module-01.
Since the ESP module-01 It has only two pins available as GPIO (GPIO0 and GPIO2), when the I2C interface is activated it will not be possible to use them for other.
Below is a NanoBoard “lite” assembled without the optional components expander:
3. Setting the USER button
The USER button can be configured through jumper solder. There are two choices: connected to pin GPIO0 the ESP module-01 so as to operate as the FLASH button on the known module nodeMCU, or connected to the GPIO pin GPA1 dell'espander (MCP32017).
Using the Arduino IDE's second choice is the one that I recommend, in order to avoid that the key might possibly interfere with the I2C link that uses the pin GPIO0 GPIO2 and the ESP-01. Of course in the case where the GPIO expander was installed not the only choice is the first.
The configuration jumpers (SJ1 and SJ2) They are located on the rear side of the PCB.
Note that “reference” SJ1 SJ2 and printed on the PCB have been exchanged by mistake (sorry…). The correct position is shown in the picture:
Close to two jumpers I brought a table to remember the two possible configurations (obviously also inferable from the wiring diagram).
The previous photo shows the configuration in which the USER button is connected to the expander pin GPA1 (SJ1 welded, SJ2 open).
In the following picture the other possible choice is represented (SJ1 open, SJ2 welded), or USER button connected to the ESP module GPIO0-01, which in this case it is the only possible because the optional expander is not to be installed on the PCB:
4. Wiring diagram
Below the circuit diagram of NanoBoard (downloadable in pdf in the section “Documentation & Download”):
By analyzing the diagram it is possible to identify the various blocks that make up the NanoBoard.
In particular, the power supply section (U2) resettable fuse with USB side (F1), the serial-to-USB converter made with a CH340G (U3), the optional GPIO expander realized with a MCP23017 (U1).
Note that since the ESP module-01 It makes available only two I / O pins (GPIO0 and GPIO2), the same are used both for the I2C interface (J5) that for the GPIO connector (J6). Therefore you should be careful in case you want to use both at once.
In this regard, the two LEDs and GPIO0 GPIO2 (D7 and D8) I'm “decoupled” with due transistor (Q3 and Q4) in order to minimize the current drawn on GPIO0 doors and GPIO2 same.
The circuit consisting of Q1 and Q2 is the one that will take care of the automatic upload commanded by the IDE Arduino. In reality, from some tests I conducted, with the latest version of the IDE (1.8.x) Such a circuit would no longer be necessary because it has been modified the generation mode of the DTR and RTS signals from the IDE same. Anyway, since this is the approach suggested by this circuit Espressif and being universally adopted by the various modules based on ESP8266EX that implement the upload “automatic”, I still decided to keep it for possible compatibility reasons.