Имитация радиоуправления с помощью arduino

Имитация радиоуправления с помощью arduino

Сообщение VeRGiLeeY » 13 фев 2013, 00:05

Имеется:
1.плата для управления квадрокоптером.
http://www.hobbyking.com/hobbyking/store/__21977__HobbyKing_Multi_Rotor_Control_Board_V3_0_Atmega328_PA_.html
2. китайская 4-х канальная аппаратура радиоуправления.
http://www.hobbyking.com/hobbyking/store/__8338__Hobby_King_2_4Ghz_4Ch_Tx_Rx_V2_Mode_2_.html
3. arduino UNO.

Обычно коптер управляется с помощью аппаратуры. Задумал сделать упрвление через Wi-Fi через связку ардуины и ArduinoWirelessShield и подключить еще несколько примочек заодно. Ардкино решил подключить заместо приемника на китайскую плату и имитировать обычное радиоуправление не переписывая прошивки самой платы.
В этом собственно и проблема.

Подключил я приемник к ардуино и функцией pulsein() получил сигналы с каналов которые передаются от него на микроконтроллер платы.

Код: Выделить всё
int pin_in_1 = 8;
unsigned long in_1;

void setup()
{
 Serial.begin(9600);
 pinMode(pin_in_1, INPUT);
}

void loop()
{
in_1 = pulseIn(pin_in_1, INPUT);
Serial.println(in_1);


При выключеном передатчике возвращает 0, при включенном число в диапазоне 20000..20800, в зависимости от положения стика на передатчике. Насколько я понял, это время в микросекундах между сигналами HIGH и LOW поступающии с приемника.

Изображение

Подключил ардуино к пинам для приемника на плате и попытался передать сигнал с такой же частотой, но ничего не получается.

Код: Выделить всё
int ledpin_1 = 6;
int ledpin_2 = 9;
int ledpin_3 = 10;
int ledpin_4 = 11;
 
void setup()
{
pinMode(ledpin_1,OUTPUT);
pinMode(ledpin_2,OUTPUT);
pinMode(ledpin_3,OUTPUT);
pinMode(ledpin_4,OUTPUT);
Serial.begin(9600);
}
 
void loop()
{
pulseOut(ledpin_1,20427);
pulseOut(ledpin_2,20427);
pulseOut(ledpin_3,20427);
if (Serial.available() > 0) {
 for (int i=0; i <= 255; i++){
        //incomingByte = Serial.read();
        pulseOut(ledpin_4,20000);
      Serial.println(20000);}}
      {pulseOut(ledpin_4,20427);
    Serial.println(20427);}
}

void pulseOut(int pin, int val)
{
digitalWrite(pin,HIGH);
delayMicroseconds(val);
digitalWrite(pin,LOW);
}


Подскажите можно ли вообще исполнить эту идею и что я делаю не правильно.
VeRGiLeeY
 
Сообщения: 1
Зарегистрирован: 11 фев 2013, 08:39
programming: delphi, c#

Re: Имитация радиоуправления с помощью arduino

Сообщение shadowalker » 23 фев 2013, 12:16

Сам тоже хочу сделать квадрик, управляемый с помощью ПК (через Leap Motion, благо прислали). Насколько я понимаю, пины с приемника надо воткнуть в пины, подписанные как AIL, ELE, RUD, THR, а регули\беки моторов к тем, которые справа на картинке (6 штук по три - платка ведь может и три- и хексакоптером рулить, в зависимости от прошивки).

На передатчик с аппаратуры идет PPM (емнип) сигнал, представляющий из себя последовательность импульсов каналов и синхропаузы. Длина импульса канала может меняться от 800 до 2200 мкс (обычно 1000..2000), нейтральное положение - 1,5мс.

Я не уверен, что Вы сможете отправить сигнал с такой аппы - только если откроете и найдете дорожки, идущие к модулю передатчика (он же несъемный в этой модели?). Я не стал париться и заказал отдельный модуль 8ch передатчика в DIY корпусе с того же сайта - http://hobbyking.com/hobbyking/store/__14353__FrSky_V8HT_2_4Ghz_DIY_Module.html, 15$
shadowalker
 
Сообщения: 3
Зарегистрирован: 31 июл 2012, 10:31
programming: C++, AutoIt


Вернуться в Программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron
© 2009-2019 |  О проекте  |  Политика Конфиденциальности  |