Устройство приема-передачи радиосигнала

Тема в разделе "Посоветуйте детальки", создана пользователем GlebManager, 21 июн 2014.

  1. GlebManager

    GlebManager Нуб

    Доброго времени суток.
    Начну по порядку. В радиотехнике я полный 0, посему не судите строго ибо сразу признался :) Вобщем, есть идея собрать устройство которое будет принимать сигналы с центрального компьютера на радиочастоте (определенную последовательность символов), а затем отправлять её на другой частоте другому устройству.

    Свои мысли следующие:
    Платформа Arduino (дело в том что совсем чучуть увлекаюсь программированием (в основном Python), и ардуиновская среда разработки кажется мне наиболее привлекательной). Далее потребуется процессор, блок энергонезависимой памяти, трансивер (не уверен что правильно назвал, но все-же под этим словом я понимаю деталь позволяющую принимать и посылать сигналы на радиочастоте), экранчик, клавитура, модуль питания для подключения батареек, слот miniusb для подключения к персональному компьютеру (хотя насколько я понимаю он встроен в arduino по умолчанию), ну и соответственно транзисторы-конденсаторы в которых я вобще ничего не понимаю :)

    Помогите пожалуйста реализовать идею :) буду рад любой информации в том числе о том как собрать все это вместе)

    можно писать на мэйл glebmanager@mail.ru
     
  2. Megakoteyka

    Megakoteyka Оракул Модератор

    Вы собираетесь устройство самостоятельно собирать из комплектующих?
    В контроллере есть энергонезависимая память (EEPROM), но мало.
    По идее контроллера с парой радиомодулей типа NRF24L01 должно хватить.
    Зачем экран и клавиатура, если оно все равно будет подключаться к ПК?
    Если объясните более подробно смысл затеи, вероятность полезности советов сильно повысится.
     
  3. geher

    geher Гуру

    Если я правильно понимаю задачу, то схема вырисовывается примерно следующая (вариант не единственный, но видится на основе предоставленной информации пока так).
    1. Компьютер с радиомодулем.
    В зависимости от выбора радиомодулей есть варианты:
    а) радиомодуль вроде APC220, с последовательным интерфейсом. Для подсоединения к компьютеру будет достаточно преобразователя USB-Serial (например, http://amperka.ru/collection/misc-boards/product/usb-serial-converter).
    б) радиомодуль вроде вышеупомянутого NRF24L01, управляемый по SPI. Придется либо ваять свой преобразователь USB-SPI на каком-нибуль железе, либо сделать его на ардуине, которая будет принимать сигнал через USB через виртуальный последовательный порт и отправлять его при помощи радиомодуля.
    2. Ретранслятор.
    Вполне возможна реализация на ардуино с двумя радиомодулями: один принимает сигнал от радиомодуля, тем или ниым образом подключенного проводами к компьютеру, другой отправляет его дальше.
    3. Приемник.
    Тоже ардуина с радиомодулем, возможно подключенная к чему-то еще по последовательному порту или иному интерфейсу.

    При использовании радиомодулей вроде упомянутых APC220, разные частоты на участках передачи сигнала необязательны. Адресация определяется общим идентификатором сети для двух и более модулей.
    Для NRF24L01 адресат определяется уникальным идентификатором модуля (адресом), задаваемым при инициализации модуля.
    При пересечении частот просто связь будет с некоторой вероятностью медленнее за счет возможных коллизий.

    На уровне использования радиомодулей кондденсаторы-резисторы-транзисторы не понадобятся. Они могут понадобиться только для сопряжения с другими элементами.
    Насчет экранчика вопрос спорный, диагностику и отладку можно проводить при помощи последовательного порта, но можно и ЖК индикатор прикрутить, тоже без дополнительных деталей, кроме проводов. Клавиатура ардуино точно не нужна, разве что несколько кнопок управления (тут, возможно, потребуются резисторы и конденсаторы, а для особо продвинутого подавления дребезга еще и триггер шмидта).

    Если хочется программировать на питоне, то в качестве платформы можно выбрать Raspberry Pi, но, как мне кажется, это будет необоснованно дорого и мощно, разве что на ретранслятор и приемник будут навешаны очень серьезные функции, которым и ардуино меги мало будет.
     
    Последнее редактирование: 21 июн 2014
    GlebManager нравится это.
  4. GlebManager

    GlebManager Нуб

    Большое спасибо всем за ответы)

    итак, по порядку:

    есть центральный компьютер (взят обычный ЦК от старой автомобильной сигнаизации), он посылает определенный код на частоте стандартной для автосигнализаций (133 помоему), задача считать код который он послал в устройство, а затем передать его небольшому роботу. Естественно обе операции должны быть беспроводными. тоесть принцип действия брелка от авто.


    Экранчик и клавиатура (2-3 кнопки) нужны для того чтобы контролировать процесс. Тоесть: нажал на кнопку - получил код-на экране высветилась надпись "код получен" (в принципе можно заменить экраны светодиодами, всеравно он нужен только для контроля над процессом) затем нажал другую кнопку - код передал роботу (роботы выполнил соответствующее действие)

    подключение к компьютеру необходимо для того чтобы залить на платформу код программы (специальной аппаратуры для таких платформ у меня нет, поэтому единственно возможный вариант с программированием видеться мне через подключение к ПК по USB)

    в идеале я-бы хотел приобрести уже собранное устройство которое нужно просто запрограммировать, поскольку я раньше не сталкивался с микроэлектроникой вероятность того что я что-нибудь накосячу при самостоятельной сборке очень велика и я даже не пойму что не так и где ошибка. Поэтому колличество операций с "железом" хочется свести к минимуму.
     
  5. geher

    geher Гуру

    Т.е. по блокам:
    1. Компьютер не ПК, а блок автосигнализации с уже имеющимся радиомодулем. Нужно только научиться его программировать. Скорее всего для этого имеется либо последовательный, либо SPI интерфейс, либо оба. В любом случае придется искать и читать документацию по этому вопросу. Тут масса открытых вопросов, включая необходимые инструменты для программирования и отладки, как аппаратные, так и программные.
    2. Ретранслятор. Изменения в том, что на прием от компьютера нужен радиомодуль, умеющий принимать радиосигнал от сигнализации. Это уже отдельный вопрос. Есть ли такие, как их сопрягать с ардуиной.
    3. Приемник. Поскольку предполагается какой-то робот, то можно построить что-то на ардуине. Вопрос, что это будет за робот. Если что-то типовое, то можно воспользоваться готовой платформой на основе ардуино, добавив в нее радиомодуль.
    В противном случае можно опять же построить на ардуино что-то свое, но это уже посложнее будет.
    Для программирования ардуино достаточно ПК, какой-нибудь среды разработки (Arduino IDE, Atmel Studio и т.д.) и USB кабеля (если это не какая-нибудь ардуино мини, которой еще нужен USB-RS преобразователь).
     
    Последнее редактирование: 22 июн 2014
    GlebManager нравится это.
  6. GlebManager

    GlebManager Нуб

    Блок от сигнализации уже настроен) как и робот)
    Единственное что требуется создать этот приемник-транслятор)
    Нужно просто считать код который он посылает и затем передать его :)
    Изначально я как раз таки и думал об арудине) вопрос в том какую из них брать за основу)

    Роботу нужно будет просто передать сигнал на радиочастоте) дальше он сам :)
     
  7. geher

    geher Гуру

    А у робота уже есть какой-то приемник?
    Тогда возникает лишь один вопрос для ретранслятора, если делать его на ардуино: где взять радиомодули, один из которых должен получать сигнал от сигнализации, а другой передавать его роботу, и как эти радиомодули прикрутить к ардуино.
    Где-то читал, что радиопосылки от сигнализации на частоте 433 МГц принимали на такой модуль:
    http://arduino.net.ua/shop/arduino_adapters/433Mhz RF KIT- Moduli priema i peredachi na 433 Mhz /
    Подключается к ардуино без проблем - просто проводами к пинам, но будет ли он принимать сигналы вашей сигнализации - вопрос открытый.
     
    GlebManager нравится это.
  8. GlebManager

    GlebManager Нуб

    Да так-же снят с аналогичной старой автосигналки)
    Насколько я понимаю подойдет любой приемник способный излучать и принимать на данной частоте
    у робота есть уже такой приемник нужно просто излучить.
    Какую именно платформу Вы-бы посоветовали для данного проекта? тоесть конкретную ардуино) их-же много....
     
  9. geher

    geher Гуру

    Для такого случая все ардуино примерно одинаковы.
    Если планируется воспользоваться шилдами (шилд - это что-то типа платы расширения, например, шилд с экраном), то Uno или Leonardo (только потому, что шилд удобно ставить на такие ардуины стандартного размера). Между этими платами есть небольшая разница, но с точки зрения построения ретранслятора они не существенные. Разве что в Leonardo есть возможность использовать аппаратный последовательный порт для каких-то нужд проекта, и одновременно делать отладочную выдачу на ПК через виртуальный порт через USB. Остальные ардуины стандартного размера представляют из себя либо усложнения типовых, либо свободные вариации на тему с тем же в общем-то содержимым с точностью до несущественных в данном случае мелочей.
    Если важны размеры, то Nano или Micro (те же Uno и Leonardo, но в компактном исполнении). Можно Mini (самый маленький), но тогда к нему надо еще USB-Serial преобразователь, чтобы ее программировать.
    А вот насчет любого приемника или передатчика сильно сомневаюсь. Там еще могут быть тонкости с модуляцией сигнала и протоколами передачи. Могут оказаться несовместимы.
     
    GlebManager нравится это.
  10. GlebManager

    GlebManager Нуб

    итак за основу берем микро
    http://amperka.ru/product/arduino-micro
    или нано
    http://amperka.ru/product/arduino-nano
    я так понимаю они отличаються толко тем что во втором варианте есть usb-порт?
    в обоих вариантах у нас уже имеется процессор и память, верно?)
    если в микро впаивать порт то любой подойдет? только из каталога выбрать? и вобще сложен-ли процесс?
    для usb иодуля к микро можно использовать это
    http://amperka.ru/collection/boards/product/usb-serial-converter
    правильно я понимаю?

    затем нам остается только найти приемник
    не подскажите варианты? а то я не обнаружил тут....
     
  11. geher

    geher Гуру

    В микропроцессорах, которые используются в ардуино (в самой микросхеме) уже есть память (флэш для программ, ОЗУ и EPROM), Сама ардуина - это просто обвязка вокруг микропроцессора, облегчающая жизнь, в виде USB порта, схемы электропитания, позволяющей запитывать как от порта, так и от 7-12 вольт, плюс разъемы для удобного подключения.
    USB порт есть в в Nano, и в Micro. Отличаются эти платы только тем, что одна основана на UNO, другая на Lуonardo, что порождает некоторые мелкие нюансы в подключении и возможностях, вроде расположения выводов SPI, I2C, прерываний и прочего подобного.
    Сразу замечу, что USB порт в ардуино служит только для обмена по виртуальному последовательному порту и программирования. Для подключения внешней периферии к ардуино он не предназначен.

    Конвертер же нужен для Mini (можно и из магазина амперки).
    http://amperka.ru/collection/boards/product/arduino-mini
    Это по сути та же Nano, но без USB порта и чуть меньше размером.

    А вот с радиомодулями ничего не подскажу. Имею опыт работы только с APC220 и NRF24L01. Это скорее всего с радио от сигналки совсем общаться не будет. ибо собственный навороченный протокол обмена с адресацией.
     
    GlebManager нравится это.
  12. GlebManager

    GlebManager Нуб

    тогда остановимся на на микро)
    http://amperka.ru/product/arduino-micro
    кнопки и светодиоды, я думаю подойдут любые...
    остается передатчик)

    спасибо большое Вам за помощь)) очень продвинулся вперед)

    Если кто-то может подсказать по модулям приема-передачи будет вобще великолепно :)
     
  13. GlebManager

    GlebManager Нуб

    Последнее редактирование: 28 июн 2014
  14. geher

    geher Гуру

    1. От батарейки запитать можно, если это что-то вроде "Кроны" на 9 В, или если это не одна батарейка, а несколько, соединенных последовательно.
    У данной ардуины есть вход, на который можно подать 7-12 В (маркирован VI).

    Также можно запитать через USB, но потребуется преобразовать напряжение, выдаваемое батарейкой в стабильные 5В.

    Вопрос только в том, сколько это дело будет потреблять и, как следствие, какое время автономно работать. Предсказать не берусь, тут как-то считать надо.

    2. Указанные радиомодули вполне подойдут к ардуино. Про сигнализацию не скажу, но из описания для первого примера из отсутствия кодирование вроде следует возможность обработать радиосигнал самому. Можно ли будет обработать данные от данной конкретной сигнализации, не скажу, поскольку не владею вопросом.
     
    Последнее редактирование: 28 июн 2014
  15. GlebManager

    GlebManager Нуб

    И таки снова здравствуйте)

    Вобщем вооружился я ардуиной, рф-модулем и мозгами, последнее кажется оказалось бракованным :)

    подскажите пожалуйста как передать данные чрез рф модуль не переводя их в байты? ну тоесть например написал "12345" приемник и передал "12345" а не непонятную билеберду из байтов

    я использую библиотеку virtual wire, видимо дело в ней... какие есть альтернативы подходящие для моих целей?) буквы передавать не надо только цифры.

    заранее спасибо :)
     
  16. vvr

    vvr Инженерище

    Так здесь куда не ткнись везде байты, как без них.
    Надо просто почитать примеры с рф модулями (их в сети как грязи) и тем на форумах полно.
    Не жди альтруистов
     
  17. GlebManager

    GlebManager Нуб

    Почитал. Собрал трансмиттер - вроде работает, а от с рессивером проблемы.

    схема подключения следующая

    5v - vcc
    gnd-gnd
    data (ближний к vcc)-D7

    скрипт:

    byte incoming;



    void setup()
    {
    Serial.begin(9600);
    pinMode(7,OUTPUT);
    }

    void loop()
    {
    if(Serial.available())
    {
    digitalWrite(13,HIGH);
    }
    else
    {
    digitalWrite(13,LOW);
    }


    }

    в качестве трансмиттера проверки используется брелок от сигнализации (насколько я знаю их частота (433) и частота рессивера должны совпадать)

    однако 13-ый встроенный в arduino светодиод никак не хочет загораться, причем если поменять местами HIGH и LOW то гореть он будет исправно, отсюда можно сделать вывод что сигнал рессивером не принимается. Пробовал использовать другой рессивер - ситуация такая-же.

    Подскажите пожалуйста что я делаю не так :) заранее спасибо :)