roboforum.ru

Технический форум по робототехнике.

Режим управления роботом через пульт от вертолета

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Режим управления роботом через пульт от вертолета

Сообщение cotonec » 17 мар 2014, 14:59

Всем привет!!! Нужен код для меги 2560 (nRF24L01 будет в роботе) Пульт от верта имеет 2.4ГГц значит он должен подойти для управления.
cotonec
 
Сообщения: 4
Зарегистрирован: 11 мар 2014, 15:26

Re: Режим управления роботом через пульт от вертолета

Сообщение Myp » 17 мар 2014, 17:51

пульт никому ничего не должен )))

ищи в гугле код для nRF24L01, сканируй команды пульта вертолёта, расшифровывай, и будет тебе управление с пульта
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Режим управления роботом через пульт от вертолета

Сообщение Angel71 » 17 мар 2014, 20:39

совсем недавно один человек писал, что раз 2.4ггц, значит вайфай. :) в данном случае аналогичная железная логика
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Режим управления роботом через пульт от вертолета

Сообщение AndreiSk » 17 мар 2014, 21:46

Вообще-то если есть пульт, то должен быть приемник. Приемник будет?
Или раз 2.4ггц но можно ставить все что угодно?
Аватара пользователя
AndreiSk
 
Сообщения: 2639
Зарегистрирован: 23 апр 2009, 17:03
Откуда: Москва, Самара
прог. языки: C#

Re: Режим управления роботом через пульт от вертолета

Сообщение cotonec » 17 мар 2014, 22:43

nRF24L01 - приемник, пульт передатчик. А как код расшифровать коды пульта?

Добавлено спустя 3 минуты 29 секунд:
Вот нашел http://playground.arduino.cc/Interfacin ... ydAVE1WGUk

Добавлено спустя 8 минут:
вот еще нашел передатчик
Код: Выделить всё
#include <nrf24l01p.h>
#include <SPI.h>

enum
{
SPI_SS_PIN = 10,
NRF_CE_PIN = 9,

NRF_CHANNEL = 120,
NRF_POWER_UP_DELAY = 2,
NRF_PAYLOAD_LENGTH = 16
};

const char test_data[] = "TestPayload";

void setup()
{
SPI.begin();

pinMode(SPI_SS_PIN, OUTPUT);
digitalWrite(SPI_SS_PIN, HIGH);

pinMode(NRF_CE_PIN, OUTPUT);
digitalWrite(NRF_CE_PIN, LOW);

uint8_t address[5] = { 0xE2, 0xE4, 0x23, 0xE4, 0x02 };
nrf_init(address);

Serial.begin(57600);
Serial.println("Init");
}

void loop()
{
delay(500);

Serial.print("Trying to send packet...");

static uint8_t payload[NRF_PAYLOAD_LENGTH];
strcpy((char*)payload, test_data);
nrf24l01p_write_tx_payload(payload, sizeof(payload));

digitalWrite(NRF_CE_PIN, HIGH);
delay(1);
digitalWrite(NRF_CE_PIN, LOW);

do {} while (!(nrf24l01p_get_irq_flags() & (1 << NRF24L01P_IRQ_TX_DS)));
nrf24l01p_clear_irq_flag(NRF24L01P_IRQ_TX_DS);
Serial.println(" done");
}

void nrf_init(uint8_t *address)
{
delay(200);

nrf24l01p_get_clear_irq_flags();
nrf24l01p_close_pipe(NRF24L01P_ALL);
nrf24l01p_open_pipe(NRF24L01P_TX, false);
nrf24l01p_set_rx_payload_width(NRF24L01P_PIPE0, NRF_PAYLOAD_LENGTH);
nrf24l01p_set_crc_mode(NRF24L01P_CRC_16BIT);
nrf24l01p_set_address_width(NRF24L01P_AW_5BYTES);
nrf24l01p_set_address(NRF24L01P_TX, address);
nrf24l01p_set_operation_mode(NRF24L01P_PTX);
nrf24l01p_set_rf_channel(NRF_CHANNEL);

nrf24l01p_set_power_mode(NRF24L01P_PWR_UP);
delay(NRF_POWER_UP_DELAY);
}

void nrf24l01p_spi_ss(nrf24l01p_spi_ss_level_t level)
{
digitalWrite(SPI_SS_PIN, (level == NRF24L01P_SPI_SS_LOW ? LOW : HIGH));
}

uint8_t nrf24l01p_spi_rw(uint8_t value)
{
return SPI.transfer(value);
}

приёмник
Код: Выделить всё
#include <nrf24l01p.h>
#include <SPI.h>

enum
{
SPI_SS_PIN = 10,
NRF_CE_PIN = 9,

NRF_CHANNEL = 120,
NRF_POWER_UP_DELAY = 2,
NRF_PAYLOAD_LENGTH = 16
};

void setup()
{
SPI.begin();

pinMode(SPI_SS_PIN, OUTPUT);
digitalWrite(SPI_SS_PIN, HIGH);

pinMode(NRF_CE_PIN, OUTPUT);
digitalWrite(NRF_CE_PIN, HIGH);

uint8_t address[5] = { 0xE2, 0xE4, 0x23, 0xE4, 0x02 };
nrf_init(address);

Serial.begin(57600);
Serial.println("Init");
}

void loop()
{
Serial.println("Waiting for a packet...");

do {} while (!(nrf24l01p_get_irq_flags() & (1 << NRF24L01P_IRQ_RX_DR)));
nrf24l01p_clear_irq_flag(NRF24L01P_IRQ_RX_DR);

static char payload[NRF_PAYLOAD_LENGTH];
nrf24l01p_read_rx_payload((uint8_t*)payload);//, sizeof(payload));

Serial.print(">>");
Serial.println(payload);
}

void nrf_init(uint8_t *address)
{
delay(100);

nrf24l01p_get_clear_irq_flags();
nrf24l01p_close_pipe(NRF24L01P_ALL);
nrf24l01p_open_pipe(NRF24L01P_PIPE0, false);
nrf24l01p_set_crc_mode(NRF24L01P_CRC_16BIT);
nrf24l01p_set_address_width(NRF24L01P_AW_5BYTES);
nrf24l01p_set_address(NRF24L01P_PIPE0, address);
nrf24l01p_set_operation_mode(NRF24L01P_PRX);
nrf24l01p_set_rx_payload_width(NRF24L01P_PIPE0, NRF_PAYLOAD_LENGTH);
nrf24l01p_set_rf_channel(NRF_CHANNEL);

nrf24l01p_set_power_mode(NRF24L01P_PWR_UP);
delay(NRF_POWER_UP_DELAY);
}

void nrf24l01p_spi_ss(nrf24l01p_spi_ss_level_t level)
{
cotonec
 
Сообщения: 4
Зарегистрирован: 11 мар 2014, 15:26

Re: Режим управления роботом через пульт от вертолета

Сообщение Angel71 » 17 мар 2014, 22:54

чую тяжко вам будет это всё сделать.
то, что к плате с мегой2560 у вас будет подключен модуль трансивера на nfr24l01 это понятно. с пультом не очень понятно. уточните, он "2.4ггц и икс его знает на каком чипе" или в нём трансивер из nrf24... серии? второй момент про "А как код расшифровать коды пульта?". вопрос вроде простой, только пока такое обьяснять просто не имеет смысла - можно сединой обзавестись. попрограммируйте немного эти трансиверы, тогда хоть о чём-то более предметно можно говорить. куски кода вам давать пока смысла не очень много, для вас они будут китайской грамотой.
п.с. для кода есть тег [code][/code]. кликните по кнопке "правка" и попробуйте приведенный код в этот тег обвернуть. :wink: от этого как минимум на странице не будет длинющих сообщений.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Режим управления роботом через пульт от вертолета

Сообщение Myp » 17 мар 2014, 23:00

что то мне подсказывает что задачку автор темы выбрал пока что непосильную для себя...
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Режим управления роботом через пульт от вертолета

Сообщение Angel71 » 17 мар 2014, 23:09

с наскоку точно не получится, а потянет или нет уже имхо от tc зависит
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Режим управления роботом через пульт от вертолета

Сообщение cotonec » 17 мар 2014, 23:12

плата в пульте 2.4ггц lt8900 xn120b2.4g
cotonec
 
Сообщения: 4
Зарегистрирован: 11 мар 2014, 15:26

Re: Режим управления роботом через пульт от вертолета

Сообщение leprud » 18 мар 2014, 10:09

nRF24L01 для этого пульта не подойдет
Вероятно А7105 подойдет
leprud
 
Сообщения: 174
Зарегистрирован: 16 май 2013, 09:26
Откуда: Moscow
прог. языки: декларативные

Re: Режим управления роботом через пульт от вертолета

Сообщение Angel71 » 18 мар 2014, 10:15

какая там плата в пульте значения не имеет. если на ней трансивер lt8900, так возвращаемся к вопросу о железной логике про 2.4ггц. в общем пока похоже, что у вас 2 абсолютно не совместимых трансивера, т.е. думайте, что дальше делать будете.

Добавлено спустя 3 минуты 22 секунды:
a7105 и lt8900 вряд ли совместимы.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Режим управления роботом через пульт от вертолета

Сообщение cotonec » 18 мар 2014, 14:43

А если использовать корпус (pad, кнопки и т.д.) от пульта и поменять там схему с таким же датчиком nRF24L01) Кто ниб. знает печатку платы ?
cotonec
 
Сообщения: 4
Зарегистрирован: 11 мар 2014, 15:26

Re: Режим управления роботом через пульт от вертолета

Сообщение Myp » 18 мар 2014, 14:53

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

единственный пока вариант для тебя это найти ответную часть от того пульта который у тебя есть
к пульту родная плата приёмника нужна.
если ты сфоткаеш свой пульт и выложишь фотку сюда то возможно кто-то узнает этот пульт и возможно к нему есть плата приёмник.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич


Вернуться в Микроконтроллеры

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

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