Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mrRobot62/vtx_power_measure

Python script to read out an RC Immersion RF-Meter to measure VTX signal strength. Quick and dirty implementation, with storing data into an INFLUX DB
https://github.com/mrRobot62/vtx_power_measure

betaflight excel fpv frequencies grafana immersion-rf-meter influx influxdb influxdb2 measurment numbers python vtx

Last synced: about 1 month ago
JSON representation

Python script to read out an RC Immersion RF-Meter to measure VTX signal strength. Quick and dirty implementation, with storing data into an INFLUX DB

Awesome Lists containing this project

README

        

# VTX power measurment tool

Terminal based python script based on a pandas library. It can be used to read an Immersion RF-Meter v2 via USB.

This script is not finished at all and in an alpha-release status ;-). But it works for my needs.

## Note
This software is tested on OSX only and should be running on Linux as well. Working unter Windows is ongoing.

> This is a quick & dirty implementation to compare different VTX boards on my workbench - and what can I say - none of the cheap Banggood / AliExpress China VTX boards came close to the manufacturer's stated maximum output power.
Most 800mW VTX delivered on average between 500-650mw. I tested about 10-12 different VTX boards.

**Buy cheap, buy twice**

**In comparision to a TBS-Sixty9 vtx no China crap comes into the range of TBS !**

# Immersion RF-Meter V2
https://www.immersionrc.com/fpv-products/rfpwrv2/

For this tool the Immersion RF-Meter V2 is used and connected via USB to the host.
This little RF-Meter use a simple CDC parameters for communication.

# Workflow
A couple of different parameters controll the worklow
* number of different frequencies
* number of different power (mW)
* Parameters like "delay" or "time" are used to set number of readings per second and how long a measurment per frequence and per power takes

System read the first frequency and the first power configuration and wait for user to configure connected vtx-board. If done press **ENTER**.

## Example terminal output
````
***************************************************************************
Please set POWER on VTX to 200mW
Please set FREQ on VTX to 5785Mhz Freq

Nearest frequency for ImmersionRF-Meter was set to 5800Mhz automatically

Please set your VTX to above values - Press ENTER to start measuring
***************************************************************************
````

Now the system measures `"time"` seconds and collect data. In this case loop through all power configurations. If done, loop through all frequencies

# Stored data
| Attribute | csv | InfluxDB | Comment |
|:---|:--:|:--:|:---|
| Model | x | x | Model/Type of VTX board |
| Test | x | x | InfluxDB tag: unique timestamp for the complete run |
| Band | x | x | InfluxDB tag: VTX Band (like A, B, H, I, R, ...) |
| Info | x | | only output to CSV, additional information pased on paramter --info |
| t_mw | x | x | InfluxDB tag: target mw (e.g. 25mW, 100mW, 200mW, ...) |
| t_dbm | x | x | InfluxDB tag: target mBm (e.g. 14.0 dBm, ...) |
| mw | x | x | InfluxDB field key = mW, field value = measured mw |
| dbm | x | x | InfluxDB field key = dbm, field value = calculated from read mW |
| diff_mw | x | x | InfluxDB field key = diff_mw, field value = target_mW - mW |
| diff_dbm | x | x | InfluxDB field key = diff_dbm, field value = target_dbm - dbm |
| timestamp | | x | InfluxDB timestamp unix format in nanoseconds (ns) |

# Starting parameters
This python script do not have any graphical output, it's designed as a pure terminal script with output on console.

## Arguments


## Examples

# InfluxDB & Grafana
It's possible to store data into a InfluxDB V2 database. Generating output plots can be done with grafana.

A simple dashboard is included in folder

Via parameter it's possible to include output to this database

# CSV output
Via parameter it's possible to create from all data an output csv file.
Filename includes model name and a timestamp.
Default separator is `";"` - can be adjusted inside `config.py`

# Used Libraries
* Pandas
* InfluxDBClient
* Matplotlib
* FPDF

# Developer hints

# History
|Version|Date|Info|
|:---|:---|:---|
|0.1|06-21|initial|