Project 10 : Interface and Application Programming
This week I wanted to program some application to interact with a 3D accelerometer for the final project (possibly a segway). I wanted to start with Neil's board and build from there.
Unfortunately making the accelerometer board work turned into a full-blown debugging venture, and by the end I had no time left to make my own application. I will get back to finishing this as soon as possible.
I started by milling and soldering the board. The soldering started with the accelerometer, which was very tricky to put on. I initially was soldering wrong and ended up blasting the board with the heat gun:
Regardless the final board came out nicely:
However when trying to use the board with the python script provided by Neil, I ran into several issues.
First one had to find the port to input to the script. This can be done by typing the following in terminal and coyping the output:
After this step the script would run withone of three errors: blank window, all values stay frozen at .33, or x is the only measure with value and it stays fixed.
It turns out this meant that my accelerometer was incorrectly soldered, so I had to learn to reflow solder correctly:
- There must be a tiny bit of solder on both sides: all the accelerometer pads and the board pads.
- The ground pins indicate in which direciton the sensor must be placed
- When lowering the accelerometer, hold its pads at an angle so as to leave them exposed to the heat gun
- Ideally surface tension pulls the sensor into the right position; in my experience, this step required placing it very precisely on the board.
- the pads are extremely close together, so shorts are very easy to make: a first easy way to troubleshoot is to make sure through a voltmeter that no short is created.
There were several unsuccessful tries, but the board program finally worked after a while! However there were two problems: first the delay was huge (about 10 seconds). Second, the program only worked about once out of ten; the other times I would get one of the original errors.