# Откриване на близост - Виртуален 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.bg.png) Сензорът за разстояние ще бъде създаден и ще се появи в списъка със сензори. ![Създаден сензор за разстояние](../../../../../translated_images/counterfit-distance-sensor.079eefeeea0b68afc36431ce8fcbe2f09a7e4916ed1cd5cb30e696db53bc18fa.bg.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). 😀 Вашата програма за сензор за близост беше успешна! --- **Отказ от отговорност**: Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматичните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия изходен език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален превод от човек. Не носим отговорност за каквито и да било недоразумения или погрешни интерпретации, произтичащи от използването на този превод.