কোড অনুসন্ধান

ESP32 টিউটোরিয়াল ২৭/৫৫ - আল্ট্রাসোনিক সেন্সর দিয়ে দূরত্ব মাপা | সানফাউন্ডারের ESP32 আইওটি লার্নিং কিট

ESP32 টিউটোরিয়াল ২৭/৫৫ - আল্ট্রাসোনিক সেন্সর দিয়ে দূরত্ব মাপা | সানফাউন্ডারের ESP32 আইওটি লার্নিং কিট

এই টিউটোরিয়ালে, আমরা শিখব কীভাবে ESP32-এর সাথে একটি আল্ট্রাসনিক দূরত্ব সেন্সর ব্যবহার করে দূরত্ব মাপতে হয় এবং ফলাফলগুলো একটি স্ক্রিনে প্রদর্শন করতে হয়। আমরা আরও অন্বেষণ করব কীভাবে একটি নির্দিষ্ট সীমার মধ্যে কোনো বস্তু শনাক্ত হলে একটি বুজার সক্রিয় করা যায়। এই প্রকল্পটি ESP32 মাইক্রোকন্ট্রোলারের বহুমুখীতা তুলে ধরে, যা Wi-Fi এবং ব্লুটুথ ক্ষমতা একীভূত করে, এটিকে বিভিন্ন IoT অ্যাপ্লিকেশনের জন্য উপযুক্ত করে তোলে।

ultrasonic_principle

এই গাইড জুড়ে, আপনি হার্ডওয়্যার উপাদানগুলির ব্যাখ্যা, ওয়্যারিং নির্দেশাবলী এবং কোড স্নিপেট পাবেন যা আপনাকে প্রকল্পটি সফলভাবে বাস্তবায়নে সহায়তা করবে। অতিরিক্ত স্পষ্টতার জন্য, অনুগ্রহ করে ভিডিওটি দেখুন (ভিডিওতে 00:00 এ)।

হার্ডওয়্যার ব্যাখ্যা

এই প্রকল্পের প্রাথমিক উপাদানগুলির মধ্যে রয়েছে ESP32 মাইক্রোকন্ট্রোলার, আল্ট্রাসনিক সেন্সর (HC-SR04) এবং একটি বুজার। আল্ট্রাসনিক সেন্সরটি দুটি প্রধান অংশ নিয়ে গঠিত: একটি ট্রান্সমিটার যা আল্ট্রাসনিক তরঙ্গ নির্গত করে এবং একটি রিসিভার যা প্রতিফলিত তরঙ্গ শোনে। তরঙ্গ ফিরে আসতে যে সময় লাগে তা পরিমাপ করে, আমরা একটি বস্তুর দূরত্ব গণনা করতে পারি।

ESP32 কেন্দ্রীয় নিয়ন্ত্রক হিসাবে কাজ করে, আল্ট্রাসনিক সেন্সর থেকে ডেটা প্রক্রিয়া করে এবং পরিমাপ করা দূরত্বের উপর ভিত্তি করে বুজার নিয়ন্ত্রণ করে। শনাক্ত করা দূরত্ব একটি নির্ধারিত সীমার চেয়ে কম হলে বুজার বেজে উঠবে, যা নির্দেশ করে যে একটি বস্তু খুব কাছাকাছি।

ডেটাশিট বিবরণ

প্রস্তুতকারক HC-SR04
পার্ট নম্বর HC-SR04
লজিক/IO ভোল্টেজ 5 V
সাপ্লাই ভোল্টেজ 5 V
আউটপুট কারেন্ট (প্রতি চ্যানেল) 16 mA
পিক কারেন্ট (প্রতি চ্যানেল)
PWM ফ্রিকোয়েন্সি নির্দেশিকা
ইনপুট লজিক থ্রেশহোল্ড
ভোল্টেজ ড্রপ / RDS(on) / স্যাচুরেশন
থার্মাল সীমা
প্যাকেজ
নোট / ভেরিয়েন্ট পরিমাপের পরিসীমা: 2 সেমি থেকে 400 সেমি

 

  • সেন্সরের জন্য 5 V এর সঠিক পাওয়ার সাপ্লাই নিশ্চিত করুন।
  • হস্তক্ষেপ এড়াতে আল্ট্রাসনিক তরঙ্গের জন্য একটি পরিষ্কার পথ বজায় রাখুন।
  • সংকেত বিলম্ব এবং শব্দ কমাতে ছোট তার ব্যবহার করুন।
  • ভুল যোগাযোগ এড়াতে সঠিক পিন সংযোগ নিশ্চিত করুন।
  • নির্ভুলতা পরীক্ষা করতে বিভিন্ন পরিবেশে সেন্সরটি পরীক্ষা করুন।

ওয়্যারিং নির্দেশাবলী

ESP32-27_ultrasonic_wiring

আল্ট্রাসনিক সেন্সরটি ESP32-এর সাথে সংযোগ করতে, সেন্সরের VCC পিনটি ESP32-এর 5V পিনের সাথে সংযুক্ত করুন। এরপর, সেন্সরের GND পিনটি ESP32-এর একটি গ্রাউন্ড (GND) পিনের সাথে সংযুক্ত করুন। সেন্সরের ট্রিগার পিন (Trig) ESP32-এর GPIO 26-এর সাথে সংযুক্ত করা উচিত, যখন ইকো পিন (Echo) GPIO 25-এর সাথে সংযুক্ত করা উচিত। এই সেটআপটি ESP32-কে সেন্সরে একটি সংকেত পাঠাতে এবং দূরত্ব গণনা করার জন্য ইকো সংকেত গ্রহণ করতে দেয়।

ESP32-27_ultrasonic_schematic

বুজারের জন্য, ধনাত্মক (লম্বা) পা ESP32-এর GPIO 12-এর সাথে এবং ঋণাত্মক (ছোট) পা GND-এর সাথে সংযুক্ত করুন। অপারেশনের সময় কোনো আলগা ওয়্যারিং প্রতিরোধ করতে সমস্ত সংযোগ নিরাপদ কিনা তা নিশ্চিত করুন। যদি একটি ব্রেডবোর্ড ব্যবহার করেন, তাহলে ভুল ওয়্যারিং এড়াতে বুজার সংযোগগুলি সঠিকভাবে সারিবদ্ধ করুন। ওয়্যারিং নিশ্চিত করার জন্য ভিডিওটি দেখুন (ভিডিওতে 05:12 এ)।

কোড উদাহরণ ও ওয়াকথ্রু

কোডটি আল্ট্রাসনিক সেন্সরের জন্য পিনগুলি আরম্ভ করে এবং সিরিয়াল যোগাযোগ সেট আপ করে। প্রধান ফাংশন, readSensorData(), একটি ট্রিগার সংকেত পাঠানো এবং ইকো পিন থেকে প্রতিক্রিয়া সময় পরিমাপের জন্য দায়ী।

const int echoPin = 25;
const int trigPin = 26;

void setup() {
  Serial.begin(115200);
  pinMode(echoPin, INPUT);
  pinMode(trigPin, OUTPUT);
  Serial.println("Ultrasonic sensor:");  
}

কোডটি আল্ট্রাসনিক সেন্সরের সাথে সংযুক্ত পিনগুলির জন্য echoPin এবং trigPin ধ্রুবক হিসাবে সংজ্ঞায়িত করে। setup() ফাংশনে, আমরা সিরিয়াল যোগাযোগ আরম্ভ করি এবং সেই অনুযায়ী পিন মোড সেট করি।

float readSensorData() {
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH); 
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  unsigned long microsecond = pulseIn(echoPin, HIGH);
  float distance = microsecond / 29.00 / 2;
  return distance;
}

এই অংশটি readSensorData() ফাংশন দেখায়, যা ট্রিগার পিনে একটি 10-মাইক্রোসেকেন্ড পালস পাঠায়। এটি তারপর ইকো পিনের সংকেত ফিরে পেতে সময় পরিমাপ করে, দূরত্ব গণনা করে এবং এই মানটি ফেরত দেয়।

অবশেষে, লুপ ফাংশনটি ক্রমাগত দূরত্ব পড়ে এবং সিরিয়াল মনিটরে এটি প্রিন্ট করে। যদি দূরত্ব 20 সেমির নিচে হয়, তাহলে বুজার সক্রিয় হবে।

প্রদর্শন / কী আশা করবেন

আপনি যখন প্রোগ্রামটি চালান, ESP32 সিরিয়াল মনিটরে সেন্টিমিটারে পরিমাপ করা দূরত্ব প্রদর্শন করবে। যদি কোনো বস্তু সেন্সরের 20 সেমির মধ্যে প্রবেশ করে, তাহলে বুজার বেজে উঠবে। সেন্সরের সামনে বিভিন্ন দূরত্বে বস্তু রেখে এই আচরণটি পরীক্ষা করা যেতে পারে। বিপরীত পোলারিটি সম্পর্কে সতর্ক থাকুন এবং অপারেশনের সময় কোনো সমস্যা এড়াতে সংযোগগুলি নির্দিষ্ট হিসাবে তৈরি করা হয়েছে তা নিশ্চিত করুন (ভিডিওতে 08:00 এ)।

ভিডিও টাইমস্ট্যাম্প

  • 00:00 শুরু
  • 1:46 আল্ট্রাসোনিক সেন্সরের পরিচিতি
  • 6:02 ওয়্যারিং ব্যাখ্যা
  • 7:37 ESP32 আরডুইনো কোড ব্যাখ্যা
  • 11:33 আরডুইনো আইডিইতে ESP32 বোর্ড এবং COM পোর্ট নির্বাচন
  • 13:15 দূরত্ব পরিমাপের প্রদর্শন
  • 16:43 দূরত্বের সাথে ক্রিয়া: বুজার

ছবি

ESP32-27_ultrasonic_wiring
ESP32-27_ultrasonic_wiring
ESP32-27_ultrasonic_schematic
ESP32-27_ultrasonic_schematic
ultrasonic_principle
ultrasonic_principle
827-ESP32 Tutorial 27/55- Arduino code for ultrasonic sensor
ভাষা: C++
// Define pins for the ultrasonic sensor
const int echoPin = 25;
const int trigPin = 26;

// Function prototype for reading sensor data
float readSensorData();

void setup() {
  // Begin serial communication at 115200 baud rate
  Serial.begin(115200);
  // Set echoPin as input and trigPin as output
  pinMode(echoPin, INPUT);
  pinMode(trigPin, OUTPUT);
  // Print sensor information to the serial monitor
  Serial.println("Ultrasonic sensor:");  
}

void loop() {
  // Read distance from the ultrasonic sensor
  float distance = readSensorData();
  // Print the measured distance to the serial monitor
  Serial.print(distance);   
  Serial.println(" cm");
  // Delay between readings
  delay(200);
}

// Function to read data from the ultrasonic sensor
float readSensorData() {
  // Trigger a low signal before sending a high signal
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2);
  // Send a 10-microsecond high signal to the trigPin
  digitalWrite(trigPin, HIGH); 
  delayMicroseconds(10);
  // Return to low signal
  digitalWrite(trigPin, LOW);
  
  // Measure the duration of the high signal on the echoPin
  unsigned long microsecond = pulseIn(echoPin, HIGH);

  // Calculate the distance using the speed of sound (29.00µs per centimeter)
  float distance = microsecond / 29.00 / 2;

  // Return the calculated distance
  return distance;
}

আপনাকে যা প্রয়োজন হতে পারে

সম্পদ ও রেফারেন্সসমূহ

ফাইলসমূহ📁

কোনো ফাইল উপলব্ধ নেই।