Welcome

Mails about this

Joshua Wise (joshua@joshuawise.com) mailed me about an optical sensor chip with 'A2050' on it. Seems the chip is compatible with the A2051, which in itself isn't directly compatible with the ADNS2610, but the basic idea of reading the pixels of the CCD is the same. Joshua created a program for Linux to read out the sensor; it's here. Another note: Some mice have the Vcc of the sensor switched by the microcontroller; if you try this hack with such a mouse you'll need to connect the Vcc directly to the sensor chip.

Carsten Gross mailed me:
Hi,

I'm working on an university project (http://www.siski.de/~carsten/diplomarbeit.html) and I'm using your webpage as base for my idea to use an optical mouse as motion sensor for a model car.

I removed the original optics of the mouse and replaced it with a lens with f=4,6 mm. To check wether the image of the world (as seen by the mouse sensor) is focussed I'm using a modified Linux version of the software downloadable on your page: as my mouse has a ADNS-2610 (and not one of the older chips).

Please see the attachment for a modified version of the software by Joshua Wise now running with the ADNS-2610 and Linux.

Using the different optics the focus is now near infinity. This way the sensor can be mounted at a safe place in the model car. Perhaps it is necessary to add specles on the floor ;-)

The source of the software is downloadable here.
He mailed me a second time:
Im the meantime we built our own board with the sensor chip here and use it as movement and direction detector.

Please see this for the images of the sensor board and the lens. I connect the synchronous serial port of the ADNS-2610 with some simple "glue" logic to the SPI interface of the Atmel AT91RM9200. This way I can use the Linux-kernels and microcontrollers hardware support for reading the data from the motion sensor.

The lens is adjustable and the focus can be adjusted to generate a sharp image and the maximum "quality" value in register 4.

EaterOfPies mailed me: "This also works with A1610 / ADNS-1610 sensor IC. It appears to be pin compatible but i couldn't find any documentation on it."

I have received several questions about using this device as a barcode-scanner. Yes, that would probably be possible, but one would need the right software for that, and I'm not interested in writing it. If you think it's a good idea; knock yourself out; the sourcecode of my program is provided in the zip-file :)

If you used this information or software in any useful project, I wouldn't mind being mailed about it. One thing: mails containing not much more than 'It doesn't work here, help!' will be deleted.

« Prev 2 

83 comments

Andre wrote at 31 Mar 2017, 5.03:

Had an intriguing idea: for those times you need "autoland" because your drone decided to lose comms thanks to interference this would work well. Have it also detect low battery and if comms drops out it cuts motors to 30% and begins a slow descent a bit like a lunar lander, with ground detector to shut off motors completely.

Jasmeet wrote at 26 Oct 2016, 18.07:

Can this mouse be used for optical character recognition(OCR) for the purpose of identifying printed text?

Vignesh.k wrote at 14 Jul 2015, 9.00:

My mouse is having a different sensor BCE076B2 a 8 pin chip please help me ail me at vignesh2153@gmail.com Help me guys need ur help soon

Vignesh.k wrote at 14 Jul 2015, 8.55:

Im new to this but want to start with this kind of project please assist me.how to start up with this project guys!!!??

Fabian31415 wrote at 26 Jun 2014, 20.09:

Hi! how many milliseconds does it take to read the complete picture from the sensor? I mean, 324 values are quite a bit of data...

mechatronicstudent wrote at 2 Dec 2013, 15.39:

Hi I have a problem,need for your help. I want to use of Optical mouse to measure distance. The distance is dominated to an around 3*3cm area and I want to use of Optical mouse to measure and register alterations of distance. I could get dimensions of mouse position in C (with GetCursorPos function), but now I have problems with scaling of real dimension and founded dimension. Please help me.

benor wrote at 5 Sep 2013, 14.27:

Hi @all. Google is your Friend! I know it is not quite easy to find this Sensor. Mouse of Logitech - M-BT58 named "Skipper" would help you. On the other Hand google for the Sensor. It is possible to buy this Sensor in Elektronic-Shops in Germany. But the newer Sensors (with Picture Transfer) came nowadays from Taiwan and nowhere else in the world. This dismisses!

Cosmin wrote at 14 May 2013, 16.06:

Hi Ed. Can you tell me please, as example a mouse/or more which has/have ADNS2610? I opened a couple of mouses, but was not so lucky to find this kind of sensor. Thaks a lot.

RISHABH AGRAWAL wrote at 18 Mar 2013, 13.17:

hey ed i want to make optical mouse cam but i've no more idea about this how and what to do so please guide me

SarahC wrote at 25 Mar 2012, 6.15:

Hi Ed! On the previous page, you say to cut the wires to connect it up to a serial plug. If I do that, the mouse will no longer update the computer with its position information. I didn\'t see the scanner software mention that it had any motion-flow algorithms, so I imagine it was doing it the easier way, and sending the output of the CCD as pixel information to the position on the screen the OS mouse was at? If that\'s the case, doesn\'t that mean the SCK- and SDIO-pins should be just soldered to, so the socket is plugged in parallel to the normal tracks? If so, doesn\'t the voltage drop cause problems? Thanks for a very interesting hack! Sarah@Untamed.Co.UK

ed wrote at 19 Feb 2012, 20.17:

by the way, before you ask for software, look at the open source linux usb mouse libs. its already done for you. left a bit...up a bit...down....intercept

ed wrote at 19 Feb 2012, 20.14:

this is interesting, but for those posting about obtaining the image for tracking and guidance purposes, you may be best leaving the scanning and image processing to the very capable hardware inside the chip. optical mods to infinity, maybe with an electronic variable optical zoom lens, could be the key to ultra low cost guidance systems for small drones and missiles. simply using the x,y info from a mouse usb with infinity focus will give enough data to lock a missile onto a moving target in a clear, or at least low contrast sky. infra red sensitivity is good enough to read a turbojets heat signature for a night lock even more secure. these chips contain pretty much the same tech as top of the range weapons systems of 20 years ago but a less than a dollar a piece.with the current exploitation of off the shelf technology, it would be little wonder if mouse tech was found in guided missiles less than the size of a rubber bullet. certainly the electronics and power would weigh in at less than 10 grams

Videogamer wrote at 28 Jan 2012, 23.47:

Can you show how you connected the paralell cable? Did you use some kind of solder to the circuit board of the mouse? Please explain.

Arun wrote at 10 Sep 2011, 7.41:

Hi man...i am arun...actually m doin a project on optical mouse.. my idea is to use optical sensor as the sensor in a joystick.. wat i need is that i need to interface two USB MICE and get X and Y coordinates from that seperately eg : x1 y1 and x2 y2... it would be really helpful if u culd suggest me an idea to interface usb optical mouse and get X and Y from it.. please mail me at arunk.beece@gmail.com Thanks

jkCBWPnet wrote at 28 Aug 2011, 15.51:

disregard my post under this one as it refers to the very first link in the blog

jkCBWPnet wrote at 28 Aug 2011, 15.38:

an update to the agilent 5988-5774EN.pdf datasheet... it is now located @ http://www.avagotech.com/docs/AV02-1184EN

Mr. Apple wrote at 17 Jul 2011, 14.42:

Hello, I saw your awsome work with the mouse scaner, but, I have a question, when you say \"diode\", what kind of diode are you meaning?Led Diode o diode only? What model of diode are you meaning? email: qopsinonstudios_ct@hotmail.com thanks

Pyrofer wrote at 11 Jul 2011, 12.11:

That post about frame rate was quite interesting! I have been meaning to do this hack for ages, I just found another IC that seems to do the job, \'A2051\', there are also others with serial out. My plan is to use it to read the last 2 or 3 digits of the LCD on my gas meter for allow me to track gas usage... A completely non-invasive method that is 100% accurate for energy monitoring purposes. The hard part is OCR on the image in a micro controller...

Alex wrote at 26 Apr 2011, 10.11:

Mitsumi PS/2 mouse have that sensor. Model ECM-S6702. I make that scheme today. It is nice, but image transfer to computer is too slow.

Diego wrote at 10 Mar 2011, 0.39:

Do you can put the brand and model of mouse that were used? I opened five mouses and none of them has the ADNS2610. I would like to do the experiement with a mouse that was tested. Thanks a lot.

Diego wrote at 10 Mar 2011, 0.38:

Do you can put the brand and model of mouse that were used? I opened five mouses and none of them has the ADNS2610. I would like to do the experiement with a mouse that was tested. Thanks a lot.

Peter wrote at 26 Jan 2011, 22.03:

Hallo, entschuldige, ich spreche leider kein englisch. Aber ich finde Deine Idee mit der Maus sehr toll! Muss ich in den nächsten Tagen unbedingt mal ausprobieren. Ich programmiere ein bisschen in Visual Basic 6,0 und freue mich daher ganz besonders über Dein VB-Programm, insbesondere über die mir bis dahin unbekannte API Funktion. Man lernt ja nie aus :-) Nochmals vielen Dank für Deine Arbeit und viele Grüße aus Deutschland. Peter Übrigens, ich bin über Wikipedia: http://de.wikipedia.org/wiki/Maus_(Computer) auf Deine Seite gestoßen.

Ikem wrote at 18 Jan 2011, 0.06:

Would be cool if you can use the mouse as scanner and mouse at the same time.

Gnyaneshwar, GSM, India wrote at 1 Jul 2010, 15.30:

Hi, I would like to know how get captured the scanned images from optical mouse in to VB.. Plz let me know plz send me mail: gnyanu@in.com

DIZA wrote at 19 Jun 2010, 3.29:

Hi, its working.. i have used LOGITECH: M-BT96a and its running well.. thanks to mark_mmjq.. i really respect you sir.

A.N.other wrote at 4 Jun 2010, 14.46:

I\'ve tried this. I\'m using a USB optical mouse (microsoft intelimouse), on a laptop running windows. I\'m not sure where one of the files should be.

GAURAV wrote at 29 Mar 2010, 16.28:

hi need some help on spi interface of adns2610 with microcontroller how did u achieve 250ns of hold of LSB address in read cycle plz help my mail address is gauravy06@gmail.com

Anonymous wrote at 10 Mar 2010, 4.42:

If anyone has a question about the frame rate of that method it is because although the internal image processor has access to the image at 1500 fps the chip was never intended to send that image across the serial line in real operation, that is more or less a debug feature and when you request the raw image it doesn\\\'t just store the current image and send it to you, it actually sends you the first pixel of the first image then the second pixel of the next image and so on and so forth. what this means is that its 18^2 times slower than the actual frame rate which is seen by 1500/18^2 = 4.629 repeating which is pretty close to the frame rate you observed. And now that I\\\'ve typed all of that I finally looked up at the post date, oh well maybe someone will find my rantings useful. I\\\'m actually thinking about modifying one of these things to mount to the underside of a robot that\\\'ll travel at around 10 fps so I figure if I raise it 12x its designed height and focus it then it\\\'ll work in counts per foot instead of counts per inch and handle the higher speed.

John Draice wrote at 29 Dec 2009, 2.42:

Alarming information you have heere. Acknowledgment for sharing.

Mr. LirDraice wrote at 27 Dec 2009, 5.30:

Great post! Just wanted to let you apperecive you accept a newsubscriberr- me!

AHT wrote at 19 Dec 2009, 8.24:

good issue thanks

peter wrote at 1 Nov 2009, 2.15:

hi,I wonder if we use the usb cable,how can we do it,thank you. my email: notbaidu@gmail.com

Michael wrote at 3 Oct 2009, 18.50:

I've got a Razer Copperhead ( http://www.razerzone.com/gaming-mice/razer-copperhead/ ) and it's got a 2000 dpi laser sensor, I'd love to see what it can see, it has upgradeable firmware too so it might be possible to hack its software. I'll have to crack mine open when I get back from my travels and see what kind of guts it has...

sunny wrote at 11 Jun 2009, 1.19:

hi, i am working on uni project which is titled as "using an optical mouse image sensor as an electronic microscope". i am thinking of using ccd image sensor. pl mail me for guidance as how to startr for that. samsnjoy@gmail.com

sunny wrote at 11 Jun 2009, 1.14:

hi, may i know how to implement this optical mouse image sensor as an electronic microscope?

mark_mmjq wrote at 4 Jun 2009, 7.03:

Hi, you can use this model of mouse LOGITECH: M-BT96a to make this project and please follow the instruction in the 1st page. Have Fun!!!

SILVER wrote at 28 Apr 2009, 16.29:

Hi,I am a student of university.i am working on the project that you have done.can you sent me the AVR program of it? thank you bye my email address is: silvercity2222@yahoo.com

Anonymous wrote at 30 Dec 2008, 20.10:

the max frame rate that I got was only about 4.5 fps. I'm not sure why it is that slow; the chip can support up to 1500+. Source: http://www.hardwaretipsandtricks.com/articles/13/1/What-is-a-Mouse/Page1.html I wonder if there is a way to modify the program to use serial port/USB instead. Would it be faster?

maverick wrote at 23 Dec 2008, 5.54:

May I know what was the maximum framerate achieved by you ? I'm guessing somewhere in the order of 10-15 per second.

Sprite_tm wrote at 26 Nov 2008, 10.41:

Not really; the device can only send one pixel off each frame it grabs back to the host device, that's what makes it slow. The sw was written in VB6.0, but might work in 5.0 too.

Anonymous wrote at 25 Nov 2008, 17.21:

Is it possible to increase the framerate at which the program receives the image? I'd like to use it for motion detection. PS: Is the program written in VB 5.0?

Magnsu G wrote at 2 Nov 2008, 19.46:

Hi, Cool reading. I wonder if you know if it is possible to read the mouse movement but without the computer understanding that it is a mouse. I would like to have the computer to just read the signal but not move the mousepointer. Any remarks would be appriciated...

Corey wrote at 23 Oct 2008, 13.10:

I wish I was smart like you guys...

QWESTER wrote at 17 Oct 2008, 0.31:

ABCTOPBIZ MAKES USB AND RF OPTICAL MICE USING THE 2610 CHIP http://www.abctopbiz.com/products.asp

nicholas_manie wrote at 1 Jul 2008, 1.23:

Hi, very interesting hack, this and all the rest. Do you think it is possible to change the small ccd sensor with a ccd sensor taken from a mobile phone camera? keep up

bootstrap wrote at 31 May 2008, 15.50:

Dear Big Jerminia,Is this code (on this page) working with any mouse sensor which has SCK and SDIO pins ?

NnnN wrote at 22 May 2008, 19.10:

I've been looking to build a small *cheap* 3-axis computer-controlled robotic positioning system and have been considering using the innards of cheap optical mice for position encoders. Was thinking of mounting a disk on each drive axis with dashes printed on the outer radius and using the mouse to count the dashes as they move past. I figure I can get pretty good accuracy, depending on how big I make the disk. Your code looks like a great place to start on this endeavor. Is the chip you used something I'd expect to find in a no-name optical mouse that I can pick up for a few bucks at the computer store? If not, can you recommend a particular model? Also, if you have any different ideas for a cheap encoder? Saw optical mice on sale for $3 each the other day, which is pretty cheap! -N

vic wrote at 9 May 2008, 20.57:

Hi, I just wanted you to know that I ported your hack to the Arduino and Java on the computer side, which should open Linux and Mac users to the marvel of low fidelity image capture. See http://www.bidouille.org/hack/mousecam/index.en.php I also tried to get color pictures using an RGB LED but this was inconclusive :)

pinout wrote at 12 Apr 2008, 21.50:

Great work!!! See page 5 of this* PDF - it lists many Agilent optical sensor models and you can compare their specs. It also includes their laser versions (as oppose to led), which have a max CPI (counts per inch) of 2000, compared to the one in this project which is 200 CPI or something. I'd like to do some experimenting with this. *http://www.avagotech.com/assets/downloadDocument.do?id=2557 Regards pinout

MJ wrote at 11 Mar 2008, 9.49:

Sir Emrah,thanks a lot i respect you too... thanks for your nice instructions. have a nice day....

MJ wrote at 11 Mar 2008, 9.45:

Good Day Sir, Thanks 4 your Nice Project, i truly respect you. i hope you make another project to make to all interesting. by the way sorry for my grammar..thanks a lot.

big jerminia wrote at 5 Mar 2008, 11.46:

I have just tried it with an infra red led. i received strange and often creepy pics from this thing! As a plus though i was able to make a very good fingerprint scanner using the chip and a switch for the shutter. i am currently using the S2083 chip. Apparently your program works with a lot more than just ADNS 2610! i just need a program to analyse the finger prints and find a match.....DIY finger scanner! roooock on! as a side note tried to take a pic of my eye with mouse scanner. still seeing a red spot once in a while but got a cool pic from that too. dont try that one it sux.

savel wrote at 4 Mar 2008, 20.41:

I repeated the hack. It quite hard to find mouse with small chip. All new mice are with much bigger chips, with USB/PS2 integrated. Here is my link: http://www.vabolis.lt/2008/02/16/pele-skaneris/ I also modified software, as my LPT is dead and I am using PCI lpt card.

rupin chheda wrote at 18 Dec 2007, 6.43:

Hello, I am unable to recive any communication from Joshua Wise,about the variant chip that he/she uses the 2051 which even i am using. Can you provide me contacts,if you do know that. thanks rupin

Emrah wrote at 17 Nov 2007, 9.38:

I don't mean to sound critical, but I wish you had commented your code and named your variables in a more understandable manner to make things a little easier for us ;)

Emrah wrote at 16 Nov 2007, 21.18:

You can check out the video here... http://www.youtube.com/watch?v=_C25xKt1thY

Emrah wrote at 16 Nov 2007, 19.16:

Tonight it could see a 3cm diameter black circle and a 10x0.5 cm line drawn on a white paper from about 60cms. The cam's lens is all the way down... otherwise the image is very bad, and focus distance is very close.

Emrah wrote at 16 Nov 2007, 11.57:

Thanks for this article :) I got a sample pack of ADNS-2610's from Avago. They work just fine... the datasheet is very helpful, and it worked on the first attempt. I didn't have the lenses, so I mounted it in an old web cam casing, that increased the range too (about 8-10cms) ;) Next step it interfacing it to a PIC18F452 via SPI... As a response to the people who asked about the diode... any diode is fine really... I used an 1N4001. Connect the cathode to pin 5 of the printer for and the anode to pin 12. The ASCII schematic tells you to that pin 3 of the sensor is the data in/out pin. It goes to the connector pin 12 directly, and to pin 5 via the diode. This guy explained here pretty good... http://www.instructables.com/id/SXHM2U8F6S98JUE/ Have fun creating ;)

maus wrote at 5 Nov 2007, 13.38:

hjhjhjk crass on my bike men

robo wrote at 13 Oct 2007, 21.53:

I have an OM02 mouse chip and this program does work. Maybe there are timing issues on your PC or the interface is not quite right, but I can confirm that the program DOES work with the OM02 chip

Aleksandr wrote at 19 Sep 2007, 10.25:

Excuse that I use the program the translator! Dear sir! I was very much interested with this idea! But a little in other variant, mice with the infra-red gauge, and frequency of interrogation up to 1500 times a second and the sanction of a matrix up to 6.2 mp now are issued, I think that using simple optical system it is possible to try to create the device for the control of strongly heated up details of a computer, the characteristic of sensitivity of this sensor control but if it will turn out interestingly and cheaply is certainly unknown Yours faithfully, Alexander Russia Perm icq 298-083-921 uralecolog@yandex.ru scype strazzarts

Amancio wrote at 17 Sep 2007, 4.08:

Dear Sir, what kind of diode can be used here?

mj wrote at 17 Sep 2007, 4.04:

Dear Sir,the similar question to the first comment:on your schematic, i was wondering what the plus in the middle of the connection meant 12----------+------SDIO 5 -----|<|--+ at that point, do you mean to seperate/split the wire? also, what kind of diode can be used here? Please mail the answer to me as soon as you have time, My mail address: mark_mmjq@yahoo.com thanks a lot!

brunzy wrote at 26 Aug 2007, 20.52:

che cagata.....non funziona...lo dico a mio cuggino!

Michael wrote at 18 Aug 2007, 15.39:

Dose any one try using OM02 optical mouse sensor to do the same thing? The chip have a 2-wire serial port, using the TCLK and TIO pin to access the internal register. But i don't have detailed info on how to read the register. I tried using the same program on this page, but failed. Does anyone have any idea?

Amancio wrote at 8 Aug 2007, 0.58:

hi...can you give that kind of mouse...for our project??

Istarian wrote at 1 Jul 2007, 13.40:

You should try grouping 4 sensors together and patching their outputs into one whole picture, then add a lens.

me wrote at 6 Jun 2007, 21.15:

good resources: http://www.mstarmetro.net/~rlowens/OpticalMouse/ http://www.roboternetz.de/wissen/index.php/Maussensor (German)

me wrote at 6 Jun 2007, 20.09:

another test with your app in scan mode shows that the motion detection seems to work somewhat, but apparently the image data register (0x08) is not mentioned in the data-sheet for a reason..

me wrote at 6 Jun 2007, 19.38:

first shot at reading the sensor failed, might have been due to bad connection. will try again. hints for linux install xlibs-dev and/or libx11-dev or search for package names of the include files of the source code. compile with gcc -o parspi parspi.c -lX11 run with /.parspi get error message for port (ubuntu -> /dev/lp0) compile again. get "lock parport0: Invalid argument" give up..

me wrote at 6 Jun 2007, 15.03:

cheapest optical mouse "g-627" found a few minutes ago at media-markt in germany for 7.99 € contains the PAN3101 CMOS Optical Mouse Sensor by PixArt Imaging Inc. at a first glance on the ds, it might be compatible to the one you're using. according to the ds, it has a better performance (?) controller ic marking: a2611 0631cdc-g fn1q6qa01 cheers

Paul Davey wrote at 3 Jun 2007, 5.20:

If you used this for a barcode scanner you might need a differnt lens to get the focus right for rading the width of the bars/spaces.

Se Yong Oh wrote at 25 May 2007, 3.12:

Dear Sir,the similar question to the first comment:on your schematic, i was wondering what the plus in the middle of the connection meant 12----------+------SDIO 5 -----|<|--+ at that point, do you mean that is 5V or another VCC like 12V or SDIO pin connect with 12pin and 5pin of parallel port? Please mail the answer to me as soon as you have time, My mail address: ohcomeon20@yahoo.co.kr thanks a lot!

Misiek wrote at 14 May 2007, 5.02:

when can we expect the version of software that will works with laser mouses

AMIR wrote at 10 Mar 2007, 15.46:

GOOD WORK and good program ineed more program connected with coputer

Fred wrote at 5 Mar 2007, 21.42:

Perhaps this sensor would lend itself to autonomous tracking (of aircraft let's say.) A 'rougher' stage would direct the PZT (Pan Zoom Tilt) platform in the correct direction. A fine resolution co-axial 'zoom stage' would keep things locked on target. Additional fixed position 'rougher stages' continue monitoring for multiple targets. A pc would co-ordinate target allocation. Everything gets recorded to DVR. Basically this is a robust transient event detector/logger. triox_compound@hotmail.com

CHOUKI wrote at 5 Mar 2007, 21.03:

i hop to inderstand this project and i want to give my part

Numen wrote at 10 Feb 2007, 4.04:

Dear Sir,the similar question to the first comment:on your schematic, i was wondering what the plus in the middle of the connection meant 12----------+------SDIO 5 -----|<|--+ at that point, do you mean that is 5V or another VCC like 12V ? If it is 5V,could I connect the two "+" to the pin 7 of ADNS2610 directly? Please mail the answer to me as soon as you have time, My mail address: myoym@hotmail.com thanks a lot!

Numen wrote at 10 Feb 2007, 4.00:

Dear Sir,the similar question to the first comment:on your schematic, i was wondering what the plus in the middle of the connection meant 12----------+------SDIO 5 -----|<|--+ at that point, do you mean that is 5V or another VCC like 12V ? If it is 5V,could I connect the two "+" to the pin 7 of ADNS2610 directly

ragz wrote at 4 Feb 2007, 17.57:

hey the link to the source code is not working....can u help...or email it to ragz123.at.hotmail.com

luca wrote at 18 Dec 2006, 18.54:

the link http://sprite.student.utwente.nl/~jeroen/projects/mouseeye/ to the file .zip dont' work may you hellp me to have the program ? Tanks Luca info@tesla-web.com

muttanna wrote at 18 Dec 2006, 8.04:

Hi, I need ur help i went through ur project can i know which optical mouse hast his sensor can we use any other microcontroller instead of the cypress

Austin wrote at 3 Dec 2006, 2.20:

i really need help on this. its kind of pathetic, i know, but i dont want to end up waisting the mouse and having to go out and find another one. on your schematic, i was wondering what the plus in the middle of the connection meant 12----------+------SDIO 5 -----|<|--+ at that point, do you mean to seperate/split the wire? also, what kind of diode can be used here?

Leave a comment:

Your name:

What does this picture say?
Sorry, this is a captcha

Your comment:


© 2006-2022 Sprite_tm - Contact