REVIEW – Computer programming is often hard for young students to appreciate with abstract assignments. It is also historically less compelling for girls because of stereotypes and influence from peers. The imagiLabs imagiCharm is a fashion accessory that makes Python programming tangible and sharable. I have one to review. Read on to see what I think!
What is it?
The imagiLabs imagiCharm is a rechargeable Bluetooth device with an 8 x 8 array of full color and dimmable LEDs hidden by a silicone shell. The device is attached to a lanyard that may be attached to apparel or worn on clothing. The LEDs illuminate in a pattern that is programmed by a companion imagiLabs app on a device. The companion app is a platform where the user can learn the basics of Python programming, create unique programs, and share the content on the imagiLabs app.
What’s in the box?
- imagiCharm and lanyard
- welcome letter / lamp matrix template
- two stickers
- micro USB charging cable
- 500mAh battery for up to 6 hours of use
- 64 element RGB LED screen
Design and features
The imagiCharm comes in a colorful gift box that is adorned with a picture of the imagiCharm on the cover. While all of the other graphics on the box are matte the image of the array of LEDs on the front of the imagiCharm is glossy. Under certain lighting conditions, this makes the array look like it is glowing.
The sides and bottom are labeled with text describing the principles of the imagiCharm and the motivation of imagiLabs for bringing this device to market. It certainly raised my curiosity about what is inside and elevated my expectations that this item will encourage an interest in programming.
The imagiCharm is about 2 inches square by about 5/8 inch thick and weighs 40 grams with the lanyard attached. It is about the size of an Apple Airpods case. The front and sides are covered by a translucent silicone case but the back is open and exposes the plastic core of the imagiChartm.
There is a micro USB port on the base for charging. The front has a power on-off symbol covering a small switch located on the plastic body within.
The main feature of the imagiCharm is the array of 64 RGB LEDs hidden under the front of the device. The silicone cover acts as a projection screen for the LEDs and allows the pattern to be observed without glare coming from the LEDs below. The LED pattern is visible but barely readable in direct sunlight.
The body is removable from the silicone shell so that the shell may be cleaned.
The body is fastened together with metal screws.
It seems that the body could have also been assembled with snap-fit closures but the use of screws seems like it is an invitation to see what can be found inside the device. The printed circuit board (PCB) can be seen upon opening the device. Along the top of the PCB is a quote from Steve Blank, the renowned entrepreneur, “Disruption on the first day always looks like a toy.”
This quote summarizes some of the expectations of the young programmers working with the imagiCharm. Today they are programming LEDs on a toy, but in the future, they could be programming just about anything else. On the opposite side of the PCB, the system on a chip (SOC) by Espressif can be seen along with several other integrated components and the BlueTooth antenna.
The imagiCharm doesn’t have a setup because the device communicates through BlueTooth Low Energy (BLE) and does not need to pair to the device with the imagiLabs app. The only requirement is that the device is charged periodically. If the device is left on too long it will indicate the battery is low and will not operate.
When charging there is an amber LED that is illuminated.
When charging is complete a green LED is illuminated. The imagiCharm draws 2.2 W while charging and takes about 2:20 to charge.
If the device is left on too long without an uploaded program it will go to sleep (but I’m not sure how much power this is actually saving)
The imagiCharm communicates exclusively with the imagiLabs app, which is compatible with Android 9 and iOS 13. The app is really targeted towards girls from 9 – 13 years old.
Once the account is all registered all of the programs are listed in a project list.
When programming in the imagiLabs environment the keyboard has a list of commands.
The app requires an email and creates an account with imagiLabs so that generated code can be saved and shared. The account also allows development on the imagiLabs web app. To upload content to the imagiCharm the code must be run and saved to the account first. Once the content is ready to be uploaded the imagiCharm must be turned on by a short button press to the power button. An animation of the imagiCharm waking up with eyes opening and smiling is followed by a two digit number in a specified color displayed on the screen. This is part of the BlueTooth ID of the charm. Once the correct imagiCharm is identified on the screen the upload begins and is then confirmed once it is successful. While the upload is in progress a blue BlueTooth icon is displayed on the imagiCharm screen.
A status line at the bottom of the screen provides feedback on any compilation errors. Errors are identified one at a time so code that requires many corrections may take several attempts before it can be executed. Once the errors are resolved and the code is verified, it can be previewed on the device or loaded to the imagiCharm. Once the code is executing on the charm it will continue to run until the device is turned off or the battery expires. The charm is not able to interact with the user and there are no environmental sensors in the unit. Also, animations are limited to 100 frames.
imagiLabs has a dedicated website for educators and for individuals here. The website includes code project examples, 30 code challenge ideas, terminology explained, imagiLabs Python library, and a link to the imagiLabs YouTube Channel and other social media. I think that the resources provided by imagiLabs create a great learning environment for children.
I didn’t experience any load errors or the inability to pair while I was using the imagiCharm. imagiLabs has a web app for programming as well so that educators and children who don’t have a mobile can still use the IDE. This website, which is in open beta testing, should be able to load to the imagiCharm but I was not able to get it to work.
The output on this device is limited but that is perhaps one of the most valuable lessons. Systems generally have one type of limitation or another. For instance, a program to calculate the Fibonacci sequence to all numbers below a cutoff value could be as simple as this:
def fib(n): a, b = 0, 1 while a < n: print(a, end=' ') a, b = b, a+b fib(20)
But because the imagiCharm does not support print and has a limited buffer for text the program must be entered like this:
def fib(n): x, y = 0, 1 s="" while x < n: s = s.replace(s,s + str(x)+" ") x, y = y, x+y if len(s) > 40: s="too big" scrolling_text(s,M) fib(20)
The output of the program above is displayed below:
the needed changes help students learn that there are always limitations to systems and that you need to be creative to work within the provided constraints. Putting the error trapping on the code above is one example of how imagiCharm teaches good programming.
What I like
- Unique device and environment
- Simple concept teaches valuable lessons
What I’d change
- Run the last loaded program on each start
- include some sort of trace functionality
The imagiCharm and imagiLabs is a great tool in the arsenal of parents and educators to introduce programming to children. Programming the imagiCharm is fun and challenging. I imagine that if the device is shared between children then it will be used and shared even more. If you’re looking for a novel way to encourage learning and developing a computer programming skill for your children, I recommend the imagiLabs and imagiCharm.