Introduction: Our project is a UPC-A Barcode Scanner complete with a pricing/description database interface.
Our original goal for this project was to build a standard barcode scanner from scratch, but as the project evolved so had to our specification of the project. We initially sought to build a charge-coupled device (CCD) scanner, which scans the entire barcode at once. This, however, required parts beyond our budget, namely a high-resolution CCD array, as well as knowledge of optics well beyond our own. We then shifted our focus to a pen or wand style scanner, where the user drags the tip of a pen evenly across the barcode to read it. This, however still required substantial optical work. We discovered that we could purchase a “dumb” scanner wand on E-bay for around $10, thus our ultimate implementation. The so-called “dumb” wand simply gives the user a TTL output stating whether it is reading from a black or a white surface. This essentially shifted most of the design challenge from optics to software, especially error correction, which we felt was more appropriate considering the nature of this course.
The major design challenge we encountered surrounded dealing with the inaccuracy of the initial readings. Because of the small size of most barcode features, only a few samples could be taken over some of the smaller ones during a pass with the wand. This necessitated substantial error correction to attain reasonable accuracy for a given scan. The nature of the wand scanner, as even detailed by commercial producers, requires a steady and well-trained hand to scan.
Since simply reading a barcode and returning its value is not useful on its own, we also added a serial communication interface that would allow the MCU to get information from a database or other software for the particular barcode, which we emulate with the terminal.