Merge branch 'main' into main

pull/191/head
Dignata Majumder 4 years ago committed by GitHub
commit ee3c9905da
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,15 +1,15 @@
# IoT যাত্রার সূচনা
সম্পূর্ণ পাঠ্যসূচির এই অংশে আমরা পরিচিত হবো ইন্টারনেট অফ থিংস (Internet of Things) বা সংক্ষেপে IoT এর সাথে । এখানে বেসিক কনসেপ্টগুলি শিখবো যেমন ক্লাউডে সংযুক্ত আমাদের প্রথম 'Hello World' প্রজেক্ট যেটিতে আমরা রাতের বেলা কতটুকু অন্ধকার হচ্ছে - সেন্সর থেকে সেই তথ্যের ভিত্তিতে আলো জ্বালাবো ।
সম্পূর্ণ পাঠ্যসূচির এই অংশে আমরা পরিচিত হবো ইন্টারনেট অফ থিংস (Internet of Things) বা সংক্ষেপে IoT এর সাথে । এখানে বেসিক কনসেপ্টগুলি শিখবো যেমন: ক্লাউডে সংযুক্ত আমাদের প্রথম 'Hello World' প্রজেক্ট যেটিতে আমরা রাতের বেলা কতটুকু অন্ধকার হচ্ছে - সেন্সর থেকে সেই তথ্যের ভিত্তিতে আলো জ্বালাবো ।
![WIO এর সাথে কানেক্টেড LED টি অন এবং অফ হচ্ছে প্রাপ্ত আলোর উপর নির্ভর করে](wio-running-assignment-1-1.gif)
## অধ্যায়সমূহ
1. [IoT পরিচিতি](lessons/1-introduction-to-iot/README.md)
1. [IoT এর আরেকটু গভীরে](lessons/2-deeper-dive/README.md)
1. [সেন্সর এবং একচুয়েটর দ্বারা বাহ্যিক জগতের সাথে ইন্টারেকশন ](lessons/3-sensors-and-actuators/README.md)
1. [যন্ত্রগুলোকে ইন্টারনেটে সংযুক্ত করা](lessons/4-connect-internet/README.md)
1. [IoT পরিচিতি](../lessons/1-introduction-to-iot/translations/README.bn.md)
1. [IoT এর আরেকটু গভীরে](../lessons/2-deeper-dive/translations/README.bn.md)
1. [সেন্সর এবং একচুয়েটর দ্বারা বাহ্যিক জগতের সাথে ইন্টারেকশন ](../lessons/3-sensors-and-actuators/translations/README.bn.md)
1. [যন্ত্রগুলোকে ইন্টারনেটে সংযুক্ত করা](../lessons/4-connect-internet/translations/README.bn.md)
## ক্রেডিট

@ -91,7 +91,7 @@ IoT শব্দে **T** হলো **Things** - ‘থিংস’ বা জ
পরবর্তী সমস্ত পাঠগুলিতে আমাদের চারপাশের জগতের সাথে যোগাযোগ করার জন্য এবং ক্লাউড সার্ভিসের সাথে যংযুক্ত থাকার জন্য আইওটি ডিভাইস ব্যবহার করে এসাইনমেন্ট দেয়া হবে। প্রতিটি পাঠ ৩ ধরণের ডিভাইস সাপোর্ট করে - আরডুইনো (একটি সীড স্টুডিওস উইও টার্মিনাল ব্যবহার করে), বা একটি একক বোর্ড কম্পিউটার বা কোনও ফিজিকাল ডিভাইস (একটি রাস্পবেরি পাই 4), অথবা পিসি বা ম্যাকে ব্যবহার যোগ্য ভার্চুয়াল একক-বোর্ড কম্পিউটার (কোন ফিজিক্যাল আইওটি ডিভাইস ব্যবহার না করেই) ।
এখানে [hardware guide](../../../../hardware.md) অংশে সমস্ত অ্যাসাইনমেন্ট সম্পন্ন করার জন্য প্রয়োজনীয় হার্ডওয়্যার সম্পর্কে বিস্তারিত রয়েছে ।
এখানে [হার্ডওয়্যার গাইড](../../../../translations/hardware.bn.md) অংশে সমস্ত অ্যাসাইনমেন্ট সম্পন্ন করার জন্য প্রয়োজনীয় হার্ডওয়্যার সম্পর্কে বিস্তারিত রয়েছে ।
> 💁 অ্যাসাইনমেন্টগুলি সম্পন্ন করার জন্য আপনার কোন আইওটি হার্ডওয়্যার কেনার দরকার নেই, আমরা চাইলে ভার্চুয়াল সিঙ্গল-বোর্ড কম্পিউটার ব্যবহার করে সবকিছু করতে পারবো ।
@ -126,14 +126,14 @@ IoT শব্দে **T** হলো **Things** - ‘থিংস’ বা জ
আইওটি ডিভাইস প্রোগ্রামিং শুরু করার আগে আমাদেরকে কিছু বিষয় সেটআপ করতে হবে। কোন ডিভাইসটি আমরা ব্যবহার করবোতার উপর নির্ভর করে নীচের প্রাসঙ্গিক নির্দেশাবলী অনুসরণ করতে হবে।
> 💁 যদি কোন ডিভাইস না থাকে, তবে কোন ডিভাইস ব্যবহার করা যেতে পারে এবং কী কী অতিরিক্ত যন্ত্র আমাদের কিনতে হবে সেই সংক্রান্ত তথ্যাবলি [hardware guide](../../../../hardware.md) এ রয়েছে । এক্ষেত্র আমাদের কোন হার্ডওয়্যার না কিনলেও হবে , কারণ সমস্ত প্রকল্প ভার্চুয়াল ভাবে চালিয়ে আমরা শিখতে পারবো ।
> 💁 যদি কোন ডিভাইস না থাকে, তবে কোন ডিভাইস ব্যবহার করা যেতে পারে এবং কী কী অতিরিক্ত যন্ত্র আমাদের কিনতে হবে সেই সংক্রান্ত তথ্যাবলি [হার্ডওয়্যার গাইড](../../../../translations/hardware.bn.md) এ রয়েছে । এক্ষেত্র আমাদের কোন হার্ডওয়্যার না কিনলেও হবে , কারণ সমস্ত প্রকল্প ভার্চুয়াল ভাবে চালিয়ে আমরা শিখতে পারবো ।
এখানের নির্দেশাবলীর মধ্যে এমন হার্ডওয়্যার বা সরঞ্জামগুলির নির্মাতাদের ( তৃতীয় পক্ষের) ওয়েবসাইটগুলির লিঙ্ক অন্তর্ভুক্ত রয়েছে। আমরা যেন সর্বদা বিভিন্ন সরঞ্জাম এবং হার্ডওয়্যারের জন্য সর্বাধিক যুগোপযোগী নির্দেশাবলী ব্যবহার করতে পারি তা নিশ্চিত করার জন্য এটি করা হয়েছে।
আমাদের ডিভাইস সেট আপ করতে এবং 'হ্যালো ওয়ার্ল্ড' প্রকল্পটি সম্পূর্ণ করতে নিচের সহায়ক লিংকগুলোতে নির্দেশনা রয়েছে। Getting Started এর এই অধ্যায়ের 4টি পাঠে, আমরা একটি “নাইটলাইট” প্রজেক্ট করবো যার শুরু এখান থেকেই হতে চলেছে।
* [আরডুইনো Wio টার্মিনাল](../wio-terminal.md)
* [সিংগেল বোর্ড কম্পিউটার - রাস্পবেরি পাই](../pi.md)
* [আরডুইনো Wio টার্মিনাল](wio-terminal.bn.md)
* [সিংগেল বোর্ড কম্পিউটার - রাস্পবেরি পাই](pi.bn.md)
* [সিংগেল বোর্ড কম্পিউটার -ভার্চুয়াল ডিভাইস](../virtual-device.md)
## আইওটি এর প্রয়োগসমূহ
@ -145,7 +145,6 @@ IoT শব্দে **T** হলো **Things** - ‘থিংস’ বা জ
* শিল্পক্ষেত্রে আইওটি
* অবকাঠামোগত আইওটি
✅ একটু গবেষণা করা যাক। নিম্নে বর্ণিত প্রতিটি ক্ষেত্রের জন্য, একটি করে উদাহরণ চিন্তা করি যা পাঠ্যে দেওয়া হয়নি।
### ভোক্তাপর্যায়ে আইওটি
@ -221,4 +220,4 @@ IoT শব্দে **T** হলো **Things** - ‘থিংস’ বা জ
## এসাইনমেন্ট
[একটি আইওটি প্রজেক্ট পর্যালোচনা](../assignment.md)
[একটি আইওটি প্রজেক্ট পর্যালোচনা](assignment.bn.md)

@ -1,5 +1,8 @@
# IoT এর আরো গভীরে
![A sketchnote overview of this lesson](../../../../sketchnotes/lesson-2.jpg)
>স্কেচনোটটি তৈরী করেছেন [Nitya Narasimhan](https://github.com/nitya). বড় সংস্করণে দেখার জন্য ছবিটিতে ক্লিক করতে হবে।
## লেকচার পূর্ববর্তী কুইজ
[লেকচার পূর্ববর্তী কুইজ](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/3)
@ -20,13 +23,13 @@
### থিংস
![A Raspberry Pi 4](../../../images/raspberry-pi-4.jpg)
![A Raspberry Pi 4](../../../../images/raspberry-pi-4.jpg)
**থিংস** বলতে আইওটির এই অংশটি এমন একটি ডিভাইসকে বোঝায় যা চারপাশের জগতের সাথে যোগাযোগ করতে পারে। এই ডিভাইসগুলি সাধারণত ছোট, কম দামের কম্পিউটার, কম গতিতে চলমান এবং কম শক্তি ব্যবহার করে। উদাহরণস্বরূপ সাধারণ মাইক্রোকন্ট্রোলারগুলি কিলোবাইট র‍্যামের (অথচ একটি পিসিতে তা গিগাবাইটের) চালিত হয় মাত্র কয়েক শতাধিক মেগাহার্টজ (অথচ একটি পিসিতে তা গিগাহার্টজের)। তবে কখনও কখনও এত অল্প শক্তি ব্যবহার করে তারা ব্যাটারিতে সপ্তাহ, মাস বা কয়েক বছর ধরে চলতে পারে।
এই যন্ত্রগুলো আমাদের চারপাশের পৃথিবীর সাথে সংযুক্ত থাকে; হয় সেন্সর ব্যবহার করে তথ্য সংগ্রহ করে অথবা একচুয়েটরের আউটপুট নিয়ন্ত্রণ করে কোন কাজ করার মাধ্যমে। এর সাধারণ একটি উদাহরণ হল স্মার্ট থার্মোস্ট্যাট -এমন একটি ডিভাইস যার মধ্যে তাপমাত্রা সেন্সর থাকে। এছাড়াও এতে থাকে একটি পছন্দসই তাপমাত্রা সেট করার উপায় যেমন ডায়াল বা টাচস্ক্রিন ব্যবহার করে এবং একটি তাপীকরণ বা শীতলকরণ ব্যবস্থার সাথে সংযুক্ত থাকে। ব্যবহারকারীর নির্ধারিত সীমার বাইরে গেলেই এই যন্ত্রগুলো চালু হয় । এখানে উদাহরণস্বরূপ, তাপমাত্রা সেন্সর সনাক্ত করে যে ঘরটি খুব শীতল এবং একটি একচুয়েটর তখন হিটিং চালু করে।
![A diagram showing temperature and a dial as inputs to an IoT device, and control of a heater as an output](../../../images/basic-thermostat.png)
![A diagram showing temperature and a dial as inputs to an IoT device, and control of a heater as an output](../../../../images/basic-thermostat.png)
বিভিন্ন জিনিস রয়েছে যা আইওটি ডিভাইস হিসাবে কাজ করতে পারে, সংবেদনশীল ডেডিকেটেড হার্ডওয়্যার থেকে শুরু করে , জেনারেল পারপাস ডিভাইস এমনকি আমাদের স্মার্টফোন পর্যন্ত! একটি স্মার্টফোন চারপাশের বিভিন্ন তথ্য সংগ্রহের জন্য সেন্সর ব্যবহার করে এবং বাস্তব জগতের সাথে যোগাযোগ করে একচুয়েটর - উদাহরণস্বরূপ আমাদের অবস্থান সনাক্ত করতে জিপিএস সেন্সর এবং কোন গন্তব্যে আমাদেরকে নির্দেশনা দেওয়ার জন্য স্পিকার রয়েছে।
@ -42,11 +45,11 @@
ইন্টারনেট সংযোগে কাজের উদাহরণস্বরূপ, একটি থার্মোস্ট্যাট নিই, যা কিনা ক্লাউডে হোম ওয়াইফাই ব্যবহার করে সংযুক্ত হয়েছে। এটি এই ক্লাউড পরিষেবায় তাপমাত্রার ডেটা প্রেরণ করে এবং সেখান থেক তা কোন ডাটাবেইস বা তথ্যভান্ডারে সংরক্ষিত থাকে এবং বাড়ির মালিককে কোন একটি মোবাইল অ্যাপ্লিকেশন ব্যবহার করে বর্তমান এবং অতীত তাপমাত্রা যাচাই করার সুযোগ দেয়। ক্লাউডের অন্য একটি আগে থেকেই জেনে নেয় যে বাড়ির মালিক কত তাপমাত্রা পছন্দ করেন এবং সেই পছন্দের ভিত্তিতে ক্লাউড সার্ভিসের মাধ্যমে আইওটি ডিভাইসে বার্তা প্রেরণ করে হিটিং সিস্টেমটি চালু বা বন্ধ করতে বলে।
![A diagram showing temperature and a dial as inputs to an IoT device, the IoT device with 2 way communication to the cloud, which in turn has 2 way communication to a phone, and control of a heater as an output from the IoT device](../../../images/mobile-controlled-thermostat.png)
![A diagram showing temperature and a dial as inputs to an IoT device, the IoT device with 2 way communication to the cloud, which in turn has 2 way communication to a phone, and control of a heater as an output from the IoT device](../../../../images/mobile-controlled-thermostat.png)
আরও উন্নত কোন ভার্সন, যা আইওটি ডিভাইসে সংযুক্ত অন্যান্য ডিভাইসের সেন্সরগুলির সাথে যেমন অকুপেন্সি সেন্সর থেকে বিভিন্ন তথ্য ( যেমন সেই সময়ের আবহাওয়া বা আপনার ব্যক্তিগত ক্যালেন্ডারে কী কী তথ্য রয়েছে) এর ভিত্তিতে সিদ্ধান্ত নিতে পারে যে তাপমাত্রা কত হওয়া উচিত। উদাহরণস্বরূপ আপনার ক্যালেন্ডারে বলা রয়েছে আজ আপনি ভ্রমণে গিয়েছেন। সেক্ষেত্রে শীতকালে আপনার রুমে হিটার চালানোর কোন দরকার নেই আর, আইওটি এই স্মার্ট ডিসিশনটি নিতে পারবে। এছাড়াও আপনি কোন রুম কখন কীভাবে ব্যবহার করেন, তার ভিত্তিতেও আর্টিফিশিয়াল ইন্টেলিজেন্স মডেলগুলি সিদ্ধান্ত নিতে পারে আর সময়ের সাথে সাথে প্রাপ্ত ডেটার কারণে এই সিদ্ধান্তগুলি আরো বেশি সঠিক হতে থাকে।
![A diagram showing multiple temperature sensors and a dial as inputs to an IoT device, the IoT device with 2 way communication to the cloud, which in turn has 2 way communication to a phone, a calendar and a weather service, and control of a heater as an output from the IoT device](../../../images/smarter-thermostat.png)
![A diagram showing multiple temperature sensors and a dial as inputs to an IoT device, the IoT device with 2 way communication to the cloud, which in turn has 2 way communication to a phone, a calendar and a weather service, and control of a heater as an output from the IoT device](../../../../images/smarter-thermostat.png)
✅ ইন্টারনেট সংযুক্ত থার্মোস্ট্যাটকে আরও স্মার্ট করে তুলতে অন্য কোন কোন ধরণের ডেটা সাহায্য করতে পারে?
@ -79,7 +82,7 @@
> 💁 সিপিইউগুলো [fetch-decode-execute cycle](https://wikipedia.org/wiki/Instruction_cycle) ব্যবহার করে প্রোগ্রাম এক্সেকিউট করে। প্রতি টিক এর সাথে সিপিইউ পরবর্তী নির্দেশনা গ্রহণ করবে, তা ডিকোড করবে এবং পরিশেষে এক্সেকিউট করবে যেমনঃ Arithmetic Logic Unit (ALU) ব্যবহার করে ২ যোগ করা। কিছু কিছু এক্সেকিউশন এর জন্য একাধিক টিক বা সাইকেল দরকার হয়। কাজ হয়ে যাওয়ার পর, পরবর্তী টিক আসলে তবেই পরের সাইকেলটি রান করবে।
![The fetch decode execute cycles showing the fetch taking an instruction from the program stored in RAM, then decoding and executing it on a CPU](../../../images/fetch-decode-execute.png)
![The fetch decode execute cycles showing the fetch taking an instruction from the program stored in RAM, then decoding and executing it on a CPU](../../../../images/fetch-decode-execute.png)
মাইক্রোকন্ট্রোলারগুলির ক্লক স্পীড ডেস্কটপ বা ল্যাপটপ কম্পিউটার, এমনকি বেশিরভাগ স্মার্টফোনের চেয়ে অনেক কম। উদাহরণস্বরূপ, Wio টার্মিনালের একটি সিপিইউ রয়েছে যা 120MHz বা সেকেন্ডে 120,000,000 সাইকেল চালায়।
@ -113,7 +116,7 @@
নীচের চিত্রটি 192KB এবং 8GB এর মধ্যে আপেক্ষিক আকারের পার্থক্য দেখায় - কেন্দ্রের ছোট ডটটি 192KB উপস্থাপন করে।
![A comparison between 192KB and 8GB - more than 40,000 times larger](../../../images/ram-comparison.png)
![A comparison between 192KB and 8GB - more than 40,000 times larger](../../../../images/ram-comparison.png)
প্রোগ্রাম মেমোরিও পিসির তুলনায় কম। একটি সাধারণ পিসিতে প্রোগ্রাম স্টোরেজের জন্য 500 গিগাবাইটের হার্ড ড্রাইভ থাকতে পারে, অন্যদিকে মাইক্রোকন্ট্রোলারের কাছে কেবল কিলোবাইট পর্যায়ের বা কয়েক মেগাবাইট (এমবি) স্টোরেজ থাকতে পারে (1 এমবি হলো 1000KB বা 1,000,000 বাইট এর সমান)। উইও টার্মিনালে 4MB প্রোগ্রাম স্টোরেজ রয়েছে।
@ -161,7 +164,7 @@ Wio Terminal পর্যালোচনা করি।
#### আরডুইনো
![The Arduino logo](../../../images/arduino-logo.svg)
![The Arduino logo](../../../../images/arduino-logo.svg)
[আরডুইনো](https://www.arduino.cc) খুব সম্ভবত সবচেয়ে জনপ্রিয় মাইক্রোকন্ট্রোলার ফ্রেমওয়ার্ক, বিশেষতঃ শিক্ষার্থী, শখের বশে আইওটিতে কাজ করতে আগ্রহীদের মাঝে। আরডুইনো একটি ওপেন সোর্স ইলেক্ট্রনিক্স প্ল্যাটফর্ম যা সফ্টওয়্যার এবং হার্ডওয়্যার সমন্বিত। আরডুইনো থেকে বা অন্য নির্মাতাদের কাছ থেকে আমরা আরডুইন সম্বলিত বোর্ড কিনে সেই ফ্রেমওয়ার্ক ব্যবহার করে কোড করতে পারবো।
@ -169,7 +172,7 @@ Wio Terminal পর্যালোচনা করি।
আমরা সেটআপ কোডটি `setup` ফাংশনে লিখবো, যেমন ওয়াইফাই এবং ক্লাউড সার্ভিসের সাথে সংযুক্ত হওয়া বা ইনপুট এবং আউটপুট জন্য পিন চালু হওয়া। আমাদের লুপ কোডটিতে তখন প্রসেসিং কোড থাকবে যেমন সেন্সর থেকে ডেটা নেয়া এবং ক্লাউডে তা পাঠানো । প্রতিটি লুপে সাধারণত একটি বিলম্ব (delay) অন্তর্ভুক্ত করতে হবে, উদাহরণস্বরূপ যদি আমরা কেবল 10 সেকেন্ড পরপর সেন্সর ডেটা প্রেরণ করতে চাই, তবে লুপের শেষে 10 সেকেন্ডের বিলম্ব যুক্ত করতে হবে, যাতে মাইক্রোকন্ট্রোলার তখন বিশ্রামে থাকে, শক্তি সঞ্চয় করে এবং তারপরে আবার 10 সেকেন্ড পরে যখন ডেটা প্রয়োজন হবে, তখন ল্যুপ চলবে।
![An arduino sketch running setup first, then running loop repeatedly](../../../images/arduino-sketch.png)
![An arduino sketch running setup first, then running loop repeatedly](../../../../images/arduino-sketch.png)
✅ এই প্রোগ্রাম আর্কিটেকচারকে বলা হয় *event loop* অথবা *message loop*. অনেক অ্যাপ্লিকেশন এটি ব্যবহার করে এবং উইন্ডোজ, ম্যাক-ওএস বা লিনাক্সের মতো ওএসে চালিত বেশিরভাগ ডেস্কটপ অ্যাপ্লিকেশনগুলির জন্য এটি স্ট্যান্ডার্ড। `loop` এখানে বাটনের মতো ব্যবহারকারী বা ইন্টারফেস উপাদান বা কীবোর্ডের মতো ডিভাইসগুলির নির্দেশনা গ্রহণ করে এবং সেই অনুযায়ে সাড়া দেয়। আরো বিস্তারিত জানতে [ইভেন্ট ল্যুপ](https://wikipedia.org/wiki/Event_loop) সংক্রান্ত লেখাটি পড়তে পারি।
@ -177,7 +180,7 @@ Wio Terminal পর্যালোচনা করি।
থার্ড-পার্টি আরডুইনো লাইব্রেরির একটি বড় সংগ্রহ রয়েছে যা আরডুইনো প্রকল্পগুলিতে অতিরিক্ত বৈশিষ্ট্য যুক্ত করার অনুমতি দেয় যেমন সেন্সর এবং অ্যাকচুয়েটর ব্যবহার করে বা ক্লাউড আইওটি সার্ভিসগুলিতে সংযুক্ত করা।
##### কাজ
#### কাজ
Wio Terminal পর্যালোচনা করি।
@ -189,17 +192,17 @@ Wio Terminal পর্যালোচনা করি।
### রাস্পবেরি পাই
![The Raspberry Pi logo](../../../images/raspberry-pi-logo.png)
![The Raspberry Pi logo](../../../../images/raspberry-pi-logo.png)
[Raspberry Pi Foundation](https://www.raspberrypi.org) হলো মূলত স্কুল পর্যায়ে কম্পিউটার বিজ্ঞানের অধ্যয়নের প্রচারের জন্য ২০০৯ সালে প্রতিষ্ঠিত যুক্তরাজ্যের একটি দাতব্য সংস্থা। এই মিশনের অংশ হিসাবে তারা সিংগেল-বোর্ড কম্পিউটার তৈরী করে, যার নাম রাস্পবেরি পাই। এটি বর্তমানে ৩টি ভেরিয়েন্টে পাওয়া যা - একটি পূর্ণ আকারের সংস্করণ, ছোট পাই জিরো এবং একটি চূড়ান্ত মডিউল যা দিয়ে আমাদের আইওটি ডিভাইসে তৈরি করা যেতে পারে।
![A Raspberry Pi 4](../../../images/raspberry-pi-4.jpg)
![A Raspberry Pi 4](../../../../images/raspberry-pi-4.jpg)
পূর্ণ আকারের রাস্পবেরি পাইয়ের সর্বশেষ ভার্সন হল Raspberry Pi 4B । এটিতে একটি কোয়াড-কোর (4 কোর) সিপিইউ রয়েছে যা 1.5GHz এবং 2, 4, বা 8 জিবি র‍্যাম, গিগাবিট ইথারনেট, ওয়াইফাই, 2টি এইচডিএমআই পোর্ট 4K স্ক্রিন সমর্থন করে, একটি অডিও এবং মিশ্রিত ভিডিও আউটপুট পোর্ট, ইউএসবি পোর্টস (USB 2.0, 2 USB 3.0 ভার্সন), 40টি জিপিআইও পিন, রাস্পবেরি পাই ক্যামেরা মডিউলটির জন্য একটি ক্যামেরা সংযোজক এবং একটি এসডি কার্ড স্লট। এই সমস্ত বোর্ড যা রয়েছে সব মিলিয়ে 88mm x 58mm x 19.5mm সাইজ এবং এটি একটি 3A USB-C পাওয়ার সাপ্লাই দ্বারা চালিত। রাস্পবেরি পাইয়ের দাম 35 মার্কিন ডলার থেকে শুরু হয়, যা পিসি বা ম্যাক এর তুলনায় অনেক কম।
> 💁 Pi400 নামে একটি "একের-ভিতর-সব" কম্পিউটার রয়েছে, যার কীবোর্ডে Pi4 বিল্ট-ইন রয়েছে।
![A Raspberry Pi Zero](../../../images/raspberry-pi-zero.jpg)
![A Raspberry Pi Zero](../../../../images/raspberry-pi-zero.jpg)
পাই জিরো এর আকার অনেক ছোট , যার পাওয়ার অনেক কম। এটিতে একটি একক কোর 1GHz সিপিইউ, 512 এমবি র‍্যাম, ওয়াইফাই (Zero W model এ ), একটি এইচডিএমআই পোর্ট, একটি মাইক্রো-ইউএসবি পোর্ট, 40টি জিপিআইও পিন, রাস্পবেরি পাই ক্যামেরা মডিউলটির সাথে একটি ক্যামেরা সংযোগকারী এবং একটি এসডি কার্ড স্লট রয়েছে।পাই এর আকার 65 মিমি x 30 মিমি x 5 মিমি এবং খুব অল্প পাওয়ার নিয়েই কাজ করতে পারে। পাই জিরো এর মূল্য 5 মার্কিন ডলার, আর ওয়াইফাই সহ , W ভার্সনটির দাম 10 মার্কিন ডলার।
@ -242,9 +245,10 @@ Wio Terminal পর্যালোচনা করি।
* [Arduino getting started guide](https://www.arduino.cc/en/Guide/Introduction) টি পড়ে আরডুইনো প্লাটফর্ম সম্পর্কে আরো জানতে হবে।
* [introduction to the Raspberry Pi 4](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/) পড়ে রাস্পবেরি পাই সম্পর্কে আরো জানতে হবে।
* বিভিন্ন কনসেপ্ট এবং সংক্ষিপ্ত শব্দ এর ব্যাপারে জানতে [What the FAQ are CPUs, MPUs, MCUs, and GPUs article in the Electrical Engineering Journal](https://www.eejournal.com/article/what-the-faq-are-cpus-mpus-mcus-and-gpus/) আর্টিকেল টি উপকারী হবে।
✅ কোন হার্ডওয়্যার প্ল্যাটফর্মটি ব্যবহার করলে ভালো হবে বা শুধুমাত্র ভার্চুয়াল ডিভাইস ব্যবহার করবো কিনা তবে সিদ্ধান্ত নেওয়ার জন্য [হার্ডওয়্যার গাইডের](../../../hardware.md) লিংকগুলোতে প্রদত্ত খরচ এর তুলনা করতে হবে।
✅ কোন হার্ডওয়্যার প্ল্যাটফর্মটি ব্যবহার করলে ভালো হবে বা শুধুমাত্র ভার্চুয়াল ডিভাইস ব্যবহার করবো কিনা তবে সিদ্ধান্ত নেওয়ার জন্য [হার্ডওয়্যার গাইডের](../../../../translations/hardware.bn.md) লিংকগুলোতে প্রদত্ত খরচ এর তুলনা করতে হবে।
## এসাইনমেন্ট
[মাইক্রোকন্ট্রোলার এবং সিংগেল-বোর্ড কম্পিউটারের তুলনা করে পার্থক্য দাঁড় করানো](assignment.md)।
[মাইক্রোকন্ট্রোলার এবং সিংগেল-বোর্ড কম্পিউটারের তুলনা করে পার্থক্য দাঁড় করানো](assignment.bn.md)।

@ -1,5 +1,9 @@
# সেন্সর এবং অ্যাকচুয়েটরের সাহায্যে বাহ্যিক জগতের সাথে যোগাযোগ
![A sketchnote overview of this lesson](../../../../sketchnotes/lesson-3.jpg)
> স্কেচনোটটি তৈরী করেছেন [Nitya Narasimhan](https://github.com/nitya). বড় সংস্করণে দেখার জন্য ছবিটিতে ক্লিক করতে হবে।
## লেকচার পূর্ববর্তী কুইজ
[লেকচার পূর্ববর্তী কুইজ](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/5)
@ -55,9 +59,9 @@
উদাহরণস্বরূপ পোটেনশিওমিটার এর কথা ধরা যাক। এটি এমন একটি ডায়াল যা আমরা দুটি অবস্থানের মধ্যে ঘোরাই এবং সেন্সরটি ঘূর্ণনটি পরিমাপ করে প্রয়োজনীয় তথ্য সংগ্রহ করে।
![A potentiometer set to a mid point being sent 5 volts returning 3.8 volts](../../../images/potentiometer.png)
![A potentiometer set to a mid point being sent 5 volts returning 3.8 volts](../../../../images/potentiometer.png)
আইওটি ডিভাইসগুলো কোন নির্দিষ্ট ভোল্টেজে (যেমনঃ 5V) পোটেনশিওমিটারে বৈদ্যুতিক সংকেত পাঠাবে। পটেনশিওমিটার অ্যাডজাস্ট করার সাথে সাথে এটি অন্য দিক থেকে আগত ভোল্টেজকে পরিবর্তন করে। কল্পনা করি যে ভলিউম নব এর মতো আমাদের ডায়াল হিসাবে 0 থেকে [11] (https://wikedia.org/wiki/Up_to_eleven) লেবেলযুক্ত একটি পটেনশিওমিটার রয়েছে। যখন পেন্টিয়োমিটার পূর্ণ অফ অবস্থানে (0) থাকবে তখন 0V (0 ভোল্ট)আর যখন এটি সম্পূর্ণ অন পজিশনে থাকবে (11), তখন 5V (5 ভোল্ট) মান দিবে।
আইওটি ডিভাইসগুলো কোন নির্দিষ্ট ভোল্টেজে (যেমনঃ 5V) পোটেনশিওমিটারে বৈদ্যুতিক সংকেত পাঠাবে। পটেনশিওমিটার অ্যাডজাস্ট করার সাথে সাথে এটি অন্য দিক থেকে আগত ভোল্টেজকে পরিবর্তন করে। কল্পনা করি যে ভলিউম নব এর মতো আমাদের ডায়াল হিসাবে 0 থেকে [11](https://wikedia.org/wiki/Up_to_eleven) লেবেলযুক্ত একটি পটেনশিওমিটার রয়েছে। যখন পেন্টিয়োমিটার পূর্ণ অফ অবস্থানে (0) থাকবে তখন 0V (0 ভোল্ট)আর যখন এটি সম্পূর্ণ অন পজিশনে থাকবে (11), তখন 5V (5 ভোল্ট) মান দিবে।
> 🎓 পুরো বিষয়টিকে অত্যন্ত সহজভাবে বোঝানোর চেষ্টা করা হয়েছে। পোটেনশিওমিটার এবং পরিবর্তনযোগ্য রোধক সম্পর্কে [পোটেনশিওমিটার উইকিপিডিয়া পেইজ](https://wikipedia.org/wiki/Potentiometer) এ বিশদ ব্যখ্যা রয়েছে।
@ -81,7 +85,7 @@
সবচেয়ে সহজ সাধারণ ডিজিটাল সেন্সর হলো বাটন বা স্যুইচ। এটি ২টি অবস্থা সম্পন্ন একটি সেন্সর , অবস্থা দুটি হলো চালু (on) এবং বন্ধ (off) ।
![A button is sent 5 volts. When not pressed it returns 0 volts, when pressed it returns 5 volts](../../../images/button.png)
![A button is sent 5 volts. When not pressed it returns 0 volts, when pressed it returns 5 volts](../../../../images/button.png)
আইওটি ডিভাইসে থাকা পিনগুলি যেমন জিপিআইও পিনগুলি এই সংকেতটি সরাসরি 0 বা 1 হিসাবে পরিমাপ করতে পারে। প্রেরিত এবং প্রাপ্ত ভোল্টেজ সমান হলে, এর মান হয় 1, অন্যথায় মানটি হয় 0। এক্ষেত্রে সিগন্যাল রূপান্তর করার দরকার নেই কারণ এদের মান কেবল 1 বা 0 হতে পারে।
@ -92,7 +96,7 @@
আরও উন্নত ডিজিটাল সেন্সরগুলো অ্যানালগ মানগুলি গ্রহণ করে, তারপরে অন-বোর্ড এডিসি ব্যবহার করে ডিজিটাল সিগন্যালে রূপান্তর করে। উদাহরণস্বরূপ, একটি ডিজিটাল টেম্পারেচার সেন্সর, এনালগ সেন্সরের মতোই থার্মোকাপল ব্যবহার করবে এবং বর্তমান তাপমাত্রায় থার্মোকাপলের রোধের কারণে সৃষ্ট ভোল্টেজের পরিবর্তনকে পরিমাপ করবে। এনালগ ভ্যালু রিটার্ন করে এটিকে ডিজিটাল সিগন্যালে রূপান্তরের জন্য যন্ত্র বা কানেক্টর বোর্ডের উপর নির্ভর করার পরিবর্তে, সেন্সরের বিল্ট-ইন সেন্সরটিই এই রূপান্তর করে দেয় এবং 0 আর 1 সিরিজবিশিষ্ট মান রিটার্ন করে আইওটি ডিভাইসে। একটি বাটন যেমন 1 বলতে ফুল ভোল্টেজ এবং 0 বলতে শূণ্য ভোল্টেজ বোঝায়, এখানেও একইভাবে সম্পূর্ন বাইনারি সিরিজটি প্রেরিত হয়।
![A digital temperature sensor converting an analog reading to binary data with 0 as 0 volts and 1 as 5 volts before sending it to an IoT device](../../../images/temperature-as-digital.png)
![A digital temperature sensor converting an analog reading to binary data with 0 as 0 volts and 1 as 5 volts before sending it to an IoT device](../../../../images/temperature-as-digital.png)
ডিজিটাল ডেটা প্রেরণের জন্য সেন্সরগুলো আরও জটিল হয়ে উঠতে শুরু করেছে। একইসাথে অনেক বেশি বিস্তারিরভাবে তথ্য প্রেরণ করা হচ্ছে, এমনকি সুরক্ষিত সেন্সরগুলির জন্য এনক্রিপ্ট করা ডেটা প্রেরণের ব্যবস্থাও লক্ষ্যণীয়। এর একটি উদাহরণ হলো ক্যামেরা - এটি এমন একটি সেন্সর যা একটি চিত্র ধারণ করে এবং আইওটি ডিভাইস এর জন্য সাধারণত JPEG এর মতো সংকোচিত বিন্যাসে এটি ডিজিটাল ডেটা হিসাবে প্রেরিত হয়। চিত্রধারণ করে, ক্যামেরার পক্ষে ভিডিও স্ট্রীমিংও সম্ভব । হয় পুরো ছবিকে ফ্রেম বাই ফ্রেম সাজিয়ে বা কম্প্রেস করে পাঠানোর মাধ্যমে স্ট্রীমিং হয়ে থাকে।
@ -114,7 +118,7 @@
আইওটি ডিভাইসে সেন্সর যুক্ত করতে নীচের কোন একটি প্রাসঙ্গিক গাইডটি অনুসরণ করতে হবে। এই ডিভাইসটি সেন্সর নিয়ন্ত্রিত,আর সাহায্যে nightlight এর প্রজেক্টটি করা হবে। এটি সেন্সর দ্বারা পরিবেশে আলোর মাত্রা শনাক্ত করবে, অ্যাকচুয়েটর হিসেবে এলইডি ব্যবহার করবে যেটি (সেন্সর প্রাপ্ত ডাটা অনুসারে) আলোর মাত্রা কম থাকলে, নিজেই জ্বলে উঠবে।
![A flow chart of the assignment showing light levels being read and checked, and the LED begin controlled](../../../images/assignment-1-flow.png)
![A flow chart of the assignment showing light levels being read and checked, and the LED begin controlled](../../../../images/assignment-1-flow.png)
* [Arduino - Wio Terminal](wio-terminal-actuator.md)
* [Single-board computer - Raspberry Pi](pi-actuator.md)
@ -128,7 +132,7 @@
অ্যানালগ অ্যাকচুয়েটর একটি অ্যানালগ সংকেত নিয়ে এটিকে বাহ্যিক জগতের মিথস্ক্রিয়ায় রূপান্তর করে, যেখানে প্রদত্ত ভোল্টেজের ভিত্তিতে মিথস্ক্রিয়া পরিবর্তিত হয়। উদাহরণ হিসেবে, আমাদের বাসাবাড়িতে ব্যবহৃত নিয়ন্ত্রণযোগ্য লাইটের কথা চিন্তা করা যেতে পারে। এটি প্রাপ্ত ভোল্টেজের ভিত্তিতেই নির্ধারিত হয় যে, এই আলোর ঔজ্জ্বল্য কতটা হবে।
![A light dimmed at a low voltage and brighter at a higher voltage](../../../images/dimmable-light.png)
![A light dimmed at a low voltage and brighter at a higher voltage](../../../../images/dimmable-light.png)
সেন্সরগুলির মতো, প্রকৃত আইওটি ডিভাইস ডিজিটাল সিগন্যালে কাজ করে, এনালগ এ নয়। একটি এনালগ সিগন্যাল প্রেরণ করার জন্য, আইওটি ডিভাইসটির জন্য ডিজিটাল টু এনালগ কনভার্টার (DAC) দরকার হয়। DAC হয় আইওটি ডিভাইসে সরাসরি, বা কোনও সংযোজক বোর্ডের সাহায্যে যুক্ত করতে হবে। এটি 0 এবং 1 গুলি আইওটি ডিভাইস থেকে অ্যানালগ ভোল্টেজকে রূপান্তর করবে যা অ্যাকচুয়েটর ব্যবহার করতে পারে।
@ -140,7 +144,7 @@
কল্পনা করি যে আমরা 5V পাওয়ার সাপ্লাই দিয়ে, মোটরটি নিয়ন্ত্রণ করছি। ভোল্টেজটি .০২ সেকেন্ডের জন্য high অর্থাৎ 5V রাখার মাধ্যমে, মোটরে একটি সংক্ষিপ্ত পালস প্রেরণ করি। সেই সময়ে মোটরটি একটি পূর্ণ ঘূর্ণনের দশমাংশ বা 36° ঘুরতে পারে। এর পরে লো সিগন্যাল দিয়ে অর্থাৎ 0V প্রেরণ করে, সিগন্যালটি 0.02 সেকেন্ডের জন্য বিরতি দেয়। তারপরে অন-অফ এর প্রতিটি চক্র 0.04s অবধি চলে। তারপরে আবারও পুনরাবৃত্তি করে।
![Pule width modulation rotation of a motor at 150 RPM](../../../images/pwm-motor-150rpm.png)
![Pule width modulation rotation of a motor at 150 RPM](../../../../images/pwm-motor-150rpm.png)
তাহলে প্রতি সেকেন্ডে ২৫টি পালস দেয়া হচ্ছে যেখানে ৫ভোল্টের প্রতি সিগন্যালে .০২ সেকেন্ডে মোটর ঘুরছে আবার ভোল্টের জন্য .০২ সেকেন্ডে মোটর বিরতি নিচ্ছে। প্রতিটি পালস এখানে মোটরকে একটি ঘূর্ণনের দশমাংশে ঘুরায়, যার অর্থ মোটর প্রতি সেকেন্ডে 2.5 ঘূর্ণন সম্পন্ন করে। এখানে ডিজিটাল সিগন্যাল ব্যবহার করে আমরা একটি মোটরকে প্রতি সেকেন্ডে ২.৫টি করে ঘূর্ণন প্রদান করেছি অর্থাৎ ১৫০ আরপিএম বা [revolutions per minute](https://wikipedia.org/wiki/Revolutions_per_minute) এ ঘুরিয়েছি।
@ -151,7 +155,7 @@
> 🎓 কোন PWM সিগন্যাল যদি অর্ধেক সময় ON থাকে এবং বাকি অর্ধেক সময় OFF থাকে, তবে এই বিষয়টিকে বলা হয় [50% ডিউটি সাইকেল](https://wikipedia.org/wiki/Duty_cycle)। ডিউটি সাইকেল হলো মূলত অন-অফ এই দুই অবস্থার সময়ের দৈর্ঘ্যের তুলনা।
![Pule width modulation rotation of a motor at 75 RPM](../../../images/pwm-motor-75rpm.png)
![Pule width modulation rotation of a motor at 75 RPM](../../../../images/pwm-motor-75rpm.png)
পালসের আকার পরিবর্তন করে মোটরের গতি পরিবর্তন করা যাবে। উদাহরণস্বরূপ, একই মোটর দিয়ে আমরা 0.04 সেকেন্ডের একই চক্র রাখতে পারবো যেখানে ON পালসটি 0.01 ধরে থাকবে এবং OFF পালসটি 0.03 সেকেন্ড সময় ধরে থাকবে। আমাদের প্রতি সেকেন্ডে পালসের সংখ্যার পরিমাণ একই রয়েছে (25) তবে পালসের ON অবস্থার দৈর্ঘ্য এখন অর্ধেক। একটি অর্ধ দৈর্ঘ্যের পালস মোটরটিকে কেবল একটি ঘূর্ণনের এক বিংশতম পর্যন্ত ঘুরতে দেয় এবং 25 পালস দ্বারা প্রতি সেকেন্ডে 1.25টি ঘূর্ণন সম্পন্ন হব অর্থাৎ ৭৫ আরপিএম । ডিজিটাল সিগন্যালের পালসের গতি পরিবর্তন করে এভাবে অ্যানালগ মোটরের গতি অর্ধেকে নামিয়ে ফেলা যাবে।
@ -172,7 +176,7 @@
একটি সাধারণ ডিজিটাল অ্যাকচুয়েটর এর উদাহরণ হল একটি এলইডি। যখন কোন ডিভাইস ডিজিটাল সিগন্যাল হিসেবে 1 প্রেরণ করে, তখন একটি উচ্চ ভোল্টেজ প্রেরণ করা হয় যা LED জ্বালায় । আবার 0 এর একটি ডিজিটাল সিগন্যাল প্রেরণ করা হলে, ভোল্টেজ 0V এ নেমে আসে এবং LED বন্ধ হয়ে যায়।
![A LED is off at 0 volts and on at 5V](../../../images/led.png)
![A LED is off at 0 volts and on at 5V](../../../../images/led.png)
✅ ২-অবস্থা বিশিষ্ট আর কোন অ্যাকচুয়েটর কী আশেপাশে দেখা যায় ? একটি উদাহরণ হলো সলিনয়েড, একটি ইলেক্ট্রোম্যাগনেট যা দ্বারা কোন দরজার নব নিয়ন্ত্রণ করে খোলা-বন্ধ করা যাবে।
@ -196,4 +200,4 @@
## এসাইনমেন্ট
[সেন্সর এবং অ্যাকচুয়েটর নিয়ে গবেষণা ](assignment.md)
[সেন্সর এবং অ্যাকচুয়েটর নিয়ে গবেষণা ](assignment.bn.md)

@ -1,9 +0,0 @@
# Dummy File
This file acts as a placeholder for the `translations` folder. <br>
**Please remove this file after adding the first translation**
For the instructions, follow the directives in the [translations guide](https://github.com/microsoft/IoT-For-Beginners/blob/main/TRANSLATIONS.md) .
## THANK YOU
We truly appreciate your efforts!

@ -0,0 +1,261 @@
# মাটির আর্দ্রতা নির্ণয়
![A sketchnote overview of this lesson](../../../../sketchnotes/lesson-6.jpg)
> স্কেচনোটটি তৈরী করেছেন [Nitya Narasimhan](https://github.com/nitya). বড় সংস্করণে দেখার জন্য ছবিটিতে ক্লিক করতে হবে।
>
## লেকচার-পূর্ববর্তী কুইজ
[লেকচার-পূর্ববর্তী কুইজ](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/11)
## সূচনা
গত পাঠে আমরা একটি পারিপার্শ্বিক বৈশিষ্ট্য পরিমাপ করেছি এবং উদ্ভিদ বৃদ্ধির পূর্বাভাস দেওয়ার জন্য এটি ব্যবহার করে দেখেছি। তাপমাত্রা নিয়ন্ত্রণ করা যায়, তবে এটি করা ব্যয়বহুল,এইজন্য নিয়ন্ত্রিত পরিবেশ প্রয়োজন। উদ্ভিদের বৃদ্ধির জন্য যে পারিপার্শ্বিক বৈশিষ্ট্য সহজে নিয়ন্ত্রণ করা যায়, হল পানি - এটি এমন কিছু যা বিশাল আকারের খামারে সেচকার্য থেকে শুরু করে, প্রতিদিন ছোট বাচ্চারা তাদের বাগানে পানি দেয়ার পাত্র দিয়ে নিয়ন্ত্রণ করে।
![A child watering a garden](../../../../images/child-watering-garden.jpg)
এই পাঠে আমরা শিখবো মাটির আর্দ্রতা পরিমাপ করা এবং পরবর্তী পাঠে কীভাবে একটি স্বয়ংক্রিয় জল সরবরাহ ব্যবস্থা নিয়ন্ত্রণ করা যায় তা জানবো। এই পাঠটি তৃতীয় আরেকটি সেন্সরের সাথে আমাদের পরিচয় করিয়ে দিবে। আমরা ইতিমধ্যে একটি আলোক সেন্সর, একটি তাপমাত্রা সেন্সর ব্যবহার করেছি। সুতরাং এই পাঠে আমরা জানবো কীভাবে একটি মাটির আর্দ্রতা সংবেদক ডেটা প্রেরণ করা যাবে - এছাড়াও আইওটি ডিভাইসগুলির সাথে কীভাবে সেন্সর এবং অ্যাকচুয়েটর যোগাযোগ করে সে সম্পর্কে আরও জানতে পারবো।
এই পাঠে অন্তর্ভুক্ত রয়েছেঃ
* [মাটির আদ্রতা](#মাটির-আদ্রতা)
* [আইওটি ডিভাইসের সাথে সেন্সরগুলি কীভাবে যোগাযোগ করে](#সেন্সর-কীভাবে-আইওটি-ডিভাইসের-সাথে-যোগাযোগ-করে)
* [মাটিতে আর্দ্রতার মাত্রা পরিমাপ](#মাটিতে-আর্দ্রতার-মাত্রা-পরিমাপ)
* [সেন্সর ক্যালিব্রেশন](#সেন্সর-ক্যালিব্রেশন)
## মাটির আদ্রতা
গাছপালা জন্মাতে পানি প্রয়োজন। তারা পুরো দেহ জুড়ে পানি শোষণ করে, বেশিরভাগই মূল দ্বারা শোষিত হয়। উদ্ভিদ পানি তিনটি জিনিসের জন্য ব্যবহার করে:
* [সালোকসংশ্লেষণ](https://wikipedia.org/wiki/Photosynthesis) - উদ্ভিদ পানি, কার্বন ডাইঅক্সাইড এবং আলো দিয়ে কার্বোহাইড্রেট এবং অক্সিজেন তৈরির জন্য রাসায়নিক বিক্রিয়া তৈরি করে।
* [প্রস্বেদন](https://wikipedia.org/wiki/Transpiration) - গাছপালা বাতাসে পানি অপসারণ করে বাষ্পাকারে। এই প্রক্রিয়াটি উদ্ভিদের চারপাশে পুষ্টি বহন করে এবং উদ্ভিদকে শীতল করে, যেমন মানুষের ঘাম হয়।
* গঠন - গাছের কাঠামো বজায় রাখতে পানি প্রয়োজন - এদের 90% পানি (মানুষের যেখানে 60%) এবং এই পানি তাদের দেহের কোষগুলিকে শক্ত রাখে। যদি একটি উদ্ভিদের পর্যাপ্ত পানি না থাকে, তবে এটি মারা যাবে ।
![Water is absorbed through plant roots then carried around the plant, being used for photosynthesis and plant structure](../../../../images/transpiration.png)
✅ ছোট একটি গবেষণা করা যাক: প্রস্বেদনের মাধ্যমে কতটা পানি নির্গমণ হয়?
মূল উদ্ভিদের বৃদ্ধির জন্য মাটির আর্দ্রতা থেকে পানি সরবরাহ করে। মাটিতে খুব কম পানি থাকলে , উদ্ভিদ বৃদ্ধি পেতে পর্যাপ্ত পরিমাণে শোষণ করতে পারে না। আবার প্রচুর পরিমাণে পানি থাকলে শিকড় প্রয়োজনীয় অক্সিজেন গ্রহণ করতে পারে না। এর ফলে তা মারা যায় এবং গাছটি বেঁচে থাকার জন্য পর্যাপ্ত পুষ্টি পেতে পারে না।
একজন কৃষকের সর্বোত্তম গাছের বৃদ্ধি পাওয়ার জন্য মাটি খুব বেশি ভেজা বা খুব বেশি শুকনো - কোনটিই হওয়া যাবেনা। আইওটি ডিভাইসগুলি এক্ষেত্রে সাহায্য করতে পারে - মাটির আর্দ্রতা পরিমাপ করে , কেবল যখন প্রয়োজন হয় তখনই কৃষককে সেচ দেয়ার বার্তা দিবে।
### মাটির আর্দ্রতা মাপার উপায়সমূহ
মাটির আর্দ্রতা পরিমাপ করতে বিভিন্ন ধরণের সেন্সর ব্যবহার করা যায়ঃ
* রোধক-ভিত্তিক সেন্সর - একটি রেজিস্টিভ সেন্সরের দুটি প্রোব রয়েছে যা মাটিতে সংযুক্ত থাকে। একটির মাধ্যমে তড়িৎ প্রবাহ প্রেরণ করা হয়, এবং অন্যটি দ্বারা গৃহীত হয়। ১মটি থেকে ২য়টির মাঝে তড়িতের পার্থক্যের মাধ্যমে সেন্সর মাটির রোধের পরিমাপ করে । পানি বিদ্যুতের একটি ভাল কন্ডাক্টর, তাই মাটির পানির পরিমাণ যত বেশি থাকে তত প্রতিরোধ ক্ষমতা কম হয়।
![A resistive soil moisture sensor](../../../../images/resistive-soil-moisture-sensor.png)
> 💁 কয়েক সেন্টিমিটার দূরত্বে দুটি পৃথক ধাতুর দুটি টুকরো ব্যবহার করে এবং একটি মাল্টিমিটার ব্যবহার করে তাদের মধ্যে প্রতিরোধের পরিমাপ করে আমরা একটি মাটির আর্দ্রতা সেন্সর তৈরি করতে পারি।
* ক্যাপাসিটর-ভিত্তিক সেন্সর - একটি ক্যাপাসিটিভ আর্দ্রতা সেন্সর ২টি পজিটিভ এবং নেগেটিভ বৈদ্যুতিক প্লেট এর মাঝে বৈদ্যুতিক চার্জের পরিমাণকে পরিমাপ করে যাকে [ক্যাপাসিট্যান্স](https://wikipedia.org/wiki/Capacitance) বলা হয়। আর্দ্রতার মাত্রা পরিবর্তনের সাথে সাথে মাটির ক্যাপাসিট্যান্স পরিবর্তিত হয় এবং এটির প্রভাবে ভোল্টেজ পরিবর্তন হয় এবং তা আইওটি ডিভাইস দ্বারা পরিমাপ করা যায়। মাটি যত বেশি ভেজা, ততই কম ভোল্টেজ আসে।
![A capacitive soil moisture sensor](../../../../images/grove-capacitive-soil-moisture-sensor.png)
এগুলি অ্যানালগ সেন্সর, মাটির আর্দ্রতা নির্দেশ করতে ভোল্টেজ পরিমাপ করে। তাহলে এই ভোল্টেজটি আমাদের কোডে কিভাবে আসে? সেন্সর আরো আলাপের আগে আমরা দেখে নিবো আইওটি ডিভাইসগুলির সাথে সেন্সর এবং অ্যাকচুয়েটর কীভাবে যোগাযোগ করে ।
## সেন্সর কীভাবে আইওটি ডিভাইসের সাথে যোগাযোগ করে
এখন পর্যন্ত এই পাঠগুলিতে আমরা বেশ কয়েকটি সেন্সর এবং অ্যাকচুয়েটর সম্পর্কে শিখেছি এবং যদি কেউ হার্ডওয়্যার ল্যাবগুলি করে থাকে, তবে এগুলি তার আইওটি ডেভ কিটের সাথে যোগাযোগ করে চলেছে। কিন্তু এই যোগাযোগ কীভাবে কাজ করে? মাটির আর্দ্রতা সেন্সর থেকে রোধের পরিমাপ এর মত একটি সাধারণ সংখ্যা কোডে কীভাবে ব্যবহার করা হচ্ছে?
বেশিরভাগ ক্ষেত্রেই সেন্সর এবং অ্যাকচুয়েটরের সাথে যোগাযোগের জন্য হার্ডওয়্যার এবং একটি যোগাযোগ প্রোটোকল প্রয়োজন - এটি ডেটা প্রেরণ এবং গ্রহণের সর্বজনস্বীকৃত উপায়। উদাহরণস্বরূপ একটি ক্যাপাসিটিভ আর্দ্রতা সেন্সর এর কথা ভাবা যাক:
* এই সেন্সরটি আইওটি ডিভাইসের সাথে কীভাবে সংযুক্ত রয়েছে?
* যদি এটি ভোল্টেজ পরিমাপ করে(যা কিনা একটি অ্যানালগ সংকেত), তবে এটির ডিজিটাল উপস্থাপনা তৈরি করতে এডিসি (AC to DC) এর প্রয়োজন হবে যা এনালগ ডেটাকে 0 এবং 1 হিসেবে পাঠাবে। তবে প্রতিটি বিট কতক্ষণ সময়ের জন্য পাঠানো হবে?
* আবার কোন সেন্সর যদি কোন ডিজিটাল মান দেয়, তবে এটি 0 এবং 1 এর সিরিজ পাঠাবে। এক্ষেত্রেও প্রশ্ন হলো প্রতিটি বিট কতক্ষণ সময়ের জন্য প্রেরণ করা হয়?
* যদি .১ সেকেন্ডের জন্য ভোল্টেজ হাই (High) থাকে, তবে এটি কী একক ১বিট নাকি ২টি একটানা বিটের মান নাকি ১০টির ?
* ঠিক কোন সময়ে এই সংখ্যা গুলো গণনা শুরু হয়? `00001101` কী 25, বা প্রথম 5 টি বিট কী পূর্ববর্তী মানের শেষাংশ?
হার্ডওয়্যার একটি বস্তুগত সংযোগ তৈরী করে যার মাধ্যমে ডেটা প্রেরণ করা হয়। এখানে বিভিন্ন যোগাযোগ প্রোটোকল এটি নিশ্চিত করে যে, ডেটা প্রেরণ বা গ্রহণ সঠিক উপায়ে হচ্ছে যাতে প্রতিটি স্তরে ডেটা ব্যবহার উপযোগী থাকে।
### General Purpose Input Output (GPIO) pins
জিপিআইও হল পিনের এমন একটি সেট যা আইওটি ডিভাইসের সাথে হার্ডওয়্যার সংযোগ করতে ব্যবহার করা যাবে। প্রায়শই আইওটি ডেভলাপার কিটগুলিতে যেমন রাস্পবেরি পাই বা উইও টার্মিনালে এই পিন পাওয়া যায়। আমরা এই পাঠে আলোচনা হতে যাওয়া বিভিন্ন প্রোটোকল আমরা GPIO পিনের সাথে ব্যবহার করতে পারবো। কিছু জিপিআইও পিন ভোল্টেজও সরবরাহ করে, সাধারণত 3.3V বা 5V, কিছু পিন গ্রাউন্ড করা থাকে এবং অন্যগুলো প্রোগ্রামিং এর মাধ্যমে নিয়ন্ত্রণ করা হয় এরা হয় ভোল্টেজ (আউটপুট) প্রেরণ করতে পারে, বা একটি ভোল্টেজ (ইনপুট) গ্রহণ করতে পারে।
> 💁 বৈদ্যুতিক সার্কিট সম্পূর্ণ করার জন্য মূলত গ্রাউন্ডের সাথে কোন একটি ভোল্টেজ সংযোগ করতে হবে। কোন ব্যাটারির পজিটিভ (+ ve) টার্মিনাল হিসাবে ভোল্টেজ এবং নেগেটিভ (-ve) টার্মিনাল হিসাবে গ্রাউন্ডকে চিন্তা করা যায়।
শুধুমাত্র অন/অফ (High/Low) ভ্যালুর প্রয়োজন হলে GPIO পিনকে সরাসরি ডিজিটাল সেন্সর বা একচুয়েটরের সাথে সংযোগ করা যায়। উদাহরণস্বরূপঃ
* বাটন - You can connect a button between a 5V pin and a pin set to input. When you press the button it completes a circuit between the 5V pin, through the button to the input pin. From code you can read the voltage at the input pin, and if it is high (5V) then the button is pressed, if it is low (0v) then the button is not pressed. Remember the actual voltage itself is not read, instead you get a digital signal of 1 or 0 depending on if the voltage is above a threshold or not.
একটি 5 ভোল্টের পিন এবং ইনপুট পিনের মধ্যে একটি বাটন সংযোগ করা যায়। বাটন প্রেস করলে, 5V পিন থেকে বাটনের ভেতর দিয়ে এটি একটি ইনপুট সার্কিট সম্পূর্ণ করে। কোড থেকে ইনপুট পিনের ভোল্টেজ এর মান জানা যায়। যদি মান High (5V) হয়, তবে তার মানে বাটনে প্রেস করা হয়েছে কিন্তু যদি এটি Low(0V) হয়, সেটি বোঝায় যে বাটনে প্রেস করা হয়নি। এক্ষেত্রে এটি অবশ্যই মনে রাখতে হবে যে এখানে প্রকৃত ভোল্টেজ আসেনি, বরং এর ডিজিটাল সিগন্যাল হিসেবে 1 বা 0 এসেছে।
![A button is sent 5 volts. When not pressed it returns 0 volts, or 0, when pressed it returns 5 volts, or 1](../../../../images/button-with-digital.png)
* এলইডি - একটি আউটপুট পিন এবং গ্রাউন্ড পিনের মধ্যে একটি এলইডি সংযোগ করা যাবে ( এখানে একটি রেজিস্টর বা রোধ ব্যবহার করতে হবে, অন্যথায় এলইডি পুড়ে যাবে)। কোড থেকে আপনি আউটপুট পিনটি High সেট করলে এটি 3.3V প্রেরণ করবে। এখানে 3.3V পিন থেকে এলইডি এর মাধ্যমে গ্রাউন্ড পিনে একটি সার্কিট তৈরি হয়েছে। এতে LED জ্বলে উঠবে।
![An LED is sent a signal of 0 (3.3V), which lights the LED. If it is sent 0 (0v), the LED is not lit.](../../../../images/led-digital-control.png)
আরও উন্নত সেন্সরগুলির জন্য, সেন্সর এবং অ্যাকচুয়েটরের সাথে জিপিআইও পিনগুলি সরাসরি ডিজিটাল ডেটা প্রেরণ এবং গ্রহণের জন্য সরাসরি ব্যবহার করা যায়। ADC এবং DAC সহ কন্ট্রোলার বোর্ডের মাধ্যমেও অ্যানালগ সেন্সর এবং অ্যাকচুয়েটরের সাথে যোগাযোগ স্থাপন করা যাবে।
> 💁 এই ল্যাবগুলির জন্য একটি রাস্পবেরি পাই ব্যবহার করলে, সেটিতে গ্রোভ বেস হ্যাট এর জিপিআইওর মাধ্যমে এনালগ সেন্সর সংকেতগুলিকে ডিজিটাল রূপান্তর করতে হার্ডওয়্যার রয়েছে।
✅ জিপিআইও পিন সহ আইওটি ডিভাইস আমাদের কাছে থাকলে, এই পিনগুলি সন্ধান করে কোনগুলো গ্রাউন্ড আবার কোনগুলা ভোল্টেজের জন্য বা প্রোগ্রামেবল - তা সনাক্ত করি।
### অ্যানালগ পিন
কিছু ডিভাইস, যেমন আরডুইনো ডিভাইসগুলিতে অ্যানালগ পিন থাকেে। এগুলি জিপিআইও পিনের মতই, তবে ডিজিটাল সিগন্যাল সমর্থন করার পরিবর্তে, তাদের কাছে ভোল্টেজ রেঞ্জকে সংখ্যাসূচক মানগুলিতে রূপান্তর করতে একটি এডিসি রয়েছে। সাধারণত এডিসির একটি 10-বিট রেজোলিউশন থাকে যার অর্থ এটি ভোল্টেজকে 0 থেকে 1,023 এর একটি মানে রূপান্তর করে।
উদাহরণস্বরূপ, একটি 3.3V বোর্ডে, সেন্সরটি যদি 3.3V প্রদান করে, তবে প্রত্যাবর্তিত মানটি হবে 1,023। যদি প্রাপ্ত ভোল্টেজটি 1.65v হয়, তবে তার মান 511 হবে।
![A soil moisture sensor sent 3.3V and returning 1.65v, or a reading of 511](../../../../images/analog-sensor-voltage.png)
> 💁 নাইটলাইট এ ফিরে যাই - লেসন-৩ : আলোক সেন্সর 0-1,023 এর একটি মান দেয়। যদি আমরা উইও টার্মিনাল ব্যবহার করি, তবে সেন্সরটি একটি এনালগ পিনের সাথে সংযুক্ত ছিল। যদি আমরা রাস্পবেরি পাই ব্যবহার করি, তবে তা জিপিআইও পিনের সাথে যোগাযোগের জন্য ইন্টিগ্রেটেড এডিসিযুক্ত বেস হ্যাটে একটি এনালগ পিনের সাথে সংযুক্ত ছিল। ভার্চুয়াল ডিভাইসটি একটি অ্যানালগ পিনের অনুকরণ করতে 0-1,023 থেকে একটি মান প্রেরণের জন্য সেট করা হয়েছিল।
মাটির আর্দ্রতা সেন্সরগুলি ভোল্টেজের উপর নির্ভর করে, সুতরাং এনালগ পিনগুলি ব্যবহার করে 0-1,023 এর মান দেবে।
### Inter Integrated Circuit (I<sup>2</sup>C)
I<sup>2</sup>C, যেটিকে পড়া হয় *I-স্কয়ার-C*, একটি মাল্টি কন্ট্রোলার, মাল্টি পেরিফেরাল ব্যবস্থা যা কোন সংযুক্ত ডিভাইস একটি মাল্টি-কন্ট্রোলার, মাল্টি পেরিফেরিয়াল প্রোটোকল হিসেবে কাজ করতে পারে I<sup>2</sup>C বাস (ডেটা স্থানান্তরকারী যোগাযোগ ব্যবস্থা) এর সাথে। সংযুক্ত ডিভাইসের এড্রেসযুক্ত প্রতিটি প্যাকেট সহ সকল ডেটাই এড্রেস প্যাকেট হিসাবে প্রেরণ করা হয়।
> 💁 এই মডেলটিকে প্রভু(Master)/ক্রীতদাস(Slave) হিসাবে উল্লেখ করা হত, তবে Slave বা দাসত্বের সাথে জড়িত থাকার কারণে এই পরিভাষা বাদ দেওয়া হচ্ছে। [Open Source Hardware Association থেকে বর্তমানে **controller/peripheral** এই পরিভাষা গৃহিত হয়েছে](https://www.oshwa.org/a-resolution-to-redefine-spi-signal-names/), তবে কিছু কিছু স্থানে এখনও পুরানো পরিভাষার উল্লেখ দেখতে পাওয়া যায়।
প্রটি ডিভাইসের একটি এড্রেস থাকে যা I<sup>2</sup>C বাসের সাথে সংযোগে দরকার হয় এবং এগুলো সাধারণত আগে থেকেই ডিভাইসে কোড করা থাকে। উদাহরণস্বরূপ, সীডের প্রতি ধরণের গ্রোভ সেন্সরের একই এড্রেস রয়েছে, সুতরাং সমস্ত আলোক সেন্সরের একই ঠিকানা রয়েছে, সমস্ত বাটনের একই ঠিকানা রয়েছে যা লাইট সেন্সর ঠিকানা থেকে পৃথক। কিছু ডিভাইসের সাথে জাম্পার সেটিংস বা সোল্ডারিং পিনগুলি একসাথে পরিবর্তন করে ঠিকানা পরিবর্তন করার উপায় রয়েছে।
I<sup>2</sup>C এর একটি বাস রয়েছে যাতে ২টি মেইন তার(Wire) এবং ২টি পাওয়ার সরবরাহের তার(Wire) রয়েছেঃ
| তার (Wire) | নাম | বর্ণনা |
| ---- | --------- | ----------- |
| SDA | Serial Data | এই তারটি ডিভাইসগুলির মধ্যে ডেটা প্রেরণের জন্য ব্যবহৃত হয় |
| SCL | Serial Clock | এই তারটি নিয়ামক দ্বারা নির্ধারিত হারে একটি ঘড়ি সংকেত প্রেরণ করে |
| VCC | Voltage common collector | ডিভাইসগুলির জন্য পাওয়ার সাপ্লাইয়ে ব্যবহৃত হয়। এটি এসডিএ এবং এসসিএল তারগুলির সাথে সংযুক্ত হয়ে একটি পুল-আপ রেজিস্টারের মাধ্যমে তাদের পাওয়ার সরবরাহ করে যা সিগন্যালকে অফ করে দিতে পারে, যখন কোন ডিভাইস নিয়ন্ত্রক থাকে না |
| GND | Ground | এটি বৈদ্যুতিক সার্কিটের জন্য একটি সাধারণ গ্রাউন্ড সরবরাহ করে |
![I2C bus with 3 devices connected to the SDA and SCL wires, sharing a common ground wire](../../../../images/i2c.png)
ডেটা প্রেরণের জন্য, একটি ডিভাইস প্রেরণ শুরুর শর্ত প্রকাশ করবে যা দ্বারা বোঝা যাবে যে এটি ডেটা প্রেরণের জন্য প্রস্তুত। এটি তখন নিয়ন্ত্রক বা কন্ট্রোলার ডিভাইস হিসেবে কাজ করবে। এরপরে নিয়ন্ত্রকটি সেই ডিভাইসের ঠিকানা প্রেরণ করে যার সাথে এটি যোগাযোগ করতে চায়, সেই সাথে এটিও জানানো হয় ডেটা Read নাকি Write কোনটি করতে চায়। ডেটা পাঠানোর পরে, কন্ট্রোলার এটি শেষ হয়ে গেছে তা বোঝাতে একটি স্টপ শর্ত প্রেরণ করে। এর পরে অন্য ডিভাইসটি নিয়ন্ত্রক হয়ে উঠতে পারে এবং ডেটা প্রেরণ বা গ্রহণ সে নিজেই শুরু করতে পারে।
I<sup>2</sup>C এর গতিসীমার লিমিট রয়েছে, যেখানে ৩টি ভিন্ন মোড রয়েছে বিভিন্ন স্পীডের। সবথেকে বেশি গতিশীল হলো High Speed mode যার সর্বোচ্চ স্পীড 3.4Mbps (megabits per second),যদিও খুব অল্পসংখ্যক ডিভাইসই এত স্পীড সরবরাহ করে। উদাহরণস্বরূপ রাস্পবেরি পাইয়ের কথা ধরা যাক, এটির গতি fast mode পর্যন্তই, যার মান 400Kbps (kilobits per second)। Standard mode টি এক্ষেত্রে 100Kbps সরবরাহ করে।
> 💁 আমরা যদি রাস্পবেরি পাইয়ের সাথে গ্রোভ বেস হ্যাট ব্যবহার করি আমাদের আইওটি হার্ডওয়্যার হিসেবে, সেখানে অনেকগুলো I<sup>2</sup>C সকেট দেখা যাবে, I<sup>2</sup>C সেন্সরের সাথে সংযোগ স্থাপনের জন্য। অ্যানালগ গ্রোভ সেন্সরগুলিও ডিজিটাল ডেটা হিসাবে অ্যানালগ মানগুলি প্রেরণ করতে একটি এডিসি সহ I<sup>2</sup>C ব্যবহার করে। তাহলে, আমাদের ব্যবহৃত আলোক সেন্সর যা একটি এনালগ পিনকে সিমুলেট করে, সেখানে শুধুমাত্র ডিজিটাল ডেটা সাপোর্ট করা পাই তে বার্তা পাঠানো হয়েছে I<sup>2</sup>C এর মাধ্যমে।
### Universal asynchronous receiver-transmitter (UART)
UART তে সার্কিটরি থাকে, যা দুটি ডিভাইসকে যোগাযোগ করার সুযোগ দেয়। প্রতিটি ডিভাইসে 2টি যোগাযোগ পিন থাকে - transmit (Tx) এবং receive (Rx), যেখানে দ্বিতীয় ডিভাইসের আরএক্স পিনের সাথে সংযুক্ত হয় প্রথম ডিভাইসের টিএক্স পিন এবং দ্বিতীয় ডিভাইসের টিএক্স পিনের সাথে ১মটির আরএক্স পিন সংযুক্ত হয়ে, উভয় দিক দিয়ে ডেটা প্রেরণের সুযোগ তৈরী করে।
* ডিভাইস-১ থেকে ডেটা পাঠানো হয়, এটির Tx পিনের মাধ্যমে, যা ২য় ডিভাইসের Rx পিন গ্রহণ করে।
* আবার, ডিভাইস-২ থেকে এটির Tx পিনের মাধ্যমে ডেটা পাঠানো হলে, তা ১ম ডিভাইসের Rx পিন গ্রহণ করে।
![UART with the Tx pin on one chip connected to the Rx pin on another, and vice versa](../../../../images/uart.png)
> 🎓 ডেটাকে বিট আকারে প্রেরণ করা হয় এবং এটি *সিরিয়াল* কম্যুনিকেশন হিসাবে পরিচিত। বেশিরভাগ অপারেটিং সিস্টেম এবং মাইক্রোকন্ট্রোলারগুলিতে * সিরিয়াল পোর্ট * থাকে, এটি এমন সংযোগ যা আমাদের কোডে থাকা সিরিয়াল ডেটা প্রেরণ ও গ্রহণ করতে পারে।
UART ডিভাইসে [baud rate](https://wikipedia.org/wiki/Symbol_rate) (অপর নাম 'সিম্বল রেট') নামক একটি বিষয় রয়েছে যেটি দ্বারা প্রতি সেকেন্ডে বিট আকারে ডেটা প্রেরণ ও গ্রহণের স্পীড বোঝায়। একটি সাধারণ baud rate হলো 9,600,যার মানে 9,600 bits (0 এবং 1) ডেটা প্রতি সেকেন্ডে প্রেরণ করা হচ্ছে।
UART তে স্টার্ট এবং স্টপ বিট রয়েছে - এটি স্টার্ট এবং স্টপ বিট প্রেরণ করে এই বিষয়টি জানায় যে এটি এখন ১ বাইট (৮ বিট) ডেটা পাঠাবে, তারপর সেই ৮বিটের পর একটি স্টপ বাইট যাবে।
UART স্পীড নির্ভর করে হার্ডওয়্যার গতির উপর, তবে সর্বোচ্চ গতিও 6.5 Mbpsএর বেশি হয়না।
আমরা UART কে ব্যবহার করে পারি GPIO পিনের মাধ্যমে - যেখানে ১টি পিনকে Tx এবং অন্যটিকে Rx হিসেবে সেট করে তারপর আরেকটি ডিভাইসের সাথে যুক্ত করতে হবে।
> 💁 যদি নিজের আইওটি হার্ডওয়্যার হিসাবে আমরা গ্রোভ বেস হ্যাট সহ রাস্পবেরি পাই ব্যবহার করি, তবে বোর্ডটিতে একটি ইউআরটি সকেট দেখা যাবে যা আমরা ইউআরটি প্রোটোকল ব্যবহার করে সেন্সরগুলির সাথে যোগাযোগ করতে ব্যবহার করতে পারবো।
### Serial Peripheral Interface (SPI)
এসপিআই হলো স্বল্প দূরত্বে যোগাযোগের জন্য ডিজাইন করা পদ্ধতি যেমনঃ মাইক্রোকন্ট্রোলারের মাধ্যমে ফ্ল্যাশ মেমরির মতো স্টোরেজ ডিভাইসে যোগাযোগ করা। এটি একক নিয়ন্ত্রক (সাধারণত আইওটি ডিভাইসের প্রসেসর) যা একাধিক পেরিফেরালের সাথে যোগাযোগ করতে সক্ষম এমন একটি controller/peripheral মডেলের উপর ভিত্তি করে নির্মিত। নিয়ন্ত্রক একটি পেরিফেরাল নির্বাচন করে এবং ডেটা প্রেরণ বা অনুরোধ করে সবকিছু নিয়ন্ত্রণ করে।
SPI কন্ট্রোলারে ৩টি তার ব্যবহৃত হয়, আর প্রতি পেরিফেরালে ১টি করে অতিরিক্ত তার। এগুলো হলোঃ
| তার | নাম | বর্ণনা |
| ---- | --------- | ----------- |
| COPI | Controller Output, Peripheral Input | এই তারটি নিয়ন্ত্রক থেকে পেরিফেরালে ডেটা প্রেরণের জন্য। |
| CIPO | Controller Input, peripheral Output | এই তারটি পেরিফেরাল থেকে নিয়ন্ত্রকে ডেটা প্রেরণের জন্য। |
| SCLK | Serial Clock | এই তারটি নিয়ামক দ্বারা নির্ধারিত হারে একটি ক্লক সিগন্যাল প্রেরণ করে। |
| CS | Chip Select | কন্ট্রোলারের একাধিক তার রয়েছে। প্রতি পেরিফেরালে একটি এবং প্রতিটি তারের পেরিফেরাল সিএস তারের সাথে সংযোগ স্থাপন করে। |
![SPI with on controller and two peripherals](../../../../images/spi.png)
CS তারটি একবারে একটি পেরিফেরাল সক্রিয় করতে ব্যবহৃত হয়। COPI এবং CIPO তারগুলিতে যোগাযোগ করে। যখন কন্ট্রোলারকে পেরিফেরাল পরিবর্তন করার দরকার হয়, এটি বর্তমানে সক্রিয় পেরিফেরিয়ালের সাথে সংযুক্ত সিএস তারগুলি নিষ্ক্রিয় করে। তারপরে যে পেরিফেরালে সাথে সংযুক্ত হতে চায়, তার সাথে কানেকশনকে সক্রিয় করে।
SPI হলো *ফুল-ডুপ্লেক্স* পদ্ধতি, অর্থাৎ COPI and CIPO ব্যবহার করে কন্ট্রোলার ও পেরিফেরাল একইসাথে ডেটা প্রেরণ ও গ্রহণ করতে পারবে। SPI মূলত SCLK wire এর মাধ্যমে যুক্ত হয়, যাতে সবগুলো ডিভাইসের মাঝে সুসংগতি(sync) বজায় রাখা যায়, যা UART এর স্টপ এবং স্টার্ট বিটের থেকে সম্পূর্ণ ভিন্ন কনসেপ্ট।
SPI এর কোন সুনির্দিষ্ট স্পীড লিমিট নেই, তাই প্রায়শোই সেকেন্ডে কয়েক মেগাবাইট স্পীডেও ডেটা পাঠানো যায়।
IoT developer kits গুলো সাধারণত GPIO পিনের মাধ্যমে SPI সাপোর্ট করে। উদাহরণস্বরূপ, রাস্পবেরি পাইয়ে GPIO পিন 19, 21, 23, 24 এবং 26 ব্যবহৃত হয় SPI এর জন্য।
### Wireless (তারবিহীন যোগাযোগ)
কিছু সেন্সর সাধারণ Wireless প্রোটোকলে যোগাযোগ স্থাপন করতে পারে যেমনঃ ব্লুটুথ (মূলত ব্লুটুথ লো এনার্জি বা BLE), LoRaWAN (a **Lo**ng **Ra**nge low power networking protocol) কিংবা ওয়াইফাই ব্যবহার করে। এতে সরাসরি হার্ডওয়্যারে যুক্ত না থেকেও সংযোগ স্থাপন করা যায়।
যেমন, বাণিজ্যিকভাবে ব্যবহৃত মাটির আর্দ্রতা সেন্সর । এগুলি কোনও জমিতে মাটির আর্দ্রতা পরিমাপ করে, তারপরে LoRaWan এর মাধ্যমে ডেটা কোনও হাব ডিভাইসে প্রেরণ করবে, যা ডেটা প্রক্রিয়া করবে বা ইন্টারনেটে প্রেরণ করবে। এটি সেন্সরটিকে আইওটি ডিভাইস থেকে দূরে থাকার সুযোগ দেয় যা ডেটা পরিচালনা সহজ করে, বিদ্যুতের খরচ এবং বড় ওয়াইফাই নেটওয়ার্ক বা দীর্ঘ তারের প্রয়োজনীয়তা হ্রাস করে।
ফিটনেস ট্র্যাকার এর মত উন্নত সেন্সর সম্বলিত যন্ত্রগুলোর জন্য বিএলই জনপ্রিয়। এগুলি একাধিক সেন্সর একত্রিত করে BLE এর মাধ্যমে ফোনে আইওটি ডিভাইসের সেন্সর ডেটা প্রেরণ করে।
✅ আমাদের নিজেদের বাড়িতে বা শিক্ষা প্রতিষ্ঠানে কোনও ব্লুটুথ সেন্সর রয়েছে কী? এর মধ্যে তাপমাত্রা সেন্সর, ডিভাইস ট্র্যাকার এবং ফিটনেস ডিভাইস অন্তর্ভুক্ত থাকতে পারে।
বাণিজ্যিক ডিভাইসগুলির সংযোগের জন্য একটি জনপ্রিয় উপায় হল জিগবি (Zigbee)। জিগবি ডিভাইসের মধ্যে মেশ নেটওয়ার্ক তৈরি করতে ওয়াইফাই ব্যবহার করে, যেখানে প্রতিটি ডিভাইস যতটা সম্ভব কাছাকাছি ডিভাইসের সাথে সংযোগ স্থাপন করে মাকড়সার ওয়েবের মতো সংযোগ তৈরি করে। যখন কোন ডিভাইস ইন্টারনেটে কোনও বার্তা প্রেরণ করতে চায় তখন এটি এটি নিকটতম ডিভাইসে প্রেরণ করতে পারে, যা এটি অন্য নিকটবর্তী ডিভাইসগুলিতে প্রেরণ করতে পারে এবং ততক্ষণ এটি চলে যতক্ষণ তা কোন সমন্বয়কের কাছে পৌঁছানোর মাধ্যমে এবং ইন্টারনেটে প্রেরণ হচ্ছেনা।
> 🐝 Zigbee শব্দটি এসেছে মূলত মৌচাকে মৌমাছির দোলনাচ (Waggle) থেকে ।
## মাটিতে আর্দ্রতার মাত্রা পরিমাপ
আমরা মাটির আর্দ্রতা সেন্সর, একটি আইওটি ডিভাইস এবং একটি ঘরের উদ্ভিদ ব্যবহার করে মাটিতে আর্দ্রতা স্তরটি পরিমাপ করতে পারবো।
### কাজ - মাটিতে আর্দ্রতার পরিমাপ
আইওটি ডিভাইস ব্যবহার করে মাটিতে আর্দ্রতার পরিমাপ করার জন্য নিম্নের যেকোন একটি প্রাসঙ্গিক গাইড অনুসরণ করা যেতে পারে।
* [Arduino - Wio Terminal](wio-terminal-soil-moisture.md)
* [Single-board computer - Raspberry Pi](pi-soil-moisture.md)
* [Single-board computer - Virtual device](virtual-device-soil-moisture.md)
## সেন্সর ক্যালিব্রেশন
সেন্সরগুলি রোধ বা ক্যাপাসিট্যান্সের মতো বৈদ্যুতিক বৈশিষ্ট্যগুলির পরিমাপের উপর নির্ভর করে।
> 🎓 রোধ পরিমাপ করা হয় ওহম (Ω) এককে যার দ্বারা বোঝায় কোনও কিছুর মধ্য দিয়ে যাতায়াত করা বৈদ্যুতিক কারেন্টের কত প্রতিবন্ধকতা রয়েছে । যখন কোনও উপাদানের উপর ভোল্টেজ প্রয়োগ করা হয় তখন এর মধ্য দিয়ে প্রবাহিত কারেন্টের পরিমাণ উপাদানটির রোধের উপর নির্ভর করে। [উইকিপিডিয়া থেকে বৈদ্যুতিক রোধ](https://wikipedia.org/wiki/Electrical_resistance_and_conductance) পড়লে এ সংক্রান্ত আরো জানা যাবে।
> 🎓 ক্যাপাসিট্যান্স পরিমাপ করা হয় ফ্যারাড (F)এককে যার দ্বারা বোঝায় কোন উপাদান বা সার্কিটের বৈদ্যুতিক শক্তি সংগ্রহ এবং সঞ্চয় করার ক্ষমতা। [উইকিপিডিয়া থেকে ক্যাপাসিট্যান্স](https://wikipedia.org/wiki/Capacitance) পড়লে এ সংক্রান্ত আরো জানা যাবে।
এই পরিমাপগুলি সবসময়ই যে খুব বেশি ব্যবহারযোগ্য বা সরাসরি উপকারী - তা কিন্তু নয়। একটি তাপমাত্রা সেন্সর কল্পনা করা যাক যা 22.5KΩ পরিমাপ দিয়েছে! কিন্তু এর পরিবর্তে পরিমাপকৃত মানটি ক্যালিব্রেটেড হয়ে একটি দরকারী ইউনিটে রূপান্তরিত হওয়া দরকার - যা পরিমাপ করা মানের সাথে এর পরিমাণের তুলনা করে আমাদের কাজের জন্য ব্যবহারযোগ্য সঠিক এককে রূপান্তর করবে।
কিছু সেন্সর ব্যবহারের পূর্বেই ক্যালিব্রেটেড করা থাকে। উদাহরণস্বরূপ, গত পাঠটিতে যে তাপমাত্রা সেন্সরটি আমরা ব্যবহার করেছি সেটি ইতিমধ্যে ক্যালিব্রেট করা হয়েছিল যাতে এটি তাপমাত্রা পরিমাপ করে °C এককে। কারখানায় তৈরি প্রথম সেন্সরটি পরিচিত তাপমাত্রার এবং রোধের পরিমাপের একটি রেঞ্জ পাবে। এরপরে এটিতে কিছু গাণিতিক হিসেবের মাধ্যমে এমনভাবে তৈরী করা হবে যেন তা Ω (রোধের একক) এ মাপা মানকে °C এ রূপান্তর করতে পারে।
> 💁 রোধ থেকে তাপমাত্রার হিসেবের সমীকরণকে বলা হয় [SteinhartHart equation](https://wikipedia.org/wiki/SteinhartHart_equation)।
### মাটি আর্দ্রতা সেন্সর ক্যালিব্রেট করা
গ্রাভিমেট্রিক বা ভলিউমেট্রিক ভাবে পানির পরিমাণ ব্যবহার করে, মাটির আর্দ্রতা পরিমাপ করা হয়।
* গ্রাভিমেট্রিক হল প্রতি ইউনিট ভরের মাটির জন্য, পানির ভর যেমন, প্রতি কেজি শুষ্ক মাটির জন্য এতে পানির কেজি পরিমাণ।
* ভলিউমেট্রিক হলো প্রতি ইউনিট আয়তনের মাটির জন্য, পানির আয়তন যেমন, প্রতি কিউবমিটার শুষ্ক মাটির জন্য এতে পানির কিউবিক মিটার পরিমাণ।
মাটির আর্দ্রতা সেন্সরগুলি বৈদ্যুতিক রোধ বা ক্যাপাসিট্যান্স পরিমাপ করে - এটি কেবল মাটির আর্দ্রতার দ্বারা পরিবর্তিত হয় না, তবে মাটির উপাদানগুলিও তার বৈদ্যুতিক বৈশিষ্ট্যগুলিকে পরিবর্তন করতে পারে মাটির প্রকারভেদে। আদর্শভাবে সেন্সরগুলি ক্যালিব্রেট করা উচিত - এটি সেন্সর থেকে পাঠ গ্রহণ করছে এবং আরও বৈজ্ঞানিক পদ্ধতির সাহায্যে প্রাপ্ত পরিমাপগুলির সাথে তাদের তুলনা করছে। উদাহরণস্বরূপ, একটি ল্যাব বছরে কয়েকবার নেওয়া নির্দিষ্ট ক্ষেত্রের নমুনাগুলি ব্যবহার করে গ্র্যাভিমেট্রিক মাটির আর্দ্রতা গণনা করতে পারে, এবং এই সংখ্যাগুলি সেন্সরটি ক্যালিব্রেট করতে ব্যবহৃত হয়েছিল, যা সেন্সর পাঠকে গ্র্যাভিমেট্রিক মাটির আর্দ্রতার সাথে মিলিয়েছে।
![A graph of voltage vs soil moisture content](../../../../images/soil-moisture-to-voltage.png)
উপরের গ্রাফটি দেখায় যে কীভাবে সেন্সরটি ক্যালিব্রেট করতে হয়। ভোল্টেজ একটি মাটির নমুনার জন্য ক্যাপচার করা হয় যা পরে কোনও ল্যাবটিতে শুকনো ওজনের সাথে আর্দ্র ওজনের তুলনা করে (ওজন ভেজা পরিমাপ করে, তারপরে একটি চুলায় শুকিয়ে শুকনো পরিমাপ করে) পরিমাপ করা হয়। কয়েকটি রিডিং নেওয়া হয়ে গেলে, এটি কোনও গ্রাফ এবং পয়েন্টের সাথে লাগানো একটি লাইনে প্লট করা যেতে পারে। এই লাইনটি তখন আইওটি ডিভাইস দ্বারা গৃহীত মাটির আর্দ্রতা সংবেদক পাঠকে প্রকৃত মাটির আর্দ্রতা পরিমাপে রূপান্তর করতে ব্যবহার করা যেতে পারে।
💁 রোধভিত্তিক মাটির আর্দ্রতা সেন্সরগুলির জন্য, মাটির আর্দ্রতা বাড়ার সাথে সাথে ভোল্টেজ বৃদ্ধি পায়। ক্যাপাসিটিভ মাটি আর্দ্রতা সেন্সরগুলির জন্য, মাটির আর্দ্রতা বাড়ার সাথে সাথে ভোল্টেজ হ্রাস পায়, সুতরাং এর জন্য গ্রাফগুলি উপরের দিকে নয়, নীচের দিকে ঢালু হবে।
![A soil moisture value interpolated from the graph](../../../../images/soil-moisture-to-voltage-with-reading.png)
উপরের গ্রাফটি মাটির আর্দ্রতা সেন্সর থেকে পাওয়া একটি ভোল্টেজ রিডিং দেখায় এবং গ্রাফের রেখার সাথে এটি অনুসরণ করে প্রকৃত মাটির আর্দ্রতা গণনা করা যায়।
এই পদ্ধতির অর্থ কৃষকের একটি জমির জন্য কেবল অল্প কয়েকটি ল্যাব পরিমাপ দরকার, তারপরে তারা মাটির আর্দ্রতা পরিমাপ করতে আইওটি ডিভাইসগুলি ব্যবহার করা যাবে - যা পরিমাপের সময়কে দ্রুততর করবে।
---
## 🚀 চ্যালেঞ্জ
রোধভিত্তিক এবং ক্যাপাসিটিভ মাটির আর্দ্রতা সেন্সরের বিভিন্ন পার্থক্য রয়েছে। এই পার্থক্যগুলি কী কী এবং কোন ধরণটি কোন কৃষকের ব্যবহারের জন্য সবচেয়ে ভাল? এই পরামর্শ কী উন্নয়নশীল এবং উন্নত দেশগুলির মধ্যে পরিবর্তিত হয়?
## লেকচার-পরবর্তী কুইজ
[লেকচার-পরবর্তী কুইজ](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/12)
## রিভিউ এবং স্ব-অধ্যয়ন
সেন্সর এবং অ্যাকচুয়েটরের জন্য ব্যবহৃত হার্ডওয়্যার এবং প্রোটোকল সম্পর্কে জানতে নিম্নোক্ত বিষয়গুলি পড়া উচিতঃ
* [GPIO Wikipedia page](https://wikipedia.org/wiki/General-purpose_input/output)
* [UART Wikipedia page](https://wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter)
* [SPI Wikipedia page](https://wikipedia.org/wiki/Serial_Peripheral_Interface)
* [I<sup>2</sup>C Wikipedia page](https://wikipedia.org/wiki/I²C)
* [Zigbee Wikipedia page](https://wikipedia.org/wiki/Zigbee)
## Assignment
[সেন্সর ক্যালিব্রেশন](assignment.bn.md)

@ -0,0 +1,47 @@
# সেন্সর ক্যালিব্রেশন
## নির্দেশাবলী
এই পাঠে আমরা মাটির আর্দ্রতা সেন্সর রিডিং সংগ্রহ করেছি যা 0-1023 এর মধ্যে মান হিসাবে পরিমাপ করে। এগুলিকে প্রকৃত মাটির আর্দ্রতা হিসেবে রূপান্তর করতে, আমাদেরকে সেন্সরটি ক্যালিব্রেট করতে হবে। মাটির নমুনাগুলি থেকে রিডিং নিয়ে এটি করা যাবে, তারপরে এই নমুনাগুলি থেকে গ্র্যাভিমেট্রিক মাটির আর্দ্রতার পরিমাণ গণনা করতে হবে।
প্রতিটি সময় মাটির বিভিন্ন আর্দ্রতা সহ প্রয়োজনীয় রিডিং পেতে আমাদেরকে একাধিকবার এই পদক্ষেপগুলি পুনরাবৃত্তি করতে হবে।
1. মাটির আর্দ্রতা সেন্সর ব্যবহার করে একটি আর্দ্রতার মান নিতে হবে। এই মান লিখে রাখতে হবে।.
1. মাটির নমুনা নিয়ে এটি ওজন করতে হবে। এই মান লিখে রাখতে হবে।
1. কোন ওভেন বা উষ্ণ কিছুতে 110°C (230°F) তাপমাত্রায় কয়েক ঘন্টা রেখে মাটিকে শুকিয়ে নিতে হবে । সূর্যের আলো বা কোন উষ্ণ জায়গায় রেখেও এটা করা যাবে। শুষ্ক হয়েছে কিনা তা বোঝা যাবে যদি এটি পাউডার ধরণের হয়ে যায় এবং বেশ আলগা থাকে।
> 💁 সর্বাধিক নির্ভুল ফলাফলের জন্য একটি ল্যাবে সাধারণত 48-72 ঘন্টা শুকানো হয়। যদি এরকম বিশেষ ওভেন থাকে, তবে আমরা আরও দীর্ঘক্ষণ শুকানোর জন্য এগুলি ব্যবহার করতে পারি। যত বেশি সময় এখানে দেয়া হবে, ততবেশি শুষ্কতা আসবে এবং ফলস্বরূপ নির্ভুল মান পাওয়া যাবে।
1. আবার মাটি ওজন পরিমাপ করতে হবে
> 🔥 যদি চুলায় শুকানো হয়, তবে আগে নিশ্চিত করে নিতে হবে যে এটি ঠান্ড হয়েছে!
গ্র্যাভিমেট্রিক পদ্ধতিতে মাটির আর্দ্রতা গণনা :
![soil moisture % is weight wet minus weight dry, divided by weight dry, times 100](../../../../images/gsm-calculation.png)
* W<sub>wet</sub> = ভেজা মাটির ভর
* W<sub>dry</sub> = শুষ্ক মাটির ভর
উদাহরণস্বরূপ, ধরি আমাদের কাছে একটি মাটির নমুনা রয়েছে যা ভেজা অবস্থায় ২১২ গ্রাম ও শুকনো অবস্থায় ১৯৭ গ্রাম।
![The calculation filled in](../../../../images/gsm-calculation-example.png)
* W<sub>wet</sub> = 212g
* W<sub>dry</sub> = 197g
* 212 - 197 = 15
* 15 / 197 = 0.076
* 0.076 * 100 = 7.6%
এই উদাহরণে, মাটির নমুনাটির গ্র্যাভিমেট্রিক মাটির আর্দ্রতার মান 7.6%.
একবার আমাদের কাছে কমপক্ষে 3 টি নমুনা ফলাফল আসার পরে, মাটির আর্দ্রতা সেন্সর রিডিং এর জন্য মাটির আর্দ্রতা % এর একটি গ্রাফ প্লট করতে হবে এবং পয়েন্টগুলি সর্বোত্তমভাবে ফিট (Best Fit) করার জন্য লাইন টেনে যুক্ত করতে হবে। তারপরে রেখাটি ব্যবহার করে, যেকোন সেন্সর রিডিং এর জন্য জন্য গ্র্যাভিমেট্রিক মাটির আর্দ্রতার মান গণনা করা যাবে।
## এসাইনমেন্ট মূল্যায়ন মানদন্ড
| ক্রাইটেরিয়া | দৃষ্টান্তমূলক (সর্বোত্তম) | পর্যাপ্ত (মাঝারি) | আরো উন্নতির প্রয়োজন (নিম্ন) |
| -------- | ------------------------ | ------------------ | ------------------------ |
| ক্যালিব্রেশন ডেটা সংগ্রহ | কমপক্ষে ৩টি ক্যালিব্রেশন স্যাম্পল গ্রহণ করেছে | কমপক্ষে ২টি ক্যালিব্রেশন স্যাম্পল গ্রহণ করেছে |কমপক্ষে ১টি ক্যালিব্রেশন স্যাম্পল গ্রহণ করেছে |
| ক্যালিব্রেট করা রিডিং এ রুপান্তর | সফলভাবে ক্যালিব্রেট গ্রাফ প্লট করে এবং সেন্সর থেকে রিডিং তৈরি করে এটিকে গ্র্যাভিমেট্রিক মাটির আর্দ্রতার পরিমাণে রূপান্তর করেছে | সফলভাবে ক্যালিব্রেট গ্রাফ প্লট করেছে | গ্রাফ প্লট করতে পারেনি |

@ -4,11 +4,11 @@
এই ৬টি লেসনে আমরা শিখবো কীভাবে কৃষিকাজ উন্নত ও স্বয়ংক্রিয় করতে ইন্টারনেট অফ থিংস প্রয়োগ করা যায়।
> 💁 এই লেসনগুলোতে আমরা ক্লাউড রিসোর্স ব্যবহার করবো। যদি এই অধ্যায়ের সমস্ত পাঠ সম্পূর্ণ করা সম্ভব নাও হয়, তবুও [Clean up your project](../clean-up.md) অংশটি অবশ্যই দেখে নিতে হবে।
> 💁 এই লেসনগুলোতে আমরা ক্লাউড রিসোর্স ব্যবহার করবো। যদি এই অধ্যায়ের সমস্ত পাঠ সম্পূর্ণ করা সম্ভব নাও হয়, তবুও [প্রজেক্ট সুবিন্যস্ত রাখার](../../translations/clean-up.bn.md) অংশটি অবশ্যই দেখে নিতে হবে।
## বিষয়াবলী
1. [আইওটি দ্বারা উদ্ভিদ বৃদ্ধির পূর্বাভাস](lessons/1-predict-plant-growth/README.md)
1. [আইওটি দ্বারা উদ্ভিদ বৃদ্ধির পূর্বাভাস](lessons/1-predict-plant-growth/translations/README.bn.md)
1. [মাটির আর্দ্রতা সনাক্তকরণ](lessons/2-detect-soil-moisture/README.md)
1. [স্বয়ংক্রিয়ভাবে গাছে সেচকার্য](lessons/3-automated-plant-watering/README.md)
1. [উদ্ভিদকে ক্লাউড থেকে নিয়ন্ত্রণ](lessons/4-migrate-your-plant-to-the-cloud/README.md)

@ -145,15 +145,15 @@ Once you have created the edge device registration in your IoT Hub, you can set
**The IoT Edge runtime only runs Linux containers.** It can be run on Linux, or on Windows using Linux Virtual Machines.
* If you are using a Raspberry Pi as your IoT device, then this runs a supported version of Linux and can host the IoT Edge runtime. Follow the [Install Azure IoT Edge for Linux guide on Microsoft docs](https://docs.microsoft.com/azure/iot-edge/how-to-install-iot-edge?WT.mc_id=academic-17441-jabenn) to install IoT Edge and set the connection string.
* If you are using a Raspberry Pi as your IoT device, then this runs a supported version of Linux and can host the IoT Edge runtime. Follow the [install Azure IoT Edge for Linux guide on Microsoft docs](https://docs.microsoft.com/azure/iot-edge/how-to-install-iot-edge?WT.mc_id=academic-17441-jabenn) to install IoT Edge and set the connection string.
> 💁 Remember, Raspberry Pi OS is a variant of Debian Linux.
* If you are not using a Raspberry Pi, but have a Linux computer, you can run the IoT Edge runtime. Follow the [Install Azure IoT Edge for Linux guide on Microsoft docs](https://docs.microsoft.com/azure/iot-edge/how-to-install-iot-edge?WT.mc_id=academic-17441-jabenn) to install IoT Edge and set the connection string.
* If you are not using a Raspberry Pi, but have a Linux computer, you can run the IoT Edge runtime. Follow the [install Azure IoT Edge for Linux guide on Microsoft docs](https://docs.microsoft.com/azure/iot-edge/how-to-install-iot-edge?WT.mc_id=academic-17441-jabenn) to install IoT Edge and set the connection string.
* If you are using Windows, you can install the IoT Edge runtime in a Linux Virtual Machine by following the [Install and start the IoT Edge runtime section of the Deploy your first IoT Edge module to a Windows device quickstart on Microsoft docs](https://docs.microsoft.com/azure/iot-edge/quickstart?WT.mc_id=academic-17441-jabenn#install-and-start-the-iot-edge-runtime). You can stop when you reach the *Deploy a module* section.
* If you are using Windows, you can install the IoT Edge runtime in a Linux Virtual Machine by following the [install and start the IoT Edge runtime section of the deploy your first IoT Edge module to a Windows device quickstart on Microsoft docs](https://docs.microsoft.com/azure/iot-edge/quickstart?WT.mc_id=academic-17441-jabenn#install-and-start-the-iot-edge-runtime). You can stop when you reach the *Deploy a module* section.
* If you are using macOS, you can create a virtual machine (VM) in the cloud to use for your IoT Edge device. These are computers you can create in the cloud and access over the internet. You can create a Linux VM that has IoT Edge installed. Follow the [Create a virtual machine running IoT Edge guide](vm-iotedge.md) for instructions on how to do this.
* If you are using macOS, you can create a virtual machine (VM) in the cloud to use for your IoT Edge device. These are computers you can create in the cloud and access over the internet. You can create a Linux VM that has IoT Edge installed. Follow the [create a virtual machine running IoT Edge guide](vm-iotedge.md) for instructions on how to do this.
## Export your model
@ -463,7 +463,7 @@ Your container can now be deployed to your IoT Edge device. To deploy you need t
1. Connect to the IoT edge device:
* If you are using a Raspberry Pi to run IoT Edge, connect using ssh either from your terminal, or via a remote SSH session in VS Code
* If you are running IoT Edge in a Linux container on Windows, follow the steps in the [Verify successful configuration guide](https://docs.microsoft.com/azure/iot-edge/how-to-install-iot-edge-on-windows?view=iotedge-2018-06&tabs=powershell&WT.mc_id=academic-17441-jabenn#verify-successful-configuration) to connect to the IoT Edge device.
* If you are running IoT Edge in a Linux container on Windows, follow the steps in the [verify successful configuration guide](https://docs.microsoft.com/azure/iot-edge/how-to-install-iot-edge-on-windows?view=iotedge-2018-06&tabs=powershell&WT.mc_id=academic-17441-jabenn#verify-successful-configuration) to connect to the IoT Edge device.
* If you are running IoT Edge on a virtual machine, you can SSH into the machine using the `adminUsername` and `password` you set when creating the VM, and using either the IP address or DNS name:
```sh
@ -527,9 +527,9 @@ Your container can now be deployed to your IoT Edge device. To deploy you need t
* If you are on the same machine that IoT Edge is running, you can use `localhost` as the host name.
* If you are using a VM, you can use either the IP address or the DNS name of the VM
* Otherwise you can obtain the IP address of the machine running IoT Edge:
* On Windows 10, follow the [Find your IP address guide](https://support.microsoft.com/windows/find-your-ip-address-f21a9bbc-c582-55cd-35e0-73431160a1b9?WT.mc_id=academic-17441-jabenn)
* On macOS, follow the [How to find you IP address on a Mac guide](https://www.hellotech.com/guide/for/how-to-find-ip-address-on-mac)
* On linux, follow the section on finding your private IP address in the [How to find your IP address in Linux guide](https://opensource.com/article/18/5/how-find-ip-address-linux)
* On Windows 10, follow the [find your IP address guide](https://support.microsoft.com/windows/find-your-ip-address-f21a9bbc-c582-55cd-35e0-73431160a1b9?WT.mc_id=academic-17441-jabenn)
* On macOS, follow the [how to find you IP address on a Mac guide](https://www.hellotech.com/guide/for/how-to-find-ip-address-on-mac)
* On linux, follow the section on finding your private IP address in the [how to find your IP address in Linux guide](https://opensource.com/article/18/5/how-find-ip-address-linux)
1. You can test the container with a local file by running the following curl command:
@ -603,8 +603,8 @@ Do some timings and compare if the call to your edge device is faster or slower
## Review & Self Study
* Read more about containers on the [OS-level virtualization page on Wikipedia](https://wikipedia.org/wiki/OS-level_virtualization)
* Read more on edge computing, with an emphasis on how 5G can help expand edge computing in the [What is edge computing and why does it matter? article on NetworkWorld](https://www.networkworld.com/article/3224893/what-is-edge-computing-and-how-it-s-changing-the-network.html)
* Learn more about running AI services in IoT Edge by watching the [Learn How to Use Azure IoT Edge on a Pre-Built AI Service on the Edge to do Language Detection episode of Learn Live on Microsoft Channel9](https://channel9.msdn.com/Shows/Learn-Live/Sharpen-Your-AI-Edge-Skills-Episode-4-Learn-How-to-Use-Azure-IoT-Edge-on-a-Pre-Built-AI-Service-on-t?WT.mc_id=academic-17441-jabenn)
* Read more on edge computing, with an emphasis on how 5G can help expand edge computing in the [what is edge computing and why does it matter? article on NetworkWorld](https://www.networkworld.com/article/3224893/what-is-edge-computing-and-how-it-s-changing-the-network.html)
* Learn more about running AI services in IoT Edge by watching the [learn how to use Azure IoT Edge on a pre-built AI service on the Edge to do language detection episode of Learn Live on Microsoft Channel9](https://channel9.msdn.com/Shows/Learn-Live/Sharpen-Your-AI-Edge-Skills-Episode-4-Learn-How-to-Use-Azure-IoT-Edge-on-a-Pre-Built-AI-Service-on-t?WT.mc_id=academic-17441-jabenn)
## Assignment

@ -2,7 +2,7 @@
In Azure, you can create a virtual machine - a computer in the cloud that you can configure any way you wish and run your own software on it.
> 💁 You can read more about virtual machines on teh [Virtual Machine page on Wikipedia](https://wikipedia.org/wiki/Virtual_machine).
> 💁 You can read more about virtual machines on the [Virtual Machine page on Wikipedia](https://wikipedia.org/wiki/Virtual_machine).
## Task - Set up an IoT Edge virtual machine

@ -157,7 +157,7 @@ Wake word detection usually uses a technique know an TinyML, that is converting
To avoid the complexity of training and using a wake word model, the smart timer you are building in this lesson will use a button to turn on the speech recognition.
> 💁 If you want to try creating a wake word detection model to run on the Wio Terminal or Raspberry Pi, check out this [Responding to your voice tutorial by Edge Impulse](https://docs.edgeimpulse.com/docs/responding-to-your-voice). If you want to use your computer to do this, you can try the [Get started with Custom Keyword quickstart on the Microsoft docs](https://docs.microsoft.com/azure/cognitive-services/speech-service/keyword-recognition-overview?WT.mc_id=academic-17441-jabenn).
> 💁 If you want to try creating a wake word detection model to run on the Wio Terminal or Raspberry Pi, check out this [responding to your voice tutorial by Edge Impulse](https://docs.edgeimpulse.com/docs/responding-to-your-voice). If you want to use your computer to do this, you can try the [get started with Custom Keyword quickstart on the Microsoft docs](https://docs.microsoft.com/azure/cognitive-services/speech-service/keyword-recognition-overview?WT.mc_id=academic-17441-jabenn).
## Convert speech to text
@ -214,9 +214,9 @@ What do you think the future holds for speech recognition?
## Review & Self Study
* Read about the different microphone types and how they work on the [What's the difference between dynamic and condenser microphones article on Musician's HQ](https://musicianshq.com/whats-the-difference-between-dynamic-and-condenser-microphones/).
* Read more on the Cognitive Services speech service on the [Speech service documentation on Microsoft Docs](https://docs.microsoft.com/azure/cognitive-services/speech-service/?WT.mc_id=academic-17441-jabenn)
* Read about keyword spotting on the [Keyword recognition documentation on Microsoft Docs](https://docs.microsoft.com/azure/cognitive-services/speech-service/keyword-recognition-overview?WT.mc_id=academic-17441-jabenn)
* Read about the different microphone types and how they work on the [what's the difference between dynamic and condenser microphones article on Musician's HQ](https://musicianshq.com/whats-the-difference-between-dynamic-and-condenser-microphones/).
* Read more on the Cognitive Services speech service on the [speech service documentation on Microsoft Docs](https://docs.microsoft.com/azure/cognitive-services/speech-service/?WT.mc_id=academic-17441-jabenn)
* Read about keyword spotting on the [keyword recognition documentation on Microsoft Docs](https://docs.microsoft.com/azure/cognitive-services/speech-service/keyword-recognition-overview?WT.mc_id=academic-17441-jabenn)
## Assignment

@ -138,6 +138,6 @@ The microphone and speakers need to be connected, and configured.
You will hear the audio bing played back through the speakers. Adjust the output volume on your speaker as necessary.
1. If you need to adjust the volume of the built-in microphone port, or adjust the gain of the microphone, you can use the `alsamixer` utility. You can read more on this utility on thw [Linux alsamixer man page](https://linux.die.net/man/1/alsamixer)
1. If you need to adjust the volume of the built-in microphone port, or adjust the gain of the microphone, you can use the `alsamixer` utility. You can read more on this utility on the [Linux alsamixer man page](https://linux.die.net/man/1/alsamixer)
1. If you get errors playing back the audio, check the card you set as the `defaults.pcm.card` in the `alsa.conf` file.

@ -29,7 +29,7 @@ On Windows, Linux, and macOS, the speech services Python SDK can be used to list
> pip install --upgrade pip
> ```
1. Add the following imports to the `app,py` file:
1. Add the following imports to the `app.py` file:
```python
import requests

@ -98,7 +98,7 @@ Once each buffer has been captured, it can be written to the flash memory. Flash
}
```
This configures the flash memory on teh Wio Terminal to write to, and sets up the buffers based off the grain size of the flash memory. This is in an `init` method, rather than a constructor as this needs to be called after the flash memory has been set up in the `setup` function.
This configures the flash memory on the Wio Terminal to write to, and sets up the buffers based off the grain size of the flash memory. This is in an `init` method, rather than a constructor as this needs to be called after the flash memory has been set up in the `setup` function.
1. Add the following code to the `public` section:
@ -157,7 +157,7 @@ Once each buffer has been captured, it can be written to the flash memory. Flash
| Constant | Value | Description |
| --------------------- | -----: | - |
| RATE | 16000 | The sample rate for the audio. !6,000 is 16KHz |
| RATE | 16000 | The sample rate for the audio. 16,000 is 16KHz |
| SAMPLE_LENGTH_SECONDS | 4 | The length of audio to capture. This is set to 4 seconds. To record longer audio, increase this. |
| SAMPLES | 64000 | The total number of audio samples that will be captured. Set to the sample rate * the number of seconds |
| BUFFER_SIZE | 128044 | The size of the audio buffer to capture. Audio will be captured as a WAV file, which is 44 bytes of header, then 128,000 bytes of audio date (each sample is 2 bytes) |
@ -517,7 +517,7 @@ Once each buffer has been captured, it can be written to the flash memory. Flash
}
```
This code checks hte C button, and if this is pressed and recording hasn't started, then the `_isRecording` field of the `Mic` class is set to true. This will cause the `audioCallback` method of the `Mic` class to store audio until 4 seconds has been captured. Once 4 seconds of audio has been captured, the `_isRecording` field is set to false, and the `_isRecordingReady` field is set to true. This is then checked in the `loop` function, and when true the `processAudio` function is called, then the mic class is reset.
This code checks the C button, and if this is pressed and recording hasn't started, then the `_isRecording` field of the `Mic` class is set to true. This will cause the `audioCallback` method of the `Mic` class to store audio until 4 seconds has been captured. Once 4 seconds of audio has been captured, the `_isRecording` field is set to false, and the `_isRecordingReady` field is set to true. This is then checked in the `loop` function, and when true the `processAudio` function is called, then the mic class is reset.
1. Build this code, upload it to your Wio Terminal and test it out through the serial monitor. Press the C button (the one on the left-hand side, closest to the power switch), and speak. 4 seconds of audio will be captured.

@ -87,7 +87,7 @@ To use LUIS, you need to create an authoring resource.
> 💁 There is a field for a prediction resource. You can create a second resource just for prediction, but the free authoring resource allows 1,000 predictions a month which should be enough for development, so you can leave this blank.
1. Read through the guide that appears once you cerate the app to get an understanding of the steps you need to take to train the language understanding model. Close this guide when you are done.
1. Read through the guide that appears once you create the app to get an understanding of the steps you need to take to train the language understanding model. Close this guide when you are done.
## Intents and entities
@ -102,7 +102,7 @@ Some examples:
| "Cancel my timer" | *cancel a timer* | None |
| "Order 3 large pineapple pizzas and a caesar salad" | *order food* | *3 large pineapple pizzas*, *caesar salad* |
✅ With the sentences you though about earlier, what would be the intent and any entities in that sentence?
✅ With the sentences you thought about earlier, what would be the intent and any entities in that sentence?
To train LUIS, first you set the entities. These can be a fixed list of terms, or learned from the text. For example, you could provide a fixed list of food available from your menu, with variations (or synonyms) of each word, such as *egg plant* and *aubergine* as variations of *aubergine*. LUIS also has pre-built entities that can be used, such as numbers and locations.
@ -262,7 +262,7 @@ For a smart timer, we want a response straight away, so we can tell the user tha
Rather than calling LUIS from the IoT device, you can use serverless code with a different type of trigger - an HTTP trigger. This allows your function app to listen for REST requests, and respond to them. This function will be a REST endpoint your device can call.
> 💁 Although you can call LUIS directly from your IoT device, it's better to use something like serverless code. This way when of you want to change the LUIS app that you call, for example when you train a better model or train a model in a different language, you only have to update your cloud code, not re-deploy code to potentially thousands or millions of IoT device.
> 💁 Although you can call LUIS directly from your IoT device, it's better to use something like serverless code. This way when you want to change the LUIS app that you call, for example when you train a better model or train a model in a different language, you only have to update your cloud code, not re-deploy code to potentially thousands or millions of IoT device.
### Task - create a serverless functions app
@ -500,9 +500,9 @@ Rather than calling LUIS from the IoT device, you can use serverless code with a
Find your IP address:
* On Windows 10, follow the [Find your IP address guide](https://support.microsoft.com/windows/find-your-ip-address-f21a9bbc-c582-55cd-35e0-73431160a1b9?WT.mc_id=academic-17441-jabenn)
* On macOS, follow the [How to find you IP address on a Mac guide](https://www.hellotech.com/guide/for/how-to-find-ip-address-on-mac)
* On linux, follow the section on finding your private IP address in the [How to find your IP address in Linux guide](https://opensource.com/article/18/5/how-find-ip-address-linux)
* On Windows 10, follow the [find your IP address guide](https://support.microsoft.com/windows/find-your-ip-address-f21a9bbc-c582-55cd-35e0-73431160a1b9?WT.mc_id=academic-17441-jabenn)
* On macOS, follow the [how to find you IP address on a Mac guide](https://www.hellotech.com/guide/for/how-to-find-ip-address-on-mac)
* On linux, follow the section on finding your private IP address in the [how to find your IP address in Linux guide](https://opensource.com/article/18/5/how-find-ip-address-linux)
Once you have your IP address, you will able to access the function at `http://<IP_ADDRESS>:7071/api/text-to-timer`, where `<IP_ADDRESS>` will be your IP address, for example `http://192.168.1.10:7071/api/text-to-timer`.
@ -523,7 +523,7 @@ There are many ways to request the same thing, such as setting a timer. Think of
## Review & Self Study
* Read more about LUIS and it's capabilities on the [Language Understanding (LUIS) documentation page on Microsoft docs](https://docs.microsoft.com/azure/cognitive-services/luis/?WT.mc_id=academic-17441-jabenn)
* Read more about language understanding on the [Natural-language understanding page on Wikipedia](https://wikipedia.org/wiki/Natural-language_understanding)
* Read more about language understanding on the [natural-language understanding page on Wikipedia](https://wikipedia.org/wiki/Natural-language_understanding)
* Read more on HTTP triggers in the [Azure Functions HTTP trigger documentation on Microsoft docs](https://docs.microsoft.com/azure/azure-functions/functions-bindings-http-webhook-trigger?tabs=python&WT.mc_id=academic-17441-jabenn)
## Assignment

@ -119,9 +119,9 @@ SSML has ways to change how words are spoken, such as adding emphasis to certain
## Review & Self Study
* Read more on speech synthesis on the [Speech synthesis page on Wikipedia](https://wikipedia.org/wiki/Speech_synthesis)
* Read more on ways criminals are using speech synthesis to steal on the [Fake voices 'help cyber crooks steal cash' story on BBC news](https://www.bbc.com/news/technology-48908736)
* Learn more about the risks to voice actors from synthesized versions of their voices in the [This TikTok Lawsuit Is Highlighting How AI Is Screwing Over Voice Actors article on Vice](https://www.vice.com/en/article/z3xqwj/this-tiktok-lawsuit-is-highlighting-how-ai-is-screwing-over-voice-actors)
* Read more on speech synthesis on the [speech synthesis page on Wikipedia](https://wikipedia.org/wiki/Speech_synthesis)
* Read more on ways criminals are using speech synthesis to steal on the [fake voices 'help cyber crooks steal cash' story on BBC news](https://www.bbc.com/news/technology-48908736)
* Learn more about the risks to voice actors from synthesized versions of their voices in the [this TikTok lawsuit is highlighting how AI is screwing over voice actors article on Vice](https://www.vice.com/en/article/z3xqwj/this-tiktok-lawsuit-is-highlighting-how-ai-is-screwing-over-voice-actors)
## Assignment

@ -165,9 +165,9 @@ How can machine translations benefit other IoT applications beyond smart devices
## Review & Self Study
* Read more on machine translation on the [Machine translation page on Wikipedia](https://wikipedia.org/wiki/Machine_translation)
* Read more on neural machine translation on the [Neural machine translation page on Wikipedia](https://wikipedia.org/wiki/Neural_machine_translation)
* Check out the list of supported languages for the Microsoft speech services in the [Language and voice support for the Speech service documentation on Microsoft Docs](https://docs.microsoft.com/azure/cognitive-services/speech-service/language-support?WT.mc_id=academic-17441-jabenn)
* Read more on machine translation on the [machine translation page on Wikipedia](https://wikipedia.org/wiki/Machine_translation)
* Read more on neural machine translation on the [neural machine translation page on Wikipedia](https://wikipedia.org/wiki/Neural_machine_translation)
* Check out the list of supported languages for the Microsoft speech services in the [language and voice support for the Speech service documentation on Microsoft Docs](https://docs.microsoft.com/azure/cognitive-services/speech-service/language-support?WT.mc_id=academic-17441-jabenn)
## Assignment

@ -84,7 +84,7 @@ The speech service can take speech and not only convert to text in the same lang
## Translate text using the translator service
The speech service doesn't support translation pf text back to speech, instead you can use the Translator service to translate the text. This service has a REST API you can use to translate the text.
The speech service doesn't support translation of text back to speech, instead you can use the Translator service to translate the text. This service has a REST API you can use to translate the text.
### Task - use the translator resource to translate text

@ -20,7 +20,7 @@ The projects cover the journey of food from farm to table. This includes farming
**Hearty thanks to our authors [Jen Fox](https://github.com/jenfoxbot), [Jen Looper](https://github.com/jlooper), [Jim Bennett](https://github.com/jimbobbennett), and our sketchnote artist [Nitya Narasimhan](https://github.com/nitya).**
**Thanks as well to our team of [Microsoft Learn Student Ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-17441-jabenn) who have been reviewing and translating this curriculum - [Aditya Garg](https://github.com/AdityaGarg00), [Arpita Das](https://github.com/Arpiiitaaa), [Aryan Jain](https://www.linkedin.com/in/aryan-jain-47a4a1145/), [Bhavesh Suneja](https://github.com/EliteWarrior315), [Lateefah Bello](https://www.linkedin.com/in/lateefah-bello/), [Manvi Jha](https://github.com/Severus-Matthew), [Mireille Tan](https://www.linkedin.com/in/mireille-tan-a4834819a/), [Mohammad Iftekher (Iftu) Ebne Jalal](https://github.com/Iftu119), [Priyanshu Srivastav](https://www.linkedin.com/in/priyanshu-srivastav-b067241ba), [Thanmai Gowducheruvu](https://github.com/innovation-platform), and [Zina Kamel](https://www.linkedin.com/in/zina-kamel/).**
**Thanks as well to our team of [Microsoft Learn Student Ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-17441-jabenn) who have been reviewing and translating this curriculum - [Aditya Garg](https://github.com/AdityaGarg00), [Anurag Sharma](https://github.com/Anurag-0-1-A), [Arpita Das](https://github.com/Arpiiitaaa), [Aryan Jain](https://www.linkedin.com/in/aryan-jain-47a4a1145/), [Bhavesh Suneja](https://github.com/EliteWarrior315), [Faith Hunja](https://faithhunja.github.io/), [Lateefah Bello](https://www.linkedin.com/in/lateefah-bello/), [Manvi Jha](https://github.com/Severus-Matthew), [Mireille Tan](https://www.linkedin.com/in/mireille-tan-a4834819a/), [Mohammad Iftekher (Iftu) Ebne Jalal](https://github.com/Iftu119), [Priyanshu Srivastav](https://www.linkedin.com/in/priyanshu-srivastav-b067241ba), [Thanmai Gowducheruvu](https://github.com/innovation-platform), and [Zina Kamel](https://www.linkedin.com/in/zina-kamel/).**
> **Teachers**, we have [included some suggestions](for-teachers.md) on how to use this curriculum. If you would like to create your own lessons, we have also included a [lesson template](lesson-template/README.md).
@ -107,6 +107,17 @@ npm i
npm run convert
```
## Help Wanted!
Would you like to contribute a translation? Please read our [translation guidelines](TRANSLATIONS.md) and add input [to one of the translations issues](https://github.com/microsoft/IoT-For-Beginners/issues?q=is%3Aissue+is%3Aopen+label%3Atranslation). If you want to translate into a new language, please raise a new issue for tracking.
## Other Curricula
Our team produces other curricula! Check out:
- [Web Dev for Beginners](https://aka.ms/webdev-beginners)
- [ML for Beginners](https://aka.ms/ml-beginners)
## Image attributions
You can find all the attributions for the images used in this curriculum where required in the [Attributions](./attributions.md).
You can find all the attributions for the images used in this curriculum where required in the [Attributions](./attributions.md).

@ -4,7 +4,7 @@ The **T** in IoT is **Things** and refers to devices that interact with the worl
> 💁 You don't need to purchase any IoT hardware to complete the assignments. You can do everything using virtual IoT hardware.
The physical hardware choices are Arduino, or Raspberry Pi. Each platform has it's own upsides and downsides, and these are all covered in one of the initial lessons. Review that lesson to decide which hardware platform you are most interested in learning.
The physical hardware choices are Arduino, or Raspberry Pi. Each platform has its own upsides and downsides, and these are all covered in one of the initial lessons. If you haven't already decided on a hardware platform, you can review [lesson two of the first project](./1-getting-started/lessons/2-deeper-dive/README.md) to decide which hardware platform you are most interested in learning.
The specific hardware was chosen to reduce the complexity of the lessons and assignments. Although other hardware may work, we cannot guarantee all the assignments will be supported on your device without additional hardware. For example, a lot of Arduino devices do not have WiFi, which is needed to connect to the cloud - the Wio terminal was chosen because it has WiFi built in.

@ -1910,7 +1910,7 @@
},
{
"answerText": "False",
"isCorrect": "false"
"isCorrect": "true"
}
]
},

@ -0,0 +1,125 @@
[![GitHub license](https://img.shields.io/github/license/microsoft/IoT-For-Beginners.svg)](https://github.com/microsoft/IoT-For-Beginners/blob/master/LICENSE)
[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/IoT-For-Beginners.svg)](https://GitHub.com/microsoft/IoT-For-Beginners/graphs/contributors/)
[![GitHub issues](https://img.shields.io/github/issues/microsoft/IoT-For-Beginners.svg)](https://GitHub.com/microsoft/IoT-For-Beginners/issues/)
[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/IoT-For-Beginners.svg)](https://GitHub.com/microsoft/IoT-For-Beginners/pulls/)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/IoT-For-Beginners.svg?style=social&label=Watch&maxAge=2592000)](https://GitHub.com/microsoft/IoT-For-Beginners/watchers/)
[![GitHub forks](https://img.shields.io/github/forks/microsoft/IoT-For-Beginners.svg?style=social&label=Fork&maxAge=2592000)](https://GitHub.com/microsoft/IoT-For-Beginners/network/)
[![GitHub stars](https://img.shields.io/github/stars/microsoft/IoT-For-Beginners.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/microsoft/IoT-For-Beginners/stargazers/)
# বিগিনারদের জন্য আইওটি - একটি সুবিন্যস্ত পাঠ্যক্রম
মাইক্রোসফট এর Azure Cloud Advocate গণ আইওটি বেসিক সম্পর্কে 12-সপ্তাহ, 24-লেসনের এই কোর্সটি তৈরী করেছেন। প্রতিটি পাঠের মধ্যে লেকচার-পূর্ববর্তী এবং লেকচার-পরবর্তী কুইজ, পাঠ সম্পূর্ণ করার জন্য লিখিত নির্দেশাবলী, একটি সমাধান, একটি এসাইনমেন্ট এবং আরও অনেক কিছু রয়েছে। আমাদের প্রজেক্ট-ভিত্তিক পদ্ধতির মাধ্যমে নতুন বিষয় সম্পর্কে জানা এবং কাজ করে অভিজ্ঞতা অর্জন দুটোই হবে একসাথে - নতুন স্কিল শেখার জন্য যা নিঃসন্দেহে একটি কার্যকরী পন্থা।
প্রজেক্টগুলোতে খামার থেকে টেবিল পর্যন্ত খাদ্যের অভূতপূর্ব একটি যাত্রা আমরা উপভোগ করবো, শিখবো। এর মধ্যে রয়েছে কৃষিকাজ, প্রক্রিয়া ব্যবস্থাপনা, উৎপাদন, খুচরা ও গ্রাহকপর্যায় সহ আইওটি ডিভাইসের জন্য জনপ্রিয় সব ক্ষেত্র।
![A road map for the course showing 24 lessons covering intro, farming, transport, processing, retail and cooking](sketchnotes/Roadmap.jpg)
> স্কেচনোটটি তৈরী করেছেন [Nitya Narasimhan](https://github.com/nitya). বড় সংস্করণে দেখার জন্য ছবিটিতে ক্লিক করতে হবে।
**হৃদয়ের অন্তঃস্থল থেকে কৃতজ্ঞতা জানাই এই কোর্সের রচয়িতা [Jen Fox](https://github.com/jenfoxbot), [Jen Looper](https://github.com/jlooper), [Jim Bennett](https://github.com/jimbobbennett), এবং স্কেচনোট শিল্পী [Nitya Narasimhan](https://github.com/nitya)কে**
**ধন্যবাদ জানাতে চাই আমাদের সেসকল [Microsoft Learn Student Ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-17441-jabenn)দের, যারা এই কারিক্যুলামটি রিভিউ এবং অনুবাদে কাজ করেছে - [Aditya Garg](https://github.com/AdityaGarg00),[Anurag Sharma](https://github.com/Anurag-0-1-A), [Arpita Das](https://github.com/Arpiiitaaa), [Aryan Jain](https://www.linkedin.com/in/aryan-jain-47a4a1145/), [Bhavesh Suneja](https://github.com/EliteWarrior315),[Faith Hunja](https://faithhunja.github.io/), [Lateefah Bello](https://www.linkedin.com/in/lateefah-bello/), [Manvi Jha](https://github.com/Severus-Matthew), [Mireille Tan](https://www.linkedin.com/in/mireille-tan-a4834819a/), [Mohammad Iftekher (Iftu) Ebne Jalal](https://github.com/Iftu119), [Priyanshu Srivastav](https://www.linkedin.com/in/priyanshu-srivastav-b067241ba), [Thanmai Gowducheruvu](https://github.com/innovation-platform), এবং [Zina Kamel](https://www.linkedin.com/in/zina-kamel/).**
> **শিক্ষকবৃন্দ** , আপনারা যেন বেশ সহজেই এই কারিকুলাম ব্যবহার করতে পারেন তার জন্য, আমর একটি [গাইডলাইন](for-teachers.md) তৈরী করেছি যাতে আপনার জন্য প্রয়োজনীয় সকল নির্দেশনা রয়েছে। আপনি যদি নিজেই নিজের লেসন তৈরি করতে চান, তবে তার জন্যও আমরা একটি [লেসন টেম্পলেট](lesson-template/README.md) রেখেছি।
> **শিক্ষার্থীরা**, এই কোর্সটি নিজে ব্যবহার করতে চাইলে, পুরো রেপোসিটরি 'fork' করতে হবে এবং লেকচার-পূর্ববর্তী কুইজ দিয়ে শুরু করতে হবে। তারপরে লেকচারটি পড়ে এবং বাকি কাজগুলো বুঝে, নিজেই অনুশীলনগুলি সম্পূর্ণ করতে হবে। সমাধান কোডগুলো কপি না করে, বরং লেসনগুলি বোঝার মাধ্যমে প্রজেক্টগুলি তৈরি করার চেষ্টা করতে হবে। তবে হ্যাঁ, সল্যুশন কোডগুলো প্রতিটি প্রজেক্ট-ভিত্তিক লেসনের সমাধান ফোল্ডারে পাওয়া যাবে। আরেকটি পরামর্শ হলো বন্ধুদের সাথে একটি স্টাডি গ্রুপ গঠন করা এবং একসাথে লেসনগুলোর মধ্য দিয়ে যাওয়া। আরও বেশি শেখার জন্য, [Microsoft Learn](https://docs.microsoft.com/users/jimbobbennett/collections/ke2ehd351jopwr?WT.mc_id=academic-17441-jabenn) ব্যবহার করা যাবে।
<!--
> প্রোমো ভিডিও
[![Promo video](./images/iot-for-beginners.png)](https://youtube.com/watch?v=R1wrdtmBSII "Promo video")
> 💁 উপরের ছবিতে ক্লিক করলেই এই পুরো কারিক্যুলামটি সম্পর্কে এবং এটিতে যারা কাজ করেছেন তাদের সম্পর্কে জানা যাবে।
-->
## শিক্ষাপদ্ধতি
এই পাঠ্যক্রমটি তৈরি করার সময় আমরা দুটি শিক্ষাগত পদ্ধতি বেছে নিয়েছি: প্রজেক্ট-ভিত্তিক পাঠদান এবং ঘন ঘন কুইজের অন্তর্ভুক্তি নিশ্চিত করা। এই সিরিজটির শেষের দিকে, শিক্ষার্থীরা একটি প্ল্যান্ট মনিটরিং এবং পানি সরবরাহের ব্যবস্থা, একটি যানবাহন ট্র্যাকার, খাবারের সন্ধানের জন্য এবং পরীক্ষা করার জন্য একটি স্মার্ট কারখানা সেটআপ এবং একটি ভয়েস-নিয়ন্ত্রিত রান্নার টাইমার তৈরি করবে এবং তাদের ইন্টারনেট অফ থিংস এর মূল বিষয়গুলি শিখবে - কীভাবে ডিভাইস কোড লিখতে হবে,কীভাবে ক্লাউডের সাথে সংযুক্ত হতে হবে, টেলিমেট্রি তথ্য বিশ্লেষণ করতে হবে এবং Edge এ কীভাবে আর্টিফিশিয়াল ইনটেলিজেন্স চালাতে হবে।
কোর্সের বিষয়বস্তু প্রজেক্ট যেন সমান্তরালে চলে তা নিশ্চিত করা হয়েছে - এই প্রক্রিয়াটি শিক্ষার্থীদের জন্য আরও আকর্ষক হবে এবং কনসেপ্টগুলো দীর্ঘদিন মনে রাখতে পারবে।
এছাড়াও, লেকচারের পূর্বে একটি সহজ কুইজ কোনও বিষয় শেখার দিকে শিক্ষার্থীদের উৎসাহিত করে, অন্যদিকে ক্লাসের পরে দ্বিতীয় কুইজ শিখে আসা বিষয়গুলো আরও বেশি মনে রাখার বিষয়টি নিশ্চিত করে। এই পাঠ্যক্রমটি ফ্লেক্সিবল এবং আনন্দদায়ক করে তৈরি করা হয়েছে এবং কেউ চাইলে পুরো কোর্সে না থেকে বরং কোন নির্দিষ্ট অংশেও থাকতে পারে। প্রজেক্টগুলি ছোট থেকে শুরু করা হয়েছে এবং ১২ সপ্তাহের লম্বা সময় ধরে শেষে ক্রমশ জটিল বিষয়গুলি অন্তর্ভুক্ত করা হয়েছে - সহজভাবে শিখন কার্যক্রম চালানোর জন্য।
শিক্ষার্থী এবং শৌখিন আগ্রহীদের কাছে থাকবে এমন সব হার্ডওয়্যার দিয়েই প্রজেক্টগুলো সাজানো হয়েছে। প্রতিটি প্রজেক্টই নির্দিষ্ট কোন ডোমেইন এ খুবই সুনির্দিষ্ট কিছু কাজ করে এবং সেই ডোমেইন সংক্রান্ত প্রয়োজনীয় জ্ঞান সরবরাহ করে। একজন সফল আইওটি যন্ত্র প্রস্তুতকারক হতে হলে, এটা বোঝা খুব জরুরী যে আমরা কোন ডোমেইন এর সমস্যা সমাধান করছি। আর এখানে যেসকল বিষয় শেখানো হচ্ছে তার মাধ্যমে শিক্ষার্থীরা তাদের আইওটি প্রজেক্ট নিয়ে আরো গভীরভাবে চিন্তা করবে যা আইওটি ডেভলাপার হিসেবে বাস্তব জগতের সমস্যা সমাধানে তাদেরকে সাহায্য করবে। তৈরীকৃত সল্যুশন গুলো নিয়ে আরো বেশি প্রশ্ন তারা করতে শিখবে যা তাদেরই উন্নতি ঘটাবে এবং এই প্রোডাক্ট ব্যবহারকারীকে অনেক ভালো অভিজ্ঞতা দিতে পারবে।
## হার্ডওয়্যার
ব্যক্তিগত পছন্দ, প্রোগ্রামিং ভাষার জ্ঞান, শেখার লক্ষ্য এবং প্রাপ্যতার উপর নির্ভর করে প্রজেক্টগুলোর জন্য আইওটি হার্ডওয়্যারের দুটি অপশন রয়েছে। এছাড়াও যাদের কাছে বর্তমানে হার্ডওয়্যার নেই অথবা শেখার পরে কিনতে চায়, তাদের জন্য রয়েছে **'ভার্চুয়াল হার্ডওয়্যার'** ! এই সংক্রান্ত ব্যপারে বিস্তারিত জানতে এবং ক্রয়তালিকা দেখতে চাইলে, [হার্ডওয়্যার](translations/hardware.bn.md) ফাইলটিতে তা রয়েছে।
> 💁 আমাদের [আচরণ বিধি (Code of Conduct)](translations/CODE_OF_CONDUCT.bn.md), [অবদান (Contribution)](translations/CONTRIBUTING.bn.md), and [অনুবাদ (Translation)](translations/TRANSLATIONS.bn.md) সংক্রান্ত নির্দেশনা রয়েছে। আমরা আপনার গঠনমূলক সমালোচনা স্বাগত জানাই!
## প্রতিটি পাঠে রয়েছে:
- (অপশনাল) স্কেচনোট
- (অপশনাল)পরিপূরক ভিডিও
- লেকচার-পূর্ববর্তী কুইজ
- লিখিত লেসন
- প্রজেক্ট-ভিত্তিক লেসনগুলোর জন্য,প্রজেক্ট তৈরীর স্টেপ-বাই-স্টেপ গাইড
- শিখন যাচাই
- একটি করে চ্যালেঞ্জ
- পরিপূরক রিডিং ম্যাটেরিয়াল
- এসাইনমেন্ট
- লেকচার-পরবর্তী কুইজ
> **কুইজ সংক্রান্ত একটি বক্তব্য**: সবগুলো কুইজই [এই অ্যাপ](https://brave-island-0b7c7f50f.azurestaticapps.net) এ রয়েছে, যেখানে ৪৮টি কুইজ রয়েছে প্রতিটিতে ৩টি করে প্রশ্ন নিয়ে. প্রতটি লেসন থেকেই কুইজের লিংক রয়েছে, তবে এগুলো লোকাল ভাবেও ব্যবহার করা যাবে; এক্ষেত্রে `quiz-app` ফোল্ডারে প্রদেয় নির্দেশনা অনুসরণ করার অনুরোধ জানানো হলো। ধীরে ধীরে এগুলো অন্যান্য ভাষায়ও উপলব্ধ করা হচ্ছে।
## লেসনসমূহ
| | প্রজেক্ট | কনসেপ্ট | শিখনফল | লেসন/পাঠ্য |
| :-: | :----------: | :-------------: | ------------------- | :-----------: |
| 01 | [IoT যাত্রার সূচনা](./1-getting-started) | IoT পরিচিতি | প্রথম আইওটি ডিভাইস সেটআপ করার সময়ই আইওটি এর প্রাথমিক নীতিগুলি এবং আইওটি সল্যুশনের বেসিক বিষয়গুলো যেমনঃ সেন্সর এবং ক্লাউড সার্ভিস সংক্রান্ত বিষয়গুলো সম্পর্কে জ্ঞান অর্জন | [IoT পরিচিতি](./1-getting-started/lessons/1-introduction-to-iot/translations/README.bn.md) |
| 02 | [IoT যাত্রার সূচনা](./1-getting-started) | IoT এর আরো গভীরে| আইওটি সিস্টেমের উপাদানগুলির পাশাপাশি মাইক্রোকন্ট্রোলার এবং সিঙ্গেল-বোর্ড কম্পিউটার সম্পর্কে জ্ঞান অর্জন | [IoT এর আরো গভীরে](./1-getting-started/lessons/2-deeper-dive/translations/README.bn.md) |
| 03 | [IoT যাত্রার সূচনা](./1-getting-started) | সেন্সর এবং অ্যাকচুয়েটরের সাহায্যে বাহ্যিক জগতের সাথে যোগাযোগ| 'নাইটলাইট' প্রজেক্টটি করার সাথেই সমান্তরালে বাহ্যিক জগত থেকে ডেটা সংগ্রহ করার জন্য সেন্সর এবং প্রতিক্রিয়া জানাতে ব্যবহৃত অ্যাকচুয়েটর সম্পর্কে জ্ঞান অর্জন | [সেন্সর এবং অ্যাকচুয়েটরের সাহায্যে বাহ্যিক জগতের সাথে যোগাযোগ](./1-getting-started/lessons/3-sensors-and-actuators/translations/README.bn.md) |
| 04 | [IoT যাত্রার সূচনা](./1-getting-started) | আইওটি ডিভাইসকে ইন্টারনেটে সংযুক্ত করা | এমকিউটিটি ব্রোকারের সাথে নাইটলাইটটি সংযুক্ত করে বার্তাগুলি প্রেরণ এবং গ্রহণ করতে আইওটি ডিভাইসটিকে কীভাবে ইন্টারনেটে সংযুক্ত করতে হবে সেই সংক্রান্ত জ্ঞান অর্জন | [আইওটি ডিভাইসকে ইন্টারনেটে সংযুক্তকরণ ](./1-getting-started/lessons/4-connect-internet/translations/README.bn.md) |
| 05 | [ফার্ম](./2-farm) | আইওটি দ্বারা উদ্ভিদ বৃদ্ধির পূর্বাভাস | আইওটি ডিভাইস দ্বারা গৃহিত তাপমাত্রার ডেটা ব্যবহার করে কীভাবে উদ্ভিদ বৃদ্ধির পূর্বাভাস দেওয়া যায় তা শেখা | [আইওটি দ্বারা উদ্ভিদ বৃদ্ধির পূর্বাভাস](./2-farm/lessons/1-predict-plant-growth/translations/README.bn.md) |
| 06 | [ফার্ম](./2-farm) | মাটির আর্দ্রতা নির্ণয় | কীভাবে মাটির আর্দ্রতা সনাক্ত করা যায় এবং তা করতে মাটির আর্দ্রতা সেন্সরটি কীভাবে ক্যালিব্রেট করতে হবে তা শেখা | [মাটির আর্দ্রতা নির্ণয়](./2-farm/lessons/2-detect-soil-moisture/translations/README.bn.md) |
| 07 | [ফার্ম](./2-farm) | Automated plant watering | রিলে এবং এমকিউটিটি ব্যবহার করে কীভাবে স্বয়ংক্রিয়ভাবে এবং নির্দিষ্ট সময়ে সেচ দেয়া যায় সে সংক্রান্ত জ্ঞান অর্জন | [Automated plant watering](./2-farm/lessons/3-automated-plant-watering/README.md) |
| 08 | [ফার্ম](./2-farm) | Migrate your plant to the cloud | ক্লাউড এবং ক্লাউড-হোস্ট করা আইওটি পরিষেবাগুলি সম্পর্কে জ্ঞান অর্জন এবং কীভাবে আমাদের উদ্ভিদটিকে পাবলিক এমকিউটিটি ব্রোকারের পরিবর্তে ক্লাউডে সংযুক্ত করতে হবে তা শেখা | [Migrate your plant to the cloud](./2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md) |
| 09 | [ফার্ম](./2-farm) | Migrate your application logic to the cloud | ক্লাউডে কীভাবে অ্যাপ্লিকেশন লজিক লিখতে হবে যাতে তা আইওটি ম্যাসেজের প্রতিক্রিয়া জানাতে পারে তা শেখা| [Migrate your application logic to the cloud](./2-farm/lessons/5-migrate-application-to-the-cloud/README.md) |
| 10 | [ফার্ম](./2-farm) | Keep your plant secure | আইওটি তে নিরাপত্তা সম্পর্কে জানা এবং Key ও Certificate এর সাহায্যে আমাদের উদ্ভিদটিকে কীভাবে সুরক্ষিত রাখা যায় তা শেখা | [Keep your plant secure](./2-farm/lessons/6-keep-your-plant-secure/README.md) |
| 11 | [পরিবহন](./3-transport) | Location tracking | আইওটি ডিভাইসে জিপিএস লোকেশন ট্র্যাকিং শেখা | [Location tracking](./3-transport/lessons/1-location-tracking/README.md) |
| 12 | [পরিবহন](./3-transport) | Store location data | পরবর্তী সময়ে বিশ্লেষণ বা চিত্রভিত্তিক ডেটা প্রদর্শন (Visualization) এর জন্য আইওটি ডেটা কীভাবে স্টোর করা যায় তা জানা | [Store location data](./3-transport/lessons/2-store-location-data/README.md) |
| 13 | [পরিবহন](./3-transport) | Visualize location data |মানচিত্রে অবস্থানের ডেটা প্রদর্শন করা এবং মানচিত্রগুলি কীভাবে ২টি মাত্রায় বাস্তব ত্রিমাত্রিক বিশ্বের উপস্থাপন করে সে সম্পর্কে জ্ঞান অর্জন | [Visualize location data](./3-transport/lessons/3-visualize-location-data/README.md) |
| 14 | [পরিবহন](./3-transport) | Geofences | Geofences সম্পর্কে জানা এবং কীভাবে এটি ব্যবহার করে সাপ্লাই চেইনের বিভিন্ন পর্যায়ের বাহনগুলো যখন গন্তব্যের কাছাকাছি পৌঁছায় তখন এলার্ট দেয়া যায় তা শেখা | [Geofences](./3-transport/lessons/4-geofences/README.md) |
| 15 | [উৎপাদন](./4-manufacturing) | Train a fruit quality detector | ক্লাউডের ছবি শ্রেণিবদ্ধকরণ মডেলকে (Image Classifier) ফলের মান সনাক্ত করতে কীভাবে প্রশিক্ষিত করতে হবে সে সম্পর্কে জানা | [Train a fruit quality detector](./4-manufacturing/lessons/1-train-fruit-detector/README.md) |
| 16 | [উৎপাদন](./4-manufacturing) | Check fruit quality from an IoT device | আইওটি ডিভাইসে ফলের গুণগত মান সনাক্তকারী ব্যবহার | [Check fruit quality from an IoT device](./4-manufacturing/lessons/2-check-fruit-from-device/README.md) |
| 17 | [উৎপাদন](./4-manufacturing) | Run your fruit detector on the edge | ফলের গুণগত মান সনাক্তকারীকে Edge হিসেবে ব্যবহার | [Run your fruit detector on the edge](./4-manufacturing/lessons/3-run-fruit-detector-edge/README.md) |
| 18 | [উৎপাদন](./4-manufacturing) | Trigger fruit quality detection from a sensor | সেন্সর থেকে ফলের গুণাগুণ সনাক্তকরণ নিয়ন্ত্রণ করা শেখা| [Trigger fruit quality detection from a sensor](./4-manufacturing/lessons/4-trigger-fruit-detector/README.md) |
| 19 | [খুচরাপর্যায়](./5-retail) | Train a stock detector | কোনও দোকানে স্টক গণনা করতে স্টক ডিটেক্টরকে প্রশিক্ষণ দেওয়ার জন্য কীভাবে অবজেক্ট সনাক্তকরণ ব্যবহার করা যায় তা শেখা | [Train a stock detector](./5-retail/lessons/1-train-stock-detector/README.md) |
| 20 | [খুচরাপর্যায়](./5-retail) | Check stock from an IoT device | কোন অবজেক্ট সনাক্তকরণ মডেল ব্যবহার করে আইওটি ডিভাইস থেকে স্টক পর্যবেক্ষণ করা শেখা | [Check stock from an IoT device](./5-retail/lessons/2-check-stock-device/README.md) |
| 21 | [খুচরাপর্যায়](./6-consumer) | Recognize speech with an IoT device | আইওটি ডিভাইস থেকে বক্তব্য (speech) সনাক্ত করে স্মার্ট টাইমার তৈরী করা | [Recognize speech with an IoT device](./6-consumer/lessons/1-speech-recognition/README.md) |
| 22 | [ভোক্তাপর্যায়](./6-consumer) | Understand language | আইওটি ডিভাইসকে কীভাবে কথা বোঝাতে হয় তা শেখা | [Understand language](./6-consumer/lessons/2-language-understanding/README.md) |
| 23 | [ভোক্তাপর্যায়](./6-consumer) | Set a timer and provide spoken feedback | আইওটি ডিভাইসে কীভাবে টাইমার সেট করতে হয় এবং টাইমার কখন সেট হয় এবং তা কখন শেষ হয় সে বিষয়ে কথিত প্রতিক্রিয়া যেন সেই আইওটি ডিভাইস জানাতে পারে তা শেখা | [Set a timer and provide spoken feedback](./6-consumer/lessons/3-spoken-feedback/README.md) |
| 24 | [ভোক্তাপর্যায়](./6-consumer) | Support multiple languages | কীভাবে আইওটি ডিভাইসে নির্দেশ দেয়া এবং স্মার্ট টাইমার থেকে আসা প্রতিক্রিয়া উভয়েই একাধিক ভাষা সাপোর্ট করানো যায় তা শেখা | [Support multiple languages](./6-consumer/lessons/4-multiple-language-support/README.md) |
## অফলাইন ব্যবহার
[Docsify](https://docsify.js.org/#/) ব্যবহার করে পুরো ডকুমেন্টেশনটি অফলাইনে ব্যবহার করা যাবে। এজন্য এই রেপোসিটরি ফর্ক করতে হবে, তারপর লোকাল মেশিনে [Docsify ইন্সটল ](https://docsify.js.org/#/quickstart)করতে হবে। এবার এই রেপোসিটরির রুট ফোল্ডারে `docsify serve` লিখতে হবে। সবশেষে লোকাল হোস্টের পোর্ট ৩০০০ অর্থাৎ `localhost:3000` এ পুরো কোর্সটি ওয়েবসাইট আকারে পাওয়া যাবে।
### পিডিএফ
এই কারিক্যুলামের কনটেন্টসমূহ অফলাইনে ব্যবহারের জন্য সহজেই পিডিএফ এ রূপান্তর করা যাবে। এক্ষেত্রে আগে এটা নিশ্চিত করতে হবে যে [npm ইন্সটল](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) করা রয়েছে এবং এই রেপোর রুট ফোল্ডারে নিম্নলিখিত কমান্ডগুলি রান করতে হবেঃ
```sh
npm i
npm run convert
```
## সাহায্য প্রয়োজন!
অনুবাদের কাজ করে এই কারিক্যুলামে অবদান করতে চান? তাহলে অনুগ্রহ করে আমাদের [অনুবাদ গাইডলাইন](translations/TRANSLATIONS.bn.md) পড়ে , যেকোন একটি [Translation Issue](https://github.com/microsoft/IoT-For-Beginners/issues)তে ইনপুট দেয়ার অনুরোধ করা হলো। যদি কোন নতুন ভাষায় অনুবাদ করতে কেউ আগ্রহী হয়, তবে ট্র্যাকিংয়ের জন্য দয়া করে একটি নতুন Issue সাবমিট করতে হবে।
## অন্য পাঠ্যক্রম সমূহ
আমাদের দলটি আরো বিভিন্ন পাঠ্যক্রম তৈরি করছে!যেমন -
- [Web Dev for Beginners](https://aka.ms/webdev-beginners)
- [ML for Beginners](https://aka.ms/ml-beginners)
## চিত্রের Attributions
এই পাঠ্যক্রমটিতে ব্যবহৃত ছবিগুলির জন্য সকল এট্রিবিউট পাওয়া যাবে [Attributions](./attributions.md) ফোল্ডারটিতে ।

@ -0,0 +1,108 @@
# হার্ডওয়্যার
IoT শব্দে **T** এর পূর্ণরূপ হলো **Things** বা জিনিষ এবং এটি মূলত আমাদের চারপাশের বাস্তব জগতের সাথে যোগাযোগ করে এমন ডিভাইসগুলিকে বোঝায়। শিক্ষার্থী এবং শৌখিন ব্যাক্তিদের কাছে সাধারণত থাকে এমন সব যন্ত্র দিয়েই প্রতিটি প্রজেক্ট সাজানো হয়েছে। ব্যক্তিগত পছন্দ, প্রোগ্রামিং ভাষার জ্ঞান, শেখার লক্ষ্য এবং প্রাপ্যতার উপর নির্ভর করে প্রজেক্টগুলোর জন্য আইওটি হার্ডওয়্যারের দুটি অপশন রয়েছে। এছাড়াও যাদের কাছে বর্তমানে হার্ডওয়্যার নেই অথবা শেখার পরে কিনতে চায়, তাদের জন্য রয়েছে **ভার্চুয়াল হার্ডওয়্যার** !
> 💁 এসাইনমেন্টগুলো করার জন্য কোন আইওটি হার্ডওয়্যার কেনার প্রয়োজন নেই, বরং ভার্চুয়াল হার্ডওয়্যার দিয়েই সব করা যাবে।
ফিজিক্যাল হার্ডওয়্যার অপশনগুলি হল [আরডুইনো](#আরডুইনো) এবং [রাস্পবেরি পাই](#রাস্পবেরি-পাই)। প্রতিটি প্ল্যাটফর্মের নিজস্ব সুবিধা এবং অসুবিধা থাকে এবং এগুলি ১টি প্রাথমিক লেসনে ব্যখ্যা করা হয়েছে। কোন হার্ডওয়্যার প্ল্যাটফর্মটি নিয়ে কাজ করতে সবচেয়ে বেশি আগ্রহ তা সিদ্ধান্ত নিতে সেই লেসনটি দেখতে হবে।
পাঠ এবং এসাইনমেন্টের জটিলতা হ্রাস করার জন্য প্রতিটি লেসনে নির্দিষ্ট হার্ডওয়্যার বেছে নেওয়া হয়েছে। যদিও আমাদের ব্যবহৃত হার্ডওয়্যার এর বাইরে অন্যান্য হার্ডওয়্যারও কাজ করতে পারে, তবে আমরা গ্যারান্টি দিতে পারি না যে সমস্ত কাজ অতিরিক্ত হার্ডওয়্যার ছাড়াই শিক্ষার্থীর ডিভাইসে করা যাবে। উদাহরণস্বরূপ, সাধারণ আরডুইনো ডিভাইসে ওয়াইফাই নেই, যা ক্লাউডের সাথে সংযোগ স্থাপনের জন্য কিন্তু প্রয়োজন - একারণেই তাই WIO Terminal বেছে নেওয়া হয়েছে কারণ এতে ওয়াইফাই বিল্ট-ইন রয়েছে।
এছাড়াও এই প্রজেক্টের জন্য কিছু অ-প্রযুক্তিগত উপকরণ যেমন মাটি , টবের উদ্ভিদ এবং ফল বা শাকসব্জির প্রয়োজন হবে।
## ক্রয়তালিকা
![The Seeed studios logo](./images/seeed-logo.png)
Seeed Studios থেকে সহজেই kit ক্রয় করা যাবে :
### আরডুইনো- Wio Terminal
**[IoT for beginners with Seeed and Microsoft - Wio Terminal Starter Kit](https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Wio-Terminal-Starter-Kit-p-5006.html)**
[![The Wio Terminal hardware kit](./images/wio-hardware-kit.png)](https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Wio-Terminal-Starter-Kit-p-5006.html)
### রাস্পবেরি পাই
**[IoT for beginners with Seeed and Microsoft - Raspberry Pi 4 Starter Kit](https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Raspberry-Pi-Starter-Kit.html)**
[![The Raspberry Pi Terminal hardware kit](./images/pi-hardware-kit.png)](https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Raspberry-Pi-Starter-Kit.html)
## আরডুইনো
আরডুইনো এর সব কোড C++ ভাষায় করা হয়। অ্যাসাইনমেন্ট সম্পন্ন করতে নিম্নলিখিত উপাদানগুলির প্রয়োজন হবে:
### আরডুইনো হার্ডওয়্যার
* [Wio Terminal](https://www.seeedstudio.com/Wio-Terminal-p-4509.html)
* *ঐচ্ছিক* - USB-C ক্যাবল অথবা USB-A থেকে USB-C এডাপ্টার - উইও টার্মিনালে একটি ইউএসবি-সি পোর্ট রয়েছে এবং এটিতে ইউএসবি-সি থেকে ইউএসবি-এ ক্যাবল থাকে। যদি ব্যবহারকারীর পিসি বা ম্যাক এ কেবল ইউএসবি-সি পোর্ট থাকে তবে একটি ইউএসবি-সি বা ইউএসবি-এ থেকে ইউএসবি-সি অ্যাডাপ্টার প্রয়োজন হবে।
### আরডুইনোর সুনির্দিষ্ট সেন্সর এবং অ্যাকচুয়েটর
এগুলি Wio টার্মিনাল আরডুইনো ডিভাইসটিতে ব্যবহারের জন্য নির্দিষ্ট এবং রাস্পবেরি পাই ব্যবহারের সাথে সম্পর্কিত নয়।
* [ArduCam Mini 2MP Plus - OV2640](https://www.arducam.com/product/arducam-2mp-spi-camera-b0067-arduino/)
* [ReSpeaker 2-Mics Pi HAT](https://www.seeedstudio.com/ReSpeaker-2-Mics-Pi-HAT.html)
* [Breadboard Jumper Wires](https://www.seeedstudio.com/Breadboard-Jumper-Wire-Pack-241mm-200mm-160mm-117m-p-234.html)
* হেডফোন বা অন্য কোন স্পীকার যেটির 3.5mm জ্যাক বা JST স্পীকার রয়েছে যেমন:
* [Mono Enclosed Speaker - 2W 6 Ohm](https://www.seeedstudio.com/Mono-Enclosed-Speaker-2W-6-Ohm-p-2832.html)
* [Grove speaker plus](https://www.seeedstudio.com/Grove-Speaker-Plus-p-4592.html)
* *ঐচ্ছিক* - ১৬জিবি বা তার চেয়ে ছোট মাইক্রো এসডি কার্ড যা দ্বারা পর্যবেক্ষণের জন্য ছবি ক্যাপচার করা হবে। এছাড়াও কম্পিউটারে সরাসরি এসডি কার্ড ব্যবহারের সুযোগ না থাকলে, প্রয়োজনীয় ক্যাবল নিতে হবে। **গুরুত্বপূর্ণ নোট** - Wio টার্মিনাল কেবল 16GB পর্যন্ত এসডি কার্ডগুলিকে সাপোর্ট করে, এর চেয়ে বেশি সাইজের কার্ড ব্যবহারযোগ্য হবেনা।
## রাস্পবেরি পাই
আরডুইনো এর সব কোড পাইথন ভাষায় করা হয়। অ্যাসাইনমেন্ট সম্পন্ন করতে নিম্নলিখিত উপাদানগুলির প্রয়োজন হবে:
### রাস্পবেরি-পাই হার্ডওয়্যার
* [Raspberry Pi](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/)
> 💁 2B থেকে এর উপরের প্রতিটি ভার্সন দ্বারাই সকল এসাইনমেন্ট করা যাবে।
* মাইক্রো এসডি কার্ড - কম্পিউটারে সরাসরি এসডি কার্ড ব্যবহারের সুযোগ না থাকলে, প্রয়োজনীয় ক্যাবল নিতে হবে।
* ইউএসবি পাওয়ার সাপ্লাই - যদি রাস্পবেরি পাই 4 ব্যবহার করা হয়, তবে একটি ইউএসবি-সি পাওয়ার সাপ্লাই প্রয়োজন। আর পুরনো ডিভাইসগুলির জন্য একটি মাইক্রো-ইউএসবি পাওয়ার সাপ্লাই প্রয়োজন।
### রাস্পবেরি-পাই এর সুনির্দিষ্ট সেন্সর এবং অ্যাকচুয়েটর
এগুলি রাস্পবেরি পাই তে ব্যবহারের জন্য নির্দিষ্ট এবং আরডুইনো এর ব্যবহারের সাথে সম্পর্কিত নয়।
* [Grove Pi base hat](https://www.seeedstudio.com/Grove-Base-Hat-for-Raspberry-Pi.html)
* [Raspberry Pi Camera module](https://www.raspberrypi.org/products/camera-module-v2/)
* মাইক্রোফোন ও স্পীকার:
নিম্নের যেকোন একটি:
* যেকোন ইউএসবি স্পীকার সম্বলিত মাইক্রোফোন বা স্পীকার যেটিতে 3.5mm জ্যাক ক্যাবল দরকার হবে কিংবা HDMI অডিও আউটপুট লাগবে যদি মনিটর বা টিভির স্পীকারের সাথে যুক্ত করা হয়।
* বিল্ট-ইন মাইক্রোফোন সম্বলিত ইউএসবি হেডসেট
* [ReSpeaker 2-Mics Pi HAT](https://www.seeedstudio.com/ReSpeaker-2-Mics-Pi-HAT.html) with
* হেডফোন বা অন্য কোন স্পীকার যেটির 3.5mm জ্যাক বা JST স্পীকার রয়েছে যেমন:
* [Mono Enclosed Speaker - 2W 6 Ohm](https://www.seeedstudio.com/Mono-Enclosed-Speaker-2W-6-Ohm-p-2832.html)
* [USB Speakerphone](https://www.amazon.com/USB-Speakerphone-Conference-Business-Microphones/dp/B07Q3D7F8S/ref=sr_1_1?dchild=1&keywords=m0&qid=1614647389&sr=8-1)
* [Grove Light sensor](https://www.seeedstudio.com/Grove-Light-Sensor-v1-2-LS06-S-phototransistor.html)
* [Grove button](https://www.seeedstudio.com/Grove-Button.html)
## সেন্সর এবং অ্যাকচুয়েটর
এখানের বেশিরভাগ সেন্সর এবং অ্যাক্চুয়েটরগুলি আরডুইনো এবং রাস্পবেরি পাই উভয় ক্ষেত্রেই ব্যবহৃত হয়:
* [Grove LED](https://www.seeedstudio.com/Grove-LED-Pack-p-4364.html) x 2
* [Grove humidity and temperature sensor](https://www.seeedstudio.com/Grove-Temperature-Humidity-Sensor-DHT11.html)
* [Grove capacitive soil moisture sensor](https://www.seeedstudio.com/Grove-Capacitive-Moisture-Sensor-Corrosion-Resistant.html)
* [Grove relay](https://www.seeedstudio.com/Grove-Relay.html)
* [Grove GPS (Air530)](https://www.seeedstudio.com/Grove-GPS-Air530-p-4584.html)
* [Grove Time of flight Distance Sensor](https://www.seeedstudio.com/Grove-Time-of-Flight-Distance-Sensor-VL53L0X.html)
## ঐচ্ছিক হার্ডওয়্যার
রিলে ব্যবহার করে স্বয়ংক্রিয় পানি সরবরাহের লেসনগুলো তৈরী করা হয়েছে। বিকল্প হিসাবে, রিলেটির সাথে নীচে তালিকাভুক্ত হার্ডওয়্যার ব্যবহার করে ইউএসবি চালিত পানির পাম্প সংযুক্ত করা যাবেঃ
* [6V water pump](https://www.seeedstudio.com/6V-Mini-Water-Pump-p-1945.html)
* [USB terminal](https://www.adafruit.com/product/3628)
* সিলিকন পাইপ
* লাল এবং কালো ক্যাবল
* ছোট ফ্ল্যাট-হেড স্ক্রু ড্রাইভার
## ভার্চুয়াল হার্ডওয়্যার
ভার্চুয়াল হার্ডওয়্যার ব্যবহার করলে সেখানেই সেন্সর এবং অ্যাকচুয়েটর সিমুলেটর পাওয়া যাবে। হার্ডওয়্যার প্রাপ্যতার উপর নির্ভর করে, এটি সাধারণ ডিভাইসে যেমন ম্যাক, পিসি চালাতে পারা যাবে বা এটি রাস্পবেরি পাইতে চালানো যাবে এবং কেবল যে হার্ডওয়্যার নেই তার জন্য এটি ব্যবহার করা যাবে। উদাহরণস্বরূপ, যদি কারো কাছে রাস্পবেরি পাই ক্যামেরা থাকে কিন্তু গ্রোভ সেন্সরগুলি যদি না থাকে, তবে তার রাস্পবেরি পাইতে ভার্চুয়াল ডিভাইস কোডটি চালাতে পারবে। এতে করে গ্রোভ সেন্সরগুলি সিমুলেট করতে সক্ষম হবে আবার একটি ফিজিক্যাল ক্যামেরাও ব্যবহার করতে পারবে।
ভার্চুয়াল হার্ডওয়্যার হিসেবে আমরা [CounterFit project](https://github.com/CounterFit-IoT/CounterFit) ব্যবহার করবো।
এই পাঠগুলি সম্পূর্ণ করতে একটি ওয়েব ক্যাম, মাইক্রোফোন এবং অডিও আউটপুট যেমন স্পিকার বা হেডফোন থাকা দরকার। এগুলি বিল্ট-ইন বা বাহ্যিক হতে পারে এবং অপারেটিং সিস্টেমের সাথে কাজ করার জন্য কনফিগার করা দরকার। তবে সব অ্যাপ্লিকেশন থেকে এগুলো ব্যবহারের জন্য অনুমতি দিতে হবে।
Loading…
Cancel
Save