Back to Parent

Outcome


My approach to this project has gone through many changes to reflect the various challenges that have come up. 

The original idea was to have 'ears' on the plant, and then rotate left and right until the left and right ears inputs were somewhat balanced. However, this proved difficult for several reasons. Firstly, I quickly found out that sound travels in waves, and therefore a single measurement might snag the top or bottom of the wave. To solve this, I took multiple samples (15), each ten milliseconds apart. I then averaged those measurements to try and level out the rough volume of each sensor.

Another problem came up with the sensors themselves. They were too low of quality to pick up any sensitive-enough data disparity that I could use to find the sound proximity. Plus, we didn't have 2 of any kind of sensor at the Studio. So I ordered 2 sound sensors from Amazon, and luckily that worked out. I used the Sparkfun mic sensors, specifically the Envelope port.

Then came another problem. Getting the mics to pick up sound of any sort was tremendously difficult. First it was improper soldering. Then it was a Particle login/update problem (solved by going into Safe Mode, by the way). Then it was a calibration issue to get the two sensors on the same level field. After that, it was an issue with directionability, solved by creating "cones" that direct the mic in certain angles. 

Once I figured all those issues out, which took the bulk of the project to be honest, I constructed the first iteration of the creation. This didn't go as planned either. I learned that the sensors were too large to fit inside the plant area I had on hand. So I created what appeared like "glasses" to go around the outside of the planter to hold the sensors. Then came another issue. The Servo was too weak to rotate the weight of the plant.

So back to the drawing board. I decided to construct a complicated stand that would suspend the plant and all its weight about an inch off the ground. Then, under the plants frame, the Servo would spin a long arm extending out around from under the base. This arm held up the glasses, so as it spun, so did the exterior structure (containing the 'ears')!

This also failed though, revealing the biggest problem I faced during this project. The Servo is designed to hit an exact angle, and with the awkward weight of the arms, it would vibrate trying to overfix passing the perfect angle mark. Even with no weight, the  Servo made minor vibrations that caused huge issues for the mic. To give an idea, ambient noise in a silent room is about '50' on the mics. Loud music directed at the mics produced about '600' or so. The vibrations from the Servo, seemingly small to us, caused a '1200'+ reading. 

It was once again time to go back to the drawing board. I found 2 spare skateboard bearings, and built a plank between them with popsicle sticks. I then used more popsicle sticks to keep my 'axle' level as it spun. The stabilizing sticks did cause some resistance, but since the bearings held nearly all the weight of the plant, the Servo had no trouble spinning now. Knowing that I couldn't put the sound sensor on the rotating piece due to vibration, I placed the 'ears' around the corners of the base. This made a huge improvement in the system, and I finally got accurate readings. Though, the code had to be rewritten.

The code went from rotating left or right until the ears were somewhat balanced to finding the ratio of left to right noise, and then placing the servo at an angle accordingly. It doesn't work in 360*, but would with more sensors. This is probably how I should have coded it to begin with since all I had to do was map the sensor input to correlating Servo angles. 

I then finished the code and spent several hours tweaking the variables to get the best performance I could in the room I was in at the time. I would have liked to add a 'self calibration' window at setup of the code, so that whenever it turns on it learns a new 'ambient' value and can measure accordingly, but ran out of time. In different rooms with different levels of people, noise, and acoustics, the device would perform very differently. 

This project proved to be a massive challenge (more than I was expecting) but produced a very fun, captivating little device that meets its goals. The users are drawn in and interested. They are aware of its data capture, but it keeps its friendly attitude. I really need to add googly eyes. 

Enjoy building The Listening Plant yourself using the code down below!

Show Advanced Options
Show Advanced Options
Screen shot 2019 11 07 at 11.20.53 am
Show Advanced Options
Drop files here or click to select

You can upload files of up to 20MB using this form.