Connecting thermal printer with AVR
This is actually a thermal printhead, not a printer. Connecting a printer would be much easier; just send it some AT commands and it will print your data. In this case the author had to implement "font" in firmware, control two servo motors and the burning dots on the printhead itself.
The microcontroller of choice is AVR with Arduino bootloader. The burning dots (heating elements) are controlled with ULN2801A darlington transistors array which is in turn controlled by SN74164 shift register to save many IO pins. See the video of the printer in action after the break.
Quote: "I built a direct thermal printer controlled by an Arduino board around the Panasonic EPT-1019HW2 thermal printer module. This is a reimplementation of my embedded systems course final project. It consumes 2 inches wide thermal paper, can print 96 points in a row and features a 6x8 points font."