typically on these cameras the lens is mounted and focused by a screw thread. there is not usually an 'infinity stop' because the mount is very simple, so i would expect the lens may be mechanically positioned outside the useful focus range. a 110 degree FoV is a very wide lens, so the useful screw range may be quite mechanically narrow, but when positioned properly it will have a very deep in-focus field, capturing near objects and far objects clearly.
the datasheet doesn't say much about focus, but it looks like the rim of the lens is knurled for grip, so try rotating the lens. 'screw out' will bring focus nearer, 'screw in' will push focus farther. i would suggest indexing your start position with a paint pen for easy return, and then index the correct position if you find it.
if all else fails, you could place a small aperture in front of the lens. this will reduce light transmission but also improve the focus field, like squinting your eyes.
Camera detects motion, turns white LED and red LED on. Paper or screen with the QR code is now illuminated and humans can move up and down until the red Target appears in the center and in focus. Approximately a quarter of a second after that happens, you hear the beep noise indicating a successful read and decode
As for implementation, Zxing-cpp [1] is still maintained, and pretty good as far as open source options go. At this point I'm not sure how related it is to the original zxing, as it has gone substantial development. It has python bindings which may be easier to use.
On mobile, Google MLkit and Apple vision also have barcode reading APIs, not open source but otherwise "free" as in beer.
Alternatively (and what I would recommend), is grab a library that is dedicated to QR Code reading (I‘ve used Quirc, for example) and just read the code.
Typically you threshold an image to get a binary representation (1: black, 0: white). Then you detect the finder patterns by looking for 1-1-3-1-1 runs of black/white. Once you have a bunch of finder patterns localized, you form triplets and decode the binary matrix that they span.
http://blog.qartis.com/decoding-small-qr-codes-by-hand/
https://beck-thompson.github.io/QRcodewebsite/
Reading QR codes without a computer! https://qr.blinry.org/
And then there are a number of OSS implementations for Android (check fdroid.orgl, Debian/Ubuntu, etc. Maybe study the code?
What has thus far remained a mystery to me is going from a bag of noisy pixels with a blurry photo of a tattoo on a hairy arm surrounded by random desk clutter to array of booleans. I meant “by hand” as in “without libraries”, not “using a human”, as in the latter case the human’s visual cortex does the interesting part! And the open-source Android apps that I’ve looked at just wrap ZXing, which is huge (so a sibling commenter’s suggestion of looking at a different, QR-code-specific library is helpful).
I could imagine maybe OCRing the results from a line-scan camera. That would read all the business signs and street names as you drive by them.
Some viofo dashcams even allow the connection of two secondary cams (those only FullHD) so you could scan to the left and right simultaneously to the front.
https://forum.digikey.com/t/digikey-product-labels-decoding-...
I think a smartphone and custom app would be the worst case scenario in terms of cost, and that could be pretty cheap.
How are you getting the chip, micro controller, extra electrical components, breadboard/proto board, and power supply for $7?