Как соединить два Arduino без щитов?

14

Я планирую систему Arduino, которая состоит из нескольких плат Arduino. Максимальное расстояние между досками составляет около 50 метров. Я хочу отправить основные данные между ними, как короткие строки или целые числа. Я знаю, что могу отправлять данные через кабели Ethernet, но для этого требуется сетевой экран или плата Arduino Ethernet, что удваивает затраты. Есть ли бюджетный способ, которым я мог бы соединить платы, используя только самые основные платы (такие как Uno) и некоторые другие компоненты, но не полный экран?

totymedli
источник
Если бюджет не был проблемой, вы можете использовать чипы Bluetooth или XBee. Они не так уж и плохи, но будут стоить около $ 60, как вам понадобится 2.
Steven10172
@ Steven10172 Bluetooth-устройства удобны, но кажется, что ОП хочет дешевое решение без щитов (может быть, низкий профиль?)
Anonymous Penguin
3
Убедитесь , убедитесь , чтобы соединить основания , если ваша среда передачи электроэнергии !!!
Анонимный Пингвин

Ответы:

9

Для проводной связи на большие расстояния смотрите RS-485 .

Поскольку он использует дифференциальную сбалансированную линию по витой паре (например, RS-422), он может охватывать относительно большие расстояния (до 4000 футов (1200 м)). Эмпирическое правило заключается в том, что скорость в бит / с, умноженная на длину в метрах, не должна превышать 108. Таким образом, 50-метровый кабель не должен передавать сигнал быстрее, чем 2 Мбит / с.

Вы можете использовать чип MAX485. С ним довольно легко работать, но есть и хорошая библиотека:

https://github.com/Protoneer/RS485-Arduino-Library

sachleen
источник
Разве он не может просто зачистить провода в RS-485 или аналогичном и просто использовать его для последовательного соединения, чтобы сэкономить деньги? 9600 бод не работает почти так же быстро, как 2 Мбит / с. Есть ли что-то особенное в протоколе / напряжениях / и т.д. что делает его подходящим для больших расстояний? Это может сэкономить немного денег ...
Анонимный пингвин
Это дифференциальный сигнал, передаваемый по витой паре. Уменьшает шум. en.wikipedia.org/wiki/Differential_signaling
sachleen
Эта страница является отличным ресурсом по RS485 с Arduino gammon.com.au/forum/?id=11428
DaveP
7

Есть две категории, которые я могу придумать для классификации функций коммутации плат Arduino:

Между 2 устройствами:

  • Последовательный: простой в использовании и требует только 2 строки данных.
  • OneWire: сложнее в использовании и медленный, но использует только одну строку данных

Между более чем 2 устройствами

  • I2C: Вы можете иметь до 128 устройств в сети, индивидуально адресуемых, но требующих ведущего устройства, использующего 2 линии данных. это также известно как провод.
  • SPI: сложный в использовании, но очень быстрый и простой выбор устройства. использует много строк данных (3 + количество устройств)
  • OneWire: использование адресуемого oneWire даже медленнее, чем обычного oneWire, все еще только одна строка данных
  • SoftwareSerial: Вы можете иметь несколько устройств, соединенных разными последовательными линиями, но это медленнее.
  • МОЖЕТ: доступно только на срок и адресно

Существуют и другие доступные методы, но для перечисленных здесь требуется только минимум внешнего оборудования.

Оценки расстояний см. В http://forum.arduino.cc/index.php?topic=82937.0 и http://www.tldp.org/HOWTO/Remote-Serial-Console-HOWTO/serial-distance.html.

Эти скорости передачи данных напрямую контролируются в последовательном и могут быть изменены во многих других.

Доктор
источник
5

Freakduino делает несколько плат Arduino со встроенным беспроводным интерфейсом. Их дальний беспроводной диапазон составляет 900 МГц, а более короткий диапазон - 2,4 ГГц. Я думаю, что они на самом деле являются радиоприемниками XBee, и для программирования вы бы использовали библиотеку chibiArduino, которая доступна (и задокументирована) на веб-сайте Freakduino. При беспроводной связи с другим радио вы можете использовать Broadcast или указать радио по его идентификатору, который является значением, которое вы должны установить в EEPROM Freakduino.

Взято прямо с сайта Freakduino:

Добавление встроенной беспроводной радиосвязи на основе протокола IEEE 802.15.4 (того же протокола радиосвязи, что и у XBee) позволяет осуществлять беспроводное управление устройствами или сбор данных с беспроводных датчиков. Была добавлена ​​дополнительная схема батареи, чтобы она могла функционировать как настоящий беспроводной узел без каких-либо внешних силовых кабелей. Плата также спроектирована таким образом, чтобы соответствовать прочному корпусу, чтобы конструкцию можно было безопасно транспортировать или использовать в реальном сценарии использования, не беспокоясь о повреждении схемы.

Это радио на 900 МГц - мой личный фаворит. Я использую его все время, потому что 900 МГц предлагает гораздо лучший диапазон по сравнению с 2,4 ГГц. Радиостанция может выдавать мощность передачи до 10 мВт, что обеспечивает удивительный диапазон радиуса действия. С прямой видимости, несколько сотен метров не удивительно. Если требуется дополнительный диапазон, режим модуляции также можно изменить с OQPSK на BPSK. Это приводит к дополнительному диапазону за счет скорости передачи данных, при этом максимальная скорость составляет от 250 кбит / с до 40 кбит / с в стандартном режиме.

HK1
источник
0

Как вы сказали, экраны Ethernet дороги, но вам не нужно использовать экран. Проверьте enc28j60 для проводной сети или ESP8266, если вы предпочитаете беспроводную связь. Оба стоят около 4 долларов США. Я использую ESP8266 сейчас, и около 8 устройств разговаривают друг с другом и Raspberry Pi. Это действительно отличный маленький чип! Я не могу говорить лично с ENC28j60, поскольку они все еще сидят в пакете на моем столе.

Баттерс
источник
0

Вы можете использовать коммутационную плату Ethernet (2 доллара в Sparkfun). Это позволяет вам использовать кабели Ethernet, но вам не нужно использовать полный протокол TCP / IP, вместо этого вы можете просто подключить выводы данных к коммутационной панели, использовать Ethernet для их соединения, а затем заставить их общаться по последовательному порту. Я использую это совсем немного, чтобы разместить один проводной датчик дальше от Arduino для прочного, но дешевого соединения.

Натан
источник