# নিকটবর্তীতা সনাক্ত করুন - র‌্যাস্পবেরি পাই এই পাঠের অংশে, আপনি আপনার র‌্যাস্পবেরি পাইতে একটি নিকটবর্তীতা সেন্সর যোগ করবেন এবং এর থেকে দূরত্ব পড়বেন। ## হার্ডওয়্যার র‌্যাস্পবেরি পাইয়ের জন্য একটি নিকটবর্তীতা সেন্সর প্রয়োজন। আপনি যে সেন্সরটি ব্যবহার করবেন তা হল [Grove Time of Flight distance sensor](https://www.seeedstudio.com/Grove-Time-of-Flight-Distance-Sensor-VL53L0X.html)। এই সেন্সরটি একটি লেজার রেঞ্জিং মডিউল ব্যবহার করে দূরত্ব সনাক্ত করে। এই সেন্সরের পরিসীমা 10mm থেকে 2000mm (1cm - 2m), এবং এটি এই পরিসরে বেশ সঠিকভাবে মান রিপোর্ট করবে, যেখানে 1000mm এর উপরে দূরত্ব 8109mm হিসাবে রিপোর্ট করা হবে। লেজার রেঞ্জফাইন্ডার সেন্সরের পিছনের দিকে থাকে, Grove সকেটের বিপরীত দিকে। এটি একটি I²C সেন্সর। ### টাইম অফ ফ্লাইট সেন্সর সংযুক্ত করুন Grove টাইম অফ ফ্লাইট সেন্সরটি র‌্যাস্পবেরি পাইতে সংযুক্ত করা যেতে পারে। #### কাজ - টাইম অফ ফ্লাইট সেন্সর সংযুক্ত করুন টাইম অফ ফ্লাইট সেন্সর সংযুক্ত করুন। ![একটি Grove টাইম অফ ফ্লাইট সেন্সর](../../../../../translated_images/grove-time-of-flight-sensor.d82ff2165bfded9f485de54d8d07195a6270a602696825fca19f629ddfe94e86.bn.png) 1. Grove কেবলের এক প্রান্ত টাইম অফ ফ্লাইট সেন্সরের সকেটে প্রবেশ করান। এটি শুধুমাত্র একটি নির্দিষ্ট দিকেই প্রবেশ করবে। 1. র‌্যাস্পবেরি পাই বন্ধ অবস্থায়, Grove কেবলের অন্য প্রান্তটি Grove Base হ্যাটে সংযুক্ত I²C সকেটগুলির একটিতে সংযুক্ত করুন। এই সকেটগুলি নীচের সারিতে থাকে, GPIO পিনগুলির বিপরীত দিকে এবং ক্যামেরা কেবলের স্লটের পাশে। ![Grove টাইম অফ ফ্লাইট সেন্সর I²C সকেটে সংযুক্ত](../../../../../translated_images/pi-time-of-flight-sensor.58c8dc04eb3bfb57a7c3019f031433ef4d798d4d7603d565afbf6f3802840dba.bn.png) ## টাইম অফ ফ্লাইট সেন্সর প্রোগ্রাম করুন এখন র‌্যাস্পবেরি পাইতে সংযুক্ত টাইম অফ ফ্লাইট সেন্সরটি প্রোগ্রাম করা যেতে পারে। ### কাজ - টাইম অফ ফ্লাইট সেন্সর প্রোগ্রাম করুন ডিভাইসটি প্রোগ্রাম করুন। 1. পাই চালু করুন এবং এটি বুট হওয়ার জন্য অপেক্ষা করুন। 1. `fruit-quality-detector` কোডটি VS Code-এ খুলুন, সরাসরি পাইতে অথবা Remote SSH এক্সটেনশনের মাধ্যমে সংযুক্ত হয়ে। 1. rpi-vl53l0x Pip প্যাকেজ ইনস্টল করুন, একটি Python প্যাকেজ যা VL53L0X টাইম-অফ-ফ্লাইট দূরত্ব সেন্সরের সাথে কাজ করে। এটি নিম্নলিখিত pip কমান্ড ব্যবহার করে ইনস্টল করুন: ```sh pip install rpi-vl53l0x ``` 1. এই প্রজেক্টে একটি নতুন ফাইল তৈরি করুন যার নাম `distance-sensor.py`। > 💁 একাধিক IoT ডিভাইস সিমুলেট করার সহজ উপায় হল প্রতিটি ডিভাইসের জন্য আলাদা Python ফাইল তৈরি করা, তারপর সেগুলি একসাথে চালানো। 1. এই ফাইলে নিম্নলিখিত কোড যোগ করুন: ```python import time from grove.i2c import Bus from rpi_vl53l0x.vl53l0x import VL53L0X ``` এটি Grove I²C বাস লাইব্রেরি এবং Grove টাইম অফ ফ্লাইট সেন্সরের মূল হার্ডওয়্যার সেন্সরের জন্য একটি লাইব্রেরি ইমপোর্ট করে। 1. এর নিচে, সেন্সর অ্যাক্সেস করার জন্য নিম্নলিখিত কোড যোগ করুন: ```python distance_sensor = VL53L0X(bus = Bus().bus) distance_sensor.begin() ``` এই কোডটি Grove I²C বাস ব্যবহার করে একটি দূরত্ব সেন্সর ঘোষণা করে, তারপর সেন্সরটি শুরু করে। 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. আপনি কনসোলে দূরত্বের পরিমাপ দেখতে পাবেন। সেন্সরের কাছে বস্তু রাখুন এবং আপনি দূরত্বের পরিমাপ দেখতে পাবেন: ```output pi@raspberrypi:~/fruit-quality-detector $ python3 distance_sensor.py Distance = 29 mm Distance = 28 mm Distance = 30 mm Distance = 151 mm ``` রেঞ্জফাইন্ডার সেন্সরের পিছনের দিকে থাকে, তাই দূরত্ব পরিমাপ করার সময় সঠিক দিকটি ব্যবহার করুন। ![টাইম অফ ফ্লাইট সেন্সরের পিছনের রেঞ্জফাইন্ডার একটি কলার দিকে নির্দেশ করছে](../../../../../translated_images/time-of-flight-banana.079921ad8b1496e4525dc26b4cdc71a076407aba3e72ba113ba2e38febae92c5.bn.png) > 💁 আপনি এই কোডটি [code-proximity/pi](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector/code-proximity/pi) ফোল্ডারে খুঁজে পেতে পারেন। 😀 আপনার নিকটবর্তীতা সেন্সর প্রোগ্রাম সফল হয়েছে! --- **অস্বীকৃতি**: এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদ প্রদানের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না।