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

আরডুইনো কোড এবং শার্প আইআর দূরত্ব মডিউলের জন্য ভিডিও এলসিডি১৬০২ এবং আই২সি মডিউল সহ

আরডুইনো কোড এবং শার্প আইআর দূরত্ব মডিউলের জন্য ভিডিও এলসিডি১৬০২ এবং আই২সি মডিউল সহ

এই প্রজেক্ট গাইডটি আপনাকে শার্প ইনফ্রারেড (IR) দূরত্ব সেন্সর এবং একটি LCD1602 ডিসপ্লে ব্যবহার করে একটি সহজ অথচ কার্যকর দূরত্ব পরিমাপ সিস্টেম তৈরি করতে সাহায্য করবে। এই সেটআপটি আপনাকে একটি নির্দিষ্ট পরিসরের মধ্যে দূরত্ব সঠিকভাবে পরিমাপ করতে এবং সরাসরি স্ক্রিনে প্রদর্শন করতে দেয়, যা বিভিন্ন DIY ইলেকট্রনিক্স অ্যাপ্লিকেশনের জন্য আদর্শ।

শার্প অ্যানালগ আউটপুট মডিউল: 
2 থেকে 15 সেমি GP2Y0A51SK0F 
4 থেকে 30 সেমি GP2Y0A41SK0F / GP2Y0AF30 সিরিজ 
10 থেকে 80 সেমি GP2Y0A21YK0F 
10 থেকে 150 সেমি GP2Y0A60SZLF 
20 থেকে 150 সেমি GP2Y0A02YK0F 
100 থেকে 550 সেমি GP2Y0A710K0F

Sharpt IR distance sensor

এই সিস্টেমের জন্য ব্যবহারিক উদাহরণ এবং প্রজেক্ট আইডিয়াগুলির মধ্যে রয়েছে:

  • বাম্পারের ক্ষতি রোধ করতে একটি স্বয়ংক্রিয় পার্কিং সহায়তা সিস্টেম তৈরি করা।
  • ট্যাংক বা কূপের জন্য একটি সহজ জলস্তর সেন্সর তৈরি করা।
  • একটি নন-কন্টাক্ট লিকুইড ডিসপেনসার তৈরি করা।
  • নৈকট্য শনাক্ত করে একটি মৌলিক নিরাপত্তা অ্যালার্ম বাস্তবায়ন করা।
  • হপার বা বিনের জন্য ফিল-লেভেল ইন্ডিকেটর তৈরি করা।
  • ছোট রোবট বা RC যানবাহনের জন্য সংঘর্ষ এড়ানোর সিস্টেম ডিজাইন করা।

হার্ডওয়্যার/কম্পোনেন্ট

এই প্রজেক্টটি সম্পূর্ণ করতে আপনার নিম্নলিখিত উপাদানগুলির প্রয়োজন হবে:

  • Arduino Uno বা সামঞ্জস্যপূর্ণ বোর্ড
  • শার্প ইনফ্রারেড দূরত্ব সেন্সর (মডেল GP2Y0A41SK0F, 4 থেকে 30 সেমি পরিমাপ করে)
  • I2C মডিউল সহ LCD1602 (সহজ তারের সংযোগের জন্য)
  • ব্রেডবোর্ড (ঐচ্ছিক, প্রোটোটাইপিংয়ের জন্য)
  • জাম্পার তার
  • Arduino পাওয়ার এবং প্রোগ্রামিংয়ের জন্য USB কেবল

ওয়্যারিং গাইড

Arduino wiring for Sharp IR sensor with LCD1602
Arduino wiring for Sharp IR sensor with LCD1602

শার্প IR সেন্সর এবং I2C মডিউল সহ LCD1602 কে আপনার Arduino এর সাথে সংযুক্ত করা সহজ, কারণ I2C মডিউলটি LCD এর জন্য প্রয়োজনীয় তারের সংখ্যা কমিয়ে দেয়।

শার্প IR সেন্সরের তিনটি তার রয়েছে: লাল (5V), কালো (গ্রাউন্ড), এবং হলুদ (আউটপুট)। লাল তারটি Arduino এর 5V পিনে, কালো তারটি Arduino এর যেকোনো GND পিনে এবং হলুদ আউটপুট তারটি Arduino এর অ্যানালগ পিন A0-তে সংযুক্ত করুন (ভিডিওতে 03:55)।

I2C মডিউল সহ LCD1602 এর চারটি তার রয়েছে: VCC, GND, SDA, এবং SCL। VCC পিনটি Arduino এর 5V-তে এবং GND পিনটি Arduino এর GND-তে সংযুক্ত করুন। SDA (সিরিয়াল ডেটা লাইন) তারটি Arduino এর অ্যানালগ পিন A4-তে এবং SCL (সিরিয়াল ক্লক লাইন) তারটি Arduino এর অ্যানালগ পিন A5-তে সংযুক্ত করা উচিত (ভিডিওতে 02:42)।

কোড ব্যাখ্যা

প্রদত্ত Arduino কোডটি দুটি প্রধান লাইব্রেরি ব্যবহার করে: Wire.h I2C যোগাযোগের জন্য এবং LiquidCrystal_I2C.h LCD নিয়ন্ত্রণের জন্য, এবং SharpIR.h শার্প IR সেন্সরের জন্য। কোডের ব্যবহারকারী-কনফিগারযোগ্য অংশগুলি মূলত সেন্সর সংজ্ঞা এবং LCD ইনিশিয়ালাইজেশনের সাথে সম্পর্কিত।

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// 16 অক্ষর এবং 2 লাইনের ডিসপ্লের জন্য LCD ঠিকানা 0x27 সেট করুন
LiquidCrystal_I2C lcd(0x27, 16, 2);

LiquidCrystal_I2C lcd(0x27, 16, 2); লাইনটি LCD অবজেক্টটি ইনিশিয়ালাইজ করে। প্রথম প্যারামিটার, 0x27 (ভিডিওতে 03:26), বেশিরভাগ PCF8574-ভিত্তিক I2C LCD মডিউলের জন্য ডিফল্ট I2C ঠিকানা। যদি আপনার LCD কাজ না করে, তাহলে আপনাকে এর সঠিক ঠিকানা খুঁজে বের করতে হতে পারে (সাধারণ বিকল্প হল 0x3F)। দ্বিতীয় প্যারামিটার, 16, নির্দিষ্ট করে যে আপনার LCD-তে প্রতি লাইনে 16টি অক্ষর রয়েছে, এবং তৃতীয় প্যারামিটার, 2, নির্দেশ করে যে এতে 2টি লাইন রয়েছে।

#include <SharpIR.h>

#define IR A0 // শার্প IR সিগন্যাল পিন সংজ্ঞায়িত করুন
#define model 430 // IR মডিউলের মডেল
// Robojax.com এর জন্য শার্প IR কোড
// ir: যে পিনে আপনার সেন্সর সংযুক্ত
// model: একটি int যা আপনার সেন্সর নির্ধারণ করে:
/*
 * GP2Y0A02YK0F --> "20150"
 GP2Y0A21YK --> "1080"
 GP2Y0A710K0F --> "100500"
  GP2YA41SK0F --> "430"
 */

SharpIR SharpIR(IR, model);

এই লাইনগুলি শার্প IR সেন্সর সেট আপ করে। #define IR A0 Arduino অ্যানালগ পিনটি সংজ্ঞায়িত করে যেখানে শার্প IR সেন্সরের আউটপুট তারটি সংযুক্ত। #define model 430 (ভিডিওতে 04:27) অত্যন্ত গুরুত্বপূর্ণ কারণ এটি আপনার শার্প IR সেন্সরের সঠিক মডেল নির্দিষ্ট করে। লাইব্রেরিটি সেন্সরের অ্যানালগ ভোল্টেজ আউটপুট থেকে সেন্টিমিটারে দূরত্বে সঠিক গাণিতিক রূপান্তর প্রয়োগ করতে এই মডেল নম্বরটি ব্যবহার করে। মন্তব্য ব্লকটি বিভিন্ন শার্প IR মডেল এবং তাদের সংশ্লিষ্ট পূর্ণসংখ্যার মান তালিকাভুক্ত করে যা এখানে ব্যবহার করা উচিত। উদাহরণস্বরূপ, যদি আপনি একটি GP2Y0A21YK ব্যবহার করেন, তাহলে আপনাকে 430 কে 1080 এ পরিবর্তন করতে হবে।

void setup()
{
  lcd.begin();
  lcd.backlight();
}

setup() ফাংশনে, lcd.begin() LCD ইনিশিয়ালাইজ করে, এবং lcd.backlight() এর ব্যাকলাইট চালু করে, যা ডিসপ্লেটিকে দৃশ্যমান করে তোলে।

void loop()
{
  lcd.clear();
  lcd.print("Robojax IR Test");
  lcd.setCursor (0,1); // ২য় লাইনের শুরুতে যান
  int dis=SharpIR.distance();// সেমিতে দূরত্ব পায়
  String distance = String(dis);
  distance ="Distance: "+distance+"cm";
  lcd.print(distance);
  delay(500);
}

loop() ফাংশনের ভিতরে:

  • lcd.clear(); ডিসপ্লেতে আগের যেকোনো লেখা মুছে ফেলে।
  • lcd.print("Robojax IR Test"); প্রথম লাইনে একটি স্থির বার্তা প্রিন্ট করে।
  • lcd.setCursor (0,1); কার্সরকে দ্বিতীয় লাইনের শুরুতে নিয়ে যায় (0 হলো প্রথম কলাম, 1 হলো দ্বিতীয় লাইন, কারণ লাইনগুলো 0-ভিত্তিক)।
  • int dis=SharpIR.distance(); SharpIR লাইব্রেরি থেকে distance() ফাংশন কল করে সেন্সরের মান পড়ে এবং সেটিকে সেন্টিমিটারে দূরত্ব নির্দেশকারী একটি পূর্ণসংখ্যায় রূপান্তর করে (ভিডিওতে 05:06)। এটি পরিমাপ পাওয়ার মূল ফাংশন।
  • String distance = String(dis); পূর্ণসংখ্যার দূরত্বকে একটি স্ট্রিংয়ে রূপান্তর করে, কারণ প্রিন্ট করার সময় পূর্ণসংখ্যাকে সরাসরি স্ট্রিংয়ের সাথে যুক্ত করা যায় না।
  • distance ="Distance: "+distance+"cm"; স্ট্রিংটি ফরম্যাট করে মানের আগে "Distance: " এবং পরে "cm" যোগ করে।
  • lcd.print(distance); ফরম্যাট করা দূরত্বের স্ট্রিংটি LCD-তে প্রদর্শন করে।
  • delay(500); 500 মিলিসেকেন্ডের বিরতি দেয় (ভিডিওতে 06:00)। Sharp সেন্সরের নির্ভুলতা এবং স্থিতিশীলতার জন্য এই বিরতি গুরুত্বপূর্ণ। আপনি এই মানটি সামঞ্জস্য করতে পারেন: এটি বাড়ালে নির্ভুলতা উন্নত হতে পারে কিন্তু আপডেট ধীর হবে, আর কমালে আপডেট দ্রুত হবে কিন্তু নির্ভুলতা কমতে পারে।

লাইভ প্রজেক্ট/প্রদর্শন

একবার উপাদানগুলো সংযুক্ত হয়ে গেলে এবং কোডটি আপনার Arduino-তে আপলোড করা হলে, সিস্টেমটি দূরত্ব পরিমাপ এবং প্রদর্শন শুরু করবে। প্রজেক্টটি কাছাকাছি দূরত্বে সঠিক পরিমাপ দেখায়, উদাহরণস্বরূপ, বস্তুটি 12 সেমি দূরে থাকলে 12 সেমি দেখায় (ভিডিওতে 00:31) এবং 10 সেমি দূরত্বে 10 সেমি দেখায় (ভিডিওতে 00:37)।

তবে, বস্তুটি আরও দূরে সরে গেলে, বিশেষ করে 15-20 সেমির বেশি, নির্ভুলতা কমতে পারে। উদাহরণস্বরূপ, 20 সেমিতে, ডিসপ্লে 21 সেমি দেখাতে পারে (ভিডিওতে 07:06), এবং 25 সেমিতে, এটি 28 বা 29 সেমি পড়তে পারে (ভিডিওতে 07:32)। এই আচরণ এই ইনফ্রারেড সেন্সরগুলোর বৈশিষ্ট্য। Sharp IR সেন্সর একটি অ্যানালগ ভোল্টেজ আউটপুট দেয় যা দূরত্বের সাথে পরিবর্তিত হয়: দূরত্ব বাড়লে, আউটপুট ভোল্টেজ কমে যায় (ভিডিওতে 07:56)।

দূরত্ব এবং ভোল্টেজ আউটপুটের মধ্যে সম্পর্ক অ-রৈখিক, বিশেষ করে সেন্সরের পরিসরের চরম প্রান্তে। এই অ-রৈখিকতার কারণেই `SharpIR` লাইব্রেরিটি কার্যকর, কারণ এতে ক্যালিব্রেশন ডেটা থাকে যা এই পরিবর্তনশীল ভোল্টেজগুলোকে আরও সঠিক দূরত্বের রিডিংয়ে রূপান্তর করে। দীর্ঘ পরিসরে উচ্চতর নির্ভুলতা প্রয়োজন এমন অ্যাপ্লিকেশনের জন্য, সেই দূরত্বের জন্য ডিজাইন করা একটি ভিন্ন Sharp IR মডেল বেছে নেওয়া বা কাস্টম ক্যালিব্রেশন কার্ভ প্রয়োগ করা প্রয়োজন হতে পারে।

অধ্যায়সমূহ

  • [00:06] প্রজেক্টের ভূমিকা এবং ওভারভিউ
  • [01:10] Sharp IR সেন্সরের বিবরণ এবং পিনআউট
  • [02:09] LCD I2C মডিউল ওয়্যারিং
  • [02:58] Arduino কোড ব্যাখ্যা
  • [06:36] দূরত্ব পরিমাপ প্রদর্শন
  • [07:47] সেন্সরের বৈশিষ্ট্য এবং নির্ভুলতার সীমাবদ্ধতা
  • [08:48] সমাপনী মন্তব্য এবং সম্পদ

ছবি

LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
Sharpt IR distance sensor GP2Y0A21YK0F
Sharpt IR distance sensor GP2Y0A21YK0F
Sharpt IR distance sensor
Sharpt IR distance sensor GP2Y0A21YK0F
Arduino wiring for Sharp IR sensor with LCD1602
Arduino wiring for Sharp IR sensor with LCD1602
70-This is the Arduino code and video for a Sharp Infrared Sensor Module with LCD1602 and I2C.
ভাষা: C++
/*
 * Sharp IR  555 (infrared) distance measurement module with LCD1602 and I2C for Arduino
 * Measures the distance in cm.

 * Watch the video https://youtu.be/RHgMwtKLEnE

 *  * 

Original library: https://github.com/guillaume-rico/SharpIR


// Written and updated by Ahmad for Robojax.com
// on January 3, 2018 at 20:01 in Ajax, Ontario, Canada
// Get this code and other Arduino codes from Robojax.com
// Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
// all in one place. 

If you found this tutorial helpful, please support me so I can continue creating 
content like this. 

or make a donation using PayPal http://robojax.com/L/?id=64

 *  * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been downloaded from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

*/




#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);

///////////////////***** start of Sharp IR
#include <SharpIR.h>

#define IR A0 // define Sharp IR signal pin
#define model 430 // the model of the IR module
// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
// model: an int that determines your sensor:
/*
 * GP2Y0A02YK0F --> "20150"
 GP2Y0A21YK --> "1080"
 GP2Y0A710K0F --> "100500"
  GP2YA41SK0F --> "430"
 */

SharpIR SharpIR(IR, model);
/////////////////////**** end of Sharp IR

void setup()
{
  // Robojax code for LCD with I2C
  // initialize the LCD, 
  lcd.begin();
 
  // Turn on the backlight and print a message.
  lcd.backlight();
  // Robojax code for LCD with I2C


}

void loop()
{
  
  //start of loop Robojax code for LCD with I2C
  lcd.clear();
  lcd.print("Robojax IR Test");
  lcd.setCursor (0,1); // go to start of 2nd line
 int dis=SharpIR.distance();// gets the distance in cm
 String distance = String(dis);
 distance ="Distance: "+distance+"cm";
 lcd.print(distance);
  //lcd.print(millis() / 1000);
  delay(500);
 //end of loopcode Robojax code for LCD with I2C
}

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

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

এখনো কোনো সম্পদ নেই।

ফাইলসমূহ📁

আর্ডুইনো লাইব্রেরি (জিপ)

ডেটাশিট (পিডিএফ)

ফ্রিটজিং ফাইল

অন্যান্য ফাইলগুলি