Лучшая практика для пересылки сигнала с помощью модуля 2,4 ГГц?

Я хочу контролировать скорость двигателя с помощью приемника 2,4 ГГц. Я регулирую скорость, отправляя PWM-информацию двигателю.

Он отлично работает, если я использую arduiono и много проводов. Но я должен разделить Arduino и двигатель, потому что двигатель должен быть портативным. Поэтому я хочу использовать модуль передатчика 2,4 ГГц для Arduino для управления двигателем.

Я хотел бы использовать этот модуль, чтобы получать текущую частоту от arduino и пересылать ее на порт pwm: https://www.sparkfun.com/products/152

Возможно ли это, как я себе это представляю? Есть ли что-нибудь еще, что мне нужно? Когда я мог бы использовать Arduino, это было бы очень просто, но мое решение должно быть небольшим. Чем меньше он становится, тем лучше.

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

Ответы (1)

Этот модуль дает вам низкоуровневый доступ к радио - например, вы не собираетесь отправлять данные протокола высокого уровня. Да, для вас тривиально отправить любое произвольное сообщение на радио и заставить вашу Arduino интерпретировать сообщение по своему усмотрению (установить рабочий цикл ШИМ и т. д.). Вам не нужно делать много чего еще, чтобы получить доказательство концепции. Если вам нужен сверхдальний диапазон, 0 дБм может не подойти, но для нескольких метров вполне достаточно.

Что касается вашего второго вопроса: существует миллион способов идентифицировать разные радиостанции. Самый дорогой и худший способ — иметь разные передатчики для каждого приемника. Понятно, почему это плохое решение. Все ваши другие решения потребуют от вас реализации какого-то протокола более высокого уровня. Вариантов здесь очень много (это целая область академических исследований). Несколько лет назад я использовал похожее скандинавское радио, и у него были разные каналы, которые вы могли использовать. Это может помочь вам (например, поместить один приемник на один канал), но, очевидно, не очень хорошо масштабируется (например, если у вас больше устройств, чем каналов, вы вернулись к исходной точке. Не менее важно, что вы можете не захотеть использовать определенные каналы - - они могут быть шумными, иметь плохой PRR и т. д.). Один простой, но не особенно надежным (с точки зрения сети) является изобретение протокола, в котором вы рассылаете сообщение, и в зависимости от содержимого этого сообщения отвечает один и только один получатель. Ваша Arduino должна будет реализовать любой протокол, который вы хотите, поэтому очевидно, что вы не можете сойти с ума от сложности (например, вы, вероятно, не хотите реализовывать сокеты posix). Для нескольких моторов (менее 10) вы, вероятно, будете делать что-то подобное, если у вас нет строгих требований к задержке.

спасибо за Ваш ответ. Я не хочу интерпретировать данные на моем Arduino, он просто передает текущую частоту. Мне нужно найти способ получить эту информацию и отправить ее мотору. У вас есть учебник, который я мог бы использовать?
Вам понадобится передатчик и приемник. Для каждой стороны связи потребуется радиомодуль и микроконтроллер (или какая-либо другая логика). Радиомодуль имеет интерфейс SPI — это означает, что вы должны интерпретировать данные на своем Arduino. В конце концов, вам нужно, чтобы ваш Arduino закодировал частоту в какой-то пакет данных, который отправляет передающая радиостанция. Вам понадобится обратное преобразование на принимающей стороне. Это может быть так же просто, как отправка строки ASCII, или настолько сложно, насколько... ну, намного сложнее. У меня нет учебника для вас, но я заметил, что
кто-то сделал для него библиотеку Arduino: player.arduino.cc/InterfacingWithHardware/Nrf2401T . Это действительно должно упростить вам задачу и позволить вам выполнять простую связь ASCII между несколькими разными узлами.
Можете ли вы порекомендовать хороший способ реализации логики на принимающей стороне? У меня нет большого опыта работы с микроконтроллерами, и мне нужна очень компактная плата, поэтому я не могу использовать ардуино в качестве приемника :(
Я принял ваш ответ, спасибо. В любом случае, я все еще благодарен за каждый совет, который вы можете мне дать :-)
Вы можете раскрутить свою собственную плату с микроконтроллером atmega (тот, что используется в arduino) и сделать ее очень маленькой. Если вы ограничены в пространстве, я бы так и сделал. Вам нужно связаться с этим модулем, используя SPI. Хотя вы могли бы сделать это с помощью дискретной логики, это было бы очень болезненно и занимало бы гораздо больше места, чем любой микроконтроллер. Другой вариант — FPGA/CPLD. Это супер излишество и определенно будет слишком большим. Вы можете получить совместимую с Arduino atmega в 28-контактном корпусе QFN — 4 мм x 4 мм.
Кстати, я только что погуглил «супер маленький арудино» и нашел этих парней: tiny-circuits.com/products/tinyduino . Я уверен, что есть несколько других вариантов с готовыми небольшими Arduino.