Simple and Impressive Business Card Printer





Introduction: Simple and Impressive Business Card Printer

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.


  • Made it, and it work...-oklahomafire

    oklahomafire made it!


  • Epilog Challenge 9

    Epilog Challenge 9
  • Sew Warm Contest 2018

    Sew Warm Contest 2018
  • Minecraft Challenge 2018

    Minecraft Challenge 2018

We have a be nice policy.
Please be positive and constructive.





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.



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!

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!

Hi Jadon,

you can get them from!

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

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.

it would be great if you/ can make it wireless

This could use a arduino uno as well right?

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)'