Съдържание:

IoT Made Simple: Мониторинг на множество сензори: 7 стъпки
IoT Made Simple: Мониторинг на множество сензори: 7 стъпки

Видео: IoT Made Simple: Мониторинг на множество сензори: 7 стъпки

Видео: IoT Made Simple: Мониторинг на множество сензори: 7 стъпки
Видео: Zemismart SPM01 - компактный двунаправленный zigbee энергомонитор на токовом трансформаторе 2024, Ноември
Anonim
IoT Made Simple: Мониторинг на множество сензори
IoT Made Simple: Мониторинг на множество сензори
IoT Made Simple: Мониторинг на множество сензори
IoT Made Simple: Мониторинг на множество сензори

Преди няколко седмици публикувах тук урок за мониторинг на температурата с помощта на DS18B20, цифров сензор, който комуникира по 1-Wire шина, изпращайки данни по интернет с NodeMCU и Blynk:

IoT Made Simple: Мониторинг на температурата навсякъде

Но това, което пропуснахме при изследването, беше едно от големите предимства на този вид сензор, което е възможността за събиране на множество данни от множество сензори, свързани към една и съща 1-жична шина. И сега е време да го проучим.

Ще разширим това, което е разработено в последния урок, като сега ще наблюдаваме два сензора DS18B20, конфигурирани единият в Целзий, а другият във Фаренхайт. Данните ще бъдат изпратени до приложение Blynk, както е показано в горната блокова диаграма.

Стъпка 1: Сметка

  • NodeMCU ESP 12-E (*)
  • 2 X Температурен сензор DS18B20
  • Резистор 4.7K ома
  • BreadBoard
  • Електрически инсталации

(*) Тук може да се използва всеки тип ESP устройство. Най -често срещаните са NodeMCU V2 или V3. И двете винаги ще работят добре.

Стъпка 2: Температурен сензор DS18B20

DS18B20 Температурен сензор
DS18B20 Температурен сензор

В този урок ще използваме хидроизолирана версия на сензора DS18B20. Той е много полезен за отдалечена температура във влажни условия, например на влажна почва. Сензорът е изолиран и може да прави измервания до 125oC (Adafrut не препоръчва да се използва над 100oC поради кабелната му PVC обвивка).

DS18B20 е цифров сензор, което го прави добър за използване дори на големи разстояния! Тези 1-жични цифрови температурни сензори са доста прецизни (± 0,5 ° C в голяма част от обхвата) и могат да дадат до 12 бита прецизност от вградения цифрово-аналогов преобразувател. Те работят чудесно с NodeMCU, използвайки един цифров пин и дори можете да свържете няколко такива към един и същ пин, всеки от тях има уникален 64-битов идентификатор, изгорен във фабриката, за да ги различава.

Сензорът работи от 3.0 до 5.0V, което означава, че може да се захранва директно от един от 3.3V NodeMCU щифтовете.

Сензорът има 3 проводника:

  • Черно: GND
  • Червено: VCC
  • Жълто: 1-Wire данни

Тук можете да намерите пълните данни: Лист с данни DS18B20

Стъпка 3: Свързване на сензорите към NodeMCU

Свързване на сензорите към NodeMCU
Свързване на сензорите към NodeMCU
  1. Свържете 3 проводника от всеки сензор към мини таблото, както е показано на снимката по -горе. Използвах специални конектори, за да фиксирам по -добре кабела на сензора върху него.
  2. Обърнете внимание, че и двата сензора са паралелни. Ако имате повече от 2 сензора, трябва да направите същото.

    • Червено ==> 3.3V
    • Черно ==> GND
    • Жълто ==> D4
  3. Използвайте резистор от 4.7K ома между VCC (3.3V) и данни (D4)

Стъпка 4: Инсталиране на подходящите библиотеки

За да използвате DS18B20 правилно, ще са необходими две библиотеки:

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

Инсталирайте двете библиотеки във вашето хранилище за библиотеки на Arduino IDE.

Обърнете внимание, че библиотеката на OneWire ТРЯБВА да бъде специалната, модифицирана, за да се използва с ESP8266, в противен случай ще получите грешка по време на компилацията. Последната версия ще намерите на връзката по -горе.

Стъпка 5: Тестване на сензорите

Тестване на сензорите
Тестване на сензорите

За да тествате сензорите, изтеглете файла по -долу от моя GitHub:

NodeMCU_DS18B20_Dual_Se nsor_test.ino

/**************************************************************

*Тест за множество температурни сензори**2 x OneWire сензор: DS18B20*Свързан с NodeMCU D4 (или Arduino Pin 2)**Разработен от Marcelo Rovai - 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; поплавък temp_1; DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Сензор 0 ще улавя Temp в Celcius 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 ще улавя Температура по Фаренхайт

Първият ще върне стойност от сензор [0] (вижте "индекса (0)") в Целзий (вижте частта от кода: "getTempC". Вторият ред е свързан със сензора [1] и ще върне данни във Фаренхайт. Тук бихте могли да имате "n" сензори, тъй като имате различен "индекс" за всеки един от тях.

Качете сега кода във вашия NodeMCU и следете температурата с помощта на сериен монитор.

Горната снимка показва очаквания резултат. Дръжте всеки от сензорите в ръка, трябва да видите как температурата се покачва.

Стъпка 6: Използване на Blynk

Използване на Blynk
Използване на Blynk
Използване на Blynk
Използване на Blynk

След като започнете да записвате температурни данни, е време да ги видите отвсякъде. Ще направим това с помощта на Blynk. Така че всички заснети данни ще бъдат показани в реално време на вашето мобилно устройство и също така ще изградим исторически депозитар за това.

Следвайте стъпките по -долу:

  1. Създайте нов проект.
  2. Дайте му име (в моя случай "Двоен температурен монитор")
  3. Изберете Ново устройство - ESP8266 (WiFi) като „Моите устройства“
  4. Копирайте AUTH TOKEN, който да се използва в кода (можете да го изпратите на имейла си).
  5. Включва два приспособления "Gauge", определящи:

    • Виртуален щифт, който да се използва с всеки сензор: V10 (сензор [0]) и V11 (сензор [1])
    • Температурният диапазон: -5 до 100 oC за сензор [0]
    • Температурният диапазон: 25 до 212 oC за сензор [1]
    • Честотата за четене на данни: 1 секунда
  6. Включва джаджа "History Graph", определяща V10 и V11 като виртуални щифтове
  7. Натиснете "Play" (триъгълникът в горния десен ъгъл)

Разбира се, приложението Blynk ще ви уведоми, че NodeMCU е офлайн. Време е да качите пълния код във вашата Arduino IDE. Можете да го получите тук:

NodeMCU_Dual_Sensor_Blynk_Ext.ino

Променете „фиктивни данни“със собствените си идентификационни данни.

/ * Идентификационни данни на Blynk */

char auth = "ТВОЯТ БЛИНКЕН АУТОВ КОД ТУК"; / * Идентификационни данни за WiFi */ char ssid = "ВАШИЯТ SSID"; char pass = "ВАШАТА ПАРОЛА";

И това е!

По -долу кода. По същество това е предишният код, където въведохме с параметри и специфични функции на Blynk. Обърнете внимание на последните 2 реда на кода. Това са най -важните тук. Ако имате повече сензори, които събират данни, трябва да имате и еквивалентни нови редове като тези (с дефинирани подходящи нови виртуални пинове).

/**************************************************************

* IoT Multiple Temperature Monitor с Blynk * Библиотеката Blynk е лицензирана под лиценз на MIT * Този примерен код е обществено достояние. **Множество OneWire сензор: DS18B20*Разработен от Марсело Ровай - 25 август 2017 г. ******************************** ****************************//*ESP & Blynk*/ #include #include #define BLYNK_PRINT Serial // Коментирайте това на деактивирайте разпечатките и спестете място / * Blynk идентификационни данни * / char auth = "ВАШИЯТ БЛИНКЕН АУТЕН КОД ТУК"; / * WiFi идентификационни данни */ char ssid = "ВАШИЯТ SSID"; char pass = "ВАШАТА ПАРОЛА"; / * ТАЙМЕР */ #включва таймер SimpleTimer; / * DS18B20 Температурен сензор */ #include #include #define ONE_WIRE_BUS 2 // DS18B20 на arduino pin2 съответства на 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 ("Тестване на данни от двоен сензор"); } void loop () {timer.run (); // Инициира SimpleTimer Blynk.run (); } /************************************************ ****Изпратете данни от сензора до Blynk *************************************** *********/ void getSendData () {DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Сензор 0 ще улавя Temp в Celcius 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: Заключение

Заключение
Заключение

Както винаги, надявам се този проект да помогне на другите да намерят своя път във вълнуващия свят на електрониката, роботиката и IoT!

Моля, посетете моя GitHub за актуализирани файлове: NodeMCU Dual Temp Monitor

За повече проекти, моля, посетете моя блог: MJRoBot.org

Поздрави от юга на света!

Ще се видим на следващата ми инструкция!

Благодаря ти, Марсело

Препоръчано: