Hello all, heres my second shot at an Instructable.. be kind..
So the local Make:NYC meeting had had a badge contest for its second meeting.. (link here), the gist of the competition is to make a wearable nametag/badge of some sort, of some materials, that could be reasonably accepted as a "badge"..
this Instructable is how I built mine for the contest.. pretty much everything that went into the badge was something I had around my workshop from previous projects, and obviously the design can be pushed to do more interesting things.
but I'll leave that up to you.
Step 1: Get Ahold of a Gameboy Printer and Some Paper!
So while i had a printer sitting around in my junk toy box from a failed project a couple years ago, you probably don't you'll need to get one of these from ebay, chances are you can find one for about 10-15 bucks..
the real trick is getting the paper, while you can also find this on ebay, your looking for something that has never been opened, hasnt been exposed to light ect... as it turns out the fancy thermal printing paper the gameboy uses doesnt survive well with time.. and some colors of paper seem to last better then others, but almost every roll will give you *something*.
Step 2: Disassembly!
taking stuff apart as a kid was always my favorite part of electronics ownership.. this toy was no different...
the gameboy printer itself has 6 or 7 security screws that have to be removed to seperate the main board from the plastic.. you'll need to open the battery door to see the last couple screws..
now.. while you might have a better security bit set then i have, i couldnt get the damn bits to fit in the gameboy plastic screw area.. so i turned to my next favorite disassembly tool.. the drill press..
i popped in a bit that had a diameter that was somewhere between the screw-heads diameter, and the screw shafts diameter.. then just drill out the heads which should come away from the threaded shaft pretty easily..
Step 3: Removing the Thermal Printer, Salvaging the Sockets
once youve got the case open you'll see theres just one main board with everything on it, two screws will remove quickly, then once you flip the board over theres two more screws holding the printer to the pcb; remove these and carefully remove the two ribbon cables attched to the printer from their sockes connecting it to the main board.
once thats done we'll want to recover the sockets that connected the ribbon cables, otherwise its a pain in the ass to work with these type of cables, though it is possible with a low temperature soldering iron.. too high and you will rip the trace right off the the plastic backing.
the the black and the white socket can be removed pretty easily with desoldering braid and/or a desoldering bulb.. just try not to overheat the sockets when removing them so that you dont destroy them.
Step 4: Makin' Some Cables
so, while you dont /really/ need to go through this, i did it because it made my life a little easier in prototyping..
to make some cables to use my printer (and make using it with my breadboard easier) i sacrificed an old 40 pin ide cable.. and soldered a pin header to one end, and a socket to the other end.. this is something i repeat a couple times in this project, so i'll only do this once..
for the print head cable, you'll need 8 conductors seperated from the rest of the cable, strip and tin all the conductors on either end with solder.
once your done that, you might want to use a meter to figure out how the printer is wired.. in the case the two pins all the way at the one end of the connector is a common lead.. and every other pin (there should be 16 others) is a 100 ohm resistor.. later on when we attach our wires to this, we will be attaching one wire for every two pins on this socket.. we lose resolution in the pinter, but it makes the circuit easy..
if you start soldering your tinned ribbon cable to your socket you'll notice that theres two pins left at the end that we didnt create a lead for... yep.. we just dont connect it..
when your done i find it makes things last longer if i create a plastic casing for the connectors pins using hot glue.. i just make sure to work it arround all the pins, covering up any exposed conductor.
you'll do the exact same thing for the motor/sensor connector, except here we're only interested in 4 of the pins.. of which two are grounded..
Step 5: Mounting the Printer
before i can work with the printer i need to mount it in something thats usable..
so i took a small piece of perf board and hotglued the bottom of the printer to it, making sure that no glue squeezed out of the sides will gunk anything up, i then soldered the motor control socket to this board since the lead on this cable is very short, and only really fits well in one position
next up is mounting the print head connector, this one is a little more tricky.. you need to make sure that the ribbon cable isnt going to be stressed as the head moves.. angles seem to work well, as i have my connector mounted at 45 degrees..
and when i say "mount" i mean hot glue the piss out of it.
when your done you'll have a printer module ready for play.
Step 6: Breadboard Prototype
as simple as this build is.. i dont want to solder more then i have to.. and more importantly, i dont want to desolder if i dont have to...
so to save some of the pain we prototype the circuit using a breadboard, and get all the code working.
Step 7: Code
so again i wanted to make this *fast*, so like a good coder, i reused some old code..
first we need a font.. i know it might not seem obvious, but this little printer is just too dumb to have a font of its own..
so i borrowed a font image from DOS ive kept around since 97-98, and started right in coding..
the principle is simple, run through the rows of each character at a partiular timing and tada, letters appear!.. but sadly when i first tried this, i instantly found i couldnt fit the full font in the damn basic stamp, so i wrote a little C program to help me generate the needed pbasic code. it takes a representation of what i want my badge to look like, and builds a list of the characters used, then builds a jump table of just those letters (taking pbasics-select-only-allows-16-cases-limit into account)
heres the code currently running in my badge:
Step 8: Assembly
alright, at this point everything seems to work, code cause things to print.. but now you need to assemble it into something that you can wear around your neck..
first we'll start with a standard radio shack perf board, we'll glue the tab you left on the printer assembly to the new perf board(you did remember to leave a tab right?)
Step 9: Base Board Assembly
once youve got the pinter attached to the larger perf board, you'll need to cut a hole that will be a place to mount the paper roll..
to do this i traced out a square that was reasonably larger then a full paper roll, then cutt the square out of the perf board using a dremmel, the cut for this ends up cutting both of the perfboards that are glued together.. file the sides a little to remove any rough spots left from the perf board holes.. these will just catch the paper.
when im done i add some more hot glue around the edges of the joined boards just to add a little more strength..
the last construction step before we start getting electronic is to add a woooden dowel for our roll to sit on.. to do this take a couple 5 inch pieces of stripped copper wire and wrap it around the dowel a frew times, you'll have a coil left that you can solder to the board that will act like a dowel holder..
Step 10: Sticking on Some Parts, Darlington Shift Register
this is one of those "shortcut" moments.. i found that a lot of this project can be done on perf-board without running a bajillion wires... one of the ways i did this was by placing the darligton array and the shift register together on the board in such a way as adjacent pins can connect with a solder bridge..
after that the print-head cable can be attached right next to the darlington array leaving pins 9 and 10 empty for the motor control pin, which is then positioned close by.
Step 11: Make the Cover Board and Seperator Screws
the cover board is an identical type of perf-board board as the base board, the only components on here are a single resistor, led, and a switch.. this switch will be our "omfg print!" button.. which are used to start the print, and you know.. an led.. because its an LED..
next well need some rubber tubing, i bought my at the local home depot.. its nothing special, just large enough to fit over the screw threads to act as a seperater between boards, i cut mine to slightly longer then 1/2 inch, but the "right size" is whatever lets the paper roll spin freely enough to not jam during printing.
while i'm here i might as well cut my screws to length using the screw cutter on my crimpers, of course you can cut the screws with a dremmel or something, but remember to thread the nut on before cutting otherwise getting those things on there will suck.
next wire the cover board up and add a 3 pin connector for it on the base board, just a ground line, and two pins that go straight back to the basic stamp.
Step 12: Chips and Interconnects
ok, nothing fancy here, just wire up the rest of the circuit as given in the schematic..
your biggest challeng here is running the ground and power lines around the board.
Step 13: Final Assembly
so now everything is wire up, we stick the two layers together like a sandwich, now might be a good time to put your paper roll on..
generally threading the paper into the slot is a bit of a pain, just keep pushing the print button and eventually it catches..
also make sure the roll come from the under side of the badge into the printer such that the paper gets dragged over the bottom edge of the perf-board and right into the printer..
if everything is good put screw the nuts down untill the tube squishes a bit and gives you a slightly flexible but rigid body..
i ended up just attaching the lanyard that i got from blackhat, it had a clip on both ends and worked pretty well handling the uneven weight of the printer around my neck..
Step 14: Done
done! so now your printing right? oh.. your just reading this.. ahh well..
some obvious improvements that you could make to this design:
1) use the full 16 bits of the head rather then just 7
2) use pwm to to adjust the darkness of the print with software
3) add a serial eeprom to hold the full characterset, and custom glyphs
4) using the speed sensor on the printer for better print quality