সুচিপত্র:

রাস্পবেরি পাই দিয়ে 3-অ্যাক্সিস জাইরোস্কোপ সেন্সর BMG160 এর ইন্টারফেসিং: 5 টি ধাপ
রাস্পবেরি পাই দিয়ে 3-অ্যাক্সিস জাইরোস্কোপ সেন্সর BMG160 এর ইন্টারফেসিং: 5 টি ধাপ

ভিডিও: রাস্পবেরি পাই দিয়ে 3-অ্যাক্সিস জাইরোস্কোপ সেন্সর BMG160 এর ইন্টারফেসিং: 5 টি ধাপ

ভিডিও: রাস্পবেরি পাই দিয়ে 3-অ্যাক্সিস জাইরোস্কোপ সেন্সর BMG160 এর ইন্টারফেসিং: 5 টি ধাপ
ভিডিও: Mini Computer/ছোট কিন্তু অসাধারণ কম্পিউটার 2024, জুলাই
Anonim
Image
Image

আজকের বিশ্বে, অর্ধেকেরও বেশি যুবক এবং শিশুরা গেমিংয়ের প্রতি অনুরক্ত এবং যারা এটির প্রতি অনুরাগী, তারা গেমিংয়ের প্রযুক্তিগত দিকগুলি দেখে মুগ্ধ হয়ে এই ডোমেইনে মোশন সেন্সিংয়ের গুরুত্ব জানে। আমরাও একই জিনিস দেখে বিস্মিত হয়েছি এবং শুধু বোর্ডে এটি আনতে, আমরা একটি জাইরোস্কোপ সেন্সর নিয়ে কাজ করার কথা ভেবেছিলাম যা কোন বস্তুর কৌণিক হার পরিমাপ করতে পারে। সুতরাং, কাজটি মোকাবেলা করার জন্য আমরা যে সেন্সরটি হাতে নিয়েছি তা হল BMG160। বিএমজি 160 একটি 16-বিট, ডিজিটাল, ট্রায়াক্সিয়াল, জাইরোস্কোপ সেন্সর যা তিনটি লম্বকক্ষ কক্ষের কৌণিক হার পরিমাপ করতে পারে।

এই টিউটোরিয়ালে, আমরা জাভাকে প্রোগ্রামিং ভাষা হিসাবে ব্যবহার করে রাস্পবেরি পাই এর সাথে BMG160 এর কাজ প্রদর্শন করতে যাচ্ছি।

হার্ডওয়্যার যে আপনি এই উদ্দেশ্যে প্রয়োজন হতে যাচ্ছে নিম্নরূপ:

1. BMG160

2. রাস্পবেরি পাই

3. I2C কেবল

4. রাস্পবেরি পাই এর জন্য I2C শিল্ড

5. ইথারনেট কেবল

ধাপ 1: BMG160 ওভারভিউ:

তুমি কি চাও..!!
তুমি কি চাও..!!

সর্বপ্রথম আমরা আপনাকে BMG160 সেন্সর মডিউল এবং যোগাযোগ প্রোটোকলের মৌলিক বৈশিষ্ট্যগুলির সাথে পরিচিত করতে চাই।

BMG160 মূলত একটি 16-বিট, ডিজিটাল, ট্রায়াক্সিয়াল, জাইরোস্কোপ সেন্সর যা কৌণিক হার পরিমাপ করতে পারে। এটি তিনটি লম্ব ঘরের মাত্রা, x-, y- এবং z- অক্ষের মধ্যে কৌণিক হার গণনা করতে এবং সংশ্লিষ্ট আউটপুট সংকেত প্রদান করতে সক্ষম। এটি I2C যোগাযোগ প্রোটোকল ব্যবহার করে রাস্পবেরি পাই বোর্ডের সাথে যোগাযোগ করতে পারে। এই বিশেষ মডিউলটি ভোক্তা অ্যাপ্লিকেশনগুলির পাশাপাশি শিল্পের উদ্দেশ্যে প্রয়োজনীয়তা পূরণের জন্য ডিজাইন করা হয়েছে।

সেন্সর যে কমিউনিকেশন প্রোটোকলের উপর কাজ করে তা হল I2C। I2C মানে ইন্টার-ইন্টিগ্রেটেড সার্কিট। এটি একটি যোগাযোগ প্রোটোকল যেখানে যোগাযোগ SDA (সিরিয়াল ডেটা) এবং এসসিএল (সিরিয়াল ক্লক) লাইনের মাধ্যমে হয়। এটি একই সময়ে একাধিক ডিভাইস সংযুক্ত করার অনুমতি দেয়। এটি একটি সহজ এবং সবচেয়ে কার্যকর যোগাযোগ প্রোটোকল।

ধাপ 2: আপনার যা প্রয়োজন..

তুমি কি চাও..!!
তুমি কি চাও..!!
তুমি কি চাও..!!
তুমি কি চাও..!!
তুমি কি চাও..!!
তুমি কি চাও..!!

আমাদের লক্ষ্য পূরণের জন্য আমাদের যে উপকরণগুলির প্রয়োজন তা নিম্নলিখিত হার্ডওয়্যার উপাদানগুলি অন্তর্ভুক্ত করে:

1. BMG160

2. রাস্পবেরি পাই

3. I2C কেবল

4. রাস্পবেরি পাই এর জন্য I2C শিল্ড

5. ইথারনেট কেবল

ধাপ 3: হার্ডওয়্যার সংযুক্তি:

হার্ডওয়্যার সংযুক্তি
হার্ডওয়্যার সংযুক্তি
হার্ডওয়্যার সংযুক্তি
হার্ডওয়্যার সংযুক্তি

হার্ডওয়্যার হুকআপ বিভাগটি মূলত সেন্সর এবং রাস্পবেরি পাই এর মধ্যে প্রয়োজনীয় তারের সংযোগ ব্যাখ্যা করে। কাঙ্ক্ষিত আউটপুটের জন্য যে কোনো সিস্টেমে কাজ করার সময় সঠিক সংযোগ নিশ্চিত করা মৌলিক প্রয়োজনীয়তা। সুতরাং, প্রয়োজনীয় সংযোগগুলি নিম্নরূপ:

BMG160 I2C এর উপর কাজ করবে। সেন্সরের প্রতিটি ইন্টারফেসকে কিভাবে ওয়্যার আপ করতে হয় তা দেখানো হচ্ছে ওয়্যারিং ডায়াগ্রামের উদাহরণ।

বাক্সের বাইরে, বোর্ডটি একটি I2C ইন্টারফেসের জন্য কনফিগার করা হয়েছে, যেমন আপনি অন্যথায় অজ্ঞেয়বাদী হলে আমরা এই হুকআপটি ব্যবহার করার পরামর্শ দিই। আপনার প্রয়োজন শুধু চারটি তারের!

VCC, Gnd, SCL এবং SDA পিনের জন্য মাত্র চারটি সংযোগ প্রয়োজন এবং এগুলি I2C তারের সাহায্যে সংযুক্ত।

এই সংযোগগুলি উপরের ছবিতে প্রদর্শিত হয়েছে।

ধাপ 4: জাভা কোড ব্যবহার করে 3-অক্ষ জাইরোস্কোপ পরিমাপ:

3-অ্যাক্সিস জাইরোস্কোপ পরিমাপ জাভা কোড ব্যবহার করে
3-অ্যাক্সিস জাইরোস্কোপ পরিমাপ জাভা কোড ব্যবহার করে
3-অ্যাক্সিস জাইরোস্কোপ পরিমাপ জাভা কোড ব্যবহার করে
3-অ্যাক্সিস জাইরোস্কোপ পরিমাপ জাভা কোড ব্যবহার করে

রাস্পবেরি পাই ব্যবহারের সুবিধা হল, এটি আপনাকে প্রোগ্রামিং ভাষার নমনীয়তা প্রদান করে যেখানে আপনি সেন্সরকে ইন্টারফেস করার জন্য বোর্ডকে প্রোগ্রাম করতে চান। এই বোর্ডের এই সুবিধা কাজে লাগিয়ে, আমরা এখানে জাভাতে এর প্রোগ্রামিং প্রদর্শন করছি। BMG160 এর জন্য জাভা কোডটি আমাদের গিথুব কমিউনিটি থেকে ডাউনলোড করা যায় যা Dcube Store কমিউনিটি।

পাশাপাশি ব্যবহারকারীদের স্বাচ্ছন্দ্যের জন্য, আমরা এখানে কোডটিও ব্যাখ্যা করছি: কোডিংয়ের প্রথম ধাপ হিসাবে আপনাকে জাভা ক্ষেত্রে pi4j লাইব্রেরি ডাউনলোড করতে হবে, কারণ এই লাইব্রেরি কোডে ব্যবহৃত ফাংশনগুলিকে সমর্থন করে। সুতরাং, লাইব্রেরি ডাউনলোড করতে আপনি নিম্নলিখিত লিঙ্কটি দেখতে পারেন:

pi4j.com/install.html

আপনি এই সেন্সরের জন্য এখানে কাজ করা জাভা কোডটি অনুলিপি করতে পারেন:

আমদানি com.pi4j.io.i2c. I2CBus;

com.pi4j.io.i2c. I2CDevice আমদানি করুন;

আমদানি com.pi4j.io.i2c. I2CFactory;

java.io. IOException আমদানি করুন;

পাবলিক ক্লাস BMG160

{

পাবলিক স্ট্যাটিক অকার্যকর প্রধান (স্ট্রিং আর্গস ) ব্যতিক্রম ছুঁড়ে দেয়

{

// I2C বাস তৈরি করুন

I2CBus বাস = I2CFactory.getInstance (I2CBus. BUS_1);

// I2C ডিভাইস পান, BMG160 I2C ঠিকানা হল 0x68 (104)

I2CDevice ডিভাইস = bus.getDevice (0x68);

// পরিসীমা নিবন্ধন নির্বাচন করুন

// পূর্ণ স্কেল পরিসীমা কনফিগার করুন, 2000 ডিপিএস

device.write (0x0F, (বাইট) 0x80);

// ব্যান্ডউইথ রেজিস্টার নির্বাচন করুন

// ব্যান্ডউইথ 200 Hz

device.write (0x10, (বাইট) 0x04);

Thread.sleep (500);

// 6 বাইট ডেটা পড়ুন

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb

বাইট ডেটা = নতুন বাইট [6];

device.read (0x02, data, 0, 6);

// ডেটা রূপান্তর

int xGyro = ((data [1] & 0xFF) * 256 + (data [0] & 0xFF));

যদি (xGyro> 32767)

{

xGyro -= 65536;

}

int yGyro = ((data [3] & 0xFF) * 256 + (data [2] & 0xFF));

যদি (yGyro> 32767)

{

yGyro -= 65536;

}

int zGyro = ((data [5] & 0xFF) * 256 + (data [4] & 0xFF));

যদি (zGyro> 32767)

{

zGyro -= 65536;

}

// স্ক্রিনে আউটপুট ডেটা

System.out.printf ("ঘূর্ণনের X- অক্ষ: %d %n", xGyro);

System.out.printf ("ঘূর্ণনের Y- অক্ষ: %d %n", yGyro);

System.out.printf ("ঘূর্ণনের Z- অক্ষ: %d %n", zGyro);

}

}

লাইব্রেরি যা সেন্সর এবং বোর্ডের মধ্যে i2c যোগাযোগের সুবিধা দেয় তা হল pi4j, এর বিভিন্ন প্যাকেজ I2CBus, I2CDevice এবং I2CFactory সংযোগ স্থাপনে সাহায্য করে।

আমদানি com.pi4j.io.i2c. I2CBus; আমদানি com.pi4j.io.i2c. I2CDevice; আমদানি com.pi4j.io.i2c. I2CFactory; java.io. IOException আমদানি করুন;

কোডের এই অংশটি সেন্সরকে রাইট () ফাংশন ব্যবহার করে সংশ্লিষ্ট কমান্ড লিখে কৌণিক হার পরিমাপ করে এবং তারপর রিড () ফাংশন ব্যবহার করে ডেটা পড়া হয়।

// পরিসীমা রেজিস্টার নির্বাচন করুন // পূর্ণ স্কেল পরিসীমা কনফিগার করুন, 2000 dps device.write (0x0F, (byte) 0x80); // ব্যান্ডউইথ রেজিস্টার নির্বাচন করুন // Bandwidth 200 Hz device.write (0x10, (byte) 0x04); Thread.sleep (500);

// 6 বাইট ডেটা পড়ুন

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb byte data = new byte [6]; device.read (0x02, data, 0, 6);

সেন্সর থেকে প্রাপ্ত ডেটা নিম্নোক্ত ব্যবহার করে যথাযথ বিন্যাসে রূপান্তরিত হয়:

int xGyro = ((data [1] & 0xFF) * 256 + (data [0] & 0xFF)); যদি (xGyro> 32767) {xGyro -= 65536; } int yGyro = ((data [3] & 0xFF) * 256 + (data [2] & 0xFF)); যদি (yGyro> 32767) {yGyro -= 65536; } int zGyro = ((data [5] & 0xFF) * 256 + (data [4] & 0xFF)); যদি (zGyro> 32767) {zGyro -= 65536; }

আউটপুট নিম্নলিখিত বিন্যাসে System.out.println () ফাংশন ব্যবহার করে মুদ্রিত হয়।

System.out.println ("ঘূর্ণনের X- অক্ষ: %d %n", xGyro); System.out.println ("ঘূর্ণনের Y- অক্ষ: %d %n", yGyro); System.out.println ("ঘূর্ণনের Z- অক্ষ: %d %n", zGyro);

সেন্সরের আউটপুট উপরের ছবিতে দেখানো হয়েছে।

ধাপ 5: অ্যাপ্লিকেশন:

অ্যাপ্লিকেশন
অ্যাপ্লিকেশন

সেল ফোন, হিউম্যান মেশিন ইন্টারফেস ডিভাইসের মতো ডিভাইসে বিএমজি 160 এর বিভিন্ন ধরণের অ্যাপ্লিকেশন রয়েছে। এই সেন্সর মডিউলটি ইমেজ স্টেবিলাইজেশন (ডিএসসি এবং ক্যামেরা-ফোন), গেমিং এবং পয়েন্টিং ডিভাইসের মতো ভোক্তা অ্যাপ্লিকেশনগুলির প্রয়োজনীয়তা পূরণের জন্য ডিজাইন করা হয়েছে। এটি এমন সিস্টেমেও নিযুক্ত করা হয় যার জন্য অঙ্গভঙ্গি স্বীকৃতি এবং অভ্যন্তরীণ নেভিগেশনে ব্যবহৃত সিস্টেমগুলির প্রয়োজন হয়।

প্রস্তাবিত: