https://github.com/pcs-electronics/bird-meter-hack
Bird 5019 RS-232 Reader
https://github.com/pcs-electronics/bird-meter-hack
Last synced: 11 days ago
JSON representation
Bird 5019 RS-232 Reader
- Host: GitHub
- URL: https://github.com/pcs-electronics/bird-meter-hack
- Owner: pcs-electronics
- License: mit
- Created: 2026-03-19T11:06:46.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-03-20T08:59:39.000Z (3 months ago)
- Last Synced: 2026-03-21T01:41:46.090Z (3 months ago)
- Language: Python
- Size: 6.84 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Bird 5019 RS-232 Reader
This project reads live measurement data from a Bird 5019 sensor over RS-232 and prints it to the terminal in plain text or JSON.
## Problem
The Bird 5019 exposes useful RF power data over an RS-232 interface, but using that interface on a modern computer is awkward. Most laptops and small PCs no longer include a native serial port, and manually talking to the device protocol is inconvenient for testing, logging, or automation.
## Solution
`bird_5019_serial_read.py` connects to the sensor, identifies it, checks calibration status, applies measurement settings, and then streams live readings such as:
- forward power
- reflected power
- peak power
- burst power
- filter bandwidth
- temperature
- ACK status
It can output human-readable terminal lines for quick monitoring or JSON for scripting and data capture.
## Hardware Requirements
- Bird 5019 or compatible 5012-family sensor
- External 7-18 VDC power for the sensor
- USB to RS-232 converter cable
- Correct RS-232 wiring between the converter and the sensor
Use a real RS-232 converter cable, not a USB-to-TTL serial adapter.
## Software Requirements
- Python 3
- `pyserial`
Install the dependency with:
```bash
python3 -m pip install pyserial
```
## Usage
List available serial ports:
```bash
python3 bird_5019_serial_read.py --list-ports
```
Read continuously from the default detected adapter:
```bash
python3 bird_5019_serial_read.py
```
Read from a specific port:
```bash
python3 bird_5019_serial_read.py --port /dev/ttyUSB0
```
Change the sensor filter bandwidth:
```bash
python3 bird_5019_serial_read.py --port /dev/ttyUSB0 --filter 400k
python3 bird_5019_serial_read.py --port /dev/ttyUSB0 --filter 400khz
python3 bird_5019_serial_read.py --port /dev/ttyUSB0 --filter 10mhz
```
Supported filter values are:
- `4k5`, `4.5khz`, or `4500` for 4.5 kHz
- `400k`, `400khz`, or `400000` for 400 kHz
- `10m`, `10mhz`, or `10000000` for 10 MHz
Read a limited number of samples in JSON format:
```bash
python3 bird_5019_serial_read.py --port /dev/ttyUSB0 --samples 5 --json
```
## Output
Plain-text mode prints one line per sample with:
- timestamp
- forward power
- reflected power
- peak power
- burst power
- filter bandwidth
- temperature
- ACK status
Power values in plain-text mode are formatted with two digits after the decimal point.
JSON mode emits one object per sample with the same measurement data.
## License
This project is licensed under the MIT License. See the `LICENSE` file for details.
The program was created by using GPT-5.4