Color Scanner with Arduino?

I guess many people asked this before, but all questions i found so far circled arround CCDs from cameras… anyway - what i have in mind i havent found so far… would it be possible to add a imagesensor from a color scanner to an arduino and then scan a picture? I would not have to read all the data into the arduiono but would stream it to a program on a pc to assamble a picture from the rawdata…

So - would you think this is possible with an Arduino and the Sensor in the PDF? If not - would some ARM Duino do the trick?


The real question would be whether you can obtain the datasheet for the sensor used in the scanner. For instance, I’ve been trying to obtain information for a simple 16x2 LCD and control panel interface that apparently uses I2C for communications, that was originally used in a particular model Lexmark printer. Lexmark isn’t giving any information to me, Optrex (LCD maker) has been helpful, but at the same time they may be “clamming up” due to contracts with Lexmark, Philips Semiconductor (maker of an interface chip in the device - now known as NXC) has said the chip is obsolete and they don’t have any information on it (which stinks, because I think the chip used is a form of I2C GPIO or similar device).

You may or may not face a similar situation; if you have the scanner in question, and it works, it may be easier to reverse engineer it (I’ve thought about that in my case; to do a man-in-the-middle attack on it - but it isn’t worth it, I paid $4.00 for the LCD, and the printer that uses it cost about $200.00 used).

It might be better to instead find a similar sized, but contemporary and in-production, linear image sensor array (which is what the device is called in a scanner). These devices are essentially a single-line of pixels CCD imaging device, which you supply a clock signal, an “enable” signal, and it outputs an analog voltage on a third pin. You pulse the “enable”, and it charges the “capacitors” in the CCD, then you use the clock and the analog pin to clock out the voltages; a couple of digital i/o pins on the Arduino and one of the analog pins, and you could do it.

One other problem, though (sucks, doesn’t it?) - I was just looking at sensors like these; I found a simple 128 pixel gray scale imager for about $20.00 - from the datasheet, it was easy to interface with - except it used a ball grid array for soldering (BGA package). You can’t hand-solder these, and even homebrew-reflow is iffy at best; it might work fine, it might not (you would still need to etch your own board, of course). In production environments, they have to use x-ray machines to inspect the first few boards off the line to verify that the solder joints are good and flowed right. I don’t have an x-ray machine in my house…

So - in theory - yes, you can do this, and you can probably do it with an Arduino; I had in mind the idea of using such a linear sensor for laser distance measurement. While your idea is more complex (scanning the data, streaming it, reassembling it on the PC and making an image - not an easy task, but doable, obviously), it will essentially run into the same issues. I am not sure what the solution would be to get around them, though.

Good luck.


on canons there is an LED array or a Xenon lamp that is used to illuminate the document and the reflection is processed by the ccd. The filters are mostly software anymore and sometimes they are built into the contact sensor and sometimes into the main controller.

I would say to start off with something easy like an old fax CIS unit where resolution was not all the great and it was only black and white first. Then once you have that then work your way up to full color 1200 DPI color units. Most interfaces do exactly what you described. Twain for example just passes the informatin to the driver to process. Some scanners can/will produce a pdf or tiff but most just pass along the raw data to the computer to process. There is hardly anything to them.