IP Over QR Code
seiferteric.com
seiferteric.com
My experience with the clock was that I really needed ECC mode 'M' to get the maximum ECC bits which worked around all sorts off issues with differences in scan rates between display and reader.
In my setup the QR clock is displayed on an array of 64 x 64 LEDs, when the LEDs were operating at a 60hz refresh rate you could induce some pretty interesting interference with the camera scan rate on phones with QR readers, once I boosted the refresh rate to 240 hz that interference went away, then it was a question of how much "dwell time" did the code need to be recognized and I got it down to 100mS as the fastest I could go and the QR libraries on the iPhone and Android could still pick it up.
So for reliability considerations maximize the display refresh rate and the ECC correction level.
Still, perhaps we could get a decent barcode format with some of its ideas, idk if they are all patented. It uses triangles which can be packed a lot more densely than squares, and has four- and eight-color modes. The density is nuts. You could theoretically download a decent size book via color barcodes in a couple seconds. It could revolutionize all kinds of things, being able to have large amounts of data in a barcode, rather than just a URL.
Then we have 3x41x41x2/8 = 1260 bytes of storage. Even with compression that's still not a decent sized book.
---
EDIT: I'm guilty of not reading the article first. I assume now you meant a 'QR film' that you scan for a couple seconds, rather than a static image. In that case you can apply above calculation to '1260 bytes per frame', at 10FPS that'd be 100Kbps, which is reasonable.
or 12kB in a single barcode (of plain text, compressed down to 3)
wikipedia says: "Microsoft claims that laboratory tests using standard off-the-shelf printers and scanners have yielded readable eight-color HCCBs equivalent to approximately 3,500 characters per square inch"
so I'm being optimistic, but not wildly so
Here's some neat pics: https://www.microsoft.com/en-us/research/wp-content/uploads/...
https://www.microsoft.com/en-us/research/wp-content/uploads/...
I've read about this a bit and I really wish there were an unpatented color barcode and a reliable/fast open source reader also, even if it's not quite as dense as my dreams. I think it would make for some neat possibilities.
https://www.microsoft.com/tag/m/Make.htm
There are some phone apps in the wild still that will read and/or generate them.
At one point circa 2010 there was an https://tag.microsoft.com homepage for them, but trying it just now it doesn't seem to resolve any more.
Flashing qr codes was just a quick hack and actually doesn't work super well. I think if I had more time I would try compressing and stripping down the message more so it would fit in a single qr code instead (like in https://webrtchacks.com/the-minimum-viable-sdp/).
http://www.jammarcade.net/backer-32/ -- I've got one of these devices, which was used back in the day, to store data on a VHS tape, in a similar way to what you're transmitting.
In the spirit of uncommon data transfer methods, here's my ridiculously slow version, using a cddrive:
https://www.anfractuosity.com/projects/cditter/
To transmit 'hello' it takes around 13 minutes ;)
Also be aware the light in the environment influences the light received by the camera (or emitted by the monitor surface, depending on the way you want to look at it). You may have to tweak the threshold if the light changes.
@OP: please do this, it will triple your data without additional costs. Don't ignore the color channels!
RGB
000 - black
001 - blue
010 - green
011 - cyan
100 - red
101 - magenta
110 - yellow
111 - whiteWhen using the real webcam (and not just passing files around), just one frame for calibration and no auto-white balance should be enough.
Tape drives these days are not priced into consumer range.
I'm not great with Python, but your code seems quite legible, and it doesn't look like there's any buffering or backpressure in place right now - which is perfectly reasonable for a fantastic proof of concept like this! Just a thought for when you next get around to hacking on it.
Rather than just being a fun little project, I could see there being a few practical uses for this: If you could modify the protocol so that the 'QR code' could dynamicly resize down to be in the worst case 1 pixel for the whole screen, you could potentially do line of sight communication using just laptops between tens of kilometers away[1]. There aren't a lot of situations where you'd need that, but I could see scientists on a remote research mission finding in handy to be able to just pull out their laptops and send messages between mountain tops by just double-clicking some kind of application.
A crappy webcam that could do 10 frames per second that was looking for an entire monitor in the on/off state could send O(10) bits per second which would be useful enough to send small text messages. If you used a telescope, you could actually send real amounts of data.
[1] https://www.technologyreview.com/s/539826/how-far-can-the-hu...
Edit: Upon close inspection of the article I linked, it says later in the article that you could only see the flame 2.76 km away, but I don't think that changes my point very much since a laptop screen would be brighter.
[1] https://en.wikipedia.org/wiki/Nyquist_frequency (updated link, s/rate/frequency/)
If I'm wrong please correct me.
The problem I have with QR codes is that they do not just work. You need to download a QR code reading app, this functionality should be hard coded at a deeper level, a notification appearing for QR codes no matter what you are doing with the device.
Many of the apps for QR codes do things like sneaking in affiliate marketing codes, this can malform a URL and do some redirection along the way for monetization purposes unknown.
Maybe QR codes deserve the video mode to become a protocol like this of sorts to be there for innovators with uses to be invented. QR codes are here to stay, they are too useful. They need acknowledgement as a thing and for phones to do a lot better out the box at hzving QR code readers baked into the OS.
[1] (2011) http://stephendnicholas.com/posts/quicker-video-qr-codes
[2] (2014) http://thruglassxfer.com/
[3] (2014) https://github.com/Neohapsis/QRCode-Video-Data-Exfiltration
[1] https://en.wikipedia.org/wiki/Timex_Datalink#Wireless_data_t... [2] https://youtu.be/2VmtPaiOBwI?t=1m3s
Alas, carrier pigeons are difficult to employ, but that's okay. Part of our goal is to demonstrate network protocols in a tactile way, since you see every frame that gets sent and received as it happens. (And read them, too - we're including a hex dump with strings). I think it's a fun alternative use for projects like mine and like the article's :)
Haven't thought about performance much at all, so I'm curious to see what the author has in mind there.
If anyone wants to steal the idea, please go for it! And send me a link to the video when you're done. :)
Wait, isn't that called FSO or LiFi :D?