MXChip IoT Dev Kit can be connected to the Microsoft cloud, Azure, to use the cognitive services. I planed to use it for different effects and had to change directions a few times as there were some challenges to achieve what I wanted to do. I'm writing down my progress as I go along. I started this project about a year ago. In an interview (https://www.cai.cam.ac.uk/news/when-physics-fuses-fashion) by my undergraduate college, Gonville & Caius of University of Cambridge, my interviewer casually mentioned that maybe I would make something for the college some day (perhaps a pair of glasses that records lectures or a gown that lights up in Caius blue?). I thought that was a great idea and decided to design something for our gown.
This is the script and library for the Keyword Spotting function. You can also download this from the GitHub of the Keyword Spotting project. However, the script in this folder contains a modification which include the NeoPixel as an indicator when a keyword is spotted.
I wanted to make a college shield to enclose the board and wear it on the gown. I was thinking of using 3D printing to design and print one but I'd already done 3D printing before. That wouldn't be anything new for me. Meanwhile, we ran an event at The Garage to make Perler bead art for Mother's Day. It would be fun to make the shield with Perler beads!
(The snakes mean "medicine".) So I started this long and meticulous process...Of course, in the middle of it, I questioned myself why I ever decided to do it...
But eventually it looked great. And I left a rectangular hole for the screen on the board to show.
And then you need to iron the beads so they melt and fuse together.
And then, of course, disaster happened when I tried to flip the shield to melt the other side. Because the first side was not completely melted, loose beads fell apart...
So I needed to start over... Once I start something, I don't give up.
It looks really nice at the end :)
The MXChip IoT Dev Kit has many sensors and a WiFi module on the board. You can program it to do many things.
At first I wanted to make this board into a translator. In Cambridge, there is a tradition for scholars to read Grace in Latin before formal dinners in front of everyone. I was honoured to read it five times. (I did mess it up twice! It was really embarrassing in front of the crowd. Probably no one remembers it but myself Xp) People don't speak Latin nowadays. We had to learn to pronounce by following a recording and getting help from the college Dean. Here is an example of the reading. I wanted to see if I could use the IoT Dev Kit to translate Latin into English. Unfortunately, there isn't a Latin library on Azure. But the test of making the board into a translator was successful. It does have many languages, including Arabic, Chinese, French, German, Japanese, Italian, Spanish, Portuguese and Russian. You can learn how to make one by following the GitHub tutorial in the link.
Here's a demo. The length of a sentence here is set to 1.5 sec so it doesn't translate anything longer. We tested a few languages in the video.
After the board was programmed into a translator, I wanted to fancy it up with some LED responses. Imagine reading Grace in the college hall while the gown lights up in Caius blue.
I wanted to integrate the music visualizing response be connecting the board to an LED strip from MakeFashion Stitchkit. The strip has holes along the edges, which can be sewn onto clothing using a sewing machine with a zipper footer. Before doing this, I needed to test if I could light up the LEDs with the MXChip IoT Dev Kit.
At first, it didn't work. (This photo also confused a lot of people. It looks as if the strip was pointing the wrong way. No, it's just the way I was holding it. The wires were twisted at the back. Sorry for the confusion. The arrows are pointing in the correct way.) The LEDs didn't light up because there was a driver missing.
BTW, the breakout board is the one for Micro:bit. It is compatible for MXChip IoT Dev Kit.
So I reached out to my colleague, Arthur Ma, who developed this board at Microsoft in Shanghai. He wrote a driver for NeoPixel LEDs. Please download the attached files attached for the script. Also a few changes need to be made on the Arduino settings:
Open file %LOCALAPPDATA%\Arduino15\packages\AZ3166\hardware\stm32f4\[your version]\platform.txt
Replace all “-O0” with “-O2”.
Then please connect the ‘S’ pin
of the NeoPixel stripe with the PA_5 pin in DevKit:
Then you can try the attached
sample and light up the stripe, which worked for me.
This is just to light up the LEDs. To make a music visualizer, I needed the microphone to detect volume, which controls how many LEDs should light up and their brightness.
It turned out that the AudioClass currently does not have driver for volume detection. This made me pivot my idea.