Использовать аналоговый мультиплексор для работы с 9 датчиками последовательного входа?
У меня 9 датчиков, они будут отправлять строку данных на мой Arduino через Tx/Rx (каждые 3½ секунды, запрограммировано заранее). Единственная проблема в том, что на Arduino Uno только один порт Tx/Rx. Можно ли использовать аналоговый мультиплексор, чтобы «сделать» больше последовательных портов? Поскольку датчики отправляют что-то каждые 3½ секунды, нет необходимости быть быстрым.
EDIT: Это датчик температуры и относительной влажности
@olivier, 👍1
Обсуждение2 ответа
Лучший ответ:
Нет. Нет, если только вы не сможете изменить свой протокол связи на протокол «вызова и ответа».
В принципе, проблема в следующем: когда переключаться на какое последовательное устройство? Если только все устройства не синхронизированы по времени, то узнать это невозможно — так как же управлять аналоговым мультиплексором в такой ситуации...? Невозможно.
Вам понадобится какой-то метод, с помощью которого мастер переключит мультиплексор на определенное периферийное устройство, а затем отправит этому периферийному устройству сообщение со словами «Отправьте мне ваши данные сейчас».
Вам лучше изучить другие платы с большим количеством портов UART, например, Mega2560, и иметь несколько плат.
У Mega2560 есть 4 порта UART. Вы можете иметь 4 датчика на плату (5, если вы хотите использовать SoftwareSerial или, лучше, AltSoftSerial), так что вы можете обойтись двумя платами.
Одна плата работает как обычно, обмениваясь данными через порты UART с 4 датчиками, а также выступает в качестве ведущего устройства I2C или SPI (выбор за вами). Вторая плата обменивается данными еще с 4 датчиками через UART и еще с одним с помощью AltSoftSerial и т. д. Она также выступает в качестве ведомого устройства I2C или SPI.
«Подчиненная» плата просто работает автономно, собирая данные с датчиков, к которым она напрямую подключена, и сохраняя эти значения. Затем «главная» плата периодически запрашивает у «подчиненной» платы последние данные.
Спасибо за ответ и приношу извинения за поздний ответ. Я только что попробовал мультиплексор, потому что некоторые люди сказали, что я буду работать. Я могу получать информацию со всех 9 датчиков. Датчик отправляет строку данных, и я фильтрую температуру и относительную влажность, а затем переключаюсь на следующий датчик. Он работает довольно хорошо, единственная проблема в том, что вы не можете запросить строку данных, поэтому вам следует подождать, пока строка данных будет отправлена
- Как разделить входящую строку?
- Как вывести несколько переменных в строке?
- В чем разница между Serial.write и Serial.print? И когда они используются?
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Программы построения последовательных данных
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Очистить существующий массив при получении новой последовательной команды
какой датчик? можете добавить ссылку?, @Juraj
Не то чтобы это имело особое значение, но каждые 3-5 секунд или 3,5 секунды?, @Greenonline
Точную модель датчика пожалуйста, @Juraj