Мазмуну:

IoT Жөнөкөй: Бир нече сенсорлорду көзөмөлдөө: 7 кадам
IoT Жөнөкөй: Бир нече сенсорлорду көзөмөлдөө: 7 кадам

Video: IoT Жөнөкөй: Бир нече сенсорлорду көзөмөлдөө: 7 кадам

Video: IoT Жөнөкөй: Бир нече сенсорлорду көзөмөлдөө: 7 кадам
Video: СИЗ МЫНДАЙДЫ КӨРБӨГӨН ЭҢ КИЧИНЕЙ КАМЕРА!!! 2024, Июль
Anonim
IoT Жөнөкөй: Бир нече сенсорлорду көзөмөлдөө
IoT Жөнөкөй: Бир нече сенсорлорду көзөмөлдөө
IoT Жөнөкөй: Бир нече сенсорлорду көзөмөлдөө
IoT Жөнөкөй: Бир нече сенсорлорду көзөмөлдөө

Бир нече жума мурун мен бул жерде DS18B20, 1-зымдуу автобус аркылуу байланышып, NodeMCU жана Blynk менен интернет аркылуу маалыматтарды жөнөтүүчү санарип сенсордун жардамы менен температураны көзөмөлдөө боюнча окуу куралын жарыяладым:

IoT Жөнөкөй: Бардык жерде температураны көзөмөлдөө

Бирок биз чалгындоодо сагынып калганыбыз, мындай сенсордун эң чоң артыкчылыктарынын бири болгон, бул бир эле зымдуу автобуска туташкан бир нече сенсорлордон бир нече маалыматтарды чогултуу мүмкүнчүлүгү. Жана, эми аны изилдөөгө убакыт келди.

Биз акыркы үйрөткүчтө иштелип чыккан нерсени кеңейтебиз, азыр эки DS18B20 сенсорун көзөмөлдөп турабыз, бири Celcius, экинчиси Фаренгейт. Маалыматтар жогорудагы блок -схемада көрсөтүлгөндөй, Blynk тиркемесине жөнөтүлөт.

1 -кадам: Материалдык эсеп

  • NodeMCU ESP 12-E (*)
  • 2 X DS18B20 температура сенсору
  • Резистор 4.7K Ом
  • BreadBoard
  • Электр өткөргүчтөрү

(*) Бул жерде ESP түзмөгүнүн каалаган түрү колдонулушу мүмкүн. Эң кеңири тарагандары NodeMCU V2 же V3. Экөө тең дайыма жакшы иштешет.

2 -кадам: DS18B20 Температура сенсору

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

Биз бул окуу куралында DS18B20 сенсорунун суу өткөрбөгөн версиясын колдонобуз. Бул нымдуу шарттарда, мисалы, нымдуу жерде алыскы температура үчүн абдан пайдалуу. Сенсор изоляцияланган жана 125oCге чейин өлчөй алат (Adafrut кабелдик ПВХ пиджактан улам 100оСтен жогору колдонууну сунуштабайт).

DS18B20 - бул санарип сенсор, ал алыскы аралыкта да колдонууну жакшы кылат! Бул 1 зымдуу санарип температура сенсорлору абдан так (± 0,5 ° C диапазонунда) жана борттогу санарип-аналогдук конвертерден 12 битке чейин тактык бере алат. Алар NodeMCU менен бирдиктүү санарип пин менен жакшы иштешет, ал тургай, бир эле пинге бир нечесин туташтырсаңыз болот, ар биринин айырмалоо үчүн заводдо өрттөлгөн 64-биттик уникалдуу идентификатору бар.

Сенсор 3.0дан 5.0Vга чейин иштейт, бул 3.3V NodeMCU казыктарынын биринен түз иштей алат дегенди билдирет.

Сенсордо 3 зым бар:

  • Кара: GND
  • Кызыл: VCC
  • Сары: 1-зымдуу маалыматтар

Бул жерде сиз толук маалыматты таба аласыз: DS18B20 маалымат жадыбалы

3 -кадам: сенсорлорду NodeMCUге туташтыруу

Сенсорлорду NodeMCUге туташтыруу
Сенсорлорду NodeMCUге туташтыруу
  1. Ар бир сенсордон 3 зымды мини нан тактасындагы жогорудагы сүрөттө көрсөтүлгөндөй туташтырыңыз. Мен сенсордун кабелин жакшыраак оңдоо үчүн атайын туташтыргычтарды колдондум.
  2. Белгилей кетсек, эки сенсор тең параллель. Эгерде сизде 2ден ашык сенсор болсо, сиз дагы ошону кылышыңыз керек.

    • Кызыл ==> 3.3V
    • Кара ==> GND
    • Сары ==> D4
  3. VCC (3.3V) менен Маалыматтын (D4) ортосунда 4.7K ом каршылыгын колдонуңуз

4 -кадам: Бөлүнгөн китепканаларды орнотуу

DS18B20 туура колдонуу үчүн эки китепкана керек болот:

  1. OneWire
  2. DallasTemperature

Эки китепкананы тең Arduino IDE Library депозитарийиңизге орнотуңуз.

OneWire китепканасы ESP8266 менен колдонуу үчүн өзгөртүлгөн өзгөчө китеп болушу КЕРЕК, антпесе компиляция учурунда ката кетет. Сиз акыркы версиясын жогорудагы шилтемеден таба аласыз.

5 -кадам: сенсорлорду текшерүү

Сенсорлорду сыноо
Сенсорлорду сыноо

Сенсорлорду текшерүү үчүн, төмөнкү файлды менин GitHubдан жүктөп алыңыз:

NodeMCU_DS18B20_Dual_Se nsor_test.ino

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

*Бир нече температура жиберүүчү тест**2 x OneWire сенсор: DS18B20*NodeMCU D4 (же Arduino Pin 2) туташкан**Марсело Ровай тарабынан иштелип чыккан - 25 август 2017 **************** ********************************************/ #кошуу # камтыйт #define ONE_WIRE_BUS 2 // DS18B20 NodeMCU pin 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ти Celcius temp_1 = DS18B20.getTempFByIndex (1) басып алат; // Сенсор 0 Фаренгейт Serp.print ("Temp_0:") ичинде Temp басып алат; 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 Фаренгейтте Темпти басып алат

Биринчиси Celciusтогу Sensor [0] ("индексин (0)" караңыз) маанисин кайтарат (коддун бөлүгүн караңыз: "getTempC". Экинчи сап Sensor [1] менен байланышкан жана маалыматтарды кайтарып берет Сиз бул жерде "n" сенсорлоруна ээ болушуңуз мүмкүн, анткени алардын ар бири үчүн башка "индекси" бар.

Кодду азыр NodeMCUго жүктөп, Serial Monitorдун жардамы менен температураны көзөмөлдөңүз.

Жогорудагы сүрөт күтүлгөн натыйжаны көрсөтөт. Сенсорлордун ар бирин колуңузга кармап туруңуз, сиз температуранын көтөрүлүп жатканын көрөсүз.

6 -кадам: Blynkти колдонуу

Blynk колдонуу
Blynk колдонуу
Blynk колдонуу
Blynk колдонуу

Температура маалыматын тартып баштагандан кийин, аны каалаган жерден көрүүгө убакыт келди. Биз муну Blynkти колдонуп жасайбыз. Ошентип, бардык алынган маалыматтар мобилдик түзмөгүңүздө реалдуу убакытта көрсөтүлөт жана биз бул үчүн тарыхый депозитарийди курабыз.

Төмөнкү кадамдарды аткарыңыз:

  1. Жаңы долбоор түзүү.
  2. Ага ат коюңуз (менин учурда "Dual Temperature Monitor")
  3. Жаңы түзмөктү тандаңыз - ESP8266 (WiFi) "Менин түзмөктөрүм" катары
  4. Коддо колдонуу үчүн AUTH TOKENди көчүрүңүз (аны электрондук почтаңызга жөнөтсөңүз болот).
  5. Төмөнкүлөрдү аныктоочу эки "Габариттик" виджеттерди камтыйт:

    • Ар бир сенсор менен колдонула турган виртуалдык пин: V10 (Сенсор [0]) жана V11 (Сенсор [1])
    • Температура диапазону: -5тен 100oСке чейин сенсор [0]
    • Температура диапазону: 25тен 212 oC чейин сенсор [1]
    • Маалыматтарды окуу жыштыгы: 1 секунд
  6. V10 жана V11ди виртуалдык казык катары аныктаган "Тарых графиги" виджети камтылган
  7. "Play" баскычын басыңыз (оң бурчтагы үч бурчтук)

Албетте, Blynk тиркемеси сизге NodeMCU линиясыз экенин кабарлайт. Толук кодду Arduino IDEге жүктөө убактысы келди. Бул жерден алсаңыз болот:

NodeMCU_Dual_Sensor_Blynk_Ext.ino

Өзүңүздүн грамотаңыз менен "муляждык маалыматтарды" өзгөртүңүз.

/ * Blynk грамоталары */

char auth = "БУЛ ЖЕРДЕ BLYNK AUTH КОДУҢУЗ"; / * WiFi ишеним грамоталары */ char ssid = "СИЗДИН SSID"; char pass = "СИЗДИН ПАРОЛУҢУЗ";

Жана бул!

Толук кодду көрүңүз. Бул негизинен мурунку код, анда биз Blynk параметрлери жана белгилүү функциялары менен киргенбиз. Коддун акыркы 2 сапына көңүл буруңуз. Бул жерде булар эң башкысы. Эгерде сизде көбүрөөк маалымат чогултуучу сенсорлор болсо, анда сиз дагы эквиваленттүү жаңы саптарга ээ болушуңуз керек (тиешелүү жаңы виртуалдык казыктар менен).

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

* Blynk менен IoT бир нече температура монитору * Blynk китепканасы MIT лицензиясынын астында лицензияланган * Бул мисал коду коомдук доменде. **Бир нече OneWire сенсору: DS18B20*Марсело Ровай тарабынан иштелип чыккан - 25 Август 2017 ******************************** ****************************//*ESP & Blynk*/ #include #include #define BLYNK_PRINT Serial // Муну комментарийге басып чыгарууларды өчүрүү жана мейкиндикти үнөмдөө / * Blynk credentials * / char auth = "СИЗДИН BLYNK AUTH КОДУҢУЗ БУЛ ЖЕРДЕ"; / * WiFi ишеним грамоталары */ char ssid = "СИЗДИН SSID"; char pass = "СИЗДИН ПАРОЛУҢУЗ"; / * TIMER */ #include SimpleTimer таймери; / * DS18B20 Температура сенсору */ #include #include #define ONE_WIRE_BUS 2 // DS18B20 arduino pin2де OneWire oneWire физикалык бортунда D4гө туура келет (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 Фаренгейт Serp.print ("Temp_0:") ичинде Temp басып алат; 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

Дүйнөнүн түштүгүнөн салам!

Кийинки көрсөтмөмдө көрүшкөнчө!

Рахмат, Marcelo

Сунушталууда: