I bought a Useful Sensors Tiny Code Reader from Sparkfun https://www.sparkfun.com/products/23352 back in September, but as always have been too busy to try it out until now...
The Tiny Code Reader (TCR) is the second Useful Sensors product I had posted about their Person-Sensor last December. Like the Person-Sensor, the TCR is pre-configured to run out-of-the-box. And it is designed to be not modified or updated.
The TCR is a basic QR code reader that works best with simple QR codes (20 characters or less), but its hard size limit is 254 bytes.
It uses an RP2040 MCU, an image sensor, and some flash memory. The TCR-Datasheet does not provide any detail on the image sensor and is focused on describing the I2C interface and mechanical details. There is a QWIIC connector provided for ease of interface.
And the TCR comes in a tiny box.
Useful Sensors provides sample code for common development platforms - CircuitPython, MicroPython, Arduino, RPi Pico (C), Microbit, and Badger 2040.
The TCR powers up running the QR detection model and indicates status via an LED. It flashes blue while scanning, green when a valid QR code has been detected, and red when there was an error decoding the QR code. The LED can be disabled via a configuration register.
I have a Xiao RP2040 with a QWIIC connector, so I thought that would be a simple way to test the TCR. As Murphy would have it, that did not work with the Arduino example code. To be fair, I haven't used this particular Xiao much and it's probably a problem with the version of the board library I'm using having an issue with I2C.. I didn't want to spend much time debugging, so I switched to using a Xiao SAMD21 that I've used with I2C a lot. I put it on an expansion board to use the Grove connector to hook up the I2C.
And, of course, that worked fine. I did find that it does take a bit of fiddling around to get it to read. It has a 110 degree field of view, so it's probably more of a distance issue depending on the size of the QR code.
I went to the Wikipedia QR code website and tried reading some QR codes off the monitor screen. I have a short video. I started with the wikipedia URL code, then a WiFi code.
Then further down the page there are examples of different QR code versions with increasing complexity.
It did pretty well with Versions 1 and 2. Did less well with 3 and 4. And would not read 10 and 25.
This makes sense as the number of characters increases rapidly with code complexity (version).
Then, to test my use case I generated and printed a couple of QR codes. I just used the Vistaprint QR code generator.
Here is a demo of that. The larger QR code image that I started with was harder to get the reading distance correct.
Looks like a good solution for getting simple configuration information into a project. Not too bad for a $7 sensor.