This is only a preview of the August 2026 issue of Silicon Chip. You can view 33 of the 104 pages in the full issue, including the advertisments. For full access, purchase the issue for $10.00 or subscribe for access to the latest issues. Items relevant to "Adjustable Ultrasonic Cleaner, Part 2":
Items relevant to "Phenomenal Pinball Machine, Part 3":
Items relevant to "Destination Display":
Articles in this series:
Articles in this series:
Items relevant to "Transceiver Test Set":
Items relevant to "Is this the end of the NE5532?":
Purchase a printed copy of this issue for $14.00. |
Using Electronic Modules with Tim Blythman
GM805 Barcode Reader
We recently reviewed the Tiny
QR Code Reader module and
lamented that it did not support
linear barcodes. We have since
found a module that fills this gap
and can do a lot more, including
reading QR codes and other types
of 2D codes.
W
e reviewed the Tiny QR Code
Reader in the February 2026
issue (siliconchip.au/Article/19663)
and it definitely lived up to its name.
It was tiny (just 19 × 16mm) and had
no trouble reading QR codes.
Since linear (1D) barcodes have been
around a lot longer, we wondered if
that device could read other types of
1D and 2D codes, but it appears that
it could only handle QR codes specifically.
While QR codes are great at packing
in lots of information, simple codes
still abound; UPC (universal product
code) and EAN (European article number) barcodes are still used on products
in stores. There are many other types
of linear codes that are used for other
purposes, such as tracking numbers on
parcels (Australia Post uses both linear
and 2D codes extensively).
We searched the usual online stores
to see what features could be found in
a barcode reader, especially one that
would be easy to interface with and
use, as well as being compact. We settled on a unit dubbed GM805 on AliExpress, mostly because it appeared
to be well-documented. You can find
it on sites like AliExpress or eBay by
searching for “GM805”.
It is made by the Hangzhou Grow
Technology Company Ltd (www.
growscanning.com). They also have
several other scanners, including
some with more consumer-oriented
enclosures. The GM805 manual can
be downloaded from siliconchip.au/
link/acbl
70
Silicon Chip
The GM805 module
The GM805 features UART (asynchronous serial) and USB interfaces,
which are quite different from the I2C
interface on the Tiny QR Code Reader.
There are GM805-S and GM805-L variants that differ only in their specified
reading distances.
We tried the GM805-L, which is
claimed to work between 7cm and
50cm, as it is the closer match of the
two for the Tiny QR Code Reader. We
paid around AU$45 for two units,
including shipping.
It measures 28 × 21 × 10mm, supplied with two six-way 1.27mm pitch
pin headers and a six-way socket fitted. A matching plug with flying leads
is also included. The socket breaks
out 5V power connections and two
lines each for the USB and UART
interfaces.
The UART interface uses a 3.3V
logic level. One of the six-pin headers has the same pinout as the six-way
socket, while the other is marked with
signals for the LEDs, BEEP and trigger
functions.
Our photos show the module. It is
supplied as an assembled PCB with
two mounting holes in opposite corners. The front has two LEDs and a
camera, while the rear has a processor and related components. There
is also a piezo sounder at the rear.
The shape and layout of the module
make it quite easy to fit into custom
project designs.
Fig.1: this wiring connects the
GM805 to one of our USB-C Serial
Adaptors (June 2024; siliconchip.au/
Article/16291), which has the same
pinout as some CP2102 adaptors. The
Scanner takes a 5V supply but works
with 3.3V logic levels. Note that the
ground wire is white, not black!
Australia's electronics magazine
siliconchip.com.au
Perhaps unsurprisingly, the main
processor chip had its identifying
features removed. It had a rectangular area laser-etched out of the back
of it, with the pin 1 identifier barely
visible.
The manual is quite detailed and is
scattered with QR codes. It turns out
that the easiest way to configure the
GM805 is by scanning codes! We wired
up the UART pins to a USB-serial converter and scanned the “Serial Output” code; immediately, the scanner
was able to send codes over the serial
port to a terminal application.
Fig.1 shows the wiring for serial
operation. It appeared to simply work
with a default baud rate of 9600. This
and other settings can be changed via
the UART interface (or QR codes),
although we did not need to use that
option.
The GM805 uses a white LED for
illumination, which is automatically
controlled. A blue LED flashes and the
piezo sounder beeps when a code is
detected. The white LED and sounder
can be disabled with other QR codes;
it’s also possible to force the white LED
to be on at all times.
USB interface
The UART interface makes it trivial
to interface with a microcontroller, but
the GM805 also provides a USB interface; in fact, several of them. One of
these is to emulate a keyboard, since
this is one of the easiest ways to get
data into a computer. Fig.2 shows
the wiring we used to connect it to a
USB-C breakout board for all the USB
interfaces.
Fig.3: compared to the Tiny QR Code Reader, the GM805-L has a generally
wider and longer operating span, although it was not as good up close. If shortrange operation is needed, there is also the GM805-S variant.
Some of the earlier instances of barcode scanners being used with computers used a so-called ‘keyboard
wedge’ (KBW) arrangement, where
a splitter cable ‘wedged’ the scanner
into the PS/2 keyboard interface, and
the scanned codes appeared as if keys
were being typed on the keyboard.
One of the GM805’s interfaces is as
a USB keyboard; this is the HID-KBW
mode noted in the manual. Many
smartphones also allow the connection of a USB keyboard, so this could
be used for data entry in a mobile
system. It could even be used with
one of the PicoMite (February 2025;
siliconchip.au/Article/17729) variants
that support a USB keyboard. Screen
1 shows an Android phone connected
to the GM805.
While simple and effective, the HIDKBW mode can be troublesome. If,
for example, the wrong program has
focus, the scanned codes can cause
havoc (ask me how I know!). There
is also a USB HID-POS mode, which
is intended to communicate directly
with POS (point of sale) software.
HID-POS also allows bidirectional
communication, including from the
computer to the scanner.
We tried some HID-POS test software to try to communicate with the
GM805, but were not able to get it to
work. The USB vendor ID (VID) for
the GM805 is 0x002C, which we could
not find in any VID lists. Its product ID
(PID) changes depending on the mode;
the HID-KBW mode uses PID 0x261A,
while HID-POS mode uses 0x0300.
The USB interface can also behave
as a virtual USB-serial adaptor, which
appears as PID 0x0302. This mode is
activated by another QR code, and
we found that this worked seamlessly
with the TeraTerm terminal program.
Working range
The manual suggests a working
range for the GM805-L of 7-50cm. As
we found for the Tiny QR Code Reader,
the usable range can depend on the
printed size of the code. We tried
numerous EAN-13 codes from typical
supermarket products and could not
read these from more than 25cm away.
However, we were able to successfully
read such codes from as close as 5cm.
Fig.2: this shows the wiring we
used for a USB-C socket breakout,
including the 5.1kW CC resistors
(required for a USB-C to USB-C
connection at 5V). If you are using a
USB-A or USB-B connector, the four
wires would be connected as you
might expect. The wire colours here
match those found on the breakout
leads that were supplied with the
readers.
Screen 1: the USB-KBW interface is
even recognised by Android phones.
Australia's electronics magazine
August 2026 71
For a comparative test, we used the
same printed 62mm QR codes that
we used for the Tiny QR Code Reader
article and also turned off the illumination LED.
The results are shown in a similar
fashion in Fig.3. For these specific QR
codes, it appears that the GM805 has a
wider view and longer range, although
it does not do so well at short distances; not surprising for the longer-
range variant.
The spans correspond to wider
viewing angles as well. As expected,
the actual performance depends a lot
on the size of the code being scanned
and how it fits in the field of view,
combined with the limitations of the
focus and camera resolution. The camera sensor in the GM805 is quoted as
640×480 pixels.
The GM805 (shown at actual size) is
well laid out, with the camera and
LEDs on one side and the connectors
and remaining components on the
rear. Note that the GM805 has at least
two variants. The GM805-S (shown
in the centre) has a slightly smaller
reading distance of 5-30cm, versus the
one we used with a reading distance
of 7-50cm (-L model; right).
The GM805 manual states a maximum operating current of 70mA. In
practice, we found that was a typical
value with the default settings and
with neither LED lit. The white LED
drew about 20mA when lit, and the
blue LED about 10mA. So we suggest
that you should budget at least 100mA
for the module.
stuck with the defaults, which seemed
to work on all the common types of barcodes and QR codes we came across.
There are also settings to add prefixes and suffixes to scanned codes,
which could be handy if you need to
automate an existing system. And of
course, there is a code that can be used
to reload the defaults.
The default settings appeared to be
capable of about three scans per second (of our test QR codes), but there
are various timeouts, delays and sensitivity settings that can change that.
Options
Summary
There are many options that can be
selected by means of QR codes; we
counted hundreds of configuration
codes in the manual. Apart from the
main modes noted earlier, it’s possible
to set the reader to require triggering
before producing a code; presumably,
this is provided via the TRIG input pin.
There are also settings to determine
the fraction of the camera’s view that
can be used for scanning. In other
words, it’s possible to set a narrower
field of view than noted above.
The codes that are produced can
be selected by symbology, and many
code types have other specific settings.
Thus, it is possible to only allow specific types, which might be helpful
depending on your application. There
is a setting to allow all codes, which
would be good for experimenting with
the GM805’s abilities.
There is also a setting to allow no
code types, which then allows just
configuration codes to be read. If you
needed to limit the reader’s output to
just one code type, you could scan this
‘forbid all’ setting and then add just the
codes you wanted to accept. We just
The GM805 is a very versatile and
flexible reader that can handle both
QR codes and 1D/2D barcodes. It has
numerous interfaces that allow it to
easily connect to a microcontroller
or a computer. Its mechanical design
should also make it easy to incorporate into a larger project. Importantly,
it was very easy to get working.
The GM805’s scanning performance and versatility are easily better than the Tiny QR Code Reader. It
has an inbuilt illumination LED and
can be programmed in more ways
than we could easily test. Still, the
Tiny QR Code Reader is smaller, uses
less power and defaults to a higher
scan rate.
With all this in mind, we would
probably tend to favour the GM805
in a project unless size or power was
a critical factor in the project’s design.
Having reviewed the GM805 module, let’s now investigate the properties of barcodes themselves.
Power consumption
72
Silicon Chip
Linear (1D) barcodes
We covered QR codes in the previous article about the Tiny QR Code
Australia's electronics magazine
Reader module. Here, we’ll explain
some of the history and technology
of linear barcodes. Barcodes were
inspired by the pattern of long and
short pulses used in Morse code. The
first barcode system was patented in
the USA in 1952.
During the 1960s, projects and standards were developed to use coloured
barcodes to identify railway rolling
stock, such as freight cars, but the system was abandoned because it was not
reliable, depending on older technology such as valves and photomultiplier tubes. Advances in computer
and laser technology set the scene for
its widespread use for product identification in the 1970s.
It is on supermarket products that
barcodes ultimately succeeded. These
are known as UPC (Universal Product
Code) barcodes. Other places they are
widely used include being printed on
letters, parcels and tickets. Just about
any situation where an item needs
to be identified by a machine could
potentially use a barcode.
Structure
The connection between Morse
code and a barcode can be easily seen
if you take a visual snippet of Morse
code and stretch it out vertically, as in
Fig.4. In practice, different encodings
are used, since Morse code is intended
to be interpreted by a human, while
barcodes are designed to be machine
readable.
Fig.4 shows how the ‘stretching’ of
the bars and spaces allows for better
Fig.4: a simple barcode can be
generated from a printed Morse code
message, but most modern barcodes
have features that make them better
for machine reading.
siliconchip.com.au
tolerance in reading the barcode.
The red lines show that the reader
only needs to scan along a single line
through the code. Even if that path is
not exactly at right angles to the bars
and spaces, the relative spacings of the
various zones remain the same.
The so-called quiet zone is an area
with no features that allows the hardware to distinguish the start and end
of a valid code from other noise. While
the characters in Morse code have
varying lengths, most barcodes use a
fixed width per symbol.
Early patents also suggested that a
circular arrangement (looking somewhat like a bullseye) might be preferred. In hindsight, the need to accurately scan through the middle of the
bullseye meant that this layout did not
succeed (see US patent 2612994A).
Symbologies
As the QR code is just one type of
2D code, there are numerous types
of linear barcodes using different
symbologies or encodings. A typical
encoding has a fixed width per character and also a fixed number of bars
and spaces. This means that it is very
easy for a reader to keep track of its
position within the code; the code is
self-clocking.
QR codes use a masking step to try
to achieve a balance between light and
dark areas over their surface. Similarly, most barcodes are designed to
have an equal amount of bar and
space, since this provides the best
chance for code recovery. The lack of
a masking step makes barcodes simpler to decode.
You can imagine that these factors
severely limit the number of combinations that are valid within a given
symbology. We’ll look at the EAN-13
(European Article Number) symbology, which is used for the 13-digit barcodes commonly found on products,
including this magazine. So-called
UPC-A is very similar.
EAN-13
The 13 individual digits of an EAN13 barcode are encoded by a sequence
of seven units of width, making up two
bars and two spaces; this gives a total
of 40 symbols.
Twenty start with a bar and twenty
start with a space, so there are really
only 20 usable symbols, since they
must all be the same type to be processed consecutively.
EAN-13 encodes 12 of its digits
using this scheme. It also adds a start
marker, a centre marker and an end
marker. On one side of the centre, the
symbols start with a bar, and on the
other, they start with a space.
Since the 20 symbols are only used
to encode the 10 digits, zero to nine,
two groups of codes exist, and they can
provide an extra layer of information
and redundancy.
Firstly, the codes can be used to
determine whether the barcode is
being read from right-to-left or left-toright. The choice of code groups in one
half of the barcode is used to encode
the thirteenth digit.
You might also see that most barcodes have a human-readable version printed underneath. This allows
the code to be manually entered if the
scan fails for whatever reason. One
of the thirteen digits is designated as
a checksum; since this is also one of
the printed numbers, both scanned
and manually entered codes can be
verified. Fig.5 shows a breakdown of
a typical EAN-13 barcode.
Other types
Fig.5: the start, centre and end
markers of a typical EAN-13 barcode.
The red lines show how the scanner
can use the centre marker to decode
it even if the scan does not cover the
entire barcode in one pass. Source:
https://w.wiki/8WbT
siliconchip.com.au
You can see that a typical example of
a modern barcode actually has numerous layers to store, encode and verify
the information that is held. EAN-13
is just one example; there are other
types that can have a variable length
and can encode other data, such as
ASCII text. Code 128 is one such type;
there are many other types for differSC
ent applications.
Australia's electronics magazine
Ideal Bridge Rectifiers
Choose from six Ideal Diode Bridge
Rectifier kits to build: siliconchip.
com.au/Shop/?article=16043
28mm spade (SC6850, $30)
Compatible with KBPC3504
10A continuous (20A peak),
72V
Connectors: 6.3mm spade
lugs, 18mm tall
IC1 package: MSOP-12
(SMD)
Mosfets: TK6R9P08QM,RQ (DPAK)
21mm square pin (SC6851, $30)
Compatible with PB1004
10A continuous (20A peak),
72V
Connectors: solder pins on
a 14mm grid (can be bent
to a 13mm grid)
IC1 package: MSOP-12
Mosfets: TK6R9P08QM,RQ
5mm pitch SIL (SC6852, $30)
Compatible with KBL604
10A continuous (20A peak), 72V
Connectors: solder pins at
5mm pitch
IC1 package: MSOP-12
Mosfets: TK6R9P08QM,RQ
mini SOT-23 (SC6853, $25)
Width of W02/W04
2A continuous, 40V
Connectors: solder
pins 5mm apart
at either end
IC1 package: MSOP-12
Mosfets: SI2318DS-GE3 (SOT-23)
D2PAK standalone (SC6854, $35)
20A continuous, 72V
Connectors: 5mm screw
terminals at each end
IC1 package:
MSOP-12
Mosfets:
IPB057N06NATMA1
(D2PAK)
TO-220 standalone (SC6855, $45)
40A continuous,
72V
Connectors:
6.3mm spade lugs,
18mm tall
IC1 package: DIP-8
Mosfets:
TK5R3E08QM,S1X
(TO-220)
See our article
in the December
2023 issue for more details:
siliconchip.au/Article/16043
August 2026 73
|