Check out my first novel, midnight's simulacra!

ESP8266

From dankwiki
Revision as of 06:53, 26 November 2022 by Dank (talk | contribs) (→‎PWM)
Pinout for the NodeMCU v1

A series of 32-bit microcontroller units from Espressif, followed by the ESP32. The first generation of the NodeMCU SoC was based around ESP8266.

Hardware

A Tensilica Diamond Standard 106Micro runs the Xtensa instruction set at 80MHz by default, and can be run at 160MHz. 32KB of code memory and 80KB of data are available to the user. There is no cache. IEEE 802.11 b/g/n support is available in AP, STA, and monitor modes.

GPIO

  • 17 bidirectional, non-inverting, tristate GPIO pins, with input and output buffer registers.
    • Pullup and pulldown resistors available on all pins
    • Pins can be set high-impedence
    • Edge- and level-triggered interrupts available on all pins

PWM

  • Four PWM channels on pins 10, 13, 9, and 16
Pin name Pin number IO Function Name
MTDI 10 IO12 PWM0
MTDO 13 IO15 PWM1
MTMS 9 IO14 PWM2
GPIO4 16 IO4 PWM3

ADC

There is only one (10-bit) ADC, and it reports values between [0, 1], not [0, 3.3]. This is not a scaling--the input voltage should not exceed 1V. The NodeMCU changes this significantly:

  • The NodeMCU applies a divider network to scale the 3.3V down to 1V. This usefully allows supplying 3.3V to the external device.
  • On the NodeMCU, this ADC can read the battery voltage instead of a connected external device. This is set in firmware.
  • If the ADC is left unconnected, VCC can be read using ESP.getVcc(). Before calling this function, ADC_MODE(ADC_TOUT) (for external voltage) or ADC_MODE(ADC_VCC) (for system voltage) must be called.

External links