2013-02-16 2 views
2

Привет, о могущественное сообщество StackOverflow.com.Беспроводной обмен между Arduino и Raspberry Pi: выбор протокола

Это вопрос, который я занимаюсь некоторое время. У меня есть (будет) Arduino 2560, разговаривающий с RPi, используя пару передатчиков/приемников 388 RF - так эффективно это будет последовательная связь. Хуже того, будет много передатчиков (Arduinos) и одного приемника (RPi). Два вопроса, которые я не могу достаточно фигурирующий ответ на:

  1. Протокола является чрезвычайно примитивно - так что, если я хочу какие-либо коррекции ошибок, я должен выбрать сам. Я думал использовать что-то чрезвычайно простое, как бит четности, чтобы начать и посмотреть, как это происходит. Мысли?

  2. Говоря о самом протоколе - как мы будем кодировать данные? Эффективно будет один номер, который я собираюсь передать - идентификатор передатчика, - сопровождается булевым флагом (датчик активен/неактивен). Каким будет лучший способ кодирования данных для последовательной передачи RF? Все в текст? Я также могу передать это как поток байтов, сколько бы это было не так, но это затрудняло бы дальнейшую портирование (Big/Little Endian, размер слова и т. Д.). Также попытался рассмотреть некоторые экзотики, такие как NanoPB, независимо от того, насколько протокольные буферисты великолепны, они, вероятно, слишком велики для этой задачи. Я понимаю, что моя позиция очень шаткая здесь, поэтому я буду благодарен за ваши идеи.

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

В любом случае, вот где я стою. Поблагодарили бы за любые ответы.

Это transmitter Я использую и это receiver.

Спасибо большое всем!

ответ

0

Вы посмотрели библиотеку Arduino Virtual Wire - http://www.pjrc.com/teensy/td_libs_VirtualWire.html. Это отлично работает с этими передатчиками и приемниками на Arduino, и не должно быть слишком сложно переносить на малину Pi. Об этом сообщается на форуме http://www.raspberrypi.org/phpBB3/viewtopic.php?t=24215&p=239410.

+0

Спасибо, я рассматривал VirtualWire, но не нашел готовых к использованию портов (если честно, я даже не найти источник код) – sgzmd

0

Получать теоретически можно было бы портировать на малину, но вам понадобится доступ в режиме реального времени к процессору для использования бит-биений для передачи. К сожалению, Linux не является оперативной ОС, так как процессор тратит много времени на другие процессы. Это разрушает хаос при попытке создать ссылку на программное обеспечение. Он хорошо работает на Arduino, где работает только одна программа.

Есть некоторые аппаратные kludges, которые требуют немного дополнительной стоимости и сложности оборудования. Один из них - отправить данные в SPI в режиме 0 и подключить контакты MOSI и SCLK к входу ICOR XOR gate. Другим аппаратным методом было бы программирование Arduino или PIC для работы в качестве шлюза между RF-модулями и Raspberry Pi с использованием SPI или I2C для обработки RF.

Примечание: Для этого kludge требуется FIFO-буфер SPI UART. Некоторые из ранних моделей малины Pi имеют программный SPI и не используют аппаратный FIFO. Проверьте спецификации вашей конкретной версии.

Кто-то заинтересованный и квалифицированный может также создать модуль ядра для Pi для обработки этого типа ссылки.Более подробную информацию по этой теме можно найти здесь:

http://www.raspberrypi.org/forums/viewtopic.php?t=39951