# Виявлення близькості - Віртуальне 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.uk.png) Датчик відстані буде створено і він з’явиться у списку датчиків. ![Створений датчик відстані](../../../../../translated_images/counterfit-distance-sensor.079eefeeea0b68afc36431ce8fcbe2f09a7e4916ed1cd5cb30e696db53bc18fa.uk.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). Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ мовою оригіналу слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується звертатися до професійного людського перекладу. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.