Мазмуну:
- 1 -кадам: Материалдык эсеп
- 2 -кадам: DS18B20 Температура сенсору
- 3 -кадам: сенсорлорду NodeMCUге туташтыруу
- 4 -кадам: Бөлүнгөн китепканаларды орнотуу
- 5 -кадам: сенсорлорду текшерүү
- 6 -кадам: Blynkти колдонуу
- 7 -кадам: Жыйынтык
Video: IoT Жөнөкөй: Бир нече сенсорлорду көзөмөлдөө: 7 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Бир нече жума мурун мен бул жерде 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 сенсорунун суу өткөрбөгөн версиясын колдонобуз. Бул нымдуу шарттарда, мисалы, нымдуу жерде алыскы температура үчүн абдан пайдалуу. Сенсор изоляцияланган жана 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ге туташтыруу
- Ар бир сенсордон 3 зымды мини нан тактасындагы жогорудагы сүрөттө көрсөтүлгөндөй туташтырыңыз. Мен сенсордун кабелин жакшыраак оңдоо үчүн атайын туташтыргычтарды колдондум.
-
Белгилей кетсек, эки сенсор тең параллель. Эгерде сизде 2ден ашык сенсор болсо, сиз дагы ошону кылышыңыз керек.
- Кызыл ==> 3.3V
- Кара ==> GND
- Сары ==> D4
- VCC (3.3V) менен Маалыматтын (D4) ортосунда 4.7K ом каршылыгын колдонуңуз
4 -кадам: Бөлүнгөн китепканаларды орнотуу
DS18B20 туура колдонуу үчүн эки китепкана керек болот:
- OneWire
- 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ти колдонуп жасайбыз. Ошентип, бардык алынган маалыматтар мобилдик түзмөгүңүздө реалдуу убакытта көрсөтүлөт жана биз бул үчүн тарыхый депозитарийди курабыз.
Төмөнкү кадамдарды аткарыңыз:
- Жаңы долбоор түзүү.
- Ага ат коюңуз (менин учурда "Dual Temperature Monitor")
- Жаңы түзмөктү тандаңыз - ESP8266 (WiFi) "Менин түзмөктөрүм" катары
- Коддо колдонуу үчүн AUTH TOKENди көчүрүңүз (аны электрондук почтаңызга жөнөтсөңүз болот).
-
Төмөнкүлөрдү аныктоочу эки "Габариттик" виджеттерди камтыйт:
- Ар бир сенсор менен колдонула турган виртуалдык пин: V10 (Сенсор [0]) жана V11 (Сенсор [1])
- Температура диапазону: -5тен 100oСке чейин сенсор [0]
- Температура диапазону: 25тен 212 oC чейин сенсор [1]
- Маалыматтарды окуу жыштыгы: 1 секунд
- V10 жана V11ди виртуалдык казык катары аныктаган "Тарых графиги" виджети камтылган
- "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
Сунушталууда:
Бир аналог пинди колдонуу менен бир нече аналогдук баалуулуктарды кантип окуу керек: 6 кадам (сүрөттөр менен)
Бир аналог пинди колдонуу менен бир нече аналогдук баалуулуктарды кантип окуу керек: Бул үйрөткүчтө мен сизге бир эле аналогдук кирүүчү пинди колдонуу менен бир нече аналогдук баалуулуктарды кантип окууну көрсөтөм
Бир нече баскычтарды Arduinoдогу бир пинге туташтыруу: 4 кадам
Бир нече баскычтарды Arduino'догу бир пинге туташтыруу: Саламатсыздарбы, Arduino долбоорлоруңузда жаркыраган светодиоддору ашып кеткенде, сиз өзүңүзгө кошумча казыктарга муктаж болуп калышыңыз мүмкүн. Мен сизге бир кнопканы көрсөтөм, анда сиз бир эле баскычка ээ боло аласыз, бардыгы бир эле аналогдук пинге туташкан
Fusion 360 бир нече денени бир STL файлы катары экспорттоо: 5 кадам
Fusion 360 бир нече денени бир STL файлы катары экспорттоо: Мен биринчи жолу Fusion 360 колдоно баштаганымда, менин эң жакшы көргөн өзгөчөлүктөрүмдүн бири 3D моделинен 3D басып чыгарууга өтүү болгон. Башка эч кандай программалык камсыздоо жумшак иштөө процессин камсыз кылган эмес. Эгерде сиздин модельде бир гана дене бар болсо, муну жасоо абдан жөнөкөй. Бирок
Бир жолу колдонулуучу камераны кайра колдонуп, планетаны сактаңыз! жана бир нече Quid сактоо: 4 кадам
Бир жолу колдонулуучу камераны кайра колдонуп, планетаны сактаңыз! and Save a Few Quid: Жакында мен жергиликтүү фото дүкөнүмө (jessops) түшүп, бир нече жолу колдонулган бир жолу колдонулуучу камераларды алдым, анткени алар шок адамдар үчүн абдан кызыктуу экенин билесиз. Жөн эле сураңыз, алар беришет. Мен дагы ойлодум, ээ, бул компаниялар камераларды кайра алышат, коет
Бир нече жарым -жартылай фокусталган бир толук фокусталган сүрөттү кантип түзүү керек: 4 кадам
Бир нече жарым -жартылай фокусталган бир сүрөттү кантип түзүү керек: Мен Helicon Focus программасын колдонууну сунуштайм. Windows жана Mac версиялары d-Stidio сайтында жеткиликтүү.Бул программа тайыз тереңдик көйгөйүн чечүү үчүн макрофотография, микрофотография жана гиперфокалдык пейзаж сүрөтү үчүн иштелип чыккан