Microcontrollers

(top)
Name Processor Operating/
Input Voltage
CPU Speed [MHz] Analog In/Out Digital IO/PWM EEPROM [kB] SRAM [kB] Flash [kB] USB UART
Mega 2560 ATmega2560 5V / 7-12V 16 16/0 54/15 4 8 256 Regular 4
Nano ATmega328P 5V / 7-9V 16 8/0 14/6 1 2 32 Mini 1
Zerynth
DOIT
DevKit v1
ESP32 WROOM
Tensilica 32-bit
Single-/Dual-core
CPU Xtensa LX6
3.3V /
7(6)- 12(20)V
240 6/2 25/25 - 520 4096 Micro 3
TTGO
T-Camera V17
ESP32-WROVER-B
ESP32-DOWD(Q5)
3.3V /
7(6)- 12(20)V
240 PIR camera+1 - 8MB 4096 Micro 3

ESP32 Pinout Reference: Which GPIO pins should you use?

Need to press ESP32 "BOOT" button for 4s on "Connecting......" to upload

github lewisxhe/esp32-camera-series
esphome
github TTGO T-Camera issues

MicroPython Forum - Boards Running MicroPython ESP32 boards
Pycom Forum - MicroPython (not much for ESP32 ?)

github tsaarni uPython module for ESP32 camera 2019 Feb
github loboris / MicroPython_ESP32_psRAM_LoBo
github-wiki tsaarni uPython module for ESP32 camera
github Lennyz uPython module for ESP32 camera
github shariltumin uPython module for ESP32 camera
github straga uPython module for ESP32 camera

github esptool.py

To use MicroPython with ESP32 on Windows 10:
Use esptool.py (obtained with pip3) to erase_flash and then write_flash the esp32 version of MicroPython (binary).

esptool.py v2.8
usage: esptool [-h] [--chip {auto,esp8266,esp32}] [--port PORT] [--baud BAUD]
               [--before {default_reset,no_reset,no_reset_no_sync}]
               [--after {hard_reset,soft_reset,no_reset}] [--no-stub]
               [--trace] [--override-vddsdio [{1.8V,1.9V,OFF}]]
               {load_ram,dump_mem,read_mem,write_mem,write_flash,run,image_info,make_image,elf2image,read_mac,chip_id,flash_id,read_flash_status,write_flash_status,read_flash,verify_flash,erase_flash,erase_region,version}
               ...

esptool.py v2.8 - ESP8266 ROM Bootloader Utility

positional arguments:
  {load_ram,dump_mem,read_mem,write_mem,write_flash,run,image_info,make_image,elf2image,read_mac,chip_id,flash_id,read_flash_status,write_flash_status,read_flash,verify_flash,erase_flash,erase_region,version}
                        Run esptool {command} -h for additional help
    load_ram            Download an image to RAM and execute
    dump_mem            Dump arbitrary memory to disk
    read_mem            Read arbitrary memory location
    write_mem           Read-modify-write to arbitrary memory location
    write_flash         Write a binary blob to flash
    run                 Run application code in flash
    image_info          Dump headers from an application image
    make_image          Create an application image from binary files
    elf2image           Create an application image from ELF file
    read_mac            Read MAC address from OTP ROM
    chip_id             Read Chip ID from OTP ROM
    flash_id            Read SPI flash manufacturer and device ID
    read_flash_status   Read SPI flash status register
    write_flash_status  Write SPI flash status register
    read_flash          Read SPI flash content
    verify_flash        Verify a binary blob against flash
    erase_flash         Perform Chip Erase on SPI flash
    erase_region        Erase a region of the flash
    version             Print esptool version

optional arguments:
  -h, --help            show this help message and exit
  --chip {auto,esp8266,esp32}, -c {auto,esp8266,esp32}
                        Target chip type
  --port PORT, -p PORT  Serial port device. If no -p option or ESPTOOL_PORT value 
                        is specified, esptool.py will enumerate all connected 
                        serial ports and try each one until it finds an Espressif 
                        device connected (new behaviour in v2.4.0).
  --baud BAUD, -b BAUD  Serial port baud rate used when flashing/reading. 460800 ?
  --before {default_reset,no_reset,no_reset_no_sync}
                        What to do before connecting to the chip
  --after {hard_reset,soft_reset,no_reset}, -a {hard_reset,soft_reset,no_reset}
                        What to do after esptool.py is finished
  --no-stub             Disable launching the flasher stub, only talk to ROM
                        bootloader. Some features will not be available.
  --trace, -t           Enable trace-level output of esptool.py interactions.
  --override-vddsdio [{1.8V,1.9V,OFF}]
                        Override ESP32 VDDSDIO internal voltage regulator (use
                        with care)

(? Hold down the BOOT/FLASH button on ESP32)
esptool.py --chip esp32 --port COM3(???) erase_flash
esptool.py --chip esp32 --port COM3(???) --baud 460800 write_flash -z 0x1000 esp32-idf3-20191220-v1.12.bin
Manage board with TeraTerm. The baudrate is 115200.

Alternatives to esptool.py and TeraTerm (for Windows):

Getting Started with MicroPython on ESP32 using uPyCraft IDE
Download uPyCraft_V1.0.exe - asks to install SourceCodePro font.
uPyCraft IDE is specially designed for ESP32/ESP8266 supported boards. It has inbuilt functionality to flash firmware, programming and uploading the code in ESP boards.
I got this to work, good for burning MicroPython to board, but..

  • Quite a lot of keystrokes to get round the loop for each script edit: ctrl-C, stop, upload, ctrl-D but often need some extra ctrl-Cs/stops to get back to the prompt before it runs again.
  • Got stuck several times so ended up completely re-flashing micropython.
  • Hit limitations with micropython, needed more modules like "pyserial" (or upyserial?) and unclear how to make them available to import.
  • Thonny IDE, but this needs esptool.py as well for flashing.
    Dev loop is simple: Edit script inside ESP32 directly, then press F5 !

    Trying Zerynth's (dev board maker) own Studio/IDE. Now installed. Too complicated.

    Tried Arduino IDE. Compiling, even "Blink" takes 12s (was busy "busy"?)

  • Board = DOIT ESP32 DEVKIT V1
  • Upload speed = 921600, or 115200
  • Programmer = AVRISP mkII, or USBasp
  • Need to press "BOOT" button for 4s on "Connecting......" to upload but I think this is the only option for using the ESP32.