GitHub Code
The BeagleBone Black (BBB) linux board with a USB-WiFi module takes place of the old dashboard controller. I ripped off the top dashboard of the treadmill which left only a single cable going to the motor controller. This cable provides 12v power and receives the motor speed and incline signals. The desktop is provided by a Mac Mini and allows me to program code while walking. I pretty much zone out while I code so I stop noticing I'm walking and getting exercise so *bonus*!!!
I wrote a Node.JS program that provides a web-sockets interface and controls the PWM signal to the motor controller, a MC21xx series motor controller from NordikTrak. Apache server on the BBB serves up an interactive web page that keeps a constant connection to the Node.JS service via web sockets. So I can control the treadmill from the Mac browser or from the BBB's LCD+Touchscreen. The LCD interface is the same web interface on Chrome running in Kiosk mode in x-windows.
I bought a $35 board from Home Depot that looks like kitchen "chopping block" but made of soft-wood. Real chopping block would have been nicer but was too expensive for me to justify. The softwood board was *too* soft and immediately began to sag so I screwed some right-angle aluminum strips to the underside which secured it very well. I cut rectangular hole into the wood to recess the monitor but not necessary.
I caught a nice break when a standard door hinge from Home Depot fit the monitor perfectly securing it to the wood table. The hinge went in place of where the stand normally attaches on this HP Envy 27" monitor.
I power the BBB using the DC-DC voltage regulator module, wiring the 12v from the old cable and it's 5v output into the BBB board. I wired the speed and incline signals into the BBB with just a 50ohm resistor in series. There is a speed feedback signal from the controller (measures actual speed) but I just ignore it. Perhaps I'll use it in the future but to be honest it is not missed since with the exception of a bit of wind up delay the speed controller matches desired speed.
Comments