Activity

Реализация проекта:Связка Taranis QX7 +приемник на NRF24

Добрый день!
Вот сваял проект приемника из NRF24 и аппаратуры имеющей PPM выход.
Ардуинка сразу подрубилась к PPM выходу.
Подцепил библиотеку PinChangeInt.h
Потом посмотрел уровни в Serial.
Подкорректировал пид-ы на сервах.Все крутится,вертится.
Будем испытывать теперь в полевых условиях.

TX

#include <Arduino.h>
#include <PinChangeInt.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>

#define PPM_PIN 6
#define MAX_CHANNELS 12
int EndPointLTx=988; // Нижняя граница pwm канала TX (подключаемого передатчика) в мкрсек.
int EndPointHTx=2016; // Верхняя граница pwm канала TX (подключаемого передатчика) в мкрсек.
int EndPServoL=30; // Нижняя граница серво в градусах.
int EndPServoH=150; // Верхняя граница серво в градусах.

RF24 radio(9, 10); //(CE, CSN)

byte transmit_data[4];

volatile int pwm_value[MAX_CHANNELS] = { 0 };
volatile int prev_time = 0;
volatile int curr_channel = 0;
volatile bool overflow = false;

void rising()
{
int tstamp = micros();

/* overflow should never acutally happen, but who knows… */
if(curr_channel < MAX_CHANNELS) {
pwm_value[curr_channel] = tstamp - prev_time;
if(pwm_value[curr_channel] > 2100) { /* it’s actually a sync */
pwm_value[curr_channel] = 0;
curr_channel = 0;
} else
curr_channel++;
} else
overflow = true;

prev_time = tstamp;
}

void setup()
{

Serial.begin(9600);

pinMode(PPM_PIN, INPUT_PULLUP);
PCintPort::attachInterrupt(PPM_PIN, &rising, RISING);

radio.begin(); //активировать модуль
radio.setAutoAck(1); //режим подтверждения приёма, 1 вкл 0 выкл
radio.setRetries(0, 15); //(время между попыткой достучаться, число попыток)
radio.enableAckPayload(); //разрешить отсылку данных в ответ на входящий сигнал
radio.setPayloadSize(12); //размер пакета, в байтах
radio.openWritingPipe( 0xAABBCCDD11LL); //мы - труба 0, открываем канал для передачи данных
radio.setChannel(120); //выбираем канал (в котором нет шумов!)
radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
radio.setDataRate (RF24_1MBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
radio.powerUp(); //начать работу
radio.stopListening(); //не слушаем радиоэфир, мы передатчик

}

void loop()
{
transmit_data[0] = map(pwm_value[0], EndPointLTx, EndPointHTx, EndPServoL, EndPServoH);
transmit_data[1] = map(pwm_value[1], EndPointLTx, EndPointHTx, EndPServoL, EndPServoH);
transmit_data[2] = map(pwm_value[2], EndPointLTx, EndPointHTx, EndPServoL, EndPServoH);
transmit_data[3] = map(pwm_value[3], EndPointLTx, EndPointHTx, EndPServoL, EndPServoH);
radio.write(&transmit_data, sizeof(transmit_data));
}

RX

#include <Arduino.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>
#include <Servo.h>

byte recieved_data[4]; // массив принятых данных

byte servo1 = 2; // сервопривод 1 канала TX на 2 цифровом
byte servo2 = 3; // сервопривод 2 канала TX на 3 цифровом
byte servo3 = 4; // сервопривод 3 канала TX на 4 цифровом
byte servo4 = 5; // сервопривод 4 канала TX на 5 цифровом

RF24 radio(9, 10);
#define MAX_CHANNELS 12 // задания pwm каналов, не более 12(в настройках используемого передатчика выставить не более, чем в скетче)

Servo myservo1;
Servo myservo2;
Servo myservo3;
Servo myservo4;

void setup()
{
Serial.begin(9600);

myservo1.attach(servo1);
myservo2.attach(servo2);
myservo3.attach(servo3);
myservo4.attach(servo4);

radio.begin(); //активировать модуль
radio.setAutoAck(1); //режим подтверждения приёма, 1 вкл 0 выкл
radio.setRetries(0, 15); //(время между попыткой достучаться, число попыток) в ответ на входящий сигнал
radio.enableAckPayload(); //разрешить отсылку данных в ответ на входящий сигнал
radio.setPayloadSize(12); //размер пакета, в байтах
radio.openReadingPipe(1, 0xAABBCCDD11LL); //
radio.setChannel(120); //выбираем канал (в котором нет шумов!)
radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
radio.setDataRate (RF24_1MBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
radio.powerUp();
radio.startListening();

}

void loop()
{
if(radio.available())
{
radio.read( &recieved_data, sizeof(recieved_data)); // чиатем входящий сигнал

myservo1.write(recieved_data[0]); //
myservo2.write(recieved_data[1]); //
myservo3.write(recieved_data[2]); //
myservo4.write(recieved_data[3]); //
}
}

Реализация проекта:Связка Taranis QX7 +приемник на NRF24

Коллеги!!!
Еще раз ссылка на данную реализацию,только через usb:
rcopen.com/blogs/255272/23241

Да понятно,что в Таранисе нет поддержки nrf.
Таранис транслирует ppm сигнал в ардуину,потом все это уходит в эфир через nrf,далее принимающая сторона на nrf через ардуино ppm сигнал дешифрует на несколько pwm

Реализация проекта:Связка Taranis QX7 +приемник на NRF24

Мультимодуля ес-но нет!
Почему негативный смысл?В чем проблема подать управляющий ppm с Тараньки на ардуинку и транслировать его через nrf.Далее принимающая сторона раскладывает ppm на pwm для серв!?Есть же готовое решение в инете на данной сборке только для usb(беспроводной симулятор на компе)
Двухканальные приемники на бангуде за 16 долларов для самолета?

rcopen.com/blogs/255272/23241

Реализация проекта:Связка Taranis QX7 +приемник на NRF24

Может я плохо искал,но frsky-приемника за 10 зеленых я не нашел.
Самое дешевое,что есть-это RXF801 на али и бангуде от 1000 руб и то под вопросом.
Конечно можно и аппу взять бу за «бесплатно» типа fly,но если есть подобные готовые решения на примере беспроводного симулятора на nrf и usb,то может кто поделится подобным.!?

Реализация проекта:Связка Taranis QX7 +приемник на NRF24

Согласен,что есть много реализованных проектов с самодельными TX, на nrf-ке,но если уж есть на руках Таранька,а ребенку не хочется давать управлять пенолетом с приемником на r9slim+(дороговатое удовольствие с учетом того ,что пару квадриков уже улетело в небытиё),а сей девайс будет не особо жалко,как «расходный материал».

Реализация проекта:Связка Taranis QX7 +приемник на NRF24

Добрый день!
Может кто поможет с реализацией проекта создания приемника для Тараньки на модуле:

(nrf24l01 или nrf24l01-pa-nla+Arduino(Nano).

С учетом перерытой информации ,как я понимаю в Тараньку надо воткнуть связку (nrf24l01 или nrf24l01-pa-nla+Arduino(Nano))через PPM ,как внешний передающий модуль.
Нужен скетч для прошивки ардуино для вывода на принимающей стороне: (nrf24l01 или nrf24l01-pa-nla+Arduino(Nano),четырех-пяти PWM каналов.
Приемник ес-но будет использоваться без контроллера.
P.S.
Возможна ли реализация на данной прошивке минимальная телеметрия по питанию и уровню сигнала?

Заранее спасибо.

Новинка - FrSky R9 900MHz 16CH Long Range Receiver & R9M Module System

Чувствую,что придется прошивать APM по S.Bus.
Если будет еще информация по PPM,то буду благодарен.
Надеюсь,что вся дополнительная инфрмация будет познавательна для всех.

P.S.
Не ищу простых решений(Типа:поставь контроллер с s.bus и все будет хорошо).Есть matec 405 ,но пока хочу досконально разобраться про эту связку.

Еще раз спасибо за новые вводные.

Спасибо Александр.Почитаю.

Новинка - FrSky R9 900MHz 16CH Long Range Receiver & R9M Module System

Добрый день!
Прошу помощи в подключении R9mm к APM 2.8.
Есть передатчик Taranis QX7 прошитый (OpenTX 2.2.2) + R9mm прошитый (последняя прошивка с Frsky).
Согласно мануалу R9mm:
www.frsky-rc.com/wp-content/uploads/Downloads
забиндил приемник в режиме (R9M).Зеленый светодиод на приемнике горит,RSSI на передатчик выводит.Подключая R9mm к APM по CH1,2,3,4 (как я понимаю в режиме PWM),в Mision Planer калибровка стиков 4-х каналов работает.
Вопрос!!!
1.Как подключить этот приемник в режиме PPM,для получения 8-ми каналов PPM?
2.Какой вывод R9mm,является pin-ом PPM?

Заранее благодарен за помощь.

P.S.
Прошу не пинать,если такая инфа есть,но перелопатив море форумов,так ответа не нашел.
Так же пока не хочу перешивать энкодер APM в режим S.BUS, если есть пути решения по PPM.