Color Can Triple QR Code Capacity

Recently [mit41301] wondered about increasing the data capacity of QR codes, and was able to successfully triple the number of bits using color. He chose the new rectangular micro QR code (rMQR) standard which was adopted last year as ISO/IEC 23941:2022. This rectangular-shaped QR code is designed to be used on narrow spaces, with an aspect ratio similar to that of a traditional 1D bar code. There are quite a few variations of rMQR, but the largest can hold 361 bytes. The basic idea is to generate three different rMQR codes, coloring them as red, green, blue, and merging the result. Decoding is performed by separating the color image into its RGB components and then decoding the resulting three images.

To do these experiments, [mit41301] took advantage of readily available tools. Generating rMQR codes can be done with this Python module by [Takahiro Tomita], who also makes the generator available online. Or if you’re more comfortable with Go, check out this repository by [Ichinose Shogo]. As a proof-of-concept, [mit41301] takes the first 449 digits of pi, plus the decimal point, and splits them into three each 150 byte chunks. Then he uses the image manipulation program ImageJ, an open-source Java program developed at the National Institutes of Health, to implement the combination and deconstruction processes.

The first 449 digits of pi expressed as a colorful rMQR code

There might be a few pitfalls if you want to do this outside the laboratory, however. First of all, this standard is reasonably new, and after a brief search this author couldn’t find any decoder that would recognize rMQR codes, nor any software modules or libraries. Research into colorization of QR codes, known as HCC2D (High Capacity Colored 2-Dimensional) codes has been ongoing. One issue is that correcting for arbitrary chromatic abnormalities in a scanner’s lens requires a baseline color palette in the code, which eats up some of the newly-gained data capacity.

Nonetheless, we really do like this concept. Do you have any applications of QR codes in your projects where coloring could be helpful? Is anyone using (monochrome) rMQR codes and if so, how are you scanning them? Check out our overview of barcodes, their history, and their future, in this recent article.

3D Printer Recognizes Third-Party Build Plates, Just Make Your Own ID Codes

The Bambu X1C 3D printer is a machine known for its speed, and it has a number of useful features like automatic build platform recognition. Factory build platforms are marked with an identifier code, and thanks to [elumspe] it’s now possible to make your own identifiers to stick onto third-party platforms and have the printer recognize them as though they were factory offerings. There’s even a super handy 3D-printable alignment tool that ensures the identifier goes in the correct spot, which is a nice touch.

These codes aren’t DRM so much as they are used by the printer to automatically verify that the installed build plate matches the slicer settings before a job begins. Printing one and sticking it in the right place is an easy way to get third-party plates recognized the same as factory offerings.

The identifier codes aren’t DRM so much as they are a way for the printer to verify that the installed build platform matches the slicer settings before a print begins, and throw up a warning if it doesn’t. The printer is perfectly happy to use third-party build surfaces, but since they lack an identifier, the printer will throw a warning each time. One solution is to simply disable checking the build platform before a print, but for those who would prefer to have the printer see what it expects to see, printing a small 2D barcode to stick on is an easy way to do it.

We see these sometimes called QR codes, but they look more like AprilTags. Both are types of 2D barcode, but while QR codes can encode a variety of information types, AprilTags are simpler and usually represent identifiers. In this case, they’re an appropriate way to let a camera-enabled printer know what kind of build plate is installed.

AprilTags are common in computer vision applications, and even relatively modest hardware can detect and decode them almost in real time. AprilTags are convenient and easy to use, as this gate access system demonstrates.

Barcodes Enter The Matrix In 2027

Beep. We’ve come a long way since June 26, 1974 when the first bar code was scanned at a grocery store in Troy, Ohio. That legendary pack of Juicy Fruit proved that even the smallest of items could now carry numbers associated with inventory and price.

By now, we’re all too familiar with this sound as self-checkouts have become the norm. Whereas you yourself could at one time literally check out during the transaction, you must now be on your toes and play find the bar code on every item.

What does the consumer gain from the bar code today? Practically nothing, except the chance to purchase, and potentially return, the item without too much hassle. Well, the non-profit outfit that runs the bar code world — GS1 US — wants to change all that. By 2027, they are confident that all 1D bar codes will be replaced with 2D bar codes similar to QR codes. Why?

Continue reading “Barcodes Enter The Matrix In 2027”

Pi Pico QR Display Hands Out WiFi Info With Style

At this point, you’re likely aware that you can store your wireless network’s credentials in a QR code, so that anyone who wants to connect with their smartphone need only scan the 2D barcode. Whether you print it out on paper, extrude it out of plastic, or paint the thing on the wall, it still works the same. It’s a neat trick for when you’ve got friends and family over, and saves you having to explain your ponderously long WPA key.

But what if you want to change up the encryption key every so often? Sure would be a hassle to have to repaint the wall. Enter this interesting project from [Predrag Mijatovic], which uses a few scripts to automatically set up a new encrypted guest WiFi network and present the appropriate QR code on an OLED display attached to a Raspberry Pi Pico. It’s a bit convoluted, and almost certainly won’t work on your network without significant tweaks, but we’re intrigued by the idea.

As [Predrag] explains, the whole thing is based on a Latvian MikroTik router that can be configured over SSH. A Bash script generates a new encryption key by base64 encoding the output /dev/urandom,  logs into the router to set up a new network using it, and then generates the matching ASCII QR code. With some sed trickery, the code is then embedded into a MicroPython program that gets uploaded to the connected Pi Pico.

In the video after the break [Predrag] takes us through the process manually so it’s easier to see what’s going on. Under normal circumstances, it would all happen automatically and would take just a few seconds to complete. We’d feel more comfortable if the scripts had some error correction that would allow them to gracefully exit if something goes wrong, but as a proof of concept, it certainly works.

We’d like to see this concept explored a bit further, perhaps using one of the physical QR code displays we’ve seen over the years. A programmable electronic paper display would also be a logical way to show off a dynamic QR code.

Continue reading “Pi Pico QR Display Hands Out WiFi Info With Style”

Invisible 3D Printed Codes Make Objects Interactive

An interesting research project out of MIT shows that it’s possible to embed machine-readable labels into 3D printed objects using nothing more than an FDM printer and filament that is transparent to IR. The method is being called InfraredTags; by embedding something like a QR code or ArUco markers into an object’s structure, that label can be detected by a camera and interactive possibilities open up.

One simple proof of concept is a wireless router with its SSID embedded into the side of the device, and the password embedded into a different code on the bottom to ensure that physical access is required to obtain the password. Mundane objects can have metadata embedded into them, or provide markers for augmented reality functionality, like tracking the object in 3D.

How are the codes actually embedded? The process is straightforward with the right tools. The team used a specialty filament from vendor 3dk.berlin that looks nearly opaque in the visible spectrum, but transmits roughly 45% in IR.  The machine-readable label gets embedded within the walls of a printed object either by using a combination of IR PLA and air gaps to represent the geometry of the code, or by making a multi-material print using IR PLA and regular (non-IR transmitting) PLA. Both provide enough contrast for an IR-sensitive camera to detect the label, although the multi-material version works a little better overall. Sadly, the average mobile phone camera by itself isn’t sufficiently IR-sensitive to passively read these embedded tags, so the research used easily available cameras with no IR-blocking filters, like the Raspberry Pi NoIR.

The PDF has deeper details of the implementation for those of you who want to know more, and you can see a demonstration of a few different applications in the video, embedded below. Determining the provenance of 3D printed objects is a topic of some debate in the industry, and it’s not hard to see how technology like this could be used to covertly identify objects without compromising their appearance.

Continue reading “Invisible 3D Printed Codes Make Objects Interactive”

This beaded QR code tells a story when scanned.

Beaded QR Code Bracelets Weave A Storytelling Interface

For centuries, people have been using patterns to communicate information in an eye-catching way. QR codes are no different, although they require a barcode scanner to decode rather than a knowledge of Navajo Native American history.

November is National Native American Heritage Month, and as part of their celebration, [ngaskins] and their students are making seed bead bracelets with QR codes. When scanned, each QR triggers a story written by the student in the form of an audio file, a video clip, or an animation. [ngaskins] says that this project was inspired by eyeDazzler, a beadwork tapestry made with software that generates Navajo weaving patterns.

The students started by designing their bracelets on graph paper, software, or a virtual loom before getting the seed beads and the tweezers out, and decided whether they would use a static or dynamic QR code. Aside from the aesthetics of beadwork, the bead loom is good for teaching math and computational ideas because the beads are laid out in rows and columns. It’s also a good tool for teaching lines of symmetry.

QR codes can hold quite a bit of information. In fact, there’s enough room in a version 40 QR for an executable version of Snake.

A Raspberry Pi-based COVID Green Pass validator verifies a QR code on a phone.

COVID Green Pass Validator With Raspberry Pi

It seems like every nation is dealing with the plague a little differently. In June, the EU instated a COVID Green Pass which comes in the form of a paper or digital QR code. It was designed to grease the wheels of travel throughout Europe and allow access to nursing homes. As of early August, the Green Pass is now required of those 12 and older in Italy to gain access to bars and restaurants, museums, theaters, etc. — anywhere people gather in sizeable groups. The Green Pass shows that you’ve either been vaccinated, have had COVID and recovered, or you have tested negative, and there are different half-lives for each condition: nine months for vaccinated, six for recovered, and just forty-eight hours for a negative test.

[Luca Dentella] has built a Green Pass validator using a Raspberry Pi and a Raspi camera. Actual validation must be done through the official app, so this project is merely for educational purposes. Here’s how it works: the user data including their status and the date/time of pass issuance are encoded into a JSON file, then into CBOR, then it is digitally signed for authenticity. After that, the information is zipped up into a base-45 string, which gets represented as a QR code on your phone. Fortunately, [Luca] found the Minister of Health’s GitHub, which does the hard work of re-inflating the JSON object.

[Luca]’s Pi camera reads in the QR and does complete validation using two apps — a camera client written in Python that finds QRs and sends them to the validation server, written in Node.js. The validation server does formal verification including verifying the signature and the business rules (e.g. has it been more than 48 hours since Karen tested negative?) Fail any of these and the red LED lights up; pass them all and you get the green light. Demo video is after the break.

Are you Canadian? Then check this out, eh?

Continue reading “COVID Green Pass Validator With Raspberry Pi”