Over the last year, [James] has been a part of a few commercial projects that used a thermal receipt printer as part of the build. Something must have cracked in his mind, because [James] spent a lot of time developing a way to print customized content on receipt printers, connecting these printers to the Internet, and sharing content with other Internet-connected receipt printers. Even [James] doesn’t know why he spent so much time on this project; [James] figured he was bound to find something interesting. We’ve got to commend him for that.
[James] had been aware of the Adafruit Thermal Printer Library, but this library is a little kludgy. Text is the Adafruit Library’s forte, and while graphics and non-ASCII characters are possible they’re certainly not easy to print with the existing libraries. With his current system based on HTML, CSS, and Javascript, [James] has a really easy way to print anything he can put on a webpage on receipt paper.
Getting his receipt printer onto the Internet had its own challenges. After wrangling with the Arduino Ethernet library through the month of February, [James] realized larger prints (about 15cm of paper) would fail inexplicably. To get around this, [James] wrote an HTTP client for the Arduino that would fetch data, put it on the SD card, and then start printing.
Right now, [James]’ project is a polished as anyone could hope. We’re a bit concerned – although we completely understand – that he could get sucked into the black hole of pointless development of receipt printer software so easily. All was not for naught, though; now anyone can make very professional-looking prints on receipt paper very easily.
Hey cool I can not scan in some of my old toll receipts and change the dates and get a few more bucks on my expense reports.
Troll receipts 😉
Fraud much?
This is a great project, I have a couple receipt printers gathering dust in the garage, now I can put them to some use.
“We’re a bit concerned […] that he could get sucked into the black hole of pointless development of receipt printer software so easily.” Since when do the editors criticize hacks as pointless? Isn’t that supposed to be the cynical readers’ job?
Maybe they were trying to make a pre-emptive strike.
It would be nice to be able to add content (e.g. “Thank You!”, signature, ASCII graphics, border, hitleresque doodle) to an existing POS printout. You know, to personalize the receipt you are handing your customer.
Depending on how easy this is to use / integrate, I may have a use for it.
Hey I got it.
Use it during Halloween,
set it up so when the little buggers ring my door bell it prints out a picture of a candy bar. LOL
So it works on one specific thermal printer.
Still, it’s impressive getting even just that one to work as receipt printers, every single one of them, suck.
They all require different drivers, weird libraries, restricted fonts, gah.
And yes, @KG4MXV, if you work with POS hardware you can skip the ‘scan it in’ part and simply run up you own receipts to replace those you’d ‘lost’.
I’ve only worked with 3 different thermal printers, but the basic concept seems to be pretty straight forward:
– You have one shift register that holds the dot information for the head
– The head is divided up into units of usually 64 dots, so you can reduce the power drain, each unit is activated with its individual strobe line
– The paper feed is usually driven with a stepper motor, the coils have to be connected to a suitable driver
– There are head up / down, temperature and paper sensors, those can usually be read out with a suitable resistor, according to the datasheet.
Of course if you are looking for maximum printing speed, you need to look at the head temperature and how many dots are actually active. But this is also pretty similiar for all printers i’ve used so far.
…and to power those printers you might want to build your own nuclear power station.
First, dig a hole in you backyard and pull out some uranium.
Then…
Hey Tony,
I’ve only written the software for a single printer, but it’s relatively trivial to add other printers. As long as you are happy to write the code that turns an array of bits into the serial commands your printer needs, or parse the very simple alternative bitmap format on your Arduino, you can use any printer at all.
I’m going to add a page to the wiki about adding other printers that should hopefully clarify this more.
If you’ve got any other questions, give us a shout at printer@gofreerange.com!
Yeah, it’s not particular difficult, just tedious.
It’s like back on the good old days of DOS and dot-matrix printers, writing code to handle all the different escape codes just so you can bold a heading. I can’t say I’m keen to go back.
The last POS printer I needed to interface had a few driver bugs, when I asked how the developer was going I was told he committed suicide by shooting himself in the head. There’s a response you rarely get. I wrote my own after that, it didn’t seem right to ask when the new guy was due to start.
Some printers don’t have a bitmap mode, or rather it’s either undocumented or you can’t get the documentation – that’s the main hurdle.
watchout for the BPA
The amount of BPA in the paper is pretty low. As long as you wash your hands afterwards, especially before eating, you should be fine.
If you’re really worried about it, it is possible to buy BPA free paper now, too.
What joe said.
Wash your hands after handling that stuff. Better yet, wear gloves!
the thermal paper adafruit stocks is BPA free
BPA easily passes through skin.http://www.usnews.com/science/articles/2010/11/02/skin-is-no-barrier-to-bpa-study-shows
The BPA free thermal papers contain BPS, aka diphenyl sulfone. Which is similar to BPA.
Back about a decade I was doing POS installs. We used Eltron printers (I think they’re Epson now). They had escape codes to allow bit programming.
We used the same software at our company so I programmed the company logo and bar codes on it.
From the site:
Remember the game the was played on a printer?
Sudoku? god that was popular in … 11th grade 😛
But why does he want to print a picture of Hitler?
because everyone knows Hitler invented the ardiono header spacing!
duh
I thought it was Mussolini.
very nice! i love thermal printers … i made 2 months back an mbed network connected that prints my transcribed Google voice voicemails from my droid and the main problem i had was conveying the strength of the transcription and without the ability to “grey” this may help make a symbol for that!
I have 2 Epson TM-u88III thermal printers with the PS-180 power supplies I need to get rid of at work. Anyone want them for the price of shipping? You don’t have to take both of them…
MEMEME
biozz@biozz.net < email me
Here is my try > http://www.youtube.com/watch?v=_bJ9zX3z7lI
Godwin’s Law. That is all.