সুচিপত্র:

আর্দ্রতা, চাপ এবং তাপমাত্রা গণনা BME280 এবং ফোটন ইন্টারফেসিং ব্যবহার করে।: 6 ধাপ
আর্দ্রতা, চাপ এবং তাপমাত্রা গণনা BME280 এবং ফোটন ইন্টারফেসিং ব্যবহার করে।: 6 ধাপ

ভিডিও: আর্দ্রতা, চাপ এবং তাপমাত্রা গণনা BME280 এবং ফোটন ইন্টারফেসিং ব্যবহার করে।: 6 ধাপ

ভিডিও: আর্দ্রতা, চাপ এবং তাপমাত্রা গণনা BME280 এবং ফোটন ইন্টারফেসিং ব্যবহার করে।: 6 ধাপ
ভিডিও: Arduino Nano, BME280 এবং SSD1306 OLED আবহাওয়া স্টেশন 2024, জুলাই
Anonim
আর্দ্রতা, চাপ এবং তাপমাত্রা গণনা BME280 এবং ফোটন ইন্টারফেসিং ব্যবহার করে।
আর্দ্রতা, চাপ এবং তাপমাত্রা গণনা BME280 এবং ফোটন ইন্টারফেসিং ব্যবহার করে।

আমরা বিভিন্ন প্রকল্পের মধ্যে আসি যার তাপমাত্রা, চাপ এবং আর্দ্রতা পর্যবেক্ষণ প্রয়োজন। এইভাবে আমরা বুঝতে পারি যে এই প্যারামিটারগুলি প্রকৃতপক্ষে বিভিন্ন বায়ুমণ্ডলীয় অবস্থার মধ্যে একটি সিস্টেমের কাজের দক্ষতার অনুমান করতে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। শিল্প স্তর এবং ব্যক্তিগত ব্যবস্থায় উভয়ই একটি সর্বোত্তম তাপমাত্রা, আর্দ্রতা এবং ব্যারোমেট্রিক চাপ স্তর সিস্টেমের পর্যাপ্ত পারফরম্যান্সের জন্য প্রয়োজনীয়।

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

ধাপ 1: BME280 অনুসন্ধান

BME280 অনুসন্ধান
BME280 অনুসন্ধান

ইলেকট্রনিক সেক্টর BME280 সেন্সর, তাপমাত্রা, ব্যারোমেট্রিক চাপ এবং আর্দ্রতা সহ একটি পরিবেশ সেন্সর দিয়ে তাদের খেলাকে এগিয়ে নিয়ে গেছে! এই সেন্সরটি সব ধরণের আবহাওয়া/পরিবেশগত অনুভূতির জন্য দুর্দান্ত এবং এমনকি I2C তেও ব্যবহার করা যেতে পারে।

এই নির্ভুলতা সেন্সর BME280 হল humidity 3% নির্ভুলতার সাথে আর্দ্রতা পরিমাপের জন্য সর্বোত্তম সেন্সিং সমাধান, bar 1 hPa পরম সঠিকতা সহ ব্যারোমেট্রিক চাপ এবং ± 1.0 ° C নির্ভুলতার সাথে তাপমাত্রা। কারণ উচ্চতার সাথে চাপ পরিবর্তিত হয়, এবং চাপের পরিমাপ এত ভাল হয়, আপনি এটি al 1 মিটার বা আরও ভাল নির্ভুলতা সহ একটি আলটিমিটার হিসাবেও ব্যবহার করতে পারেন! চাপ সেন্সর এবং পরিবেষ্টিত তাপমাত্রা অনুমানের জন্য ব্যবহার করা যেতে পারে। BME280 এর সাথে পরিমাপ ব্যবহারকারী দ্বারা সঞ্চালিত বা নিয়মিত বিরতিতে সঞ্চালিত হতে পারে।

ডেটশীট: BME280 সেন্সরের ডেটশীট প্রিভিউ বা ডাউনলোড করতে ক্লিক করুন।

পদক্ষেপ 2: হার্ডওয়্যারের প্রয়োজনীয়তার তালিকা

হার্ডওয়্যারের প্রয়োজনীয়তার তালিকা
হার্ডওয়্যারের প্রয়োজনীয়তার তালিকা

আমরা সম্পূর্ণরূপে Dcube স্টোর যন্ত্রাংশ ব্যবহার করেছি কারণ সেগুলি ব্যবহার করা সহজ, এবং একটি সেন্টিমিটার গ্রিডে সুন্দরভাবে ফিটিং করা সবকিছু সম্পর্কে কিছু সত্যিই আমাদের যাচ্ছে। আপনি যা চান তা ব্যবহার করতে পারেন, তবে তারের চিত্রটি ধরে নেবে যে আপনি এই অংশগুলি ব্যবহার করছেন।

  • BME280 সেন্সর I²C মিনি মডিউল
  • কণা ফোটনের জন্য I²C শিল্ড
  • কণা ফোটন
  • I²C কেবল
  • পাওয়ার অ্যাডাপ্টার

ধাপ 3: ইন্টারফেসিং

ইন্টারফেসিং
ইন্টারফেসিং

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

BME280 I2C এর উপর কাজ করবে। সেন্সরের প্রতিটি ইন্টারফেসকে কিভাবে ওয়্যার আপ করতে হয় তা দেখানো হচ্ছে ওয়্যারিং ডায়াগ্রামের উদাহরণ। বাক্সের বাইরে, বোর্ডটি একটি I2C ইন্টারফেসের জন্য কনফিগার করা হয়েছে, যেমন আপনি অন্যথায় অজ্ঞেয়বাদী হলে আমরা এই ইন্টারফেসিং ব্যবহার করার পরামর্শ দিই। আপনার প্রয়োজন শুধু চারটি তারের! VCC, Gnd, SCL এবং SDA পিনের জন্য মাত্র চারটি সংযোগ প্রয়োজন এবং এগুলি I2C তারের সাহায্যে সংযুক্ত। এই সংযোগগুলি উপরের ছবিতে প্রদর্শিত হয়েছে।

ধাপ 4: তাপমাত্রা, চাপ এবং আর্দ্রতা পর্যবেক্ষণ কোড

তাপমাত্রা, চাপ এবং আর্দ্রতা পর্যবেক্ষণ কোড
তাপমাত্রা, চাপ এবং আর্দ্রতা পর্যবেক্ষণ কোড
তাপমাত্রা, চাপ এবং আর্দ্রতা পর্যবেক্ষণ কোড
তাপমাত্রা, চাপ এবং আর্দ্রতা পর্যবেক্ষণ কোড

এটি চালানোর জন্য আমরা যে কোডটি ব্যবহার করব তার পরিষ্কার সংস্করণ এখানে পাওয়া যায়।

Arduino এর সাথে সেন্সর মডিউল ব্যবহার করার সময়, আমরা application.h এবং spark_wiring_i2c.h লাইব্রেরি অন্তর্ভুক্ত করি। "application.h" এবং spark_wiring_i2c.h লাইব্রেরিতে ফাংশন রয়েছে যা সেন্সর এবং কণার মধ্যে i2c যোগাযোগ সহজ করে।

ডিভাইস পর্যবেক্ষণের জন্য ওয়েবপেজ খুলতে এখানে ক্লিক করুন

আপনার বোর্ডে কোড আপলোড করুন এবং এটি কাজ শুরু করা উচিত! ছবিতে দেখানো সব তথ্য ওয়েবপেজে পাওয়া যাবে।

কোড নিচে দেওয়া হল:

// একটি স্বাধীন ইচ্ছা লাইসেন্স দিয়ে বিতরণ করা হয়। // BME280 // এই কোডটি BME280_I2CS I2C মিনি মডিউলের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে ControlEverything.com থেকে উপলব্ধ। #অন্তর্ভুক্ত #অন্তর্ভুক্ত // BME280 I2C ঠিকানা হল 0x76 (108) #সংজ্ঞায়িত করুন 0x76 ডবল cTemp = 0, fTemp = 0, চাপ = 0, আর্দ্রতা = 0; অকার্যকর সেটআপ () {// সেট পরিবর্তনশীল Particle.variable ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Particle.variable ("চাপ", চাপ); Particle.variable ("আর্দ্রতা", আর্দ্রতা); // মাস্টার ওয়্যার হিসাবে I2C যোগাযোগ শুরু করুন। // সিরিয়াল যোগাযোগ শুরু করুন, বড রেট = 9600 সিরিয়াল.বেগিন (9600) সেট করুন; বিলম্ব (300); } অকার্যকর লুপ () {স্বাক্ষরবিহীন int b1 [24]; স্বাক্ষরবিহীন int ডেটা [8]; int dig_H1 = 0; জন্য (int i = 0; i <24; i ++) {// স্টার্ট I2C ট্রান্সমিশন Wire.beginTransmission (Addr); // ডাটা রেজিস্টার Wire.write নির্বাচন করুন ((136+i)); // I2C ট্রান্সমিশন Wire.endTransmission () বন্ধ করুন; // Wire.requestFrom (Addr, 1) থেকে 1 বাইট ডেটা অনুরোধ করুন; // 24 বাইট ডেটা পড়ুন যদি (Wire.available () == 1) {b1 = Wire.read (); }} // ডেটা রূপান্তর করুন // temp coefficents int dig_T1 = (b1 [0] & 0xff) + ((b1 [1] & 0xff) * 256); int dig_T2 = b1 [2] + (b1 [3] * 256); int dig_T3 = b1 [4] + (b1 [5] * 256); // চাপ সহগ int dig_P2 = b1 [8] + (b1 [9] * 256); int dig_P3 = b1 [10] + (b1 [11] * 256); int dig_P4 = b1 [12] + (b1 [13] * 256); int dig_P5 = b1 [14] + (b1 [15] * 256); int dig_P6 = b1 [16] + (b1 [17] * 256); int dig_P7 = b1 [18] + (b1 [19] * 256); int dig_P8 = b1 [20] + (b1 [21] * 256); int dig_P9 = b1 [22] + (b1 [23] * 256); জন্য (int i = 0; i <7; i ++) {// I2C Transmission Wire.beginTransmission (Addr); // ডাটা রেজিস্টার Wire.write নির্বাচন করুন ((225+i)); // I2C ট্রান্সমিশন Wire.endTransmission () বন্ধ করুন; // Wire.requestFrom (Addr, 1) ডেটা 1 বাইট অনুরোধ করুন; // 7 বাইট ডেটা পড়ুন যদি (Wire.available () == 1) {b1 = Wire.read (); }} // ডেটা রূপান্তর করুন // আর্দ্রতা সহগগুলি int dig_H2 = b1 [0] + (b1 [1] * 256); int dig_H3 = b1 [2] & 0xFF; int dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF); int dig_H5 = (b1 [4] / 16) + (b1 [5] * 16); int dig_H6 = b1 [6]; // I2C ট্রান্সমিশন ওয়্যার শুরু করুন। // ডাটা রেজিস্টার Wire.write (161) নির্বাচন করুন; // I2C ট্রান্সমিশন Wire.endTransmission () বন্ধ করুন; // Wire.requestFrom (Addr, 1) থেকে 1 বাইট ডেটা অনুরোধ করুন; // ডেটার 1 বাইট পড়ুন যদি (Wire.available () == 1) {dig_H1 = Wire.read (); } // I2C ট্রান্সমিশন ওয়্যার শুরু করুন। // নিয়ন্ত্রণ আর্দ্রতা রেজিস্টার Wire.write (0xF2) নির্বাচন করুন; // নমুনা হারের উপর আর্দ্রতা = 1 Wire.write (0x01); // I2C ট্রান্সমিশন Wire.endTransmission () বন্ধ করুন; // I2C ট্রান্সমিশন ওয়্যার শুরু করুন। // নিয়ন্ত্রণ পরিমাপ রেজিস্টার Wire.write (0xF4) নির্বাচন করুন; // নরমাল মোড, টেম্প এবং স্যাম্পলিং রেটের উপর চাপ = 1 Wire.write (0x27); // I2C ট্রান্সমিশন Wire.endTransmission () বন্ধ করুন; // I2C ট্রান্সমিশন ওয়্যার শুরু করুন। // কনফিগ রেজিস্টার Wire.write (0xF5) নির্বাচন করুন; // Stand_by সময় = 1000ms Wire.write (0xA0); // I2C ট্রান্সমিশন Wire.endTransmission () বন্ধ করুন; জন্য (int i = 0; i <8; i ++) {// I2C ট্রান্সমিশন ওয়্যার শুরু করুন। // ডাটা রেজিস্টার Wire.write নির্বাচন করুন ((247+i)); // I2C ট্রান্সমিশন Wire.endTransmission () বন্ধ করুন; // Wire.requestFrom (Addr, 1) ডেটা 1 বাইট অনুরোধ করুন; // 8 বাইট ডেটা পড়ুন যদি (Wire.available () == 1) {data = Wire.read (); }} // 19-বিট দীর্ঘ adc_p = (((long) (data [0] & 0xFF) * 65536) + ((long) (data [1] & 0xFF) * 256) + (দীর্ঘ) (ডেটা [2] এবং 0xF0)) / 16; long adc_t = (((long) (data [3] & 0xFF) * 65536) + ((long) (data [4] & 0xFF) * 256) + (long) (data [5] & 0xF0)) / 16; // আর্দ্রতা ডেটা দীর্ঘ adc_h = ((long) (data [6] & 0xFF) * 256 + (long) (data [7] & 0xFF)) রূপান্তর করুন; // তাপমাত্রা অফসেট গণনা দ্বিগুণ var1 = (((দ্বিগুণ) adc_t) / 16384.0 - ((দ্বিগুণ) dig_T1) / 1024.0) * ((দ্বিগুণ) dig_T2); double var2 = ((((double) adc_t) / 131072.0 - ((double) dig_T1) / 8192.0) * (((double) adc_t) / 131072.0 - ((double) dig_T1) / 8192.0)) * ((double) dig_T3); ডবল t_fine = (দীর্ঘ) (var1 + var2); ডবল cTemp = (var1 + var2) / 5120.0; ডবল fTemp = cTemp * 1.8 + 32; // চাপ অফসেট গণনা var1 = ((ডবল) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((ডবল) dig_P6) / 32768.0; var2 = var2 + var1 * ((ডবল) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((ডবল) dig_P4) * 65536.0); var1 = (((double) dig_P3) * var1 * var1 / 524288.0 + ((double) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((ডবল) dig_P1); ডাবল পি = 1048576.0 - (ডবল) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((ডবল) dig_P9) * p * p / 2147483648.0; var2 = p * ((double) dig_P8) / 32768.0; দ্বিগুণ চাপ = (p + (var1 + var2 + ((double) dig_P7)) / 16.0) / 100; // আর্দ্রতা অফসেট গণনা দ্বিগুণ var_H = (((দ্বিগুণ) t_fine) - 76800.0); var_H = (adc_h - (dig_H4 * 64.0 + dig_H5 / 16384.0 * var_H)) * (dig_H2 / 65536.0 * (1.0 + dig_H6 / 67108864.0 * var_H * (1.0 + dig_H3 / 67108864.0 * var_H))); দ্বিগুণ আর্দ্রতা = var_H * (1.0 - dig_H1 * var_H / 524288.0); যদি (আর্দ্রতা> 100.0) {আর্দ্রতা = 100.0; } অন্যথায় যদি (আর্দ্রতা <0.0) {আর্দ্রতা = 0.0; } // ড্যাশবোর্ড Particle.publish এ আউটপুট ডেটা ("সেলসিয়াস তাপমাত্রা:", স্ট্রিং (cTemp)); Particle.publish ("ফারেনহাইট তাপমাত্রা:", স্ট্রিং (fTemp)); Particle.publish ("চাপ:", স্ট্রিং (চাপ)); Particle.publish ("আপেক্ষিক আর্দ্রতা:", স্ট্রিং (আর্দ্রতা)); বিলম্ব (1000); }

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

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

BME280 তাপমাত্রা, চাপ এবং আপেক্ষিক আর্দ্রতা সেন্সরের বিভিন্ন শিল্প অ্যাপ্লিকেশন যেমন তাপমাত্রা পর্যবেক্ষণ, কম্পিউটার পেরিফেরাল তাপ সুরক্ষা, শিল্পে চাপ পর্যবেক্ষণ। আমরা এই সেন্সরটিকে আবহাওয়া স্টেশন অ্যাপ্লিকেশনগুলির পাশাপাশি গ্রিনহাউস মনিটরিং সিস্টেমেও ব্যবহার করেছি।

অন্যান্য অ্যাপ্লিকেশন অন্তর্ভুক্ত হতে পারে:

  1. প্রসঙ্গ সচেতনতা, যেমন ত্বক সনাক্তকরণ, রুম পরিবর্তন সনাক্তকরণ।
  2. ফিটনেস পর্যবেক্ষণ / সুস্থতা - শুষ্কতা বা উচ্চ তাপমাত্রার বিষয়ে সতর্কতা।
  3. ভলিউম এবং বায়ু প্রবাহের পরিমাপ।
  4. হোম অটোমেশন নিয়ন্ত্রণ।
  5. নিয়ন্ত্রণ গরম, বায়ুচলাচল, শীতাতপ নিয়ন্ত্রণ (HVAC)।
  6. জিনিসের ইন্টারনেট।
  7. জিপিএস বর্ধন (উদা সময়-থেকে-প্রথম সংশোধন
  8. ইন্ডোর নেভিগেশন (মেঝে সনাক্তকরণ, লিফট সনাক্তকরণ পরিবর্তন)।
  9. আউটডোর নেভিগেশন, অবসর এবং ক্রীড়া অ্যাপ্লিকেশন।
  10. আবহাওয়ার পূর্বাভাস.
  11. উল্লম্ব বেগ ইঙ্গিত (বৃদ্ধি/ডুবে যাওয়ার গতি)..

ধাপ 6: ভিডিও টিউটোরিয়াল

প্রকল্পের ইন্টারফেসিং এবং সমাপ্তির সমস্ত ধাপ অতিক্রম করতে আমাদের ভিডিও টিউটোরিয়ালটি দেখুন।

অন্যান্য সেন্সরের ইন্টারফেসিং এবং ওয়ার্কিং ব্লগের জন্য আমাদের সাথে থাকুন।

প্রস্তাবিত: