Варианты объединения нескольких МК в одну сеть
- Войдите на сайт для отправки комментариев
Доброго времени суток! Есть несколько Arduino UNO. Одна Ардуинка почти загружена. По распиновке свободными у нее остались ADC-3, ADC-6, ADC-7, RX-1, TX, PD-5 и I2C шина (на ней висит LCD экран, но вроде как через I2C Hub можно одновременно еще добавить несколько МК и также обмениваться данными). Необходимо объединить ее со второй Ардуиной и заставить их обмениваться данными, в случае чего вмешиваться в "рабочие процессы" (к примеру на одной ардуине датчик температуры, а на другой реле и в случае превышения температуры система отключает реле). В Гугле нашел несколько вариантов связи между МК (I2C, UART, RS485). Какой вариант более актуален на моих свободных пинах? Заранее спасибо за помощь!
Ну, UART и RS485 - это, как я понимаю, не разные варианты. а один (в смысле пинов), т.к. RS485 разумно вешать как раз на UART.
Ответ на Ваш вопрос зависит от множетсва факторов, которые Вы не умпомянули, например от расстояния между узлами сети. и много от чего ещё.
В "общем и среднем" я бы смотрел в стророну UART, а при больших расстояниях, навесил бы на него RS485.
Кроме свободных пинов нужно иметь свободные ресурсы МК. Обмен по любой коммуникационой шине требует дополнительного кода на реализацию слейва/мастера (в случае с RS485 придется еще решать как выбирать мастера). А код требует RAM и Flash. Если же ваши ардуины уже нафаршированы под завязку, то никакого обмена вам уже не светит и нужно пересматривать/переписывать вашу систему с учетом новых требований.
Если в одном корпусе или растояние между блоками небольшое - I2C самое то. Тем более в вашем случае ноги других интерфейсов заняты. А на большие растояния - городите RS485.
Да вот тоже вопрос становится актуальным, в связи с подготовкой на кубок РТК .. созджал тему в проектах.
Согласен с Штирлиц. Добавлю только что не рассматривайте процес как 1+1=2. Обмен отвлекает довольно много ресурсов и суммарно возможности системы из нескольких МП оказывается сильно ниже суммы возможностей каждого МК в отдельности. Может вам контроллер помощней просто нужен?
Освободить SPI, поставить nRF24L01+. И без проводов.