JavaScript Gauge Cluster

I once had a 1987 Mazda RX-7 that I paid only $700 for. It ran, drove, turned, and stopped, but it did absolutely none of them well. I loved the Wankel rotary engine in that car, and despite a completely worn out suspension, the car felt so perfectly balanced right in the middle of a drift.

The wiring in the car had clearly been tampered with over the years. Being the inexperienced and optimistic guy that I was at the time, I decided to rip all of the factory wiring out with the intention of reworking the entire car. Needless to say, that project never happened, but I did end up learning a lot.

This gauge cluster was the best part of that project, and it was supposed to be the cluster for my never completed RX-7 project. Using an Arduino compatible Teensy microcontroller, I was able to send data from real world inputs to a Node.js server. The server was then able to host a web page and send this data to its JavaScript canvas and display it on gauges in real time.

Mostly, I just like the way it looks, but the project taught me about how to render images on screen strictly through JavaScript, and it was my first experience with pushing data to a web page in real time.

Bluetooth Remote Start

This was a project I had wanted to do for a long time. It’s a Bluetooth remote start box that I built using an Arduino compatible Teensy microcontroller, 4 logic-level relay boards, a Bluetooth serial module, a generic metal case, and a few speaker connections from Radio Shack (RIP).

The remote start was programmed to flick relays in response to serial commands sent from my phone over Bluetooth. I could independently turn on accessory power, start the car, and shut it off. The app I used was BlueTooth Serial Controller, and it allowed me to send full serial strings with a simple button press.

In order to make all of this work in my 1992 Saturn SC2 with a manual transmission, I had to bypass the clutch safety switch, but this had been fine since I was very used to keeping the car in neutral and setting the emergency brake. This worked great until I accidentally left it in gear, and upon hitting the button on my phone, my car drove itself into the window of a local restaurant… Thankfully, the divide between the upper an lower window panes stalled the car, and nobody was hurt. I learned a lot about safety that day, and I immediately removed the box from the car. If I were to do it again, I would need to make sure I had a way of making sure the car was truly in neutral before having the microcontroller blip the starter.

Touch Table

So, I’ll start this blog off with my high school senior project. Back in 2009, when I was trying to decide what to do, I had initially wanted to build an Android tablet. That was a little too ambitious, and I didn’t get started early enough… The spring of 2010 came, and I really didn’t know what I was doing with my Texas Instruments OMAP 3 development board, so I chose a change of direction. I have to say that I am very happy with the results of this project. It wowed and amazed my classmates, and I had a blast building it.

This touch table works by sensing infrared light with a camera (a modified webcam with a light filter that only allows infrared light to pass through it) positioned in the base of the table facing up. The display is provided from a projector bouncing off of a mirror to get a further throw distance. The software Community Core Vision is able to calibrate touch inputs by sensing bright dots in the camera’s video and making a reference to where they are in relation to the display output.

It was all pretty neat. The original version did not work with touch, but I was able to put some IR LEDs into some gutted highlighters with momentary buttons to make them light up. It was actually really cool to be able to hover over the screen with the pens, but I really wanted to get reflective touch working, and the version in this video has a very bright infrared backlight that my fingers reflect when they come in to contact with the drafting paper surface.