[Darell] recently purchased a fancy new bathroom scale. Unlike an average bathroom scale, this one came with a wireless digital display. The user stands on the scale and the base unit transmits the weight measurement to the display using infrared signals. The idea is that you can place the display in front of your face instead of having to look down at your feet. [Darell] realized that his experience with infrared communication would likely enable him to hack this bathroom scale to automatically track his weight to a spreadsheet stored online.
[Darell] started by hooking up a 38khz infrared receiver unit to a logic analyzer. Then he recorded the one-way communication from the scale to the display. His experience told him that the scale was likely using pulse distance coding to encode the data. The scale would start each bit with a 500ms pulse. Then it would follow-up with either another 500ms pulse, or a 1000ms pulse. Each combination represented either a 1 or a 0. The problem was, [Darell] didn’t know which was which. He also wasn’t sure in which order the bits were being transmitted. He modified a software plugin for his logic analyzer to display 1’s and 0’s on top of the waveform. He then made several configurable options so he could try the various representations of the data.
Next it was time to generate some known data. He put increasing amounts of weight on the scale and recorded the resulting data along with the actual reading on the display. Then he tried various combinations of display settings until he got what appeared to be hexadecimal numbers increasing in size. Then by comparing values, he was able to determine what each of the five bytes represented. He was even able to reconstruct the checksum function used to generate the checksum byte.
Finally, [Darell] used a Raspberry Pi to hook the scale up to the cloud. He wrote a Python script to monitor an infrared receiver for the appropriate data. The script also verifies the checksum to ensure the data is not corrupted. [Darell] added a small LED light to indicate when the reading has been saved to the Google Docs spreadsheet, so he can be sure his weight is being recorded properly.
We’re never really sure what to call these things. When we say “back up camera” it sounds distinctly like a redundancy system for when the primary camera fails to work. But it is used for when you move in reverse in an automobile. [Jeremy Blythe] built the distance sensing video system using a Raspberry Pi board as the brain.
The flexibility of Linux and the power of the RPi board ended up making it pretty easy to get everything working together. He’s using a Microsoft Lifecam Cinema HD camera, which connects to one of the USB ports on the board. Just above that you can see the infrared distance sensor which is connected to the RPi’s GPIO header using one of Adafruit’s Pi Cobbler breakout boards. This also facilitates the connection to the 176×220 color LCD screen.
In the video after the break you can see [Jeremy] testing out the system by moving his hand in front of the sensor. Python is used to grab the image from the camera, draw a circle on it, and overlay the distance in centimeters at the bottom. Once his hand is within 30cm the overlay turns red and the work STOP is displayed. Pretty neat!
Continue reading “Building a vehicle parking camera”
Occasionally when a device breaks, the defect is obvious. Whether it is a blown fuse or a defective capacitor, generally the easy to see stuff is easy to fix. When a problem is more subtle, or when doing some more advanced tasks like adding functionality to a device, greater knowledge about a circuit board is required. While there might be details hidden in lower levels of PCB, often just knowing the mounted components and layout of the outside layers can be enough to create a rough schematic of a device. [Throbscottle] has put together an excellent guide for procedurally breaking down a photo of a board and turning it in to something useful. The guide utilizes some open source image processing software such as the GIMP, Inkscape, and Dia, all of which are widely available. Keep in mind this reverse engineering can be a time consuming process, but will almost definitely reward those patient enough to work through it.
[Thanks to everyone who sent this in!]
[Dan Fruzzetti’s] daughter was delighted to get a motorized vehicle from her Grandparents, but [Dan] was unimpressed with the stock features. The lead-acid battery supplied remarkable life between charges, but the vehicle only had one feature: a go button that routed juice to the bipolar motor. After the break we’ll look at his improvements to the drive train, steering, and cosmetics.
Continue reading “Improving a motorized toy”
One of the best feelings in the world is when one of our posts inspires a fellow hacker to plan, create, and execute his or her own project.
[Russ] let us know about his Frustromantic Box which he gained inspiration from the original Reverse Geochache we posted about. For those out of the loop, the box is locked and will only open in a certain location. The current distance to the location is displayed on the screen when a button is pressed, and usually there is a limited number of button presses (3 presses for those that know geometry, 50 for everyone else). As soon as the box is at location, it will open.
The Frustromantic Box uses an Arduino, classic HD44780 display, a servo, and the pièce de résistance EM406 GPS. All built in time to frustrate his wife for Christmas.