পাঠ ২০/৩১: LCD1602-তে আল্ট্রাসনিক দূরত্ব প্রদর্শন
এই প্রজেক্টটি দেখায় কিভাবে একটি HC-SR04 আল্ট্রাসনিক দূরত্ব সেন্সরকে I2C-সক্ষম LCD1602 ডিসপ্লের সাথে একত্রিত করে একটি রিয়েল-টাইম দূরত্ব পরিমাপ সিস্টেম তৈরি করা যায়। এই গাইডের শেষে, আপনার কাছে একটি কার্যকরী ডিভাইস থাকবে যা ক্রমাগতভাবে সেন্টিমিটারে কোনো বস্তুর দূরত্ব পরিমাপ ও প্রদর্শন করবে। এটি Arduino ইলেকট্রনিক্সের একটি মৌলিক দক্ষতা, কারণ এটি সেন্সর ইনপুটের সাথে ভিজ্যুয়াল আউটপুটকে একত্রিত করে।
এই ব্যবহারিক সেটআপটি বিভিন্ন বাস্তব-বিশ্বের অ্যাপ্লিকেশনে ব্যবহার করা যেতে পারে, যার মধ্যে রয়েছে:
- একটি স্মার্ট পার্কিং সহায়ক তৈরি করা যা আপনাকে দেয়াল বা অন্য গাড়ির দূরত্ব নির্ণয় করতে সাহায্য করে।
- ট্যাঙ্কের উপরের অংশ থেকে পৃষ্ঠের দূরত্ব পরিমাপ করে একটি সাধারণ তরল স্তর মনিটর তৈরি করা।
- একটি স্বয়ংক্রিয় হ্যান্ড-স্যানিটাইজার ডিসপেনসার বা একটি স্পর্শহীন আবর্জনার পাত্র তৈরি করা যা কাছাকাছি কোনো বস্তু এলে খোলে।
- একটি মৌলিক নিরাপত্তা অ্যালার্ম তৈরি করা যা নির্দিষ্ট এলাকায় কেউ প্রবেশ করলে সক্রিয় হয়।
হার্ডওয়্যার এবং উপাদানসমূহ
এই প্রজেক্টটি তৈরি করতে আপনার নিম্নলিখিত উপাদানগুলির প্রয়োজন হবে:
- Arduino বোর্ড (যেমন, Uno)
- I2C ইন্টারফেস মডিউল সহ LCD1602 ডিসপ্লে
- HC-SR04 আল্ট্রাসনিক দূরত্ব সেন্সর
- জাম্পার তার
- ব্রেডবোর্ড (ঐচ্ছিক, সহজ সংযোগের জন্য)
LCD1602 এবং I2C বোঝা
LCD1602 একটি জনপ্রিয় ডিসপ্লে যা দুই লাইনে প্রতি লাইনে ১৬টি অক্ষর দেখাতে সক্ষম। এর পিছনের "I2C" মডিউলটি একটি উল্লেখযোগ্য সুবিধা কারণ এটি ডিসপ্লে নিয়ন্ত্রণের জন্য প্রয়োজনীয় পিনের সংখ্যা ৬ বা তার বেশি থেকে কমিয়ে মাত্র ২টি যোগাযোগের জন্য (SDA এবং SCL) এবং ২টি পাওয়ারের জন্য (VCC এবং GND) কমিয়ে দেয়। এই সরলীকরণ ওয়্যারিংকে অনেক পরিষ্কার করে তোলে এবং আপনার Arduino-এর মূল্যবান ডিজিটাল পিনগুলিকে অন্যান্য সেন্সরের জন্য মুক্ত করে দেয়, যেমন এই প্রজেক্টে ব্যবহৃত আল্ট্রাসনিক সেন্সর। (ভিডিওতে ০১:৩০ মিনিটে)
I2C মডিউলটিতে ডিসপ্লের কনট্রাস্ট সামঞ্জস্য করার জন্য একটি ছোট পটেনশিওমিটারও রয়েছে। আপনি যদি ডিসপ্লেতে পাওয়ার দেন এবং কিছুই না দেখেন, তবে টেক্সট দৃশ্যমান না হওয়া পর্যন্ত এই স্ক্রুটি ঘোরানোর চেষ্টা করুন। (ভিডিওতে ০২:৪৭ মিনিটে)
ওয়্যারিং গাইড
উপাদানগুলিকে সংযুক্ত করা সহজ। LCD-এর I2C মডিউলে চারটি পিন রয়েছে যা Arduino-এর সাথে সংযুক্ত করতে হবে। আল্ট্রাসনিক সেন্সরের জন্যও চারটি পিন রয়েছে।
সংযোগগুলির একটি বিবরণ এখানে দেওয়া হলো:
LCD1602 I2C মডিউল থেকে Arduino:
- GND থেকে Arduino-এর GND
- VCC থেকে Arduino-এর 5V
- SDA থেকে Arduino-এর A4
- SCL থেকে Arduino-এর A5
HC-SR04 আল্ট্রাসনিক সেন্সর থেকে Arduino:
- VCC থেকে Arduino-এর 5V
- Trig থেকে Arduino ডিজিটাল পিন 12
- Echo থেকে Arduino ডিজিটাল পিন 11
- GND থেকে Arduino-এর GND
এই প্রজেক্টের জন্য ওয়্যারিং ডায়াগ্রামটি ভিডিওতে উল্লেখ করা হয়েছে।
প্রয়োজনীয় লাইব্রেরি ইনস্টল করা
এই প্রজেক্টটি দুটি গুরুত্বপূর্ণ লাইব্রেরির উপর নির্ভর করে। প্রথমটি, LiquidCrystal_I2C, LCD নিয়ন্ত্রণের জন্য প্রয়োজন এবং এটি Arduino IDE-তে ডিফল্টভাবে অন্তর্ভুক্ত নয়। আপনি ভিডিও বিবরণে দেওয়া লিংক থেকে বা Robojax ওয়েবসাইট থেকে এটি ডাউনলোড করতে পারেন। (ভিডিওতে ০৬:১৬ মিনিটে)
দ্বিতীয় লাইব্রেরি, NewPing, আল্ট্রাসনিক সেন্সরের সাথে ইন্টারফেস করতে ব্যবহৃত হয়। এটি একটি পিং পাঠানো এবং ইকো সময় পড়ার প্রক্রিয়াকে সহজ করে। উভয় লাইব্রেরি Arduino IDE-এর লাইব্রেরি ম্যানেজারের মাধ্যমে Sketch -> Include Library -> Manage Libraries এ গিয়ে তাদের নাম অনুসন্ধান করে ইনস্টল করা যেতে পারে।
কোড ব্যাখ্যা
এই স্কেচটি LCD এবং আল্ট্রাসনিক সেন্সরের কার্যকারিতাকে একত্রিত করে। কোডটি আপনার নির্দিষ্ট সেটআপের জন্য সহজে কনফিগারযোগ্য হওয়ার জন্য গঠন করা হয়েছে।
কোডের শীর্ষে, আপনি মূল ভেরিয়েবলগুলি পাবেন যা আপনাকে সামঞ্জস্য করতে হতে পারে:
// ১৬ অক্ষর এবং ২ লাইনের ডিসপ্লের জন্য LCD ঠিকানা 0x27 সেট করুন
LiquidCrystal_I2C lcd(0x27, displayChars, displayRows);
#define TRIGGER_PIN 12 // আল্ট্রাসনিক সেন্সরের ট্রিগার পিনের সাথে যুক্ত Arduino পিন।
#define ECHO_PIN 11 // আল্ট্রাসনিক সেন্সরের ইকো পিনের সাথে যুক্ত Arduino পিন।
#define MAX_DISTANCE 190 // আমরা পিং করতে চাই সর্বোচ্চ দূরত্ব (সেন্টিমিটারে)।
- LCD ঠিকানা (0x27): এটি আপনার LCD মডিউলের I2C ঠিকানা। বেশিরভাগ মডিউল
0x27ব্যবহার করে, তবে কিছু0x3Fব্যবহার করতে পারে। আপনার ডিসপ্লেতে কিছু না দেখালে, সঠিক ঠিকানা খুঁজে পেতে এবং এই মানটি আপডেট করতে আপনাকে একটি I2C স্ক্যানার স্কেচ চালাতে হতে পারে। (ভিডিওতে ০৮:১১ মিনিটে) - TRIGGER_PIN এবং ECHO_PIN: এগুলি আল্ট্রাসনিক সেন্সরের Trig এবং Echo পিনের সাথে সংযুক্ত Arduino ডিজিটাল পিনগুলিকে সংজ্ঞায়িত করে। আপনি যদি ভিন্ন পিন ব্যবহার করেন, এই সংজ্ঞাগুলি পরিবর্তন করুন।
- MAX_DISTANCE: এটি সেন্টিমিটারে সর্বোচ্চ দূরত্ব নির্ধারণ করে যা সেন্সর পরিমাপ করবে। HC-SR04 ৪০০-৫০০ সেমি পর্যন্ত পরিমাপ করতে পারে, তবে কম মান নির্ধারণ করা রিডিংয়ের নির্ভুলতা এবং নির্ভরযোগ্যতা উন্নত করতে পারে, বিশেষ করে ছোট দূরত্বের জন্য।
loop() ফাংশনে, কোডটি নিম্নলিখিত ধাপগুলি সম্পাদন করে:
- এটি
sonar.ping_cm()ফাংশন ব্যবহার করে দূরত্ব পরিমাপ করে এবং তাdistanceভেরিয়েবলে সংরক্ষণ করে। - এটি LCD পরিষ্কার করে এবং প্রথম লাইনে "Robojax.com" টেক্সট প্রিন্ট করে।
- তারপর এটি কার্সার দ্বিতীয় লাইনে সেট করে এবং "Distance: " প্রিন্ট করে।
- অবশেষে, এটি পরিমাপ করা
distanceমান প্রিন্ট করতে দ্বিতীয় লাইনের অবস্থান 10-এ কার্সার সরায় এবং তারপর "cm" যোগ করে।
লুপের শেষে delay(200) নিয়ন্ত্রণ করে যে সেন্সর কত ঘন ঘন নতুন রিডিং নেয় এবং ডিসপ্লে আপডেট করে।
কোড প্রদর্শন
কোডটি আপনার Arduino-তে আপলোড করার পর, LCD আলোকিত হবে এবং দূরত্ব প্রদর্শন করা শুরু করবে। আপনি আপনার হাত বা কোনো বস্তু আল্ট্রাসোনিক সেন্সরের কাছাকাছি এবং দূরে সরিয়ে সেটআপটি পরীক্ষা করতে পারেন। স্ক্রিনের সংখ্যাটি রিয়েল-টাইমে আপডেট হওয়া উচিত, সেন্টিমিটারে দূরত্ব দেখিয়ে। (ভিডিওতে 38:07-এ)
এই ভিডিও থেকে সম্পর্কিত প্রকল্প
- পাঠ 20/31: Arduino-এর সাথে LCD1602 ব্যবহার করে টেক্সট প্রদর্শন | Robojax
- পাঠ 20/31: LCD স্ক্রিনে DHT11 থেকে তাপমাত্রা এবং আর্দ্রতা প্রদর্শন
- পাঠ 20/31: LCD1602-এ ভোল্টেজ প্রদর্শন
অধ্যায়
- [00:00] LCD1602-এর ভূমিকা এবং প্রকল্পের সারসংক্ষেপ
- [01:30] LCD1602 হার্ডওয়্যার এবং I2C মডিউল ব্যাখ্যা করা হয়েছে
- [03:14] LCD পিনআউট এবং I2C ঠিকানা কনফিগারেশন
- [05:28] LCD1602-এর জন্য ওয়্যারিং ডায়াগ্রাম
- [06:16] প্রয়োজনীয় LCD লাইব্রেরি ইনস্টল করা
- [07:24] LCD-তে টেক্সট প্রিন্ট করার জন্য মৌলিক কোড
- [08:11] আপনার LCD-এর I2C ঠিকানা খুঁজে বের করা
- [11:10] LCD উদাহরণ: জ্বলজ্বলে কার্সার এবং কাস্টম অক্ষর
- [18:51] LCD উদাহরণ: সিরিয়াল ডিসপ্লে এবং স্ক্রলিং টেক্সট
- [24:36] LCD-তে DHT11 তাপমাত্রা এবং আর্দ্রতা প্রদর্শন
- [33:00] LCD-তে পটেনশিওমিটার থেকে ভোল্টেজ প্রদর্শন
- [35:56] LCD-এর সাথে আল্ট্রাসোনিক সেন্সর কোড একত্রিত করা
- [38:07] আল্ট্রাসোনিক দূরত্ব ডিসপ্লের প্রদর্শন
/*
This sketch reads the distance using the ultrasonic sensor and displays on LCD1602
Download and resource page https://robojax.com/RJT878
watch video https://www.youtube.com/watch?v=NXAswOc_2zg
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const int displayChars =16;
const int displayRows =2;
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, displayChars, displayRows);
int shomar =0;
#include <NewPing.h>
#define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 190 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
int distance;
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
void setup() {
Serial.begin(9600); // Open serial monitor at 9600 baud to see ping results.
// Robojax code for LCD with I2C
// initialize the LCD,
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
}
void loop() {
distance = sonar.ping_cm();//get the distance in cm
lcd.clear();
lcd.print("Robojax.com");
lcd.setCursor (0,1);//set cursor to char 0 line 2
lcd.print("Distance: ");
lcd.setCursor (10,1);
lcd.print(distance);
lcd.print("cm");
delay(200);
}
আপনাকে যা প্রয়োজন হতে পারে
-
অ্যামাজনSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
অ্যামাজন
-
অ্যামাজন
-
অ্যামাজন
-
অ্যামাজন
সম্পদ ও রেফারেন্সসমূহ
-
ডকুমেন্টেশনDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
বাহ্যিকPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
ফাইলসমূহ📁
আর্ডুইনো লাইব্রেরি (জিপ)
-
SunFounder-এর 3-ইন-1 স্মার্ট কার লার্নিং কিট সোর্স কোড
3in1-kit-main-v2.zip12.80 MB
ব্যবহারকারীর ম্যানুয়াল
-
SunFounder 3-ইন-1 Arduino স্মার্ট কার সমাবেশ ম্যানুয়ালএই নথিটি SunFounder 3-ইন-1 Arduino স্মার্ট কার এর ধাপে ধাপে সমাবেশ দেখায়
SunFounder_car_assembly_manual.pdf1.20 MB