Оглавление:
- Шаг 1: Спецификация материалов
- Шаг 2: Датчик температуры DS18B20
- Шаг 3: Подключение датчиков к NodeMCU
- Шаг 4: Установка дополнительных библиотек
- Шаг 5: Тестирование датчиков
- Шаг 6: Использование Blynk
- Шаг 7: Заключение
Видео: IoT Made Simple: мониторинг нескольких датчиков: 7 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
Несколько недель назад я опубликовал здесь руководство по мониторингу температуры с помощью DS18B20, цифрового датчика, который обменивается данными по шине 1-Wire и отправляет данные через Интернет с помощью NodeMCU и Blynk:
Интернет вещей стал проще: мониторинг температуры в любом месте
Но то, что мы упустили при исследовании, - это одно из главных преимуществ этого типа датчиков, а именно возможность сбора нескольких данных с нескольких датчиков, подключенных к одной и той же шине 1-Wire. И теперь пришло время также изучить это.
Мы расширим то, что было разработано в предыдущем руководстве, теперь отслеживая два датчика DS18B20, один из которых настроен в градусах Цельсия, а другой - в градусах Фаренгейта. Данные будут отправлены в приложение Blynk, как показано на приведенной выше блок-схеме.
Шаг 1: Спецификация материалов
- NodeMCU ESP 12-E (*)
- 2 X датчик температуры DS18B20
- Резистор 4,7 кОм
- Хлебная Доска
- Проводка
(*) Здесь можно использовать любой тип устройства ESP. Наиболее распространены NodeMCU V2 или V3. Оба всегда будут работать нормально.
Шаг 2: Датчик температуры DS18B20
В этом руководстве мы будем использовать водонепроницаемую версию датчика DS18B20. Это очень полезно для удаленных температур во влажных условиях, например, на влажной почве. Датчик изолирован и может проводить измерения до 125 ° C (Adafrut не рекомендует использовать его при температуре выше 100 ° C из-за ПВХ-оболочки кабеля).
DS18B20 - это цифровой датчик, который позволяет использовать его даже на больших расстояниях! Эти однопроводные цифровые датчики температуры достаточно точны (± 0,5 ° C в большей части диапазона) и могут дать до 12 бит точности от встроенного цифро-аналогового преобразователя. Они отлично работают с NodeMCU, используя один цифровой вывод, и вы даже можете подключить несколько к одному выводу, каждый из них имеет уникальный 64-битный идентификатор, записанный на заводе, чтобы различать их.
Датчик работает от 3,0 до 5,0 В, что означает, что он может питаться напрямую от одного из контактов 3,3 В NodeMCU.
Датчик имеет 3 провода:
- Черный: GND
- Красный: VCC
- Желтый: данные 1-Wire
Здесь вы можете найти полные данные: DS18B20 Datasheet
Шаг 3: Подключение датчиков к NodeMCU
- Подключите 3 провода от каждого датчика к мини-макетной плате, как показано на фотографии выше. Я использовал специальные разъемы, чтобы лучше закрепить на нем кабель датчика.
-
Обратите внимание, что оба датчика подключены параллельно. Если у вас более двух датчиков, сделайте то же самое.
- Красный ==> 3,3 В
- Черный ==> GND
- Желтый ==> D4
- Используйте резистор 4,7 кОм между VCC (3,3 В) и данными (D4).
Шаг 4: Установка дополнительных библиотек
Для правильного использования DS18B20 потребуются две библиотеки:
- OneWire
- ДалласТемпература
Установите обе библиотеки в хранилище библиотек Arduino IDE.
Обратите внимание, что библиотека OneWire ДОЛЖНА быть специальной, модифицированной для использования с ESP8266, иначе вы получите ошибку во время компиляции. Вы найдете последнюю версию по ссылке выше.
Шаг 5: Тестирование датчиков
Для тестирования датчиков загрузите файл ниже с моего GitHub:
NodeMCU_DS18B20_Dual_Se nsor_test.ino
/**************************************************************
* Тест нескольких датчиков температуры * * 2 датчика OneWire: DS18B20 * Подключены к NodeMCU D4 (или Arduino Pin 2) * * Разработано Марсело Роваи - 25 августа 2017 г. **************** **********************************************/ #включают # include #define ONE_WIRE_BUS 2 // DS18B20 на выводе NodeMCU D4 OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); void setup () {Serial.begin (115200); DS18B20.begin (); Serial.println («Тестирование данных двойного датчика»); } void loop () {float temp_0; float temp_1; DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Датчик 0 будет фиксировать температуру в градусах Цельсия temp_1 = DS18B20.getTempFByIndex (1); // Датчик 0 будет фиксировать температуру в градусах Фаренгейта Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); задержка (1000); }
Глядя на приведенный выше код, мы должны заметить, что наиболее важными являются следующие строки:
temp_0 = DS18B20.getTempCByIndex (0); // Датчик 0 будет фиксировать температуру в градусах Цельсия
temp_1 = DS18B20.getTempFByIndex (1); // Датчик 0 будет фиксировать температуру в градусах Фаренгейта
Первая вернет значение из Sensor [0] (посмотрите «index (0)») в Celcius (посмотрите часть кода: «getTempC». Вторая строка связана с Sensor [1] и вернет данные в градусах Фаренгейта. Здесь может быть «n» датчиков, так как у вас есть разные «индексы» для каждого из них.
Загрузите код в свой NodeMCU и следите за температурой с помощью последовательного монитора.
На фото выше показан ожидаемый результат. Держите каждый датчик в руке, вы должны увидеть повышение температуры.
Шаг 6: Использование Blynk
Как только вы начнете собирать данные о температуре, самое время увидеть их откуда угодно. Мы сделаем это с помощью Blynk. Таким образом, все собранные данные будут отображаться в реальном времени на вашем мобильном устройстве, а также мы создадим для этого историческое хранилище.
Выполните следующие шаги:
- Создайте новый проект.
- Дайте ему имя (в моем случае "Двойной монитор температуры")
- Выберите Новое устройство - ESP8266 (WiFi) в качестве «Мои устройства».
- Скопируйте AUTH TOKEN, который будет использоваться в коде (вы можете отправить его на свою электронную почту).
-
Включает два виджета "Датчик", определяющих:
- Виртуальный контакт, который будет использоваться с каждым датчиком: V10 (Sensor [0]) и V11 (Sensor [1])
- Диапазон температур: от -5 до 100 ° C для датчика [0]
- Диапазон температур: от 25 до 212 ° C для датчика [1]
- Частота чтения данных: 1 секунда
- Включает виджет «График истории», определяющий V10 и V11 как виртуальные контакты.
- Нажмите "Play" (треугольник в правом верхнем углу)
Конечно, приложение Blynk сообщит вам, что NodeMCU отключен. Пришло время загрузить полный код в вашу Arduino IDE. Вы можете получить его здесь:
NodeMCU_Dual_Sensor_Blynk_Ext.ino
Измените «фиктивные данные» на свои собственные учетные данные.
/ * Учетные данные Blynk * /
char auth = "ВАШ BLYNK AUTH CODE ЗДЕСЬ"; / * Учетные данные WiFi * / char ssid = "ВАШ SSID"; char pass = "ВАШ ПАРОЛЬ";
Вот и все!
Ниже полный код. По сути, это предыдущий код, в который мы вошли с параметрами Blynk и конкретными функциями. Обратите внимание на две последние строки кода. Они здесь самые важные. Если у вас есть больше датчиков, собирающих данные, у вас также должны быть такие же новые линии, как у этих (с определенными соответствующими новыми виртуальными контактами).
/**************************************************************
* Многоканальный температурный монитор IoT с Blynk * Библиотека Blynk находится под лицензией MIT * Этот пример кода находится в общественном достоянии. * * Многоканальный датчик OneWire: DS18B20 * Разработан Марсело Роваи - 25 августа 2017 г. ********************************* *************************** / / * ESP и Blynk * / #include #include #define BLYNK_PRINT Serial // Прокомментируйте это, чтобы отключить печать и сэкономить место / * учетные данные Blynk * / char auth = "ВАШ BLYNK AUTH CODE ЗДЕСЬ"; / * Учетные данные WiFi * / char ssid = "ВАШ SSID"; char pass = "ВАШ ПАРОЛЬ"; / * ТАЙМЕР * / # включить таймер SimpleTimer; / * Датчик температуры DS18B20 * / #include #include #define ONE_WIRE_BUS 2 // DS18B20 на выводе 2 Arduino соответствует D4 на физической плате OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); int temp_0; int temp_1; void setup () {Serial.begin (115200); Blynk.begin (auth, ssid, pass); DS18B20.begin (); timer.setInterval (1000L, getSendData); Serial.println (""); Serial.println («Тестирование данных двойного датчика»); } недействительный цикл () {timer.run (); // Инициирует SimpleTimer Blynk.run (); } / ********************************************** *** * Отправить данные датчика в Blynk **************************************** ********* / void getSendData () {DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Датчик 0 будет фиксировать температуру в градусах Цельсия temp_1 = DS18B20.getTempFByIndex (1); // Датчик 0 будет фиксировать температуру в градусах Фаренгейта Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); Blynk.virtualWrite (10, temp_0); // виртуальный вывод V10 Blynk.virtualWrite (11, temp_1); // виртуальный вывод V11}
После того, как код загружен и запущен, проверьте приложение Blynk. Теперь он также должен работать, как показано на приведенном выше экране печати с моего iPhone.
Шаг 7: Заключение
Как всегда, я надеюсь, что этот проект поможет другим найти свой путь в захватывающем мире электроники, робототехники и Интернета вещей!
Посетите мой GitHub для обновленных файлов: NodeMCU Dual Temp Monitor
Чтобы узнать больше о проектах, посетите мой блог: MJRoBot.org
Салудо с юга мира!
Увидимся на моем следующем уроке!
Спасибо, Марсело
Рекомендуемые:
ПОДКЛЮЧЕНИЕ НЕСКОЛЬКИХ ДАТЧИКОВ К ОДНОМУ ПОСЛЕДОВАТЕЛЬНОМ ПОРТУ ARDUINO UNO: 4 шага
ПОДКЛЮЧЕНИЕ НЕСКОЛЬКИХ ДАТЧИКОВ К ОДНОМУ ПОСЛЕДОВАТЕЛЬНОМУ ПОРТУ ARDUINO UNO: в этом руководстве мы будем расширять один последовательный порт Arduino UNO UART (Rx / Tx), чтобы можно было подключить несколько датчиков Atlas. Расширение осуществляется с помощью платы расширения последовательного порта 8: 1. Порт Arduino подключается к расширителю после того, как
ПОДКЛЮЧЕНИЕ НЕСКОЛЬКИХ ДАТЧИКОВ К МАЛИНЫ PI: 6 шагов (с изображениями)
ПОДКЛЮЧЕНИЕ НЕСКОЛЬКИХ ДАТЧИКОВ К МАЛИНОВОМУ PI: В этом проекте мы будем подключать три датчика EZO Atlas Scientific (pH, растворенный кислород и температура) к Raspberry Pi 3B +. Вместо того, чтобы подключать схемы к Raspberry Pi, мы будем использовать экран Whitebox Labs Tentacle T3. Т
UbiDots-Подключение ESP32 и публикация данных с нескольких датчиков: 6 шагов
UbiDots - подключение ESP32 и публикация данных с нескольких датчиков: ESP32 и ESP 8266 - очень знакомые SoC в области IoT. Это своего рода благо для проектов Интернета вещей. ESP 32 - это устройство со встроенным Wi-Fi и BLE. Просто укажите свой SSID, пароль и конфигурации IP и интегрируйте их в
Структурный мониторинг состояния гражданской инфраструктуры с использованием беспроводных датчиков вибрации: 8 шагов
Структурный мониторинг состояния гражданской инфраструктуры с использованием беспроводных датчиков вибрации: ухудшение состояния старого здания и гражданской инфраструктуры может привести к фатальным и опасным ситуациям. Постоянный мониторинг этих конструкций обязателен. Структурный мониторинг здоровья - чрезвычайно важная методология оценки
Arduino Uno + SIM900 + DHT22 + Thingspeak [ENG / PL] ДАННЫЕ НЕСКОЛЬКИХ ДАТЧИКОВ !: 3 шага
Arduino Uno + SIM900 + DHT22 + Thingspeak [ENG / PL] ДАННЫЕ С НЕСКОЛЬКИМИ ДАТЧИКАМИ !: Привет, я увидел, что нет информации о том, как отправлять данные с нескольких датчиков с помощью Arduino Uno с модулем SIM900. Поэтому я сделал краткую инструкцию по подключению и настройке Arduino UNO с датчиком SIM900 и DHT22. Данные DHT22 (темперамент