Оглавление:

IoT Made Simple: мониторинг нескольких датчиков: 7 шагов
IoT Made Simple: мониторинг нескольких датчиков: 7 шагов

Видео: IoT Made Simple: мониторинг нескольких датчиков: 7 шагов

Видео: IoT Made Simple: мониторинг нескольких датчиков: 7 шагов
Видео: Элементная база современных логгеров. Простые проекты приносящие миллионы. IoT в реальных примерах. 2024, Ноябрь
Anonim
IoT Made Simple: мониторинг нескольких датчиков
IoT Made Simple: мониторинг нескольких датчиков
IoT Made Simple: мониторинг нескольких датчиков
IoT Made Simple: мониторинг нескольких датчиков

Несколько недель назад я опубликовал здесь руководство по мониторингу температуры с помощью 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
Датчик температуры 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

Подключение датчиков к NodeMCU
Подключение датчиков к NodeMCU
  1. Подключите 3 провода от каждого датчика к мини-макетной плате, как показано на фотографии выше. Я использовал специальные разъемы, чтобы лучше закрепить на нем кабель датчика.
  2. Обратите внимание, что оба датчика подключены параллельно. Если у вас более двух датчиков, сделайте то же самое.

    • Красный ==> 3,3 В
    • Черный ==> GND
    • Желтый ==> D4
  3. Используйте резистор 4,7 кОм между VCC (3,3 В) и данными (D4).

Шаг 4: Установка дополнительных библиотек

Для правильного использования DS18B20 потребуются две библиотеки:

  1. OneWire
  2. ДалласТемпература

Установите обе библиотеки в хранилище библиотек 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
Использование Blynk
Использование Blynk
Использование Blynk

Как только вы начнете собирать данные о температуре, самое время увидеть их откуда угодно. Мы сделаем это с помощью Blynk. Таким образом, все собранные данные будут отображаться в реальном времени на вашем мобильном устройстве, а также мы создадим для этого историческое хранилище.

Выполните следующие шаги:

  1. Создайте новый проект.
  2. Дайте ему имя (в моем случае "Двойной монитор температуры")
  3. Выберите Новое устройство - ESP8266 (WiFi) в качестве «Мои устройства».
  4. Скопируйте AUTH TOKEN, который будет использоваться в коде (вы можете отправить его на свою электронную почту).
  5. Включает два виджета "Датчик", определяющих:

    • Виртуальный контакт, который будет использоваться с каждым датчиком: V10 (Sensor [0]) и V11 (Sensor [1])
    • Диапазон температур: от -5 до 100 ° C для датчика [0]
    • Диапазон температур: от 25 до 212 ° C для датчика [1]
    • Частота чтения данных: 1 секунда
  6. Включает виджет «График истории», определяющий V10 и V11 как виртуальные контакты.
  7. Нажмите "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

Салудо с юга мира!

Увидимся на моем следующем уроке!

Спасибо, Марсело

Рекомендуемые: