# নিকটবর্তীতা সনাক্ত করুন - ভার্চুয়াল IoT হার্ডওয়্যার এই পাঠের অংশে, আপনি আপনার ভার্চুয়াল IoT ডিভাইসে একটি নিকটবর্তীতা সেন্সর যোগ করবেন এবং এর থেকে দূরত্ব পড়বেন। ## হার্ডওয়্যার ভার্চুয়াল IoT ডিভাইস একটি সিমুলেটেড দূরত্ব সেন্সর ব্যবহার করবে। একটি বাস্তব IoT ডিভাইসে, আপনি দূরত্ব সনাক্ত করার জন্য একটি লেজার রেঞ্জিং মডিউল সহ একটি সেন্সর ব্যবহার করবেন। ### CounterFit-এ দূরত্ব সেন্সর যোগ করুন ভার্চুয়াল দূরত্ব সেন্সর ব্যবহার করতে, আপনাকে CounterFit অ্যাপে একটি সেন্সর যোগ করতে হবে। #### কাজ - CounterFit-এ দূরত্ব সেন্সর যোগ করুন CounterFit অ্যাপে দূরত্ব সেন্সর যোগ করুন। 1. VS Code-এ `fruit-quality-detector` কোড খুলুন এবং নিশ্চিত করুন যে ভার্চুয়াল পরিবেশ সক্রিয় রয়েছে। 1. একটি অতিরিক্ত Pip প্যাকেজ ইনস্টল করুন যা একটি CounterFit শিম ইনস্টল করবে যা দূরত্ব সেন্সরগুলির সাথে কথা বলতে পারে [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. *Sensors* প্যানের *Create sensor* বাক্সে, *Sensor type* ড্রপডাউন থেকে *Distance* নির্বাচন করুন। 1. *Units* `Millimeter` হিসেবে রেখে দিন। 1. এই সেন্সরটি একটি I²C সেন্সর, তাই ঠিকানা `0x29` সেট করুন। আপনি যদি একটি বাস্তব VL53L0X সেন্সর ব্যবহার করেন তবে এটি এই ঠিকানায় হার্ডকোড করা থাকবে। 1. দূরত্ব সেন্সর তৈরি করতে **Add** বোতামটি নির্বাচন করুন। ![দূরত্ব সেন্সরের সেটিংস](../../../../../translated_images/counterfit-create-distance-sensor.967c9fb98f27888d95920c9784d004c972490eb71f70397fe13bd70a79a879a3.bn.png) দূরত্ব সেন্সর তৈরি হবে এবং সেন্সর তালিকায় প্রদর্শিত হবে। ![তৈরি করা দূরত্ব সেন্সর](../../../../../translated_images/counterfit-distance-sensor.079eefeeea0b68afc36431ce8fcbe2f09a7e4916ed1cd5cb30e696db53bc18fa.bn.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 ``` এটি 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) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না।