We’re no strangers to a conference badge. We must have a hundred different badges, including an early Raspberry Pi A+ powered E paper display. Pimoroni’s latest RP2040 powered device is Badger 2040, and this $12 board is a showcase for the gorgeous 2.9 inch e-paper display.
Don’t be fooled into thinking this is “just a conference badge”, Pimoroni have cleverly included QW/ST (Qwiic / Stemma QT) connectivity which means we can connect Badger 2040 to a range of sensors and add ons.
We put Badger 2040 on the bench and delved deep into the hardware and software for this interesting little board.
Pimoroni Badger 2040 Specifications
|System on Chip||RP2040 (Dual Arm Cortex M0+ running at up to 133 Mhz with 264kB of SRAM)|
|Storage||2MB of QSPI flash supporting XiP|
|Display||2.9 inch black and white e-paper display (296 x 128 pixels)|
|Features||5 x Front facing buttons (A, B, C, Up, Down)|
|2 x Rear buttons (Reset and User programmable)|
|1 x White LED|
|GPIO||Qw/ST Stemma QT / Qwiic connector|
|Surface Mount breakouts for|
|3V, I2C, UART, Debug, GND|
|JST-PH for battery (2.7 to 6V) compatible with 2 x AAA batteries or LiPo. Note: There is no onboard LiPo charging so an external charger is required.|
|Dimensions||85 x 48 x 9 mm|
Using the Pimoroni Badger 2040
At the time of writing the best way to get the most from Badger 2040 is via Pimoroni’s custom MicroPython release. CircuitPython support is coming along, and members of the community have managed to port CircuitPython to Badger2040, but right now there isn’t an official release. Our review will use Pimoroni’s MicroPython to conduct our tests.
Flashing the MicroPython release is simple, and once on the board, we have “Badger OS”, a simple user interface which provides a means to introduce various functions. Using Badger OS we can control:
- Clock: This demonstrates partially updating the screen, much quicker than updating the entire screen.
- Font support. We’re not just limited to basic fonts, we can use five more fonts in our projects.
- Ebook: Badger 2040 can also be used as a simple ebook reader. Text is read from a text file and automatically paginated according to the screen resolution.
- Image: Display a series of images, 296 x 128 1-bit which can be converted using a script in Pimoroni’s Github repository.
- List: A checklist of tasks / items. This demonstrates how to use the front facing buttons to navigate a list (A Python list of items).
- Badge: Create a custom name badge with your image and details for all to see. Demonstrates how to convert images and load text. The contents are controlled via a text file.
- Qrgen: Generates a QR code using details stored in a text file. All of the QR code creation is done by the RP2040 using MicroPython.
- Info: Basic Badger 2040 Information.
- Help: A general user help file.
At a basic level, Badger 2040 is just an e-paper display and the MicroPython Badger 2040 library supports drawing text and images to the sharp single color e-paper display. But what sets this board apart from other general e-paper displays is the RP2040 itself. We have a powerful microcontroller, onboard storage and integrated support for AAA batteries.
We tinkered with Badger OS, creating our own custom name badge, a QR code and an ebook using contents from another Tom’s Hardware article. We investigated creating a checklist and noticed a typo. The code instructs us to create a list of entries, but on closer inspection, it expected to read the contents of the list from an external text file. Not a deal breaker, but for a few moments it was certainly a head-scratcher.
Moving away from Badger OS, we wrote our own test project which uses a BME688 temperature sensor (supported out-of-the-box by Pimoroni’s custom MicroPython) and Badger 2040. Our test script periodically checked the temperature, humidity and air pressure which was then formatted and displayed on the e-paper display.
After a little tinkering with Badger 2040’s MicroPython library we managed to change the font size and position the data so that all three were displayed. We then encountered the typical “slow update” which accompanies e-paper displays. A full screen refresh was taking around three seconds to complete. This is when we discovered, by digging around in the function reference, that there was a badger.update_speed(badger2040.UPDATE_FAST) function which greatly sped up the refresh times to around one second.
What we’re not going to get from Badger 2040 is wireless connectivity. There is no easy means to add a Wi-Fi co-processor. You can add Wi-Fi to a Raspberry Pi Pico but Badger 2040’s selection of GPIO pins, broken out as surface mount connections on the outer edge, isn’t easily adapted to the task. It isn’t impossible, but the time invested to make it work is probably more than the delivery time for an alternative. That said, if you are up to the challenge, good luck and let us know in the comments.
Powering Pimoroni Badger 2040
On the rear of Badger 2040 is a single JST PH connector for use with 2 x AAA batteries or a LiPo cell with built-in protection. There is no charging circuit so you will need to charge your LiPos and then connect up. That said, AAA batteries are plentiful, and much safer to transport.
Depending on your use case, Badger 2040 can last a long time on batteries. If you only need to update the screen every hour or so, then your batteries will last days. Just remember that if the unit goes to sleep you will need to wake it up by pressing the front facing buttons. Badger OS provides a simple battery status icon in the top right corner of the screen, something which can be integrated into your own scripts, as all we are doing is reading an analog pin for a voltage and then displaying the data.
LiPo users will need to ensure that the battery is physically protected from the elements. There is currently no official case for Badger 2040 and a LiPo battery but the members of the maker community are making their own 3D printed and laser cut enclosures.
We asked Pimoroni to provide the results of its own battery testing and the results are impressive. Using 2 x AAA batteries, Badger 2040 survived 85,000 screen refreshes (one refresh per second) which equates to a day of run time (23 hours, 36 minutes to be more precise). Running from a 500mA LiPo battery, checking the temperature every five seconds using a BME280 sensor, and updating the screen saw over two days of uptime.
This is a fun little board. We have a great looking board which harnesses the power of the RP2040 with a simple MicroPython library. For the money, this is much more than just a “conference badge for geeks.”
The inclusion of Stemma QT / Qwiic and battery power means that we can do some real work with the board. Remote temperature logger, Carbon Dioxide monitor, air-quality sensor, all of these are possible with a simple Stemma QT sensor and Badger 2040. For most of us, we will be happy with a low res image of ourselves, telling the world about our skills, on the sharp e-paper display and for that, Badger 2040 is a fun conversation starter for your next conference.