Подключить несколько устройств к ПК

В разделе рассматриваются вопросы информационного обмена в робототехнике.
Аппаратный уровень, протоколы.

Re: Подключить несколько устройств к ПК

Сообщение elmot » 06 май 2013, 22:10

calisto писал(а):
Myp писал(а):проще залить в все роутеры одинаковую прошивку и управлять ими не используя вобще никаких программ, просто нажал ссылку в любимом браузере и управляешь :)


А под роутером подразумевается не обычный роутер типа d-link-а в который "комп втыкается", а какой-то готовый модуль?

Могу предложить 3 варианта:
TP-Link MR-3020 - продается в РФ, стоит ок. 1000 руп.
TP-Link WR-703n - продается в китае, стоит ок. $25
Плата на том же чипсете, но слегка мощнее по памяти и с доступными GPIO. Отдам по $30.
http://roboforum.ru/forum60/topic12829-15.html#p270498
Прошивка здесь [[OR-WRT]] под все три варианта.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Подключить несколько устройств к ПК

Сообщение calisto » 06 май 2013, 22:49

Angel71 писал(а):количество приёмников это хорошо, но ещё есть объёмы данных и время. хотя бы примерно прикиньте с какой эпизодичностью (мин/макс) каждый приёмник будет получать/отправлять данные, их объём (мин/макс). какой желаемый диапазон у "время отклика" тоже не помешало бы немного уточнить. +устройства у вас будут в прямой видимости или нет?


Большое спасибо за уточняющие вопросы/указания!

1. Устройства будут в прямой видимости, хотелось бы иметь связь в радиусе до метров 50-ти. Но 20 метров нужно "железно", то есть на этом расстоянии хочется иметь "прочное" соединение (чтобы в случае чего "машинка" не уехала в горизонт =) ).

2. На сколько часто будет идти обмен данными. Пока предполагается, что редко. Минимальный промежуток между командами от мастера к приемнику - порядка 50 мс. Максимальный промежуток между командами - несколько минут. (светодиод включили и он горит минут 5, потом выключили). "Время отклика" по предварительным соображениям в пределах 30-60 мс.

3. данных мало. Думаю, что примерно такой формат: запрос к приемнику - {адрес устройства}[команда][данные] (мин: 32 байта, макс: ~500 байт), ответ приемника - {адрес устройства}[результат-выполнения-команды][данные] (32 байта + данные. мин: 32 байта, макс: ~500 байт ).
Под данными подразумевается например имя устройства, или значение счетчика или что подобное. Но данные пока получать предполагается редко. Основное управление (на пока) - это управления колесами, светодиодами и т.п.

Добавлено спустя 7 минут 45 секунд:
elmot писал(а):Могу предложить 3 варианта


Спасибо за предложение! Наверное выберу не-роутерный вариант.

Добавлено спустя 3 минуты 47 секунд:
ALS писал(а):Каждый блок собран на связке nRF24L01 + PIC16F690.
Расстояние - по прямой до 15-20 м, в нашем случае - в пределах этажа-двух с 1-2 стенами/плитами перекрытия.


Круто! Очень интересно. 15-20 это предельная дальность, правильно понял? То есть в 25-ти метрах уже совсем соединения нет? Если так, то А как-то можно дальность увеличить? Чтобы раза в два дальше, чтобы метров до 30 пробивало?
calisto
 
Сообщения: 7
Зарегистрирован: 02 май 2013, 23:51
прог. языки: scala, asm

Re: Подключить несколько устройств к ПК

Сообщение ALS » 06 май 2013, 23:07

calisto, использовал самые дешевые трансиверы, те, что по 1,5$ и с PCB-антенной. Дальше 20метров не проверял, не было необходимости.
Но если в качестве "мастера" поставить такой, то он пробьет гораздо дальше.
Аватара пользователя
ALS
 
Сообщения: 803
Зарегистрирован: 24 окт 2011, 23:32
Откуда: Севастополь
прог. языки: асм

Re: Подключить несколько устройств к ПК

Сообщение calisto » 07 май 2013, 22:15

ALS, спасибо. Пока постараюсь узнать более подробно про данный вариант (мне это интереснее, чем городить что-то с роутерами).

ALS писал(а):Весь протокол свелся к передаче 2 байт адреса (до 65536 подчиненных устройств) + 30 байт данных (это 30х8=240 каналов в каждом для "помигать светодиодом").


Теоретически оно так, но вот судя по спекам, там 6 устройств можно без каких-либо танцев подключить одновременно. Может быть не правильно понял спеку. Но если хочется больше, то придется уже с адресами и переключениями что-то придумывать/манипулировать? или как-то проще можно?
calisto
 
Сообщения: 7
Зарегистрирован: 02 май 2013, 23:51
прог. языки: scala, asm

Re: Подключить несколько устройств к ПК

Сообщение ALS » 08 май 2013, 00:13

Да, там есть 6 буферов для одновременной работы с несколькими трансиверами.
Правда, в этом режиме я не проверял, ничего конкретного подсказать не могу.
Аватара пользователя
ALS
 
Сообщения: 803
Зарегистрирован: 24 окт 2011, 23:32
Откуда: Севастополь
прог. языки: асм

Re: Подключить несколько устройств к ПК

Сообщение calisto » 08 май 2013, 21:24

ALS, а не подскажите по какой схеме вы подключали несколько устройств к одному мастеру? Мне бы намек на общий принцип такой схемы очень помог разложить в голове всё по местам =)
calisto
 
Сообщения: 7
Зарегистрирован: 02 май 2013, 23:51
прог. языки: scala, asm

Re: Подключить несколько устройств к ПК

Сообщение ALS » 09 май 2013, 00:31

Так там, вроде, все просто - во время инициализации каждому модулю задается его ID, я и прописал во всех один и тот же.
А дальше в самом передаваемом пакете сделал именно так, как писал ранее : первые два байта - это адрес, остальные 30 - данные.
Все подчиненные принимают весь пакет целиком, но "реагирует" на него только тот, адрес которого совпадает с передаваемым в пакете.

ЗЫ
Можно сделать и по-другому : назначить разные ID для всех слэйвов, а мастеру менять его ID непосредственно перед передачей очередного пакета. Тогда каждый слэйв будет реагировать только на предназначенный для него пакет. Но, опять-таки, я не использовал этот вариант, поскольку у меня многие пакеты - групповые и предназначены для выполнения разом всеми слэйвами.
Последний раз редактировалось ALS 09 май 2013, 04:28, всего редактировалось 1 раз.
Аватара пользователя
ALS
 
Сообщения: 803
Зарегистрирован: 24 окт 2011, 23:32
Откуда: Севастополь
прог. языки: асм

Re: Подключить несколько устройств к ПК

Сообщение calisto » 09 май 2013, 01:18

ALS, спасибо за ответ. Теперь стало понятнее.
Как-то не подумал что можно задать несколько слэйвов с одним и тем же ID. Первая мысль - конфликт имен, не заведется. =)
calisto
 
Сообщения: 7
Зарегистрирован: 02 май 2013, 23:51
прог. языки: scala, asm

Пред.

Вернуться в Коммуникации

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

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

cron