NEW ESP32 Dev Board, Announcement

Strontium
Posts: 20
Joined: Sat Dec 26, 2015 11:33 pm

NEW ESP32 Dev Board, Announcement

Postby Strontium » Wed Jul 25, 2018 2:54 am

Hi all,

I am designing a new ESP32 dev board, its got some unique features. One of which is USB Host capability.

I currently have a Micro USB A/B connector designed on, but I favour the Mini USB A/B because its a more robust connector and doesn't get sloppy like the micro ones do over time.

The ONLY negative I can think of for not using a Mini USB connector is that a lot of people will already have power supplies with Micro usb connectors on them. So what do people think? Should I stick with micro usb or switch to mini USB. [EDIT} I have gone with a Micro USB, I don't think its as good a connector, but its more standard now.

I am just getting all the parts now to build my prototypes and these board should be built in about a month.

Quick list of board features (subject to revision):
  • * Module dimensions: 44 Pins, 25.4mm wide, 62.23mm long
    * 37 GPIO
    * 16MB Flash,8MB PSRAM.
    * 2 x Onboard programmable op-amps, (Outputs can be fed directly into ADCs, can use as a Programmable Gain Amp, for example).
    * 2 x Programmable HW Logic units, can implement simple hardware functions without software intervention (at gate speed). For example, can set up as an XOR of two pins, to produce one output, or as a hardware flip flop. Reduces the need for glue logic in a design.
    * USB Device/Host (More than just Uart, for example can be a MIDI device, or emulate a USB keyboard/mouse, or hook up a USB HDD).
    * 4 x Analog DAC outputs. 2 with a sample rate up to 1Msps and dithered 16bit resolution.
    On board SDCARD on SDHC port pins (Maximum Performance). User can select 4 bit mode for performance, 1 bit mode to save IO or disable completely for even more IO.
    * 4 x WS2812B RGB leds and expansion connector to drive more. (Doesn't use any of the 37 IO exposed on the header)
    * LIPO Battery charger with battery voltage detect (Doesn't use any of the 37 IO exposed on the header)
    * 21 Analog inputs, 8 with up to 1Msps conversion rate.
    * 0 uAmps controlled shutdown for the ESP32. (Total power down of ESP32 and SDCard, and wake up on event, Real Time or interval).
    * Can use high gain external antennas.
    * AND MORE.
Bonus, The module will appear as a USB drive when operating in Bootloader mode, so programming the ESP32 is just a simple mater of dragging a new application file onto the "Virtual USB FAT Drive" and it automatically programs. No need to use python programming tools, no need for drivers, works with Windows, MAC and Linux transparently. Although if you want to use the standard programming tools, they will of course continue to work.
Last edited by Strontium on Thu Jul 26, 2018 4:25 am, edited 1 time in total.

ESP_igrr
Posts: 1813
Joined: Tue Dec 01, 2015 8:37 am

Re: NEW ESP32 Dev Board, Quick Poll

Postby ESP_igrr » Wed Jul 25, 2018 5:15 am

Which MCU do you plan to use for the host? Any chance to use it for JTAG as well?

Strontium
Posts: 20
Joined: Sat Dec 26, 2015 11:33 pm

Re: NEW ESP32 Dev Board, Quick Poll

Postby Strontium » Wed Jul 25, 2018 1:53 pm

Yes absolutely JTAG debugging would be possible using the host CPU. I do not wire it up directly because then you end up in pin conflicts and/or reduced IO, or I would need high speed muxes all of which seem overkill. So, it is a simple matter to just use jumper wires on the headers and jumper up the ESP32 jtag pins to spare io on the host cpu. Then an appropriate App on the host cpu could give you Jtag access over the USB connection. As for the ESP32, the bootloader will expose the host cpu memory as a file that can be programmed by saving a file to its pretend FAT file system, so it should be easy to install pre-built apps to achieve different tasks.

One of the design goals of my board is to Maximise the available IO and user accessible features without growing the board larger than a typical ESP32 dev module.

The host CPU is a ARM Cortex M0+ (SAML21), and will be programmable with Arduino or bare metal coding. It should also be able to run circuitpython if one was inclined. I have already done the basic port of the uf2-samdx1 bootloader to this chip, and am testing it now, and will be enhancing it (and stripping stuff like the HID bootloader support) to also act as a bootloader for the ESP32. The chip is ultra low power, and by powering down the ESP32 and SDCard one can put the SAML21 into an active sleep and consume less than 5 uAmps (Standby mode with all host cpu registers/memory retained and RTC running is about 3uAmps). Even lower power modes are available down to about 1.1uAmps, which should allow great battery conservation with a careful implementation.

The Host and ESP32 share 5 IO. They share the TX/RX lines and GPIO 0, and they also have a I2C bus between them, so the ESP32 can communicate with the host using serial comms, or I2C as desired. The I2C pins can also be used for other purposes if that is not required, same as the UART pins. GPIO 0 is only used by the bootloader and is left unconnected at other times, so it can be used as a GPIO controlled by wither the ESP32 or host CPU.

From a peripheral stand point its like a enhanced SAMD21, a lot of the peripherals are identical, but it has a lot of differences in the power/clocks section, plus more flash and ram. Most of which would be transparent to most applications but means I need to modify the core for Arduino to work. As far as I am aware it will be the first SAML21 board that will be programmable with Arduino.

Strontium
Posts: 20
Joined: Sat Dec 26, 2015 11:33 pm

Re: NEW ESP32 Dev Board, Quick Poll

Postby Strontium » Thu Jul 26, 2018 4:23 am

The boards are designed in Kicad V5. When the boards are shipped at the end of the crowdfunding campaign all design files will be open sourced.

Board Renders ->
TopView-R102.png
TopView-R102.png (564.11 KiB) Viewed 12304 times
BottomView-R102.png
BottomView-R102.png (625.84 KiB) Viewed 12304 times

Deouss
Posts: 422
Joined: Tue Mar 20, 2018 11:36 am

Re: NEW ESP32 Dev Board, Announcement

Postby Deouss » Thu Jul 26, 2018 10:10 am

This is awesome :)

User avatar
Vader_Mester
Posts: 297
Joined: Tue Dec 05, 2017 8:28 pm
Location: Hungary
Contact:

Re: NEW ESP32 Dev Board, Announcement

Postby Vader_Mester » Thu Jul 26, 2018 2:01 pm

Looks cool. I like the idea of an ATSAML uC. Which version of the SAML21 you plan on using?

Code: Select all

task_t coffeeTask()
{
	while(atWork){
		if(!xStreamBufferIsEmpty(mug)){
			coffeeDrink(mug);
		} else {
			xTaskCreate(sBrew, "brew", 9000, &mug, 1, NULL);
			xSemaphoreTake(sCoffeeRdy, portMAX_DELAY);
		}
	}
	vTaskDelete(NULL);
}

Strontium
Posts: 20
Joined: Sat Dec 26, 2015 11:33 pm

Re: NEW ESP32 Dev Board, Announcement

Postby Strontium » Thu Jul 26, 2018 3:16 pm

Deouss wrote:This is awesome :)
Vader_Mester wrote:Looks cool.
Thanks :)
Vader_Mester wrote: I like the idea of an ATSAML uC. Which version of the SAML21 you plan on using?
On this board its a 32pin device with 264K Flash and 40K Sram. The size of the device I chose is a function of the size of the board, because I was aiming for a size similar to current ESP32+USB to Serial converter boards.

This gives me 13 extra dedicated IO on the expansion, plus internal IO used to control power, SD Card detect, USB, USB ID detect, battery voltage monitoring and status led control, and 5 IO on the expansion header that are shared between the two devices.

They share the ESP32 TX/RX lines and GPIO 0 which the bootloader needs, and they also have an I2C bus between them which also goes off board, so the ESP32 can treat the host MCU as a I2C device. So, on those 5 IO lines, either, or both devices can control the output, depending on the application. The SAML21 is running in a fully self clocked mode which frees up a bunch of IO so the 32pin chip has just enough pins for the job. I spent a really long time optimising the pin selection of the Micro to maximise features on the expansion IO, and still achieve what i need.

Depending on how this board is received, I do have an idea for an ULTRA version, which would be a bigger board, but would use the 64pin version of the SAML. Software wise it would be identical, it would just have a LOT more IO resources available.

User avatar
Vader_Mester
Posts: 297
Joined: Tue Dec 05, 2017 8:28 pm
Location: Hungary
Contact:

Re: NEW ESP32 Dev Board, Announcement

Postby Vader_Mester » Fri Jul 27, 2018 6:32 am

If you pump up the board, I suggest using an STM32.
In my project I'm gonna use an STM32L476RCT6. This one has 256KB ROM and 128KB RAM, and yet it's the cheapest version of this series.
It's a Cortex M4, 80MHz, with USB OTG, Quad SPI (up to 40MHz), parallel interface, and available in LQFP64 package.

Also it has an official NUCLEO board, which is supported in Arduino.

Code: Select all

task_t coffeeTask()
{
	while(atWork){
		if(!xStreamBufferIsEmpty(mug)){
			coffeeDrink(mug);
		} else {
			xTaskCreate(sBrew, "brew", 9000, &mug, 1, NULL);
			xSemaphoreTake(sCoffeeRdy, portMAX_DELAY);
		}
	}
	vTaskDelete(NULL);
}

Strontium
Posts: 20
Joined: Sat Dec 26, 2015 11:33 pm

Re: NEW ESP32 Dev Board, Announcement

Postby Strontium » Fri Jul 27, 2018 9:07 am

Vader_Mester wrote:In my project I'm gonna use an STM32L476RCT6.
Nice chip. Bit big for my board, but still Nice.

Strontium
Posts: 20
Joined: Sat Dec 26, 2015 11:33 pm

Re: NEW ESP32 Dev Board, Announcement

Postby Strontium » Thu Oct 18, 2018 6:10 am

Ok, so the dev board progresses. I Have 5 prototypes coming out of the factory today.
Image
Image


Also got some test boards back from PCBGOGO.com who are fantastically fast at making really cheap (5 bucks for 10 boards) PCBs.

First one is a test harness i will use to both test the board, AND commission them when i enter volume production. The plan is to program the board with JTAG, then have it run test code to exercise the available IO to ensure everything works, automated.
Image

The second board might actually be usable by others. Its a UPS board, approx 1.5Amp Hours at 3.7V Lithium Ion battery backup and a 9V-24V DC power input capable of generating 5V at 3 Amps output. More than enough power for this board and a host of peripherals. This would also generate the 5V for a USB Device when using USB in Host mode, so its got enough grunt to run a USB HDD, if one wanted such a thing. I designed this to be easy to build for the end user. Once these boards have been verified (and i am still waiting for parts) I will publish their full designs, in advance of completing the ESP32-MAXIO board. The ESP32-MAXIO was slightly modified from earlier images to allow it to sit neatly on top of this UPS board (Or any other battery backup board) and not require a messy cable, although its still possible to put a battery on a flying lead if one desires.

Image

Hopefully I get the prototypes soon and can post more.

Who is online

Users browsing this forum: Google [Bot] and 16 guests