Introduction: Simple and Impressive Business Card Printer

Picture of 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

Picture of 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

Picture of 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

Picture of 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.


herneise (author)2017-09-25


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.



HardlyHumanFX (author)2017-02-17

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!

YellowZx5 (author)2015-12-05

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.

JadonTheWolff (author)2015-01-14

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

Thingking (author)JadonTheWolff2015-01-14

Hi Jadon,

you can get them from!

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

JadonTheWolff (author)Thingking2015-01-14

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.

Idrispo (author)2014-12-09

it would be great if you/ can make it wireless

Kante Tech (author)2014-08-14

This could use a arduino uno as well right?

Thingking (author)Kante Tech2014-10-29


brandx34 (author)2014-06-02

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

Thingking (author)brandx342014-06-02

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.

brandx34 (author)Thingking2014-06-16

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!!!

Thingking (author)brandx342014-06-16

Did that help?

JRPeyesatsne (author)2014-04-07

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

Do you use a Dvorak keyboard?

Ploopy (author)2014-04-03


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

keep up the good work.

anchormansam (author)2014-04-02

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

MrShambles (author)2014-04-02

Yo paul! Nice one!


oklahomafire made it! (author)2014-03-26

Made it, and it works great!! Thanks for the idea!!!

Thingking (author)oklahomafire2014-03-27

This is so great! Well done for getting it to work! It looks really great! Hope it brings prosperity and business!

oklahomafire (author)2014-03-25

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.

Thingking (author)oklahomafire2014-03-26

Thanks for the heads up! My mistake, amazing that you are the first person to notice

oklahomafire (author)Thingking2014-03-26

Hey, no problem. Actually in the process of building it. I'm having trouble getting windows to see the FTDI. Looking to get all the parts in an Altoids Can.

KwartzKitten (author)2014-03-21

This is a good idea, however I keep thinking that something that's flimsy like a reciept may get accidentally thrown away...

synthdust (author)KwartzKitten2014-03-21

One could print out then use this:

KwartzKitten (author)synthdust2014-03-25

A solid solution, although possibly bulky. This is still a clever idea; something you need to get ahead in the business world!

curtjen (author)synthdust2014-03-22

Not a bad idea :) The printing of the business card and laminating them like this I think would really make them stand out from the rest.

Skalblaka (author)2014-03-20

Cool idea. You might try removing the case of your thermal printer and breaking it down to something even more minimal.

Thingking (author)Skalblaka2014-03-21

Thats a really great idea! I'm gonna try that next! The main constraint in terms of size is probably the paper roll though...

astral_mage (author)Thingking2014-03-24

but u can just re-roll the paper in to smaller cartridges as well. just remember to refill b4 u go out 4 the day.

Skalblaka (author)Thingking2014-03-22

Businesses cards require little paper. If you had an empty spool or better yet make a small diameter spool and load it with just a few feet of thermal paper. Ideally you would be able to print out a few dozen cards. It's not like you need to print out cards everyday.

Thingking (author)Skalblaka2014-03-24

Good point,

will try that out!

Thanks Skalblaka!

al_packer (author)2014-03-21

Just remember that thermal paper contains BPA, and shouldn't be kept in your shirt pocket or against your skin.

MrE (author)al_packer2014-03-23

Not all thermal paper is bpa. In fact now they have new bpa free you can buy.

DrRolfG (author)2014-03-21

nice work!

craftyv (author)2014-03-20

Oh! Oh! I want one. Such a good idea. Well done even I could "get" it but unfortunately no way to do so. It's set me thinking though. Great.

mrbonine (author)2014-03-20

Memorable is key for business cards. I've seen lots and the more memorable ones were printed on unusual materials, Tyvek, silk-covered paper, various flexible plastics. I don't remember seeing one etched or annodized on metal, but Aluminum would be cool. The other thing about thermal paper besides fading is that leaving them anywhere warm turns then dark, that is the same color as the print, usually making any printing unreadable. I've seen thermal paper with already ink printed reverse used for receipts, but the cost work likely be high on small quantities. You could leave the face ready to print with your name and phone/email printed on the back. Add a touch of insurance to your engenious device.

1lpfan (author)2014-03-20

This seems like a really cool idea. It gets old having to write down all my contact info. Finding a pencil and a scrap of paper could be eliminated with this.

oilitright (author)2014-03-20

Has thermal parinting paper improved?

My past experience with thermal printing is that it doesn't stay on the paper very well. The printing fades away to nothing in a relatively short amount of time.

Jake Maverick (author)oilitright2014-03-20

that's why they use them for 'guarantees/ warranties'... :-)

DDW_OR (author)2014-03-20

maybe have the QR code go to a hidden, non public, page with more personal business information.

dan3008 (author)2014-03-18

Maybe a switch instead of a button? that way you switch it on, and let it print, then switch it off when youre done.

Thingking (author)dan30082014-03-19

I did try that and actually its for my own sake. I always forget to turn it off and then the batteries die within a few days... If you are more dilligent then me, totally put a switch there!

DDW_OR (author)Thingking2014-03-20

add a SSR ( Solid State Relay ). adjust the program to hold a control line on once the button is pressed. then off once the printing is done. the control line will turn the SSR on and off. the SSR will be in parallel with the switch.

dan3008 (author)Thingking2014-03-19

ah right... that makes sense. Didnt think of that actually lol.

so its a trade off between convenience and battery life. Would cost more (and be bigger), but a timer button is an option too i suppose. lol

sol-bear (author)dan30082014-03-20

Why not use a button and a timer?

steveastrouk (author)2014-03-20

In some parts of the world, particularly China, Korea and Japan, the business card is handed over and accepted with something that looks like reverence. It is examined closely and then carefully placed in your wallet or purse - slapping one off like a bus ticket may well not give the right impression....

DDW_OR (author)steveastrouk2014-03-20

I agree. when i went to Hong Kong I got corrected ( in private ) by my friend when i did not follow the protocol when his boss handed me his business card.

alcurb (author)2014-03-20

Clearly a clever idea and fun to play with, but IMHO it is not very practical as many of us are always throwing away receipts and the BC might be accidentally discarded.

MorNuN (author)2014-03-18

I think this is a great idea, but I can see one big problem.
The thermal paper tends to disappear within time, and someone may look at a blank paper in search of a company or person to work with.

waldolc (author)MorNuN2014-03-19

The benefit of a business card is that people remember you and contact you. If they truly want to invest time with you, they will remembered the information no matter if the card still exists or not. One of the most impressive I've ever seen were printed on a delicate crystal like card: Which meant that it would break quite easily; so you had to make an effort to either transfer the information or at least remember it. This thermal paper and that crystal card are sheer genius.

About This Instructable




Bio: We are a designer maker agency based in Cape Town. We fuse traditional industrial design with electronics. We run Arduino courses, a maker library and ... More »
More by Thingking:Simple and Impressive Business Card Printer
Add instructable to: