Part 1 – Choosing Components and Getting Funding

As a graduate student, one of my favorite pastimes is daydreaming of life after graduation. If I ever want to get there, I know I’ll have to have at least one successful job interview. So, I often find myself perusing the internet in search of advice for how to ace technical interviews. Without fail someone always suggests working on small-scale projects that you can talk about during interviews. This bit of advice always has plenty of likes or upvotes or supporting comments, and there’s usually someone who says ‘If it’s something you can bring to the interview and show them, that’s always the best!’

Now, what on earth could I possibly sneak into a job interview? I’m an Electrical Engineer, so building websites or apps that you can pull up on your phone is a bit out of my depth. But a while back I saw my wife get a box of fancy new business cards for her job, and inspiration struck. I’ve seen people make PCB business cards that look sleek and cool with silkscreen and copper designs, but what if it wasn’t just a PCB? What if it had a screen and buttons and could actually do something as well? Surely, sneaking a business card into a job interview and working it into the conversation would be easy!

So, I decided to go for it and build my own electronic business card. I’ve made simple games from scratch and done a lot of low-level embedded programming before, so I figured that I could build in a fun little video game and impress any interviewer with hardware and software that I made myself. But before I could dive into coding and laying out a PCB, I needed to pick my parts and secure funding from my better half.

Choosing a Screen

A video game without video doesn’t make much sense at all. So, the first thing I did was look into small screens.

Since the end goal is a business card, I needed to set some restrictions for myself:

The display needs to be small: a standard business card is only 3.5” x 2.5”, so the display will need to take up significantly less space than that to leave room for the silkscreen, pushbuttons, battery, and other components. The display needs to be low-power: while a standard AA battery could technically fit on a business card (it’s only about 2” in length), I don’t know anybody who would want to carry something that thick (about 0.5” diameter) in their wallet all the time. I’ll be using a flat coin cell battery, so the power consumption needs to be low in order for the battery to last longer than a few minutes. The display needs to be cheap: having an electronic business card to show off is cool, but having an electronic business card to give away is even better! Plus, I’m still just a graduate student for the time being: I can’t afford to give out expensive toys to every interviewer or potential contact I meet.

With all of these constraints in mind, I settled on a SSD1306 based monochromatic OLED display here. These are a great combination of small, low-power, and cheap; plus, it’s very easy to find these in hobbyist kits with lots of documentation. That wasn’t on the list, but it definitely should be: always pick a component with lots of documentation if you can!

I like these particular screens for a couple of reasons:

OLEDS consume very little power. This is because OLED screens literally turn off their pixels for displaying black and don’t have any kind of backlight; that means that any pixel on this monochromatic OLED that isn’t on is consuming zero power. Other common screens, like LCDs, always illuminate all of their pixels with a backlight and try to block it when they display black – that’s just a waste of power! The SSD1306 is versatile. A simple Amazon search for ‘SSD1306 OLED Display’ will yield results of different sizes, colors, and numbers of pixels. This is because the SSD1306 is the OLED driver, not the OLED itself. I opted for the 32×128 monochromatic white OLED with I2C interface here, but there’s no reason you couldn’t use the same drivers for a 64×128 blue OLED in a later version. Plus, this chip supports several different communication interfaces: I2C, 3-wire SPI, 4-wire SPI, and two MCU Parallel interfaces. The SSD1306 is well documented. Did I mention this already? It bears repeating. The SSD1306 is a very common OLED display for hobbyists: you can find it adapted for Arduino, Raspberry Pi, Omega Onion, and even standalone I2C or SPI interface boards. Adafruit even provides an entire Arduino library with loads of documentation for this chip. The point is: finding the datasheets and documentation for this part is very easy, and that makes developing for it that much easier. A quick google for the SSD1306 datasheet will lead you right to it!

Choosing a Microcontroller

If you read ‘Microcontroller’ and did a double-take, let me explain myself. Sure, a simple video game sounds like the perfect opportunity to break out your Raspberry Pi or Omega Onion, but remember the application: a business card. This entire project will have to be powered from an ultra-thin coin cell; that means very low power. Microcontrollers are designed for exactly these kinds of applications: low-power, low-cost, simple processing tasks. The screen I’ve chosen is just a 32×128 monochromatic OLED, so there likely won’t be any need for a powerful processor to animate a few sprites.

Choosing a microcontroller can be difficult because there are so many options. In the past I’ve used AVR, STM, and TI microcontrollers in various projects. But, if I had to choose a favorite, it would be TI because of their immaculate documentation. I’ve always been a bit of a Texas Instruments fanboy ever since my very first microcontroller: an old MSP430 Launchpad a graduate student gave me during my freshman year. I guess some habits just die hard.

So, after perusing the Texas Instruments website for ultra low-power low-cost microcontrollers, I settled on the MSP430FR2433. It’s got all of the peripherals I’ll need: timers for the game loop, GPIO interrupts for user input, and a reprogrammable communication interface for the OLED screen. I’ve also never liked dealing with Flash memory controllers in microcontrollers, so the Ferromagnetic-RAM (FRAM) memory sounded like a nice change of pace. And did I mention there’s a $10 Launchpad Development Kit available with two pushbuttons and built-in debugger? It sounds like a winner to me!

Applying for Funding (with my Wife)

The MSP430FR2433 Launchpad and SSD1306 OLED display are going to run me $20 combined, but they’re all that I need to get started developing. So I did some quick back-of-the-envelope calculations to estimate a final project price. Here’s my breakdown with some made up numbers that seemed reasonable after digging around on DigiKey for a bit:

Part Price MSP430FR2433 $2.50 SSD1306 32×128 OLED $4.00 Printed Circuit Board (PCB) $2.00 Pushbuttons $2.00 Battery $0.50 Passives $2.00 TOTAL: $13.00

Only $13 for my own pocket-sized Gameboy business card? That didn’t seem too bad to me! I’m sure the final unit price will be lower when I build more than one at a time, but the estimate seemed sound to me. So, I brought up my idea to my wife one afternoon, and here’s how it went:

“Hey Naomi, I had an idea for a pretty cool project that I want to do in my free time, but It’s going to cost a little bit of money and I wanted you to know first.”

“Oh cool! What is it?”

“Okay, imagine if I built my own tiny Gameboy from scratch! I could make my own PCB and program everything myself. It would be really great practice for my engineering skills and loads of fun. And it wouldn’t be too expensive, probably just $13 or so but I’d probably end up spending $40 or $50 to make the first prototype. What do you think?”

“Michael, that’s a terrible idea. You already have a Gameboy. Why would you want to make your own? Who would want to see that?”

And that’s how that went. I had made a few critical mistakes:

I did a bad job describing it. I called it a Gameboy and left out any mention of a business card! I grew up with my nose in a Gameboy Color, but my wife grew up with her nose in a book. Sure, what I had in mind resembles a Gameboy, but that was a bad description. I got too excited and only described the project as ‘fun’ and ‘good practice’. There are plenty of other ‘fun’ things that won’t involve me sitting in front of a computer and working for hours in my spare time, and my job as a Research Assistant is already ‘good practice’. I didn’t even mention using it as a tool for job interviews! That was the whole goal, but I left it out.

After thinking my first pitch over for a couple of days, I went back to my favorite funding source and tried a new pitch. Here’s how it went this time:

“Hey Naomi, I had another idea for a hobby project. Wanna hear it?”

“Sure.” (I’d be lying if I said there was no eye roll after my last pitch)

“Okay, so I want to make my own business card. I want to make one on a little PCB that I can keep in my wallet and give out in job interviews, and I think I can use some tiny parts to put a screen and some buttons on it and program it. I can make a little game or have my resume or some other text on it. Then, when an interviewer asks if I’m good at making things or programming, I can just say ‘well here, look at what I made’ and they can play with it and keep it! I think it’d be around $10 to make one because the parts are all cheap, but I could just use them for important interviews. What do you think?”

“Michael that’s an awesome idea, you should do that! That’s a great way to stand out in a job interview!”

And there was much rejoicing and happiness in the Bolt household, because my project was officially funded and my wife was on board! The lesson here is simple: know your audience when you’re asking for money.

Next Time: SSD1306 OLED Drivers

Now that I have my target microcontroller and screen, the first step to making my new business card will be to get them talking to each other and to draw some simple patterns.

Thanks for reading, and be sure to check back in the coming weeks for more posts! Here’s a sneak peak of what the final product will look like: