WiFi Bamboo Bathroom Scale

by NodeMCU12e in Circuits > Arduino

836 Views, 9 Favorites, 0 Comments

WiFi Bamboo Bathroom Scale

scale.gif

Records weight online via MQTT. Also displays time, date, inside temp, outside temp data received from a second existing controller.

Accurate and repeatable to 0.1 lb. Far superior to the old digital scale.
Calibrated with my weight using the doctor's office scale.

WiFi Bamboo Bathroom Scale

Bamboo Bathroom Scale.JPG

It's made from a $4, nice looking, warm on the feet, dollar store bamboo cutting board. The slot for the display already existed. The onboard NodeMCU blue LED is used as a night light under the scale.

I used a $6 hi-res very bright OLED SSD1306 128X32 display. This is a small 0.91" display so to make it readable from 6 ft I used the largest font. Large OLED displays would be even better but they are not inexpensive. Dark 1.0 mm lexan is used in front of the display and dark foam rubber behind it. This hides the board except for the OLED display. When it's off all you see is black. The lexan is inset into the slot so you don't see the edges.

https://hackaday.io/project/182014-wifi-bamboo-bat...

Mount the Components on the Underside of the Cutting Board

HX711 and load cells.png
Scale underside.jpg
ssd1306 128X32.png

Total cost of components about $20.

I mounted the load cells on rings of 0.2" plywood to allow the center to flex. 2.25" OD 1" ID. Cut with hole saws. Assembled with hot glue.

Small squares of plywood siliconed to the center of the load cell for mounting feet. A thin layer of silicone makes them anti-skid. The rings and feet raise the board enough to get all the components underneath as shown. Same total height as the old scale. 1.25". The rings are mounted inboard so it looks like the board is floating.

Program Existing NodeMCU to Send Data and New Scale NodeMCU to Receive, Display and Record Weight Online.

Scale schematic.png

For programming I just added the HX711_basic_example applicable code to my typical NodeMCU program.

ESP-NOW sends data directly between microcontrollers. No router needed.

ESP-NOW

I created an equation to correct for the zero offset and scale to read in pounds. It reads -548358 unloaded. NodeMCU is 32 bit so big numbers are no problem.

weightlbsraw = scale.read_average(20); // average 20 readings

weightlbs = (548358 + weightlbsraw)/9431.7; // equation in my case - unloaded zero offset is first raw number

It updates the unloaded zero offset (tare function) at 4 a.m. every day to counter any drift. That doesn't seem to be necessary so far but humidity changes over the year may affect the weight of the wood a bit.

It only displays and records weight if it is exactly the same, within 0.1 lbs, for 2 seconds.

Videos in Operation

Bamboo Bathroom Scale DIY

Videos of scale operating.

Bamboo Scale Display Routine

I save $1,000+/year with various NodeMCU projects.

Other NodeMCU automation projects are here: NodeMCU Projects
I only do wireless uploads now. This is very handy when the devices are scattered around the house. I use Arduino IDE for programming configured for NodeMCU.

Weight Recorded to Online Graph Via MQTT

scale Dec 8.png

I highly recommend Adafruit MQTT for an HMI including remote recording. I use the free version. Once you get the hang of it it's very quick and easy compared to creating a local only web page hosted on the device. I often do both as shown in this project. https://io.adafruit.com/

Remember to check your weight under exactly the same conditions. Just the liquid in one cup of coffee is 0.6 lbs.

Overnight you can lose up to 3 lbs.

I also record temp and humidity outside, upstairs and in the basement every minute. This is useful when we are away so I can check the furnace is operating OK.

Web Page HMI

Scale HMI Nov 28.png

Web page HTML code is recycled from another project. It shows many diagnostics. A free, zero I/O, high-res, colourful web page is much better than any low-res display. No app needed to display. Just put the IP address of the NodeMCU into any browser to see it. HTML code is among the code in Arduino IDE sketch. For wireless programming just click on the IP address in Arduino IDE instead of a COM port. Far more convenient than plugging in, especially when the NodeMCUs are located in various areas of the house or outside.