Internet of Multimeters
Frustrated with a Bluetooth multimeter’s limits, Mellow_Labs swapped in an ESP32 to stream readings in real-time via a web server.
It can be extremely frustrating when electronics almost do what you want, but not quite. In these cases, you can either accept the device as is, or you can grab your soldering iron and do something about it. YouTuber Mellow_Labs recently found himself in this situation and made the decision to do something about it.
Mellow_Labs picked up a cheap Bluetooth multimeter that streams its readings wirelessly to a phone app so that he could easily show viewers what he was seeing in his project videos. But using a phone app wasn’t ideal — he wanted these measurements to be accessible from anywhere. Just about every device has a web browser these days, so a web server would do the trick, but the stock multimeter couldn't handle that.
Mellow_Labs cracked the case open to see what could be done about this problem. He found a mystery chip covered in an epoxy blob and a Bluetooth module. After tracking down the datasheet for the module, and also an extremely helpful GitHub repository that detailed the hardware and software of the multimeter, he was ready to start fixing things.
The plan was to replace the Bluetooth module with an ESP32 chip. That would allow the multimeter to host a web server that serves up a web page showing the device’s measurements in real time. But first, the communication protocol would need to be cracked. After hooking the Rx and Tx lines from the Bluetooth module up to a logic analyzer with a UART decoder, Mellow_Labs found that the protocol was pretty simple. Small data packets were XOR encoded by a constant value. With that knowledge, the data lines could be wired to the ESP32, which could decode the data and serve it up in a web page.
The last thing to do was to power the new components. A voltage boost converter increased the voltage level from the multimeter’s batteries so that they could power the ESP32, and a MOSFET was connected to the Bluetooth enable signal so that it would only be powered up when readings were being streamed. And with that, this device finally did exactly what Mellow_Labs wanted it to do.