Могу ли я соединить вместе несколько плат Arduino Nano ?
Я хочу знать, смогу ли я соединить вместе несколько плат Arduino Nano (пример: 10 плат). Также я хочу знать, есть ли какие-либо проблемы со связью между ними с использованием I2C, может ли это повлиять на скорость обработки на каждой плате и будут ли какие-либо задержки при общении?
@Omar Khaled , 👍3
Обсуждение2 ответа
Я хочу знать, смогу ли я соединить вместе несколько плат Arduino Nano...
Да, вы можете прочитать об этом здесь на arduino.cc. Где сказано: "...может быть полезно настроить две (или более!) платы Arduino... для обмена информацией друг с другом..."
... я хочу знать, есть ли какие-либо проблемы со связью между они используют I2C...
Ожидается, что эта функция, согласно приведенной выше ссылке, будет работать. (Можете ли вы объяснить, каких проблем вы избегаете?)
...может ли [связь i2c] повлиять на скорость обработки на каждой плате...
Скорее всего, так и будет. На большинстве платформ Arduino не работают операционные системы. Итак, ваша программа — это все, что работает. Если ваша программа занята сбором данных с датчиков, будет сложно (а возможно и невозможно) одновременно обрабатывать сообщения i2c.
Я собираюсь подключить 4 энкодера двигателей постоянного тока и некоторые другие датчики, но для лучшей производительности энкодеры должны быть на контактах прерывания. Я пытался подключить их к Arduino Mega, но у нее всего 3 пары контактов прерывания, а мне нужно 4 пары. Поэтому проблема, которую я пытаюсь избежать, заключается в следующем: прерывание каждого энкодера другим., @Omar Khaled
Подумайте, какова ваша цель. Можете ли вы обработать прерывание на отдельном встроенном процессоре таким образом, чтобы ограничить бремя синхронизации внутри этого процессора? Иногда ответ становится яснее, если вы рефакторите вопрос, а не будете искать труднодоступное оборудование., @st2000
Да, это, конечно, возможно. И может работать хорошо, если все сделано правильно. Меня беспокоит то, что используются провода большей длины. I2C не предназначен для расширенных дистрибутивов. И если бы это был план, то я НАСТОЯТЕЛЬНО советую использовать подходящие буферные микросхемы I2C, предназначенные для этой цели.
Чем больше устройств, тем больше проводов — все это увеличивает емкость линий. Поскольку I2C использует подтягивающие резисторы для создания высокого напряжения, добавленная емкость ограничивает либо длину используемого провода, либо частоту передачи. Я использовал буферы I2C в своих продуктах, и это очень полезно, когда требуется увеличенная длина. Я использую как буферы I2C, так и изолированные буферы I2C. Компания, в которой я работаю, производит электронику распределенного управления. Я один из разработчиков оборудования. Я использую такой I2C около 15 лет.
А пока взгляните на эту веб-страницу. http://www.techbitar.com/how-to- network-many-arduinos-with-sensors-using-i2c.html
Я уверен, что это вызовет некоторые вопросы. Это упрощает задачу, если коммуникационную шину контролирует только один мастер. Многомачтовость возможна, но может привести к большему количеству конфликтов, и вам придется решать эту проблему. Лучше туда не ходить.
I2C — не очень надежный протокол, но при осторожном обращении его все же можно использовать между процессорами. Будьте проще.
- Multiple Wire.write() не работает для Arduino Nano I2C
- Отправка 4 аналоговых значений от одного arduino к другому с помощью I2C
- Как перевести Arduino Nano в спящий режим с низким энергопотреблением (<0,05 мА)
- Лазерный датчик ToF (VL53L0X) не работает
- MAX30100 не работает
- Ведомое устройство Arduino с двумя мастерами, использующими одну и ту же шину I2C?
- Библиотека I2C MIFARE RC522
- Не удалось выделить SSD1306 при добавлении константы
Это хороший (но широкий) вопрос. Можете ли вы добавить больше информации к вашему вопросу? Вам действительно нужны платы arduino nano? У других плат есть дополнительный последовательный порт, чтобы иметь возможность подключать все платы с последовательными портами. Каково расстояние? Какой тип кабеля вы хотите использовать? Допустимо ли использовать беспроводную связь? Почему вы беспокоитесь о скорости обработки и задержке? Что еще вы хотите запустить на плате arduino? Шина i2c может работать на коротких расстояниях, но требует хороших навыков программирования. Использование i2c не очень хорошо работает с библиотеками, которые отключают прерывания., @Jot