Использование нескольких Ардуино одновременно

Я работаю над проектом, в котором мне нужно управлять подсветкой 5 кнопок, а также прослушивать, когда пользователь включает/выключает каждую кнопку. Кроме того, я хотел бы оставить отзыв об OLED-дисплее. Похоже, у меня кончились контакты. Этот ответ предоставляет несколько вариантов для этого. Я особенно хотел бы изучить возможность подключения нескольких arduino друг к другу в конфигурации ведущий/ведомый. Где узнать больше о моем варианте создания вещей с использованием нескольких Arduino, соединенных друг с другом? Я также могу предвидеть сценарии, в которых я мог бы использовать устройства на 3,3 В, а также устройства на 5 В.

, 👍3

Обсуждение

вы можете найти проекты в Интернете .... это может быть полезно ... https://www.pjon.org/SoftwareBitBang.php, @jsotola

Спасибо @jsotola. Эти ресурсы делают чтение интересным, @Johan Sundström


3 ответа


0

Я не видел, чтобы это делалось много. Но это, вероятно, потому, что это не лучший вариант почти во всех случаях.

Наличие нескольких частей кода для разных плат, которые вы должны работать вместе. Постоянно приходится заливать на разные платы. Звучит как кошмар.

Единственный вариант использования, который я вижу, — это иметь у каждого Arduino одну функцию, которая не должна (сильно) меняться с течением времени, и чтобы она действовала как любая другая ИС датчика или ИС драйвера светодиода.

Лучшим примером этого могут быть некоторые из SparkFun Qwiic Twist, Quad Relay и кнопка. Для этого они используют совместимую с Arduino микросхему ATTiny84 с пользовательской прошивкой, чтобы раскрыть ее функциональность через I2C.

Но в большинстве их плат Qwiic используются специализированные микросхемы, поскольку они либо дешевле, либо требуют меньше усилий для их запуска.

,

В настоящее время я учусь, поэтому мои эксперименты сейчас довольно скромны. Тем не менее, я хотел бы построить свою собственную радиоуправляемую лодку с большим количеством поддерживающих ее датчиков, а также множеством серверов, чтобы сделать ее судоходной. Поскольку это был бы огромный проект, учитывая мой текущий опыт работы с платформой Arduino, я уже чувствую, что одного микроконтроллера будет недостаточно. Возможно, я пытаюсь подойти к этой идее не с той стороны?, @Johan Sundström

Я не чувствую, что это лучшее решение. Я бы, наверное, посмотрел на микросхему, которая генерирует импульсы сервопривода для вас. Это даст вам несколько дополнительных свободных контактов и снизит нагрузку на процессор Arduino., @Gerben

@Johan-Sundström: Об этой лодке: если вы используете датчики с I2C, вы можете использовать многие из них всего с двумя проводами. Вы также можете заменить дисплей и физические кнопки веб-интерфейсом на своем телефоне, если используете Arduino с модулем WiFi. Я сделал это с Nano 33 IoT с WiFi в режиме AP, и это работает., @ocrdu

Хм, интересно, кажется, я недооценил возможности I2C Спасибо за эту рекомендацию @ocrdu, @Johan Sundström


2

Вместо того, чтобы пытаться использовать несколько плат Arduino, что было бы сложно, я бы предложил использовать Arduino большего размера. Например, mega 2560 имеет тонны линий GPIO.

,

С тех пор я узнал о 74HC595. Это похоже на удобное решение, чтобы освободить несколько контактов. Я предполагаю, что в сочетании с мега 2560 у вас будет много контактов., @Johan Sundström

Конечно, вы можете использовать сдвиговый регистр для установки нескольких выходных контактов, используя одну последовательную линию. Однако сдвиговый регистр не позволит вам увеличить количество входных контактов. Существуют также микросхемы мультиплексора CMOS, которые можно использовать для совместного использования одного контакта для нескольких цифровых входов (или выходов, поскольку микросхемы CMOS MUX обеспечивают двунаправленный поток данных)., @Duncan C


3

Среди всех упомянутых вариантов использование ведущего/ведомого должно быть последним средством, особенно если вы новичок в программировании встраиваемых систем или Arduino, это не только сложнее, но и дороже в реализации.

Одно из возможных решений, которое могло бы освободить драгоценные цифровые контакты ввода/вывода, которые использовались пятью кнопками, — это использование аналогового ввода для определения состояния кнопок.

схема

При нажатии sw1 напряжение на A0 будет около 0,83 В, а при нажатии sw5 напряжение на A0 будет 2,5 В. Вы можете написать простой switch...case, чтобы определить, какой переключатель был нажат.

Единственная проблема этой схемы заключается в том, что она не может обрабатывать одновременное нажатие более одной кнопки, но это можно решить, удвоив значение каждого резистора, например 10k, 20k, 30k...

Это освободит 5 цифровых контактов, которые можно использовать для управления (например, сервопривод, реле и т. д.).

,

Интересное решение @hcheung. По крайней мере, я собираюсь поэкспериментировать с ним, просто чтобы узнать, как он работает., @Johan Sundström

По поводу «_Когда нажата sw5, напряжение на A0 будет около 0,83 В, а когда нажата sw1, напряжение на A0 будет 2,5 В»., @Edgar Bonet

@EdgarBonet, о, да, ты прав. Спасибо, что указали. Я сделал поправку., @hcheung