Arduino ন্যানো - MPL3115A2 যথার্থ Altimeter সেন্সর টিউটোরিয়াল: 4 ধাপ
Arduino ন্যানো - MPL3115A2 যথার্থ Altimeter সেন্সর টিউটোরিয়াল: 4 ধাপ
Anonim
Image
Image

MPL3115A2 সঠিক চাপ/উচ্চতা এবং তাপমাত্রার তথ্য প্রদানের জন্য I2C ইন্টারফেস সহ একটি MEMS চাপ সেন্সর নিয়োগ করে। সেন্সর আউটপুট একটি উচ্চ রেজল্যুশন 24-বিট এডিসি দ্বারা ডিজিটালাইজড হয়। অভ্যন্তরীণ প্রক্রিয়াকরণ হোস্ট এমসিইউ সিস্টেম থেকে ক্ষতিপূরণ কাজগুলি সরিয়ে দেয়। এটি মাত্র 0.05 kPa তে পরিবর্তন সনাক্ত করতে সক্ষম যা উচ্চতায় 0.3 মিটার পরিবর্তনের সমান। এখানে Arduino Nano এর সাথে তার প্রদর্শন।

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

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

1. আরডুইনো ন্যানো

2. MPL3115A2

3. I²C কেবল

4. Arduino Nano এর জন্য I²C শিল্ড

ধাপ 2: সংযোগ:

সংযোগ
সংযোগ
সংযোগ
সংযোগ
সংযোগ
সংযোগ
সংযোগ
সংযোগ

আরডুইনো ন্যানোর জন্য একটি I2C ieldাল নিন এবং আলতো করে ন্যানোর পিনের উপরে চাপ দিন।

তারপর I2C তারের এক প্রান্ত MPL3115A2 সেন্সরের সাথে এবং অন্য প্রান্তটি I2C ieldালের সাথে সংযুক্ত করুন।

উপরের ছবিতে কানেকশন দেখানো হয়েছে।

ধাপ 3: কোড:

কোড
কোড

MPL3115A2 এর জন্য arduino কোডটি আমাদের github repository-DCUBE স্টোর থেকে ডাউনলোড করা যাবে।

এখানে একই জন্য লিঙ্ক:

github.com/DcubeTechVentures/MPL3115A2/blob/master/Arduino/MPL3115A2.ino

Arduino বোর্ডের সাথে সেন্সরের I2c যোগাযোগের সুবিধার্থে আমরা লাইব্রেরি Wire.h অন্তর্ভুক্ত করি।

আপনি এখান থেকে কোডটি অনুলিপি করতে পারেন, এটি নিম্নরূপ দেওয়া হয়েছে:

// একটি স্বাধীন ইচ্ছা লাইসেন্স দিয়ে বিতরণ করা হয়।

// এটি যে কোন উপায়ে ব্যবহার করুন, মুনাফা বা বিনামূল্যে, যদি এটি তার সংশ্লিষ্ট কাজের লাইসেন্সের সাথে খাপ খায়।

// MPL3115A2

// এই কোডটি MPL3115A2_I2CS I2C মিনি মডিউলের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে

#অন্তর্ভুক্ত

// MPL3115A2 I2C ঠিকানা হল 0x60 (96)

#সংযোজনকারী 0x60

অকার্যকর সেটআপ()

{

// I2C যোগাযোগ শুরু করুন

Wire.begin ();

// সিরিয়াল কমিউনিকেশন শুরু করুন, বড রেট = 9600 সেট করুন

Serial.begin (9600);

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// নিয়ন্ত্রণ নিবন্ধন নির্বাচন করুন

Wire.write (0x26);

// অ্যাক্টিভ মোড, ওএসআর = 128, আলটিমিটার মোড

Wire.write (0xB9);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// ডাটা কনফিগারেশন রেজিস্টার নির্বাচন করুন

Wire.write (0x13);

// উচ্চতা, চাপ, তাপমাত্রার জন্য ডেটা প্রস্তুত ইভেন্ট সক্ষম

Wire.write (0x07);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

বিলম্ব (300);

}

অকার্যকর লুপ ()

{

স্বাক্ষরবিহীন int ডেটা [6];

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// নিয়ন্ত্রণ নিবন্ধন নির্বাচন করুন

Wire.write (0x26);

// অ্যাক্টিভ মোড, ওএসআর = 128, আলটিমিটার মোড

Wire.write (0xB9);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

বিলম্ব (1000);

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// ডাটা রেজিস্টার নির্বাচন করুন

Wire.write (0x00);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

// 6 বাইট ডেটা অনুরোধ করুন

Wire.requestFrom (Addr, 6);

// 0x00 (00) ঠিকানা থেকে 6 বাইট ডেটা পড়ুন

// অবস্থা, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb

যদি (Wire.available () == 6)

{

ডেটা [0] = ওয়্যার.রেড ();

ডেটা [1] = ওয়্যার.রেড ();

ডেটা [2] = ওয়্যার.রেড ();

ডেটা [3] = ওয়্যার.রেড ();

তথ্য [4] = Wire.read ();

তথ্য [5] = ওয়্যার.রেড ();

}

// ডেটাকে 20-বিটে রূপান্তর করুন

int tHeight = (((long) (data [1] * (long) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16);

int temp = ((data [4] * 256) + (data [5] & 0xF0)) / 16;

ভাসমান উচ্চতা = tHeight / 16.0;

ভাসা cTemp = (temp / 16.0);

ফ্লোট fTemp = cTemp * 1.8 + 32;

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// নিয়ন্ত্রণ নিবন্ধন নির্বাচন করুন

Wire.write (0x26);

// সক্রিয় মোড, ওএসআর = 128, ব্যারোমিটার মোড

Wire.write (0x39);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

বিলম্ব (1000);

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// ডাটা রেজিস্টার নির্বাচন করুন

Wire.write (0x00);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

// 4 বাইট ডেটার অনুরোধ করুন

Wire.requestFrom (Addr, 4);

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

// স্ট্যাটাস, প্রেস এমএসবি 1, প্রেস এমএসবি, প্রেস এলএসবি

যদি (Wire.available () == 4)

{

ডেটা [0] = ওয়্যার.রেড ();

ডেটা [1] = ওয়্যার.রেড ();

ডেটা [2] = ওয়্যার.রেড ();

ডেটা [3] = ওয়্যার.রেড ();

}

// ডেটাকে 20-বিটে রূপান্তর করুন

long pres = (((long) data [1] * (long) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16;

ভাসা চাপ = (প্রেস / 4.0) / 1000.0;

// সিরিয়াল মনিটরে আউটপুট ডেটা

সিরিয়াল.প্রিন্ট ("উচ্চতা:");

সিরিয়াল.প্রিন্ট (উচ্চতা);

Serial.println ("m");

সিরিয়াল.প্রিন্ট ("চাপ:");

সিরিয়াল.প্রিন্ট (চাপ);

Serial.println ("kPa");

সিরিয়াল.প্রিন্ট ("সেলসিয়াস তাপমাত্রা:");

Serial.print (cTemp);

Serial.println ("C");

সিরিয়াল.প্রিন্ট ("ফারেনহাইটে তাপমাত্রা:");

Serial.print (fTemp);

Serial.println ("F");

বিলম্ব (500);

}

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

MPL3115A2 এর বিভিন্ন অ্যাপ্লিকেশনের মধ্যে রয়েছে উচ্চ নির্ভুলতা Altimetry, স্মার্টফোন/ট্যাবলেট, ব্যক্তিগত ইলেকট্রনিক্স Altimetry ইত্যাদি এটি জিপিএস ডেড রিকোনিং, জরুরী পরিষেবার জন্য জিপিএস বর্ধন, ম্যাপ অ্যাসিস্ট, নেভিগেশনের পাশাপাশি ওয়েদার স্টেশন যন্ত্রপাতি অন্তর্ভুক্ত করতে পারে।

প্রস্তাবিত: