After indulging myself with trying out different hardware and prototypes, I realized that I really don't have enough information to design a good badge. You know, all those displays and chips and sensors and buttons and batteries are cool, but at the end of the day you have to *design* something that serves a *purpose*, and if you don't make that the center of your design, there is a big chance it will suck. So let's take a step back and think what we need.
Things without which a badge is not a badge. These are non-negotiable requirements.
This is so basic, that it's easy to forget about it, and go designing watches or belt buckles. First and foremost a conference badge has to identify its wearer to all other conference participants that they might meet. That usually means that it has to have the owner's name (or nickname) displayed prominently somewhere at all times in a way that makes it visible and easy to read from a relatively large distance.
In practice, this means that the badge has to be worn in a visible place (traditionally on your neck, but clipped to your breast pocket or bag strap would also work). It also sets the minimum size of the badge — it can't be the 5×5cm tiny little device that I initially planned — that will simply not work.
The simplest, most fault-proof, long-lasting, convenient and obvious way of achieving this is to simply have a white area on the badge where you can write your name with a sharpie. It always works, even if you run out of battery or release the blue smoke, you can fix it if you made a mistake, and you don't need to know the names of all participants up front — you can even have some spare badges. It also makes it obvious which badge is yours, in case you mix them up while hacking on them.
I really have no idea what I was thinking with the e-ink display.
The second function of a badge like this is to provide your contact information to anyone you choose. Whether it's a vendor at a booth asking to scan your badge, another participant that you have just chatted with and want to continue it online, or a group of people that you want to go to lunch with next day — the idea is pretty much the same.
The simplest, "analog" way of solving this is of course to have your e-mail address (or twitter handle, or whatever) written then on your badge, in letters small enough to not be visible from afar, so that the people wanting to copy it (or take a photo) have to come close and possibly ask you. But there is a lot of room for technology here.
Bar and QR codes, NFC tags, IR beaming, BLE and other wireless communication methods can be helpful here. Being compatible with existing devices, such as phones, is a big plus here, of course, but we shouldn't require people to have a phone to use it. Ideally, there would be several methods available, with the analog fallback in case of a dead battery.
Those are the thing that make the electronic badge more useful than the piece of paper that you normally get. They should be good enough to justify the extra expense and hassle.
This is a Python-based badge for Python conferences, so it's fundamental that you should be able to (easily) program it with Python. That's the whole point of using MicroPython/CircuitPython here. But it's not enough to just be able to run your program on it — you should be able to show off the programs you have written!
That means that the badge must be able to run the program while you are wearing it (and not just when connected to your computer), which implies a battery. It also means that the results of running that program should be visible and unique.
RGB LEDs are nice for that, because they are flashy, colorful, and visible from far away, especially when blinking or cycling colors. Unfortunately, a lot of LEDs can run down your battery pretty fast, and also there is only so many ways you can make them blink — so the uniqueness aspect suffers...
Read more »