|
|
<!--
|
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
|
{
|
|
|
"original_hash": "70e5a428b607cd5a9a4f422c2a4df03d",
|
|
|
"translation_date": "2025-08-28T15:14:42+00:00",
|
|
|
"source_file": "2-farm/lessons/1-predict-plant-growth/virtual-device-temp.md",
|
|
|
"language_code": "sr"
|
|
|
}
|
|
|
-->
|
|
|
# Мерење температуре - Виртуелни IoT хардвер
|
|
|
|
|
|
У овом делу лекције, додаћете сензор за температуру вашем виртуелном IoT уређају.
|
|
|
|
|
|
## Виртуелни хардвер
|
|
|
|
|
|
Виртуелни IoT уређај ће користити симулирани Grove дигитални сензор за влажност и температуру. Ово омогућава да ова лабораторија остане иста као када се користи Raspberry Pi са физичким Grove DHT11 сензором.
|
|
|
|
|
|
Сензор комбинује **сензор за температуру** са **сензором за влажност**, али у овој лабораторији вас занима само компонента сензора за температуру. У физичком IoT уређају, сензор за температуру би био [термистор](https://wikipedia.org/wiki/Thermistor) који мери температуру детектујући промену отпора у зависности од промене температуре. Сензори за температуру су обично дигитални сензори који интерно конвертују измерени отпор у температуру у степенима Целзијуса (или Келвина, или Фаренхајта).
|
|
|
|
|
|
### Додавање сензора у CounterFit
|
|
|
|
|
|
Да бисте користили виртуелни сензор за влажност и температуру, потребно је да додате ова два сензора у CounterFit апликацију.
|
|
|
|
|
|
#### Задатак - додавање сензора у CounterFit
|
|
|
|
|
|
Додајте сензоре за влажност и температуру у CounterFit апликацију.
|
|
|
|
|
|
1. Направите нову Python апликацију на вашем рачунару у фасцикли под називом `temperature-sensor` са једним фајлом под називом `app.py` и Python виртуелним окружењем, и додајте CounterFit pip пакете.
|
|
|
|
|
|
> ⚠️ Можете се позвати на [упутства за креирање и подешавање CounterFit Python пројекта у лекцији 1 ако је потребно](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md).
|
|
|
|
|
|
1. Инсталирајте додатни Pip пакет за инсталацију CounterFit shim-а за DHT11 сензор. Уверите се да ово радите из терминала са активираним виртуелним окружењем.
|
|
|
|
|
|
```sh
|
|
|
pip install counterfit-shims-seeed-python-dht
|
|
|
```
|
|
|
|
|
|
1. Уверите се да је CounterFit веб апликација покренута.
|
|
|
|
|
|
1. Направите сензор за влажност:
|
|
|
|
|
|
1. У оквиру *Create sensor* у панелу *Sensors*, из падајућег менија *Sensor type* изаберите *Humidity*.
|
|
|
|
|
|
1. Оставите *Units* подешено на *Percentage*.
|
|
|
|
|
|
1. Уверите се да је *Pin* подешен на *5*.
|
|
|
|
|
|
1. Изаберите дугме **Add** да бисте креирали сензор за влажност на пину 5.
|
|
|
|
|
|

|
|
|
|
|
|
Сензор за влажност ће бити креиран и појавиће се на листи сензора.
|
|
|
|
|
|

|
|
|
|
|
|
1. Направите сензор за температуру:
|
|
|
|
|
|
1. У оквиру *Create sensor* у панелу *Sensors*, из падајућег менија *Sensor type* изаберите *Temperature*.
|
|
|
|
|
|
1. Оставите *Units* подешено на *Celsius*.
|
|
|
|
|
|
1. Уверите се да је *Pin* подешен на *6*.
|
|
|
|
|
|
1. Изаберите дугме **Add** да бисте креирали сензор за температуру на пину 6.
|
|
|
|
|
|

|
|
|
|
|
|
Сензор за температуру ће бити креиран и појавиће се на листи сензора.
|
|
|
|
|
|

|
|
|
|
|
|
## Програмирање апликације за сензор температуре
|
|
|
|
|
|
Сада можете програмирати апликацију за сензор температуре користећи CounterFit сензоре.
|
|
|
|
|
|
### Задатак - програмирање апликације за сензор температуре
|
|
|
|
|
|
Програмирајте апликацију за сензор температуре.
|
|
|
|
|
|
1. Уверите се да је апликација `temperature-sensor` отворена у VS Code-у.
|
|
|
|
|
|
1. Отворите фајл `app.py`.
|
|
|
|
|
|
1. Додајте следећи код на врх `app.py` да бисте повезали апликацију са CounterFit-ом:
|
|
|
|
|
|
```python
|
|
|
from counterfit_connection import CounterFitConnection
|
|
|
CounterFitConnection.init('127.0.0.1', 5000)
|
|
|
```
|
|
|
|
|
|
1. Додајте следећи код у фајл `app.py` да бисте увезли потребне библиотеке:
|
|
|
|
|
|
```python
|
|
|
import time
|
|
|
from counterfit_shims_seeed_python_dht import DHT
|
|
|
```
|
|
|
|
|
|
Изјава `from seeed_dht import DHT` увози класу `DHT` за интеракцију са виртуелним Grove сензором температуре користећи shim из модула `counterfit_shims_seeed_python_dht`.
|
|
|
|
|
|
1. Додајте следећи код након претходног да бисте креирали инстанцу класе која управља виртуелним сензором за влажност и температуру:
|
|
|
|
|
|
```python
|
|
|
sensor = DHT("11", 5)
|
|
|
```
|
|
|
|
|
|
Овим се декларише инстанца класе `DHT` која управља виртуелним **D**igital **H**umidity и **T**emperature сензором. Први параметар говори коду да се користи виртуелни *DHT11* сензор. Други параметар говори коду да је сензор повезан на порт `5`.
|
|
|
|
|
|
> 💁 CounterFit симулира овај комбиновани сензор за влажност и температуру повезивањем на 2 сензора: сензор за влажност на пину који је дат приликом креирања класе `DHT`, и сензор за температуру који ради на следећем пину. Ако је сензор за влажност на пину 5, shim очекује да је сензор за температуру на пину 6.
|
|
|
|
|
|
1. Додајте бесконачну петљу након претходног кода да бисте очитавали вредност сензора температуре и исписивали је у конзолу:
|
|
|
|
|
|
```python
|
|
|
while True:
|
|
|
_, temp = sensor.read()
|
|
|
print(f'Temperature {temp}°C')
|
|
|
```
|
|
|
|
|
|
Позив `sensor.read()` враћа тјупл са вредностима влажности и температуре. Потребна вам је само вредност температуре, па се вредност влажности игнорише. Вредност температуре се затим исписује у конзолу.
|
|
|
|
|
|
1. Додајте мало кашњење од десет секунди на крају `loop`-а, јер није потребно континуирано проверавати нивое температуре. Кашњење смањује потрошњу енергије уређаја.
|
|
|
|
|
|
```python
|
|
|
time.sleep(10)
|
|
|
```
|
|
|
|
|
|
1. Из терминала у VS Code-у са активираним виртуелним окружењем, покрените следеће да бисте покренули вашу Python апликацију:
|
|
|
|
|
|
```sh
|
|
|
python app.py
|
|
|
```
|
|
|
|
|
|
1. У CounterFit апликацији, промените вредност сензора температуре коју ће апликација очитавати. Ово можете урадити на два начина:
|
|
|
|
|
|
* Унесите број у поље *Value* за сензор температуре, а затим изаберите дугме **Set**. Број који унесете биће вредност коју сензор враћа.
|
|
|
|
|
|
* Означите поље *Random*, унесите *Min* и *Max* вредности, а затим изаберите дугме **Set**. Сваки пут када сензор очита вредност, она ће бити насумичан број између *Min* и *Max*.
|
|
|
|
|
|
Требало би да видите вредности које сте подесили како се појављују у конзоли. Промените *Value* или подешавања *Random* да бисте видели промену вредности.
|
|
|
|
|
|
```output
|
|
|
(.venv) ➜ temperature-sensor python app.py
|
|
|
Temperature 28.25°C
|
|
|
Temperature 30.71°C
|
|
|
Temperature 25.17°C
|
|
|
```
|
|
|
|
|
|
> 💁 Овај код можете пронаћи у фасцикли [code-temperature/virtual-device](../../../../../2-farm/lessons/1-predict-plant-growth/code-temperature/virtual-device).
|
|
|
|
|
|
😀 Ваша апликација за сензор температуре је успешно завршена!
|
|
|
|
|
|
---
|
|
|
|
|
|
**Одрицање од одговорности**:
|
|
|
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације, препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. |