Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
DeanCording authored Apr 7, 2018
1 parent fe33f3f commit 45ee9a9
Showing 1 changed file with 94 additions and 1 deletion.
95 changes: 94 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# owonb35

Bluetooth Client for Owon B35 Multimeter
Bluetooth Client for Owon B35 Multimeter for newer (post mid 2017) multimeters with the Semic CS7729CN-001 chip.

Older multimeters that use the Fortune Semiconductor FS9922 chip should use [inflex/owon-b35](https://github.com/inflex/owon-b35).

The [Owon B35](http://owontme.com/products_owon_3_5%7C6_digital_multimeter_with_bluetooth) series of multimeters use Bluetooth Low Energy (BLE) to transmit readings to remote monitors such as smartphone apps. This Linux client allows to to caputure measurement data to you computer to record in a file or display on charting software such as gnuplot or KST.

Expand Down Expand Up @@ -77,7 +79,98 @@ Single value - `omonb35 -n -b | mosquitto_pub -t voltage -l`
JSON format - `omonb35 -T -b -j | mosquitto_pub -t measurement -l`


## Protocol

The multimeter uses the Bluetooth Low Energy Generic Attributes [(BLE GATT)](https://www.bluetooth.com/specifications/gatt/generic-attributes-overview) to transmit measurements.

Measurement data is output as a BLE notification with a 0xfff4 UUID. The packet consists of three uint16_t numbers.

The first number encodes the function, scale, and decimal places.
```
Overload 1 1 1
Decimal--------------------------------------
| |
DCmV 1 1 1 1 0 0 0 0 0 0 0 1 1 x x x f0 18
DCV 1 1 1 1 0 0 0 0 0 0 1 0 0 x x x f0 20
ACmV 1 1 1 1 0 0 0 0 0 1 0 1 1 x x x f0 58
ACV 1 1 1 1 0 0 0 0 0 1 1 0 0 x x x f0 60
DCuA 1 1 1 1 0 0 0 0 1 0 0 1 0 x x x f0 90
DCmA 1 1 1 1 0 0 0 0 1 0 0 1 1 x x x f0 98
DCA 1 1 1 1 0 0 0 0 1 0 1 0 0 x x x f0 a0
ACuA 1 1 1 1 0 0 0 0 1 1 0 1 0 x x x f0 d0
ACmA 1 1 1 1 0 0 0 0 1 1 0 1 1 x x x f0 d8
ACA 1 1 1 1 0 0 0 0 1 1 1 0 0 x x x f0 e0
Ohm 1 1 1 1 0 0 0 1 0 0 1 0 0 x x x f1 20
kOhm 1 1 1 1 0 0 0 1 0 0 1 0 1 x x x f1 28
MOhm 1 1 1 1 0 0 0 1 0 0 1 1 0 x x x f1 30
nF 1 1 1 1 0 0 0 1 0 1 0 0 1 x x x f1 48
uF 1 1 1 1 0 0 0 1 0 1 0 1 0 x x x f1 50
Hz 1 1 1 1 0 0 0 1 1 0 1 0 0 x x x f1 a0
Duty 1 1 1 1 0 0 0 1 1 1 1 0 0 x x x f1 e0
TempC 1 1 1 1 0 0 1 0 0 0 1 0 0 x x x f2 20
TempF 1 1 1 1 0 0 1 0 0 1 1 0 0 x x x f2 60
Diode 1 1 1 1 0 0 1 0 1 0 1 0 0 x x x f2 a0
Continuity 1 1 1 1 0 0 1 0 1 1 1 0 0 x x x f2 e0
hFE 1 1 1 1 0 0 1 1 0 0 1 0 0 x x x f3 20
+------+---+--------+-----+-----+
F 0 Function Scale Decimal
Function
0 0 0 0 - DCV
0 0 0 1 - ACV
0 0 1 0 - DCA
0 0 1 1 - ACA
0 1 0 0 - Ohm
0 1 0 1 - Cap
0 1 1 0 - Hz
0 1 1 1 - Duty
1 0 0 0 - TempC
1 0 0 1 - TempF
1 0 1 0 - Diode
1 0 1 1 - Continuity
1 1 0 0 - hFE
Scale
0 1 0 - micro (u)
0 1 1 - milli (m)
1 0 0 - Unit
1 0 1 - kilo (k)
1 1 0 - mega (M)
Decimal Places
0 0 0 - 0
0 0 1 - 1
0 1 0 - 2
0 1 1 - 3
1 0 0 - 4
1 0 1 - 5
1 1 1 - Overload
```

The second number bit encodes the reading type.
```
Hold------------------------ 01/05 Autorange
Delta--------------------- | 02/06 Autorange
Autorange--------------- | | 04
Min----------------- | | | 10
Max--------------- | | | | 20
| | | | |
00000000 X X X X X X X X
8 4 2 1 8 4 2 1
```

The third number is the measurement digits as a signed magnitude binary number (msb is sign bit). It is converted to the floating point by using the number of decimal places as specified in the first number.



0 comments on commit 45ee9a9

Please sign in to comment.