Simple and Impressive Business Card Printer




Introduction: Simple and Impressive Business Card Printer

About: We are a designer maker agency based in Cape Town. We fuse traditional industrial design with electronics and software engineering. We also try to make fun instructables in our spare time!

At some point most tinkerers and makers have to take the plunge into the real world - the world of suits and dividends and business cards. Without going completely "American Psycho" on your asses: business cards are important. In many ways they are our keys to the business world; the first impression making a massive impact, and potentially the difference between eating a Burger King in front of your computer and getting taken to a French restaurant for a business meeting.

The question remains, how does one make a lasting impression with a simple card - and how to you prevent your card from being thrown away, used as kindling or emergency filter tips?

Try printing it in your hand, in front of the person you are trying to impress.

Buy using cheapish components ($80?) you can print thermal business cards to hand out to any potential client, investor or friend. These can be changed whenever you need and really make an impact because they are something new and engaging.

Step 1: Getting the Parts


1 x Thermal Printer -

1 x Roll thermal paper -

1 x Arduino Pro Mini 328 - 5V/16MHz -

1 x FTDI basic Breakout - 5V -

1 x Strip of male header pins

1 x AAA battery holder

4 x AAA batteries

1 x Push button

Computer, USB cable, Soldering iron, Solder, Hot glue or Double sided tape


I only managed to find pictures of AA battery holder, but the AAA are better because they are smaller. So try find one of those in your area.

This project centres around a small portable thermal printer. These printers are generally used for printing receipts in ATMs or card machines. Luckily, they are very easy to set up and print directly on to easy to find thermal paper. They can print images and patterns (although we are only using text for now). You can communicate to the printer via serial using an Arduino (or similar uC). Adafruit have kindly made a really extensive library that helps to set up the printer and get your first business card printed in a jiffy.

Step 2: Wiring and Assebling

Wire up the Pro Mini and the Thermal printer as shown in the diagram above.

Basically, the printer needs 3 connections to the Arduino - RX, TX and GND. RX and TX are used for serial communication and as it is in the code RX is connected to pin 3 and TX to pin 2. GND is important so that there is a common ground throughout.

The button is connected in such a way that when it is pushed it connects the roughly 6V from the batteries to the RAW input of the Arduino and the Vin of the printer. This configuration helps to extend battery life because there is no power drawn whatsoever when printer is turned off. It does mean, however, that you will need to hold down the button for the duration of the print.

Step 3: Coding Your Pro Mini

I have chosen to use a Pro Mini for the project because of how small it is, but this could obviously be replaced with any Arduino.

The Pro Mini is essentially coded in exactly the same way as any other Arduino. You will however, need some sort of FTDI basic converter. I used the FTDI basic from Sparkfun which is linked in the components section (should probably be in tools).

Here is a quick tutorial to help get into using Arduino Pro Minis:

This tutorial is for the 3.3V version, but in all other regards it is exactly the same.

I have included the code that we used in the BUSINESS_CARD zip folder. This code will allow you to control the printer from your Arduino. However before we can do this we need to install the necessary libraries. The necessary libraries are included in the folder Unzip this folder and install the libraries as explained here: Once your libraries are installed restart you IDE and upload your code onto the board.

To change the text you can simply replace the relevant words in the printer.println(" "); functions.

Obviously, if you would like to hand out our business cards, then don't change anything.

Step 4: Taking It to the Next Level

There are many great little add ons that I haven't got round to doing yet, which could really take this no the next level.

One idea is to make a random compliment generator. So that every time you give someone a card it prints them your details as well as a randomly generated compliment.

Another idea is to print bitmaps or pictures/logos for your card. We chose not to do this because we really like the simplest card. You can find out how to embed pictures, barcodes and QR codes from Adafruit's nifty tutorial:

Obviously this could all be housed in a nice box, but again, we prefer it raw.

1 Person Made This Project!


  • New Year, New Skill Student Design Challenge

    New Year, New Skill Student Design Challenge
  • Jewelry Challenge

    Jewelry Challenge
  • Raspberry Pi Contest

    Raspberry Pi Contest



Question 2 years ago

I would like print a barcode froma variable but it does not work
Do you know how can I do it?
long var;
printer.printBarcode(var, ITF);

Thanks in advance

Tinker Terry
Tinker Terry

Question 3 years ago

I get the impression that your device print the "business cards" on thin cash register receipt type paper. Does it print on actual thick card stock? I would like something similar to this that would print business cards and bookmarks on pvc plastic about the thickness of a credit card. Authors would love a machine like that they could use at book signings and other events.


4 years ago


i a trying to compile your codes but getting the same errors.

i have tried couple of times install-uninstall the library.

could you help me please:

/var/folders/zn/br_z3xdn505c7z6cmcg4jd8c0000gn/T//ccQJDOx1.ltrans0.ltrans.o: In function `printKings':

/Users/omac/Desktop/ekran/BUSINESS_CARD/BUSINESS_CARD.ino:33: undefined reference to `Thermal::justify(char)'

/Users/omac/Desktop/ekran/BUSINESS_CARD/BUSINESS_CARD.ino:35: undefined reference to `Thermal::setSize(char)'

/Users/omac/Desktop/ekran/BUSINESS_CARD/BUSINESS_CARD.ino:43: undefined reference to `Thermal::boldOn()'

/Users/omac/Desktop/ekran/BUSINESS_CARD/BUSINESS_CARD.ino:44: undefined reference to `Thermal::doubleHeightOn()'

/Users/omac/Desktop/ekran/BUSINESS_CARD/BUSINESS_CARD.ino:45: undefined reference to `Thermal::justify(char)'

/Users/omac/Desktop/ekran/BUSINESS_CARD/BUSINESS_CARD.ino:47: undefined reference to `Thermal::setBarcodeHeight(int)'

/Users/omac/Desktop/ekran/BUSINESS_CARD/BUSINESS_CARD.ino:48: undefined reference to `Thermal::feed(unsigned char)'

/Users/omac/Desktop/ekran/BUSINESS_CARD/BUSINESS_CARD.ino:49: undefined reference to `Thermal::feed(unsigned char)'

/Users/omac/Desktop/ekran/BUSINESS_CARD/BUSINESS_CARD.ino:52: undefined reference to `Thermal::justify(char)'

/Users/omac/Desktop/ekran/BUSINESS_CARD/BUSINESS_CARD.ino:53: undefined reference to `Thermal::boldOff()'

/Users/omac/Desktop/ekran/BUSINESS_CARD/BUSINESS_CARD.ino:54: undefined reference to `Thermal::doubleHeightOff()'

/Users/omac/Desktop/ekran/BUSINESS_CARD/BUSINESS_CARD.ino:65: undefined reference to `Thermal::feed(unsigned char)'

/Users/omac/Desktop/ekran/BUSINESS_CARD/BUSINESS_CARD.ino:66: undefined reference to `Thermal::feed(unsigned char)'

/Users/omac/Desktop/ekran/BUSINESS_CARD/BUSINESS_CARD.ino:67: undefined reference to `Thermal::feed(unsigned char)'

/Users/omac/Desktop/ekran/BUSINESS_CARD/BUSINESS_CARD.ino:68: undefined reference to `Thermal::feed(unsigned char)'

/var/folders/zn/br_z3xdn505c7z6cmcg4jd8c0000gn/T//ccQJDOx1.ltrans0.ltrans.o: In function `__static_initialization_and_destruction_0':

/Users/omac/Desktop/ekran/BUSINESS_CARD/BUSINESS_CARD.ino:15: undefined reference to `Thermal::Thermal(int, int, long)'

collect2: error: ld returned 1 exit status

exit status 1

Error compiling for board Arduino/Genuino Uno.




4 years ago

There's an instructable that uses an arduino and it translates morse code from a push button on to the computer screen. Could this print the morse code translations you think? Thanks!


6 years ago

This would be something easy to start with. I like this idea but wanted to know if there was an app that could wirelessly send something to the printer?
I work in retail, home center and give a lot of websites and this would be nice to print them on the fly by my iPhone and print along with my information.


Anywhere to get the parts in Cape Town or would I need to ship them in? Awesome idea by the way!


Reply 7 years ago on Introduction

Hi Jadon,

you can get them from!

Or buy them from sparkfun/adafruit and pay for shipping?


Reply 7 years ago on Introduction

Thanks! I'll try netram and see what I can do, if it still works out cheaper to get from Adafruit/Sparkfun I'll do that.


7 years ago on Introduction

Im a newbie here trying to make this device. I have everything as seen in your pics. Im at the point of trying to code my device but keep getting an error in compiling. What am I doing wrong?

Here is my logfile:

BUSINESS_CARD.cpp.o: In function `__static_initialization_and_destruction_0':

C:\Users\User\Desktop\arduino-1.0.5-r2/BUSINESS_CARD.ino:14: undefined reference to `Thermal::Thermal(int, int, long)'

BUSINESS_CARD.cpp.o: In function `printKings()':

C:\Users\User\Desktop\arduino-1.0.5-r2/BUSINESS_CARD.ino:32: undefined reference to `Thermal::justify(char)'

C:\Users\User\Desktop\arduino-1.0.5-r2/BUSINESS_CARD.ino:34: undefined reference to `Thermal::setSize(char)'

C:\Users\User\Desktop\arduino-1.0.5-r2/BUSINESS_CARD.ino:42: undefined reference to `Thermal::boldOn()'

C:\Users\User\Desktop\arduino-1.0.5-r2/BUSINESS_CARD.ino:43: undefined reference to `Thermal::doubleHeightOn()'

C:\Users\User\Desktop\arduino-1.0.5-r2/BUSINESS_CARD.ino:44: undefined reference to `Thermal::justify(char)'

C:\Users\User\Desktop\arduino-1.0.5-r2/BUSINESS_CARD.ino:46: undefined reference to `Thermal::setBarcodeHeight(int)'

C:\Users\User\Desktop\arduino-1.0.5-r2/BUSINESS_CARD.ino:47: undefined reference to `Thermal::feed(unsigned char)'

C:\Users\User\Desktop\arduino-1.0.5-r2/BUSINESS_CARD.ino:48: undefined reference to `Thermal::feed(unsigned char)'

C:\Users\User\Desktop\arduino-1.0.5-r2/BUSINESS_CARD.ino:51: undefined reference to `Thermal::justify(char)'

C:\Users\User\Desktop\arduino-1.0.5-r2/BUSINESS_CARD.ino:52: undefined reference to `Thermal::boldOff()'

C:\Users\User\Desktop\arduino-1.0.5-r2/BUSINESS_CARD.ino:53: undefined reference to `Thermal::doubleHeightOff()'

C:\Users\User\Desktop\arduino-1.0.5-r2/BUSINESS_CARD.ino:64: undefined reference to `Thermal::feed(unsigned char)'

C:\Users\User\Desktop\arduino-1.0.5-r2/BUSINESS_CARD.ino:65: undefined reference to `Thermal::feed(unsigned char)'

C:\Users\User\Desktop\arduino-1.0.5-r2/BUSINESS_CARD.ino:66: undefined reference to `Thermal::feed(unsigned char)'

C:\Users\User\Desktop\arduino-1.0.5-r2/BUSINESS_CARD.ino:67: undefined reference to `Thermal::feed(unsigned char)'


Reply 7 years ago on Introduction

It looks like you either haven't installed the Thermal library correctly, or you haven't unzipped the folder before you tried to upload the code.

1) Unzip all the folders that you download. The code should upload properly if you just open the BUSINESS_CARD.ino in the BUSINESS_CARD folder.

2) If this doesn't work, unzip the contents of the lib folder. Copy the two folders into you Arduino Library folder. (check out how to install a library here: Close all open versions of the IDE and start again. Should work.

3) Let me know if you still need any help.


Reply 7 years ago on Introduction

First of all, thank you sooo much for your reply.

I havent been able to try it due to the fact I had minor surgery 2 weeks ago. I will, however, be trying it this week. So, stay by your computer!!!

Thanks again!!!


7 years ago on Introduction

"which could really take this no the next level" a typo replacing the T with an N...

Do you use a Dvorak keyboard?


Would it be ok to replace the arduino with ATtiny85 to make it smaller ?

keep up the good work.


7 years ago on Introduction

Can anyone post a link or a video of this working? This is a great Idea btw


7 years ago on Introduction

Hey just wanted to let you know that you may want to add the "Thermal.cpp" file as well as I was not able to compile without it.