সুচিপত্র:

জাভাতে BME280 সহ রাস্পবেরি পাই ব্যবহার করে ব্যক্তিগত আবহাওয়া কেন্দ্র: 6 টি ধাপ
জাভাতে BME280 সহ রাস্পবেরি পাই ব্যবহার করে ব্যক্তিগত আবহাওয়া কেন্দ্র: 6 টি ধাপ

ভিডিও: জাভাতে BME280 সহ রাস্পবেরি পাই ব্যবহার করে ব্যক্তিগত আবহাওয়া কেন্দ্র: 6 টি ধাপ

ভিডিও: জাভাতে BME280 সহ রাস্পবেরি পাই ব্যবহার করে ব্যক্তিগত আবহাওয়া কেন্দ্র: 6 টি ধাপ
ভিডিও: জাভাতে কিভাবে User Input দিতে হয়। 2024, জুলাই
Anonim
Image
Image
প্রয়োজনীয় যন্ত্রপাতির বিল
প্রয়োজনীয় যন্ত্রপাতির বিল

খারাপ আবহাওয়া সবসময় একটি জানালা দিয়ে খারাপ দেখায়।

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

ধাপ 1: অপরিহার্য যন্ত্রপাতির বিল

প্রয়োজনীয় যন্ত্রপাতির বিল
প্রয়োজনীয় যন্ত্রপাতির বিল
প্রয়োজনীয় যন্ত্রপাতির বিল
প্রয়োজনীয় যন্ত্রপাতির বিল
প্রয়োজনীয় যন্ত্রপাতির বিল
প্রয়োজনীয় যন্ত্রপাতির বিল

1. একটি রাস্পবেরি পাই

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

2. রাস্পবেরি পাই এর জন্য I²C শিল্ড

INPI2 (I2C অ্যাডাপ্টার) রাস্পবেরি পাই 2/3 একটি I²C পোর্ট প্রদান করে যা একাধিক I²C ডিভাইসের সাথে ব্যবহারের জন্য। এটি Dcube স্টোরে পাওয়া যায়

3. ডিজিটাল আর্দ্রতা, চাপ এবং তাপমাত্রা সেন্সর, BME280

BME280 একটি আর্দ্রতা, চাপ এবং তাপমাত্রা সেন্সর যার দ্রুত প্রতিক্রিয়া সময় এবং উচ্চ সামগ্রিক নির্ভুলতা রয়েছে। আমরা এই সেন্সরটি Dcube স্টোর থেকে কিনেছি

4. I²C কানেক্টিং কেবল

আমাদের D²cube স্টোরে I²C কানেক্টিং ক্যাবল পাওয়া যায়

5. মাইক্রো ইউএসবি কেবল

মাইক্রো ইউএসবি কেবল পাওয়ার সাপ্লাই রাস্পবেরি পাই পাওয়ার জন্য একটি আদর্শ পছন্দ।

6. ইথারনেটকেবল/ওয়াইফাই অ্যাডাপ্টারের মাধ্যমে ইন্টারনেট অ্যাক্সেস ব্যাখ্যা করুন

আপনার রাস্পবেরি পাইকে ইন্টারনেটের সাথে সংযুক্ত করা প্রথম জিনিস যা আপনি করতে চান। আমরা ইথারনেট কেবল ব্যবহার করে সংযোগ করতে পারি। আরেকটি সম্ভাবনা হল যে আপনি একটি USB ওয়্যারলেস অ্যাডাপ্টার ব্যবহার করে একটি বেতার নেটওয়ার্কের সাথে সংযোগ স্থাপন করতে পারেন।

7. HDMI কেবল (ডিসপ্লে এবং কানেক্টিভিটি ক্যাবল)

যেকোন HDMI/DVI মনিটর এবং যেকোনো টিভি Pi- এর ডিসপ্লে হিসেবে কাজ করা উচিত। কিন্তু এটা alচ্ছিক। দূরবর্তী অ্যাক্সেস (যেমন-এসএসএইচ) সম্ভাবনাও উড়িয়ে দেওয়া যায় না। আপনি PUTTY সফটওয়্যার দিয়েও অ্যাক্সেস পেতে পারেন।

পদক্ষেপ 2: সেটআপের জন্য হার্ডওয়্যার সংযোগ

সেটআপের জন্য হার্ডওয়্যার সংযোগ
সেটআপের জন্য হার্ডওয়্যার সংযোগ
সেটআপের জন্য হার্ডওয়্যার সংযোগ
সেটআপের জন্য হার্ডওয়্যার সংযোগ

দেখানো পরিকল্পিত অনুযায়ী সার্কিট তৈরি করুন।

শেখার সময়, আমরা হার্ডওয়্যার এবং সফ্টওয়্যার জ্ঞানের বিষয়ে ইলেকট্রনিক্সের মূল বিষয়গুলি ভালভাবে পেয়েছিলাম। আমরা এই প্রকল্পের জন্য একটি সাধারণ ইলেকট্রনিক্স স্কিম্যাটিক তৈরি করতে চেয়েছিলাম। ইলেকট্রনিক স্কিম্যাটিক্স ইলেকট্রনিক্সের জন্য একটি ব্লুপ্রিন্টের মত। একটি ব্লুপ্রিন্ট তৈরি করুন এবং নকশাটি সাবধানে অনুসরণ করুন। আমরা এখানে ইলেকট্রনিক্সের কিছু বেসিক প্রয়োগ করেছি। যুক্তি আপনাকে A থেকে B পর্যন্ত নিয়ে যায়, কল্পনা আপনাকে সর্বত্র নিয়ে যাবে!

রাস্পবেরি পাই এবং I²C শিল্ডের সংযোগ

প্রথমে রাস্পবেরি পাই নিন এবং তার উপর I²C শিল্ড (ইনভার্ড ফেসিং I²C পোর্ট সহ) রাখুন। Pi এর GPIO পিনের উপর আলতো করে শিল্ড টিপুন এবং আমরা এই ধাপটি পাই এর মতো সহজভাবে সম্পন্ন করেছি (ছবিটি দেখুন)।

সেন্সর এবং রাস্পবেরি পাই এর সংযোগ

সেন্সর নিন এবং এর সাথে I²C তারের সংযোগ করুন। নিশ্চিত করুন যে I²C আউটপুট সর্বদা I²C ইনপুটের সাথে সংযুক্ত। রাস্পবেরি পাই এর জন্য অনুসরণ করতে হবে I²C ieldাল তার উপর মাউন্ট করা GPIO পিনগুলির সাথে আমাদের কাছে I²C শিল্ড এবং সংযোগকারী তারগুলি রয়েছে একটি খুব বড় স্বস্তি এবং একটি খুব বড় সুবিধা হিসাবে আমরা কেবল বাকি রয়েছি প্লাগ এবং প্লে বিকল্প। আর কোন পিন এবং তারের সমস্যা নেই এবং তাই, বিভ্রান্তি চলে গেছে। কেবল তারের জালে নিজেকে কল্পনা করুন এবং এতে প্রবেশ করুন। এর থেকে স্বস্তি। এটি জিনিসগুলিকে জটিল করে তোলে।

দ্রষ্টব্য: বাদামী তারের সর্বদা একটি ডিভাইসের আউটপুট এবং অন্য ডিভাইসের ইনপুটের মধ্যে গ্রাউন্ড (GND) সংযোগ অনুসরণ করা উচিত।

ইন্টারনেট সংযোগ একটি প্রয়োজন

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

সার্কিটের ক্ষমতা

রাস্পবেরি পাই এর পাওয়ার জ্যাকের মধ্যে মাইক্রো ইউএসবি কেবল প্লাগ করুন। পাঞ্চ আপ এবং ভয়েলা! সবকিছু ঠিক আছে এবং আমরা অবিলম্বে শুরু করব।

ডিসপ্লের সাথে সংযোগ

আমরা হয় HDMI ক্যাবলকে মনিটর বা টিভিতে সংযুক্ত করতে পারি। আমরা একটি রাস্পবেরি পাই অ্যাক্সেস করতে পারি এটি -SSH ব্যবহার করে মনিটরের সাথে সংযুক্ত না করে (অন্য কম্পিউটার থেকে পাই এর কমান্ড লাইন অ্যাক্সেস করুন)। আপনি এর জন্য PUTTY সফটওয়্যারটিও ব্যবহার করতে পারেন। এই বিকল্পটি উন্নত ব্যবহারকারীদের জন্য তাই আমরা এখানে বিস্তারিতভাবে তা কভার করব না।

আমি শুনেছি সেখানে মন্দা হতে চলেছে, আমি অংশগ্রহণ না করার সিদ্ধান্ত নিয়েছি।

ধাপ 3: জাভাতে রাস্পবেরি পাই প্রোগ্রামিং

জাভাতে রাস্পবেরি পাই প্রোগ্রামিং
জাভাতে রাস্পবেরি পাই প্রোগ্রামিং

রাস্পবেরি পাই এবং BME280 সেন্সরের জন্য জাভা কোড। এটি আমাদের গিটহাব সংগ্রহস্থলে পাওয়া যায়।

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

কোডটি এর সহজতম রূপ যা আপনি কল্পনা করতে পারেন এবং এতে আপনার কোনও সমস্যা হওয়া উচিত নয় তবে আপনার আছে কিনা তা জিজ্ঞাসা করুন। এমনকি যদি আপনি একটি হাজার জিনিস জানেন, তবুও এমন কাউকে জিজ্ঞাসা করুন যিনি জানেন।

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

// একটি স্বাধীন ইচ্ছা লাইসেন্স দিয়ে বিতরণ করা হয়। // BME280 // এই কোডটি BME280_I2CS I2C মিনি মডিউলের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে ControlEverything.com থেকে উপলব্ধ। //

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

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

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

{পাবলিক স্ট্যাটিক ভয়েড মেইন (স্ট্রিং আর্গস ) ব্যতিক্রম নিক্ষেপ করে {// I2C বাস তৈরি করুন I2CBus বাস = I2CFactory.getInstance (I2CBus. BUS_1); // I2C ডিভাইস পান, BME280 I2C ঠিকানা হল 0x76 (108) I2CDevice device = bus.getDevice (0x76); // ঠিকানা 0x88 (136) বাইট থেকে 24 বাইট ডেটা পড়ুন b1 = নতুন বাইট [24]; device.read (0x88, b1, 0, 24); // ডেটা রূপান্তর করুন // temp coefficients int dig_T1 = (b1 [0] & 0xFF) + ((b1 [1] & 0xFF) * 256); int dig_T2 = (b1 [2] & 0xFF) + ((b1 [3] & 0xFF) * 256); যদি (dig_T2> 32767) {dig_T2 -= 65536; } int dig_T3 = (b1 [4] & 0xFF) + ((b1 [5] & 0xFF) * 256); যদি (dig_T3> 32767) {dig_T3 -= 65536; } // চাপ সহগ int int_1 = int dig_P2 = (b1 [8] & 0xFF) + ((b1 [9] & 0xFF) * 256); যদি (dig_P2> 32767) {dig_P2 -= 65536; } int dig_P3 = (b1 [10] & 0xFF) + ((b1 [11] & 0xFF) * 256); যদি (dig_P3> 32767) {dig_P3 -= 65536; } int dig_P4 = (b1 [12] & 0xFF) + ((b1 [13] & 0xFF) * 256); যদি (dig_P4> 32767) {dig_P4 -= 65536; } int dig_P5 = (b1 [14] & 0xFF) + ((b1 [15] & 0xFF) * 256); যদি (dig_P5> 32767) {dig_P5 -= 65536; } int dig_P6 = (b1 [16] & 0xFF) + ((b1 [17] & 0xFF) * 256); যদি (dig_P6> 32767) {dig_P6 -= 65536; } int dig_P7 = (b1 [18] & 0xFF) + ((b1 [19] & 0xFF) * 256); যদি (dig_P7> 32767) {dig_P7 -= 65536; } int dig_P8 = (b1 [20] & 0xFF) + ((b1 [21] & 0xFF) * 256); যদি (dig_P8> 32767) {dig_P8 -= 65536; } int dig_P9 = (b1 [22] & 0xFF) + ((b1 [23] & 0xFF) * 256); যদি (dig_P9> 32767) {dig_P9 -= 65536; } // ঠিকানা থেকে 1 বাইট ডেটা পড়ুন 0xA1 (161) int dig_H1 = ((বাইট) device.read (0xA1) & 0xFF); // ঠিকানা 0xE1 (225) ডিভাইস থেকে 7 বাইট ডেটা পড়ুন (0xE1, b1, 0, 7); // তথ্য রূপান্তর করুন // আর্দ্রতা সহগগুলি int dig_H2 = (b1 [0] & 0xFF) + (b1 [1] * 256); যদি (dig_H2> 32767) {dig_H2 -= 65536; } int dig_H3 = b1 [2] & 0xFF; int dig_H4 = ((b1 [3] & 0xFF) * 16) + (b1 [4] & 0xF); যদি (dig_H4> 32767) {dig_H4 -= 65536; } int dig_H5 = ((b1 [4] & 0xFF) / 16) + ((b1 [5] & 0xFF) * 16); যদি (dig_H5> 32767) {dig_H5 -= 65536; } int dig_H6 = b1 [6] & 0xFF; যদি (dig_H6> 127) {dig_H6 -= 256; } // কন্ট্রোল আর্দ্রতা রেজিস্টার // নমুনার হারের উপর আর্দ্রতা = 1 device.write (0xF2, (byte) 0x01); // নিয়ন্ত্রণ পরিমাপ রেজিস্টার নির্বাচন করুন // সাধারণ মোড, টেম্প এবং স্যাম্পলিং রেটের উপর চাপ = 1 ডিভাইস। রাইট (0xF4, (বাইট) 0x27); // কনফিগ রেজিস্টার নির্বাচন করুন // Stand_by time = 1000 ms device.write (0xF5, (byte) 0xA0); // ঠিকানা 0xF7 (247) থেকে 8 বাইটের তথ্য পড়ুন // চাপ msb1, চাপ msb, চাপ lsb, temp msb1, temp msb, temp lsb, আর্দ্রতা lsb, আর্দ্রতা msb বাইট ডেটা = নতুন বাইট [8]; device.read (0xF7, data, 0, 8); // চাপ এবং তাপমাত্রার তথ্য 19-বিট দীর্ঘ adc_p = (((long) (data [0] & 0xFF) * 65536) + ((long) (data [1] & 0xFF) * 256) + (long) (ডেটা [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; } // System.out.printf স্ক্রিনে আউটপুট ডেটা ("সেলসিয়াস তাপমাত্রা: %.2f C %n", cTemp); System.out.printf ("ফারেনহাইটে তাপমাত্রা: %.2f F %n", fTemp); System.out.printf ("চাপ: %.2f hPa %n", চাপ); System.out.printf ("আপেক্ষিক আর্দ্রতা: %.2f %% RH %n", আর্দ্রতা); }}

ধাপ 4: কোড ব্যবহারিকতা

কোড ব্যবহারিকতা
কোড ব্যবহারিকতা

এখন, কোডটি ডাউনলোড করুন (বা গিট পুল) এবং এটি রাস্পবেরি পাইতে খুলুন।

টার্মিনালে কোড কম্পাইল এবং আপলোড করার জন্য কমান্ড চালান এবং মনিটরে আউটপুট দেখুন। কয়েক মুহুর্ত পরে, এটি সমস্ত পরামিতিগুলি স্ক্রিন করবে। আপনার একটি মসৃণ কোড ট্রানজিশন এবং একটি শান্ত (ইশ) ফলাফল নিশ্চিত করা, আপনি আরও সংশোধন করার জন্য আরো ধারনা সম্পর্কে চিন্তা করেন (প্রতিটি প্রকল্প একটি গল্প দিয়ে শুরু হয়)।

ধাপ 5: গঠনমূলক বিশ্বে ব্যবহার

BME280 আর্দ্রতা এবং চাপ পরিমাপের জন্য প্রয়োজনীয় সমস্ত অ্যাপ্লিকেশনে উচ্চ কার্যকারিতা অর্জন করে। এই উদীয়মান অ্যাপ্লিকেশনগুলি হল প্রসঙ্গ সচেতনতা, যেমন স্কিন ডিটেকশন, রুম চেঞ্জ ডিটেকশন, ফিটনেস মনিটরিং / সুস্থতা, শুষ্কতা বা উচ্চ তাপমাত্রার ব্যাপারে সতর্কতা, ভলিউম এবং এয়ার ফ্লো পরিমাপ, হোম অটোমেশন কন্ট্রোল, কন্ট্রোল হিটিং, ভেন্টিলেশন, এয়ার কন্ডিশনিং (এইচভিএসি), ইন্টারনেট অব থিংস (আইওটি), জিপিএস বর্ধন (যেমন সময়-থেকে-প্রথম সংশোধন, মৃত হিসাব, opeাল সনাক্তকরণ), অভ্যন্তরীণ নেভিগেশন (মেঝে সনাক্তকরণ, লিফট সনাক্তকরণ), বহিরঙ্গন নেভিগেশন, অবসর ও ক্রীড়া অ্যাপ্লিকেশন, আবহাওয়ার পূর্বাভাস এবং উল্লম্ব বেগ নির্দেশ (রাইজ/সিঙ্ক) গতি).

ধাপ 6: উপসংহার

আপনি দেখতে পাচ্ছেন, এই প্রকল্পটি হার্ডওয়্যার এবং সফ্টওয়্যার কী সক্ষম তার একটি দুর্দান্ত প্রদর্শন। অল্প সময়ের মধ্যে, কেউ এমন একটি চিত্তাকর্ষক প্রকল্প তৈরি করতে পারে! অবশ্যই, এটি একটি সবে শুরু। অটোমেটেড এয়ারপোর্ট পার্সোনাল ওয়েদার স্টেশনের মতো আরও অত্যাধুনিক পার্সোনাল ওয়েদার স্টেশন তৈরি করাতে অ্যানিমোমিটার (বাতাসের গতি), ট্রান্সমিসোমিটার (দৃশ্যমানতা), পাইরানোমিটার (সৌর বিকিরণ) ইত্যাদি আরও কিছু সেন্সর জড়িত থাকতে পারে। রাস্প পাই সহ I²C সেন্সর। I²C যোগাযোগের ফলাফল এবং কাজ দেখে সত্যিই আশ্চর্যজনক। এটাও চেক করুন। বিল্ডিং এবং শেখার মজা আছে! আপনি এই নির্দেশযোগ্য সম্পর্কে কি মনে করেন দয়া করে আমাদের জানান। প্রয়োজনে আমরা কিছু উন্নতি করতে চাই।

প্রস্তাবিত: