Малина Пи в Ардуино (Леонардо), избегая латентности

Я использую скрипт Python через (TkInter) на малине Pi для захвата движения мыши и событий. Моя цель - отправить эти данные в реальном времени на другое подключенное устройство Arduino (Леонардо).

Мое первое решение - как подключить-отправить эти данные. Я понимаю, что есть 3 основных варианта:

  1. через USB
  2. I2C
  3. Последовательный GPIO

Поскольку оба USB-порта используются, я выбирал третий метод, серийный GPIO. Тем не менее, я беспокоюсь о проблемах с задержкой, поскольку один модуль Python RPi.GPIO упоминает:

  

этот модуль не подходит для критических ситуаций в реальном времени или времени   приложения

Для серийного GPIO существует также WiringPI который, как я предполагаю, может иметь меньше проблем с задержкой, поскольку он написан на C и имеет оболочку Python.

Может ли кто-нибудь из специалистов по малине Pi /Python перезвонить? Будет ли лучше работать с решением USB для минимизации задержки?

5 голосов | спросил eco_bach 14 J000000Monday14 2014, 22:20:35

1 ответ


3

Между малиной Pi и Arduino, использование UART - лучший вариант. Я знаю, потому что это мой третий проект. (А также USB невозможно) Вы должны запустить UART со скоростью 1000000 бод. Конфигурация UART по умолчанию - 9 бит на символ. Это оставляет латентность 1/(1000000/9) или 0.000009 aka 9 микросекунд. Если вы отправляете команды мыши, я бы догадался, что для обновления потребуется 2 байта, так что на обновление будет 18 микросекунд. Для сравнения - абсолютная лучшая латентность Bluetooth 625 микросекунд в соответствии с Википедией.

Так что просто используйте UART и будьте счастливы. Также вам нужно использовать переключатель уровня или просто простой резисторный делитель на TX-штыре Arduino, идущий к RX Raspberry Pi. Это потому, что Arduino составляет 5 V, а Raspberry Pi - 3,3 В. Оставьте комментарий, если вам нужна помощь в этом.

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

ответил portforwardpodcast 11 PMpSat, 11 Apr 2015 13:34:53 +030034Saturday 2015, 13:34:53

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132