Dr. Philippe Cadic is one of those mythical beings who gives the appearance of not ever needing to sleep.
If you follow him on Twitter, under the handle of @sulfuroid, you will be accustomed to the torrent of activity that flows from his account. New designs almost weekly, across a range of disciplines. One week, he's designing low-power, long-range LoRa pagers and the next week it's a CNC laser machine!
This week, we're taking a look at what started out as a simple breakout board for the new ESP32-WROOM-S2 module, but has been rounded out into a fully-featured development board for the parts.
The Espressif ESP32 has been, in no other words, phenomenally successful. Building on a solid consumer base of those who fell in love with the power that the original ESP8266 bought them — the additional oomph that was offered by a dual-core, 32-bit, 240 MHz CPU has been simply irresistible to nearly everyone who sees it.
The ESP32-S2 is the latest in that family of parts, and while it drops back to a single-core CPU architecture, one core at 240 MHz is still plentypowerful for all but the most demanding of projects, especially when coupled with a hefty 128 KB ROM, and 320 KB SRAM.
The ROM spec for an MCU isn't often seen, and I had to take a moment to go and investigate this. There are a number of features burned into ROM functions, that are in place to support the chip, and its functions — such as the TinyBASIC bootloader, or UART functions — without taking up any space in the application.
There's a list of some of the function headers shown below — there's quite a bit packed into that ROM!
The WROOM module also couples the S2 with 4 MB of on-module SPI flash, which should offer ample storage for code, whether written and compiled using the ESP-IDF, or running interpreted code using the CircuitPython environment.
In addition to the SPI flash, any other required support peripherals for the S2 itself are also included in the WROOM package. This includes a 40 MHz oscillator, the various voltage regulators, and the all too important RF network, and — based on WROOM model selection — the PCB antenna or RF connector for an off-board solution.
All the digital communication interfaces that you'd expect from a high-end MCU are there — GPIO, SPI, LCD, UART, I2C, I2S, IR — a whole array of acronymmed peripherals for you to pick from.
There's been a slight adjustment to the radio loadout — Bluetooth is nowhere to be seen in the ESP32-S2 — it's a purely Wi-Fi affair here. It sounds like a significant trade-off, but I can't recall hearing of many (non-hacky) success stories with clean Wi-Fi/Bluetooth coexistence within a project.
With the cost of Nordic nRF51/52 chipsets and modules already so low (other Bluetooth silicon vendors are available...), it could be easier to tack on the Bluetooth with one of those, if you really need both interfaces!
On the analog front, there's support for two 8-bit DACs, two 12-bit SAR ADCs (with pin muxing options) and an on-die temperature sensor, not to mention the touch sensing capabilities on some of the I/O.
Modules like a pulse counter, in conjunction with an LED PWM module sound like they could have interesting applications together.
The most notable feature of the ESP32-S2 however, is perhaps the full-speed, onboard USB On-The-Go (OTG) interface, allowing it to natively talk USB to a host machine, negating the previous prerequisite of a USB-serial converter IC that used find a line on the BoM. That's a nice saving on the parts cost for any implementation, and also means you can skip at least one future instance of the ever dreaded Tx/Rx line swap fiasco!
With a pin header layout that looks — at first glance — like the familiar Feather form factor, a second glance might reveal the density of the pin header strip along the edges of the board is double what we'd usually see.
Using 1.27mm spacing pin header might break compatibility with any existing shields expecting the 2.54mm pitch pins, but with all the I/O the WROOM-S2 has to offer, it's a valid design call — enabling the MorphESP 240 board to expose as much of that pin / peripheral goodness.
A slightly different track we've seen some designers take, that allows for pin compatibility is the mixed use of 2.54mm pitch pin header, with further interleaved, castellated SMD contacts.
This looks like a potential fabrication nightmare to the uninitiated however, and still requires a custom baseboard to fully take advantage of. With that in mind, the 1.27mm pitch headers used on the MorphESP seem like a good call, with every pin on the WROOM-S2 being successfully broken out, as can be seen below.
Where we'd normally see the inclusion of a USB-serial converter IC, and the USB connector that goes with it, on this board, it's just the latter of the pair we find present. The section of the schematic that sorts out serial communication on an ESP32 has never looked so simple!
This USB interface makes uploading projects from within the Arduino IDE as simple as it gets!
There's a Diodes Inc AP1117-33, 3.3V LDO for local system power. This part derives its output from either the 5V of the USB connection, or instead, from the optional lithium-ion battery, which is served by an on-board charging control IC — the MCP7381 from Microchip.
This arrangement will see the system supplied by VBUS, when plugged into USB, and also charge the connected cell. When VBUS is disconnected, the power supply is seamlessly transferred over to sourcing from the connected cell, thanks to the use of a BAT54 dual schottky diode pair.
Simple, cheap, and effective — this is a solution to keep in mind for low current, mixed supply designs.
With a fast CPU clock, oodles of memory, and a hardware SPI interface to throw at handling a display, there's no reason to stick to simple monochrome character, or even graphical panels — the memory and interface are there, along with a CPU clock going like the clappers, ready to crunch through pixels.
Indeed, @sulfuroid has done due diligence in dropping a duly capable, generously sized, 240 x 240 IPS RGB TFT display — based around the ST7789 controller — a part that is particularly popular with the open source crowd, and with drivers available for many an MCU programming language.
Seen next to a tiny itsyBitsy MCU board above, these displays are high resolution, in a small footprint, with a dot pitch spec of 0.0975 x 0.0975 mm, giving a more familiar number of approximately 260 DPI — making for crisp, clear graphics.
This would be pretty perfectly paired with the recently released JPEGDEC library from @fast_code_r_us (aka Larry Bank), with there being a pretty clear link between CPU clock speed, and benchmark performance — the 240MHz clock of the ESP32 -—even as a single core, will favor performance over some of the other currently popular M4+ MCU boards.
If you want to lay hands on this lovely looking MorphESP 240 board, you can get cracking with the project Git repo, or you can save yourself half the work, and order a bare board straight from Tindie, to be assembled by your own skilled hand.
UPDATE (10/15/2020): The MorphESP 240 will also be launching soon on Crowd Supply. Stay tuned!