This is the stand-alone Bingo ball optical reader, based on PIC24EP512GP806.
This MCU has 52K (53,248 bytes) of Data memory and 512K of Program
speed is 70 MIPS.
Due to the limited amount of RAM, frame resolution is 220x220 pixels,
which consumes 48,400 bytes. The rest of 4,848 bytes is used for
housekeeping. One pixel takes 6-bit (monochromatic), and bits #6 and #7 are
used in image processing routines, as there is no auxiliary frame
buffer. There is the 8-bit ADC (National Semiconductor`s ADC1173),
used for sinle frame grabbing (6 bits are used).
To enable the software development and adjusting process, there is also the
VGA video stage, which enables full reproduction of the frame
buffer, plus some other digital data (important status messages,
variables and memory dump). This video stage is fully software
supported, and it is similar to the video stage described
I/O communication is via RS232 port. During the development process,
the same port is connected to the simple terminal unit with 12-key
The whole program is written in assembly language. One ball number
recognition takes about 450 ms, including about 110 ms for
This is not DIY project and it will not be described in detail, but
only the principles used for number location, rotating and
This is my third trying to make the same project. I built the first
one about five years ago, you can see it on
https://www.youtube.com/watch?v=napA-fwdxeY It worked
fine, but there were problems with single digit numbers rotation. I
started again from scratch two more times, and I learned some things
doing this - for instance, that the recognition itself is the peace
of cake, compared to ball and number locating and angle detection.
So I left the first neural network idea and made the recognition
algoritmic, as, at least, there is no network training.
Here is the picture of the system. Don`t ask why the PCB is skewed,
it was the requirement of the system in which it was embedded.