DHT11 + ESP плюс Arduino
Кто-нибудь может мне помочь? Я хочу использовать dht11 с Arduino и ESP. Оба будут читать данные из dht11. проблема в том, что одновременно это сделать невозможно. Таким образом, решение будет состоять в том, чтобы сделать один главным, а другой подчиненным. контроль будет осуществляться так... другой провод от контакта Arduino-> установить как выход -> вывод esp-> установить как вход. если провод == 1, то dht11 будет прочитан Arduino если провод == 0, то esp будет читать dht. с некоторой задержкой, конечно. но проблема в том, что я не знаю, как остановить связь между одной платой и датчиком, когда другая плата ее прочитает. так что не существует никакого конфликта
@Iulian Chirvasa, 👍1
Обсуждение2 ответа
Лучший ответ:
Отказ от ответственности:
Я никогда не использовал платы на базе чипов ESP и почти ничего о них не знаю. Я предполагаю, что с точки зрения программного обеспечения он работает как Arduino, и основываю свой ответ на коде Arduino. Если чип ESP работает по-другому, вам придется адаптировать мое предложение.
Попробуйте что-нибудь вроде этого:
Подключите линию GPIO между микроконтроллерами. Также подключите эту линию через резистор 10 кОм к +5 В.
Пусть оба микроконтроллера настроят GPIO в качестве входа.
(Мы назовем вывод GPIO на обоих микроконтроллерах линией «DHT_available». Он будет ВЫСОКИМ, когда датчик DHT не используется другим контроллером.)
Когда один из микроконтроллеров хочет прочитать DHT11, он должен проверить линию GPIO. Если он ВЫСОКИЙ, переключите линию GPIO на выход и потяните ее на низкий уровень, а затем снимите показания. Когда чтение завершится, переключите линию GPIO обратно на вход.
Если на линии GPIO НИЗКИЙ уровень, подождите и проверьте еще раз.
В качестве альтернативы вы можете подключить каждую из линий GPIO микроконтроллера к обработчикам прерываний по нарастающему фронту. Затем обработчик прерываний установит линию GPIO на выход, переведет ее в состояние LOW и установит флаг, означающий «начать чтение».
Пусть ваша функция цикла проверит флаг «начать чтение», и если он истинен, инициирует чтение из DHT, а после его завершения установите GPIO обратно на вход.
При первом варианте каждый микроконтроллер должен будет постоянно опрашивать линию «DHT_available», пока она не перейдет в ВЫСОКИЙ уровень, прежде чем начать чтение.
При втором варианте, как только один из ваших микроконтроллеров завершит считывание, он перестанет переводить линию связи в НИЗКИЙ уровень, у другого сработает прерывание по нарастающему фронту, а другой немедленно начнет чтение.
При втором варианте. р>Я не знаю, как писать код для всего этого. я новичок в микроконтроллерах, @Iulian Chirvasa
Поэтому используйте два отдельных датчика DHT11, по одному на каждый микроконтроллер. Они дешевы., @Duncan C
Кроме того... я бы увидел здесь проблему. Скажем так.. Данные датчика. Земля. Вкк УК 2560 Калифорнийский университет в Испании Если данные датчика связаны с обоими uC И используйте строку dht_available между 2560 и esp для обработки чтения uC... тогда... Если dht_available == HIGH, то 2560 читается после переключения линии dht на Low. Если dht_available == LOW, то esp читается после чтения dhtline》 HIGH Но датчик будет продолжать отправлять данные обоим... в зависимости от высокого или низкого уровня линии dhtline. Я не знаю, как сказать датчику... если dhtline НИЗКИЙ, прекратите отправку данных на 2560, потому что пришло время чтения.
- Колебания показаний датчика температуры LM35 (+- 5°C) с Arduino UNO
- Неверные показания PT100 и MAX31865
- 7-сегментный индикатор мигает
- Как нагреть воздух с помощью ардуино?
- Значения NaN в инкубаторе для яиц
- мой датчик температуры LM35 дает странные показания,
- Погрешность измерения датчика температуры LMT 84
- 2 аналоговых датчика, датчик пульса и проблема LM35
Пожалуйста, добавьте свой эскиз (пока)., @Mikael Patel
я уже добавил это, @Iulian Chirvasa