You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/en/4-manufacturing/lessons/4-trigger-fruit-detector/virtual-device-proximity.md

4.7 KiB

Detect proximity - Virtual IoT Hardware

In this part of the lesson, you will add a proximity sensor to your virtual IoT device and read distance measurements from it.

Hardware

The virtual IoT device will use a simulated distance sensor.

In a physical IoT device, you would use a sensor equipped with a laser ranging module to measure distance.

Add the distance sensor to CounterFit

To use a virtual distance sensor, you need to add one to the CounterFit app.

Task - Add the distance sensor to CounterFit

Add the distance sensor to the CounterFit app.

  1. Open the fruit-quality-detector code in VS Code, and ensure the virtual environment is activated.

  2. Install an additional Pip package to set up a CounterFit shim that simulates the rpi-vl53l0x Pip package, a Python package designed to interact with a VL53L0X time-of-flight distance sensor. Make sure you install this from a terminal with the virtual environment activated.

    pip install counterfit-shims-rpi-vl53l0x
    
  3. Ensure the CounterFit web app is running.

  4. Create a distance sensor:

    1. In the Create sensor box in the Sensors pane, open the Sensor type dropdown and select Distance.

    2. Leave the Units as Millimeter.

    3. This sensor is an I2C sensor, so set the address to 0x29. If you were using a physical VL53L0X sensor, this address would be hardcoded.

    4. Click the Add button to create the distance sensor.

    The distance sensor settings

    The distance sensor will be created and appear in the sensors list.

    The distance sensor created

Program the distance sensor

The virtual IoT device can now be programmed to use the simulated distance sensor.

Task - Program the time-of-flight sensor

  1. Create a new file in the fruit-quality-detector project called distance-sensor.py.

    💁 A simple way to simulate multiple IoT devices is to create each one in a separate Python file and run them simultaneously.

  2. Start a connection to CounterFit with the following code:

    from counterfit_connection import CounterFitConnection
    CounterFitConnection.init('127.0.0.1', 5000)
    
  3. Add the following code below this:

    import time
    
    from counterfit_shims_rpi_vl53l0x.vl53l0x import VL53L0X
    

    This imports the sensor library shim for the VL53L0X time-of-flight sensor.

  4. Below this, add the following code to access the sensor:

    distance_sensor = VL53L0X()
    distance_sensor.begin()
    

    This code declares a distance sensor and starts the sensor.

  5. Finally, add an infinite loop to read distance measurements:

    while True:
        distance_sensor.wait_ready()
        print(f'Distance = {distance_sensor.get_distance()} mm')
        time.sleep(1)
    

    This code waits for a value to be ready from the sensor and then prints it to the console.

  6. Run this code.

    💁 Remember, this file is called distance-sensor.py! Make sure to run it using Python, not app.py.

  7. You will see distance measurements appear in the console. Change the value in CounterFit to see the output update, or use random values.

    (.venv) ➜  fruit-quality-detector python distance-sensor.py 
    Distance = 37 mm
    Distance = 42 mm
    Distance = 29 mm
    

💁 You can find this code in the code-proximity/virtual-iot-device folder.

😀 Congratulations! Your proximity sensor program is working successfully!


Disclaimer:
This document has been translated using the AI translation service Co-op Translator. While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.