ESP32: http://alii.pub/67hfo2
ESP8266: http://alii.pub/67hfq7
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
Все Вы наверное знаете, что по UART интерфейсу можно работать только с одним устройством. Если подключить другое устройство одновременно. То оно не будет работать, будет писать, что порт занят. Да, даже если к UART интерфейсу микроконтроллера подключено устройство, то мы его прошить не сможем. Будет так-же писать, что устройство занято.
А все по тому, что у UART интерфейса для передачи и получения данных используется 2 контакта. Это RX и TX. RX контакт используется для получения данных, а TX контакт для передачи данных и никак иначе. И когда мы подключаем к микроконтроллеру устройство по UART, то эти контакты подключаются крест на крест. То-есть RX к TX, а TX к RX соответственно.
Но что делать если у Вас 2 UART устройства и Вы оба хотите подключить. Ну тут решение только одно, подключать второе устройство к другому UART интерфейсу контроллера.
Вот например у ESP32 есть 2 аппаратных UART интерфейса. Следовательно без проблем можем подключить 2 устройства.
Ну а теперь возвращаясь к теме умного дома. Как подключить 2 устройства по UART интерфейсу в ESPHome. Устройства пускай будут такие:
- MHZ19b – датчик CO2
- PMS7003 – Датчик обнаружения PM2.5 частиц в воздухе.
Два эти датчика хорошо подходят для домашней метеостанции.
В ESPHome объявляется UART интерфейс следующим образом:
uart:
rx_pin: 3
tx_pin: 1
baud_rate: 9600
Собственно тут видно, что объявляются пины RX и TX и скорость обмена данными.
Если мы добавим ниже еще пины rx_pin и tx_pin уже другого UART интерфейса. То естественно ничего работать не будет.
ЧТоб добавить 2 интерфейса нужно дать каждому UART интерфейсу свой уникальный id. И выглядеть это будет следующим образом:
uart:
- id: uart1
rx_pin: 3
tx_pin: 1
baud_rate: 9600
- id: uart2
rx_pin: 16
tx_pin: 17
baud_rate: 9600
Следовательно тут видно, что id тут uart1 и uart2. И после объявления этих id, при добавлении в блок sensor устройства работающего по UART как обычно. Выдаст нам ошибку, что не указан id UART интерфейса. Вот как это выглядит:
Хотя раньше, при добавлении такого блока sensor ошибки бы не было. Но как только мы объявляем 2 UART интерфейса, проверка на ошибки уже это учитывает и не пускает нас дальше.
Но все решается очень просто. Нужно добавить uart_id. Вот таким образом:
Ну и следовательно при добавлении следующего устройства, просто указываем ему другой UART путем: uart_id: uart2
И все. Собственно таким образом у меня и будут работать эти оба датчика в моей метеостанции комнатной.