Making the Internet of Towels (IoT) with Lenticular Images & QR codes

Anuradha Reddy
8 min readApr 24, 2021


In this article, I will share my process of crocheting a QR code into a towel. I call this piece the ‘Internet of Towels’ (yes, that’s right, IoT). In plain view, the towel looks just like any other knitted fabric with an abstract pattern on it, but when titled to 45 degrees, it reveals a QR code that is detectable to any smartphone camera or QR reading app. I created this project as part of my exploration into data technologies using only fiber arts and crafts (see, for example, my CryptoCrochet-Key project). The process behind it is the application of computational thinking to making and crafting. My aim was to devise something new and valuable through the creativity emerging from remixing materials, patterns, and abstractions with ideas, objects, and systems (Gaskins, 2021). This project combines two patterns or techniques namely lenticular images and QR codes, resulting in an absurdly new kind of computational object — the Internet of Towels.

(Left image) Internet of Towels when viewed head-on/flat; (Right image) Internet of Towels when viewed at a 45-degree angle.

Technique#1: Lenticular Images

Lenticular images in postcards (Image source:

Lenticular images are optical illusions that trick our eyes into seeing three-dimensional images from two-dimensional paintings or photographs. It was first demonstrated by the French painter Bois-Clair in 1692 and later applied to photography as the “barrier” technique in 1903 by Frederick E. Ives (Roberts, 2003). While this technique is popularly seen today in children’s toys and travel postcards, it was not so long ago employed in World War II for military instructional products utilising 3D imaging (see the patent for ‘Process of assembling in the art of changeable picture display devices’). Lenticular images are otherwise known as shadow techniques as they can be useful for hiding information in plain sight. The technique has been recreated in several other media forms including paper folding, knitting, and crochet (also known as shadow/illusion knitting or shadow crochet).

(Left) How autostereoscopic lenticular displays work (image source:; (middle) Lenticular barrier technique with paper folding (image source: (right) Shadow/illusion knitting (image source:

Technique#2: QR Codes

An example of contemporary uses of QR codes for COVID-19 vaccine passports (image source:

A different optical technique for hiding information in obscure patterns are QR (Quick Response) codes. QR codes are two-dimensional machine-readable optical barcodes that contain information. We use them everywhere today — from supermarket checkouts to flight boarding passes, advertising and most recently in COVID-19 vaccine passports.

With the increased use of QR codes, there has also been an unfortunate increase in the number of cameras in our daily surroundings. Among other forms of tracking and analytics (e.g. facial recognition, vehicle number plate recognition), these cameras now include software that detects QR codes “in the wild” (Lerner et al., 2015). It means that even if only a part of a QR code becomes visible to a camera, the software learns to effectively recognise the pattern and derive linked information.

The screenshot is taken from the peer-reviewed article “Fast-Component Based QR-Code Detection in Arbitrarily Acquired Images” by Belussi & Hirata (2013) (

While there can be some critical situations where data-gathering machine intelligence is justified (e.g. disease prevention, weather prediction), quotidian settings such as alleyways, t-shirts, building walls, or playgrounds are not places where continuous tracking of collateral data is necessary. This made me wonder if I could use lenticular image techniques to hide QR codes from surveillance cameras “in the wild”. As mentioned above, there are many ways to do it, but I chose to explore it using my amateur skills in crochet.

Combining the two techniques

Using crochet to computationally think with two different optical techniques adds layers of complexity to the project. Unlike knitting or weaving, crochet is a hand-crafting practice and it does not share computational history with weaving looms, knitting machines, and punch cards. But at the same time, similar to knitting, crochet incorporates patterned codes or syntaxes that resemble computer programming, except with a more-than-binary logic. The challenge was to transform the material (yarn) using only my handcrafting skills into machine-readable QR code patterns.

Lenticular crochet

In my first trials with shadow crochet, I tinkered with the height of the lifted blue stitches for each row.

To achieve the lenticular effect in yarn, the first technique I trained myself on is shadow/illusion crochet. While several illusion knitting tutorials are available on the Internet, I could find just one easy-to-follow tutorial for shadow crochet. However, I was not satisfied with my trials from that tutorial as I felt the lenticular image did not appear properly hidden. It took me several tries to work out a method that reasonably blended the image into the overall yarn pattern. Basically, I raised the height of the lifted stitches so that the rows woven behind those stitches are only visible when the object is viewed head-on and they become invisible when viewed at an angle. I achieved this by replacing all the half-double crochet stitches in the tutorial with double-crochet stitches.

Data Matrix

Once I had worked out the technique, I outlined a lenticular yarn pattern for a QR code. I started out with a smaller 10x10 data matrix (not a QR code — you can create one here) to see if it would work. This was a struggle, but I managed to learn a couple of dos and don’ts along the way. For example, I realised that having a border around the data matrix in a different coloured yarn than white or black is helpful for the camera to clearly ‘see’ the pattern. It was also necessary to scale up the pattern by doubling the number of crochet stitches for each pixel on the matrix. This is because hand-crocheted stitches do not vertically align well and this kind of precision is necessary for computers to detect machinic codes (non-human-readable). Doubling the stitches also makes the pattern horizontally larger and therefore any tiny misalignments are not as easily noticeable.

Experiments with a 10x10 data matrix — the stitches were misaligned, it did not work great!

QR code

With these learnings, I iterated on a 25x25 matrix QR code (you can generate one from here), whose destination I chose to link to this very article :) A recursive IoT towel that links to a tutorial of its own making! Going back to the drawing board, I manually created the lenticular yarn pattern in Microsoft Excel using empty and coloured cells (one cell is one stitch).

I used Microsoft Excel to make the lenticular yarn pattern for the 25x25 QR code. Two cells/stitches = one pixel of the QR code.

I began crocheting from bottom to top using three coloured yarn skeins (red, white, and black) and I managed to complete about two rows each day. The entire towel took about 30 days from start to finish (excluding the initial trials). Despite the joyful start, making the towel was a suspenseful process because I did not know in advance if I would succeed. The point at which I finished the last stitch signified a moment of truth, aaaand I couldn’t believe myself when the detection worked!

I shared the project on Twitter and soon after I learned how many individuals from different backgrounds and disciplines could relate to it. While some spoke of its simplicity and everyday utility, others related my process to STEM education, and some more claimed that the project made them think differently about data collection and representation. It seems that making with vernacular craft skills that most people will understand can go a long way for inclusivity and fostering dialogue between different disciplines, practices, and communities.

Make a lenticular towel pattern for your custom QR code using the Yarn Arts Software

It was through one of the Twitter responses that I came across the block-based programming software Snap! and the CSDT (Culturally Situated Design Tools) libraries for it. One of them is the Yarn Arts software which I decided to use for automating the manual process of creating a lenticular yarn pattern for a custom QR code. It was the first time I tried block-based programming and it was surprisingly manageable (I relied a lot on the documentation). Meanwhile, @arturo182 helped create a little script that translates any QR pattern into binary ones and zeros and outputs a simple text file (.txt). This file can be imported to the block-based program I created which then automatically makes the lenticular yarn pattern for that specific QR code ready for use.

And this is all! I know the project requires motivation and commitment, and whether or not you give it a shot, I hope this article brought some new knowledge and additionally new inspiration for thinking computationally alongside your everyday crafting skills and creative practices. If you have feedback or a project, an idea, or an article that you’d like to share, please contact me via Twitter!

Licensing information

Internet of Towels is certified open hardware.

Reference books and articles

Gaskins, Nettrice. R. (2021). Techno-Vernacular Creativity and Innovation: Culturally Relevant Making Inside and Outside of the Classroom. MIT Press.

Roberts, David. E. (2003). History of lenticular and related autostereoscopic methods. Leap Technologies. Hillsboro, 16.

Lerner, Adam., Saxena, Alisha., Ouimet, Kirk., Turley, Ben., Vance, Anthony., Kohno, Tadayoshi., & Roesner, Franziska. (2015, May). Analyzing the use of quick response codes in the wild. In Proceedings of the 13th Annual International Conference on Mobile Systems, Applications, and Services (pp. 359–374).

Belussi, Luiz. F., & Hirata, Nina. S. (2013). Fast component-based QR code detection in arbitrarily acquired images. Journal of mathematical imaging and vision, 45(3), 277–292.