সুচিপত্র:
- ধাপ 1: BoM - উপকরণ বিল
- ধাপ 2: তাপমাত্রা এবং আর্দ্রতা সেন্সর ইনস্টল করা
- ধাপ 3: DS18B20 ইনস্টল করা - তাপমাত্রা সেন্সর
- ধাপ 4: BMP180 ইনস্টল করা
- ধাপ 5: BMP180 দিয়ে আবহাওয়া এবং উচ্চতা পরিমাপ করা
- ধাপ 6: সম্পূর্ণ HW
- ধাপ 7: থিংসস্পিকে ডেটা পাঠানো
- ধাপ 8: ESP8266 ব্যবহার করে থিংসস্পিকে রিমোট ডেটা পাঠানো
- ধাপ 9: চূড়ান্ত নোট
- ধাপ 10: উপসংহার
ভিডিও: RPi এবং ESP8266: 10 ধাপ সহ IoT ওয়েদার স্টেশন
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:00
পূর্ববর্তী টিউটোরিয়ালগুলিতে, আমরা নোডএমসিইউ, সেন্সর নিয়ে খেলছি এবং থিংসস্পিক (একটি ইন্টারনেট অফ থিংস (আইওটি) প্ল্যাটফর্মে ডেটা ক্যাপচার এবং লগ করতে শিখছি যা আপনাকে ক্লাউডে সেন্সর ডেটা সংগ্রহ এবং সঞ্চয় করতে এবং আইওটি অ্যাপ্লিকেশন বিকাশ করতে দেয়):
IOT তৈরি করা সহজ: রিমোট ওয়েদার ডেটা ক্যাপচার করা: UV এবং AIR TEMPERATURE & HUMIDITY
এই নতুন টিউটোরিয়ালের মাধ্যমে, আমরা শিখব কিভাবে একই কাজ করতে হয় কিন্তু এই সময়ে, রাস্পবেরি পাই ব্যবহার করে বিভিন্ন সেন্সর থেকে ডেটা ক্যাপচার করা এবং ডিভাইস এবং ওয়েবের মধ্যে যোগাযোগের বিভিন্ন উপায়গুলিও অনুসন্ধান করা:
সেন্সর এবং যোগাযোগের ধরন:
- DHT22 (তাপমাত্রা এবং আর্দ্রতা) ==> ডিজিটাল যোগাযোগ
- BMP180 (তাপমাত্রা এবং চাপ) ==> I2C প্রোটোকল
- DS18B20 (তাপমাত্রা) ==> 1-ওয়্যার প্রোটোকল
ব্লক ডায়াগ্রামটি দেখায় যে এই প্রকল্পের শেষে আমরা কী পাব:
ধাপ 1: BoM - উপকরণ বিল
- রাস্পবেরি পাই ভি 3 - US $ 32.00
- DHT22 তাপমাত্রা এবং আপেক্ষিক আর্দ্রতা সেন্সর - USD 9.95
- প্রতিরোধক 4K7 ওহম
- DS18B20 জলরোধী তাপমাত্রা সেন্সর - USD 5.95
- প্রতিরোধক 4K7 ওহম
- BMP180 ব্যারোমেট্রিক চাপ, তাপমাত্রা এবং উচ্চতা সেন্সর - USD 6.99
ধাপ 2: তাপমাত্রা এবং আর্দ্রতা সেন্সর ইনস্টল করা
বায়ু তাপমাত্রা এবং আপেক্ষিক আর্দ্রতা ডেটা ক্যাপচার করার জন্য প্রথম সেন্সরটি ইনস্টল করা হবে DHT22। ADAFRUIT সাইট সেই সেন্সর সম্পর্কে দারুণ তথ্য প্রদান করে। নিচে, কিছু তথ্য সেখান থেকে উদ্ধার করা হয়েছে:
ওভারভিউ
কম খরচে ডিএইচটি তাপমাত্রা এবং আর্দ্রতা সেন্সরগুলি খুব মৌলিক এবং ধীর কিন্তু শখের বশে যারা কিছু মৌলিক ডেটা লগিং করতে চান তাদের জন্য দুর্দান্ত। ডিএইচটি সেন্সর দুটি অংশে গঠিত, একটি ক্যাপাসিটিভ আর্দ্রতা সেন্সর এবং একটি থার্মিস্টর। ভিতরে একটি খুব মৌলিক চিপ রয়েছে যা ডিজিটাল রূপান্তরের কিছু এনালগ করে এবং তাপমাত্রা এবং আর্দ্রতার সাথে একটি ডিজিটাল সংকেত বের করে। যে কোন মাইক্রোকন্ট্রোলার ব্যবহার করে ডিজিটাল সিগন্যাল পড়া বেশ সহজ।
DHT22 প্রধান বৈশিষ্ট্য:
- কম খরচে
- 3 থেকে 5V শক্তি এবং I/O
- রূপান্তরের সময় 2.5mA সর্বোচ্চ বর্তমান ব্যবহার (তথ্য অনুরোধ করার সময়)
- 2-5% নির্ভুলতার সাথে 0-100% আর্দ্রতা রিডিংয়ের জন্য ভাল
- -40 থেকে 125 ° C তাপমাত্রা রিডিং ± 0.5 ° নির্ভুলতার জন্য ভাল
- 0.5 Hz এর বেশি নমুনা হার (প্রতি 2 সেকেন্ডে একবার)
- শরীরের আকার 15.1 মিমি x 25 মিমি x 7.7 মিমি
- 0.1 "স্পেসিং সহ 4 পিন
একবার সাধারণত আপনি 20 মিটারের কম দূরত্বে সেন্সর ব্যবহার করবেন, 4K7 ওহম প্রতিরোধক ডেটা এবং ভিসিসি পিনের মধ্যে সংযুক্ত হওয়া উচিত। DHT22 আউটপুট ডেটা পিন রাস্পবেরি GPIO 16 এর সাথে সংযুক্ত হবে। উপরের বৈদ্যুতিক চিত্রটি পরীক্ষা করুন, সেন্সরটিকে RPi পিনের সাথে নিচের মতো সংযুক্ত করুন:
- পিন 1 - Vcc ==> 3.3V
- পিন 2 - ডেটা ==> জিপিআইও 16
- পিন 3 - সংযোগ না
- পিন 4 - Gnd ==> Gnd
ভিসিসি এবং ডেটা পিনের মধ্যে 4K7 ওহম প্রতিরোধক ইনস্টল করতে ভুলবেন না
একবার সেন্সর সংযুক্ত হয়ে গেলে, আমাদের অবশ্যই আমাদের RPi তে এর লাইব্রেরি ইনস্টল করতে হবে।
DHT লাইব্রেরি ইনস্টল করা:
আপনার রাস্পবেরিতে, /হোম থেকে শুরু করে /ডকুমেন্টগুলিতে যান
সিডি ডকুমেন্টস
লাইব্রেরি ইনস্টল করার জন্য একটি ডিরেক্টরি তৈরি করুন এবং সেখানে যান:
mkdir DHT22_ সেন্সর
সিডি DHT22_ সেন্সর
আপনার ব্রাউজারে, Adafruit GitHub এ যান:
github.com/adafruit/Adafruit_Python_DHT
ডানদিকে ডাউনলোড জিপ লিঙ্কে ক্লিক করে লাইব্রেরি ডাউনলোড করুন এবং আপনার রাস্পবেরি পাই সম্প্রতি তৈরি ফোল্ডারে সংরক্ষণাগারটি আনজিপ করুন। তারপরে লাইব্রেরির ডিরেক্টরিতে যান (সাবফোল্ডার যা আপনি ফাইলটি আনজিপ করার সময় স্বয়ংক্রিয়ভাবে তৈরি হয়) এবং কমান্ডটি চালান:
sudo python3 setup.py ইনস্টল করুন
আমার GITHUB থেকে একটি টেস্ট প্রোগ্রাম (DHT22_test.py) খুলুন
Adafruit_DHT আমদানি করুন
DHT22 সেন্সর = Adafruit_DHT। f}%'। বিন্যাস (তাপমাত্রা, আর্দ্রতা)) অন্য: মুদ্রণ (' পড়া পেতে ব্যর্থ হয়েছে
কমান্ড দিয়ে প্রোগ্রামটি চালান:
পাইথন 3 DHT22_test.py
নিচের টার্মিনাল প্রিন্ট স্ক্রিন ফলাফল দেখায়।
ধাপ 3: DS18B20 ইনস্টল করা - তাপমাত্রা সেন্সর
সেন্সর ওভারভিউ:
আমরা এই টিউটোরিয়ালে DS18B20 সেন্সরের একটি জলরোধী সংস্করণ ব্যবহার করব। ভেজা অবস্থায় দূরবর্তী তাপমাত্রার জন্য এটি খুবই উপযোগী, উদাহরণস্বরূপ আর্দ্র মাটিতে। সেন্সরটি বিচ্ছিন্ন এবং 125oC পর্যন্ত পরিমাপ গ্রহণ করতে পারে (Adafrut এটিকে 100oC এর উপরে ব্যবহার করার সুপারিশ করে না তার ক্যাবল পিভিসি জ্যাকেটের কারণে)।
DS18B20 একটি ডিজিটাল সেন্সর যা দীর্ঘ দূরত্বেও এটি ব্যবহার করা ভাল করে তোলে! এই 1-তারের ডিজিটাল তাপমাত্রা সেন্সরগুলি মোটামুটি সুনির্দিষ্ট (range 0.5 ডিগ্রি সেলসিয়াস বেশি) এবং অনবোর্ড ডিজিটাল থেকে এনালগ কনভার্টার থেকে 12 বিট পর্যন্ত নির্ভুলতা দিতে পারে। তারা একটি একক ডিজিটাল পিন ব্যবহার করে NodeMCU- এর সাথে দুর্দান্ত কাজ করে, এবং আপনি একই পিনের সাথে একাধিকগুলিকে সংযুক্ত করতে পারেন, প্রত্যেকেরই একটি আলাদা 64-বিট আইডি আছে কারখানায় তাদের আলাদা করার জন্য।
সেন্সর 3.0 থেকে 5.0V পর্যন্ত কাজ করে, এর মানে হল যে এটি 3.3V থেকে সরাসরি রাস্পবেরি পিন (1 বা 17) দ্বারা সরবরাহ করা যেতে পারে।
সেন্সরটিতে 3 টি তার রয়েছে:
- কালো: GND
- লাল: ভিসিসি
- হলুদ: 1-ওয়্যার ডেটা
এখানে, আপনি সম্পূর্ণ ডেটা খুঁজে পেতে পারেন: DS18B20 ডেটশীট
সেন্সর ইনস্টলেশন:
উপরের চিত্রটি অনুসরণ করুন এবং সংযোগগুলি তৈরি করুন:
- Vcc ==> 3.3V
- Gnd ==> Gnd
- ডেটা ==> জিপিআইও 4 (লাইব্রেরির জন্য ডিফল্ট)
পাইথন লাইব্রেরি ইনস্টল করা:
এরপরে, আসুন পাইথন লাইব্রেরি ইনস্টল করি যা সেন্সর পরিচালনা করবে:
sudo pip3 w1thermsensor ইনস্টল করুন
সেন্সর পরীক্ষা করার জন্য স্ক্রিপ্ট চালানোর আগে, আপনার RPi তে "1-ওয়্যার" ইন্টারফেসটি সক্ষম কিনা তা পরীক্ষা করুন (উপরের প্রিন্ট স্ক্রিন দেখুন)
আপনার RPi এর কনফিগারেশন পরিবর্তন করার পরে পুনরায় চালু করতে ভুলবেন না
সেন্সর পরীক্ষা করা:
সেন্সর পরীক্ষার জন্য একটি সহজ পাইথন স্ক্রিপ্ট ব্যবহার করা যেতে পারে:
আমদানির সময়
w1thermsensor আমদানি থেকে W1ThermSensor ds18b20Sensor = W1ThermSensor () যখন সত্য: তাপমাত্রা = ds18b20Sensor.get_temperature () প্রিন্ট ("তাপমাত্রা % s সেলসিয়াস" % তাপমাত্রা) সময়। ঘুম (1)
ধাপ 4: BMP180 ইনস্টল করা
সেন্সর ওভারভিউ:
BMP180 হল BMP085 এর উত্তরাধিকারী, ভোক্তা অ্যাপ্লিকেশনগুলির জন্য উচ্চ নির্ভুলতা ডিজিটাল চাপ সেন্সরগুলির একটি নতুন প্রজন্ম। BMP180 এর অতি-কম শক্তি, কম ভোল্টেজের ইলেকট্রনিক্স মোবাইল ফোন, পিডিএ, জিপিএস নেভিগেশন ডিভাইস এবং বহিরঙ্গন যন্ত্রপাতি ব্যবহারের জন্য অনুকূলিত। দ্রুত রূপান্তরের সময় মাত্র 0.25 মিটার কম উচ্চতার আওয়াজের সাথে, BMP180 উচ্চতর কর্মক্ষমতা প্রদান করে। I2C ইন্টারফেস একটি মাইক্রোকন্ট্রোলারের সাথে সহজ সিস্টেম ইন্টিগ্রেশনের অনুমতি দেয়। BMP180 ইএমসি দৃust়তা, উচ্চ নির্ভুলতা, এবং রৈখিকতার পাশাপাশি দীর্ঘমেয়াদী স্থিতিশীলতার জন্য পাইজো-প্রতিরোধী প্রযুক্তির উপর ভিত্তি করে।
সম্পূর্ণ BMP ডেটশীট এখানে পাওয়া যাবে: BMP180 - ডিজিটাল চাপ সেন্সর
সেন্সর ইনস্টলেশন: উপরের চিত্রটি অনুসরণ করুন এবং সংযোগগুলি তৈরি করুন:
- ভিন ==> 3.3V
- GND ==> GND
- এসসিএল ==> জিপিআইও 3
- এসডিএ ==> জিপিআইও 2
I2C ইন্টারফেস সক্ষম করা হচ্ছে
RPi কনফিগারেশনে যান এবং নিশ্চিত করুন যে I2C ইন্টারফেস সক্ষম। যদি না হয়, এটি সক্ষম করুন এবং RPi পুনরায় চালু করুন।
BMP180 ব্যবহার করে
যদি সবকিছু ঠিকঠাকভাবে ইনস্টল করা থাকে, এবং সবকিছু ঠিকঠাকভাবে সংযুক্ত থাকে, আপনি এখন আপনার পাই চালু করতে এবং BMP180 আপনার চারপাশের বিশ্ব সম্পর্কে আপনাকে কী বলছে তা দেখতে শুরু করতে প্রস্তুত।
প্রথম কাজটি হল Pi আপনার BMP180 দেখেছে কিনা তা পরীক্ষা করা। একটি টার্মিনাল উইন্ডোতে নিম্নলিখিত চেষ্টা করুন:
sudo i2cdetect -y 1
যদি কমান্ডটি কাজ করে, তাহলে আপনার উপরের টার্মিনাল প্রিন্টস্ক্রিনের অনুরূপ কিছু দেখা উচিত, যা দেখায় যে BMP180 চ্যানেল '77' তে রয়েছে।
BMP180 লাইব্রেরি ইনস্টল করা:
লাইব্রেরি ইনস্টল করার জন্য একটি ডিরেক্টরি তৈরি করুন:
mkdir BMP180_Sensorcd BMP180_Sensor
আপনার ব্রাউজারে, Adafruit GITHub এ যান:
github.com/adafruit/Adafruit_Python_BMP
ডানদিকে ডাউনলোড জিপ লিঙ্কে ক্লিক করে লাইব্রেরি ডাউনলোড করুন এবং আপনার রাস্পবেরি পাই তৈরি ফোল্ডারে সংরক্ষণাগারটি আনজিপ করুন। তারপরে তৈরি করা সাবফোল্ডারে যান এবং লাইব্রেরির ডিরেক্টরিতে নিম্নলিখিত কমান্ডটি চালান:
sudo python3 setup.py ইনস্টল করুন
আপনার পাইথন আইডিই খুলুন এবং একটি পরীক্ষা প্রোগ্রাম তৈরি করুন এবং এর নাম দিন, উদাহরণস্বরূপ BMP180Test.py
Adafruit_BMP. BMP085 BMP085sensor = BMP085 হিসাবে আমদানি করুন। বিন্যাস (sensor.read_pressure ())) মুদ্রণ ('Altitude = {0: 0.2f} m'.format (sensor.read_altitude ())) মুদ্রণ (' Sealevel চাপ = {0: 0.2f} Pa '।.read_sealevel_pressure ()))
পরীক্ষা প্রোগ্রাম চালান:
python3 BMP180Test.py
উপরের টার্মিনাল প্রিন্ট স্ক্রিন ফলাফল দেখায়।
লক্ষ্য করুন যে চাপটি Pa (Pascals) এ উপস্থাপন করা হয়েছে। এই ইউনিট সম্পর্কে ভালভাবে বোঝার জন্য পরবর্তী ধাপ দেখুন।
ধাপ 5: BMP180 দিয়ে আবহাওয়া এবং উচ্চতা পরিমাপ করা
BMP রিডিং এর মাধ্যমে আমরা কি পাবো সে সম্পর্কে একটু বেশি বোঝার জন্য একটু সময় নিই। আপনি টিউটোরিয়ালের এই অংশটি এড়িয়ে যেতে পারেন, অথবা পরে ফিরে আসতে পারেন।
আপনি যদি সেন্সর রিডিং সম্পর্কে আরো জানতে চান, অনুগ্রহ করে এই মহান টিউটোরিয়ালে যান:
BMP180 সঠিকভাবে বায়ুমণ্ডলীয় চাপ পরিমাপ করার জন্য ডিজাইন করা হয়েছিল। বায়ুমণ্ডলীয় চাপ আবহাওয়া এবং উচ্চতা উভয়ের সাথে পরিবর্তিত হয়।
বায়ুমণ্ডলীয় চাপ কি?
বায়ুমণ্ডলীয় চাপের সংজ্ঞা হল এমন একটি শক্তি যা আপনার চারপাশের বায়ু সবকিছুর উপর প্রয়োগ করছে। বায়ুমণ্ডলে গ্যাসের ওজন বায়ুমণ্ডলীয় চাপ সৃষ্টি করে। চাপের একটি সাধারণ একক হল "প্রতি বর্গ ইঞ্চিতে পাউন্ড" বা psi। আমরা এখানে আন্তর্জাতিক স্বরলিপি ব্যবহার করব, অর্থাৎ প্রতি বর্গমিটারে নিউটন, যাকে বলা হয় পাসকাল (Pa)।
আপনি যদি 1 সেন্টিমিটার চওড়া কলাম বাতাস নেন তাহলে তার ওজন হবে প্রায় 1 কেজি
এই ওজন, সেই কলামের পায়ের ছাপের নিচে চেপে বায়ুমণ্ডলীয় চাপ তৈরি করে যা আমরা BMP180 এর মত সেন্সর দিয়ে পরিমাপ করতে পারি। যেহেতু সেমি -চওড়া বাতাসের ওজন প্রায় 1Kg, এটি অনুসরণ করে যে সমুদ্রের সমতল চাপ প্রায় 101325 পাসকাল, বা আরও ভাল, 1013.25 hPa (1 hPa মিলিবর -এমবার নামেও পরিচিত) আপনি যত উপরে যাবেন প্রতি 300 মিটারের জন্য এটি প্রায় 4% হ্রাস পাবে। আপনি যত বেশি পাবেন, তত কম চাপ আপনি দেখতে পাবেন, কারণ বায়ুমণ্ডলের শীর্ষে থাকা কলামটি খুব ছোট এবং তাই ওজন কম। এটি জানতে দরকারী, কারণ চাপ পরিমাপ করে এবং কিছু গণিত করে, আপনি আপনার উচ্চতা নির্ধারণ করতে পারেন।
3, 810 মিটারে বায়ুচাপ সমুদ্রপৃষ্ঠের মাত্র অর্ধেক।
BMP180 পাস্কাল (Pa) তে পরম চাপ দেয়। একটি প্যাসকেল হল একটি খুব ছোট পরিমাণ চাপ, আনুমানিক পরিমাণ যা কাগজের একটি শীট একটি টেবিলে বিশ্রাম নেবে। আপনি প্রায়শই হেক্টোপাস্কালগুলিতে পরিমাপ দেখতে পাবেন (1 এইচপিএ = 100 পা)। এখানে ব্যবহৃত লাইব্রেরি এইচপিএ-তে ভাসমান-বিন্দু মান প্রদান করে, যা এক মিলিবার (এমবার) সমান হয়।
এখানে অন্যান্য চাপ ইউনিটগুলিতে কিছু রূপান্তর রয়েছে:
- 1 hPa = 100 Pa = 1 mbar = 0.001 বার
- 1 এইচপিএ = 0.75006168 টর
- 1 hPa = 0.01450377 psi (প্রতি বর্গ ইঞ্চিতে পাউন্ড)
- 1 hPa = 0.02953337 inHg (পারদ ইঞ্চি)
- 1 এইচপিএ = 0.00098692 এটিএম (স্ট্যান্ডার্ড বায়ুমণ্ডল)
তাপমাত্রার প্রভাব
যেহেতু তাপমাত্রা একটি গ্যাসের ঘনত্বকে প্রভাবিত করে, এবং ঘনত্ব একটি গ্যাসের ভরকে প্রভাবিত করে এবং ভর চাপকে প্রভাবিত করে (বাহ), বায়ুমণ্ডলীয় চাপ তাপমাত্রার সাথে নাটকীয়ভাবে পরিবর্তিত হবে। পাইলটরা এটিকে "ঘনত্বের উচ্চতা" হিসাবে জানে, যা গরমের চেয়ে ঠান্ডা দিনে ওঠা সহজ করে তোলে কারণ বাতাস ঘন হয় এবং এর বায়ুবিদ্যার প্রভাব বেশি থাকে। তাপমাত্রার ক্ষতিপূরণ দিতে, BMP180 এর মধ্যে একটি ভাল তাপমাত্রা সেন্সর এবং একটি চাপ সেন্সর রয়েছে।
একটি চাপ পড়ার জন্য, আপনি প্রথমে একটি তাপমাত্রা রিডিং নিন, তারপর একটি চূড়ান্ত তাপমাত্রা-ক্ষতিপূরণ চাপ পরিমাপ সঙ্গে আসা একটি কাঁচা চাপ পড়ার সাথে একত্রিত করুন। (লাইব্রেরি এই সব খুব সহজ করে তোলে।)
পরম চাপ পরিমাপ
যদি আপনার আবেদনের জন্য পরম চাপ পরিমাপের প্রয়োজন হয়, আপনাকে যা করতে হবে তা হল একটি তাপমাত্রা পড়া, তারপর একটি চাপ পড়ুন (বিশদ বিবরণের জন্য উদাহরণ স্কেচ দেখুন)। চূড়ান্ত চাপ পড়বে hPa = mbar এ। আপনি যদি চান, আপনি উপরের রূপান্তর ফ্যাক্টরগুলি ব্যবহার করে এটিকে একটি ভিন্ন ইউনিটে রূপান্তর করতে পারেন।
লক্ষ্য করুন যে বায়ুমণ্ডলের পরম চাপ আপনার উচ্চতা এবং বর্তমান আবহাওয়ার ধরন উভয়ের সাথে পরিবর্তিত হবে, উভয়ই পরিমাপের জন্য দরকারী জিনিস।
আবহাওয়া পর্যবেক্ষণ
পৃথিবীর যেকোনো স্থানে বায়ুমণ্ডলীয় চাপ (বা বায়ুমণ্ডলের যেকোনো স্থানে) স্থির নয়। পৃথিবীর স্পিন, অক্ষ কাত, এবং অন্যান্য অনেক কারণের মধ্যে জটিল মিথস্ক্রিয়া উচ্চ এবং নিম্নচাপের স্থানগুলিকে সরিয়ে দেয়, যার ফলে আমরা প্রতিদিন আবহাওয়ার পরিবর্তনের কারণ হয়ে থাকি। চাপের পরিবর্তনের জন্য দেখার মাধ্যমে, আপনি আবহাওয়ার স্বল্পমেয়াদী পরিবর্তনের পূর্বাভাস দিতে পারেন। উদাহরণস্বরূপ, চাপ কমানোর অর্থ সাধারণত ভেজা আবহাওয়া বা ঝড় আসছে (একটি নিম্নচাপ ব্যবস্থা এগিয়ে চলেছে)। ক্রমবর্ধমান চাপ বলতে বোঝায় যে পরিষ্কার আবহাওয়া এগিয়ে আসছে (একটি উচ্চ-চাপ ব্যবস্থা চলছে)। কিন্তু মনে রাখবেন বায়ুমণ্ডলীয় চাপ উচ্চতার সাথে পরিবর্তিত হয়। আমার বাড়িতে পরম চাপ, চিলির লো বারনেচিয়া (উচ্চতা 950 মিটার) সর্বদা সান ফ্রান্সিসকোতে পরম চাপের চেয়ে কম হবে (উদাহরণস্বরূপ 2 মিটারের কম, প্রায় সমুদ্রপৃষ্ঠ)। যদি আবহাওয়া কেন্দ্রগুলি কেবল তাদের পরম চাপের রিপোর্ট করে, তবে একটি স্থান থেকে অন্য স্থানে চাপ পরিমাপের সরাসরি তুলনা করা কঠিন হবে (এবং বড় আকারের আবহাওয়ার পূর্বাভাস যতটা সম্ভব স্টেশন থেকে পরিমাপের উপর নির্ভর করে)।
এই সমস্যা সমাধানের জন্য, আবহাওয়া কেন্দ্রগুলি সবসময় তাদের রিপোর্ট করা চাপ পড়ার থেকে উচ্চতার প্রভাবগুলি গাণিতিকভাবে সমতুল্য স্থির চাপ যোগ করে দেখায় যেন পড়া সমুদ্রপৃষ্ঠে নেওয়া হয়েছে। যখন আপনি এটি করেন, লো বারনেচিয়ার চেয়ে সান ফ্রান্সিসকোতে উচ্চতর পড়া সবসময় আবহাওয়ার ধরনগুলির কারণে হবে, উচ্চতার কারণে নয়।
এটি করার জন্য, লাইব্রেরিতে সমুদ্রপৃষ্ঠ (P, A) নামে একটি ফাংশন আছে। এটি এইচপিএতে পরম চাপ (পি), এবং স্টেশনের বর্তমান উচ্চতা (এ) মিটারে নেয় এবং চাপ থেকে উচ্চতার প্রভাবগুলি সরিয়ে দেয়। আপনি এই ফাংশনটির আউটপুট ব্যবহার করে আপনার আবহাওয়া রিডিংগুলিকে বিশ্বের অন্যান্য স্টেশনের সাথে সরাসরি তুলনা করতে পারেন।
উচ্চতা নির্ধারণ
যেহেতু চাপ উচ্চতার সাথে পরিবর্তিত হয়, আপনি উচ্চতা পরিমাপ করতে একটি চাপ সেন্সর ব্যবহার করতে পারেন (কয়েকটি সতর্কতা সহ)। সমুদ্রপৃষ্ঠে বায়ুমণ্ডলের গড় চাপ 1013.25 hPa (বা mbar)। আপনি শূন্যতার দিকে যাওয়ার সাথে সাথে এটি শূন্যে নেমে যায়। যেহেতু এই ড্রপ-অফের বক্ররেখাটি ভালভাবে বোঝা যায়, আপনি একটি নির্দিষ্ট সমীকরণ ব্যবহার করে দুটি চাপ পরিমাপের (p এবং p0) মধ্যে উচ্চতার পার্থক্য গণনা করতে পারেন।
আপনি যদি সমুদ্রপৃষ্ঠের চাপ (1013.25 hPa) কে বেসলাইন চাপ (p0) হিসেবে ব্যবহার করেন, সমীকরণের আউটপুট হবে সমুদ্রপৃষ্ঠ থেকে আপনার বর্তমান উচ্চতা। লাইব্রেরিতে উচ্চতা (P, P0) নামে একটি ফাংশন রয়েছে যা আপনাকে "গণনা করা উচ্চতা" পেতে দেয়।
উপরের ব্যাখ্যাটি BMP 180 Sparkfun টিউটোরিয়াল থেকে বের করা হয়েছে।
ধাপ 6: সম্পূর্ণ HW
ধাপ 7: থিংসস্পিকে ডেটা পাঠানো
এই মুহুর্তে, আমরা শিখেছি কিভাবে টার্মিনালে মুদ্রণ করে সমস্ত 3 টি সেন্সর থেকে ডেটা ক্যাপচার করার জন্য RPi প্রস্তুত করতে হয়। এখন, সেই আইওটি প্ল্যাটফর্ম, থিংস্পিক -এ সেই ডেটাগুলি কীভাবে পাঠানো যায় তা দেখার সময় এসেছে।
চল শুরু করি!
প্রথমে আপনার ThinkSpeak.com এ একটি অ্যাকাউন্ট থাকতে হবে
একটি চ্যানেল তৈরি করতে নির্দেশাবলী অনুসরণ করুন এবং আপনার চ্যানেল আইডি এবং API কী লিখুন
আমার GitHub থেকে পাইথন স্ক্রিপ্ট ডাউনলোড করুন: localData ToTS_v1_EXT.py
আসুন কোডটি সবচেয়ে গুরুত্বপূর্ণ অংশগুলিতে মন্তব্য করি:
প্রথমে, থিংসস্পিক লাইব্রেরি আমদানি করি, ওয়াইফাই ক্লায়েন্টকে সংজ্ঞায়িত করি এবং আপনার স্থানীয় রাউটার এবং থিংকস্পিক শংসাপত্রগুলি সংজ্ঞায়িত করি:
জিনিসপত্র আমদানি করুন
থিংসস্পিকের সাথে যোগাযোগ করার বিভিন্ন উপায় রয়েছে, মিকোলজ ছওয়ালিজ এবং কিথ এলিস দ্বারা বিকশিত থিংসস্পিক ডটকম এপিআই এর জন্য ক্লায়েন্ট লাইব্রেরি ব্যবহার করা সহজতম উপায়।
লাইব্রেরিটি https://github.com/mchwalisz/thingspeak থেকে ডাউনলোড করা যাবে অথবা টার্মিনালে PIP ব্যবহার করা যাবে:
sudo pip3 জিনিস স্পিক ইনস্টল করুন
পরবর্তী, স্ক্রিপ্টের ভিতরে, থিংস্পিক চ্যানেলের শংসাপত্র আপডেট করুন
chId = 9999999 # আপনার চ্যানেল আইডি দিয়ে প্রবেশ করুন
tsKey = 'আপনার চ্যানেল রাইট কী দিয়ে লিখুন' tsUrl = 'https://api.thingspeak.com/update' ts = thingspeak. Channel (chId, tsUrl, tsKey)
এখন, আসুন 3 টি সেন্সর শুরু করি:
# DS18B20 1-ওয়্যার লাইব্রেরি
w1thermsensor আমদানি থেকে W1ThermSensor ds18b20Sensor = W1ThermSensor () # ডিফল্টরূপে GPIO 4 লাইব্রেরি দ্বারা ব্যবহার করা হয় আপনার আবহাওয়া স্টেশনটি কোথায় অবস্থিত তার প্রকৃত উচ্চতা নির্ধারণ করা উচিত, গ্লোবাল ভেরিয়েবল "altReal" আপডেট করা। আমার ক্ষেত্রে, আমার স্টেশনটি সমুদ্রপৃষ্ঠ থেকে 950 মিটার উপরে অবস্থিত
বৈশ্বিক altReal
altReal = 950
একবার ইনপুট হিসাবে স্টেশনের প্রকৃত উচ্চতা দিয়ে প্রবেশ করলে, আমরা bmp180GetData (উচ্চতা) ফাংশন ব্যবহার করে পরম চাপ, সমুদ্রপৃষ্ঠের চাপ, তাপমাত্রা এবং উচ্চতা পেতে পারি:
def bmp180GetData (উচ্চতা):
টেম্প = bmp180 সেন্সর।, 2) # hPa (বা mbar) alt=round (alt) presSeaLevel = round (presSeaLevel/100, 2) # hPa (বা mbar) রিটার্ন temp, pres, alt, presSeaLevel এ পরম চাপ
ফাংশন getLocalData (), আমাদের স্টেশন দ্বারা ধরা সমস্ত স্থানীয় ডেটা ফেরত দেবে:
def getLocalData ():
গ্লোবাল টাইম স্ট্রিং গ্লোবাল হামল্যাব গ্লোবাল টেম্প এক্সট গ্লোবাল টেম্পল্যাব গ্লোবাল প্রেস এসএসএল গ্লোবাল অলট্যাব গ্লোবাল প্রেসএবস # এখন পড়ার সময় পান = datetime.datetime.now () timeString = now.strftime ("%Y-%m-%d%H:%M") # বাইরের তাপমাত্রা পড়ুন (1 মিটার দূরত্ব) tempExt = বৃত্তাকার (ds18b20Sensor.get_temperature (), 1) tempLab, presAbs, altLab, presSL = bmp180GetData (altReal) humDHT, tempDHT = Adafruit_DHT.read_retry (DHT22HSNSHNSNSENSOR, DHT22SHENSENSOR এবং tempDHT কোনটি নয়: humLab = বৃত্তাকার (humDHT
একবার উপরের ফাংশন দ্বারা আপনার সমস্ত ডেটা ক্যাপচার হয়ে গেলে, আপনাকে অবশ্যই তাদের থিংসস্পিকে পাঠাতে হবে। আপনি ফাংশন sendDataTs () ব্যবহার করে এটি করবেন:
def sendDataTs ():
data = {"field1": tempLab, "field2": tempExt, "field3": humLab, "field4": presSL, "field5": altLab} ts.update (data) print ("[INFO] 5 টি ক্ষেত্রের জন্য পাঠানো ডেটা: ", tempLab, tempExt, humLab, presSL, altLab)
আপনার চ্যানেলের ডেটা আপডেটের সাথে, স্ক্রিপ্টটি সংরক্ষণ করুন এবং আপনার টার্মিনালে এটি চালান:
sudo Python3 localData_ToTs_v1_EXT.py
যোগাযোগ প্রোটোকল সম্পর্কে
লক্ষ্য করুন যে "জিনিসপত্রের লাইব্রেরি" ব্যবহার করে, "অনুরোধ লাইব্রেরি" আমদানি করা হয়, এটি একটি Apache2 লাইসেন্সযুক্ত HTTP লাইব্রেরি, যা পাইথনে লেখা। সরকারী অনুরোধ ইনস্টলেশন ডকুমেন্টেশন এখানে পাওয়া যাবে:
docs.python-requests.org/en/latest/user/install/
প্রয়োজন হলে, আপনার স্ক্রিপ্ট চালানোর আগে, আপনি অনুরোধ লাইব্রেরি ইনস্টল করা আছে কিনা তা যাচাই করতে পারেন:
sudo pip3 ইনস্টল করার অনুরোধ
Ingচ্ছিকভাবে আপনি থিংসস্পিকে ডেটা পাঠানোর পদ্ধতি হিসাবে MTTQ ব্যবহার করতে পারেন। এমকিউটিটি এইচটিটিপি থেকে আলাদা, একবার এটি বিশেষভাবে লাইটওয়েট হওয়ার জন্য ডিজাইন করা হয়েছে এবং কম র RAM্যাম এবং সিপিইউ পারফরম্যান্স সহ এমবেডেড ডিভাইসের জন্য ডিজাইন করা হয়েছে। এছাড়াও, বেশিরভাগ ক্ষেত্রে, MQTT কম ব্যান্ডউইথ ব্যবহার করে।
এই টিউটোরিয়ালটি পড়ুন: আরও বিস্তারিত জানার জন্য রাস্পবেরি পাইতে MQTT ব্যবহার করে একটি থিংসস্পিক চ্যানেল আপডেট করুন।
ধাপ 8: ESP8266 ব্যবহার করে থিংসস্পিকে রিমোট ডেটা পাঠানো
এই পদক্ষেপের জন্য, আমরা একই HW ব্যবহার করব যা মিউ টিউটোরিয়ালে ব্যাখ্যা করা হয়েছিল:
IOT তৈরি করা সহজ: রিমোট ওয়েদার ডেটা ক্যাপচার করা: UV এবং AIR TEMPERATURE & HUMIDITY
আমরা যে কোডটি এখানে ব্যবহার করব, মূলত সেই টিউটোরিয়ালেই একই ব্যবহার করা হয়েছে। আসুন কোডটি সবচেয়ে গুরুত্বপূর্ণ অংশগুলিতে মন্তব্য করি:
প্রথমে, আসুন ESP8266 লাইব্রেরিতে কল করি, ওয়াইফাই ক্লায়েন্টকে সংজ্ঞায়িত করি এবং আপনার স্থানীয় রাউটার এবং থিংকস্পিক শংসাপত্রগুলি সংজ্ঞায়িত করি:
/ * NodeMCU ESP12-E */
#ওয়াইফাই ক্লায়েন্ট ক্লায়েন্ট অন্তর্ভুক্ত করুন; const char* MY_SSID = "আপনার SSDID দিয়ে প্রবেশ করুন"; const char* MY_PWD = "আপনার পাসওয়ার্ড দিয়ে লিখুন"; /* থিংকস্পিক*/ কনস্ট চার* TS_SERVER = "api.thingspeak.com"; স্ট্রিং TS_API_KEY = "আপনার লেখার কী দিয়ে লিখুন";
দ্বিতীয়ত, আইওটি প্রকল্পগুলির জন্য একটি খুব গুরুত্বপূর্ণ লাইব্রেরি অন্তর্ভুক্ত করা যাক: SimpleTimer.h:
/ * টাইমার */
#সিম্পলটাইমার টাইমার অন্তর্ভুক্ত করুন;
তৃতীয়ত, সেটআপের সময় (), আমরা সিরিয়াল যোগাযোগ শুরু করব, ফাংশনকে কল করব সংযোগ ওয়াইফাই () এবং টাইমার সংজ্ঞায়িত করব। নোট করুন যে কোডের লাইন: timer.setInterval (60000L, sendDataTS); থিংকস্পিক চ্যানেলে ডেটা আপলোড করার জন্য প্রতি 60 সেকেন্ডে sendDataTS () ফাংশনটি কল করবে।
অকার্যকর সেটআপ()
{… Serial.begin (115200); বিলম্ব (10); … ConnectWifi (); timer.setInterval (60000L, sendDataTS); …}
শেষ পর্যন্ত কিন্তু অন্তত নয়, লুপের সময় (), টাইমারের সূচনা করার জন্য একমাত্র কমান্ড প্রয়োজন এবং এটিই!
অকার্যকর লুপ ()
{… Timer.run (); // সিম্পলটাইমার শুরু করে}
নীচে, আপনি থিংকস্পিক যোগাযোগ পরিচালনা করতে ব্যবহৃত দুটি গুরুত্বপূর্ণ ফাংশন দেখতে পারেন:
আপনার ওয়াইফাই নেটওয়ার্কের সাথে ESP12-E সংযোগ:
/***************************************************
*ওয়াইফাই সংযোগ ************************************************* ***/ void connectWifi () {Serial.print ("Connecting to"+*MY_SSID); WiFi.begin (MY_SSID, MY_PWD); যখন (WiFi.status ()! = WL_CONNECTED) {বিলম্ব (1000); সিরিয়াল.প্রিন্ট ("।"); } Serial.println (""); Serial.println ("ওয়াইফাই সংযুক্ত"); Serial.println (""); }
ESP12-E থিংকস্পিকে ডেটা পাঠাচ্ছে:
***************************************************
*থিংকস্পিক চ্যানেলে ডেটা পাঠানো ************************************************ ******/ void sendDataTS (void) {if (client.connect (TS_SERVER, 80)) {String postStr = TS_API_KEY; postStr += "& field6 ="; postStr += স্ট্রিং (টেম্প); postStr += "& field7 ="; postStr += স্ট্রিং (হাম); postStr += "& field8 ="; postStr += স্ট্রিং (dataSensorUV); postStr += "\ r / n / r / n"; client.print ("পোস্ট /আপডেট HTTP /1.1 / n"); client.print ("হোস্ট: api.thingspeak.com / n"); client.print ("সংযোগ: বন্ধ / n"); client.print ("X-THINGSPEAKAPIKEY:" + TS_API_KEY + "\ n"); client.print ("বিষয়বস্তু-প্রকার: অ্যাপ্লিকেশন/x-www-form-urlencoded / n"); client.print ("বিষয়বস্তু-দৈর্ঘ্য:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); বিলম্ব (1000); } পাঠানো ++; client.stop (); }
সম্পূর্ণ কোডটি আমার GitHub- এ পাওয়া যাবে: NodeMCU_UV_DHT_Sensor_OLED_TS_EXT
একবার আপনার কোডটি আপনার NodeMCU এ আপলোড হয়ে গেলে। আসুন একটি বাহ্যিক ব্যাটারি সংযুক্ত করি এবং সূর্যের নিচে কিছু পরিমাপ করি। আমি ছাদে রিমোট স্টেশনটি রাখলাম এবং উপরের ছবিগুলিতে দেখানো হিসাবে ThingSpeak.com- এ ডেটা ক্যাপচার করা শুরু করলাম।
ধাপ 9: চূড়ান্ত নোট
এই টিউটোরিয়ালের মূল উদ্দেশ্য ছিল কিভাবে রাস্পবেরি পাইকে থিংস্পিকের সাথে সংযুক্ত করা যায় তা দেখানো। ডেটা ক্যাপচার এবং আইওটি প্ল্যাটফর্মে লগ ইন করার জন্য এটি দুর্দান্ত।
সুযোগটি ব্যবহার করে আমরা সেই নির্দিষ্ট চ্যানেলে ডেটা পাঠিয়েছি, একটি ESP8266 ব্যবহার করে দূরবর্তী স্টেশন থেকে সেগুলি ক্যাপচার করেছি। এই পদ্ধতিটি ঠিক আছে, কিন্তু সেরা নয়। কারণ আমাদের একটি "অ্যাসিঙ্ক্রোনাস" অপারেশন আছে, কখনও কখনও, RPi এবং ESP8266 উভয়ই একই সময়ে (অথবা ছোট ব্যবধানে) লিংগ করার চেষ্টা করে যা থিংগস্পিক দ্বারা খণ্ডিত হয়। আদর্শটি ESP8266 স্থানীয়ভাবে রাস্পবেরি পাইতে ডেটা পাঠাবে এবং সর্বশেষটি সমস্ত ডেটা পরিচালনা করার জন্য দায়ী। এটি করা, "প্রধান স্টেশন" (রাস্পবেরি পাই), 3 টি কাজ করতে পারে:
- একটি স্থানীয় ডাটাবেসে সমস্ত ডেটা লগ ইন করুন
- একটি স্থানীয় ওয়েবপেজে সমস্ত তথ্য উপস্থাপন করুন (উপরের ছবিতে দেখানো ফ্লাস্ক ব্যবহার করে)
- থিংসস্পিকে একই সময়ে সমস্ত ডেটা প্রেরণ করা হচ্ছে।
ভবিষ্যতের টিউটোরিয়ালে, আমরা সেই বিকল্পগুলি অন্বেষণ করব।
ধাপ 10: উপসংহার
বরাবরের মতো, আমি আশা করি এই প্রকল্পটি অন্যদের ইলেকট্রনিক্সের উত্তেজনাপূর্ণ জগতে তাদের পথ খুঁজে পেতে সাহায্য করতে পারে!
বিস্তারিত এবং চূড়ান্ত কোডের জন্য, দয়া করে আমার গিটহাব ডিপোজিটরি দেখুন: RPi-NodeMCU-Weather-Station
আরো প্রকল্পের জন্য, দয়া করে আমার ব্লগে যান: MJRoBot.org
সাথে থাকুন! পরবর্তী টিউটোরিয়াল আমরা একটি রাস্পবেরি পাই ওয়েব সার্ভারের উপর ভিত্তি করে একটি দূরবর্তী আবহাওয়া স্টেশন থেকে একটি কেন্দ্রীয় কেন্দ্রে ডেটা পাঠাবো:
বিশ্বের দক্ষিণ দিক থেকে সালাম!
আমার পরবর্তী নির্দেশনায় দেখা হবে!
ধন্যবাদ, মার্সেলো
প্রস্তাবিত:
HC-12 লং রেঞ্জ ডিসটেন্স ওয়েদার স্টেশন এবং DHT সেন্সর: Ste টি ধাপ
HC-12 লং রেঞ্জ ডিসটেন্স ওয়েদার স্টেশন এবং DHT সেন্সর: এই টিউটোরিয়ালে আমরা শিখব কিভাবে দুটি dht সেন্সর, HC12 মডিউল এবং I2C LCD ডিসপ্লে ব্যবহার করে দূরবর্তী দূরত্বের আবহাওয়া স্টেশন তৈরি করতে হয়। ভিডিওটি দেখুন
Arduino এবং ThingSpeak ব্যবহার করে মিনি ওয়েদার স্টেশন: 4 টি ধাপ
Arduino এবং ThingSpeak ব্যবহার করে মিনি ওয়েদার স্টেশন: হ্যালো সবাই। এই নির্দেশনায়, আমি আপনাকে একটি ব্যক্তিগতকৃত মিনি আবহাওয়া স্টেশন তৈরির ধাপগুলির মাধ্যমে নির্দেশনা দেব। এছাড়াও, আমরা তাদের সার্ভারে আমাদের আবহাওয়ার ডেটা আপলোড করার জন্য থিংসস্পিক এপিআই ব্যবহার করব, অন্যথায় আবহাওয়া কেন্দ্রের উদ্দেশ্য কী
রুম ওয়েদার স্টেশন Arduino এবং BME280 ব্যবহার করে: 4 টি ধাপ
রুম ওয়েদার স্টেশন Arduino এবং BME280 ব্যবহার করে: পূর্বে আমি একটি সাধারণ আবহাওয়া স্টেশন শেয়ার করেছি যা স্থানীয় এলাকার তাপমাত্রা এবং আর্দ্রতা প্রদর্শন করে। এটির সমস্যাটি ছিল যে এটি আপডেট হতে সময় লাগবে এবং ডেটা সঠিক ছিল না। এই টিউটোরিয়ালে আমরা একটি ইনডোর ওয়েদার মনিটর তৈরি করব
রাস্পবেরি পিআই তাপমাত্রা এবং আর্দ্রতা লগিং, ক্লাউড ওয়েদার স্টেশন, ওয়াইফাই এবং মোবাইল পরিসংখ্যান: 6 টি ধাপ
রাস্পবেরি পিআই তাপমাত্রা এবং আর্দ্রতা লগিং, ক্লাউড ওয়েদার স্টেশন, ওয়াইফাই এবং মোবাইল পরিসংখ্যান: রাস্পবেরি পিআই ডিভাইসের সাহায্যে আপনি তাপমাত্রা এবং আর্দ্রতা ডেটা বাইরে, রুম, গ্রিনহাউস, ল্যাব, কুলিং রুম বা অন্য যে কোনও জায়গায় সম্পূর্ণ বিনামূল্যে লগ করতে পারেন। এই উদাহরণটি আমরা তাপমাত্রা এবং আর্দ্রতা লগ করতে ব্যবহার করব। ডিভাইসটি ইন্টারনেটের সাথে সংযুক্ত থাকবে
RPi ওয়েদার স্টেশন এবং ডিজিটাল ঘড়ি: 4 টি ধাপ (ছবি সহ)
RPi ওয়েদার স্টেশন এবং ডিজিটাল ক্লক: এটি একটি দ্রুত এবং সহজ প্রজেক্ট, এবং দেখানোর জন্য একটি চমৎকার ডিসপ্লে। এটি সময়, আবহাওয়া এবং তাপমাত্রা উভয়ই প্রদর্শন করে। এবং আপনি যা দেখেন তা যদি আপনি পছন্দ করেন তবে আমি যা তৈরি করি তা ধরে রাখতে আমাকে ইনস্টাগ্রাম এবং টুইটারে (@Anders644PI) অনুসরণ করুন।