Skip to content
Hack conventional scales to connect to computer via usb serial and/or bluetooth
Python C++ Other
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
SerialScale small updates Feb 12, 2017
calibrator Add calibrator scirpt, strip down the main script, add tare and calib… Feb 11, 2017
experiments Ignore some, line thickness some Feb 12, 2017
graph Ignore some, line thickness some Feb 12, 2017
pics Add more pics Feb 12, 2017
.gitignore Ignore some, line thickness some Feb 12, 2017
LICENSE Initial commit Feb 11, 2017
schematics.fzz Add Fritzing file Feb 12, 2017

#Scale hack

##Rationale Electornic scales could be bought online for several bucks, but any scales that could be connected to a computer is a lot more expensive. The idea of this project is to create a compact and cheap solution that could be used to hack any conventional consumer-grade scales to make them connected.



  • HX711 - a 24 bit delta-sigma ADC with integrated instrumentation amplifier is a chip specifically designed for digitizing strain-gauge bridges.
  • A goto solution for any quick and dirty hack - an Arduino clone sourced from ebay.
  • HC-05 Bluetooth dongle of the same origin

####Build instructions

Open the scales and trace/buzz the wires of the strain gauges. Majority of them will be connected together, leaving just 4 wires which participate in measurement process. Of those two will be Excitation + and - wires, the other pair - Signal + and -. To distinguish whitch is whitch, measure voltage from gound to all of those 4 wires. The lowest voltage point will be Excitation-, highest - Excitation+, middle point - Signal + and -, it's not exactly clear which is which instantly, you can always just exchange them if your readings go negative.

Connect Excitation wires to E+ and E- of HX711 board, connect Signal wires to A+ and A- of HX711. Hook up VCC, GND, DT and SCK pins to pins 8, 9, 10, 11 of Arduino as shown in diagram below.


  • Arduino library used:
  • A simple serial protocol implemented - if 0 is sent, the scale is zeroed, if any non-zero number is sent, it is cansidered that equal weight object is placed on the scale and used to calibrate the upper range of the scale.
#include "HX711.h"

String content = "";

HX711 scale;

#define DOUT 9
#define SCK 11

void setup() {
  pinMode(10, OUTPUT);
  digitalWrite(10, LOW);
  pinMode(8, OUTPUT);
  digitalWrite(8, HIGH);
  scale.begin(DOUT, SCK);


void loop() {
  Serial.println(scale.get_units(10), 1);
  while(Serial.available()) {
    char c =;
    if('\n' == c) {
      unsigned int n = content.toInt();
      content = String("");
      if(0 == n) {
      } else {
        double t = scale.get_units(10);
        double r = t/n;
    } else {

Host-side python code allows for data logging and visualisation. Add python modules until it works.

###Cost analysis

Component Cost
HX711 $0.99
Arduino Nano $2.73
HC-05 $0.76
Total $4.48
You can’t perform that action at this time.