Bmp180 arduino এর সাথে সংযোগ করুন। আরডুইনোতে BMP180 সেন্সর সংযুক্ত করা হচ্ছে

#অন্তর্ভুক্ত #অন্তর্ভুক্ত // SFE_BMP180 অ্যাক্সেস করার জন্য একটি পরিবর্তনশীল ঘোষণা করুন: SFE_BMP180 চাপ; #define ALTITUDE 1655.0 // সমুদ্রপৃষ্ঠ থেকে উচ্চতা ট্রিক ইন মিটার অকার্যকর সেটআপ () (Serial.begin (9600); Serial.println ("REBOOT"); // আরম্ভ হলে (pressure.begin ()) সিরিয়াল। println ( "BMP180 init ঠিক আছে"); অন্যথায় (// যদি এখানে কিছু একসাথে বড় না হয়। একটি নিয়ম হিসাবে, সংযোগের সাথে জ্যামগুলি Serial.println ("BMP180 init ব্যর্থ \ n \ n"); যখন (1); / / হ্যাং) ) অকার্যকর লুপ () (চার অবস্থা; ডবল T, P, p0, a; // আপনি যদি সমুদ্রপৃষ্ঠের সংশোধন করা বায়ুচাপ জানতে চান, যা সাধারণত আবহাওয়ার পূর্বাভাসে ব্যবহৃত হয় // আপনাকে সমুদ্র জানতে হবে আপনার এলাকার স্তর যেখানে পরিমাপ // এটি কোডের শুরুতে ALTITUDE ধ্রুবকের মধ্যে উল্লেখ করা আবশ্যক Serial.println (); Serial.print ("সমুদ্র স্তর:"); Serial.print (ALTITUDE, 0); সিরিয়াল। প্রিন্ট ("মিটার,"); সিরিয়াল .print (ALTITUDE * 3.28084,0); Serial.println ("feet"); // আপনি যদি সমুদ্রপৃষ্ঠ থেকে উচ্চতা জানতে চান তবে আপনি চাপ জানেন // আপনার প্রয়োজন বর্তমান বায়ুমণ্ডলীয় চাপ নির্দেশ করতে। এটি কীভাবে করবেন কোডের শেষে লেখা আছে ... // যেহেতু চাপটি তাপমাত্রার উপর একদিকে নির্ভর করে, আপনাকে প্রথমে তাপমাত্রা খুঁজে বের করতে হবে // BMP180-এ একটি অন্তর্নির্মিত থার্মোমিটার রয়েছে। তাপমাত্রা পরিমাপ করতে কিছুটা সময় লাগে। // সবকিছু মসৃণ হলে, চাপ. স্টার্ট টেম্পারেচার স্থিতিতে ফিরে আসবে মিলিসেকেন্ডের সংখ্যা // যা আপনাকে তাপমাত্রা পরিমাপের জন্য অপেক্ষা করতে হবে // যদি তারের সাথে কিছু জ্যাম থাকে তবে এটি 0 স্থিতি ফেরত দেবে = pressure.startTemperature () ; if (status! = 0) (// wait: delay (status); // তাপমাত্রা পান, T ভেরিয়েবলে রাখুন: // সবকিছু ঠিক থাকলে ফাংশনটি 1 রিটার্ন করবে, 0 ঠিক না থাকলে স্থিতি = চাপ। getTemperature (T); যদি (স্থিতি! = 0) (// তাপমাত্রা লিখুন: Serial.print ("temperature:"); Serial.print (T, 2); Serial.print ("ডিগ্রী সি,"); / / সেলসিয়াস Serial.print (9.0 / 5.0) * T + 32.0,2); Serial.println ("ডিগ্রী F"); // ফারেনহাইট // atm নির্ধারণ করুন। চাপ: // প্যারামিটার রেজোলিউশন নির্দেশ করে, 0 থেকে 3 পর্যন্ত (রেজোলিউশন যত বেশি হবে, নির্ভুলতা তত বেশি হবে, অপেক্ষা তত বেশি হবে)। // সবকিছু মসৃণ হলে, চাপ। স্টার্টপ্রেশার স্থিতিতে ফিরে আসবে মিলিসেকেন্ডের সংখ্যা // যা আপনাকে এটিএম পরিমাপ করতে অপেক্ষা করতে হবে .pressure // কিছু সমস্যা হলে, এটি 0 status = pressure.startPressure ( 3); if (status! = 0) (// পরিমাপ শেষ হওয়ার জন্য অপেক্ষা করুন: বিলম্ব (স্থিতি); // এখন আপনি ভেরিয়েবল P-তে চাপ পেতে পারে। // সবকিছু ঠিক থাকলে ফাংশনটি 1 ফেরত দেবে, ঠিক না থাকলে 0। স্ট্যাটাস = চাপ। getPressure (P, T); if (status! = 0) (// print everything: সেরি al.print ("পরম চাপ:"); Serial.print (P, 2); Serial.print ("মিলিবার,"); Serial.print (P * 0. 0295333727.2); Serial.println ("পারদের ইঞ্চি"); // সেন্সর এটিএম ফেরত দেয়। চাপ যা সেন্সরের উচ্চতার উপর নির্ভর করে পরিবর্তিত হয়। // যদি আমরা আবহাওয়ার পূর্বাভাসের মতো এটি চাই, তাহলে আমাদের সন্দেহজনক গণনা করতে হবে // পরামিতি: P = মিলিবারে সেন্সর থেকে চাপ, ALTITUDE = মিটারে সমুদ্রপৃষ্ঠ থেকে উচ্চতা। // ফলাফল: p0 = সমুদ্রপৃষ্ঠের সংশোধিত চাপ p0 = চাপ. sealevel (P, ALTITUDE); Serial.print ("সমুদ্র স্তরে চাপ:"); Serial.print (p0,2); Serial.print ("মিলিবার,"); Serial.print (p0 * 0.0295333727.2); Serial.println ("পারদের ইঞ্চি"); // অথবা আপনি যদি বিপরীত করতে চান এবং পরিচিত চাপ থেকে উচ্চতা নির্ধারণ করতে চান, // পরামিতি: P = মিলিবারে ট্রান্সডুসার থেকে চাপ, p0 = চাপ সমুদ্রতলের জন্য সংশোধন করা হয়েছে। // ফলাফল: a = সমুদ্রপৃষ্ঠ থেকে মিটারে উচ্চতা। a = চাপ.উচ্চতা (P, p0); Serial.print ("সমুদ্রপৃষ্ঠ থেকে গণনাকৃত উচ্চতা:"); Serial.print (a, 0); Serial.print ("মিটার,"); Serial.print (a * 3.28084,0); Serial.println ("ফুট"); ) else Serial.println ("প্রেশার পাওয়ার ত্রুটি \ n"); ) else Serial.println ("ত্রুটি চাপ পেতে শুরু করা \ n"); ) else Serial.println ("তাপমাত্রা পাওয়ার ত্রুটি \ n"); ) else Serial.println ("তাপমাত্রা পেতে ত্রুটি \ n"); বিলম্ব (5000); // 5 সেকেন্ডের জন্য বিরতি দিন। )

মন্তব্য সহ Arduino প্রোগ্রাম:

/ * SFE_BMP180 লাইব্রেরি উদাহরণ স্কেচ

এই স্কেচটি দেখায় কিভাবে SFE_BMP180 লাইব্রেরিটি পড়ার জন্য ব্যবহার করতে হয়৷
Bosch BMP180 ব্যারোমেট্রিক চাপ সেন্সর।
https://www.sparkfun.com/products/11824
বেশিরভাগ চাপ সেন্সরের মতো, BMP180 পরম চাপ পরিমাপ করে।
এই ডিভাইস দ্বারা দেখা প্রকৃত পরিবেষ্টিত চাপ, যা হবে
উচ্চতা এবং আবহাওয়া উভয়ের সাথে পরিবর্তিত হয়।
প্রেসার রিডিং নেওয়ার আগে আপনাকে অবশ্যই টেম্পারচার রিডিং নিতে হবে।
এটি startTemperature () এবং getTemperature () দিয়ে করা হয়।
ফলাফল ডিগ্রী সি.
একবার আপনার তাপমাত্রা রিডিং হয়ে গেলে, আপনি প্রেসার রিডিং নিতে পারেন।
এটি startPressure () এবং getPressure () দিয়ে করা হয়।
ফলাফল হল মিলিবার (mb) ওরফে হেক্টোপাস্কালস (hPa)।
আপনি যদি "আবহাওয়ার নিদর্শন নিরীক্ষণ করেন, আপনি সম্ভবত এটি করতে চাইবেন
উচ্চতা প্রভাব অপসারণ. এটি রিডিং তৈরি করবে যা করতে পারে
অন্যান্য অবস্থান থেকে প্রকাশিত চাপ পড়ার সাথে তুলনা করা হবে।
এটি করতে, sealevel () ফাংশন ব্যবহার করুন। আপনি প্রদান করতে হবে
পরিচিত উচ্চতা যেখানে চাপ পরিমাপ করা হয়েছিল।
আপনি যদি উচ্চতা পরিমাপ করতে চান তবে আপনাকে চাপ জানতে হবে
একটি বেসলাইন উচ্চতায়। এই গড় sealevel চাপ হতে পারে, বা
আপনার উচ্চতায় পূর্ববর্তী চাপ পড়া, এই ক্ষেত্রে
পরবর্তী উচ্চতা রিডিং হবে + বা - প্রাথমিক বেসলাইন।
এটি উচ্চতা () ফাংশন দিয়ে করা হয়।

হার্ডওয়্যার সংযোগ:
- (GND) থেকে GND
+ (ভিন) থেকে 5V
এছাড়াও আপনাকে আপনার সাথে I2C পিন (SCL এবং SDA) সংযোগ করতে হবে
আরডুইনো। বিভিন্ন আরডুইনোতে পিনগুলি আলাদা:
যেকোনো Arduino পিন লেবেলযুক্ত: SDA SCL
Uno, Redboard, Pro: A4 A5
Mega2560, বকেয়া: 20 21
লিওনার্দো: 2 3

SFE_BMP180 লাইব্রেরি ফ্লোটিং-পয়েন্ট সমীকরণ ব্যবহার করে
ওয়েদার স্টেশন ডেটা লগার প্রকল্প: http://wmrx00.sourceforge.net/

V10 মাইক গ্রুসিন, স্পার্কফান ইলেকট্রনিক্স 10/24/2013
V1.1.2 Arduino 1.6.4 5/2015 এর জন্য আপডেট
*/

// আপনার স্কেচে অবশ্যই #এই লাইব্রেরি এবং ওয়্যার লাইব্রেরি অন্তর্ভুক্ত করতে হবে।
// (ওয়্যার হল একটি স্ট্যান্ডার্ড লাইব্রেরি যা Arduino এর সাথে অন্তর্ভুক্ত।):

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

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

// আপনাকে একটি SFE_BMP180 অবজেক্ট তৈরি করতে হবে, এখানে "চাপ" বলা হয়:
SFE_BMP180 চাপ;

অকার্যকর সেটআপ ()
{
lcd.begin (16, 2);
// সেন্সরটি শুরু করুন (ডিভাইসে সংরক্ষিত ক্রমাঙ্কন মানগুলি পাওয়া গুরুত্বপূর্ণ)।
pressure.begin ();
}

অকার্যকর লুপ ()
{
চর অবস্থা;
ডবল T, P, p0 = 1013.0, a; // 1013.0 - সমুদ্রপৃষ্ঠে hPa-তে চাপ

// চাপ পড়ার জন্য আপনাকে প্রথমে একটি তাপমাত্রা পরিমাপ করতে হবে।
// একটি তাপমাত্রা পরিমাপ শুরু করুন:

status = pressure.startTemperature ();
যদি (স্থিতি! = 0)
{
delay (স্থিতি);

// সম্পন্ন তাপমাত্রা পরিমাপ পুনরুদ্ধার করুন:
// লক্ষ্য করুন যে পরিমাপটি পরিবর্তনশীল T-এ সংরক্ষিত আছে।

অবস্থা = pressure.getTemperature (T);
যদি (স্থিতি! = 0)
{
lcd.setCursor (0, 0);
lcd.print ("টেম্প =");
lcd.print (T, 2);
lcd.print ("C");
// একটি চাপ পরিমাপ শুরু করুন:
// প্যারামিটার হল ওভারস্যাম্পলিং সেটিং, 0 থেকে 3 পর্যন্ত (সর্বোচ্চ রেজোলিউশন, দীর্ঘতম অপেক্ষা)।
// অনুরোধ সফল হলে, অপেক্ষা করার জন্য ms সংখ্যা ফেরত দেওয়া হয়।
// অনুরোধ অসফল হলে, 0 ফেরত দেওয়া হয়।

অবস্থা = চাপ.স্টার্টপ্রেশার (3);
যদি (স্থিতি! = 0)
{
// পরিমাপ সম্পূর্ণ হওয়ার জন্য অপেক্ষা করুন:
delay (স্থিতি);

// সম্পূর্ণ চাপ পরিমাপ পুনরুদ্ধার করুন:
// লক্ষ্য করুন যে পরিমাপটি ভেরিয়েবল পি-তে সংরক্ষণ করা হয়েছে।
// এছাড়াও নোট করুন যে ফাংশনটির পূর্ববর্তী তাপমাত্রা পরিমাপ (টি) প্রয়োজন।
// (তাপমাত্রা স্থিতিশীল হলে, আপনি একাধিক চাপ পরিমাপের জন্য একটি তাপমাত্রা পরিমাপ করতে পারেন।)
// সফল হলে ফাংশন 1, ব্যর্থ হলে 0 প্রদান করে।

অবস্থা = চাপ.গেটপ্রেশার (পি, টি);
যদি (স্থিতি! = 0)
{
// পরিমাপ মুদ্রণ করুন:
lcd.setCursor (0, 1);
lcd.print ("P =");
lcd.print (P/1.333,0); // coeff। 1.333 - hPa থেকে mm Hg এ রূপান্তর

// আপনি যদি চাপ পড়া থেকে আপনার উচ্চতা নির্ধারণ করতে চান,
// বেসলাইন চাপের সাথে উচ্চতা ফাংশন ব্যবহার করুন (সমুদ্র-স্তর বা অন্যান্য)।
// পরামিতি: mb এ P = পরম চাপ, mb তে p0 = 1013 বেসলাইন চাপ।
// ফলাফল: a = উচ্চতা মি.

a = চাপ.উচ্চতা (P, p0);
lcd.print ("H =");
lcd.print (a, 2);
lcd.print ("m");
}
else lcd.print ("ত্রুটি");
}
else lcd.print ("ত্রুটি");
}
else lcd.print ("ত্রুটি");
}
else lcd.print ("ত্রুটি");
বিলম্ব (5000); // 5 সেকেন্ডের জন্য বিরতি দিন।

শুভ দিন সবাই, ভাল...শুরু!!! এই নিবন্ধটি একটি ব্যারোমেট্রিক চাপ সেন্সর সংযোগ সম্পর্কে BMP180একটি একক বোর্ড কম্পিউটারে Arduino Uno, কিন্তু এত সহজ নয় যতটা আমরা প্রথম নজরে চাই। আমরা ড্রাইভারের উপর ভিত্তি করে 7-সেগমেন্টের ডিসপ্লেতে পরিমাপ করা এবং রূপান্তরিত তাপমাত্রার মানগুলি প্রদর্শন করব MAX7219... এবং তারা পরিমাপের দুটি রূপান্তরিত একক থেকে একটি লতানো রেখা হিসাবে প্রদর্শিত হবে - এগুলি ডিগ্রি সেলসিয়াস এবং ডিগ্রি ফারেনহাইট।

সেন্সর BMP180এটি শুধুমাত্র একটি ব্যারোমেট্রিক চাপ সেন্সর নয়, এটি একটি উচ্চ-নির্ভুল তাপমাত্রা সেন্সরও। এটি একটি অত্যন্ত সংবেদনশীল ডিভাইস, নিবন্ধের শেষে একটি ওভারভিউ ভিডিও দেখানো হবে, যা দেখে আপনি নিশ্চিত হতে পারবেন এটি কতটা সংবেদনশীল। ভাল, আরও, আপনি সেন্সরের বৈশিষ্ট্য দিতে পারেন BMP180 :

  • সরবরাহ ভোল্টেজ 3.3 ভোল্ট
  • 1 Hz এর নমুনা হারে বর্তমান খরচ 5 mKA
  • সংযোগ ইন্টারফেস - I2C
  • পরিমাপ করা চাপে নির্ভুলতা ছড়িয়ে পড়ে + -0.12 hPa (উচ্চতায় + -1 মিটার)
  • তাপমাত্রা পরিমাপ -40 * সে থেকে + 85 * সে
  • চাপ পরিমাপ পরিসীমা: 300 থেকে 1100 hPa পর্যন্ত

এটি বোর্ডের সাথে সেন্সর সংযোগ করার সময় Arduino Uno, কিন্তু যেহেতু আমাদের পরিমাপ করা এবং রূপান্তরিত মানগুলি 7-সেগমেন্টের ডিসপ্লেতে প্রদর্শিত হবে, নিম্নলিখিত চিত্রটিতে আমরা সমস্ত ডিভাইসের সম্পূর্ণ সংযোগ এবং সেইসাথে সেন্সরের পিনআউট দেখাব। BMP180 :

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

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

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

ফলস্বরূপ, বিকাশকারীর মন্তব্য সহ নিম্নলিখিত স্কেচটি তৈরি করা হয়েছিল:

#include "SFE_BMP180.h" #include "Wire.h" #include "LedControl.h" // বার্তা স্ক্রোল করার জন্য ফাংশনের প্রোটোটাইপ msgScrolling () void msgScrolling (byte msg, int msgSize, int dScroll); // তাপমাত্রার ডেটা প্রক্রিয়াকরণের জন্য ফাংশনের প্রোটোটাইপ // এবং একটি বার্তা অকার্যকর TmsgPreparation প্রস্তুত করা (ডবল মান, বুল ডিগ্রি); // ডিসপ্লে LedControl LC = LedControl (12, 11, 10, 8) এর সাথে কাজ করার জন্য LedControl ক্লাসের একটি LC অবজেক্ট তৈরি করুন; // SFE_BMP180 BMP180 সেন্সরের সাথে কাজ করার জন্য SFE_BMP180 ক্লাসের একটি BMP180Sensor অবজেক্ট তৈরি করুন; // স্ক্রোল করার সময় অক্ষর আঁকার সময় বিলম্ব const int delayScrolling = 300; // বার্তা "সেন্সর ইনিশিয়ালাইজেশন সফল" বাইট msgInitSuccess = (91, 79, 21, 91, 29, 5, 16, 21, 16, 15, 0, 91, 28, 13, 13, 79, 91, 91); // বার্তা "সেন্সর ইনিশিয়ালাইজেশন অসফল" বাইট msgInitFail = (91, 79, 21, 91, 29, 5, 16, 21, 16, 15, 0, 71, 119, 48, 14); // ডট বাইট ডিজিট ছাড়া সাংখ্যিক অক্ষরের অ্যারে = (126, 48, 109, 121, 51, 91, 95, 112, 127, 123); // ডট বাইট pDigit = (254, 176, 237, 249, 179, 219, 223, 240, 255, 251) সহ সাংখ্যিক অক্ষরের অ্যারে; // প্রতীক বাইট ডিগ = 99; // "ডিগ্রী" বাইট সি = 78 এর প্রতীক; // প্রতীক "সি" - সেলসিয়াস বাইট F = 71; // প্রতীক "F" - ফারেনহাইট বাইট S = 1; // "-" চিহ্নটি একটি বিয়োগ চিহ্ন (যদি পরিমাপ করা মান শূন্যের নিচে হয়) অকার্যকর সেটআপ () (// আমরা ডিভাইসটি (7-সেগমেন্টের ডিসপ্লে) স্লিপ মোড LC. shutdown (0, false); // ডিসপ্লের উজ্জ্বলতা 8 এ সেট করুন // 0 থেকে 15 LC পর্যন্ত সম্ভাব্য উজ্জ্বলতা মোড সেট করুন। BMP180Sensor.begin ()) (// স্ক্রোলিং-এর জন্য বার্তা - সেন্সর প্রাথমিককরণ সফল msgScrolling (msgInitSuccess, sizeof (msgInitSuccess), delayScrolling); sizeof (msgInitFail), delayScrolling;))) void loop () (char status; ডবল T, tCelsius, tFahrenheit; // স্টার্ট টেম্পারেচার মাপার // ফাংশন startTemperature () পরিমাপের শুরু থেকে মিলিসেকেন্ডের সংখ্যা ফেরত দেয় // প্রক্রিয়া, যদি পরিমাপ প্রক্রিয়াটি সঠিক ছিল, // এই মানটিকে স্ট্যাটাস ভেরিয়েবলে সংরক্ষণ করুন // যদি ফাংশনটি 0 প্রদান করে, তাহলে পরিমাপ প্রক্রিয়াটি পিআর চলে গেছে ভুল অবস্থা = BMP180Sensor.startTemperature (); if (status! = 0) (// একই সংখ্যক মিলিসেকেন্ড বিলম্বের জন্য অপেক্ষা করুন (স্থিতি); // পরিমাপিত এবং প্রক্রিয়াকৃত তাপমাত্রার মান পান // ডিগ্রি সেলসিয়াসে, এবং এটি টি পরিবর্তনশীল // getTemperature () ফাংশনে সংরক্ষণ করুন এটিকে কল করলে 1 // সফলভাবে পাস করা হলে 0 এবং ফাংশনটি শুরু করতে না পারলে // পরিমাপ করা মান স্ট্যাটাস = BMP180Sensor.getTemperature (T); যদি (স্থিতি! = 0) (// ভেরিয়েবলের জন্য একটি মান বরাদ্দ করা // এবং ফারেনহাইট স্কেলের জন্য গ্র্যাজুয়েশন প্রক্রিয়াকরণ tCelsius = T; tFahrenheit = (9.0 / 5.0) * T + 32.0;)) // মান প্রক্রিয়াকরণ এবং // বার্তা প্রস্তুত করা - তাপমাত্রা Tmsgপ্রস্তুতি (tCelsius, false); Tmsgপ্রস্তুতি (tFahrenheit, true); ) // রেডি মেসেজ স্ক্রোল করার জন্য এখানে আসল ফাংশন // ডান থেকে বামে / * * প্যারামিটার: * বাইট msg - ক্যারেক্টার ডেটার একটি অ্যারের পয়েন্টার * int msgSize - ক্যারেক্টার ডেটার অ্যারের আকার * int dScroll - বিলম্ব স্ক্রলিং (বার্তাটি বাম দিকে স্থানান্তর করা) * মিলিসেকেন্ডে * / অকার্যকর msgস্ক্রোলিং (বাইট বার্তা, int msgSize, int dScroll) (এর জন্য (int i = 0; i)< 8 + msgSize; i ++) { for(int n = i, j = 0; n >= 0, জে< msgSize; n --, j ++) { LC.setRow(0, n, msg[j]); LC.setRow(0, n - 1, B00000000); } delay(dScroll); } } /* * Здесь функция подготовки сообщения, прежде чем оно будет выведено * для прокрутки на дисплее. Параметры: * double value - значение температуры двойной степени точности * bool degree - флаг для определения шкалы градуирования * если false - значит градусы Цельсия * если true - значит градусы Фаренгейта */ void TmsgPreparation(double value, bool degree) { //Приводим к абсолютному значению и сохраняем в переменной T //Это унифицирует значение и сократит код функции вдвое double T = abs(value); //Здесь значение фильтруется, если есть отклонение на пол градуса //от нуля то всё равно формировать сообщение что температура равна 0 //Итак, если замеренная температура меньше 0.5 то ставим 0 if(T < 0.5) { //Резервируем символьный массив на три символа byte preMsg; //Первый символ - это естественно 0 preMsg = Digit; //Второй символ - это сгенерированный символ "градус" preMsg = deg; //Проверка флага градуировки if(degree) { //Если true - то это градусы Фаренгейта //и третий символ в массиве будет содержать //сгенерированный символ F(код 71) preMsg = F; } else { //Иначе, если true - то это градусы Цельсия //и третий символ в массиве будет содержать //сгенерированный символ С(код 78) preMsg = C; } //Отправляем указатель на проинициализированный символьный массив preMsg //в качестве первого параметра функции для прокрутки сообщений //второй параметр - это размер символьного массива preMsg //третий параметр - задержка сдвига(прокрутки влево) в миллисекундах msgScrolling(preMsg, sizeof(preMsg), delayScrolling); //После прокрутки сообщения покинуть тело функции return; } //Если больше 0.5 но меньше 1 if(T < 1) { byte preMsg; preMsg = pDigit; preMsg = Digit; preMsg = deg; if(degree) { preMsg = F; } else { preMsg = C; } //Здесь нужно знать показания температуры //Отрицательные или положительные, //если отрицательные - добавить отрисовку знака минус if(value < 0) { byte rdyMsg; //В первый байт массива символов сообщения //записываем знак rdyMsg = S; //Далее - слияние массивов в готовое сообщение for(int i = 1; i < sizeof(rdyMsg); i ++) { // rdyMsg[i] = preMsg; } msgScrolling(rdyMsg, sizeof(rdyMsg), delayScrolling); return; } else { msgScrolling(preMsg, sizeof(preMsg), delayScrolling); return; } } //Если больше 1 но меньше 10 if(T < 10) { byte preMsg; preMsg = pDigit; preMsg = Digit; preMsg = deg; if(degree) { preMsg = F; } else { preMsg = C; } if(value < 0) { byte rdyMsg; //В первый байт массива символов сообщения //записываем знак rdyMsg = S; //Далее - слияние массивов в готовое сообщение for(int i = 1; i < sizeof(rdyMsg); i ++) { // rdyMsg[i] = preMsg; } msgScrolling(rdyMsg, sizeof(rdyMsg), delayScrolling); return; } else { msgScrolling(preMsg, sizeof(preMsg), delayScrolling); return; } } //Если больше 10 но меньше 100 if(T < 100) { byte preMsg; preMsg = Digit; preMsg = pDigit; preMsg = Digit; preMsg = deg; if(degree) { preMsg = F; } else { preMsg = C; } if(value < 0) { byte rdyMsg; //В первый байт массива символов сообщения //записываем знак rdyMsg = S; //Далее - слияние массивов в готовое сообщение for(int i = 1; i < sizeof(rdyMsg); i ++) { // rdyMsg[i] = preMsg; } msgScrolling(rdyMsg, sizeof(rdyMsg), delayScrolling); return; } else { msgScrolling(preMsg, sizeof(preMsg), delayScrolling); return; } } //Если больше 100 но меньше 1000 if(T < 1000) { byte preMsg; preMsg = Digit; preMsg = Digit; preMsg = pDigit; preMsg = Digit; preMsg = deg; if(degree) { preMsg = F; } else { preMsg = C; } if(value < 0) { byte rdyMsg; //В первый байт массива символов сообщения //записываем знак rdyMsg = S; //Далее - слияние массивов в готовое сообщение for(int i = 1; i < sizeof(rdyMsg); i ++) { // rdyMsg[i] = preMsg; } msgScrolling(rdyMsg, sizeof(rdyMsg), delayScrolling); return; } else { msgScrolling(preMsg, sizeof(preMsg), delayScrolling); return; } } }

আমি আরও বলতে চাই যে LedControl স্ট্যান্ডার্ড লাইব্রেরিতে কোনও স্ক্রলিং ফাংশন পাওয়া যায়নি, হয়তো আমরাই এই লাইব্রেরিটি যুক্ত করব? ঠিক আছে, এটা সব আমাদের দর্শকদের ইচ্ছার উপর নির্ভর করে, মন্তব্য করুন, চেষ্টা করুন, প্রশ্ন জিজ্ঞাসা করুন ... আমরা আপনার প্রতিক্রিয়ার জন্য অপেক্ষা করছি। স্কেচের একটি ভিডিও এই নিবন্ধটির সাথে সংযুক্ত করা হয়েছে, আসুন স্কেচের ফলাফলগুলি দেখি:


কাজ করার জন্য মন্তব্যের জন্য জাভাস্ক্রিপ্ট সক্রিয় করুন.

BMP085 ব্যারোমেট্রিক চাপ নিরীক্ষণের জন্য একটি সেন্সর (এছাড়া, এটি তাপমাত্রাও নিরীক্ষণ করে)।

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

BMP085 এক সময়ে BMP180 সেন্সর দ্বারা প্রতিস্থাপিত হয়েছিল, যা Arduino এবং অন্যান্য মাইক্রোকন্ট্রোলারের সাথে তার পূর্বসূরির মতোই সংযোগ করে, কিন্তু একই সময়ে এটি কম এবং খরচও কম।

স্পেসিফিকেশন BMP085

  • সংবেদনশীলতা পরিসীমা: 300-1100 hPa (9000 m - 500 মিটার সমুদ্রপৃষ্ঠ থেকে);
  • রেজোলিউশন: 0.03 hPa / 0.25 মি;
  • কাজের তাপমাত্রা -40 থেকে + 85 ° সে, তাপমাত্রা পরিমাপের সঠিকতা + -2 ° সে;
  • I2c সংযোগ;
  • মডিউলে V1 3.3V শক্তি এবং যুক্তি শক্তি ব্যবহার করে;
  • মডিউলে V2 3.3-5 V শক্তি এবং যুক্তি শক্তি ব্যবহার করে;

Arduino IDE পুনরায় চালু করার পরে, আপনি প্রথম স্কেচ উদাহরণটি চালাতে পারেন, যার জন্য কোডটি নীচে দেওয়া হয়েছে:

#include & ltWire.h & gt

#include <Adafruit_Sensor.h & gt

#include <Adafruit_BMP085_U.h & gt

Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified (10085);

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

Serial.begin (9600);

Serial.println ("চাপ সেন্সর পরীক্ষা"); Serial.println ("");

/ * সেন্সর শুরু করুন * /

যদি (! bmp.begin ())

/ * যদি একটি শিলালিপি উপস্থিত হয়: "BMP085 সনাক্ত করতে একটি সমস্যা ছিল ...",

সেন্সরটি সঠিকভাবে সংযুক্ত কিনা তা পরীক্ষা করুন * /

Serial.print ("ওহো, কোন BMP085 সনাক্ত করা যায়নি... আপনার ওয়্যারিং বা I2C ADDR পরীক্ষা করুন!");

সেন্সর_ইভেন্ট_টি ইভেন্ট;

bmp.getEvent (এবং ইভেন্ট);

/ * ফলাফল প্রদর্শন করুন (ব্যারোমেট্রিক চাপ hPa এ পরিমাপ করা হয়) * /

যদি (ঘটনা. চাপ)

/ * hPa তে বায়ুমণ্ডলীয় চাপ প্রদর্শন করুন * /

Serial.print ("চাপ:"); Serial.print (event.pressure); Serial.println ("hPa");

সিরিয়াল মনিটর উইন্ডো খুলুন (বড রেট - 9600)। আমাদের স্কেচ এইচপিএ (হেক্টোপাস্কাল) এ চাপের ডেটা আউটপুট করা উচিত। আপনি সেন্সরে আপনার আঙুল টিপে সেন্সরের কার্যকারিতা পরীক্ষা করতে পারেন। চিত্রটি আপনার আঙুল দিয়ে চাপ দেওয়ার পরে চাপের মানগুলি দেখায়।


সমুদ্রপৃষ্ঠের উপরে উচ্চতা পরিমাপ

আপনি সম্ভবত জানেন যে উচ্চতা বৃদ্ধির সাথে চাপ কমে যায়। অর্থাৎ আমরা চাপ ও তাপমাত্রা জেনে উচ্চতা নির্ণয় করতে পারি। আবার, আমরা পর্দার আড়ালে গণিত ছেড়ে দেব। আপনি যদি গণনায় আগ্রহী হন তবে আপনি এই উইকিপিডিয়া পৃষ্ঠায় তাদের সাথে নিজেকে পরিচিত করতে পারেন।

নীচের উদাহরণটি অতিরিক্ত Arduino লাইব্রেরি ব্যবহার করবে। BMP085 সেন্সর ব্যবহার করে উচ্চতা গণনা করতে, "অকার্যকর লুপ ()" ফাংশন আপডেট করুন। স্কেচের প্রয়োজনীয় পরিবর্তনগুলি নীচের স্কেচে দেখানো হয়েছে। এটি আপনাকে চাপের স্তর এবং তাপমাত্রা পড়ার উপর ভিত্তি করে একটি তাপমাত্রা রিডিং দেবে।

/ * সেন্সরের জন্য একটি নতুন ইভেন্ট তৈরি করুন * /

সেন্সর_ইভেন্ট_টি ইভেন্ট;

bmp.getEvent (এবং ইভেন্ট);

/ * ফলাফল প্রদর্শন করুন (hPa তে ব্যারোমেট্রিক চাপ) * /

যদি (ঘটনা. চাপ)

/ * hPa তে বায়ুমণ্ডলীয় চাপ প্রদর্শন করুন * /

Serial.print ("চাপ:");

Serial.print (event.pressure);

Serial.println ("hPa");

/ * একটি নির্দিষ্ট নির্ভুলতার সাথে উচ্চতা গণনা করতে, আপনাকে জানতে হবে *

* গড় চাপ এবং পরিবেষ্টিত তাপমাত্রা

* রিডিং নেওয়ার সময় ডিগ্রি সেলসিয়াসে *

* যদি আপনার কাছে এই ডেটা না থাকে তবে আপনি "ডিফল্ট মান" ব্যবহার করতে পারেন,

* যা 1013.25 hPa এর সমান (এই মানটিকে সংজ্ঞায়িত করা হয়েছে

* SENSORS_PRESSURE_SEALEVELHPA *

* sensors.h ফাইলে)। কিন্তু ফলাফল সঠিক হবে না *

* প্রয়োজনীয় মানগুলি তাপমাত্রার পূর্বাভাস সহ ওয়েবসাইটগুলিতে পাওয়া যাবে *

* বা বড় বিমানবন্দরে তথ্য কেন্দ্রের সংস্থানগুলিতে *

* যেমন প্যারিস, ফ্রান্সের জন্য বর্তমান গড় চাপ পাওয়া যাবে *

* ওয়েবসাইটে: http://bit.ly/16Au8ol */

/ * BMP085 সেন্সর থেকে বর্তমান তাপমাত্রার মান পান * /

ভাসমান তাপমাত্রা;

bmp.getTemperature (এবং তাপমাত্রা);

Serial.print ("তাপমাত্রা:");

Serial.print (তাপমাত্রা);

Serial.println ("C");

/ * প্রাপ্ত ডেটা উচ্চতায় রূপান্তর করুন * /

/ * বর্তমান মানগুলি প্রতিফলিত করতে পরবর্তী লাইন আপডেট করুন * /

float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA;

Serial.print ("উচ্চতা:");

Serial.print (bmp.pressureToAltitude (sealevelpressure,

Serial.println ("m");

Serial.println ("");

Serial.println ("সেন্সর ত্রুটি");

আমরা স্কেচ চালু করি এবং সমুদ্রপৃষ্ঠ থেকে গণনাকৃত উচ্চতা দেখি।

BMP085 রিডিংয়ের নির্ভুলতা গড় চাপের মান সামঞ্জস্য করে উল্লেখযোগ্যভাবে বৃদ্ধি করা যেতে পারে, যা আবহাওয়ার সাথে পরিবর্তিত হয়। প্রতি 1 hPa চাপ যা আমরা বিবেচনায় নিই না তা 8.5 মিটার ত্রুটির দিকে নিয়ে যায়!

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


আসুন আমাদের স্কেচে নিম্নলিখিত লাইনটি পরিবর্তন করি, এতে প্রকৃত মান (1009 hPa) লিখুন:

float sealevelpressure = 1009;

ফলস্বরূপ, আমরা কিছুটা ভিন্ন ফলাফল পাব:

ইঙ্গিত: আপনি যখন চাপ নির্দিষ্ট করছেন, ব্যবহৃত ডেটা hPa-তে রূপান্তর করতে ভুলবেন না।

BMP085 (API v1) ব্যবহার করা হচ্ছে

আসুন আবারও পুনরাবৃত্তি করি: সমুদ্রপৃষ্ঠের উপরে চাপ এবং উচ্চতা খুঁজে বের করার জন্য, আপনাকে কিছু গণনা করতে হবে। কিন্তু সেগুলি ইতিমধ্যেই Adafruit_BMP085 Arduino লাইব্রেরিতে (API v1) অন্তর্ভুক্ত করা হয়েছে, যা আপনি লিঙ্ক থেকে ডাউনলোড করতে পারেন।

লাইব্রেরিগুলি ইনস্টল করার পরে, আপনাকে Arduino IDE পুনরায় চালু করতে হবে

রিবুট করার পরে, আপনি প্রথম স্কেচ উদাহরণটি চালাতে পারেন:

#include & ltWire.h & gt

Adafruit_BMP085 bmp;

Serial.begin (9600);

Serial.println ("*C");

Serial.print ("চাপ =");

Serial.println ("Pa");

Serial.println ();

আপনার Arduino ফ্ল্যাশ করার পরে, আপনার সিরিয়াল মনিটর খুলুন। বড রেট 9600 এ সেট করুন। স্কেচটি তাপমাত্রা ডিগ্রি সেলসিয়াসে এবং প্যাসকেলে চাপ দেবে। আপনি যদি সেন্সরের সেন্সিং উপাদানে আপনার আঙুল রাখেন, তাপমাত্রা এবং চাপ বৃদ্ধি পাবে:


উচ্চতা পরিমাপ (API v1)

উচ্চতা নিয়ন্ত্রণ করতে, শুধু নীচের স্কেচটি চালান:

#include & ltWire.h & gt

#include <Adafruit_BMP085.h & gt

Adafruit_BMP085 bmp;

Serial.begin (9600);

Serial.print ("তাপমাত্রা =");

Serial.print (bmp.readTemperature ());

Serial.println ("*C");

Serial.print ("চাপ =");

Serial.print (bmp.readPressure ());

Serial.println ("Pa");

// মানগুলির উপর ভিত্তি করে উচ্চতা গণনা করুন

// "মানক" ব্যারোমেট্রিক চাপ সমান 1013.25 মিলিবার = 101325 প্যাসকেল

Serial.print ("উচ্চতা =");

Serial.print (bmp.readAltitude ());

Serial.println ("মিটার");

Serial.println ();

ফলাফল প্রদর্শন করতে স্কেচ চালান:


উপরের রিডিংয়ের উপর ভিত্তি করে, আমরা সমুদ্রপৃষ্ঠ থেকে -21.5 মিটার উপরে আছি। কিন্তু আমরা জানি যে আমরা সমুদ্রের উপরে! API V2 ব্যবহার করার সময় একই সমস্যা মনে রাখা। আমাদের অবশ্যই আবহাওয়া বিবেচনায় নিতে হবে! ঠিক আছে. ধরুন আমরা একটি ভাল আবহাওয়া সংক্রান্ত ওয়েবসাইট খুঁজে পেয়েছি এবং চাপ হল 101.964 Pa। Arduino IDE-তে উদাহরণের উদাহরণ-> BMP085test খুলুন এবং নীচের চিত্রে হাইলাইট করা লাইনটি সম্পাদনা করুন:


এই লাইনে আপনাকে বর্তমান চাপের ডেটা প্রবেশ করতে হবে। একটি নতুন লঞ্চের পরে, আপনি দেখতে পাবেন যে ডেটা নাটকীয়ভাবে পরিবর্তিত হয়েছে এবং আমরা একটি প্লাস চিহ্ন সহ 29.58 মিটার পেয়েছি, যা সত্যের মতো অনেক বেশি।


আপনার মন্তব্য, প্রশ্ন ছেড়ে দিন এবং নীচে আপনার ব্যক্তিগত অভিজ্ঞতা শেয়ার করুন. আলোচনায় প্রায়ই নতুন নতুন ধারণা ও প্রকল্পের জন্ম হয়!

BMP180 হল একটি পাইজোরেসিটিভ পরম চাপ সেন্সর যার সাথে কম শব্দ এবং উচ্চ রৈখিকতার পাশাপাশি উচ্চ গতিরিডিং সেট করা ডাইটিতে একটি নমনীয় সিলিকন ঝিল্লির আকারে একটি MEMS সেন্সর থাকে যা প্রমিত চাপ সহ চেম্বারটিকে ঢেকে রাখে। ঝিল্লিতে স্ট্রেন গেজ রয়েছে, যা সেতুর স্কিম অনুযায়ী সংযুক্ত থাকে এবং ঝিল্লি বাঁকলে তাদের প্রতিরোধ ক্ষমতা পরিবর্তন করে। ডায়াফ্রামের নমন পরিবেষ্টিত চাপ এবং চেম্বারে চাপের মধ্যে পার্থক্যের উপর নির্ভর করে এবং স্ট্রেন গেজ সেতু থেকে আউটপুট পরিবেষ্টিত চাপের উপর নির্ভর করে। যেহেতু ঝিল্লি এবং প্রতিরোধকের পরামিতিগুলি তাপমাত্রার উপর নির্ভর করে, একটি ডিজিটাল থার্মোমিটার স্ফটিকের উপর অবস্থিত, যার রিডিংগুলি ব্যারোমিটার ডেটার জন্য ক্ষতিপূরণ দিতে ব্যবহৃত হয়, তবে স্বাধীনভাবেও ব্যবহার করা যেতে পারে। ব্যারোমিটার ডেটার জন্য ক্ষতিপূরণ দিতে অন্যান্য সেন্সর থেকে তাপমাত্রা ডেটা ব্যবহার করার পরামর্শ দেওয়া হয় না। BMP180-এর থার্মোমিটারটি পরিমাপকারী ক্রিস্টালেই অবস্থিত, এটি সেন্সর উপাদানের তাপমাত্রা পরিমাপ করে - তাই এর রিডিং ব্যারোমিটারের তাপমাত্রার সবচেয়ে কাছাকাছি এবং সঠিক। ব্যারোমিটার 2 Pa এর সর্বোচ্চ নির্ভুলতার সাথে কাজ করতে পারে (যদি ব্যারোমেট্রিক উচ্চতা মিটার হিসাবে ব্যবহার করা হয়, এটি 17 সেন্টিমিটার উচ্চতা পরিমাপের ত্রুটির সাথে মিলে যায়)।

স্পেসিফিকেশন:

    সরবরাহ ভোল্টেজ 1.62V - 3.6V।

    I2C সংযোগ ইন্টারফেস।

    0.02hPa (17cm) পর্যন্ত নির্ভুলতা।

    পরিসীমা: 300hPa থেকে 1100hPa (+ 9000m থেকে -500m)।

    আউটপুট ডেটা: 16 বিট চাপ এবং তাপমাত্রা

    চাপ রেজোলিউশন 0.01hPa

    তাপমাত্রা রেজোলিউশন 0.1 о С

Arduino উদাহরণ কোড

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

/***************************************************
এটি BMP085 ব্যারোমেট্রিক প্রেসার এবং টেম্প সেন্সরের একটি উদাহরণ
Adafruit BMP085 ব্রেকআউটের সাথে কাজ করার জন্য বিশেষভাবে ডিজাইন করা হয়েছে
----> https://www.adafruit.com/products/391
এই ডিসপ্লেগুলি যোগাযোগ করতে I2C ব্যবহার করে, 2টি পিনের প্রয়োজন হয়
ইন্টারফেস
Adafruit এই ওপেন সোর্স কোড প্রদান করে সময় এবং সম্পদ বিনিয়োগ করে,
অনুগ্রহ করে Adafruit এবং ওপেন-সোর্স হার্ডওয়্যার কেনার মাধ্যমে সমর্থন করুন
Adafruit থেকে পণ্য!
Adafruit Industries-এর জন্য Limor Fried/ Ladyada লিখেছেন।
BSD লাইসেন্স, উপরের সমস্ত টেক্সট যেকোন পুনঃবন্টনে অন্তর্ভুক্ত করতে হবে
****************************************************/

// BMP085 সেন্সরের VCC কে 3.3V এর সাথে সংযুক্ত করুন (5.0V নয়!)
// GND কে মাটিতে সংযুক্ত করুন
// SCL কে i2c ঘড়িতে সংযুক্ত করুন - "168 /" 328 Arduino Uno / Duemilanove / etc thats Analog 5 এ
// i2c ডেটাতে SDA কানেক্ট করুন - "168 /" 328 Arduino Uno / Duemilanove / etc thats Analog 4 এ
// EOC ব্যবহার করা হয় না, এটি রূপান্তরের সমাপ্তি নির্দেশ করে
// XCLR একটি রিসেট পিন, এছাড়াও এখানে ব্যবহার করা হয় না

Adafruit_BMP085 bmp;

অকার্যকর সেটআপ () (
Serial.begin (9600);
যদি (! bmp.begin ()) (
Serial.println ("একটি বৈধ BMP085 সেন্সর খুঁজে পাওয়া যায়নি, তারের পরীক্ষা করুন!");
যখন (1) ()
}
}

অকার্যকর লুপ () (
Serial.print ("তাপমাত্রা =");
Serial.print (bmp.readTemperature ());
Serial.println ("*C");

Serial.print ("চাপ =");
Serial.print (bmp.readPressure ());
Serial.println ("Pa");

// "স্ট্যান্ডার্ড" ব্যারোমেট্রিক ধরে উচ্চতা গণনা করুন
// চাপ 1013.25 মিলিবার = 101325 প্যাসকেল

Serial.print ("উচ্চতা =");
Serial.print (bmp.readAltitude ());
Serial.println ("মিটার");

Serial.print ("সীললেভেলে চাপ (গণনা করা) =");
Serial.print (bmp.readSealevelPressure ());
Serial.println ("Pa");

// আপনি উচ্চতার আরও সুনির্দিষ্ট পরিমাপ পেতে পারেন
// যদি আপনি জানেন যে বর্তমান সমুদ্রপৃষ্ঠের চাপ যা হবে
// আবহাওয়া এবং এই ধরনের সঙ্গে পরিবর্তিত হয়। যদি 1015 মিলিবার হয়
// যা 101500 প্যাসকেলের সমান।

Serial.print ("Real altitude =");
Serial.print (bmp.readAltitude ( 101500 ));
Serial.println ("মিটার");

Serial.println ();
বিলম্ব (500);
}

এই স্কেচ আউটপুট

  • তাপমাত্রা = xx.xx * C - তাপমাত্রা ডিগ্রি সেলসিয়াসে
  • চাপ = xx Pa - প্যাসকেলে বায়ুমণ্ডলীয় চাপ
  • উচ্চতা = xx.xx মিটার - মিটারে উচ্চতা
  • সমুদ্রপৃষ্ঠে চাপ (গণনা করা) = xx Pa - প্যাসকেলে বায়ুমণ্ডলীয় চাপ (সমুদ্র সমতলের সাথে সম্পর্কিত (গণনা করা))
  • বাস্তব উচ্চতা = хх.хх মিটার - প্রকৃত উচ্চতা (গণনা করা)

mmHg এ বায়ুমণ্ডলীয় চাপ প্রদর্শন করার জন্য, বেশ কয়েকটি লাইন পরিবর্তন করতে হবে

Serial.print ("চাপ =");

Serial.print (bmp.readPressure () / 133.322); // Pa তে প্রাপ্ত মান 133.322 দ্বারা ভাগ করা হয় এবং আমরা mm Hg পাই।

Serial.println ("mm"); // এবং সেই অনুযায়ী "পা" থেকে "মিমি" পরিবর্তন করুন

Serial.print ("সীললেভেলে চাপ (গণনা করা) =");

Serial.print (bmp.readSealevelPressure () / 133.322);

Serial.println ("mm");

BMP180 সেন্সর সেটআপ

বায়ুমণ্ডলীয় চাপ পরিমাপের স্থান, বায়ু তাপমাত্রা এবং আবহাওয়ার উপর নির্ভর করে। সমুদ্রপৃষ্ঠে, গড় বার্ষিক বায়ুমণ্ডলীয় চাপ হল p n = 1013.25 mbar = 101.325 kPa (স্বাভাবিক চাপ) বার্ষিক গড় তাপমাত্রা 15 ° C। এবং যখন প্রতি 8 মিটারে বাড়তে থাকে, তখন বায়ুমণ্ডলীয় চাপ 100 Pa = 1 mbar কমে যায়।

একটি আরো সঠিক উচ্চতা পরিমাপ প্রাপ্ত করা যেতে পারে. যদি আমরা আমাদের স্থানাঙ্কের জন্য সমুদ্রপৃষ্ঠের উপরে বর্তমান চাপ জানি। এটি করার জন্য, আপনাকে Google থেকে মানচিত্র ব্যবহার করে সমুদ্রপৃষ্ঠ থেকে আমাদের প্রকৃত উচ্চতা খুঁজে বের করতে হবে, এর জন্য আমরা যাই লিঙ্ক... Google থেকে একটি মানচিত্র সহ উইন্ডোতে, আমরা আমাদের অবস্থান খুঁজে পাই এবং মানচিত্রে একটি চিহ্ন স্থাপন করতে বাম মাউস বোতামে ক্লিক করি এবং আমরা আমাদের পয়েন্টের জন্য সমুদ্রপৃষ্ঠ থেকে উচ্চতার ডেটা পাই৷ এছাড়াও, আমরা কোন তলায় আছি তা বিবেচনা করতে ভুলবেন না এবং আমাদের ডেটাতে মেঝের উচ্চতা যোগ করুন।

সমুদ্রপৃষ্ঠে স্বাভাবিক বায়ুমণ্ডলীয় চাপ প্রায় 101.3 kPa বা 101,325 Pa। অনলাইন ক্যালকুলেটর ব্যবহার করে পছন্দসই মান পাওয়া সহজ - বিভিন্ন উচ্চতায় বায়ুমণ্ডলীয় চাপের গণনা এবং অনুবাদের জন্য (mmHg.) v (পা)একটি সহজ সূত্র আছে Pa = mmHg শিল্প. * 133,322 ... উচ্চতা ক্যালিব্রেট করতে, আমাদের লাইনে পরিবর্তন করতে হবে

সিরিয়াল। প্রিন্ট (bmp. readAltitude (101500));

যেখানে 101500 মানের পরিবর্তে আমরা আমাদের গণনা করা মান লিখি।

জন্য সতর্কতা অবলম্বন জিনিস

বাতাস দিন:মনে রাখবেন যে BMP180 এর চাপ পরিমাপ করার জন্য পরিবেষ্টিত বায়ু প্রয়োজন, তাই এটি একটি সিল করা ঘেরে স্থাপন করা উচিত নয়।

তবে খুব বেশি বাতাস নয়:অন্যদিকে, দ্রুত চলমান বায়ু প্রবাহ বা বাতাসের সংস্পর্শে স্বল্পমেয়াদী চাপের ওঠানামা হতে পারে যা আপনার পড়াকে প্রভাবিত করবে। শক্তিশালী বায়ু স্রোত থেকে ডিভাইস রক্ষা করুন.

তাপমাত্রা সীমা:যেহেতু চাপ পরিমাপ করার জন্য একটি সঠিক তাপমাত্রা রিডিং প্রয়োজন, তাই সতর্ক থাকুন যাতে ডিভাইসটি তাপমাত্রায় হঠাৎ পরিবর্তন না করে এবং এটিকে গরম অংশ এবং তাপের অন্যান্য উত্স থেকে দূরে রাখে।

আর্দ্রতা: BMP180 আর্দ্রতার প্রতি সংবেদনশীল এবং জলের সংস্পর্শে আসা উচিত নয়।

আলো:আশ্চর্যজনকভাবে, BMP180 সেন্সর আলোর প্রতি সংবেদনশীল যা চিপের উপরের গর্তের মাধ্যমে ডিভাইসে প্রবেশ করতে পারে। সর্বাধিক নির্ভুলতার জন্য, পরিবেষ্টিত আলো থেকে চিপটিকে রক্ষা করুন।