kopia lustrzana https://github.com/SP8EBC/ParaTNC
telemetry with data from pv controller
rodzic
f2117c4f1c
commit
a8c0005098
|
@ -3,8 +3,8 @@
|
|||
|
||||
#include "aprs/ax25.h"
|
||||
|
||||
#define SW_VER "DA03"
|
||||
#define SW_DATE "13032019"
|
||||
#define SW_VER "DB00"
|
||||
#define SW_DATE "04042019"
|
||||
|
||||
#define SYSTICK_TICKS_PER_SECONDS 100
|
||||
#define SYSTICK_TICKS_PERIOD 10
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
#define _VICTRON
|
||||
|
||||
|
||||
#include <delay.h>
|
||||
#include <LedConfig.h>
|
||||
#include <stdio.h>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "packet_tx_handler.h"
|
||||
#include "station_config.h"
|
||||
#include "rte_wx.h"
|
||||
#include "rte_pv.h"
|
||||
|
||||
#include "./aprs/beacon.h"
|
||||
#include "./aprs/wx.h"
|
||||
|
@ -59,6 +60,12 @@ void packet_tx_handler(void) {
|
|||
|
||||
if (packet_tx_telemetry_counter >= packet_tx_telemetry_interval) {
|
||||
|
||||
#ifdef _VICTRON
|
||||
//
|
||||
telemetry_send_values_pv(rx10m, digi10m, rte_pv_battery_current, rte_pv_battery_voltage, rte_pv_cell_voltage, rte_wx_dallas_qf, rte_wx_ms5611_qf, rte_wx_dht_valid.qf);
|
||||
//
|
||||
#else
|
||||
//
|
||||
#if defined _DALLAS_AS_TELEM
|
||||
// if _DALLAS_AS_TELEM will be enabled the fifth channel will be set to temperature measured by DS12B20
|
||||
telemetry_send_values(rx10m, tx10m, digi10m, kiss10m, rte_wx_temperature_dallas_valid, rte_wx_dallas_qf, rte_wx_ms5611_qf, rte_wx_dht_valid.qf);
|
||||
|
@ -70,7 +77,8 @@ void packet_tx_handler(void) {
|
|||
// if user will disable both _METEO and _DALLAS_AS_TELEM value will be zeroed internally anyway
|
||||
telemetry_send_values(rx10m, tx10m, digi10m, kiss10m, 0.0f, rte_wx_dallas_qf, rte_wx_ms5611_qf, rte_wx_dht.qf);
|
||||
#endif
|
||||
|
||||
//
|
||||
#endif
|
||||
main_wait_for_tx_complete();
|
||||
|
||||
packet_tx_telemetry_counter = 0;
|
||||
|
@ -80,9 +88,11 @@ void packet_tx_handler(void) {
|
|||
}
|
||||
|
||||
if (packet_tx_telemetry_descr_counter >= packet_tx_telemetry_descr_interval) {
|
||||
|
||||
#ifdef _VICTRON
|
||||
telemetry_send_chns_description_pv();
|
||||
#else
|
||||
telemetry_send_chns_description();
|
||||
|
||||
#endif
|
||||
main_wait_for_tx_complete();
|
||||
|
||||
telemetry_send_status();
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
#include "./drivers/ms5611.h"
|
||||
#include "./drivers/_dht22.h"
|
||||
|
||||
#include "./station_config.h"
|
||||
|
||||
#include "stdint.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -19,6 +21,17 @@ extern "C"
|
|||
{
|
||||
#endif
|
||||
|
||||
#ifdef _VICTRON
|
||||
void telemetry_send_values_pv ( uint8_t rx_pkts,
|
||||
uint8_t digi_pkts,
|
||||
int16_t raw_battery_current,
|
||||
uint16_t raw_battery_voltage,
|
||||
uint16_t raw_pv_cell_voltage,
|
||||
DallasQF dallas_qf,
|
||||
ms5611_qf_t ms_qf,
|
||||
dht22QF ds_qf);
|
||||
void telemetry_send_chns_description_pv(void);
|
||||
#else
|
||||
void telemetry_send_values( uint8_t rx_pkts,
|
||||
uint8_t tx_pkts,
|
||||
uint8_t digi_pkts,
|
||||
|
@ -28,6 +41,7 @@ void telemetry_send_values( uint8_t rx_pkts,
|
|||
ms5611_qf_t ms_qf,
|
||||
dht22QF ds_qf);
|
||||
void telemetry_send_chns_description(void);
|
||||
#endif
|
||||
void telemetry_send_status(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -10,8 +10,151 @@
|
|||
#include "station_config.h"
|
||||
#include "delay.h"
|
||||
|
||||
#include <main.h>
|
||||
|
||||
uint16_t telemetry_counter = 0;
|
||||
|
||||
#ifdef _VICTRON
|
||||
void telemetry_send_chns_description_pv(void) {
|
||||
while (main_afsk.sending == 1);
|
||||
|
||||
#if (_SSID == 0)
|
||||
main_own_aprs_msg_len = sprintf(main_own_aprs_msg, ":%s :PARM.Rx10min,Digi10min,BatAmps,BatVolt,PvVolt,DS_QF_FULL,DS_QF_DEGRAD,DS_QF_NAVBLE,MS_QF_NAVBLE,DHT_QF_NAVBLE,TX20_SLEW", _CALL);
|
||||
#endif
|
||||
#if (_SSID > 0 && _SSID <= 9)
|
||||
main_own_aprs_msg_len = sprintf(main_own_aprs_msg, ":%s-%d :PARM.Rx10min,Digi10min,BatAmps,BatVolt,PvVolt,DS_QF_FULL,DS_QF_DEGRAD,DS_QF_NAVBLE,MS_QF_NAVBLE,DHT_QF_NAVBLE,TX20_SLEW", _CALL, _SSID);
|
||||
#endif
|
||||
#if (_SSID > 9 && _SSID <= 15)
|
||||
main_own_aprs_msg_len = sprintf(main_own_aprs_msg, ":%s-%d:PARM.Rx10min,Digi10min,BatAmps,BatVolt,PvVolt,DS_QF_FULL,DS_QF_DEGRADA,DS_QF_NAVBLE,MS_QF_NAVBLE,DHT_QF_NAVBLE,TX20_SLEW", _CALL, _SSID);
|
||||
#endif
|
||||
main_own_aprs_msg[main_own_aprs_msg_len] = 0;
|
||||
ax25_sendVia(&main_ax25, main_own_path, main_own_path_ln, main_own_aprs_msg, main_own_aprs_msg_len);
|
||||
after_tx_lock = 1;
|
||||
afsk_txStart(&main_afsk);
|
||||
|
||||
while (main_afsk.sending == 1);
|
||||
|
||||
delay_fixed(1200);
|
||||
|
||||
#if (_SSID == 0)
|
||||
main_own_aprs_msg_len = sprintf(main_own_aprs_msg, ":%s :EQNS.0,1,0,0,1,0,0,0.07,-8,0,0.07,4,0,0.07,4", _CALL);
|
||||
#endif
|
||||
#if (_SSID > 0 && _SSID <= 9)
|
||||
main_own_aprs_msg_len = sprintf(main_own_aprs_msg, ":%s-%d :EQNS.0,1,0,0,1,0,0,0.07,-8,0,0.07,4,0,0.07,4", _CALL, _SSID);
|
||||
#endif
|
||||
#if (_SSID > 9 && _SSID <= 15)
|
||||
main_own_aprs_msg_len = sprintf(main_own_aprs_msg, ":%s-%d:EQNS.0,1,0,0,1,0,0,0.07,-8,0,0.07,4,0,0.07,4", _CALL, _SSID);
|
||||
#endif
|
||||
main_own_aprs_msg[main_own_aprs_msg_len] = 0;
|
||||
ax25_sendVia(&main_ax25, main_own_path, main_own_path_ln, main_own_aprs_msg, main_own_aprs_msg_len);
|
||||
after_tx_lock = 1;
|
||||
afsk_txStart(&main_afsk);
|
||||
|
||||
while (main_afsk.sending == 1);
|
||||
|
||||
delay_fixed(1200);
|
||||
|
||||
#if (_SSID == 0)
|
||||
main_own_aprs_msg_len = sprintf(main_own_aprs_msg, ":%s :UNIT.Pkt,Pkt,A,V,V,Hi,Hi,Hi,Hi,Hi,Hi", _CALL);
|
||||
#endif
|
||||
#if (_SSID > 0 && _SSID <= 9)
|
||||
main_own_aprs_msg_len = sprintf(main_own_aprs_msg, ":%s-%d :UNIT.Pkt,Pkt,A,V,V,Hi,Hi,Hi,Hi,Hi,Hi", _CALL, _SSID);
|
||||
#endif
|
||||
#if (_SSID > 9 && _SSID <= 15)
|
||||
main_own_aprs_msg_len = sprintf(main_own_aprs_msg, ":%s-%d:UNIT.Pkt,Pkt,A,V,V,Hi,Hi,Hi,Hi,Hi,Hi", _CALL, _SSID);
|
||||
#endif
|
||||
main_own_aprs_msg[main_own_aprs_msg_len] = 0;
|
||||
ax25_sendVia(&main_ax25, main_own_path, main_own_path_ln, main_own_aprs_msg, main_own_aprs_msg_len);
|
||||
after_tx_lock = 1;
|
||||
afsk_txStart(&main_afsk);
|
||||
|
||||
delay_fixed(1200);
|
||||
}
|
||||
|
||||
void telemetry_send_values_pv ( uint8_t rx_pkts,
|
||||
uint8_t digi_pkts,
|
||||
int16_t raw_battery_current,
|
||||
uint16_t raw_battery_voltage,
|
||||
uint16_t raw_pv_cell_voltage,
|
||||
DallasQF dallas_qf,
|
||||
ms5611_qf_t ms_qf,
|
||||
dht22QF ds_qf)
|
||||
{
|
||||
// local variables with characters to be inserted to APRS telemetry frame
|
||||
char qf = '0', degr = '0', nav = '0';
|
||||
char ms_qf_navaliable = '0';
|
||||
char dht_qf_navaliable = '0';
|
||||
|
||||
uint8_t scaled_battery_current = 0;
|
||||
uint8_t scaled_battery_voltage = 0;
|
||||
uint8_t scaled_pvcell_volage = 0;
|
||||
|
||||
float phy_battery_current = 0.0f;
|
||||
float phy_battery_voltage = 0.0f;
|
||||
float phy_pvcell_voltage = 0.0f;
|
||||
|
||||
phy_battery_current = raw_battery_current / 100;
|
||||
phy_battery_voltage = raw_battery_voltage / 100;
|
||||
phy_pvcell_voltage = raw_pv_cell_voltage / 100;
|
||||
|
||||
scaled_battery_current = (uint8_t) roundf((phy_battery_current + 8.0f) * 14.2857f);
|
||||
scaled_battery_voltage = (uint8_t) roundf((phy_battery_voltage - 4.0f) * 14.2857f);
|
||||
scaled_pvcell_volage = (uint8_t) roundf((phy_pvcell_voltage - 4.0f) * 14.2857f);
|
||||
|
||||
switch (dallas_qf) {
|
||||
case DALLAS_QF_FULL:
|
||||
qf = '1', degr = '0', nav = '0';
|
||||
break;
|
||||
case DALLAS_QF_DEGRADATED:
|
||||
qf = '0', degr = '1', nav = '0';
|
||||
break;
|
||||
|
||||
case DALLAS_QF_NOT_AVALIABLE:
|
||||
qf = '0', degr = '0', nav = '1';
|
||||
break;
|
||||
|
||||
default:
|
||||
qf = '0', degr = '0', nav = '0';
|
||||
break;
|
||||
}
|
||||
|
||||
switch (ms_qf) {
|
||||
case MS5611_QF_NOT_AVALIABLE:
|
||||
case MS5611_QF_UNKNOWN:
|
||||
ms_qf_navaliable = '1';
|
||||
break;
|
||||
default:
|
||||
ms_qf_navaliable = '0';
|
||||
break;
|
||||
}
|
||||
|
||||
switch (ds_qf) {
|
||||
case DHT22_QF_UNAVALIABLE:
|
||||
case DHT22_QF_UNKNOWN:
|
||||
dht_qf_navaliable = '1';
|
||||
break;
|
||||
default:
|
||||
dht_qf_navaliable = '0';
|
||||
}
|
||||
|
||||
main_own_aprs_msg_len = sprintf(main_own_aprs_msg, "T#%03d,%03d,%03d,%03d,%03d,%03d,%c%c%c%c%c000", telemetry_counter++, rx_pkts, digi_pkts, scaled_battery_current, scaled_battery_voltage, scaled_pvcell_volage, qf, degr, nav, ms_qf_navaliable, dht_qf_navaliable);
|
||||
|
||||
|
||||
if (telemetry_counter > 999)
|
||||
telemetry_counter = 0;
|
||||
main_own_aprs_msg[main_own_aprs_msg_len] = 0;
|
||||
ax25_sendVia(&main_ax25, main_own_path, main_own_path_ln, main_own_aprs_msg, main_own_aprs_msg_len);
|
||||
after_tx_lock = 1;
|
||||
// while(ax25.dcd == true);
|
||||
|
||||
|
||||
afsk_txStart(&main_afsk);
|
||||
|
||||
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
void telemetry_send_chns_description(void) {
|
||||
while (main_afsk.sending == 1);
|
||||
|
||||
|
@ -149,6 +292,8 @@ void telemetry_send_values( uint8_t rx_pkts,
|
|||
afsk_txStart(&main_afsk);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void telemetry_send_status(void) {
|
||||
main_own_aprs_msg_len = sprintf(main_own_aprs_msg, ">ParaTNC firmware %s-%s by SP8EBC", SW_VER, SW_DATE);
|
||||
ax25_sendVia(&main_ax25, main_own_path, main_own_path_ln, main_own_aprs_msg, main_own_aprs_msg_len);
|
||||
|
|
Ładowanie…
Reference in New Issue