কম্পিউটার

আবহাওয়া পর্যবেক্ষণ করতে নোড, একটি রাস্পবেরি পাই এবং একটি এলসিডি স্ক্রিন কীভাবে ব্যবহার করবেন

গত কয়েক বছরে, স্মার্ট হোম ডিভাইসগুলি 2015 সালে 300,000 এরও কম ছিল যা 2020 সালে প্রায় 1.2 বিলিয়ন হয়েছে। এবং 2021 সালের মধ্যে সেগুলি 1.5 বিলিয়ন হবে বলে আশা করা হচ্ছে।

তাই সম্ভবত আপনার বাড়িতে অন্তত কিছু স্মার্ট ডিভাইস আছে, এই পরিপ্রেক্ষিতে যে 2021 সালের মধ্যে গড়ে প্রতি বাড়িতে 8.7 স্মার্ট ডিভাইস পৌঁছে যাবে।

ডেভেলপার হিসেবে, এই ডোমেনে আমাদের কিছু সুবিধা আছে, যেহেতু আমরা আমাদের নিজস্ব স্মার্ট হোম ডিভাইস তৈরি করতে পারি।

এটি শুধুমাত্র ডিভাইসগুলিই নয় যা দ্রুত বিকাশের অভিজ্ঞতা অর্জন করেছে। তাদের জন্য ব্যবহৃত উন্নয়ন বোর্ডগুলি আরও বেশি বাণিজ্যিক এবং সহজলভ্য হতে শুরু করেছে।

এই নিবন্ধে, আমরা দেখব কীভাবে আমরা একটি রাস্পবেরি পাই, একটি এলসিডি স্ক্রিন এবং কয়েকটি লাইনের কোড ব্যবহার করে বাইরের আবহাওয়া বা একটি নির্দিষ্ট অবস্থানের জন্য পর্যবেক্ষণ করতে পারি৷

আবহাওয়া পর্যবেক্ষণ করতে নোড, একটি রাস্পবেরি পাই এবং একটি এলসিডি স্ক্রিন কীভাবে ব্যবহার করবেন

যেহেতু এটি একটি ডু ইট ইউরসেলফ (DIY) প্রকল্প, তাই এই ডিভাইসটির জন্য আমাদের কিছু পূর্বশর্ত প্রয়োজন।

পূর্বশর্ত

  • রাস্পবেরি পাই 3 (বা উচ্চতর)
  • এলসিডি স্ক্রিন
  • সংযোগ তারগুলি
  • পটেনশিওমিটার (ঐচ্ছিক)
  • ব্রেডবোর্ড (ঐচ্ছিক)

কিভাবে এটি তৈরি করবেন

যত তাড়াতাড়ি আমাদের প্রয়োজনীয় সবকিছু আছে আমরা শুরু করতে পারি। আসুন এটি ধাপে ধাপে নেওয়া যাক।

ধাপ I - বেস কনফিগারেশন

প্রথম ধাপে মৌলিক সেটআপ এবং সমস্ত উপাদানের যাচাইকরণ রয়েছে।

এই ডেমোর জন্য, আমরা আবহাওয়া ডেটা প্রদানকারী হিসাবে ClimaCell Weather API ব্যবহার করব, কারণ তাদের কাছে আমাদের ব্যবহারের জন্য বায়ুর গুণমান সূচক সহ প্রচুর সংখ্যক সূচক রয়েছে।

তাদের API ব্যবহার করার জন্য আমাদের অবশ্যই তাদের প্ল্যাটফর্মে একটি অ্যাকাউন্ট খুলতে হবে এবং একটি API কী পেতে হবে, যা আমরা আমাদের অনুরোধগুলিতে স্বাক্ষর করতে ব্যবহার করব।

আবহাওয়া পর্যবেক্ষণ করতে নোড, একটি রাস্পবেরি পাই এবং একটি এলসিডি স্ক্রিন কীভাবে ব্যবহার করবেন
ClimaCell API সীমা

অ্যাকাউন্টটি খোলার জন্য বিনামূল্যে এবং এটি API কলের 100-ঘন্টার সীমা সহ আসে, যা আমাদের প্রকল্পের জন্য যথেষ্ট।

যত তাড়াতাড়ি আমাদের কাছে এই API কী আছে, আমরা হার্ডওয়্যার কনফিগারেশনে যেতে পারি এবং আমাদের রাস্পবেরি পাইয়ের সাথে LCD স্ক্রিন সংযোগ করতে পারি। তারের সংযোগ করার সময় আপনার রাস্পবেরি পাই বন্ধ করা উচিত।

রাস্পবেরি পাই 3 এর পিন লেআউট পরবর্তী ছবিতে দেখা যাবে।

আবহাওয়া পর্যবেক্ষণ করতে নোড, একটি রাস্পবেরি পাই এবং একটি এলসিডি স্ক্রিন কীভাবে ব্যবহার করবেন
রাস্পবেরি পাই 3 পিন

এলসিডি এবং ডেভেলপমেন্ট বোর্ডের মধ্যে তারের সংযোগ নিম্নরূপ:

আবহাওয়া পর্যবেক্ষণ করতে নোড, একটি রাস্পবেরি পাই এবং একটি এলসিডি স্ক্রিন কীভাবে ব্যবহার করবেন
রাস্পবেরি PI এবং LCD এর মধ্যে সংযোগ

এই হার্ডওয়্যার সংযোগটি এলসিডি স্ক্রিনটিকে সম্পূর্ণ উজ্জ্বলতা এবং সম্পূর্ণ বৈসাদৃশ্যে তৈরি করবে। উজ্জ্বলতা স্তর একটি সমস্যা নয়, কিন্তু বিপরীত কারণ আমরা পর্দায় অক্ষর দেখতে সক্ষম হবে না.

সেজন্য আমাদের অন্তত একটি পটেনশিওমিটার প্রবর্তন করতে হবে যার সাহায্যে কনট্রাস্ট লেভেল সেট করা যায়।

আবহাওয়া পর্যবেক্ষণ করতে নোড, একটি রাস্পবেরি পাই এবং একটি এলসিডি স্ক্রিন কীভাবে ব্যবহার করবেন
পরিকল্পিত

এই মুহুর্তে, আমরা আমাদের রাস্পবেরি পাই চালু করতে পারি এবং আমাদের LCD স্ক্রিনটি জীবন্ত দেখতে হবে। পরিবর্তনশীল প্রতিরোধের সাহায্যে আমাদের বৈসাদৃশ্য নিয়ন্ত্রণ করতে সক্ষম হওয়া উচিত।

ধাপ II - প্রকল্প কনফিগারেশন

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

একটি নতুন ফোল্ডারে, npm init -y কমান্ডটি চালান একটি নতুন npm প্যাকেজ সেট আপ করতে, কমান্ডটি অনুসরণ করুন npm install lcd node-fetch এই 2টি প্রয়োজনীয় নির্ভরতা ইনস্টল করতে।

  • lcd LCD স্ক্রিনের সাথে যোগাযোগ করতে ব্যবহার করা হবে
  • node-fetch ClimaCell API এ HTTP অনুরোধ করতে ব্যবহার করা হবে।

আমরা বলেছিলাম যে আবহাওয়া ডেটা প্রদানকারীর সাথে যোগাযোগ করার জন্য আমাদের একটি API কী দরকার। আপনি আপনার গোপন API কী সরাসরি প্রধান কোডে রাখুন, অথবা আপনি একটি config.json তৈরি করতে পারেন যে ফাইলে আপনি এই কী এবং আপনার কাছে থাকা অন্য কোনো কোড-সম্পর্কিত কনফিগারেশন রাখতে পারেন।

config.json

{  "cc_key": "<your_ClimaCell_API_key>"}

সবশেষে, আসুন আমাদের প্রকল্পের মূল ফাইল তৈরি করি এবং এই সমস্ত জিনিসগুলিকে অন্তর্ভুক্ত করি যার বিষয়ে আমরা কথা বলেছি।

// * Dependencies
const Lcd = require("lcd");
const fs = require("fs");
const fetch = require("node-fetch");

// * Globals
const { cc_key } = JSON.parse(fs.readFileSync("./config.json"));

ধাপ III - এলসিডি

Lcd মডিউল ব্যবহার করে স্ক্রিনে লেখা কেকের টুকরো। এই লাইব্রেরিটি আমরা কীভাবে ডিভাইসের সাথে যোগাযোগ করি তার উপর বিমূর্ততার একটি স্তর হিসাবে কাজ করে। এইভাবে আমাদের প্রতিটি কমান্ডকে পৃথকভাবে মাইক্রো-ম্যানেজ করতে হবে না।

আমাদের এলসিডি স্ক্রিনের পুরো কোডটি নিম্নরূপ:

আবহাওয়া পর্যবেক্ষণ করতে নোড, একটি রাস্পবেরি পাই এবং একটি এলসিডি স্ক্রিন কীভাবে ব্যবহার করবেন
RAW

প্রথম ধাপ ছিল একটি নতুন lcd তৈরি করা বস্তু এবং যুক্তি হিসাবে পাস করা পিন আমরা ব্যবহার করেছি।

কী cols এবং rows আমাদের LCD ডিসপ্লের কলাম এবং সারির সংখ্যা উপস্থাপন করে। 16x2 আমি এই উদাহরণে ব্যবহার করেছি। যদি আপনার এলসিডিতে মাত্র 8টি কলাম এবং 1 সারি থাকে, তাহলে 16 এবং 2টি আপনার মান দিয়ে প্রতিস্থাপন করুন৷

ডিসপ্লেতে কিছু লিখতে আমাদের এই দুটি পদ্ধতি ধারাবাহিকভাবে ব্যবহার করতে হবে:

  • lcd.setCursor() - যে অবস্থান থেকে লেখা শুরু করতে হবে তা নির্বাচন করা
  • lcd.print()

একই সময়ে, আমরা এই দুটি ফাংশনকে async/away ব্যবহার করার প্রতিশ্রুতি দিয়ে মোড়ানো করেছি কীওয়ার্ড।

এই মুহুর্তে, আপনি এই ফাংশনটি ব্যবহার করতে পারেন এবং আপনার ডিসপ্লেতে কিছু মুদ্রণ করতে পারেন। writeToLcd(0,0,'Hello World') বার্তা Hello World প্রিন্ট করা উচিত প্রথম কলাম থেকে শুরু করে প্রথম সারিতে।

চতুর্থ ধাপ - আবহাওয়ার তথ্য

পরবর্তী ধাপ হল আবহাওয়ার তথ্য পাওয়া এবং ডিসপ্লেতে প্রিন্ট করা।

ক্লাইমাসেল আবহাওয়ার অনেক তথ্য, কিন্তু বাতাসের গুণমান এবং পরাগ, আগুন এবং অন্যান্য তথ্য সরবরাহ করে। ডেটা বিশাল, কিন্তু মনে রাখবেন যে আপনার LCD স্ক্রিনে শুধুমাত্র 16টি কলাম এবং 2টি সারি রয়েছে - এটি মাত্র 32টি অক্ষর৷

আপনি যদি আরও ধরণের ডেটা প্রদর্শন করতে চান এবং এই সীমাটি আপনার জন্য খুব ছোট, তাহলে আপনি একটি স্ক্রোল প্রভাব ব্যবহার করতে পারেন৷

আবহাওয়া পর্যবেক্ষণ করতে নোড, একটি রাস্পবেরি পাই এবং একটি এলসিডি স্ক্রিন কীভাবে ব্যবহার করবেন

এই ডেমোর জন্য আমরা এটিকে সহজ রাখব এবং আমরা LCD স্ক্রিনে নিম্নলিখিত ডেটা প্রিন্ট করব:

  • বর্তমান তারিখ (ঘন্টা, মিনিট, সেকেন্ড)
  • তাপমাত্রা
  • বৃষ্টির তীব্রতা
আবহাওয়া পর্যবেক্ষণ করতে নোড, একটি রাস্পবেরি পাই এবং একটি এলসিডি স্ক্রিন কীভাবে ব্যবহার করবেন
RAW

একটি নির্দিষ্ট অবস্থানের জন্য ClimaCell থেকে ডেটা পেতে, তারপর আপনাকে এর ভৌগলিক স্থানাঙ্ক, অক্ষাংশ এবং দ্রাঘিমাংশ পাঠাতে হবে৷

আপনার শহরের স্থানাঙ্কগুলি খুঁজে পেতে, আপনি latlong.net এর মতো একটি বিনামূল্যের টুল ব্যবহার করতে পারেন এবং তারপরে আপনি সেগুলি config.json এ সংরক্ষণ করতে পারেন আপনার API কী সহ ফাইল করুন, অথবা আপনি সরাসরি কোডে লিখতে পারেন।

এই সময়ে API কল দ্বারা প্রত্যাবর্তিত ডেটা বিন্যাসটি নিম্নরূপ:

{
  lat: 45.658,
  lon: 25.6012,
  temp: { value: 17.56, units: 'C' },
  precipitation: { value: 0.3478, units: 'mm/hr' },
  observation_time: { value: '2020-06-22T16:30:22.941Z' }
}

আমরা এই বস্তুটিকে ডিকনস্ট্রাকট করতে পারি এবং তাপমাত্রা এবং বৃষ্টিপাতের মান পেতে পারি এবং সেগুলিকে প্রথম এবং দ্বিতীয় সারিতে প্রিন্ট করতে পারি।

ধাপ V - এটি মোড়ানো

আমাদের এখন যা করতে হবে তা হল আমাদের স্ক্রিপ্টের জন্য যুক্তি লিখতে হবে, এবং নতুন ডেটা এলে LCD স্ক্রীন আপডেট করতে হবে।

আবহাওয়া পর্যবেক্ষণ করতে নোড, একটি রাস্পবেরি পাই এবং একটি এলসিডি স্ক্রিন কীভাবে ব্যবহার করবেন
RAW

আবহাওয়ার তথ্য প্রতি 5 মিনিটে আপডেট করা হয়। কিন্তু যেহেতু আমাদের ClimaCell দ্বারা আরোপিত 100 API কল/ঘন্টার সীমা রয়েছে, তাই আমরা আরও এগিয়ে যেতে পারি এবং প্রতি মিনিটে আবহাওয়ার ডেটা আপডেট করতে পারি।

বর্তমান তারিখের জন্য, আমাদের কাছে দুটি বিকল্প রয়েছে:

  • আমরা সম্পত্তি observation_time ব্যবহার করতে পারি এবং যে তারিখে ডেটা প্রাপ্ত হয়েছিল তা প্রদর্শন করুন, অথবা
  • আমরা একটি বাস্তব ঘড়ি তৈরি করতে পারি এবং বর্তমান সময় প্রদর্শন করতে পারি।

আমি দ্বিতীয় বিকল্পটি বেছে নিয়েছি, কিন্তু আপনি যেমন খুশি তা করতে দ্বিধা বোধ করবেন না।

উপরের ডানদিকের কোণায় সময় প্রিন্ট করার জন্য, আমাদের প্রথমে প্রারম্ভিক কলামটি গণনা করতে হবে যাতে পাঠ্যটি সহজভাবে ফিট হয়। এর জন্য আমরা পরবর্তী সূত্র total columns number ব্যবহার করতে পারি বিয়োগ text to display length

তারিখটিতে 8টি অক্ষর রয়েছে এবং যেহেতু তার 16টি কলাম রয়েছে, তাই আমাদের অবশ্যই 8 নম্বর কলাম থেকে শুরু করতে হবে৷

LCD সেটিংটি অ্যাসিঙ্ক্রোনাস, তাই আমাদের অবশ্যই lcd.on() পদ্ধতিটি ব্যবহার করতে হবে সম্পর্কিত লাইব্রেরি দ্বারা সরবরাহ করা হয়, তাই আমরা জানি কখন LCD চালু করা হয়েছে এবং ব্যবহারের জন্য প্রস্তুত৷

এমবেডেড সিস্টেমে আরেকটি সর্বোত্তম অভ্যাস হল আপনি যে সংস্থানগুলি ব্যবহার করেন তা বন্ধ এবং মুক্ত করা। তাই আমরা SIGNINT ব্যবহার করি প্রোগ্রাম বন্ধ হয়ে গেলে এলসিডি স্ক্রিন বন্ধ করার ইভেন্ট। এই ধরনের অন্যান্য ইভেন্টগুলির মধ্যে রয়েছে:

  • SIGUSR1 এবং SIGUSR2 - নোডেমন রিস্টার্টের মত "কিল পিড" ধরতে
  • uncaughtException - ধরা না পড়া ব্যতিক্রমগুলি ধরতে

ধাপ ষষ্ঠ - এটি চিরতরে চালান

স্ক্রিপ্ট সম্পূর্ণ এবং এই সময়ে আমরা আমাদের প্রোগ্রাম চালাতে পারেন. শেষ করার আগে আমাদের আরও একটি জিনিস করতে হবে।

এই মুহুর্তে আপনি সম্ভবত আপনার রাস্পবেরি পাই এর সাথে SSH ব্যবহার করে বা সরাসরি HDMI কেবল এবং একটি মনিটরের সাথে সংযুক্ত আছেন। যাই হোক না কেন, আপনি যখন আপনার টার্মিনাল বন্ধ করেন তখন প্রোগ্রামটি বন্ধ হয়ে যাবে।

একই সময়ে আপনি যদি আপনার ডিভাইসটি বন্ধ করে দেন এবং কিছুক্ষণ পরে বা অবিলম্বে এটি আবার চালু করেন, তাহলে স্ক্রিপ্টটি শুরু হবে না এবং আপনাকে এটি ম্যানুয়ালি করতে হবে৷

এই সমস্যা সমাধানের জন্য, আমরা pm2 এর মত একটি প্রসেস ম্যানেজার ব্যবহার করতে পারি।

এখানে পদক্ষেপগুলি রয়েছে:

  1. sudo npm install pm2 -g - pm2 ইনস্টল করুন
  2. sudo pm2 startup - pm2 পরিচালকের জন্য একটি স্টার্টআপ স্ক্রিপ্ট তৈরি করুন
  3. pm2 start index.js - একটি অ্যাপ্লিকেশন শুরু করুন
  4. pm2 save - সার্ভার রিস্টার্ট জুড়ে আপনার প্রক্রিয়া তালিকা সংরক্ষণ করুন

এখন আপনি আপনার বোর্ড রিবুট করতে পারেন এবং ডিভাইসটি প্রস্তুত হলে স্ক্রিপ্ট স্বয়ংক্রিয়ভাবে শুরু হবে৷

উপসংহার

এই বিন্দু থেকে আপনি আপনার নতুন ডিভাইসটি আপনার ইচ্ছামত কাস্টমাইজ করতে পারেন। আপনি যদি এই আবহাওয়ার ডেটা আপনার জন্য গুরুত্বপূর্ণ মনে করেন (বা ক্লাইমাসেলের অন্য কোনও ডেটা, যেমন বায়ু দূষণ, পরাগ, অগ্নি সূচক বা রাস্তার ঝুঁকি), আপনি এতে রাস্পবেরি পাই এবং LCD ডিসপ্লে রাখার জন্য একটি কাস্টম কেস তৈরি করতে পারেন। তারপর আপনি একটি ব্যাটারি যোগ করার পরে আপনি আপনার বাড়িতে ডিভাইস রাখতে পারেন.

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


  1. আইফোন এক্সএস এক্সএস, এক্সএস ম্যাক্স এবং এক্সআর-এ কীভাবে পৌঁছানোর ক্ষমতা ব্যবহার করবেন

  2. ডিডিসি/সিআই কী এবং এটি কীভাবে ব্যবহার করবেন

  3. উইন্ডোজ 8 এবং 10 এ কীভাবে উইন্ডোজ আপডেট ট্রাবলশুটার ব্যবহার করবেন

  4. ম্যাকের টাস্ক ম্যানেজার:অ্যাক্টিভিটি মনিটর এবং এটি কীভাবে ব্যবহার করবেন