# Мерење температуре - Wio Terminal У овом делу лекције, додаћете сензор за температуру на ваш Wio Terminal и читати вредности температуре са њега. ## Хардвер Wio Terminal захтева сензор за температуру. Сензор који ћете користити је [DHT11 сензор за влажност и температуру](https://www.seeedstudio.com/Grove-Temperature-Humidity-Sensor-DHT11.html), који комбинује два сензора у једном пакету. Ово је прилично популарно решење, са бројним комерцијално доступним сензорима који комбинују температуру, влажност, а понекад и атмосферски притисак. Компонента за мерење температуре је термистор са негативним температурним коефицијентом (NTC), термистор чији отпор опада са повећањем температуре. Ово је дигитални сензор, тако да има уграђени АЦД (аналогно-дигитални конвертор) који ствара дигитални сигнал који садржи податке о температури и влажности, а који микроконтролер може да чита. ### Повежите сензор за температуру Grove сензор за температуру може се повезати на дигитални порт Wio Terminal-а. #### Задатак - повежите сензор за температуру Повежите сензор за температуру. ![Grove сензор за температуру](../../../../../translated_images/grove-dht11.07f8eafceee170043efbb53e1d15722bd4e00fbaa9ff74290b57e9f66eb82c17.sr.png) 1. Уметните један крај Grove кабла у прикључак на сензору за влажност и температуру. Кабл ће ући само у једном смеру. 1. Док је Wio Terminal искључен са вашег рачунара или другог извора напајања, повежите други крај Grove кабла са десним Grove прикључком на Wio Terminal-у, гледајући екран. То је прикључак који је најдаље од дугмета за напајање. ![Grove сензор за температуру повезан са десним прикључком](../../../../../translated_images/wio-temperature-sensor.2934928f38c7f79a68d24879d2c8986c78244696f931e2e33c293f426ecdc0ad.sr.png) ## Програмирање сензора за температуру Wio Terminal сада може бити програмиран да користи повезани сензор за температуру. ### Задатак - програмирајте сензор за температуру Програмирајте уређај. 1. Направите потпуно нови Wio Terminal пројекат користећи PlatformIO. Назовите овај пројекат `temperature-sensor`. Додајте код у функцију `setup` да конфигуришете серијски порт. > ⚠️ Можете се позвати на [упутства за креирање PlatformIO пројекта у пројекту 1, лекција 1 ако је потребно](../../../1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md#create-a-platformio-project). 1. Додајте зависност библиотеке за Seeed Grove сензор за влажност и температуру у `platformio.ini` датотеку пројекта: ```ini lib_deps = seeed-studio/Grove Temperature And Humidity Sensor @ 1.0.1 ``` > ⚠️ Можете се позвати на [упутства за додавање библиотека у PlatformIO пројекат у пројекту 1, лекција 4 ако је потребно](../../../1-getting-started/lessons/4-connect-internet/wio-terminal-mqtt.md#install-the-wifi-and-mqtt-arduino-libraries). 1. Додајте следеће `#include` директиве на врх датотеке, испод постојећег `#include `: ```cpp #include #include ``` Ово увози датотеке потребне за интеракцију са сензором. `DHT.h` хедер датотека садржи код за сам сензор, а додавање `SPI.h` хедер датотеке осигурава да је код потребан за комуникацију са сензором укључен приликом компајлирања апликације. 1. Пре функције `setup`, декларишите DHT сензор: ```cpp DHT dht(D0, DHT11); ``` Ово декларише инстанцу класе `DHT` која управља **Д**игиталним **Х**умидитетом и **Т**емпературним сензором. Овај сензор је повезан на порт `D0`, десни Grove прикључак на Wio Terminal-у. Други параметар говори коду да је коришћени сензор *DHT11* - библиотека коју користите подржава и друге варијанте овог сензора. 1. У функцији `setup`, додајте код за подешавање серијске везе: ```cpp void setup() { Serial.begin(9600); while (!Serial) ; // Wait for Serial to be ready delay(1000); } ``` 1. На крају функције `setup`, након последњег `delay`, додајте позив за покретање DHT сензора: ```cpp dht.begin(); ``` 1. У функцији `loop`, додајте код за позивање сензора и испис температуре на серијски порт: ```cpp void loop() { float temp_hum_val[2] = {0}; dht.readTempAndHumidity(temp_hum_val); Serial.print("Temperature: "); Serial.print(temp_hum_val[1]); Serial.println ("°C"); delay(10000); } ``` Овај код декларише празан низ од 2 флоат вредности и прослеђује га позиву `readTempAndHumidity` на инстанци `DHT`. Овај позив попуњава низ са 2 вредности - влажност иде у 0-ти елемент низа (запамтите да су у C++ низови базирани на 0, тако да је 0-ти елемент 'први' елемент у низу), а температура иде у 1-ви елемент. Температура се чита из 1-вог елемента низа и исписује на серијски порт. > 🇺🇸 Температура се чита у Целзијусима. За Американце, да бисте је претворили у Фаренхајте, поделите вредност у Целзијусима са 5, затим помножите са 9, па додајте 32. На пример, очитавање температуре од 20°C постаје ((20/5)*9) + 32 = 68°F. 1. Компилирајте и отпремите код на Wio Terminal. > ⚠️ Можете се позвати на [упутства за креирање PlatformIO пројекта у пројекту 1, лекција 1 ако је потребно](../../../1-getting-started/lessons/1-introduction-to-iot/wio-terminal.md#write-the-hello-world-app). 1. Када је код отпремљен, можете пратити температуру користећи серијски монитор: ```output > Executing task: platformio device monitor < --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time --- More details at http://bit.ly/pio-monitor-filters --- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 --- --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- Temperature: 25.00°C Temperature: 25.00°C Temperature: 25.00°C Temperature: 24.00°C ``` > 💁 Овај код можете пронаћи у [code-temperature/wio-terminal](../../../../../2-farm/lessons/1-predict-plant-growth/code-temperature/wio-terminal) фолдеру. 😀 Ваш програм за сензор температуре је успешно завршен! --- **Одрицање од одговорности**: Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода.