This page is a work in progress!
The Picoclick C3 as well as its little brother (the C3T, T = tiny) are the successors of the well known Picoclick. The name is related to its new processor: the ESP32-C3 single core RISC-V 160MHz CPU.
The Picoclick C3T is a tiny WiFi and BLE IoT button for several applications. Originally designed for smart home things, the Picoclick can also be used as an actuator for IFTTT automations or as an MQTT device. It is based on the single core ESP32-C3 RISC-V processor and therefore comes with tons of useful features. With dimensions of only 10.5mm by 18mm the C3T not only the smallest one in the family of the Picoclicks, it is also the smallest device I have created so far.
The Youtube video shows the assembly and soldering process, the optimization of the boot up time, the power measurements as well as some useful applications of the Picoclick.
As the C3 is in development at the moment, most of the files are related to the C3T so far.
Here are some specs of the Picoclick C3T:
- Dimensions are only 10.5x18mm
- Ultra low standby current due to latching circuit (no sleep mode needed)
- Single button & LED interface (WS2812 RGB LED)
- USB Type-C for charging the battery and flashing the ESP32-C3
Function | GPIO C3T | GPIO C3 | Mode |
---|---|---|---|
WS2812 Din | GPIO6 | GPIOX | Output |
Latch* | GPIO3 | GPIOX | Output |
Button | GPIO5 | GPIOX | Input |
Charge Stat. | GPIO1 | GPIOX | Input |
Bat Voltage | GPIO4 | GPIOX | Input |
*Enabling the LDO can be done by pressing the button of the device or turning the latch high. In most use cases, the latch GPIO should be turned on as the first task of the Picoclick. Once the task is completed the device can be powered off by turning to the latch off (e.g. pulling it low).
- Press and hold the button during the complete flashing process! Otherwise the ESP32 will be loose power and the upload process will crash!
- A battery or a power supply has to be applied to the battery pads (3.5v - 5.5v) in order to flash the device!
Except the above, the Picoclick behaves like a normal development board. No need to get the ESP32 into download mode or pressing any reset button.
Due to the latching circuit, the button press has to be longer than the boot up time of the processor, because the first task should have been executed once the button is released. For most of the use cases of the Picoclick the first task is to toggle the latch GPIO high in order to enable power hold feature of the Picoclick. If this task haven't been executed before the button is released, the Picoclick is going to standby mode without finishing its main task.
Standard boot up time of the ESP32-C3 is almost 300ms. So the first task will be executed after these 300ms. This is far too long because a standard button press (especially with the metal buttons on the C3T) is around 100ms-200ms or even slightly below. Almost every task of the Picoclick would have been interrupted in this case (unless you press and hold the button...).
To speed up the boot process I got familiar with the menuconfig
of the ESP-IDF. Actually the reason why I've switched from the Arduino framework to ESP-IDF was that I get access to all the configs of the ESP32-C3.
Things I have done so far:
- Set Flash SPI mode from DIO to QIO (in Serial flasher config)
- Set Log output from Info to Warning (in component config)
- Set Bootloader log verbosity from Info to Warning (in Bootloader config)
- Enable Skip image validation from power on (in Bootloader config)
These points result in a boot up time of around 68ms which is almost quite fantastic. The test I've done so far were quite sufficient. If it is possible to make it even faster or if you have other ideas which could lead into the right direction then please let me know!
These power measurements are done with the Otii Arc power analyzer and its dedicated software. The average and peak current can be seen in the top right corner and is based on the selected frame in the current graph. The Picoclick C3T is used as an ESP-NOW slave in this case, which is probably the fastest solution of any wireless connection.
A complete Picoclick task will look like this, whereby the LED part in the end is the longest part. The whole task took about 1,7 seconds, but the transmission itself is completed after around 200ms. The other part is with disabled WiFi and only used to do some visualizations with the LED. Overall average current is below 28mA.
The ESP-NOW package is sent in the first 200ms. Average current is 73mA here.
As already said, the rest is just visualization stuff which will use 22mA of current in average.
Probably the most interesting part is the standby current, because it's the most used state of the Picoclick. As the device doesn't use any sleep mode, we're getting as low as 3µA in this state. This is only related to the battery monitoring feature. As the voltage divider between Vbat
and GND
is 1MOhm + 250kOhm = 1.25MOhm
the current flow through it is about 3µA.
The optimal battery, which is shown in the picture below, is a 301012 LiPo battery (3.0mm thick, 10mm width, 12mm length). Nevertheless you can use whatever single cell LiPo battery you want. Charging current is set to 20mA, to be used with those 20-30mAh batteries. For larger capacity batteries the battery charging time will - of course - increase. For 20-30mAh charging time is about 1h - 1,5h.
Below are some links for those tiny batteries (no sponsor, no affiliate, just for info):
In order to flash boards without soldering wires or batteries to the Picoclicks, I decided to print a simple flashing adapter which uses 1mm pogopins to make contact to the battery pads on the board. Just plug in the USB cable, shift the device in, press it down to the pogopins and hit the upload button. Simple overview is given below.
- Your Picoclick is well tested before shipping, so it is probably not broken. Make sure you have connected a decent power supply to the battery connections (3.5v - 5.5v). Battery polarity is shown above. The USB-C jack is only for charging the battery and to flash the ESP32 - not for powering the device.
Hackster.io article by James Lewis: Picoclick C3T Is the World's Smallest IoT Button and It Has a RISC-V Processor