I am interested in hacking a printer so that every time someone makes a certain noise (i was thinking a hum, or a singing voice) a picture is printed/dispensed. I currently have an Arduino Uno and know the basics of using a photocell and a relay but that is about it. I wouldn't mind incorporating a relay into the piece. What materials do I need for this? Any tips would be greatly appreciated! Thanks
What sort of picture? B&W or colour? How big (pixels)?
What sort of printer? Inkjet, laser, thermal?
Until you define your objectives more clearly there’s not much help anyone can give you.
Inkjet and any kind of picture on photo paper would do. I am more interested in the action itself.
I think the key question is where does the picture data come from?
An Arduino Uno or Mega doesn’t have enough RAM to store a decent resolution image.
Some printers can take SD cards straight from cameras. If you have that sort of printer the question might resolve itself into how you make the printer print a picture from one of those cards. Perhaps it would be as simple as getting the Arduino to control a servo to press a button on the printer.
Another possibility is to have an SD card connected to the Arduino (perhaps with a suitable shield) but I have no idea how you would transfer the picture to the printer. The Uno and Mega can’t act as USB hosts and even if they could you would probably have to know the protocol for sending image data to the printer.
I think the simplest approach would be to get a small PC running an OS that has supports for the printer you're using, and control the printing on the PC. The PC would also be the best place to do sound recognition. There are quite a few small format and inexpensive PCs (RPi is the cheapest one I know of).
The printer I have is pretty advanced. It is completely wireless and is able to get a wifi connection. It only needs a power source to function. I am still looking to use arduino with this project, but I don’t know how to go about the sound recognition thing.
I really do appreciate all your help.
Write a sketch that will make the picture print when a button is pressed.
When that works, figure out how to use the output from a microphone and amplifier to replace the button. I reckon that is the easy part.
Driving a modern printer is pretty complicated and if you try to do it from scratch you will have a massive job. It is far more sensible to control the printer from a PC which has all the necessary network protocol stacks and drivers available. There are some tiny and inexpensive PCs available and you may find it's not much bigger or more expensive than an Arduino - you could even use one of the hybrid Arduinos that include a tiny PC if you want, although I don't actually see any need for the Arduino part of the hybrid at all in this case. The PC is also the best place to do the sound recognition since these will have support for audio capture, loads of memory and processing power for recognition, and probably even have built-in or readily available support for sound recognition and voice recognition. A microcontroller is handy for interacting with simple devices but it's not well suited for complicated and data intensive processing - for that you want a computer.