qczek lrs – 433mhz 1w (30dbm) lora rc link with telemetry - новая народная?

Роман1971

Влияние 433 и 5,8 огромное. Особенно если 5,8 мощное. Причем это сказывается в момент бэндинга. Если антенны не согласованы его банально не происходит. С этим столкнулся не только я но и Юлиан. И сегодня переставлял мощность на 5. Т е 500 мвт примерно. Все сделал простейшим TTL переходником , что шел в куче с LRS Expert. Он подешел как ни странно.

QuadroSky
SimaPupkin:

Все отлично работает Turnigy 9x пульт модуль 868МГц любая мощность

Зачем тренерский? JR модуль стоит

Нафиг все эти танцы, заказал Таранис…

Роман1971:

Влияние 433 и 5,8 огромное

Ну значит мне повезло. До 10 км ничто не беспокоило, дальше не летал. А вот когда поменял 5.8 на 1.2 то компас и жпс стали с ума сходить. Пришлось вернуться на 5.8

tuskan
Роман1971:

Влияние 433 и 5,8 огромное.

достаточно разнести немного антенны, метра хватит.

Роман1971

Ну было бы куда разносить. На коптере. Что касается 1.2 и gps уберите круговую поляризацию с видеоантенны, поставьте v антенну например ну и не вплотную к модулю gps. И все ок.

tuskan

у 1.2 качество видео такое мерзкое, что проще его поменять на 5.8
толку от 20 километров радиуса, если весь полет видишь мутные пятна

Plohish
tuskan:

у 1.2 качество видео такое мерзкое, что проще его поменять на 5.8
толку от 20 километров радиуса, если весь полет видишь мутные пятна

расстояние слева, высота справа… частота 1,2 😃

Son-Zond

Подскажите как настроить собрал Лору прошивка 1.91 но таранис ругается на низкий уровень сигнала. Хотя вывел уровень на а канал и в нем все ок. Как настроить телеметрию чтоб не ругался таранис

QuadroSky
tuskan:

метра хватит

Боюсь в таком случае квадрокоптера не хватит)).

Роман1971:

Что касается 1.2 и gps уберите круговую поляризацию с видеоантенны, поставьте v антенну например ну и не вплотную к модулю gps.

10 см от модуля был диполь. Максимум можно 15 см развести. Но думаю это не поможет. Может фильтр нужен?

Первый полет вдаль на 10 км, рсси был выбран по пункту 3 в конфигураторе. Пакет лост, всю дорогу 99% и на минимальной мощности передатчика на 8.5 км был фс. Рсси с 99 прыгнул на секунду на 0. Информативности от такого рсси никакой. Сейчас рсси выставил по 2 пункту, snr. Теперь до 2 км показывает все время 30-32. Дальше пока не летал. Чую тоже информативности от такого рсси 0. 30-32 это как, хорошо или не очень?

Alex_Ivanov

Недавно обсуждали, что для корректного отображения rssi пакет лост и snr должны обрабатываться вместе, может разработчик как нибудь это исправит.

Роман1971

rssi на SNR ставить. Но как я понял там не очень корректно все. Так что это не только у вас такое.

whoim

Есть идея воткнуть ардуинку буфером между mavlink tx модуля и блютус с дисплеем, парсить протокол, типа резервный вариант инфы. Отображать ток последнее достоверное, может даже в епром писать… Что думаете?

kox58

А не проще Oled дисплей напрямую подключить к i2c контроллера и получить тоже самое. Inav это умеет.

whoim
kox58:

А не проще Oled дисплей напрямую подключить к i2c контроллера и получить тоже самое. Inav это умеет.

Я про наземную станцию, на аппарате то зачем дисплей…

tuskan
kox58:

А не проще Oled дисплей напрямую подключить к i2c контроллера и получить тоже самое. Inav это умеет.

и что он там выводит?

INAV supports displays to provide information to you about your aircraft and iNav state.
When the aircraft is armed, an “Armed” message is displayed. When it is disarmed, a summary page is displayed. Page cycling has been removed and no other information is currently available

я б сделал себе отдельный телеметрийный экран с удовольствием

whoim

Ну так то на телефоне вся телеметрия по идее, это я так, дисплей некуда девать. Но в 168ю мегу не лезет парсер протокола, надо 328ю…

kox58
tuskan:

и что он там выводит?

Количество спутников, широту, долготу, напряжение, ток, количество использованных милиампер, может еще что-то- не помню уже.

gpp
kox58:

А не проще Oled дисплей напрямую подключить к i2c контроллера и получить тоже самое. Inav это умеет.

Где? На ретрансляторе?

whoim:

Есть идея воткнуть ардуинку буфером между mavlink tx модуля и блютус с дисплеем, парсить протокол, типа резервный вариант инфы. Отображать ток последнее достоверное, может даже в епром писать… Что думаете?

Тоже давно думаю об этом. Координаты последние, напряжение там… и т.д… Как у Кросфайр 😃)

whoim:

Но в 168ю мегу не лезет парсер протокола, надо 328ю…

Что за библиотека? Тоже хочу в ретранслятор встроить OLED

whoim

Начал с этого: locarbftw.com/understanding-the-arduino-mavlink-li…
Без посылки запроса ток

Продолжу уже после сборки квадрика, буду сразу стараться на 433 его посадить. Мегу эту хотел заюзать для тбекона грин, теперь в раздумьях, что важнее)
Новая пока дойдет…

whoim
gpp:

Тоже хочу в ретранслятор встроить OLED

Предлагаю объеденится. Что есть:

  1. библиотека для олед работает, буковки есть
  2. библиотека для парсинга мавлинк компилится, в основах вроде разобрался. Пока нет возможности подключить к контроллеру, но скоро

Итак, qczek восстанавливает эти msg_id (сообщения) мавлинка с inav: HEARTBEAT, ATTITUDE, POSITION_INT, SYS_STATUS, RC_CHANNELS_RAW
Вот полный список оных: groups.google.com/forum/#!topic/mavlink/1zgHUM67E-…
В библиотеке на каждый пакет заведен свой файлик h в /common, например из примера выше это mavlink_msg_gps_raw_int.h, там можно посмотреть структуру, ну и процедуру, которая парсит данные и сливает в эту структуру, например mavlink_msg_gps_raw_int_decode.

Однако, с этим мы уже пролетаем - этот пакет qczek не передает. Передает видимо MAVLINK_MSG_ID_GLOBAL_POSITION_INT 33, что описан в mavlink_msg_global_position_int.h

Уже из этого пакета мы получаем

uint32_t time_boot_ms; ///< Timestamp (milliseconds since system boot)
int32_t lat; ///< Latitude, expressed as * 1E7
int32_t lon; ///< Longitude, expressed as * 1E7
int32_t alt; ///< Altitude in meters, expressed as * 1000 (millimeters), above MSL
int32_t relative_alt; ///< Altitude above ground in meters, expressed as * 1000 (millimeters)
int16_t vx; ///< Ground X Speed (Latitude), expressed as m/s * 100
int16_t vy; ///< Ground Y Speed (Longitude), expressed as m/s * 100
int16_t vz; ///< Ground Z Speed (Altitude), expressed as m/s * 100
uint16_t hdg; ///< Compass heading in degrees * 100, 0.0…359.99 degrees. If unknown, set to: 65535

Теперь полезен будет MAVLINK_MSG_ID_SYS_STATUS 1

uint32_t onboard_control_sensors_present; ///< Bitmask showing which onboard controllers and sensors are present. Value of 0: not present. Value of 1: present. Indices: 0: 3D gyro, 1: 3D acc, 2: 3D mag, 3: absolute pressure, 4: differential pressure, 5: GPS, 6: optical flow, 7: computer vision position, 8: laser based position, 9: external ground-truth (Vicon or Leica). Controllers: 10: 3D angular rate control 11: attitude stabilization, 12: yaw position, 13: z/altitude control, 14: x/y position control, 15: motor outputs / control
uint32_t onboard_control_sensors_enabled; ///< Bitmask showing which onboard controllers and sensors are enabled: Value of 0: not enabled. Value of 1: enabled. Indices: 0: 3D gyro, 1: 3D acc, 2: 3D mag, 3: absolute pressure, 4: differential pressure, 5: GPS, 6: optical flow, 7: computer vision position, 8: laser based position, 9: external ground-truth (Vicon or Leica). Controllers: 10: 3D angular rate control 11: attitude stabilization, 12: yaw position, 13: z/altitude control, 14: x/y position control, 15: motor outputs / control
uint32_t onboard_control_sensors_health; ///< Bitmask showing which onboard controllers and sensors are operational or have an error: Value of 0: not enabled. Value of 1: enabled. Indices: 0: 3D gyro, 1: 3D acc, 2: 3D mag, 3: absolute pressure, 4: differential pressure, 5: GPS, 6: optical flow, 7: computer vision position, 8: laser based position, 9: external ground-truth (Vicon or Leica). Controllers: 10: 3D angular rate control 11: attitude stabilization, 12: yaw position, 13: z/altitude control, 14: x/y position control, 15: motor outputs / control
uint16_t load; ///< Maximum usage in percent of the mainloop time, (0%: 0, 100%: 1000) should be always below 1000
uint16_t voltage_battery; ///< Battery voltage, in millivolts (1 = 1 millivolt)
int16_t current_battery; ///< Battery current, in 10*milliamperes (1 = 10 milliampere), -1: autopilot does not measure the current
uint16_t drop_rate_comm; ///< Communication drops in percent, (0%: 0, 100%: 10’000), (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV)
uint16_t errors_comm; ///< Communication errors (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV)
uint16_t errors_count1; ///< Autopilot-specific errors
uint16_t errors_count2; ///< Autopilot-specific errors
uint16_t errors_count3; ///< Autopilot-specific errors
uint16_t errors_count4; ///< Autopilot-specific errors
int8_t battery_remaining; ///< Remaining battery energy: (0%: 0, 100%: 100), -1: autopilot estimate the remaining battery

отсюда мы вытащим батарейку.
Проблема: нет готового значения количества спутников… судя по описанию того, что сейчас пропускает qczek
А скорости размазаны по xyz и в м/сек, надо видимо подумать, какую брать… видимо по x, то есть

packet.vx*3.6

итого пока получается что то такое

#include <Wire.h>
#include “SSD1306Ascii.h”
#include “SSD1306AsciiWire.h”
#include <mavlink.h>

#define I2C_ADDRESS 0x3C
#define RST_PIN -1
SSD1306AsciiWire oled;

mavlink_message_t msg;
mavlink_status_t status;
//__mavlink_sys_status_t
int8_t battery_remaining;
uint8_t voltage_battery;
int16_t current_battery;
//__mavlink_global_position_int_t
int32_t lat,lon,alt,relative_alt;
int16_t vx, vy, vz;
uint16_t hdg;

//------------------------------------------------------------------------------
void setup() {
Wire.begin();
Wire.setClock(400000L);
oled.begin(&Adafruit128x32, I2C_ADDRESS);
oled.clear();
oled.setFont(font8x8);
oled.set2X();
oled.println(“WAIT FOR”);
oled.println(“MAVLINK”);
oled.set1X();
//
Serial.begin(57600);
}
//------------------------------------------------------------------------------
void loop() {
while(Serial.available()) {
uint8_t c= Serial.read();
Serial.write©;
if(mavlink_parse_char(MAVLINK_COMM_0, c, &msg, &status)) {
switch(msg.msgid) {
case MAVLINK_MSG_ID_GLOBAL_POSITION_INT: {
mavlink_global_position_int_t packet;
mavlink_msg_global_position_int_decode(&msg, &packet);
if(packet.hdg == 65535) packet.hdg = 0;
lat = packet.lat;
lon = packet.lon;
alt = packet.alt;
relative_alt = packet.relative_alt;
vx = packet.vx;
vy = packet.vz;
vy = packet.vz;
hdg = packet.hdg;
}
case MAVLINK_MSG_ID_SYS_STATUS: {
__mavlink_sys_status_t packet;
mavlink_msg_sys_status_decode(&msg, &packet);
battery_remaining = packet.battery_remaining;
voltage_battery = packet.voltage_battery;
current_battery = packet.current_battery;
}
break;
}//switch
oled.clear();
oled.setFont(font5x7);
oled.println((String)“GPS:”+lat+(String)" “+lon);
oled.println((String)“SPEED:”+vx*3.6+(String)” ALT:“+relative_alt);
oled.println((String)“HDG:”+hdg+(String)” V:“+voltage_battery/100+(String)” R: “+battery_remaining+(String)”%");
oled.println((String)“BAT: 6.8v 76% ||||_”);
}//if
}//while
}

Едрит, оно парсит протокол! Надпись wait for mavlink из скетча исчезает ток при успешном парсинге хоть одного сообщения

whoim

Ну и надо это по хорошему на таймер перевесить, наверное, чтоб затыков с пересылкой в тх не было. Либо вообще тх не юзать, rx ардуины и бт модуля вместе скрутить да и все.