We’re no strangers to a conference badge. We must have a hundred different badges, including one first E paper display powered by Raspberry Pi A+. 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 has cleverly included QW/ST (Qwiic / Stemma QT) connectivity which means we can connect the Badger 2040 to a range of sensors and add-ons.
We’ve benched Badger 2040 and delved deeper into the hardware and software of this interesting little board.
Pimoroni Badger 2040 Specifications
|system on chip||RP2040 (Dual Arm Cortex M0+ running up to 133 Mhz with 264 KB of SRAM)|
|Storage room||2 MB of QSPI flash memory supporting XiP|
|To display||2.9-inch (296 x 128 pixel) black and white e-paper display|
|Characteristics||5 x forward-facing buttons (A, B, C, Up, Down)|
|2 x rear buttons (reset and user programmable)|
|1 white LED|
|GPIOs||Qw/ST Connector Stemma QT / Qwiic|
|Surface mount escapes for|
|3V, I2C, UART, Debug, GND|
|JST-PH for battery (2.7 to 6V) compatible with 2 AAA or LiPo batteries. Note: There is no built-in LiPo charging, so an external charger is required.|
|Dimensions||85 x 48 x 9mm|
Using the Pimoroni Badger 2040
As of this writing, the best way to get the most out of Badger 2040 is through Pimoroni’s custom MicroPython build. CircuitPython support is coming and community members have successfully ported CircuitPython to Badger2040, but at the moment there is no official release. Our review will use Pimoroni’s MicroPython to perform our tests.
Flashing the MicroPython version is simple, and once on the board we have “Badger OS”, a simple user interface that provides a way to introduce various functions. Using Badger OS, we can control:
- The clock: This demonstrates a partial screen update, much faster than updating the entire screen.
- Font support. We are not limited to basic fonts, we can use five other 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 based on screen resolution.
- Image: Displays a series of images, 296 x 128 1 bit that can be converted using a script in Pimoroni’s Github repository.
- List: A checklist of tasks/items. This demonstrates how to use the front buttons to navigate through a list (a Python list of items).
- Badge: Create a personalized name badge with your image and details for all to see. Shows how to convert images and load text. The content is controlled via a text file.
- Qrgen: Generates a QR code using details stored in a text file. All QR code creation is done by the RP2040 using MicroPython.
- Information: Basic information about Badger 2040.
- To help: A general user help file.
Basically, Badger 2040 is just an e-paper display and the MicroPython Badger 2040 library supports drawing text and images on the crisp monochrome e-paper display. But what sets this board apart from other general e-paper displays is the RP2040 itself. We have a powerful microcontroller, built-in storage, and built-in support for AAA batteries.
We tinkered with Badger OS, creating our own custom badge, QR code and ebook using content from another Tom’s Hardware article. We investigated creating a checklist and noticed a typo. The code asks 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. It wasn’t a breakup, but for a few moments it was definitely a headache.
Moving away from Badger OS, we wrote our own test project that uses a BME688 temperature sensor (supported by Pimoroni’s custom MicroPython) and Badger 2040. Our test script periodically checked temperature, humidity, and atmospheric pressure which were then formatted and displayed on the e-paper screen.
After a bit of tinkering with Badger 2040’s MicroPython library, we managed to change the font size and position the data so that all three are displayed. We then encountered the typical “slow update” that accompanies e-paper screens. A full screen refresh took about three seconds. That’s when we discovered, while digging through the function reference, that there was a badger.update_speed(badger2040.UPDATE_FAST) feature that drastically sped up refresh times to around one second.
What we won’t get from the Badger 2040 is wireless connectivity. There is no easy way to add a Wi-Fi coprocessor. You can add Wi-Fi to a Raspberry Pi Pico but the Badger 2040’s GPIO pin selection, split into surface-mount connections on the outer edge, isn’t easily up to the task. It’s not impossible, but the time invested to make it work is probably more than the delivery time of an alternative. That said, if you’re up for the challenge, good luck and let us know in the comments.
Feeding the Pimoroni badger 2040
On the back of the Badger 2040 is a single JST PH connector for use with 2 AAA batteries or a LiPo cell with built-in protection. There is no charging circuitry, so you will need to charge your LiPos and then connect. That said, AAA batteries are plentiful and much safer to carry around.
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, your batteries will last for days. Remember that if the device goes to sleep, you will need to wake it up by pressing the buttons on the front. Badger OS provides a simple battery status icon in the top right corner of the screen, something that can be integrated into your own scripts, as all we do is read an analog pin for a voltage then display the data.
LiPo users will need to ensure the battery is physically protected from the elements. There are currently no official Badger 2040 cases and a LiPo battery, but members of the maker community are making their own 3D printed and laser cut cases.
We asked Pimoroni to provide their own battery test results and the results are impressive. Using 2 AAA batteries, Badger 2040 survived 85,000 screen refreshes (one refresh per second), which is equivalent to a day of battery life (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 seen over two days of availability.
It’s a fun little board. We have a great board that harnesses the power of the RP2040 with a simple MicroPython library. For the money, it’s more than just a “conference badge for geeks.”
The inclusion of Stemma QT/Qwiic and battery power means we can do real work with the board. Remote temperature logger, carbon dioxide monitor, air quality sensor, it’s all possible with a simple Stemma QT and Badger 2040 sensor. For most of us, we’ll be happy with a low resolution image of ourselves, telling the world about our skills, on sharp e-paper display and for that, Badger 2040 is a fun conversation starter for your next conference.