Magic Wand Learns Spells through Machine Learning and an IMU

Jennifer Wang likes to dress up for cosplay and she’s a Harry Potter fan. Her wizarding skills are technological rather than magical but to the casual observer she’s managed to blur those lines. Having a lot of experience with different sensors, she decided to fuse all of this together to make a magic wand. The wand contains an inertial measurement unit (IMU) so it can detect gestures. Instead of hardcoding everything [Jennifer] used machine learning and presented her results at the Hackaday Superconference. Didn’t make it to Supercon? No worries, you can watch her talk on building IMU-based gesture recognition below, and grab the code from GitHub.

Naturally, we enjoyed seeing the technology parts of her project, and this is a great primer on applying machine learning to sensor data. But what we thought was really insightful was the discussions about the entire design lifecycle. Asking questions to scope the design space such as how much money can you spend, who will use the device, and where you will use it are often things we subconsciously answer but don’t make explicit. Failing to answer these questions at all increases the risk your project will fail or, at least, not be as successful as it could have been.

Continue reading “Magic Wand Learns Spells through Machine Learning and an IMU”

The Solid State Weather Station

Building personal weather stations has become easier now than ever before, thanks to all the improvements in sensors, electronics, and prototyping techniques. The availability of cheap networking modules allows us to make sure these IoT devices can transmit their information to public databases, thereby providing local communities with relevant weather data about their immediate surroundings.

[Manolis Nikiforakis] is attempting to build the Weather Pyramid — a completely solid-state, maintenance free, energy and communications autonomous weather sensing device, designed for mass scale deployment. Typically, a weather station has sensors for measuring temperature, pressure, humidity, wind speed and rainfall. While most of these parameters can be measured using solid-state sensors, getting wind speed, wind direction and rainfall numbers usually require some form of electro-mechanical devices.

The construction of such sensors is tricky and non-trivial. When planning to deploy in large numbers, you also need to ensure they are low-cost, easy to install and don’t require frequent maintenance. Eliminating all of these problems could result in more reliable, low-cost weather stations to be built, which can then be installed in large numbers at remote locations.

[Manolis] has some ideas on how he can solve these problems. For wind speed and direction, he plans to obtain readings from the accelerometer, gyroscope, and compass in an inertial sensor (IMU), possibly the MPU-9150. The plan is to track the motion of the IMU sensor as it swings freely from a tether like a pendulum. He has done some paper-napkin calculations and he seems confident that it will provide the desired results when he tests his prototype. Rainfall measurement will be done via capacitive sensing, using either a dedicated sensor such as the MPR121 or the built-in touch capability in the ESP32. The design and arrangement of the electrode tracks will be important to measure the rainfall correctly by sensing the drops. The size, shape and weight distribution of the enclosure where the sensors will be installed is going to be critical too since it will impact the range, resolution, and accuracy of the instrument. [Manolis] is working on several design ideas that he intends to try out before deciding if the whole weather station will be inside the swinging enclosure, or just the sensors.

If you have any feedback to offer before he proceeds further, let him know via the comments below.

An introduction to inertial navigation systems

acc_sens

Long before ships relied on GPS to determine their location – and even before radio navigation systems such as LORAN, vessels relied on a still impressively sophisticated means of determining their position: inertial navigation. The theory is simple: if you keep a few very accurate gyroscopes and accelerometers on board, you’ll be able to calculate where you are relative to your previous position. Since electronic gyros and accelerometers are all over the place, [Sebastian] thought he would have a go at creating his own inertial navigation system.

The difficulty in using this method is that every gyroscope invariably has some error. Since the measurements from the gyros and accelerometers are integrated together, the error is also integrated, resulting in an increasing positioning error as time goes on. With a few clever algorithms and very good sensors, it’s possible to minimize this error.

[Sebastian] doesn’t have really great hardware – he’s only working with a accelerometer/gyro breakout board that’s good enough for experimental purposes. After reading the accelerometer data with an Arduino, he’s able to capture all the sensor data and read it into a Python script.

The next steps are to figure out a decent algorithm to integrate all the sensor data, and possibly add a barometer and magnetic compass for better compensation for errors. The project is still in the early phases, but seeing as how an inertial navigation system is one of the engineering triumphs of the early 20th century, we’re eagerly awaiting any progress updates.