Hackaday Prize Entry: CPAP Humidifier Monitor Alarm

CPAP (Continuous Positive Airway Pressure) machines can be life-changing for people with sleep apnea. [Scott Clandinin] benefits from his CPAP machine and devised a way to improve his quality of life even further with a non-destructive modification to monitor his machine’s humidifier.

With a CPAP machine, all air the wearer breathes is air that has gone through the machine. [Scott]’s CPAP machine has a small water reservoir which is heated to humidify the air before it goes to the wearer. However, depending on conditions the water reservoir may run dry during use, leading to the user waking up dried out and uncomfortable.

To solve this in a non-invasive way that required no modifications to the machine itself, [Scott] created a two-part device. The first part is a platform upon which the CPAP machine rests. A load cell interfaced to an HX711 Load Cell Amplifier allows an Arduino Nano to measure the mass of the CPAP machine plus the integrated water reservoir. By taking regular measurements, the Arduino can detect when the reservoir is about to run dry and sound an alarm. Getting one’s sleep interrupted by an alarm isn’t a pleasant way to wake up, but it’s much more pleasant than waking up dried out and uncomfortable from breathing hot, dry air for a while.

The second part of the device is a simple button interfaced to a hanger for the mask itself. While the mask is hung up, the system is idle. When the mask is removed from the hook, the system takes measurements and goes to work. This makes activation hassle-free, not to mention also avoids spurious alarms while the user removes and fills the water reservoir.

Non-invasive modifications to medical or other health-related devices is common, and a perfect example of nondestructive interfacing is the Eyedriveomatic which won the 2015 Hackaday Prize. Also, the HX711 Load Cell Amplifier has an Arduino library that was used in this bathroom scale refurb project.

Bike Power Meter with Crank-mounted WiFi Strain Gauges

In any motorsport, the more you know about how the engine is performing, the better a driver is likely to do in a race. That holds for bicycles, too, where the driver just happens to also be the engine. There are plenty of cheap bike computers on the market, but the high-end meters that measure power output are a bit pricey. [chiprobot] is looking to change that with a home-brew, low-cost bike power meter.

The project still appears to be in the proof-of-concept phase, but it’s an interesting concept for sure. The stock crank arms are carefully fitted with two pairs of tiny strain gauges. The gauges are wired in a Wheatstone bridge arrangement, with one gauge in each pair mounted perpendicular to the force on the crank to serve as a static reference. Output from the bridge is fed to an HX711 instrumentation amplifier. The demo video below shows how sensitive the bridge and 24-bit amp are.

The goal is to send crank data to a handlebar-mounted UI via WiFi with a pair of ESP8266 modules. We like the idea of a bicycle area network, but [chiprobot] has his work cut out for him in terms of ruggedizing and weatherproofing all this gear. We’ll be sure to keep an eye on this project. In the meantime, there’s plenty to learn from this bike power meter project we covered last year.

Continue reading “Bike Power Meter with Crank-mounted WiFi Strain Gauges”

Father and Son Fix a Scale

It’s awesome when you can tag-team with your dad to fix stuff around the house. [Ilias Giechaskiel], with help from his dad, did a complete refurbishing of a broken bathroom weighing scale, but not before trying to fix it first. The voltage regulator looked bust. Powering the rest of the circuit directly didn’t seem to work, and none of the passives looked suspect. Most of the chips had their markings scratched off and the COB obviously couldn’t be replaced anyway.

Instead of reverse engineering the LCD display, they decided to retain just the sensor and the switches, and replace everything else. The ATtiny85 seemed to have enough IO pins to do the job. But the strain-gauge based load cell, connected in a bridge configuration, did not have a signal span large enough to be measured using the 10 bit ADC on the ATtiny. Instead, they decided to use the HX711 (PDF) – a 24 bit ADC with selectable gain, specifically meant for use in weighing scales. Using a library written for the HX711 allowed interfacing it to the Arduino easy. The display was built using a 4 digit 7 segment display driven by the MAX7219. A slightly modified LEDcontrol library made it easy to hook up the display to the ATtiny. The circuit was assembled on a prototyping board so that it could be plugged in to another Arduino for programming.

Since they were running out of pins, they had to pull out a trick to use a single pin from the ATtiny to act as clock for the display driver and the ADC chip. Implementing the power-on and auto-off feature needed another interesting analog circuit block. Dad did the assembly of the circuit on a prototype board. In hindsight, the lack of IO pins on the ATtiny limited the features they could implement, so the duo are planning to put in an Arduino Nano to improve the hack. If you’re ever stuck with a broken scale, he’s made the schematic (PNG) and code available for use.

Wirelessly Weighing Plants with the ESP8266

There’s a good number of hacks, and commercial products, for telling you when a plant needs watering. Most of them use an ADC to measure the resistance in the soil. As the soil’s moisture content drops, the resistance increases. High impedance, dead plant.

[Dani]’s Thirsdee takes a different approach to plant health monitoring. Instead of measuring resistance, it simply weighs the plant. As the soil dries up, it gets lighter. By measuring the change in weight, the amount of water in the pot can be estimated.

Thirsdee uses a load cell to measure the weight. It’s read using an HX711 ADC, which is controlled by a NodeMCU. This development board is based on the ESP8266 chip. Since Thirsdee has WiFi, it can push notifications to your phone and log data on ThingSpeak. If you’re looking at the plant, an OLED shows you the current status of the plant. For us viewing from home, we can see a graph of [Dani]’s plant drying out in real time.

[Dani] provides us with a list of suppliers for the parts, and all the source code on Github.

THP Semifinalist: Honeybee Hive Monitoring

[Ken] keeps his bees remotely and can’t check on them as often as he might like to. He wanted some way of knowing when they were out of space, because that slows down their nectar collection. He knew he could do this by remotely tracking the weight and internal temperature of the hives.

His first prototype revolved around a postal scale that couldn’t be turned off between readings. This meant that he needed a bigger solar panel and battery than originally intended. For about a week, the hives were sending data to Thingspeak through an Arduino Fio over XBee.

The current iteration measures the load cells with an HX711 24-bit ADC. This sends the scale data to an Apitronics Bee unit, which adds in temperature data from the hives and sends everything to an Apitronics Hive. [Ken] will also stream it to a cloud service so he can monitor them in real-time. [Ken] wants to see as much data as possible and contribute to NASA’s HoneyBeeNet program, so he has a second Bee unit set up to handle a nearby Apitronics weather station.

SpaceWrencherThe project featured in this post is a semifinalist in The Hackaday Prize.

A Tweeting Litter Box


How can you not be interested in a project that uses load cells, Bluetooth, a Raspberry Pi, and Twitter. Even for those of our readers without a cat, [Scott’s] tweeting litter box is worth the read.

Each aspect of this project can be re-purposed for almost any application. The inexpensive load cells, which available from eBay and other retailers, is used to sense when a cat is inside the litter box. Typically sensors like the load cell (that contain a strain gauge) this use a Wheatstone bridge, which is very important for maximizing the sensitivity of resistive sensor. The output then goes to a HX711, which is an ADC specifically built for load cells. A simple alternative would be using an instrumentation amplifier and the built-in ADC of the Arduino. Now, the magic happens. The weight reading is transmitted via an HC-06 Bluetooth module to a Raspberry Pi. Using a simple Perl script, the excreted weight, duration, and the cat’s resulting body weight is then tweeted!

Very nice work! This is a well thought out project that we could see being expanded to recognize the difference between multiple cats (or any other animal that goes inside).