|
4 weeks ago | |
---|---|---|
.. | ||
README.md | 4 weeks ago | |
assignment.md | 4 weeks ago | |
pi-soil-moisture.md | 4 weeks ago | |
virtual-device-soil-moisture.md | 4 weeks ago | |
wio-terminal-soil-moisture.md | 4 weeks ago |
README.md
C, উচ্চারণ আই-স্কয়ার্ড-সি, একটি মাল্টি-কন্ট্রোলার, মাল্টি-পেরিফেরাল প্রোটোকল, যেখানে সংযুক্ত যেকোনো ডিভাইস কন্ট্রোলার বা পেরিফেরাল হিসেবে কাজ করতে পারে এবং I²C বাসের মাধ্যমে যোগাযোগ করতে পারে (একটি যোগাযোগ ব্যবস্থা যা ডেটা স্থানান্তর করে)। ডেটা ঠিকানাযুক্ত প্যাকেট আকারে পাঠানো হয়, যেখানে প্রতিটি প্যাকেটে সংযুক্ত ডিভাইসের ঠিকানা থাকে যার উদ্দেশ্যে এটি পাঠানো হয়েছে।
💁 এই মডেলটি আগে মাস্টার/স্লেভ নামে পরিচিত ছিল, কিন্তু দাসত্বের সাথে এর সম্পর্ক থাকার কারণে এই পরিভাষা বাদ দেওয়া হচ্ছে। Open Source Hardware Association কন্ট্রোলার/পেরিফেরাল পরিভাষা গ্রহণ করেছে, তবে আপনি এখনও পুরোনো পরিভাষার উল্লেখ দেখতে পারেন।
ডিভাইসগুলোর একটি ঠিকানা থাকে যা তারা I²C বাসে সংযুক্ত হওয়ার সময় ব্যবহার করে, এবং এটি সাধারণত ডিভাইসে হার্ড কোড করা থাকে। উদাহরণস্বরূপ, Seeed-এর প্রতিটি Grove সেন্সরের একই ঠিকানা থাকে, তাই সব লাইট সেন্সরের ঠিকানা একই, সব বোতামের ঠিকানা লাইট সেন্সরের ঠিকানা থেকে আলাদা। কিছু ডিভাইসে ঠিকানা পরিবর্তনের উপায় থাকে, যেমন জাম্পার সেটিং পরিবর্তন করা বা পিনগুলো সোল্ডার করা।
I²C-এর একটি বাস থাকে যা প্রধানত ২টি তারের মাধ্যমে কাজ করে, সাথে ২টি পাওয়ার তার:
তার | নাম | বিবরণ |
---|---|---|
SDA | সিরিয়াল ডেটা | এই তারটি ডিভাইসগুলোর মধ্যে ডেটা পাঠানোর জন্য ব্যবহৃত হয়। |
SCL | সিরিয়াল ক্লক | এই তারটি কন্ট্রোলার দ্বারা নির্ধারিত হারে একটি ক্লক সিগন্যাল পাঠায়। |
VCC | ভোল্টেজ কমন কালেক্টর | ডিভাইসগুলোর পাওয়ার সাপ্লাই। এটি SDA এবং SCL তারের সাথে সংযুক্ত থাকে এবং একটি পুল-আপ রেজিস্টরের মাধ্যমে তাদের পাওয়ার সরবরাহ করে যা কোনো ডিভাইস কন্ট্রোলার না হলে সিগন্যাল বন্ধ করে দেয়। |
GND | গ্রাউন্ড | এটি বৈদ্যুতিক সার্কিটের জন্য একটি সাধারণ গ্রাউন্ড সরবরাহ করে। |
ডেটা পাঠানোর জন্য, একটি ডিভাইস একটি স্টার্ট কন্ডিশন ইস্যু করবে যা দেখাবে যে এটি ডেটা পাঠানোর জন্য প্রস্তুত। এটি তখন কন্ট্রোলার হয়ে যাবে। কন্ট্রোলার তখন সেই ডিভাইসের ঠিকানা পাঠাবে যার সাথে এটি যোগাযোগ করতে চায়, সাথে এটি ডেটা পড়তে বা লিখতে চায় কিনা তা জানাবে। ডেটা প্রেরণ শেষ হলে, কন্ট্রোলার একটি স্টপ কন্ডিশন পাঠাবে যা দেখাবে যে এটি কাজ শেষ করেছে। এর পরে অন্য একটি ডিভাইস কন্ট্রোলার হয়ে ডেটা পাঠাতে বা গ্রহণ করতে পারে। I2C-এর গতি সীমাবদ্ধতা রয়েছে, যেখানে ৩টি ভিন্ন মোড নির্দিষ্ট গতিতে চলে। সবচেয়ে দ্রুত হল High Speed মোড, যার সর্বোচ্চ গতি ৩.৪Mbps (মেগাবিট প্রতি সেকেন্ড), যদিও খুব কম ডিভাইস এই গতি সমর্থন করে। উদাহরণস্বরূপ, Raspberry Pi শুধুমাত্র 400Kbps (কিলোবিট প্রতি সেকেন্ড) গতিতে Fast মোডে সীমাবদ্ধ। Standard মোড 100Kbps গতিতে চলে।
💁 যদি আপনি Raspberry Pi এবং Grove Base hat ব্যবহার করেন IoT হার্ডওয়্যার হিসেবে, তাহলে আপনি বোর্ডে বেশ কয়েকটি I2C সকেট দেখতে পাবেন যা I2C সেন্সরের সাথে যোগাযোগ করতে ব্যবহার করা যায়। Analog Grove সেন্সরও I2C ব্যবহার করে ADC-এর মাধ্যমে অ্যানালগ মানকে ডিজিটাল ডেটা হিসেবে পাঠায়। তাই আপনি যে light sensor ব্যবহার করেছেন তা একটি অ্যানালগ পিনের অনুকরণ করেছে, যেখানে মানটি I2C-এর মাধ্যমে পাঠানো হয়েছে কারণ Raspberry Pi শুধুমাত্র ডিজিটাল পিন সমর্থন করে।
Universal asynchronous receiver-transmitter (UART)
UART এমন একটি শারীরিক সার্কিট যা দুটি ডিভাইসের মধ্যে যোগাযোগের অনুমতি দেয়। প্রতিটি ডিভাইসের ২টি যোগাযোগ পিন থাকে - transmit (Tx) এবং receive (Rx)। প্রথম ডিভাইসের Tx পিন দ্বিতীয় ডিভাইসের Rx পিনের সাথে সংযুক্ত থাকে এবং দ্বিতীয় ডিভাইসের Tx পিন প্রথম ডিভাইসের Rx পিনের সাথে সংযুক্ত থাকে। এটি উভয় দিকেই ডেটা পাঠানোর অনুমতি দেয়।
- ডিভাইস ১ তার Tx পিন থেকে ডেটা পাঠায়, যা ডিভাইস ২ তার Rx পিনে গ্রহণ করে।
- ডিভাইস ১ তার Rx পিনে ডেটা গ্রহণ করে, যা ডিভাইস ২ তার Tx পিন থেকে পাঠায়।
🎓 ডেটা একবারে একটি বিট করে পাঠানো হয়, যা serial যোগাযোগ নামে পরিচিত। বেশিরভাগ অপারেটিং সিস্টেম এবং মাইক্রোকন্ট্রোলারের serial ports থাকে, যা সংযোগের মাধ্যমে সিরিয়াল ডেটা পাঠানো এবং গ্রহণ করা যায় এবং আপনার কোডে ব্যবহার করা যায়।
UART ডিভাইসের একটি baud rate থাকে (যা Symbol rate নামেও পরিচিত), যা ডেটা পাঠানো এবং গ্রহণ করার গতি নির্দেশ করে, প্রতি সেকেন্ডে বিট হিসেবে। একটি সাধারণ baud rate হল 9,600, অর্থাৎ প্রতি সেকেন্ডে 9,600 বিট (0 এবং 1) ডেটা পাঠানো হয়।
UART স্টার্ট এবং স্টপ বিট ব্যবহার করে - এটি একটি স্টার্ট বিট পাঠায় যা নির্দেশ করে যে এটি একটি বাইট (৮ বিট) ডেটা পাঠাতে যাচ্ছে, তারপর ৮ বিট পাঠানোর পরে একটি স্টপ বিট পাঠায়।
UART-এর গতি হার্ডওয়্যারের উপর নির্ভর করে, তবে সবচেয়ে দ্রুত বাস্তবায়নেও এটি ৬.৫ Mbps (মেগাবিট প্রতি সেকেন্ড) অতিক্রম করে না।
GPIO পিনের মাধ্যমে UART ব্যবহার করা যায় - আপনি একটি পিন Tx এবং অন্যটি Rx হিসেবে সেট করতে পারেন, তারপর এগুলো অন্য ডিভাইসের সাথে সংযুক্ত করতে পারেন।
💁 যদি আপনি Raspberry Pi এবং Grove Base hat ব্যবহার করেন IoT হার্ডওয়্যার হিসেবে, তাহলে আপনি বোর্ডে একটি UART সকেট দেখতে পাবেন যা UART প্রোটোকল ব্যবহারকারী সেন্সরের সাথে যোগাযোগ করতে ব্যবহার করা যায়।
Serial Peripheral Interface (SPI)
SPI স্বল্প দূরত্বে যোগাযোগের জন্য ডিজাইন করা হয়েছে, যেমন একটি মাইক্রোকন্ট্রোলার থেকে স্টোরেজ ডিভাইস (যেমন ফ্ল্যাশ মেমরি) এর সাথে কথা বলা। এটি একটি controller/peripheral মডেলের উপর ভিত্তি করে তৈরি, যেখানে একটি controller (সাধারণত IoT ডিভাইসের প্রসেসর) একাধিক peripheral-এর সাথে যোগাযোগ করে। controller একটি peripheral নির্বাচন করে এবং ডেটা পাঠায় বা অনুরোধ করে।
💁 I2C-এর মতো, controller এবং peripheral শব্দগুলি সাম্প্রতিক পরিবর্তন, তাই আপনি এখনও পুরানো শব্দগুলি দেখতে পারেন।
SPI controller ৩টি তার ব্যবহার করে, সাথে প্রতিটি peripheral-এর জন্য ১টি অতিরিক্ত তার। peripheral ৪টি তার ব্যবহার করে। এই তারগুলি হল:
তার | নাম | বিবরণ |
---|---|---|
COPI | Controller Output, Peripheral Input | এই তারটি controller থেকে peripheral-এ ডেটা পাঠানোর জন্য ব্যবহৃত হয়। |
CIPO | Controller Input, Peripheral Output | এই তারটি peripheral থেকে controller-এ ডেটা পাঠানোর জন্য ব্যবহৃত হয়। |
SCLK | Serial Clock | এই তারটি controller দ্বারা নির্ধারিত গতিতে একটি clock signal পাঠায়। |
CS | Chip Select | controller-এর একাধিক তার থাকে, প্রতিটি peripheral-এর জন্য একটি, এবং প্রতিটি তার সংশ্লিষ্ট peripheral-এর CS তারের সাথে সংযুক্ত থাকে। |
CS তারটি একবারে একটি peripheral সক্রিয় করতে ব্যবহৃত হয়, COPI এবং CIPO তারের মাধ্যমে যোগাযোগ করে। controller যখন peripheral পরিবর্তন করতে চায়, তখন এটি বর্তমানে সক্রিয় peripheral-এর সাথে সংযুক্ত CS তারটি নিষ্ক্রিয় করে, তারপর এটি পরবর্তী peripheral-এর সাথে যোগাযোগ করতে চায় এমন তারটি সক্রিয় করে।
SPI full-duplex, অর্থাৎ controller একই সময়ে COPI এবং CIPO তার ব্যবহার করে একই peripheral থেকে ডেটা পাঠাতে এবং গ্রহণ করতে পারে। SPI SCLK তারে একটি clock signal ব্যবহার করে ডিভাইসগুলিকে সিঙ্ক্রোনাইজ করে রাখে, তাই UART-এর মাধ্যমে সরাসরি পাঠানোর মতো স্টার্ট এবং স্টপ বিটের প্রয়োজন হয় না।
SPI-এর জন্য নির্ধারিত গতি সীমা নেই, এবং বাস্তবায়ন প্রায়ই প্রতি সেকেন্ডে একাধিক মেগাবাইট ডেটা পাঠাতে সক্ষম।
IoT ডেভেলপার কিট প্রায়ই GPIO পিনের মাধ্যমে SPI সমর্থন করে। উদাহরণস্বরূপ, Raspberry Pi-তে আপনি GPIO পিন ১৯, ২১, ২৩, ২৪ এবং ২৬ SPI-এর জন্য ব্যবহার করতে পারেন।
Wireless
কিছু সেন্সর স্ট্যান্ডার্ড wireless প্রোটোকলের মাধ্যমে যোগাযোগ করতে পারে, যেমন Bluetooth (মূলত Bluetooth Low Energy বা BLE), LoRaWAN (একটি Long Range low power নেটওয়ার্কিং প্রোটোকল), বা WiFi। এগুলি IoT ডিভাইসের সাথে শারীরিকভাবে সংযুক্ত না থাকা দূরবর্তী সেন্সরের জন্য অনুমতি দেয়।
একটি উদাহরণ হল বাণিজ্যিক মাটির আর্দ্রতা সেন্সর। এগুলি একটি মাঠে মাটির আর্দ্রতা পরিমাপ করবে, তারপর LoRaWAN-এর মাধ্যমে একটি হাব ডিভাইসে ডেটা পাঠাবে, যা ডেটা প্রক্রিয়া করবে বা ইন্টারনেটে পাঠাবে। এটি সেন্সরকে IoT ডিভাইস থেকে দূরে থাকতে দেয় যা ডেটা পরিচালনা করে, শক্তি খরচ কমায় এবং বড় WiFi নেটওয়ার্ক বা দীর্ঘ তারের প্রয়োজনীয়তা হ্রাস করে।
BLE উন্নত সেন্সরের জন্য জনপ্রিয়, যেমন ফিটনেস ট্র্যাকার যা কব্জিতে কাজ করে। এগুলি একাধিক সেন্সরকে একত্রিত করে এবং সেন্সর ডেটা IoT ডিভাইসে পাঠায়, যেমন আপনার ফোনে BLE-এর মাধ্যমে।
✅ আপনার কাছে কি কোনো Bluetooth সেন্সর আছে? এটি আপনার বাড়ি, স্কুল বা আপনার ব্যক্তিগত ডিভাইসের অংশ হতে পারে। এগুলি তাপমাত্রা সেন্সর, উপস্থিতি সেন্সর, ডিভাইস ট্র্যাকার এবং ফিটনেস ডিভাইস অন্তর্ভুক্ত করতে পারে।
বাণিজ্যিক ডিভাইস সংযোগের একটি জনপ্রিয় উপায় হল Zigbee। Zigbee WiFi ব্যবহার করে ডিভাইসগুলির মধ্যে mesh networks তৈরি করে, যেখানে প্রতিটি ডিভাইস যতটা সম্ভব কাছাকাছি ডিভাইসের সাথে সংযুক্ত হয়, একটি মাকড়সার জালের মতো অনেক সংযোগ তৈরি করে। যখন একটি ডিভাইস ইন্টারনেটে একটি বার্তা পাঠাতে চায়, এটি নিকটতম ডিভাইসগুলিতে পাঠাতে পারে, যা তারপর অন্য নিকটবর্তী ডিভাইসগুলিতে বার্তা ফরোয়ার্ড করে এবং এভাবে চলতে থাকে যতক্ষণ না এটি একটি coordinator-এ পৌঁছায় এবং ইন্টারনেটে পাঠানো যায়।
🐝 Zigbee নামটি মধু মৌমাছির waggle dance-এর প্রতি ইঙ্গিত করে, যা তারা তাদের মৌচাকের কাছে ফিরে আসার পরে করে।
মাটির আর্দ্রতা পরিমাপ করুন
আপনি একটি soil moisture sensor, একটি IoT ডিভাইস এবং একটি গৃহস্থালির গাছ বা কাছাকাছি মাটির টুকরো ব্যবহার করে মাটির আর্দ্রতা পরিমাপ করতে পারেন।
কাজ - মাটির আর্দ্রতা পরিমাপ করুন
আপনার IoT ডিভাইস ব্যবহার করে মাটির আর্দ্রতা পরিমাপ করার জন্য প্রাসঙ্গিক গাইডটি অনুসরণ করুন:
সেন্সর ক্যালিব্রেশন
সেন্সরগুলি বৈদ্যুতিক বৈশিষ্ট্য যেমন resistance বা capacitance পরিমাপের উপর নির্ভর করে।
🎓 Resistance, ওহম (Ω) এককে পরিমাপ করা হয়, এটি নির্দেশ করে যে বৈদ্যুতিক প্রবাহের জন্য কতটা বাধা রয়েছে। যখন একটি ভোল্টেজ একটি উপাদানে প্রয়োগ করা হয়, তখন এর মধ্য দিয়ে প্রবাহিত কারেন্টের পরিমাণ উপাদানের resistance-এর উপর নির্ভর করে। আপনি Wikipedia-এর electrical resistance পৃষ্ঠায় আরও পড়তে পারেন।
🎓 Capacitance, ফ্যারাড (F) এককে পরিমাপ করা হয়, এটি একটি উপাদান বা সার্কিটের বৈদ্যুতিক শক্তি সংগ্রহ এবং সংরক্ষণ করার ক্ষমতা নির্দেশ করে। আপনি Wikipedia-এর capacitance পৃষ্ঠায় capacitance সম্পর্কে আরও পড়তে পারেন।
এই পরিমাপগুলি সবসময় কার্যকর নয় - কল্পনা করুন একটি temperature sensor আপনাকে ২২.৫KΩ পরিমাপ দিয়েছে! পরিবর্তে, পরিমাপ করা মানটি একটি কার্যকর এককে রূপান্তরিত করতে হবে ক্যালিব্রেট করে - অর্থাৎ পরিমাপ করা মানগুলিকে পরিমাপ করা পরিমাণের সাথে মেলানো যাতে নতুন পরিমাপগুলি সঠিক এককে রূপান্তরিত করা যায়।
কিছু সেন্সর প্রি-ক্যালিব্রেটেড অবস্থায় আসে। উদাহরণস্বরূপ, আপনি আগের পাঠে যে temperature sensor ব্যবহার করেছেন তা ইতিমধ্যেই ক্যালিব্রেট করা ছিল যাতে এটি °C-এ তাপমাত্রা পরিমাপ প্রদান করতে পারে। কারখানায় প্রথম সেন্সরটি তৈরি করা হলে এটি একটি নির্দিষ্ট তাপমাত্রার পরিসরে প্রকাশ করা হয় এবং resistance পরিমাপ করা হয়। এটি তখন একটি গণনা তৈরি করতে ব্যবহৃত হয় যা Ω (resistance-এর একক) থেকে °C-এ রূপান্তর করতে পারে।
💁 তাপমাত্রা থেকে resistance গণনা করার সূত্রটি Steinhart–Hart equation নামে পরিচিত।
Soil moisture sensor ক্যালিব্রেশন
মাটির আর্দ্রতা gravimetric বা volumetric water content ব্যবহার করে পরিমাপ করা হয়।
- Gravimetric হল মাটির একক ওজনের মধ্যে পানির ওজন পরিমাপ করা, যা শুকনো মাটির প্রতি কিলোগ্রামে পানির কিলোগ্রাম হিসেবে প্রকাশ করা হয়।
- Volumetric হল মাটির একক আয়তনের মধ্যে পানির আয়তন পরিমাপ করা, যা শুকনো মাটির প্রতি ঘনমিটারে পানির ঘনমিটার হিসেবে প্রকাশ করা হয়।
🇺🇸 আমেরিকানদের জন্য, এককের সামঞ্জস্যতার কারণে, এগুলি কিলোগ্রামের পরিবর্তে পাউন্ড বা ঘনমিটারের পরিবর্তে ঘনফুটে পরিমাপ করা যেতে পারে।
Soil moisture sensors বৈদ্যুতিক resistance বা capacitance পরিমাপ করে - এটি শুধুমাত্র মাটির আর্দ্রতার উপর নির্ভর করে না, বরং মাটির ধরনেও নির্ভর করে কারণ মাটির উপাদানগুলি এর বৈদ্যুতিক বৈশিষ্ট্য পরিবর্তন করতে পারে। আদর্শভাবে সেন্সরগুলি ক্যালিব্রেট করা উচিত - অর্থাৎ সেন্সর থেকে পাঠ নেওয়া এবং আরও বৈজ্ঞানিক পদ্ধতি ব্যবহার করে পাওয়া পরিমাপের সাথে তুলনা করা। উদাহরণস্বরূপ, একটি ল্যাব একটি নির্দিষ্ট মাঠের নমুনা কয়েকবার বছরে নিয়ে gravimetric soil moisture গণনা করতে পারে এবং এই সংখ্যাগুলি সেন্সর ক্যালিব্রেট করতে ব্যবহার করা যেতে পারে, সেন্সর পাঠকে gravimetric soil moisture-এর সাথে মেলানো।
উপরের গ্রাফটি একটি সেন্সর ক্যালিব্রেট করার পদ্ধতি দেখায়। একটি soil sample-এর জন্য ভোল্টেজ ধারণ করা হয় যা পরে একটি ল্যাবে পরিমাপ করা হয় ভেজা ওজন এবং শুকনো ওজনের তুলনা করে (ভেজা অবস্থায় ওজন পরিমাপ করে, তারপর ওভেনে শুকিয়ে শুকনো অবস্থায় ওজন পরিমাপ করে)। একবার কয়েকটি পাঠ নেওয়া হলে, এটি একটি গ্রাফে প্লট করা যায় এবং পয়েন্টগুলিতে একটি লাইন ফিট করা যায়। এই লাইনটি IoT ডিভাইস দ্বারা নেওয়া soil moisture sensor পাঠকে প্রকৃত soil moisture পরিমাপে রূপান্তর করতে ব্যবহার করা যেতে পারে।
💁 Resistive soil moisture sensors-এর জন্য, ভোল্টেজ মাটির আর্দ্রতা বৃদ্ধির সাথে বৃদ্ধি পায়। Capacitive soil moisture sensors-এর জন্য, ভোল্টেজ মাটির আর্দ্রতা বৃদ্ধির সাথে হ্রাস পায়, তাই এই গ্রাফগুলি নিচের দিকে ঢালু হবে, উপরের দিকে নয়।
উপরের গ্রাফটি একটি soil moisture sensor থেকে একটি ভোল্টেজ পাঠ দেখায়, এবং গ্রাফে লাইনটি অনুসরণ করে প্রকৃত soil moisture গণনা করা যায়।
এই পদ্ধতিটি কৃষককে একটি মাঠের জন্য কয়েকটি ল্যাব পরিমাপ পেতে দেয়, তারপর তারা IoT ডিভাইস ব্যবহার করে soil moisture পরিমাপ করতে পারে - পরিমাপ নেওয়ার সময়কে উল্লেখযোগ্যভাবে দ্রুত করে তোলে।
🚀 চ্যালেঞ্জ
Resistive এবং capacitive soil moisture sensors-এর মধ্যে বেশ কিছু পার্থক্য রয়েছে। এই পার্থক্যগুলি কী, এবং কোন ধরনের (যদি থাকে) কৃষকের জন্য সবচেয়ে ভালো? এই উত্তরটি কি উন্নয়নশীল এবং উন্নত দেশগুলির মধ্যে পরিবর্তিত হয়?
Post-lecture quiz
পর্যালোচনা এবং স্ব-অধ্যয়ন
সেন্সর এবং অ্যাকচুয়েটর দ্বারা ব্যবহৃত হার্ডওয়্যার এবং প্রোটোকল সম্পর্কে পড়ুন:
- GPIO Wikipedia পৃষ্ঠা
- UART Wikipedia পৃষ্ঠা
- SPI Wikipedia পৃষ্ঠা
- I2C Wikipedia পৃষ্ঠা
- Zigbee Wikipedia পৃষ্ঠা
অ্যাসাইনমেন্ট
অস্বীকৃতি:
এই নথিটি AI অনুবাদ পরিষেবা Co-op Translator ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না।