Jonah Stiennon
Jonah Stiennon | December 22, 2023

How I Made Trading Cards with E-Ink Displays

What is your project?

Wyldcards are plastic E-Ink tiles about the size of a credit card and as thick as a phone. They are intended to be used for trading card games. The pictures on the cards can change and a memory chip in the card can hold game stats and other characteristics. The digital nature of the cards unlock new game mechanics, impractical or impossible with just tokens and paper, while keeping the physical feel of a tabletop game. I drew inspiration from the fictional games I wished existed when I was in school, like Yu-gi-oh, Card Captors, Angelic Layer, etc.

How did you come up with the idea?

In 2014, I had been working on mobile device UI testing. At one point, I grabbed a stack of iPhones and splayed them out like a hand of cards. I had the idea that, if each phone displayed the image of a card, you could shuffle the deck just by pressing a button, no physical movement necessary.

I am a software developer by trade. I worked at an IoT 3D printer company running the software team. My experience is mostly in web backend, DevOps, and mobile. While running the web app and cloud infrastructure side of things at the 3D printer company, I also found myself running a team of incredibly talented embedded firmware and electrical engineers. I've spent my life building all kinds of things, but they showed me that electronics today were more approachable than I had realized; by simply applying my existing software skills and what I knew of mechanical design, I could build physical products which had never existed in the world before! This gave me the confidence to attempt a project I had dreamed of a decade earlier, but seemed far beyond my abilities at the time.

Wyldcard is the result of taking the concept of digital/physical playing cards and bringing down the price of materials as low as I could while still maintaining the core functionality of the concept.

How did you design, prototype, and manufacture the cards?

I had a few design constraints: I wanted it to be affordable relative to other children's toys, be playable at camp or on the playground, and to be alluring when found in an older sibling's closet years later. LCD displays would be the cheapest, but then each card would require a built-in battery that would be a pain to keep charged; a card found in a closet years later would be completely dead and probably inoperable. E-Ink displays have the magic property of retaining the image on them without requiring any energy at all. After deciding what display to use, I needed a way to send new information to them during a game and detect the presence of other cards in play. I thought about radio mesh networks, but that would require batteries in each card and increase the complexity by an order of magnitude. I decided on simple electrical contacts on the backs of the cards that would connect to a supporting base. This is a familiar concept for card games, as many come with play mats you lay cards on, and Yu-gi-oh used the same concept, though sometimes mounted on the player’s arm. The base houses a battery with a standard charger and a microcontroller to run the game logic.

I planned out some game mechanics and ideas for how a game would actually work, but it became clear that until people had the cards in their hands it was hard to imagine what would be fun and what wouldn't. I felt like I knew all the capabilities the cards would need, and could build some prototypes and start game design after they worked to my satisfaction.

Prototyping started with purchasing some E-Ink displays off Alibaba and sending images to them using the development board built by the supplier. At this point, I decided to use the Rust programming language because I had been wanting to learn it and I wasn't that great at C. I learned Rust for embedded devices and decided I could run it from a Raspberry Pi while prototyping and recompile the code to a microcontroller later when mass production was needed. I fiddled around with the code until I could send images to the displays, then I used a reference diagram contained in the datasheets to design my own custom development board. I learned PCB design and started to order PCBs from China. My coworkers gave me some tips on what tools and suppliers to use and shook their heads at my disregard for all electrical engineering conventions.

Now that I had a circuit board which could take signals from my Raspberry Pi and display images on a screen, I needed to control multiple screens and find the maximum number of pins I could share between screens, in order to minimize the number of contacts each card would need. This required a few iterations, some breadboarding, and a mess of jumper cables.

After I had the code and circuitry working in order to address 4 separate screens each with their own circuit board, all wired together, I had a functionally complete system. Now I needed to design the physical card, and work in the physical interface between the cards and the base. Using my self-taught CAD skills and the industrial 3D printers we built at my day job, I started printing plastic enclosures which could house an E-Ink display, my PCB, and four magnets to hold it to the base. I printed some sample bases and started iterating on different designs for the contacts to make the connections. This was the part of the design phase which required the most iterations, though I'd say the longest step of the project was the back-and-forth of ordering PCBs from China and reading datasheets, trying to get the screens to work in the first place.

While the Rust code was certainly better than C or C++, my most comfortable language is Javascript, and I decided that if I wanted to iterate on game design quickly, it'd be easier to write the games in Node.js. The same would go for anyone else online, Javascript being so much more accessible than C. I wrapped my Rust driver as a native Node.js addon, and wrote some sample code in Javascript.

I designed the DevKits to be as easy to manufacture as I could. It helped that I had already optimized on cost, so the number of components was limited to the essentials. I make everything in my bedroom, and the workshop space we have in the backyard. The work is mostly soldering, polyurethane resin casting, woodworking, and painting. I've been posting videos of the process to YouTube.

You raised $7277. How did you do crowdfunding?

I got burnt out at my job and realized it was conflicting with my side project. I quit my job, did some traveling, and finished the initial prototypes. I took the prototypes with me when visiting my parents in Michigan for the holidays, had a photoshoot, and posted a video to Hacker News where I've been reading about cool stuff my entire adult life. Something about the holiday season, combined with Hacker News’ obsession with E-Ink and the whims of internet 'virality', lead to my post being voted to the #1 position, where it stayed for over 24 hours. This was incredibly fun, exciting, rewarding, and a lifetime dream achieved. I stayed up all night responding to comments.

I had intended on putting the project down after the blog post was published. I saw the post as taking the project to completion, having created something and then put it out there into the world. I figured I'd take some time off, pursue some smaller projects, then do some game design and start playing with the cards. Fueled by all the attention, I decided to keep going. Many people asked if I would be selling them or doing a kickstarter, but the problem is, there was still no game to sell. I floated the idea of a DevKit to let game designers attempt to build their own games using Wyldcards and this was met with some interest. I had built these prototypes as a way for me to iterate on game design after all, so it wouldn't be that much harder to allow others to use them that way as well. I was approached by CrowdSupply, which suggested that my DevKits might be a good fit for their platform, and so I began that process.

I built new prototypes with a slightly better design and made an extra fancy one with higher margins. I filmed videos, wrote content and ran a crowdfunding campaign. Most of the orders are from friends and family, and people who had emailed me with interest in the DevKits when they had seen them on HN. When the HN post started to get traction, I modified my website and added an email signup button. I sent my campaign to this mailing list and CrowdSupply published my campaign to all their email subscribers.

Now it's a year since the first prototypes were completed, and 2.5 years since I bought a Raspberry Pi and some e-ink displays. I'm nearing the end of my production run, building the 25 DevKits I sold.

You have outlined plans for scaling up the project. How did you learn about these larger scale manufacturing processes?

I've watched videos, read books, and taken factory tours my whole life. I've spent my whole life as an engineer really. I watched How It's Made, Junkyard Wars, and all that. Nowadays we have all these great Youtube makers, but it's true that they all make one-offs and not large runs of things. It's really very different, the experience of making one thing versus making a production line. For some reason it's like 100x the work to make something 10 times rather than once. Also it's hard for it to be as exciting/interesting. I’ve studied everything I saw, but, I always had this mental barrier that the tools and processes used in a real factory were masterfully created by craftspeople at the peak of their careers with a perfected process. The thing I learned from all my coworkers at the 3D printer startup is that these things are not magical and not designed perfectly; it's just smart people using the skills they have to solve problems. I was already doing the same thing for software: building a production line that reliably pumped out products at scale. This was just the same thing, in a different medium. Humans usually go with a straightforward solution to things, and you can often just muddle about trying things and spending money until you figure out what works. It's interesting to look at different industries and see how they use their skills to solve their own problems. So all the tooling for woodworking are jigs made of wood. Automatic assembly lines for metal objects are monstrosities made of metal. Software is built using software and AI researchers use AI to solve all their problems. So you just use what's at hand and eventually you settle into a local maximum of an optimal process.

Also, I live in the Bay Area. I'm biased, but this place is full of awesome engineers building things and you can just walk up to them and ask them to explain everything about their project and they will.

After you're done with fulfilling the orders what are your plans for the future?

This past year I took some time off traveling, I had a brief detour where I won a Hackathon with an AI Slackbot, there were a few forays into startups, I made all the campaign content, and I did a bunch of paperwork. I ran out my budgeted year of unemployment, so I completed a job search and am now working full time again.

I must say, this project has gone on much longer than I intended, but that was partly due to unexpected success. The crowdfunding campaign has been a ton of effort to only get a few kits out into the wild, but I learned a lot and it's been fun overall. I've got a whole stack of smaller projects which have piled up in the meantime and I can't wait to deliver these DevKits and table the project for a bit. I'll do a few weekend projects to rejuvenate myself and then start designing a game for Wyldcard.

---

Get Interviews Faster.

I try to get a new interview monthly. It's free.

---

Me: edward @ this site