Arduino UNO ব্যবহার করে আবহাওয়া কেন্দ্র: 7 টি ধাপ
Arduino UNO ব্যবহার করে আবহাওয়া কেন্দ্র: 7 টি ধাপ
Anonim
Arduino UNO ব্যবহার করে আবহাওয়া কেন্দ্র
Arduino UNO ব্যবহার করে আবহাওয়া কেন্দ্র

তৈরি করেছেন: হ্যাজেল ইয়াং

এই প্রজেক্টটি একটি আবহাওয়া কেন্দ্র যা ডেটা প্রবাহ নিয়ন্ত্রণের জন্য একটি Arduino UNO বোর্ড, ডেটা সংগ্রহ করার জন্য একটি DHT22 সেন্সর এবং ডেটা দেখানোর জন্য একটি OLED স্ক্রিন ব্যবহার করে।

ধাপ 1: আইটেম তালিকা

উপকরণ তালিকা
উপকরণ তালিকা

1. স্ক্রিন: OLED, 1.3 ডিসপ্লে SH1106, I2C সাদা রঙ ---- PID: 18283

2. সেন্সর: ডিজিটাল আর্দ্রতা এবং তাপমাত্রা সেন্সর DHT22 ---- PID: 7375

3. সংযোগ করে: জাম্পার ওয়্যার ---- PID: 10316 বা 10318 বা 10312 (দৈর্ঘ্যের উপর নির্ভর করে) অথবা আপনি কঠিন তার ব্যবহার করতে পারেন 22 AWG ---- PID: 22490

ব্রেডবোর্ড ---- পিআইডি: 10686 বা 10698 বা 103142 (আকারের উপর নির্ভর করে)

4. পাওয়ার: এই কেবলটি কেবল একটি কম্পিউটার ইউএসবি পোর্টের সাথে সংযুক্ত হতে পারে এবং আইডিই এবং আরডুইনো বোর্ডের মধ্যে ডেটা স্থানান্তরের জন্যও কেবল ব্যবহার করা হয়। USB CABLE, A TO B, M/M, 0.5M (1.5FT) ---- PID: 29862

অথবা আপনি এটি বোর্ডকে পাওয়ার জন্য ব্যবহার করতে পারেন: 5V 2A AC/DC অ্যাডাপ্টার ---- PID: 10817।

ধাপ 2: আপেক্ষিক ভূমিকা

আপেক্ষিক ভূমিকা
আপেক্ষিক ভূমিকা
আপেক্ষিক ভূমিকা
আপেক্ষিক ভূমিকা

পর্দার ভূমিকা: 1.3 OLED ডিসপ্লে হোয়াইট

1. আপনি ডকুমেন্ট খুঁজে পেতে পারেন যা মৌলিক সেটআপ এবং বর্ণনা দেখায়:

সেন্সরের ভূমিকা: আর্দ্রতা এবং তাপমাত্রা সেন্সর DHT22 1. আপনি ডকুমেন্ট খুঁজে পেতে পারেন যা বর্ণনা দেখায়:

ধাপ 3: সার্কিট সংযুক্ত করুন

সার্কিট সংযুক্ত করুন
সার্কিট সংযুক্ত করুন

DHT22 সেন্সর পিন ২ তে সিরিয়াল ডেটা পাঠায়। সুতরাং, দ্বিতীয় পিনটি বাম থেকে সংযুক্ত করুন, "SDA" পিনটি পিন 2 এর সাথে সংযুক্ত হওয়া উচিত।

SSH1106 ডিসপ্লের জন্য, এটি প্রেরণের জন্য এনালগ পিন ব্যবহার করে। স্ক্রিনের সার্কিটরি হবে আরডুইনো এর "A5" এর সাথে "এসসিএল" পিন এবং আরডুইনো এর "A4" এর জন্য "SDA" পিন। যখন পিক্সেল পজিশন ডেটা ক্রমাগত প্রেরণ করা হয়, তখন প্রোগ্রামে ডিসপ্লে ফাংশনটি সেন্সর থেকে ডেটা পড়ার পরে একবারই কমান্ডটি ট্রিগার করে।

সেন্সর এবং স্ক্রিন উভয়ই ডিসি পাওয়ার ইনপুট হিসাবে Arduino- তে পাওয়ার জন্য 3.3V ব্যবহার করতে পারে। ক্ষমতার জন্য, আমাদের উভয় "VCC" পিনকে Arduino এর "3.3V" এর সাথে সংযুক্ত করতে হবে। এবং "GND" পিনগুলি কেবল Arduino বোর্ডে "GND" পিনের সাথে সংযুক্ত হতে পারে।

ইউএসবি এ থেকে বি কেবল ব্যবহার করুন, অরুডিনোকে কম্পিউটারে সংযুক্ত করুন।

ধাপ 4: কম্পাইল করার জন্য প্রস্তুত করুন

Olikraus থেকে SSH1106 স্ক্রিনের জন্য "u8glib"।

Adafruit থেকে DHT22 সেন্সরের জন্য "DHT সেন্সর লাইব্রেরি"। আপনার দুটি লাইব্রেরি ডাউনলোড করা উচিত: DHT22 সেন্সর লাইব্রেরি:

U8glib:

এবং আইডিইতে "ম্যানেজ লাইব্রেরি" ব্যবহার করুন যাতে সেগুলো আনজিপ করা যায়। লাইব্রেরি পরিচালনার অনলাইন নির্দেশনা:

ধাপ 5: DHT22 সেন্সর সিরিয়াল পোর্টের জন্য টেস্ট কোড

DHT22 সেন্সর সিরিয়াল পোর্টের জন্য টেস্ট কো (যা DHT22 লাইব্রেরির ভিতরে আছে >> উদাহরণ):

(আপনি এই অংশটি এড়িয়ে যেতে পারেন।)

এটি কেবলমাত্র DHT22 সেন্সর পরীক্ষা করার জন্য ডেটা স্বাভাবিকভাবে পড়ে।

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

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

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

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

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

#DHTPIN সংজ্ঞায়িত করুন 2

#DHTTYPE DHT22 নির্ধারণ করুন

DHT dht (DHTPIN, DHTTYPE);

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

Serial.begin (9600);

Serial.println (F ("DHT22 test!"));

dht.begin ();

}

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

// পরিমাপের মধ্যে কয়েক সেকেন্ড অপেক্ষা করুন।

বিলম্ব (2000);

// পড়ার তাপমাত্রা বা আর্দ্রতা প্রায় 250 মিলিসেকেন্ড লাগে!

// সেন্সর রিডিং 2 সেকেন্ড পর্যন্ত 'পুরানো' হতে পারে (এটি একটি খুব ধীর সেন্সর)

ভাসা h = dht.readHumidity ();

// সেলসিয়াস হিসাবে তাপমাত্রা পড়ুন (ডিফল্ট)

float t = dht.readTemperature ();

// ফারেনহাইট হিসাবে তাপমাত্রা পড়ুন (isFahrenheit = true)

float f = dht.readTemperature (সত্য);

// কোন পাঠ ব্যর্থ হয়েছে কিনা তা পরীক্ষা করুন এবং তাড়াতাড়ি বেরিয়ে আসুন (আবার চেষ্টা করার জন্য)।

যদি (isnan (h) || isnan (t) || isnan (f)) {

Serial.println (F ("DHT সেন্সর থেকে পড়তে ব্যর্থ!"));

প্রত্যাবর্তন;

}

// ফারেনহাইটে তাপ সূচক গণনা করুন (ডিফল্ট)

float hif = dht.computeHeatIndex (f, h);

// সেলসিয়াসে তাপ সূচক গণনা করুন (isFahreheit = false)

float hic = dht.computeHeatIndex (t, h, false);

সিরিয়াল.প্রিন্ট (F ("আর্দ্রতা:"));

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

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

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

Serial.print (F ("° C"));

Serial.print (f);

Serial.print (F ("° F তাপ সূচক:"));

Serial.print (hic);

Serial.print (F ("° C"));

Serial.print (hif);

Serial.println (F ("° F"));

}

// প্রোগ্রাম কম্পাইল করার পর, টুলস >> সিরিয়াল মনিটর ক্লিক করে ডেটা চেক করুন।

// পরীক্ষা কার্যক্রম শেষ।

ধাপ 6: প্রকল্পের জন্য কোড

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

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

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

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

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

#DHTPIN সংজ্ঞায়িত করুন 2

#DHTTYPE DHT22 নির্ধারণ করুন

#অন্তর্ভুক্ত "U8glib.h"

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

DHT সেন্সর (DHTPIN, DHTTYPE);

অকার্যকর ড্র (অকার্যকর) {

u8g.setFont (u8g_font_unifont);

float h = sensor.readHumidity ();

// সেলসিয়াস হিসাবে তাপমাত্রা পড়ুন (ডিফল্ট)

float t = sensor.readTemperature ();

// কোন পাঠ ব্যর্থ হয়েছে কিনা তা পরীক্ষা করুন এবং তাড়াতাড়ি বেরিয়ে আসুন (আবার চেষ্টা করার জন্য)।

যদি (isnan (h) || isnan (t)) {

u8g.print ("ত্রুটি।");

জন্য (;;);

প্রত্যাবর্তন;

}

u8g.setPrintPos (4, 10);

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

u8g.setPrintPos (4, 25);

u8g.print (t);

u8g.setPrintPos (4, 40);

u8g.print ("আর্দ্রতা (%):");

u8g.setPrintPos (4, 55);

u8g.print (h);

}

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

u8g.setRot180 ();

Serial.begin (9600);

sensor.begin ();

}

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

// ছবি লুপ

u8g.firstPage ();

কর {

আঁকা ();

} যখন (u8g.nextPage ());

// কিছু বিলম্ব বিলম্বের পরে ছবিটি পুনর্নির্মাণ করুন (2000);

}

// মূল প্রোগ্রামের সমাপ্তি।

ধাপ 7: বর্ণনা

বর্ণনা
বর্ণনা

তারপরে, আরডুইনো বোর্ডের জন্য পিন সার্কিট্রি শুরু করুন। কারণ সেন্সর লাইব্রেরিতে বস্তু ঘোষণার জন্য ডেটা প্রয়োজন।

এবং আপনি "Serial.print ()" নামক ফাংশন ব্যবহার করে ডিজিটাল পিন 2 এর মাধ্যমে আউটপুট ডেটা পর্যবেক্ষণ করে সেন্সরের ডেটা পরীক্ষা করতে পারেন। যেহেতু ডেটা ট্রান্সমিশনের ফ্রিকোয়েন্সি মোটামুটি 1 প্রতি 2 সেকেন্ডে পড়ছে (যা 0.5 Hz), যখন Arduino IDE তে প্রোগ্রাম করা হয়, তখন আমাদের লুপ ফাংশনের ভিতরে বিলম্ব 2 সেকেন্ডের বেশি সেট করতে হবে। সুতরাং লুপ ফাংশনের ভিতরে একটি "বিলম্ব (2000)" আছে। এটি নিশ্চিত করে যে ডেটা ঘন ঘন রিফ্রেশ হবে। "ড্র" ফাংশনে, সিরিয়াল ডেটা পোর্ট থেকে ডেটা পান এবং তাদের "readHumidity" এবং "readTemperature" ফাংশন ব্যবহার করে ভাসমান সংখ্যায় রাখুন।

"U8glib" ফাইলে প্রিন্ট ফাংশন ব্যবহার করে আর্দ্রতা এবং তাপমাত্রা মুদ্রণ করুন। আপনি "setPrintPos" ফাংশনে নম্বর পরিবর্তন করে অবস্থান সামঞ্জস্য করতে পারেন। প্রিন্ট ফাংশন সরাসরি টেক্সট এবং সংখ্যা দেখাতে পারে।

হার্ডওয়্যার সেট আপ করতে, সিরিয়াল পোর্টকে 10 সেকেন্ড বিলম্ব দিন। তারপর সেন্সরের জন্য শুরু ফাংশন কল করুন। আমার সার্কিট অনুযায়ী, আমার পর্দা উল্টো ছিল। তাই আমি ডিসপ্লে ঘোরানোর জন্য একটি "setRot180" ফাংশনও অন্তর্ভুক্ত করেছি।

Arduino বোর্ডের লুপ ফাংশন হল মূল কাজ। এটি প্রতিবার সেন্সর রিফ্রেশ করার সময় টেক্সট এবং ডেটা প্রদর্শনের জন্য ড্র ফাংশনকে কল করে রাখে।

পর্দা এই মত দেখাচ্ছে:

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

প্রস্তাবিত: