# Детектовање близине - Виртуелни IoT хардвер У овом делу лекције, додаћете сензор близине вашем виртуелном IoT уређају и читати растојање са њега. ## Хардвер Виртуелни IoT уређај ће користити симулирани сензор растојања. На физичком IoT уређају користили бисте сензор са ласерским модулом за мерење растојања. ### Додавање сензора растојања у CounterFit Да бисте користили виртуелни сензор растојања, потребно је да га додате у CounterFit апликацију. #### Задатак - додавање сензора растојања у CounterFit Додајте сензор растојања у CounterFit апликацију. 1. Отворите код `fruit-quality-detector` у VS Code и уверите се да је виртуелно окружење активирано. 1. Инсталирајте додатни Pip пакет за CounterFit shim који може комуницирати са сензорима растојања симулирајући [rpi-vl53l0x Pip пакет](https://pypi.org/project/rpi-vl53l0x/), Python пакет који ради са [VL53L0X сензором растојања](https://wiki.seeedstudio.com/Grove-Time_of_Flight_Distance_Sensor-VL53L0X/). Уверите се да ово инсталирате из терминала са активираним виртуелним окружењем. ```sh pip install counterfit-shims-rpi-vl53l0x ``` 1. Уверите се да је CounterFit веб апликација покренута. 1. Направите сензор растојања: 1. У оквиру *Create sensor* у панелу *Sensors*, у падајућем менију *Sensor type* изаберите *Distance*. 1. Оставите *Units* као `Millimeter`. 1. Овај сензор је I²C сензор, па поставите адресу на `0x29`. Ако бисте користили физички VL53L0X сензор, она би била фиксно постављена на ову адресу. 1. Изаберите дугме **Add** да бисте креирали сензор растојања. ![Подешавања сензора растојања](../../../../../translated_images/counterfit-create-distance-sensor.967c9fb98f27888d95920c9784d004c972490eb71f70397fe13bd70a79a879a3.sr.png) Сензор растојања ће бити креиран и појавиће се на листи сензора. ![Креирани сензор растојања](../../../../../translated_images/counterfit-distance-sensor.079eefeeea0b68afc36431ce8fcbe2f09a7e4916ed1cd5cb30e696db53bc18fa.sr.png) ## Програмирање сензора растојања Виртуелни IoT уређај сада може бити програмиран да користи симулирани сензор растојања. ### Задатак - програмирање сензора времена лета 1. Направите нову датотеку у пројекту `fruit-quality-detector` под називом `distance-sensor.py`. > 💁 Лак начин за симулацију више IoT уређаја је да сваки уређај буде у различитој Python датотеци, а затим их покренете истовремено. 1. Започните везу са CounterFit-ом помоћу следећег кода: ```python from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000) ``` 1. Додајте следећи код испод овога: ```python import time from counterfit_shims_rpi_vl53l0x.vl53l0x import VL53L0X ``` Ово увози библиотеку shim за VL53L0X сензор времена лета. 1. Испод овога, додајте следећи код за приступ сензору: ```python distance_sensor = VL53L0X() distance_sensor.begin() ``` Овај код декларише сензор растојања, а затим покреће сензор. 1. На крају, додајте бесконачну петљу за читање растојања: ```python while True: distance_sensor.wait_ready() print(f'Distance = {distance_sensor.get_distance()} mm') time.sleep(1) ``` Овај код чека да вредност буде спремна за читање са сензора, а затим је исписује на конзолу. 1. Покрените овај код. > 💁 Не заборавите да се ова датотека зове `distance-sensor.py`! Уверите се да је покрећете преко Python-а, а не `app.py`. 1. Видећете мерења растојања на конзоли. Промените вредност у CounterFit-у да бисте видели како се ова вредност мења, или користите насумичне вредности. ```output (.venv) ➜ fruit-quality-detector python distance-sensor.py Distance = 37 mm Distance = 42 mm Distance = 29 mm ``` > 💁 Овај код можете пронаћи у фасцикли [code-proximity/virtual-iot-device](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector/code-proximity/virtual-iot-device). 😀 Ваш програм за сензор близине је успешно завршен! --- **Одрицање од одговорности**: Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода.