Difference between revisions of "EEVBlog 121GW"

From sigrok
Jump to navigation Jump to search
(example SD card logfile)
(Category Bluetooth added)
 
(6 intermediate revisions by one other user not shown)
Line 2: Line 2:
| image          = [[File:Eevblog 121gw mugshot.png|180px]]
| image          = [[File:Eevblog 121gw mugshot.png|180px]]
| name            = EEVBlog 121GW
| name            = EEVBlog 121GW
| status          = planned
| status          = supported
| source_code_dir =  
| source_code_dir = serial-dmm
| counts          = 50000
| counts          = 50000
| categories      = CAT III (600V)
| categories      = CAT III (600V)
Line 16: Line 16:
The EEVBlog host Dave Jones participated in the design of the device which gets manufactured by UEi. Some features are rare, or their combination has not been seen in other devices (15V diode test, builtin uCurrent to reduce burden voltage in current measurement, open schematics and hackable firmware).
The EEVBlog host Dave Jones participated in the design of the device which gets manufactured by UEi. Some features are rare, or their combination has not been seen in other devices (15V diode test, builtin uCurrent to reduce burden voltage in current measurement, open schematics and hackable firmware).


Hold the '''1ms PEAK''' button to enable BLE communication.
Hold the '''1ms PEAK''' button to enable BLE communication. Either use sigrok on a platform where BLE is supported, or make the BLE communication available on a COM port (e.g. by means of the BLE to UART gateway discussed below).


== Hardware ==
== Hardware ==
Line 36: Line 36:
The meter is announced as having "hackable firmware" but its source code is not available and probably never will. Alternative OpenSource firmware is possible but would have to start at square one. There are connector pads to program the MCU and the BLE module.
The meter is announced as having "hackable firmware" but its source code is not available and probably never will. Alternative OpenSource firmware is possible but would have to start at square one. There are connector pads to program the MCU and the BLE module.


The STM32 MCU communicates to the HY3131 chip via SPI, and to the BLE112 module via UART. The BLE112 passes the MCU's serial data in verbatim form (port extender mode). Which means that one might as well grab the meter's serial output at the MCU to BLE connection.
The STM32 MCU communicates to the HY3131 chip via SPI, and to the BLE112 module via UART. The BLE112 passes the MCU's serial data in verbatim form (cable replacement mode). Which means that one might as well grab the meter's serial output at the MCU to BLE connection.


== Photos ==
== Photos ==
Line 78: Line 78:
BLE communication is reported to be slow (some two samples per second), and occassionally flaky (truncated packets, reduced rate including gaps of non-activity, increasing error counts after longer periods of logging). The firmware and the protocol provide basic functionality, but may see some more development before becoming full featured and stable, or before more performance increases are seen.
BLE communication is reported to be slow (some two samples per second), and occassionally flaky (truncated packets, reduced rate including gaps of non-activity, increasing error counts after longer periods of logging). The firmware and the protocol provide basic functionality, but may see some more development before becoming full featured and stable, or before more performance increases are seen.


To enable BLE communication '''hold''' the '''1ms PEAK''' button until the '''BT''' indicator changes. The meter needs a write trigger before it starts sending subsequent samples by means of notifications (BLE has no common or standard concept of serial communication, like Bluetooth Classic does). This trigger is not needed for each sample (like some serial DMMs do), but it'd be required to re-establish communication after connection was lost (gsi, my assumption, not sure whether the write suffices or re-connect and write is due).
To enable BLE communication '''hold''' the '''1ms PEAK''' button until the '''BT''' indicator changes. The BLE module is used in cable extender mode, transparently passing the UART data of the meter's STM32 controller. The BLE module needs to receive a CCCD trigger before it starts sending UART data as BLE notifications. The libsigrok library's serial layer transparently supports the BLE module used in this DMM (on some of the sigrok supported platforms, others can use the BLE to UART gateway, see below). This trigger is not needed for each sample (like some serial DMMs do), but it'd be required to re-establish communication after the connection was lost (when the meter went to sleep, or BT comm was disabled, or the device went out of the receiver's range).


Each 19-byte packet communicates data for three displays ("main", "sub", and "bar", i.e. the two displays and the bargraph) as well as some "icon" state (indicators).
Each 19-byte packet communicates data for three displays ("main", "sub", and "bar", i.e. the two displays and the bargraph) as well as some "icon" state (indicators).


At the time of this writing sigrok does not support BLE communication. Possible workarounds would involve disguising the BLE communication as a COM port (users are reported to run gateways on ESP or nRF hardware), or to "replay" recordings of previously observed communication.
Quick experiment, manual inspection of BLE communication:


Quick experiment, manual inspection of BLE communication:
  $ '''hcitool lescan'''
  LE Scan ...
  88:6B:12:34:56:78 (unknown)
  88:6B:12:34:56:78 121GW
  $ '''gatttool -b DEV_ADDR --char-write-req -a 9 -n 0300 --listen'''
  Characteristic value was written successfully
  Indication  handle = 0x0008 value: f2 17 80 01 21 01 40 00 15 64 01 00 f0 00 00 0e 40 00 ca f2
  Indication  handle = 0x0008 value: 17 80 01 21 01 40 00 01 64 01 00 f0 00 00 0e 40 00 de f2 17
  Indication  handle = 0x0008 value: 80 01 21 01 00 00 1f 64 01 00 ef 00 00 0e 40 00 9f f2 17 80
  Indication  handle = 0x0008 value: 01 21 01 40 9c f2 17 80 01 21 01 40 00 1d 64 01 00 f0 00 00
  Indication  handle = 0x0008 value: 0e 40 00 c2
  Indication  handle = 0x0008 value: f2
  Indication  handle = 0x0008 value: 17 80 01 21 01 00 00 0f 64 01 00 f0 04 00 0e 40 00 94
  Indication  handle = 0x0008 value: f2
  Indication  handle = 0x0008 value: 17 80 01 21 01 40 00 1b 64 01 00 f0 00 00 0e 40 00 c4
  Indication  handle = 0x0008 value: f2
  Indication  handle = 0x0008 value: 17 80 01 21 01 00 00 73 64 01 00 f0 00 00 0e 40 00 ec
 
Native BLE communication on a platform which supports it:
 
  $ '''sigrok-cli -d eevblog-121gw:conn=bt/ble122/88-6B-12-34-56-78 --scan'''
  The following devices were found:
  eevblog-121gw - EEVblog 121GW with 3 channels: main sub bar
 
Python based [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree;f=util/eevblog-121gw BLE to UART gateway], using the bluepy Python module:
Users are reported to run BLE to UART gateways on ESP or nRF hardware, as well as on RPi or PC machines.
 
  (needs permissions to scan for and communicate to the device)
  # '''pip install pyserial bluepy'''
  # '''./eev121gw-ble-uart-relay -p /dev/ttyUSB1 -v'''
 
Using the UART attached 121GW multimeter:
 
  $ '''sigrok-cli -d eevblog-121gw:conn=/dev/ttyUSB0 --scan'''
  The following devices were found:
  eevblog-121gw - EEVblog 121GW with 3 channels: main sub bar
 
  $ '''sigrok-cli -d eevblog-121gw:conn=/dev/ttyUSB0 --continuous'''
  main: 2.1074 V DC AUTO
  sub: 26.9 °C
  bar: 1.8
  main: 1.9905 V DC AUTO
  sub: 26.9 °C
  bar: 1.8
  main: 1.8712 V DC AUTO
  sub: 26.9 °C
  bar: 1.6
  main: 1.7528 V DC AUTO
  sub: 26.9 °C
  bar: 1.4
  main: 1.6335 V DC AUTO
  sub: 26.9 °C
  bar: 1.4
  main: 1.5142 V DC AUTO
  sub: 27.0 °C
  bar: 1.2
  ...


$ '''hcitool lescan'''
  $ '''./sigrok-meter -d eevblog-121gw:conn=/dev/ttyUSB0 &'''
$ '''gatttool -b DEV_ADDR --char-write-req -a 9 -n 0300 --listen'''


== Resources ==
== Resources ==
Line 99: Line 154:
[[Category:Device]]
[[Category:Device]]
[[Category:Multimeter]]
[[Category:Multimeter]]
[[Category:Planned]]
[[Category:Bluetooth]]
[[Category:Supported]]

Latest revision as of 14:36, 2 November 2020

EEVBlog 121GW
Eevblog 121gw mugshot.png
Status supported
Source code serial-dmm
Counts 50000
IEC 61010-1 CAT III (600V)
Connectivity BLE, SD card
Measurements voltage, current, power, resistance, capacitance, diode, continuity, frequency, duty cycle, period, temperature
Features autorange, true-rms, auto hold, min/max, 1ms peak, 1kHz lowpass, relative, bargraph, backlight, 3V/15V diode, SD card logging
Website eevblog.com

The EEVBlog 121GW is a 50000 counts, CAT III (600V) handheld digital multimeter with SD card (firmware update, data logging) and BLE connectivity.

The EEVBlog host Dave Jones participated in the design of the device which gets manufactured by UEi. Some features are rare, or their combination has not been seen in other devices (15V diode test, builtin uCurrent to reduce burden voltage in current measurement, open schematics and hackable firmware).

Hold the 1ms PEAK button to enable BLE communication. Either use sigrok on a platform where BLE is supported, or make the BLE communication available on a COM port (e.g. by means of the BLE to UART gateway discussed below).

Hardware

  • HY3131 DMM
  • AD8436 TRMS
  • ADR3412 Reference
  • MAX4238 Opamp (uCurrent)
  • STM32L152ZDT6 MCU
  • BLE122 BLE module
  • NJU6350R RTC, CR1220 battery
  • Split terminals and opamp for plug detection
  • Several 4052/4053 muxes

The Uni-T UT171A and Keysight U1282A meters are said to use the same HY3131 multimeter chipset.

The 121GW meter's schematics is open, as is the source code for the mobile app.

The meter is announced as having "hackable firmware" but its source code is not available and probably never will. Alternative OpenSource firmware is possible but would have to start at square one. There are connector pads to program the MCU and the BLE module.

The STM32 MCU communicates to the HY3131 chip via SPI, and to the BLE112 module via UART. The BLE112 passes the MCU's serial data in verbatim form (cable replacement mode). Which means that one might as well grab the meter's serial output at the MCU to BLE connection.

Photos

Protocol

SD

SD card logging generates CSV style files, with several header lines (non-comments) describing the test setup and start of recording, followed by data lines, and a final (non-comment) line when recording stops.

Example SD card logfile:

 START,2016/10/04,03:15:27,
 ID,170800000,
 INTERVAL,000,sec,
 ,MAIN,,,SUB-1,,,SUB-2,,,Remark,
 No. ,Func. ,Value,Unit,Func. ,Value,Unit,Func. ,Value,Unit,
 1,DCV,00.0003,V,,,,,,,,
 2,DCV,-00.0009,V,,,,,,,,
 3,DCV,-00.0106,V,,,,,,,,
 4,DCV,-00.0005,V,,,,,,,,
 --- 8< --- snip snip --- >8 ---
 890,DCV,-00.0002,V,,,,,,,,
 891,DCV,00.0004,V,,,,,,,,
 MAX,865,DCV,00.0752,V,
 MIN,537,DCV,-00.0558,V,

BLE

Several firmware versions implemented different protocol versions, as lessons were learned during development of the BLE communication and apps for mobile devices. Recent versions use packets of 19 bytes each with binary data, to reduce the probability of data loss in the communication, and to slightly increase throughput since BLE is considered "low speed". The "Revised-Packet-Format-Blob-V2" PDF outlines the frame layout.

BLE communication is reported to be slow (some two samples per second), and occassionally flaky (truncated packets, reduced rate including gaps of non-activity, increasing error counts after longer periods of logging). The firmware and the protocol provide basic functionality, but may see some more development before becoming full featured and stable, or before more performance increases are seen.

To enable BLE communication hold the 1ms PEAK button until the BT indicator changes. The BLE module is used in cable extender mode, transparently passing the UART data of the meter's STM32 controller. The BLE module needs to receive a CCCD trigger before it starts sending UART data as BLE notifications. The libsigrok library's serial layer transparently supports the BLE module used in this DMM (on some of the sigrok supported platforms, others can use the BLE to UART gateway, see below). This trigger is not needed for each sample (like some serial DMMs do), but it'd be required to re-establish communication after the connection was lost (when the meter went to sleep, or BT comm was disabled, or the device went out of the receiver's range).

Each 19-byte packet communicates data for three displays ("main", "sub", and "bar", i.e. the two displays and the bargraph) as well as some "icon" state (indicators).

Quick experiment, manual inspection of BLE communication:

 $ hcitool lescan
 LE Scan ...
 88:6B:12:34:56:78 (unknown)
 88:6B:12:34:56:78 121GW
 $ gatttool -b DEV_ADDR --char-write-req -a 9 -n 0300 --listen
 Characteristic value was written successfully
 Indication   handle = 0x0008 value: f2 17 80 01 21 01 40 00 15 64 01 00 f0 00 00 0e 40 00 ca f2 
 Indication   handle = 0x0008 value: 17 80 01 21 01 40 00 01 64 01 00 f0 00 00 0e 40 00 de f2 17 
 Indication   handle = 0x0008 value: 80 01 21 01 00 00 1f 64 01 00 ef 00 00 0e 40 00 9f f2 17 80 
 Indication   handle = 0x0008 value: 01 21 01 40 9c f2 17 80 01 21 01 40 00 1d 64 01 00 f0 00 00 
 Indication   handle = 0x0008 value: 0e 40 00 c2 
 Indication   handle = 0x0008 value: f2 
 Indication   handle = 0x0008 value: 17 80 01 21 01 00 00 0f 64 01 00 f0 04 00 0e 40 00 94 
 Indication   handle = 0x0008 value: f2 
 Indication   handle = 0x0008 value: 17 80 01 21 01 40 00 1b 64 01 00 f0 00 00 0e 40 00 c4 
 Indication   handle = 0x0008 value: f2 
 Indication   handle = 0x0008 value: 17 80 01 21 01 00 00 73 64 01 00 f0 00 00 0e 40 00 ec

Native BLE communication on a platform which supports it:

 $ sigrok-cli -d eevblog-121gw:conn=bt/ble122/88-6B-12-34-56-78 --scan
 The following devices were found:
 eevblog-121gw - EEVblog 121GW with 3 channels: main sub bar

Python based BLE to UART gateway, using the bluepy Python module: Users are reported to run BLE to UART gateways on ESP or nRF hardware, as well as on RPi or PC machines.

 (needs permissions to scan for and communicate to the device)
 # pip install pyserial bluepy
 # ./eev121gw-ble-uart-relay -p /dev/ttyUSB1 -v

Using the UART attached 121GW multimeter:

 $ sigrok-cli -d eevblog-121gw:conn=/dev/ttyUSB0 --scan
 The following devices were found:
 eevblog-121gw - EEVblog 121GW with 3 channels: main sub bar
 $ sigrok-cli -d eevblog-121gw:conn=/dev/ttyUSB0 --continuous
 main: 2.1074 V DC AUTO
 sub: 26.9 °C
 bar: 1.8
 main: 1.9905 V DC AUTO
 sub: 26.9 °C
 bar: 1.8 
 main: 1.8712 V DC AUTO
 sub: 26.9 °C
 bar: 1.6 
 main: 1.7528 V DC AUTO
 sub: 26.9 °C
 bar: 1.4 
 main: 1.6335 V DC AUTO
 sub: 26.9 °C
 bar: 1.4 
 main: 1.5142 V DC AUTO
 sub: 27.0 °C
 bar: 1.2 
 ...
 $ ./sigrok-meter -d eevblog-121gw:conn=/dev/ttyUSB0 &

Resources