New Board with ESP32-S2 with LiPo charger unleash the native USB-OTG functionality

We recently released our ESP32-S2-DevKit-Lipo development board with ESP32-S2 SOC. It has the same functionality and pinout as Espressif ESP32-S2-Saola-1, but in addition it has a LiPo charger and battery management and is designed for Ultra low power – only 30uA consumption when on battery and deep sleep. This allows handheld battery operated applications. The LiPo part can power external sensors/circuits. This board has a built-in programmer with a CH340T USB-Serial convertor.

Many have noticed that ESP32-S2 has a native USB-OTG. Then why did we put the CH340T on it? The reason is that the Espressif SDK didn’t support USB back when we designed this board.

Now Espressif SDK adds support for a USB bootloader and the programming of the ESP32-S2 can be done by the native USB interface, we decided to make a new revision where the native USB-OTG interface is used.

We wanted to keep the LiPo battery functionality and this created an interesting technical challenge: the USB-OTG port can be used both as device and host. When used as a device, the board is powered by the USB and LiPo battery is charging. When used as a USB host (i.e. you can attach USB devices to the port) the USB port must supply 5V to the USB devices connected. Our first prototype had a power supply problem: when the ESP32-S2 works as a host the battery is powering the USB-OTG port with 5V, but there is attached also the LiPo charger circuit, so infinite loop is made: battery -> step up to 5V -> USB -> LiPo chgarger -> battery 🙂

This issue was preventing us from releasing this board earlier, but now on Rev.B all of these issues are fixed so we are about to run production.

Needless to say we kept the ultra low power design and the new board also consumes as low as 30uA in deep sleep.

Searching on the net it seems that no one else has implemented a USB-OTG functionality to the ESP32-S2 yet so this one will be the first. Also to the best of our knowledge there is still no software support for a USB host on the ESP32-S2 but we hope after our hardware is released this will push and accelerate the software development further.

ESP32-S2-DevKit-LiPo-USB is going to be released as Open Source Hardware like other IoT solutions we have.

Implementation of OPC UA on ESP32-EVB

OPC Unified Architecture (OPC UA) is an open, implemented under GPL 2.0 license, machine to machine communication protocol for industrial automation developed by the OPC Foundation.

The OPC UA protocol specification consists of 14 documents for a total of 1250 pages. Due to this complexity, existing implementations are usually incomplete.

This is why we were puzzled to see on Twitter post by Selftronics that they made OPC UA server running on ESP32-EVB!

Here are the details of the implementation, the sources are at GitHub.

Fruit selection machine made with T2-OLinuXino-LIME2 and MOD-IO, runs OpenCV

As part of the OSIE project Nexedi SA, France built a small conveyor belt using entirely open-source products and technologies.

Their goal was to build a fruit selection machine, which would use AI (starting with OpenCV) to inspect fruits (and possibly many other small particles) and to do a physical separation (selection) of them.

Olimex have been chosen as a partner in the project because of the many of OSHW solutions which the company offers.

T2-OLinuXino-LIME2 and MOD-IO were used in the implementation.

Details for the project is available here.

New OSHW board with STM32F303 now can have CAN and USB working at same time, operates from -40+85C and with power supply from 4.2-40VDC

OLIMEXINO-STM32F3 is re-design of our popular OLIMEXINO-STM32 board.

What is new?

  • STM32F303RCT6TR is used which allow CAN and USB to work at the same time. The F1 Series of STM32 shared same buffer for both USB and CAN which leads to not be able to work with both CAN and USB at the same time. This is solved in F3 series
  • Increased amount of memory: 256KB Flash, 40KB RAM
  • Power supply is now from 4.2VDC up to 40VDC which allow OLIMEXINO-STM32F3 to work in Automotive applications without special power converters
  • Industrial temperature grade -40+85C
  • Real Time Clock backup battery holder for CR2032 Li battery
  • Lower cost

The price of OLIMEXINO-STM32F3 is EUR 14.95 for single unit and drops to EUR 11.96 for 50+ pcs order.

New Open Source Hardware IoT ESP32-S2 development boards with LiPo Battery Charger and consumption of only 30uA in deep sleep target handheld WiFi apps

ESP32-S2 is new SOC from Espressif which fills the gap between ESP32 and ESP8266.

It has the same memory model as ESP32 but has cut the Ethernet and Bluetooth parts, so only WiFi connection is possible – same as ESP8266, but offers more power, secure boot and encrypted firmware. Also support of decent SSL connection, something which lacks in ESP8266.

Pricewise now S2 is a bit lower cost than ESP32 and more expensive than ESP8266, but there is very strong competition in this niche coming from the new Bouffalo BL6XX chips, so my prediction is that to stay ahead Espressif will further lower the prices of ESP32-S2 to match ESP8266 very soon.

For comparison with ESP32 and ESP8266 the new ESP32-S2 has plenty of GPIOs up to 43!

Initially Espressif has announced that their ESP32-S2-WROVER modules will have as low as 2-4uA consumption, but later they increased this value to 20uA. Not quite well as their target but still very good achievement.

Our ESP32-S2-DevKit-Lipo is pin to pin compatible with ESP32-S2-Saola-1:

To keep compatibility with SAOLA-1 we add RGB LED, but also add LiPo battery charger and ESP32-S2-DevKit-Lipo can operate even without external power supply only on LiPo battery, there is battery level monitoring and external power supply sense. ESP32-S2-DevKit-Lipo can power external circuits with 3.3V up to 200mA when operate on battery.

ESP32-S2-DevKit-Lipo has build in programmer with CH340T. There is possibility the programmer part to be excluded and to use ESP32-S2 directy USB connection.

When operating on battery if the RGB LED is enabled the power consumption is ridiculous 700uA as the RGB LED appear to use lot of current even when not in operation, but there is RGB disable solder jumper which if opened you will not be able to operate the RGB LED on battery but will decrease the power consumption to total less 30uA in deep sleep.

For these who need more memory there is variant ESP32-S2-WROVER-DevKit-Lipo with 2MB of PSRAM.

The prices start from EUR 5.56 for ESP32-S2-DevKit-Lipo and EUR 6.36 for ESP32-S2-WROVER-DevKit-Lipo .

Building Marine Chartplotter with A20-OLinuXino-LIME and LCD-OLinuXino-7 in metal frame

Matthias sent us link to his project of Marine Chartplotter made with A20-OLinuXino-LIME open source hardware Linux computer + LCD-OLinuXino-7 and LCD7-METAL-FRAME

The power supply is done with DCDC-36-5-12

Tutorial: Running micro-ROS on STM32-E407 with JTAG

via Twitter we noticed this tutorial with step by step instructions how to build configure and program STM32-E407

www.olimex.com is temporary down as our web hosting Hurricane Electric experience problems

The service was lost around 11.30 today September 02, we still wait them to recover.

olimex.com is hosted at he.net since 1997 and during these 23 years we barely remember any issue, but this year there was one more interruption in July.

P.S. while I was writing this post the service was resumed.

Driving High voltage loads with optoisolated 220VAC/16A switch by Arduino and OLinuXino

eduArdu is educational low cost Arduino board, it has plenty of resources like: LED 8×8 display, Joystick, Buzzer, Microphone, temperature sensor, Ultrasound distance meter, PIR sensor, IR emitter and receiver, Capacitive buttons, RGB LED, Lipo charger for stand alone work.

Here we will show you how you can drive high voltage loads like lamps, heaters etc with PWR-SWITCH connected to eduArdu.

Plug PWR-SWITCH in mains and the object you want to control plug in PWR-SWITCH receptacle.

Then connect “-” termianl of PWR-SWITCH input to eduArdu UEXT.pin2 and “+” terminal of PWR-SWITCH input to eduArdu UEXT.pin4.

In Arduino IDE make this program:

void setup() {
   pinMode(0, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
   digitalWrite(0, HIGH); // turn the PWR-SWITCH on
   delay(5000); // wait for a 5 seconds
   digitalWrite(0, LOW); // turn the PWR-SWITCH on
   delay(5000); // wait for a 5 seconds
}

The Lamp will start to blink 5 seconds on and 5 seconds off.

You can drive high voltage loads with A20-OLinuXino-LIME2 + LIME2-SHIELD:

In this setup connect “-” termianl of PWR-SWITCH input to LIME2-SHIELD GPIO.pin9 and “+” terminal of PWR-SWITCH input to LIME2-SHIELD GPIO.pin7 (GPIO271 in Linux) and you can use this code to switch on and off PWR-SWITCH:

echo 271 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio271/direction

echo 1 > /sys/class/gpio/gpio271/value

echo 0 > /sys/class/gpio/gpio271/value

or you can use Python and pyA20LIME2:

!/usr/bin/env python
from pyA20Lime2.gpio import gpio
from pyA20Lime2.gpio import port
from pyA20Lime2.gpio import connector
gpio.init() #Initialize module. Always called first
gpio.setcfg(port.PI15, gpio.OUTPUT)

gpio.output(port.PI15, gpio.HIGH)
gpio.output(port.PI15, gpio.LOW)

Linux tip: How to reset device connected to USB port

Sometimes devices connected to USB ports need to be re-set. It’s not unusual GSM modems and WiFi dongles to freeze and the only way to bring them back to life is to remove and re-attach.

OLinuXino USB ports has power switches and current limiters which can be controller by Linux drivers.

After some experimenting we found that it’s not so easy actually to do it with the standard file system and shell.

A friend suggested to try this code. It worked very well, so here is how to use it. First you need to download and compile it, then to make it executable:

$ mkdir usbreset
$ cd usbreset
$ wget $ https://raw.githubusercontent.com/jkulesza/usbreset/master/usbreset.c
$ cc usbreset.c -o usbreset
$ chmod +x usbreset

Then you need to see where your USB device is. In our case I connected MOD-WIFI-R5370 WiFi USB dongle:

$ lsusb

you will see something like:

Bus 002 Device 039: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter

to reset this device use the command:

./usbreset /dev/bus/usb/002/039

The device USB port will be power off for a second then power on again.

All above is tested and work with official Olimex Linux images from images.olimex.com, but should work on other Linux distributions too.

Previous Older Entries