From e23a162c226803e7568c7d54c1ad482b5aba79f6 Mon Sep 17 00:00:00 2001 From: Jim Bennett Date: Fri, 15 Oct 2021 08:19:34 -0700 Subject: [PATCH 01/30] Update TRANSLATIONS.md --- TRANSLATIONS.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TRANSLATIONS.md b/TRANSLATIONS.md index 70171e2c..3f54b22f 100644 --- a/TRANSLATIONS.md +++ b/TRANSLATIONS.md @@ -19,6 +19,10 @@ where _[language]_ is a two letter language abbreviation following the ISO 639-1 > Important: when translating text in this repo, please ensure that you do not use machine translation. We will verify translations via the community, so please only volunteer for translations in languages where you are proficient. +## Links + +When translating, please update links to the translated files. If a file hasn't been translated, keep the link to the English version. As each file is in a `translations` folder, you will also need to update the link depth for hyperlinks and images. + ## Quizzes Add your translation to the quiz-app by adding a file here: https://github.com/microsoft/IoT-For-Beginners/tree/main/quiz-app/src/assets/translations. Please don't localize the words 'true' or 'false' however. thanks! From d58b9eaff117f8c22b490e2e129349eb9c85a069 Mon Sep 17 00:00:00 2001 From: emilyf11 <89915168+emilyf11@users.noreply.github.com> Date: Mon, 18 Oct 2021 13:51:30 -0500 Subject: [PATCH 02/30] know to known (#333) * Lesson 18 that to than - in Introduction * change my to by * know as to known as Co-authored-by: Jim Bennett --- 6-consumer/lessons/4-multiple-language-support/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/6-consumer/lessons/4-multiple-language-support/README.md b/6-consumer/lessons/4-multiple-language-support/README.md index bc0302b7..ee273f8a 100644 --- a/6-consumer/lessons/4-multiple-language-support/README.md +++ b/6-consumer/lessons/4-multiple-language-support/README.md @@ -42,7 +42,7 @@ Text translation has been a computer science problem that has been researched fo Text translation started out as a technology known as Machine Translation (MT), that can translate between different language pairs. MT works by substituting words in one language with another, adding techniques to select the correct ways of translating phrases or parts of sentences when a simple word-for-word translation doesn't make sense. -> 🎓 When translators support translating between one language and another, these are know as *language pairs*. Different tools support different language pairs, and these may not be complete. For example, a translator may support English to Spanish as a language pair, and Spanish to Italian as a language pair, but not English to Italian. +> 🎓 When translators support translating between one language and another, these are known as *language pairs*. Different tools support different language pairs, and these may not be complete. For example, a translator may support English to Spanish as a language pair, and Spanish to Italian as a language pair, but not English to Italian. For example, translating "Hello world" from English into French can be performed with a substitution - "Bonjour" for "Hello", and "le monde" for "world", leading to the correct translation of "Bonjour le monde". From 708f64aa6392e64d2a07e59e090b9e796e104826 Mon Sep 17 00:00:00 2001 From: Jiyeon Seo Date: Tue, 19 Oct 2021 03:53:01 +0900 Subject: [PATCH 03/30] fix a broken link (#331) Co-authored-by: USER Co-authored-by: Jim Bennett --- 6-consumer/lessons/2-language-understanding/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/6-consumer/lessons/2-language-understanding/README.md b/6-consumer/lessons/2-language-understanding/README.md index 0004c934..53be2c10 100644 --- a/6-consumer/lessons/2-language-understanding/README.md +++ b/6-consumer/lessons/2-language-understanding/README.md @@ -19,7 +19,7 @@ In this lesson you will learn about language understanding models, how to create In this lesson we'll cover: * [Language understanding](#language-understanding) -* [Create a language understanding model](create-a-language-understanding-model) +* [Create a language understanding model](#create-a-language-understanding-model) * [Intents and entities](#intents-and-entities) * [Use the language understanding model](#use-the-language-understanding-model) From 698e582d4779158db303cef78ff0c674110cf066 Mon Sep 17 00:00:00 2001 From: "Mohammad Iftekher (Iftu) Ebne Jalal" Date: Tue, 19 Oct 2021 00:54:46 +0600 Subject: [PATCH 04/30] Reflecting changes from English Version (#330) Co-authored-by: Jim Bennett --- translations/README.bn.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/translations/README.bn.md b/translations/README.bn.md index 535547b4..3ce2f415 100644 --- a/translations/README.bn.md +++ b/translations/README.bn.md @@ -9,8 +9,10 @@ [![GitHub stars](https://img.shields.io/github/stars/microsoft/IoT-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/IoT-For-Beginners/stargazers/) [![English](https://img.shields.io/badge/-English-red)](../README.md) -[![Chinese](https://img.shields.io/badge/-Chinese-yellow)](README.zh-cn.md) -[![Turkish](https://img.shields.io/badge/-Turkish-darkgreen)](README.tr.md) +[![Chinese](https://img.shields.io/badge/-Chinese-yellow)](translations/README.zh-cn.md) +[![Turkish](https://img.shields.io/badge/-Turkish-darkgreen)](translations/README.tr.md) +[![French](https://img.shields.io/badge/-French-purple)](translations/README.fr.md) + # āĻŦāĻŋāĻ—āĻŋāύāĻžāϰāĻĻ⧇āϰ āϜāĻ¨ā§āϝ āφāχāĻ“āϟāĻŋ - āĻāĻ•āϟāĻŋ āϏ⧁āĻŦāĻŋāĻ¨ā§āϝāĻ¸ā§āϤ āĻĒāĻžāĻ ā§āϝāĻ•ā§āϰāĻŽ @@ -24,7 +26,7 @@ **āĻšā§ƒāĻĻā§Ÿā§‡āϰ āĻ…āĻ¨ā§āϤāσāĻ¸ā§āĻĨāϞ āĻĨ⧇āϕ⧇ āĻ•ā§ƒāϤāĻœā§āĻžāϤāĻž āϜāĻžāύāĻžāχ āĻāχ āϕ⧋āĻ°ā§āϏ⧇āϰ āϰāϚ⧟āĻŋāϤāĻž [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/).** +**āϧāĻ¨ā§āϝāĻŦāĻžāĻĻ āϜāĻžāύāĻžāϤ⧇ āϚāĻžāχ āφāĻŽāĻžāĻĻ⧇āϰ āϏ⧇āϏāĻ•āϞ [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),[Mohammad Zulfikar](https://github.com/mohzulfikar), [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/).** āĻĒ⧁āϰ⧋ āĻŸā§€āĻŽā§‡āϰ āϏāĻžāĻĨ⧇ āĻĒāϰāĻŋāϚāĻŋāϤ āĻšāĻ“ā§ŸāĻž āϝāĻžāĻ• ! @@ -89,9 +91,9 @@ | 12 | [āĻĒāϰāĻŋāĻŦāĻšāύ](../3-transport) | āϞ⧋āϕ⧇āĻļāύ āĻĄā§‡āϟāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ | āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϏāĻŽā§Ÿā§‡ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ āĻŦāĻž āϚāĻŋāĻ¤ā§āϰāĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻĄā§‡āϟāĻž āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ (Visualization) āĻāϰ āϜāĻ¨ā§āϝ āφāχāĻ“āϟāĻŋ āĻĄā§‡āϟāĻž āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ¸ā§āĻŸā§‹āϰ āĻ•āϰāĻž āϝāĻžā§Ÿ āϤāĻž āϜāĻžāύāĻž | [āϞ⧋āϕ⧇āĻļāύ āĻĄā§‡āϟāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ](../3-transport/lessons/2-store-location-data/translations/README.bn.md) | | 13 | [āĻĒāϰāĻŋāĻŦāĻšāύ](../3-transport) | āϞ⧋āϕ⧇āĻļāύ āĻĄā§‡āϟāĻž āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ |āĻŽāĻžāύāϚāĻŋāĻ¤ā§āϰ⧇ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ⧇āϰ āĻĄā§‡āϟāĻž āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āϰāĻž āĻāĻŦāĻ‚ āĻŽāĻžāύāϚāĻŋāĻ¤ā§āϰāϗ⧁āϞāĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ ⧍āϟāĻŋ āĻŽāĻžāĻ¤ā§āϰāĻžāϝāĻŧ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻ¤ā§āϰāĻŋāĻŽāĻžāĻ¤ā§āϰāĻŋāĻ• āĻŦāĻŋāĻļā§āĻŦ⧇āϰ āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧇ āϏ⧇ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻœā§āĻžāĻžāύ āĻ…āĻ°ā§āϜāύ | [āϞ⧋āϕ⧇āĻļāύ āĻĄā§‡āϟāĻž āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ](../3-transport/lessons/3-visualize-location-data/translations/README.bn.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) | +| 15 | [āĻ‰ā§ŽāĻĒāĻžāĻĻāύ](../4-manufacturing) | āĻ–āĻžāĻĻā§āϝāĻĒāĻŖā§āϝ⧇āϰ āϗ⧁āĻŖāĻŽāĻžāύ āϏāύāĻžāĻ•ā§āϤāĻ•āĻžāϰ⧀ āĻŽāĻĄā§‡āϞāϕ⧇ āĻŸā§āϰ⧇āύāĻŋāĻ‚ āĻĒā§āϰāĻĻāĻžāύ | āĻ•ā§āϞāĻžāωāĻĄā§‡āϰ āĻ›āĻŦāĻŋ āĻļā§āϰ⧇āĻŖāĻŋāĻŦāĻĻā§āϧāĻ•āϰāĻŖ āĻŽāĻĄā§‡āϞāϕ⧇ (Image Classifier) āĻĢāϞ⧇āϰ āĻŽāĻžāύ āϏāύāĻžāĻ•ā§āϤ āĻ•āϰāϤ⧇ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻĒā§āϰāĻļāĻŋāĻ•ā§āώāĻŋāϤ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϏ⧇ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϜāĻžāύāĻž | [āĻ–āĻžāĻĻā§āϝāĻĒāĻŖā§āϝ⧇āϰ āϗ⧁āĻŖāĻŽāĻžāύ āϏāύāĻžāĻ•ā§āϤāĻ•āĻžāϰ⧀ āĻŽāĻĄā§‡āϞāϕ⧇ āĻŸā§āϰ⧇āύāĻŋāĻ‚ āĻĒā§āϰāĻĻāĻžāύ](../4-manufacturing/lessons/1-train-fruit-detector/translations/README.bn.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) | +| 17 | [āĻ‰ā§ŽāĻĒāĻžāĻĻāύ](../4-manufacturing) | Edge āĻ Fruit Detector āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻž | āĻĢāϞ⧇āϰ āϗ⧁āĻŖāĻ—āϤ āĻŽāĻžāύ āϏāύāĻžāĻ•ā§āϤāĻ•āĻžāϰ⧀āϕ⧇ Edge āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ | [Edge āĻ Fruit Detector āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻž](../4-manufacturing/lessons/3-run-fruit-detector-edge/translations/README.bn.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) | @@ -112,10 +114,13 @@ npm i npm run convert ``` +### āĻ¸ā§āϞāĻžāχāĻĄ + +āĻ•āĻŋāϛ⧁ āĻ•āĻŋāϛ⧁ āϞ⧇āϏāύ⧇āϰ āĻ¸ā§āϞāĻžāχāĻĄ āĻĄā§‡āĻ•, āĻāĻ–āĻžāύ⧇ [slides](./slides) āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇ āĻ°ā§Ÿā§‡āϛ⧇āĨ¤ ## āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻĒā§āĻ°ā§Ÿā§‹āϜāύ! -āĻ…āύ⧁āĻŦāĻžāĻĻ⧇āϰ āĻ•āĻžāϜ āĻ•āϰ⧇ āĻāχ āĻ•āĻžāϰāĻŋāĻ•ā§āϝ⧁āϞāĻžāĻŽā§‡ āĻ…āĻŦāĻĻāĻžāύ āĻ•āϰāϤ⧇ āϚāĻžāύ? āϤāĻžāĻšāϞ⧇ āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āφāĻŽāĻžāĻĻ⧇āϰ [āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ—āĻžāχāĻĄāϞāĻžāχāύ](translations/TRANSLATIONS.bn.md) āĻĒā§œā§‡ , āϝ⧇āϕ⧋āύ āĻāĻ•āϟāĻŋ [Translation Issue](https://github.com/microsoft/IoT-For-Beginners/issues?q=is%3Aissue+is%3Aopen+label%3Atranslation) āĻ āχāύāĻĒ⧁āϟ āĻĻā§‡ā§ŸāĻžāϰ āĻ…āύ⧁āϰ⧋āϧ āĻ•āϰāĻž āĻšāϞ⧋āĨ¤ āϝāĻĻāĻŋ āϕ⧋āύ āύāϤ⧁āύ āĻ­āĻžāώāĻžāϝāĻŧ āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ•āϰāϤ⧇ āϕ⧇āω āφāĻ—ā§āϰāĻšā§€ āĻšā§Ÿ, āϤāĻŦ⧇ āĻŸā§āĻ°ā§āϝāĻžāĻ•āĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āĻĻāϝāĻŧāĻž āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ Issue āϏāĻžāĻŦāĻŽāĻŋāϟ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ +āĻ…āύ⧁āĻŦāĻžāĻĻ⧇āϰ āĻ•āĻžāϜ āĻ•āϰ⧇ āĻāχ āĻ•āĻžāϰāĻŋāĻ•ā§āϝ⧁āϞāĻžāĻŽā§‡ āĻ…āĻŦāĻĻāĻžāύ āĻ•āϰāϤ⧇ āϚāĻžāύ? āϤāĻžāĻšāϞ⧇ āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āφāĻŽāĻžāĻĻ⧇āϰ [āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ—āĻžāχāĻĄāϞāĻžāχāύ](TRANSLATIONS.md) āĻĒā§œā§‡ , āϝ⧇āϕ⧋āύ āĻāĻ•āϟāĻŋ [Translation Issue](https://github.com/microsoft/IoT-For-Beginners/issues?q=is%3Aissue+is%3Aopen+label%3Atranslation) āĻ āχāύāĻĒ⧁āϟ āĻĻā§‡ā§ŸāĻžāϰ āĻ…āύ⧁āϰ⧋āϧ āĻ•āϰāĻž āĻšāϞ⧋āĨ¤ āϝāĻĻāĻŋ āϕ⧋āύ āύāϤ⧁āύ āĻ­āĻžāώāĻžāϝāĻŧ āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ•āϰāϤ⧇ āϕ⧇āω āφāĻ—ā§āϰāĻšā§€ āĻšā§Ÿ, āϤāĻŦ⧇ āĻŸā§āĻ°ā§āϝāĻžāĻ•āĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āĻĻāϝāĻŧāĻž āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ Issue āϏāĻžāĻŦāĻŽāĻŋāϟ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ ## āĻ…āĻ¨ā§āϝ āĻĒāĻžāĻ ā§āϝāĻ•ā§āϰāĻŽ āϏāĻŽā§‚āĻš @@ -123,6 +128,7 @@ npm run convert - [Web Dev for Beginners](https://aka.ms/webdev-beginners) - [ML for Beginners](https://aka.ms/ml-beginners) +- [Data Science for Beginners](https://aka.ms/datascience-beginners) ## āϚāĻŋāĻ¤ā§āϰ⧇āϰ Attributions From af65af95b217697c2aae1fddb2d3ec77f723bc38 Mon Sep 17 00:00:00 2001 From: Mirza Nihal Baig <53098259+nihalbaig0@users.noreply.github.com> Date: Tue, 19 Oct 2021 21:19:20 +0600 Subject: [PATCH 05/30] [BN Translation] Check Fruit from Device (#332) * [BN Translation] Check Fruit from Device * deleted dummy.md * check fruit from device changed based on review * removed the english sentence that was translated Co-authored-by: Jim Bennett --- .../translations/.dummy.md | 9 - .../translations/README.bn.md | 208 ++++++++++++++++++ 2 files changed, 208 insertions(+), 9 deletions(-) delete mode 100644 4-manufacturing/lessons/2-check-fruit-from-device/translations/.dummy.md create mode 100644 4-manufacturing/lessons/2-check-fruit-from-device/translations/README.bn.md diff --git a/4-manufacturing/lessons/2-check-fruit-from-device/translations/.dummy.md b/4-manufacturing/lessons/2-check-fruit-from-device/translations/.dummy.md deleted file mode 100644 index 6e7db247..00000000 --- a/4-manufacturing/lessons/2-check-fruit-from-device/translations/.dummy.md +++ /dev/null @@ -1,9 +0,0 @@ -# Dummy File - -This file acts as a placeholder for the `translations` folder.
-**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! diff --git a/4-manufacturing/lessons/2-check-fruit-from-device/translations/README.bn.md b/4-manufacturing/lessons/2-check-fruit-from-device/translations/README.bn.md new file mode 100644 index 00000000..bfa11bdf --- /dev/null +++ b/4-manufacturing/lessons/2-check-fruit-from-device/translations/README.bn.md @@ -0,0 +1,208 @@ +# IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĢāϞ āĻāϰ āĻŽāĻžāύ āϝāĻžāϚāĻžāχ + +![A sketchnote overview of this lesson](../../../../sketchnotes/lesson-16.jpg) + +> āĻ¸ā§āϕ⧇āϚāύ⧋āϟāϟāĻŋ āϤ⧈āϰ⧀ āĻ•āϰ⧇āϛ⧇āύ [Nitya Narasimhan](https://github.com/nitya)āĨ¤ āĻŦ⧜ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻĻ⧇āĻ–āĻžāϰ āϜāĻ¨ā§āϝ āĻ›āĻŦāĻŋāϟāĻŋāϤ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ + +## āϞ⧇āĻ•āϚāĻžāϰ-āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āϕ⧁āχāϜ + +[āϞ⧇āĻ•āϚāĻžāϰ-āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āϕ⧁āχāϜ](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/31) + +## āϏ⧂āϚāύāĻž + +āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āϞ⧇āϏāύ āĻ āφāĻŽāϰāĻž āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ āύāĻŋā§Ÿā§‡ āϜāĻžāύāϞāĻžāĻŽ, āĻāĻŦāĻ‚ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āϤāĻžāĻĻ⧇āϰ train āĻ•āϰāĻž āϝāĻžā§Ÿ āĻ­āĻžāϞ āĻāĻŦāĻ‚ āĻ–āĻžāϰāĻžāĻĒ āĻĢāϞ āϏāύāĻžāĻ•ā§āϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝāĨ¤ āĻāχ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ āϟāĻžāϕ⧇ IoT āĻāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āφāĻŽāĻžāĻĻ⧇āϰāϕ⧇ āϕ⧋āύ⧋ āϧāϰāύ⧇āϰ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻĻāĻŋā§Ÿā§‡ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āĻāχ āχāĻŽā§‡āϜ āϟāĻžāϕ⧇ āĻ•ā§āϞāĻžāωāĻĄ āĻ āĻĒāĻžāĻ āĻžāϤ⧇ āĻšāĻŦ⧇āĨ¤ + + +āĻāχ āϞ⧇āϏāύ āĻ āφāĻŽāϰāĻž āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ āύāĻŋā§Ÿā§‡ āϜāĻžāύāĻŦā§‹ , āĻāĻŦāĻ‚ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻāϗ⧁āϞ⧋āϕ⧇ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϰ āϏāĻžāĻĨ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāϤ⧇ āĻšā§ŸāĨ¤ āφāĻŽāϰāĻž āφāϰ⧋ āϜāĻžāύāĻŦā§‹ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰāϟāĻžāϕ⧇ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āĻ•āϞ āĻ•āϰāϤ⧇ āĻšā§ŸāĨ¤ + +āĻāχ āϞ⧇āϏāύ āĻ āφāĻŽāϰāĻž āĻ•āĻ­āĻžāϰ āĻ•āϰāĻŦā§‹āσ + +* [āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ](#āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž-āϏ⧇āĻ¨ā§āϏāϰ) +* [IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻž](#IoT-āĻĄāĻŋāĻ­āĻžāχāϏ-āĻŦā§āϝāĻžāĻŦāĻšāĻžāϰ-āĻ•āϰ⧇-āĻāĻ•āϟāĻŋ-āχāĻŽā§‡āϜ-āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ-āĻ•āϰāĻž) +* [āφāĻŽāĻžāĻĻ⧇āϰ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāĻŋ](#āφāĻŽāĻžāĻĻ⧇āϰ-āχāĻŽā§‡āϜ-āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ-āĻĒāĻžāĻŦāϞāĻŋāĻļ-āĻ•āϰāĻŋ) +* [IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāχ āĻ•āϰāĻž](#IoT-āĻĄāĻŋāĻ­āĻžāχāϏ-āĻĨ⧇āϕ⧇-āχāĻŽā§‡āϜ-āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāχ-āĻ•āϰāĻž) +* [Model āωāĻ¨ā§āύāϤ āĻ•āϰāĻž](#Model-āωāĻ¨ā§āύāϤ-āĻ•āϰāĻž) + + + +## āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ + +āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ, āϤāĻžāϰ āύāĻžāĻŽā§‡āϰ āĻŽāϤāχ āĻāĻŽāύ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϝāĻž IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāύ⧇āĻ•ā§āϟ āĻ•āϰāĻž āϝāĻžā§ŸāĨ¤ āĻāϗ⧁āϞ⧋ āĻ¸ā§āĻĨāĻŋāϰāϚāĻŋāĻ¤ā§āϰ āĻ…āĻĨāĻŦāĻž āĻ¸ā§āĻŸā§āϰāĻŋāĻŽāĻŋāĻ‚ āĻ­āĻŋāĻĄāĻŋāĻ“ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇, āĻ•āĻŋāϛ⧁ āĻĄāĻŋāĻ­āĻžāχāϏ āϗ⧁āϞ⧋ āĻŽā§‚āϞ āχāĻŽā§‡āϜ āĻĄāĻžāϟāĻž āĻĢ⧇āϰāϤ āĻĒāĻžāĻ āĻžāχ , āĻŦāĻžāĻ•āĻŋ āϗ⧁āϞ⧋ āχāĻŽā§‡āϜ āĻĄāĻžāϟāĻž āĻ•āĻŽāĻĒā§āϰ⧇āϏ āĻ•āϰ⧇ JPEG āĻ…āĻĨāĻŦāĻž PNG āϟāĻžāχāĻĒ āĻāϰ āχāĻŽā§‡āϜ āĻĢāĻžāχāϞ āĻŦāĻžāύāĻžāĻŦ⧇āĨ¤ āϏāĻžāϧāĻžāϰāĻŖāϤ āϝ⧇ āĻ•āĻžāĻŽā§‡āϰāĻž āϗ⧁āϞ⧋ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āϗ⧁āϞ⧋āϰ āϏāĻžāĻĨ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšā§Ÿ āφāĻŽāϰāĻž āϝ⧇āϗ⧁āϞ⧋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…āĻ­ā§āϝāĻ¸ā§āϤ āϏ⧇āϗ⧁āϞ⧋ āĻĨ⧇āϕ⧇ āĻ…āύ⧇āĻ• āϛ⧋āϟ āϏāĻžāχāϜ āĻāϰ āĻāĻŦāĻ‚ āĻ•āĻŽ āϰ⧇āĻœā§‹āϞāĻŋāωāĻļāĻžāύ āĻāϰ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻŽāϰāĻž āĻšāĻžāχ āϰ⧇āĻœā§‹āϞāĻŋāωāĻļāĻžāύ āĻāϰ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āύāĻŋāϤ⧇ āĻĒāĻžāϰāĻŋ āϝ⧇āϗ⧁āϞ⧋ āφāϧ⧁āύāĻŋāĻ• āĻĢā§‹āύ āϗ⧁āϞāĻžāϰ āϏāĻžāĻĨ⧇ āĻŸā§‡āĻ•ā§āĻ•āĻž āĻĻā§‡ā§ŸāĨ¤ āφāĻŽāϰāĻž āϏāĻŦ āϧāϰāύ⧇āϰ āχāĻ¨ā§āϟāĻžāϰāĻšā§‡āĻžā§āĻœā§‡āĻŦāϞ āϞ⧇āĻ¨ā§āϏ , āĻ•ā§Ÿā§‡āĻ•āϟāĻž āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āϟāĻžāĻĒ , āχāύāĻĢā§āϰāĻžāϰ⧇āĻĄ āĻĨāĻžāĻ°ā§āĻŽāĻžāϞ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻ…āĻĨāĻŦāĻž āχāωāĻ­āĻŋ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āύāĻŋāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ + +![The light from a scene passes through a lens and is focused on a CMOS sensor](../../../../images/cmos-sensor.png) + + +āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ āχāĻŽā§‡āϜ āϏ⧇āĻ¨ā§āϏāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻĒā§āϰāĻ¤ā§āϝ⧇āĻ• āĻĒāĻŋāĻ•ā§āϏ⧇āϞ āĻšāϞ āĻĢāĻŸā§‹āĻĄāĻžā§Ÿā§‹āĻĄāĨ¤ āĻāĻ•āϟāĻž āϞ⧇āĻ¨ā§āϏ āχāĻŽā§‡āϜ āϏ⧇āĻ¨ā§āϏāϰ āĻāϰ āωāĻĒāϰ āχāĻŽā§‡āϜ āϟāĻžāϕ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻšāĻžāϜāĻžāϰ āĻ…āĻĨāĻŦāĻž āϞāĻ•ā§āώ āϞāĻ•ā§āώ āĻĢāĻŸā§‹āĻĄāĻžā§Ÿā§‹āĻĄāĨ¤ āĻĒā§āϰāĻ¤ā§āϝ⧇āϕ⧇āϰ āωāĻĒāϰ āĻĒāϰāĻž āφāϞ⧋ āĻĄāĻŋāĻŸā§‡āĻ•ā§āϟ āĻ•āϰ⧇ , āĻāĻŦāĻ‚ āĻĒāĻŋāĻ•ā§āϏ⧇āϞ āĻĄāĻžāϟāĻž āĻšāĻŋāϏāĻžāĻŦ⧇ āϰ⧇āĻ•āĻ°ā§āĻĄ āĻ•āϰ⧇āĨ¤ + + + +> 💁 āϞ⧇āĻ¨ā§āϏ āχāĻŽā§‡āϜ āϕ⧇ āωāĻ˛ā§āϟāĻžā§Ÿ, āĻĒāϰ⧇ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ āφāĻŦāĻžāϰ āĻ āĻŋāĻ• āĻ­āĻžāĻŦ⧇ āχāĻŽā§‡āϜ āϟāĻžāϕ⧇ āωāĻ˛ā§āϟāĻžā§ŸāĨ¤ āĻ āĻŋāĻ• āĻāĻ•āχ āϰāĻ•āĻŽ āφāĻŽāĻžāĻĻ⧇āϰ āĻšā§‹āϖ⧇ āĻšā§Ÿ - āφāĻŽāϰāĻž āϝāĻž āĻĻ⧇āĻ–āĻŋ āϤāĻž āĻšā§‹āϖ⧇āϰ āĻĒāĻŋāĻ›āύ⧇ +āωāĻ˛ā§āĻŸā§‹ āĻ­āĻžāĻŦ⧇ āĻĄāĻŋāĻŸā§‡āĻ•ā§āϟ āĻ•āϰ⧇ āĻāĻŦ⧁āĻ‚ āĻŦā§āϰ⧇āύ āϏ⧇āϟāĻžāϕ⧇ āĻ āĻŋāĻ• āĻ•āϰ⧇āĨ¤ + + + +> 🎓 āχāĻŽā§‡āϜ āϏ⧇āĻ¨ā§āϏāϰāϟāĻž āĻāĻ•āϟāĻŋāĻ­-āĻĒāĻŋāĻ•ā§āϏ⧇āϞ āϏ⧇āĻ¨ā§āϏāϰ (APS) āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĒāϰāĻŋāϚāĻŋāϤ, āĻāĻŦāĻ‚ āϏāĻŦāĻšā§‡ā§Ÿā§‡ āϜāύāĻĒā§āϰāĻŋāϝāĻŧ āϟāĻžāχāĻĒ āĻāϰ APS āĻšāϞ āĻ•āĻŽāĻĒā§āϞāĻŋāĻŽā§‡āĻ¨ā§āϟāĻžāϰāĻŋ āĻŽā§‡āϟāĻžāϞ-āĻ…āĻ•ā§āϏāĻžāχāĻĄ āϏ⧇āĻŽāĻŋāĻ•āĻ¨ā§āĻĄāĻžāĻ•ā§āϟāϰ āϏ⧇āĻ¨ā§āϏāϰ, āĻ…āĻĨāĻŦāĻž CMOSāĨ¤ āφāĻŽāϰāĻž āĻļ⧁āύ⧇ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰāĻŋ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ āĻ CMOS āϏ⧇āĻ¨ā§āϏāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ āϟāĻžāĻ°ā§āĻŽ āϟāĻžāĨ¤ + + + + +āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ āĻšāϞ āĻĄāĻŋāϜāĻŋāϟāĻžāϞ āϏ⧇āĻ¨ā§āϏāϰ , āχāĻŽā§‡āϜ āĻĄāĻžāϟāĻž āϕ⧇ āĻĄāĻŋāϜāĻŋāϟāĻžāϞ āĻĄāĻžāϟāĻž āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĒāĻžāĻ āĻžā§Ÿ, āϏāĻžāϧāĻžāϰāĻŖāϤ āϝ⧇ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āĻ•āĻŽāĻŋāωāύāĻŋāϕ⧇āĻļāύ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇ āϤāĻžāϰ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āύāĻŋā§Ÿā§‡, āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϗ⧁āϞ⧋ āĻ•āĻžāύ⧇āĻ•ā§āϟ āĻ•āϰ⧇ SPI āĻāϰ āĻŽāϤ āĻĒā§āϰ⧋āϟāĻ•āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϝāĻž āϤāĻžāĻĻ⧇āϰ āĻŦ⧜ āĻĒāϰāĻŋāĻŽāĻžāϪ⧇ āĻĄāĻžāϟāĻž āĻĒāĻžāĻ āĻžāϤ⧇ āĻ…āύ⧁āĻŽā§‹āĻĻāύ āĻĻā§‡ā§Ÿ - āχāĻŽā§‡āϜ āϗ⧁āϞ⧋ temperature āϏ⧇āĻ¨ā§āϏāϰ āĻāϰ āĻŽāϤ āϏ⧇āĻ¨ā§āϏāϰ āĻĨ⧇āϕ⧇ āĻĒāĻžāĻ“ā§ŸāĻž āϏāĻŋāĻ‚āϗ⧇āϞ āύāĻžāĻŽā§āĻŦāĻžāϰ āĻĨ⧇āϕ⧇ āϝāĻĨ⧇āĻˇā§āϟ āĻĒāϰāĻŋāĻŽāĻžāϪ⧇ āĻŦ⧜āĨ¤ + + +✅ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āϗ⧁āϞ⧋āϰ āχāĻŽā§‡āϜ āϏāĻžāχāϜ āĻāϰ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āĻ•āĻŋ āĻ•āĻŋ? āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻžāϗ⧁āϞ⧋ āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰāĻŋ āĻŦāĻŋāĻļ⧇āώ āĻ•āϰ⧇ āĻŽāĻžāχāĻ•ā§āϰ⧋āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞāĻžāϰ āĻšāĻžāĻ°ā§āĻĄāĻ“ā§ŸāĻžāϰ āĻāϰ āωāĻĒāϰāĨ¤ + + + +## IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻž + +āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻāĻŦ⧁āĻ‚ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāχ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ + +### āĻ•āĻžāϜ - IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻž + +āύāĻŋāĻŽā§āύ⧇āϰ āϕ⧋āύ āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻžāϏāĻ™ā§āĻ—āĻŋāĻ• āĻ—āĻžāχāĻĄ āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻŋāσ + + +* [Arduino - Wio Terminal](wio-terminal-camera.md) +* [Single-board computer - Raspberry Pi](pi-camera.md) +* [Single-board computer - Virtual device](virtual-device-camera.md) + + + +## āφāĻŽāĻžāĻĻ⧇āϰ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāĻŋ + +āφāĻŽāϰāĻž āĻļ⧇āώ āϞ⧇āϏāύ āĻ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ āĻŸā§āϰ⧇āύ āĻ•āϰ⧇āĻ›āĻŋāϞāĻžāĻŽāĨ¤ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϟāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āφāϗ⧇, āφāĻŽāĻžāĻĻ⧇āϰ model āϤāĻž āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ + + +### Model Iteration + +āϝāĻ–āύ āφāĻŽāĻžāĻĻ⧇āϰ model āĻļ⧇āώ āϞ⧇āϏāύ āĻ āĻŸā§āϰ⧇āύ āĻšāĻšā§āĻ›āĻŋāϞ⧋, āφāĻŽāϰāĻž āĻšā§ŸāϤ āĻ–ā§‡ā§ŸāĻžāϞ āĻ•āϰāĻ›āĻŋāϞāĻžāĻŽ āϝ⧇ **Performance** āĻŸā§āϝāĻžāĻŦ āϏāĻžāχāĻĄ āĻ Iterationāϗ⧁āϞ⧋ āĻĻ⧇āĻ–āĻžāϝāĻŧāĨ¤ āϝāĻ–āύ āφāĻŽāϰāĻž āĻĒā§āϰāĻĨāĻŽ model āϟāĻž āĻŸā§āϰ⧇āύ āĻ•āϰāĻŋ āϤāĻ–āύ āφāĻŽāϰāĻž āĻĻ⧇āϖ⧇ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰāĻŋ *Iteration 1* āĻŸā§āϰ⧇āχāύāĻŋāĻ‚ āĻāĨ¤ āϝāĻ–āύ āφāĻŽāϰāĻž model āϟāĻžāϕ⧇ āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āχāĻŽā§‡āϜ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āφāϰ⧋ āωāĻ¨ā§āύāϤ āĻ•āϰāĻŋ, āϤāĻ–āύ āφāĻŽāϰāĻž āĻĻ⧇āϖ⧇ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰāĻŋ *Iteration 2* āĻŸā§āϰ⧇āχāύāĻŋāĻ‚ āĻāĨ¤ + +āĻĒā§āϰāϤ⧇āĻ•āĻŦāĻžāϰ āφāĻŽāϰāĻž āϝāĻ–āύ model āϟāĻžāϕ⧇ āĻŸā§āϰ⧇āχāύ āĻ•āϰāĻŋ, āφāĻŽāϰāĻž āύāϤ⧁āύ Iteration āĻĒāĻžāχāĨ¤ āĻāĻ­āĻžāĻŦ⧇ āφāĻŽāϰāĻž āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻĄāĻžāϟāĻžāϏ⧇āϟ āĻāϰ āωāĻĒāϰ āĻŸā§āϰ⧇āχāύ āĻ•āϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ model āĻāϰ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ­āĻžāĻ°ā§āϏāύ āĻŸā§āĻ°ā§āϝāĻžāĻ• āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ āϝāĻ–āύ āφāĻŽāϰāĻž **Quick Test** āĻ•āϰāĻŋ, āĻāĻ–āĻžāύ⧇ āφāĻŽāϰāĻž Iteration āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻžāϰ āĻāĻ•āϟāĻŋ āĻĄā§āϰāĻĒāĻĄāĻžāωāύ āĻŽā§‡āύ⧁ āĻĒāĻžāχ, āϝ⧇āύ āφāĻŽāϰāĻž āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ Iteration āĻāϰ āϰ⧇āϜāĻžāĻ˛ā§āϟ āϤ⧁āϞāύāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ + +āϝāĻ–āύ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ Iteration āύāĻŋā§Ÿā§‡ āϏāĻ¨ā§āϤ⧁āĻˇā§āϟ āĻšāχ, āφāĻŽāϰāĻž āĻāϟāĻžāϕ⧇ āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ āĻāĻ•ā§āϏāϟāĻžāĻ°ā§āύāĻžāϞ āĻāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻĨ⧇āϕ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āϏāĻšāϜāϞāĻ­ā§āϝ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝāĨ¤ āĻāĻ­āĻžāĻŦ⧇ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻĄāĻŋāĻ­āĻžāχāϏ āĻĻāĻŋā§Ÿā§‡ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻāĻ•āϟāĻŋ āĻĒāĻžāĻŦāϞāĻŋāĻ• āĻ­āĻžāĻ°ā§āϏāύ āĻĒ⧇āϤ⧇ āĻĒāĻžāϰāĻŋ, āĻĒāϰ⧇ āφāϰ⧋ āύāϤ⧁āύ āĻ•āĻŋāϛ⧁ Iteration āĻāϰ āωāĻĒāϰ āύāϤ⧁āύ āĻ­āĻžāĻ°ā§āϏāύ āύāĻŋā§Ÿā§‡ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ, āĻĒāϰ⧇ āϝāĻ–āύ āφāĻŽāϰāĻž āĻāϟāĻž āύāĻŋā§Ÿā§‡ āϏāĻ¨ā§āϤ⧁āĻˇā§āϟ āĻšāĻŦ āϤāĻ–āύ āĻāϟāĻž āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ + + + + +### āĻ•āĻžāϜ - Iteration āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāĻž + + +Iteration āĻšāϞ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāϏāύ āĻĒā§‹āĻ°ā§āϟāĻžāϞ āĨ¤ + + + +1. [CustomVision.ai](https://customvision.ai) āϤ⧇ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāϏāύ āĻĒā§‹āĻ°ā§āϟāĻžāϞ āϞāĻžā§āϚ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āϏāĻžāχāύ āχāύ āĻ•āϰāĻŋ āϝāĻĻāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻāϟāĻž āϖ⧁āϞ⧇ āύāĻž āĻĨāĻžāĻ•āĻŋāĨ¤ āĻĒāϰ⧇ āφāĻŽāĻžāĻĻ⧇āϰ `fruit-quality-detector` āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āϟ āϖ⧁āϞāĻŋāĨ¤ + + + +1. āωāĻĒāϰ⧇āϰ āĻ…āĻĒāĻļāύ āĻĨ⧇āϕ⧇ **Performance** āĻŸā§āϝāĻžāĻŦ āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻŋāĨ¤ + + +1. āϏāĻžāχāĻĄ āĻāϰ *Iterations* āϞāĻŋāĻ¸ā§āϟ āĻĨ⧇āϕ⧇ āϏāĻ°ā§āĻŦāĻļ⧇āώ Iteration āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻŋāĨ¤ + + + + +1. Iteration āĻāϰ āϜāĻ¨ā§āϝ **Publish** āĻŦāĻžāϟāύ āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻŋāĨ¤ + + ![The publish button](../../../../images/custom-vision-publish-button.png) + + + + +1. *Publish Model* āĻĄāĻžā§ŸāϞāĻ— āĻ, *Prediction resource* āĻ āφāϗ⧇āϰ āϞ⧇āϏāύ āĻ āφāĻŽāĻžāĻĻ⧇āϰ āϤ⧈āϰāĻŋ āϰāĻŋāϏ⧋āĻ°ā§āϏ `fruit-quality-detector-prediction` āϏ⧇āϟ āĻ•āϰāĻŋāĨ¤ āύāĻžāĻŽ āĻšāĻŋāϏ⧇āĻŦ⧇ `Iteration2` āϰāĻžāĻ–āĻŋ, āĻāĻŦāĻ‚ **Publish** āĻŦāĻžāϟāύ āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻŋāĨ¤ + + +1. āĻāĻ•āĻŦāĻžāϰ āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāĻž āĻšāϞ⧇, **Prediction URL** āĻŦāĻžāϟāύ āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻŋāĨ¤ āĻāϟāĻž āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āĻāĻĒāĻŋāφāχ āĻāϰ āĻĄāĻŋāĻŸā§‡āϞāϏ āĻĻ⧇āĻ–āĻžāĻŦ⧇, āĻāĻŦāĻ‚ āφāĻŽāĻžāĻĻ⧇āϰ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ model āϕ⧇ āĻ•āϞ āĻ•āϰāϤ⧇ āĻāϗ⧁āϞ⧋ āĻĻāϰāĻ•āĻžāϰ āĻšāĻŦ⧇āĨ¤ āύāĻŋāĻšā§‡āϰ āϏ⧇āĻ•āĻļāύ āϕ⧇ *If you have an image file* āĻšāĻŋāϏ⧇āĻŦ⧇ āϞ⧇āĻŦ⧇āϞ āĻ•āϰāĻž , āĻāĻŦāĻ‚ āĻāχ āĻĄāĻŋāĻŸā§‡āχāϞ āϗ⧁āϞ⧋ āφāĻŽāϰāĻž āϚāĻžāχāĨ¤ āĻĻ⧇āĻ–āĻžāύ⧋ URL āĻāϰ āĻ•āĻĒāĻŋ āĻ•āϰāĻŋ āϝ⧇āϟāĻž āĻ•āĻŋāϛ⧁ āϟāĻž āĻāϰāĻ•āĻŽ āĻšāĻŦ⧇āσ + + ```output + https://.api.cognitive.microsoft.com/customvision/v3.0/Prediction//classify/iterations/Iteration2/image + ``` + āϝ⧇āĻ–āĻžāύ⧇ `` āĻšāĻŦ⧇ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāϏāύ āĻĒā§‹āĻ°ā§āϟāĻžāϞ āϰāĻŋāϏ⧋āĻ°ā§āϏ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϞ⧋āϕ⧇āĻļāύ, āĻāĻŦāĻ‚ `` āĻšāĻŦ⧇ āĻ…āύ⧇āĻ•āϗ⧁āϞ⧋ āϞ⧇āϟāĻžāϰ āĻāĻŦāĻ‚ āύāĻžāĻŽā§āĻŦāĻžāϰ āĻĻāĻŋā§Ÿā§‡ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āϞāĻŽā§āĻŦāĻž āφāχāĻĄāĻŋāĨ¤ + + āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ *Prediction-Key* āĻ­ā§āϝāĻžāϞ⧁ āĻāϰ āĻāĻ•āϟāĻŋ āĻ•āĻĒāĻŋ āύāĻŋāχāĨ¤ āĻāϟāĻž āĻāĻ•āϟāĻŋ āϏāĻŋāĻ•āĻŋāωāϰāĻĄ āĻ•āĻŋ āϝ⧇āϟāĻž model āϕ⧇ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ āĻĒāĻžāϏ āĻ•āϰāĻž āĻšā§ŸāĨ¤ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϝ⧇ āφāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϗ⧁āϞ⧋ āĻāχ āĻ•āĻŋ āĻĒāĻžāϏ āĻ•āϰāĻŦ⧇ āϤāĻžāĻĻ⧇āϰāϕ⧇ model āϟāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĻā§‡ā§ŸāĻž āĻšāĻŦ⧇, āĻ…āĻ¨ā§āϝ āϏāĻŦ āφāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϕ⧇ āĻĒā§āϰāĻ¤ā§āϝāĻžāĻ–ā§āϝāĻžāύ āĻšāĻŦ⧇āĨ¤ + + ![The prediction API dialog showing the URL and key](../../../../images/custom-vision-prediction-key-endpoint.png) + + + +✅ āϝāĻ–āύ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ Iteration āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāĻž āĻšā§Ÿ, āϤāĻ–āύ āĻāϟāĻžāϰ āĻ…āĻ¨ā§āϝ āύāĻžāĻŽ āĻĨāĻžāϕ⧇āĨ¤āύ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž Iteration āφāĻŽāϰāĻž āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āϝāĻžā§Ÿ āϏ⧇āϟāĻž āφāĻŽāϰāĻž āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ + +## IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāχ āĻ•āϰāĻž + +āφāĻŽāϰāĻž āĻāĻ–āύ āĻāχ āĻ•āĻžāύ⧇āĻ•āĻļāύ āĻĄāĻŋāĻŸā§‡āχāϞāϏ āϗ⧁āϞ⧋ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ āĻ•āϞ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ + +### āĻ•āĻžāϜ - āφāĻŽāĻžāĻĻ⧇āϰ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāχ āĻ•āϰāĻž + + +āĻĒā§āϰāĻžāϏāĻ™ā§āĻ—āĻŋāĻ• āĻ—āĻžāχāĻĄ āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ•āĻžāϜ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻŋāσ + +* [Arduino - Wio Terminal](wio-terminal-classify-image.md) +* [Single-board computer - Raspberry Pi/Virtual IoT device](single-board-computer-classify-image.md) + + +## Model āωāĻ¨ā§āύāϤ āĻ•āϰāĻž + + + +āφāĻŽāϰāĻž āϝ⧇āύ⧇ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰāĻŋ āϝ⧇, IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāύ⧇āĻ•ā§āĻŸā§‡āĻĄ āĻĨāĻžāĻ•āĻž āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻĨ⧇āϕ⧇ āφāĻŽāϰāĻž āφāĻļāĻžāύ⧁āϰ⧂āĻĒ āϰ⧇āϜāĻžāĻ˛ā§āϟ āύāĻžāĻ“ āĻĒ⧇āϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ āĻĨ⧇āϕ⧇ āφāĻĒāϞ⧋āĻĄ āĻ•āϰāĻž āχāĻŽā§‡āϜ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āϗ⧁āϞ⧋ āϏāĻŦāϏāĻŽā§Ÿ āϏāĻ āĻŋāĻ• āĻšā§Ÿ āύāĻžāĨ¤ āĻāϟāĻžāϰ āĻ•āĻžāϰāύ āĻšāϞ Model āϝ⧇ āĻĄāĻžāϟāĻžāϰ āωāĻĒāϰ āĻŸā§āϰ⧇āχāύ āĻ•āϰāĻž āĻšā§Ÿā§‡āϛ⧇ āϤāĻžāϰ āĻĨ⧇āϕ⧇ āĻ­āĻŋāĻ¨ā§āύ āĻĄāĻžāϟāĻž āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āĻāϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāĨ¤ + + + +āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ āĻĨ⧇āϕ⧇ āϏāĻŦāĻšā§‡ā§Ÿā§‡ āĻ­āĻžāϞ āϰ⧇āϜāĻžāĻ˛ā§āϟ āĻāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āĻāϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āχāĻŽā§‡āϜ āĻāϰ āĻŽāϤ āϝāĻĨāĻžāϏāĻŽā§āĻ­āĻŦ āĻ…āύ⧁āϰ⧂āĻĒ āχāĻŽā§‡āϜ āωāĻĒāϰ āφāĻŽāĻžāĻĻ⧇āϰ model āĻŸā§āϰ⧇āχāύ āĻ•āϰāϤ⧇ āϚāĻžāĻŦā§‹āĨ¤ āωāĻĻāĻžāĻšāϰāĻŖ āĻ¸ā§āĻŦāϰ⧂āĻĒ, āφāĻŽāϰāĻž āϝāĻĻāĻŋ āĻŸā§āϰ⧇āχāύāĻŋāĻ‚ āĻāϰ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻāϰ āϜāĻ¨ā§āϝ āĻĢā§‹āύ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋ, āϏ⧇āϟāĻžāϰ āχāĻŽā§‡āϜ āĻ•ā§‹ā§ŸāĻžāϞāĻŋāϟāĻŋ, āĻļāĻžāĻ°ā§āĻĒāύ⧇āϏ, āĻāĻŦāĻ‚ āĻ•āĻžāϞāĻžāϰ āĻāĻ•āϟ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāύ⧇āĻ•ā§āĻŸā§‡āĻĄ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻĨ⧇āϕ⧇ āĻ­āĻŋāĻ¨ā§āύ āĻšāĻŦ⧇āĨ¤ + +![2 banana pictures, a low resolution one with poor lighting from an IoT device, and a high resolution one with good lighting from a phone](../../../../images/banana-picture-compare.png) + + + +āωāĻĒāϰ⧇āϰ āχāĻŽā§‡āϜ āĻ, āĻŦāĻžāĻŽā§‡āϰ āĻ•āϞāĻžāϰ āĻ›āĻŦāĻŋ āĻāĻ•āϟāĻŋ āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻžāχ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻĨ⧇āϕ⧇ āĻ¨ā§‡ā§ŸāĻž āĻšā§Ÿā§‡āĻ›āĻŋāϞ, āĻĄāĻžāύ⧇āϰ āϟāĻž āĻāĻ•āχ āĻ•āϞāĻžāϰ āĻ›āĻŦāĻŋ āφāχāĻĢā§‹āύ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻĨ⧇āϕ⧇ āĻ¨ā§‡ā§ŸāĻž āĻšā§Ÿā§‡āĻ›āĻŋāϞāĨ¤ āĻāĻ–āĻžāύ⧇āϰ āĻ•ā§‹ā§ŸāĻžāϞāĻŋāϟāĻŋāϰ āĻĻāĻŋāĻ• āĻĨ⧇āϕ⧇ āϞāĻ•ā§āώāĻŖā§€āϝāĻŧ āĻ­āĻŋāĻ¨ā§āύāϤāĻž āφāϛ⧇ - āφāχāĻĢā§‹āύ āĻāϰ āĻ›āĻŦāĻŋ āϟāĻž āĻļāĻžāĻ°ā§āĻĒāĻžāϰ, āωāĻœā§āĻœā§āĻŦāϞ āĻ•āĻžāϞāĻžāϰ āϏāĻš āĻāĻŦāĻ‚ āĻŦ⧇āĻļāĻŋ āĻ•āĻ¨ā§āĻŸā§āϰāĻžāĻ¸ā§āϟ āĻāϰāĨ¤ + + +✅ āφāĻŽāĻžāĻĻ⧇āϰ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĻāĻŋā§Ÿā§‡ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻž āχāĻŽā§‡āϜ āĻāϰ āϭ⧁āϞ āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āĻāϰ āϜāĻ¨ā§āϝ āφāϰ āĻ•āĻŋ āĻ•āĻŋ āĻ•āĻžāϰāύ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇? āĻāĻ•āϟāĻž IoT āĻĄāĻŋāĻ­āĻžāχāϏ āϝ⧇ āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āϏ⧇āϟāĻž āύāĻŋā§Ÿā§‡ āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰāĻŋ, āĻ•āĻŋ āĻ•āĻŋ āĻĢā§āϝāĻžāĻ•ā§āϟāϰ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻž āχāĻŽā§‡āϜ āϕ⧇ āĻĒā§āϰāĻ­āĻžāĻŦāĻŋāϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ + +model āϕ⧇ āωāĻ¨ā§āύāϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻž āχāĻŽā§‡āϜ āĻĻāĻŋā§Ÿā§‡ āϰāĻŋāĻŸā§āϰ⧇āχāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ + + +--- + +### āĻ•āĻžāϜ - model āωāĻ¨ā§āύāϤ āĻ•āϰāĻž + +1. āφāĻŽāĻžāĻĻ⧇āϰ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĻāĻŋā§Ÿā§‡ āĻĒāĻžāĻ•āĻž āĻāĻŦāĻ‚ āĻ•āĻžāρāϚāĻž āĻāϰ āĻ•āĻŋāϛ⧁ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāχ āĻ•āϰāĻŋāĨ¤ + +1. āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāϏāύ āĻĒā§‹āĻ°ā§āϟāĻžāϞ āĻ, *Predictions* āĻŸā§āϝāĻžāĻŦ āĻāϰ āχāĻŽā§‡āϜ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϰāĻŋāĻŸā§āϰ⧇āχāύ āĻ•āϰāĻŋāĨ¤ + + > âš ī¸āφāĻŽāϰāĻž [āĻāχ āϏāĻŋāϰāĻŋāĻœā§‡āϰ ā§§āĻŽ āϞ⧇āϏāύ āĻĨ⧇āϕ⧇ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ retain āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āĻ°ā§Ÿā§‹āϜāĻ¨ā§€ā§Ÿ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāύāĻž](../1-train-fruit-detector/README.md#retrain-your-image-classifier) āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰāĻŋ, āϝāĻĻāĻŋ āĻĒā§āĻ°ā§Ÿā§‹āϜāύ āĻšā§ŸāĨ¤ + + +1. āϝāĻĻāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āχāĻŽā§‡āϜ āĻŸā§āϰ⧇āχāύāĻŋāĻ‚ āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āφāϏāϞ āχāĻŽā§‡āϜ āĻĨ⧇āϕ⧇ āĻĻ⧇āĻ–āϤ⧇ āĻ…āύ⧇āĻ• āĻ­āĻŋāĻ¨ā§āύ āĻšā§Ÿ, āφāĻŽāϰāĻž āφāϏāϞ āχāĻŽā§‡āϜ āϗ⧁āϞ⧋ *Training Images* āĻŸā§āϝāĻžāĻŦ āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰ⧇ āĻāĻŦāĻ‚ **Delete** āĻŦāĻžāϟāύ āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰ⧇ āĻĄāĻŋāϞāĻŋāϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ āχāĻŽā§‡āϜ āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāĻ°ā§āϏāϰ āϤāĻž āĻāϰ āωāĻĒāϰ āĻŽā§āĻ­ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āϟāĻŋāĻ• āφāϏāĻŦ⧇, āϟāĻŋāĻ• āϟāĻž āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ…āĻĨāĻŦāĻž āĻĄāĻŋāϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻŋ āχāĻŽā§‡āϜ āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ…āĻĨāĻŦāĻž āĻĄāĻŋāϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝāĨ¤ + +1. āĻāĻ•āϟāĻŋ āύāϤ⧁āύ Iteration āĻŸā§āϰ⧇āχāύ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āωāĻĒāϰ⧇āϰ āϧāĻžāĻĒ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāĻŋāĨ¤ + +1. āφāĻŽāĻžāĻĻ⧇āϰ āϕ⧋āĻĄ āĻāϰ endpoint URL āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻŋ, āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāĻĒ āϤāĻž āĻĒ⧁āύāϰāĻžā§Ÿ āϰāĻžāύ āĻ•āϰāĻŋāĨ¤ + +1. āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āĻāϰ āϰ⧇āϏāĻžāĻ˛ā§āϟ āύāĻŋā§Ÿā§‡ āϏāĻ¨ā§āϤ⧁āĻˇā§āϟ āύāĻž āĻšāĻ“ā§ŸāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻāχ āϧāĻžāĻĒ āϗ⧁āϞ⧋ Iteration āĻ•āϰāĻŋāĨ¤ + +--- + + +## 🚀 āĻšā§āϝāĻžāϞ⧇āĻžā§āϜ + +āχāĻŽā§‡āϜ āĻāϰ āϰ⧇āĻœā§‹āϞāĻŋāωāĻļāύ āĻ…āĻĨāĻŦāĻž āφāϞ⧋ āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āϕ⧇ āĻ•āϤāϟ⧁āϕ⧁ āĻĒā§āϰāĻ­āĻžāĻŦāĻŋāϤ āĻ•āϰ⧇? + +āφāĻŽāĻžāĻĻ⧇āϰ āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϰ āϕ⧋āĻĄ āĻ āχāĻŽā§‡āϜ āĻāϰ āϰ⧇āĻœā§‹āϞāĻŋāωāĻļāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āĻĻ⧇āĻ–āĻŋ āĻāϟāĻž āχāĻŽā§‡āϜ āĻāϰ āĻ•ā§‹ā§ŸāĻžāϞāĻŋāϟāĻŋ āϤ⧇ āϕ⧋āύ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āφāύ⧇ āĻ•āĻŋāύāĻžāĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āφāϞ⧋ āĻšā§‡āĻžā§āϜ āĻ•āϰ⧇āĻ“ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧇ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ + +āϝāĻĻāĻŋ āφāĻŽāϰāĻž āĻāχ āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ āĻĄāĻŋāĻ­āĻžāχāϏāϟāĻŋ āϕ⧋āύ āĻĢāĻžāĻ°ā§āĻŽ āĻ…āĻĨāĻŦāĻž āĻĢā§āϝāĻžāĻ•ā§āϟāϰāĻŋ āϤ⧇ āĻŦāĻŋāĻ•ā§āĻ°ā§Ÿā§‡āϰ āϜāĻ¨ā§āϝ āϤ⧈āϰ⧀ āĻ•āϰāĻŋ, āφāĻŽāϰāĻž āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ āϝ⧇ āĻāϟāĻž āϏāĻŦ āϏāĻŽā§Ÿ āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻ­āĻžāϞ⧋ āĻĢāϞāĻžāĻĢāϞ āĻĻāĻŋāĻŦ⧇āĨ¤ + +## ## āϞ⧇āĻ•āϚāĻžāϰ-āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϕ⧁āχāϜ + +[āϞ⧇āĻ•āϚāĻžāϰ-āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϕ⧁āχāϜ](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/32) + +## āϰāĻŋāĻ­āĻŋāω āĻ“ āĻ¸ā§āĻŦ-āĻ…āĻ§ā§āϝ⧟āύ + +āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāϏāύ āĻŽāĻĄā§‡āϞ āĻĒā§‹āĻ°ā§āϟāĻžāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻŸā§āϰ⧇āχāύ āĻ•āϰ⧇āĻ›āĻŋāĨ¤ āĻāϟāĻž āχāĻŽā§‡āϜ āĻāϰ āϏāĻšāϜāϞāĻ­ā§āϝāϤāĻžāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ - āĻāĻŦāĻ‚ āĻŦāĻžāĻ¸ā§āϤāĻŦ āϜāĻ—āϤ⧇ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϰ āϏāĻžāĻĨ⧇ āĻŽā§āϝāĻžāϚ āĻ•āϰ⧇ āĻāĻŽāύ āĻŸā§āϰ⧇āχāύāĻŋāĻ‚ āĻĄāĻžāϟāĻž āĻšā§ŸāϤ āĻĒāĻžāĻŦā§‹ āύāĻžāĨ¤ āφāĻŽāϰāĻž āĻāϟāĻžāϰ āĻŦāĻĻāϞ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āϏāϰāĻžāϏāϰāĻŋ āĻŸā§āϰ⧇āχāύāĻŋāĻ‚ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ āĻ•āϰāϤ⧇ āĻāĻĒāĻŋāφāχ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻž āχāĻŽā§‡āϜ āĻĻāĻŋā§Ÿā§‡ āĻŽāĻĄā§‡āϞ āĻŸā§āϰ⧇āχāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝāĨ¤ + +* āĻŸā§āϰ⧇āχāύāĻŋāĻ‚ āĻāĻĒāĻŋāφāχ āĻāϰ āωāĻĒāϰ āĻĒ⧜⧁āύ [using the Custom Vision SDK quick start](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/image-classification?WT.mc_id=academic-17441-jabenn&tabs=visual-studio&pivots=programming-language-python) + +## āĻāϏāĻžāχāύāĻŽā§‡āĻ¨ā§āϟ + +[āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻŋāϕ⧇āĻļāύ āϰ⧇āϜāĻžāĻ˛ā§āĻŸā§‡āϰ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋ⧟āĻž āϜāĻžāύāĻžāύ⧋](../assignment.md) From 7eb0885953bd52cc6a767f61000afd0a07c4ee9a Mon Sep 17 00:00:00 2001 From: "Mohammad Iftekher (Iftu) Ebne Jalal" Date: Tue, 19 Oct 2021 21:20:10 +0600 Subject: [PATCH 06/30] [BN Translation] Fruit Detector on Edge (#329) * Create README.bn.md * Delete .dummy.md * Update README.bn.md * Create assignment.bn.md Co-authored-by: Jim Bennett --- .../translations/.dummy.md | 9 - .../translations/README.bn.md | 615 ++++++++++++++++++ .../translations/assignment.bn.md | 14 + 3 files changed, 629 insertions(+), 9 deletions(-) delete mode 100644 4-manufacturing/lessons/3-run-fruit-detector-edge/translations/.dummy.md create mode 100644 4-manufacturing/lessons/3-run-fruit-detector-edge/translations/README.bn.md create mode 100644 4-manufacturing/lessons/3-run-fruit-detector-edge/translations/assignment.bn.md diff --git a/4-manufacturing/lessons/3-run-fruit-detector-edge/translations/.dummy.md b/4-manufacturing/lessons/3-run-fruit-detector-edge/translations/.dummy.md deleted file mode 100644 index 6e7db247..00000000 --- a/4-manufacturing/lessons/3-run-fruit-detector-edge/translations/.dummy.md +++ /dev/null @@ -1,9 +0,0 @@ -# Dummy File - -This file acts as a placeholder for the `translations` folder.
-**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! diff --git a/4-manufacturing/lessons/3-run-fruit-detector-edge/translations/README.bn.md b/4-manufacturing/lessons/3-run-fruit-detector-edge/translations/README.bn.md new file mode 100644 index 00000000..fb6ab350 --- /dev/null +++ b/4-manufacturing/lessons/3-run-fruit-detector-edge/translations/README.bn.md @@ -0,0 +1,615 @@ +# Edge āĻ Fruit Detector āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻž + +![A sketchnote overview of this lesson](../../../../sketchnotes/lesson-17.jpg) + +> āĻ¸ā§āϕ⧇āϚāύ⧋āϟāϟāĻŋ āϤ⧈āϰ⧀ āĻ•āϰ⧇āĻ›āĻŋ [Nitya Narasimhan](https://github.com/nitya)āĨ¤ āĻŦ⧜ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻĻ⧇āĻ–āĻžāϰ āϜāĻ¨ā§āϝ āĻ›āĻŦāĻŋāϟāĻŋāϤ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ + +āĻāχ āĻ­āĻŋāĻĄāĻŋāĻ“āϟāĻŋ āφāχāĻ“āϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āϚāϞāĻŽāĻžāύ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāϝāĻŧāĻžāϰāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤ āĻŦāĻŋāĻŦāϰāĻŖ āĻĻ⧇āϝāĻŧ, āϝ⧇ āĻŦāĻŋāώāϝāĻŧāϟāĻŋ āĻāχ āĻĒāĻžāϠ⧇āχ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤāĨ¤ + +[![Custom Vision AI on Azure IoT Edge](https://img.youtube.com/vi/_K5fqGLO8us/0.jpg)](https://www.youtube.com/watch?v=_K5fqGLO8us) + +> đŸŽĨ āωāĻĒāϰ⧇āϰ āĻ›āĻŦāĻŋāϤ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧇ āĻ­āĻŋāĻĄāĻŋāĻ“āϟāĻŋ āĻĻ⧇āϖ⧇ āύāĻŋāχ + +## āϞ⧇āĻ•āϚāĻžāϰ-āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āϕ⧁āχāϜ + +[āϞ⧇āĻ•āϚāĻžāϰ-āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āϕ⧁āχāϜ](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/33) + +## āϏ⧂āϚāύāĻž + +āĻ—āϤ āĻĒāĻžāϠ⧇ āφāĻŽāϰāĻž āĻĒāĻžāĻ•āĻž āĻāĻŦāĻ‚ āĻ•āĻžāρāϚāĻž āĻĢāϞ⧇āϰ āĻļā§āϰ⧇āĻŖāĻŋāĻŦāĻŋāĻ¨ā§āϝāĻžāϏ āĻ•āϰāϤ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĻ›āĻŋ, āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡ āφāĻŽāĻžāĻĻ⧇āϰ āφāχāĻ“āϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻĻā§āĻŦāĻžāϰāĻž āϧāĻžāϰāĻŖ āĻ•āϰāĻž āĻāĻ•āϟāĻŋ āĻ›āĻŦāĻŋ āĻ•ā§āϞāĻžāωāĻĄ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇ āĻĒāĻžāĻ āĻŋāϝāĻŧ⧇āĻ›āĻŋāĨ¤ āĻāχ āĻ•āĻžāϜāϗ⧁āϞāĻŋ āĻšāϤ⧇ āϏāĻŽāϝāĻŧ āύ⧇āϝāĻŧ, āĻ…āĻ°ā§āĻĨ āĻŦā§āϝāϝāĻŧ āĻšā§Ÿ āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āϝ⧇ āϧāϰāϪ⧇āϰ āĻ›āĻŦāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻ›āĻŋ, āϤāĻžāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ āĻ—ā§‹āĻĒāύ⧀āϝāĻŧāϤāĻž āϏ⧁āĻ‚āĻ•ā§āϰāĻžāĻ¨ā§āϤ āĻŦāĻŋāĻˇā§Ÿā§‡āϰ āĻĒā§āϰāĻ­āĻžāĻŦ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ + +āĻāχ āĻĒāĻžāϠ⧇ āφāĻŽāϰāĻž āĻļāĻŋāĻ–āĻŦā§‹ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻŽā§‡āĻļāĻŋāύ āϞāĻžāĻ°ā§āύāĻŋāĻ‚ (āĻāĻŽāĻāϞ) āĻŽāĻĄā§‡āϞāϗ⧁āϞāĻŋ Edge āĻ āϚāĻžāϞāĻžāύ⧋ āϝāĻžāϝāĻŧ - āĻ•ā§āϞāĻžāωāĻĄā§‡āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āύāĻŋāĻœā§‡āϰ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇ āϚāϞāĻŽāĻžāύ āφāχāĻ“āϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ⧇āĨ¤ āφāĻŽāϰāĻž āĻ•ā§āϞāĻžāωāĻĄ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻŋāĻ‚ āĻŦāύāĻžāĻŽ Edge āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻŋāĻ‚ āĻāϰ āϏ⧁āĻŦāĻŋāϧāĻž āĻāĻŦāĻ‚ āĻ…āϏ⧁āĻŦāĻŋāϧāĻž āϏāĻŽā§āĻŦāĻ¨ā§āϧ⧇ āϜāĻžāύāĻŦā§‹, āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āφāĻŽāĻžāĻĻ⧇āϰ AI āĻŽāĻĄā§‡āϞāϕ⧇ Edge āĻ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻŦā§‹ āĻāĻŦāĻ‚ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āφāĻŽāĻžāĻĻ⧇āϰ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āĻāϟāĻŋ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āϰāĻŦā§‹ āϏ⧇āϟāĻŋāĻ“ āĻĻ⧇āĻ–āĻŦā§‹āĨ¤ + +āĻāχ āĻĒāĻžāϠ⧇ āφāĻŽāϰāĻž āĻļāĻŋāĻ–āĻŦā§‹ : + +* [Edge computing](#edge-computing) +* [Azure IoT Edge](#Azure-IoT-Edge) +* [IoT Edge device āϰ⧇āϜāĻŋāĻ¸ā§āϟāĻžāϰ āĻ•āϰāĻž](#IoT-Edge-device-āϰ⧇āϜāĻŋāĻ¸ā§āϟāĻžāϰ-āĻ•āϰāĻž) +* [IoT Edge device āϏ⧇āϟāĻžāĻĒ āĻ•āϰāĻž](#IoT-Edge-device-āϏ⧇āϟāĻžāĻĒ-āĻ•āϰāĻž) +* [āĻŽāĻĄā§‡āϞ āĻāĻ•ā§āϏāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāĻž](#āĻŽāĻĄā§‡āϞ-āĻāĻ•ā§āϏāĻĒā§‹āĻ°ā§āϟ-āĻ•āϰāĻž) +* [āĻĄā§‡āĻĒā§āϞ⧟āĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤāĻ•āϰāĻŖ](#āĻĄā§‡āĻĒā§āϞ⧟āĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ-āϜāĻ¨ā§āϝ-āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ-āĻĒā§āϰāĻ¸ā§āϤ⧁āϤāĻ•āϰāĻŖ) +* [āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āĻĄā§‡āĻĒā§āϞ⧟ āĻ•āϰāĻž](#āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ-āĻĄā§‡āĻĒā§āϞ⧟-āĻ•āϰāĻž) +* [āφāĻŽāĻžāĻĻ⧇āϰ IoT Edge device āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž](#āφāĻŽāĻžāĻĻ⧇āϰ-IoT-Edge-device-āĻŦā§āϝāĻŦāĻšāĻžāϰ-āĻ•āϰāĻž) + +## Edge computing + +Edge āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻŋāĻ‚āϝāĻŧ⧇āϰ āϧāĻžāϰāĻŖāĻž āϟāĻŋ āĻāĻŽāύ āϝ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻĄā§‡āϟāĻž āϤ⧈āϰ⧀ āĻŦāĻž āϝ⧇āĻ–āĻžāύ āĻĨ⧇āϕ⧇āχ āĻ—ā§ƒāĻšā§€āϤ āĻšā§Ÿ, āϏ⧇āĻ–āĻžāύāĻ•āĻžāϰ āĻ•āĻžāĻ›āĻžāĻ•āĻžāĻ›āĻŋ āĻĄā§‡āϟāĻž āĻĒā§āϰāϏ⧇āϏ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻžāĨ¤ āĻ•ā§āϞāĻžāωāĻĄā§‡ āĻāχ āĻĒā§āϰāϏ⧇āϏāĻŋāĻ‚ āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇, āĻāϟāĻŋ āĻ•ā§āϞāĻžāωāĻĄā§‡āϰ Edge āĻ āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰāĻŋāϤ āĻšāϝāĻŧ - āϝ⧇āϟāĻŋ āĻ•āĻŋāύāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĨ¤ + +![An architecture diagram showing internet services in the cloud and IoT devices on a local network](../../../../images/cloud-without-edge.png) + +āĻ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻĒāĻžāĻ āϗ⧁āϞāĻŋāϤ⧇ āφāĻŽāϰāĻž āĻļāĻŋāϖ⧇āĻ›āĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāϛ⧇āϰ āĻĄāĻŋāĻ­āĻžāχāϏāϗ⧁āϞāĻŋ āϤāĻĨā§āϝ āϏāĻ‚āĻ—ā§āϰāĻš āĻāĻŦāĻ‚ āĻ•ā§āϞāĻžāωāĻĄā§‡ āĻĄā§‡āϟāĻž āĻĒāĻžāĻ āĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ āĻ•āϰ⧇, āĻ•ā§āϞāĻžāωāĻĄā§‡ āϏāĻžāĻ°ā§āĻ­āĻžāϰāĻšā§€āύ āĻĢāĻžāĻ‚āĻļāύ āĻŦāĻž āĻāφāχ āĻŽāĻĄā§‡āϞ āϕ⧀āĻ­āĻžāĻŦ⧇ āϚāĻžāϞāĻžāύ⧋ āĻšāϝāĻŧāĨ¤ + +![An architecture diagram showing IoT devices on a local network connecting to edge devices, and those edge devices connect to the cloud](../../../../images/cloud-with-edge.png) + +Edge āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻŋāĻ‚ āĻ āĻŽā§‚āϞāϤ āĻ•āĻŋāϛ⧁ āĻ•ā§āϞāĻžāωāĻĄ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻŦāĻž āϏāĻžāĻ°ā§āĻ­āĻŋāϏāϕ⧇ āĻ•ā§āϞāĻžāωāĻĄ āĻĨ⧇āϕ⧇ āϏāϰāĻŋāϝāĻŧ⧇ āĻāĻŦāĻ‚ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āϝ⧇ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇ āϚāϞāĻŽāĻžāύ āϏ⧇āχ āĻāĻ•āχ āύ⧇āϟāĻ“ā§ŸāĻžāĻ°ā§āϕ⧇āϰ āϕ⧋āύ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ⧇ āύāĻŋā§Ÿā§‡ āφāϏāĻžāĨ¤ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϞ⧇āχ āĻ•ā§āϞāĻžāωāĻĄā§‡āϰ āϏāĻžāĻĨ⧇ āϝ⧋āĻ—āĻžāϝ⧋āĻ— āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āφāĻŽāϰāĻž āϕ⧋āύ āĻĢāϞ āĻĒāĻžāĻ•āĻž āĻ•āĻŋāύāĻž āϤāĻž āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ āĻ•āϰāϤ⧇ Edge āĻāϰ āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āĻāφāχ āĻŽāĻĄā§‡āϞ āϚāĻžāϞāĻžāϤ⧇ āĻĒāĻžāϰāĻŋ āĻāĻŦāĻ‚ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖāϗ⧁āϞāĻŋ āĻ•ā§āϞāĻžāωāĻĄā§‡ āĻĢ⧇āϰāϤ āĻĒāĻžāĻ āĻžāϤ⧇ āĻĒāĻžāϰāĻŋ, āϝ⧇āĻŽāύ āĻĢāϞ⧇āϰ āĻĒāĻžāĻ•āĻž āĻŦāύāĻžāĻŽ āĻ•āĻžāρāϚāĻž āĻĢāϞ⧇āϰ āϏāĻ‚āĻ–ā§āϝāĻžāĨ¤ + +✅ āφāĻŽāϰāĻž āĻāϤāĻĻāĻŋāύ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻļ⧇āĻ–āĻž āφāχāĻ“āϟāĻŋ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϗ⧁āϞāĻŋ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰāĻŋāĨ¤ āϤāĻžāĻĻ⧇āϰ āϕ⧋āύ āĻ…āĻ‚āĻļāϗ⧁āϞāĻŋ Edge āĻ āύāĻŋā§Ÿā§‡ āφāϏāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ + +### āϏ⧁āĻŦāĻŋāϧāĻž + +Edge āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻŋāĻ‚ āĻāϰ āϏ⧁āĻŦāĻŋāϧāĻž āϗ⧁āϞ⧋ āĻšāϞ⧋: + +1. **āĻĻā§āϰāϤāϤāĻž** - āϏāĻŽāϝāĻŧ-āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ (time-sensitive) āϤāĻĨā§āϝ⧇āϰ āϜāĻ¨ā§āϝ āϖ⧁āĻŦāχ āϏ⧁āĻŦāĻŋāϧāĻžāϜāύāĻ• āĻ•āĻžāϰāĻŖ āϏāĻŽāĻ—ā§āϰ āχāĻ¨ā§āϟāĻžāϰāύ⧇āϟ āϜ⧁āĻĄāĻŧ⧇ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āϞ⧋āĻ•āĻžāϞ āĻĄāĻŋāĻ­āĻžāχāϏ⧇āχ āĻ•āĻžāϜāϗ⧁āϞāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāϟāĻŋ āωāĻšā§āϚ āĻ—āϤāĻŋāϤ⧇ āϤāĻž āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻšāϝāĻŧ āĻ•āĻžāϰāĻŖ āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āϗ⧁āϞāĻŋ āχāĻ¨ā§āϟāĻžāϰāύ⧇āϟ āϏāĻ‚āϝ⧋āϗ⧇āϰ āϤ⧁āϞāύāĻžāϝāĻŧ āϝāĻĨ⧇āĻˇā§āϟ āĻĻā§āϰ⧁āϤ āĻ—āϤāĻŋāϤ⧇ āϚāϞāϤ⧇ āĻĒāĻžāϰ⧇, āϝāĻžāϰ āĻĄā§‡āϟāĻž āĻ…āύ⧇āĻ• āĻ•āĻŽ āĻĻā§‚āϰāĻ¤ā§āĻŦ⧇ āĻ­ā§āϰāĻŽāĻŖ āĻ•āϰ⧇āĨ¤ + + > 💁 āχāĻ¨ā§āϟāĻžāϰāύ⧇āϟ āϏāĻ‚āϝ⧋āϗ⧇āϰ āϜāĻ¨ā§āϝ āĻ…āĻĒāϟāĻŋāĻ•ā§āϝāĻžāϞ āĻ•ā§āϝāĻžāĻŦāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϞ⧇āĻ“ , āφāϞ⧋āϰ āĻ—āϤāĻŋāϤ⧇ āĻĄā§‡āϟāĻž āĻĒāϰāĻŋāĻŦāĻšāϪ⧇āϰ āϏ⧁āϝ⧋āĻ— āĻĻā§‡ā§ŸāĻž āĻšāϞ⧇āĻ“, āĻĄā§‡āϟāĻž āĻ•ā§āϞāĻžāωāĻĄ āĻĒā§āϰ⧋āĻ­āĻžāχāĻĄāĻžāϰāĻĻ⧇āϰ āĻ•āĻžāϛ⧇ āĻĒ⧌āĻ›āϤ⧇ āϏāĻŽāϝāĻŧ āύāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āϝāĻĻāĻŋ āφāĻŽāϰāĻž āχāωāϰ⧋āĻĒ āĻĨ⧇āϕ⧇ āĻŽāĻžāĻ°ā§āĻ•āĻŋāύ āϝ⧁āĻ•ā§āϤāϰāĻžāĻˇā§āĻŸā§āϰ⧇ āĻ•ā§āϞāĻžāωāĻĄ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāĻĻāĻŋāϤ⧇ āĻĄā§‡āϟāĻž āĻĒāĻžāĻ āĻžāχ āϤāĻŦ⧇ āĻ…āĻĒāϟāĻŋāĻ•ā§āϝāĻžāϞ āĻ•ā§āϝāĻžāĻŦāϞ⧇ āφāϟāϞāĻžāĻ¨ā§āϟāĻŋāĻ• āĻ…āϤāĻŋāĻ•ā§āϰāĻŽ āĻ•āϰāϤ⧇ āĻĄā§‡āϟāĻžāϰ āϜāĻ¨ā§āϝ āĻ•āĻŽāĻĒāĻ•ā§āώ⧇ 28ms āϏāĻŽāϝāĻŧ āϞāĻžāϗ⧇ (āĻāĻ–āĻžāύ⧇ āϤāĻžāĻ“ āωāĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰāĻž āĻšāĻšā§āϛ⧇ - āĻŸā§āϰāĻžāĻ¨ā§āϏāĻ…ā§āϝāĻžāϟāϞāĻžāĻ¨ā§āϟāĻŋāĻ• āϕ⧇āĻŦāϞ⧇ āĻĄā§‡āϟāĻž āĻĒāĻžāĻ“ā§ŸāĻž, āĻŦ⧈āĻĻā§āϝ⧁āϤāĻŋāĻ• āĻĨ⧇āϕ⧇ āφāϞ⧋āĻ•ā§€ā§Ÿ āϏāĻ‚āϕ⧇āϤ⧇ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āφāĻŦāĻžāϰ āĻ…āĻĒāϟāĻŋāĻ•ā§āϝāĻžāϞ āĻ•ā§āϝāĻžāĻŦāϞ āĻĨ⧇āϕ⧇ āĻ•ā§āϞāĻžāωāĻĄ āĻĒā§āϰ⧋āĻ­āĻžāχāĻĄāĻžāϰ⧇āϰ āĻ•āĻžāϛ⧇ āĻĒ⧌āĻ›āĻžāύ⧋āϰ āĻŽāϤ āĻŦāĻŋāώ⧟āϗ⧁āϞ⧋)āĨ¤ + + Edge āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āĻ•āĻŽ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻŸā§āĻ°ā§āϝāĻžāĻĢāĻŋāϕ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧ, āĻāϤ⧇ āĻ•āϰ⧇ āχāĻ¨ā§āϟāĻžāϰāύ⧇āϟ āϏāĻ‚āϝ⧋āϗ⧇āϰ āϏ⧀āĻŽāĻŋāϤ āĻŦā§āϝāĻžāĻ¨ā§āĻĄāωāχāĻĨ⧇āϰ āϏāĻŽāĻ¸ā§āϝāĻž āĻŦāĻž āĻāϰ āĻŽāĻ§ā§āϝ⧇ āϝāĻžāύāϜāĻŸā§‡āϰ āĻĢāϞ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻĄā§‡āϟāĻž āĻĒāϰāĻŋāĻŦāĻšāύ āϧ⧀āϰ āĻšāĻ“āϝāĻŧāĻžāϰ āĻā§āρāĻ•āĻŋ āĻšā§āϰāĻžāϏ āĻ•āϰ⧇āĨ¤ + +1. **āĻĻā§‚āϰāĻŦāĻ°ā§āϤ⧀ āϏāĻ‚āϝ⧋āĻ— āύāĻŋ⧟āĻ¨ā§āĻ¤ā§āϰāĻŖ** - Edge āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻŋāĻ‚ āĻ•āĻžāϜ āĻ•āϰ⧇ āϝāĻ–āύ āφāĻŽāĻžāĻĻ⧇āϰ āϕ⧋āύ āχāĻ¨ā§āϟāĻžāϰāύ⧇āϟ āϏāĻ‚āϝ⧋āĻ— āĻĨāĻžāϕ⧇āύāĻž āĻŦāĻž āϖ⧁āĻŦāχ āϏ⧀āĻŽāĻŋāϤ āĻĒāĻ°ā§āϝāĻžā§Ÿā§‡āϰ āĻšā§ŸāĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ āϝāĻ–āύ āĻĒāϰāĻŋāĻŦ⧇āĻļāĻ—āϤ āĻĻā§‚āĻ°ā§āϝ⧋āĻ— āϘāĻŸā§‡, āϤāĻ–āύ āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡āϰ āϕ⧋āύ āĻāĻ•āϏ⧇āϏ āĻĨāĻžāϕ⧇āύāĻžāĨ¤ + +1. **āĻ…āĻ˛ā§āĻĒ āĻ–āϰāϚ** - Edge āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āĻĄā§‡āϟāĻž āϏāĻ‚āĻ—ā§āϰāĻš, āϏāĻžā§āϚāϝāĻŧ, āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ āĻāĻŦāĻ‚ āĻŸā§āϰāĻŋāĻ—āĻžāϰāĻŋāĻ‚ āĻ•āĻžāĻ°ā§āϝāĻ•ā§āϰāĻŽ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻ•āϰāĻž āĻ•ā§āϞāĻžāωāĻĄ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšā§āϰāĻžāϏ āĻ•āϰ⧇ āϝāĻž āφāĻŽāĻžāĻĻ⧇āϰ āφāχāĻ“āϟāĻŋ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ āϏāĻžāĻŽāĻ—ā§āϰāĻŋāĻ• āĻ–āϰāϚ āĻ•āĻŽāĻžāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ Edge āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āϏāĻžāĻŽā§āĻĒā§āϰāϤāĻŋāĻ• āĻ…āύ⧇āĻ• āωāĻ¨ā§āύ⧟āύ āĻšāϝāĻŧ⧇āϛ⧇, āϏāĻŽā§āĻĒā§āϰāϤāĻŋ āĻāφāχ āĻāĻ•ā§āϏāĻŋāϞāĻžāϰ⧇āϟāϰ āĻŦā§‹āĻ°ā§āĻĄ āϝ⧇āĻŽāύ [NVIDIA āĻœā§‡āϟāϏāύ āĻ¨ā§āϝāĻžāύ⧋](https://developer.nvidia.com/embedded/jetson-nano-developer-kit) āĻāϰ āφāĻŦāĻŋāĻ°ā§āĻ­āĻžāĻŦ āϘāĻŸā§‡āϛ⧇, āϝāĻž GPU-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻšāĻžāĻ°ā§āĻĄāĻ“āϝāĻŧā§āϝāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ AI āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āϞ⧋āĻĄāϗ⧁āϞāĻŋ āϚāĻžāϞāĻžāϤ⧇ āĻĒāĻžāϰ⧇ āϝ⧇ āĻĄāĻŋāĻ­āĻžāχāϏāϗ⧁āϞāĻŋāϰ āĻĻāĻžāĻŽ US $100 āĻāϰāĻ“ āĻ•āĻŽāĨ¤ + +1. **āĻ—ā§‹āĻĒāύ⧀āϝāĻŧāϤāĻž āĻāĻŦāĻ‚ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž** - Edge āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻŋāĻ‚ āĻāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻĄā§‡āϟāĻž āφāĻŽāĻžāĻĻ⧇āϰ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇ āĻĨāĻžāϕ⧇ āĻāĻŦāĻ‚ āĻ•ā§āϞāĻžāωāĻĄā§‡ āφāĻĒāϞ⧋āĻĄ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻžāĨ¤ āĻāϟāĻŋ āĻĒā§āϰāĻžāϝāĻŧāĻļāχ āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ āĻāĻŦāĻ‚ āĻŦā§āϝāĻ•ā§āϤāĻŋāĻ—āϤāĻ­āĻžāĻŦ⧇ āĻļāύāĻžāĻ•ā§āϤāϝ⧋āĻ—ā§āϝ āϤāĻĨā§āϝ⧇āϰ āϜāĻ¨ā§āϝ āĻ…āϧāĻŋāĻ•āϤāϰ āĻ•āĻ˛ā§āϝāĻžāĻŖāϜāύāĻ•āĨ¤ āĻāĻ›āĻžā§œāĻžāĻ“ āĻĄā§‡āϟāĻž āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āĻĄā§‡āϟāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧ āύāĻž, āϝāĻž āĻĄā§‡āϟāĻž āĻĢāĻžāρāϏ⧇āϰ āĻā§āρāĻ•āĻŋ āĻ…āύ⧇āĻ• āĻ•āĻŽāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāϗ⧁āϞāĻŋāϰ āĻŽāĻ§ā§āϝ⧇ āϰāϝāĻŧ⧇āϛ⧇ āĻŽā§‡āĻĄāĻŋāϕ⧇āϞ āĻĄā§‡āϟāĻž āĻāĻŦāĻ‚ āϏāĻŋāϏāĻŋāϟāĻŋāĻ­āĻŋ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻĢ⧁āĻŸā§‡āϜāĨ¤ + +1. **āĻ…āύāĻŋāϰāĻžāĻĒāĻĻ āĻĄāĻŋāĻ­āĻžāχāϏāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻž** - āϝāĻĻāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āϜāĻžāύāĻžāĻŽāϤ⧇ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āĻ¤ā§āϰ⧁āϟāĻŋāϝ⧁āĻ•ā§āϤ āϕ⧋āύ āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨāĻžāϕ⧇ āϝāĻž āφāĻŽāϰāĻž āϏāϰāĻžāϏāϰāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻŦāĻž āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āϚāĻžāχ āύāĻž, āϏ⧇āϗ⧁āϞāĻŋāϕ⧇ āĻāĻ•āϟāĻŋ āĻĒ⧃āĻĨāĻ• āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇ āϗ⧇āϟāĻ“āϝāĻŧ⧇ āφāχāĻ“āϟāĻŋ Edge āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ āĻāχ Edge āĻĄāĻŋāĻ­āĻžāχāϏāϟāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āĻŦ⧃āĻšāĻ¤ā§āϤāϰ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻŦāĻž āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡āϰ āϏāĻžāĻĨ⧇āĻ“ āϏāĻ‚āϝ⧋āĻ— āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āĻĄā§‡āϟāĻž āĻĒā§āϰāĻŦāĻžāĻšāϕ⧇ āϏāĻžāĻŽāύ⧇ āĻĒ⧇āĻ›āύ⧇ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ + +1. **āĻ…āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āĻĄāĻŋāĻ­āĻžāχāϏ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻžāĻĒā§‹āĻ°ā§āϟ** - āϝāĻĻāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āĻāĻŽāύ āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨāĻžāϕ⧇ āϝāĻž IoT āĻšāĻžāĻŦ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻž, āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ āĻāĻŽāύ āĻĄāĻŋāĻ­āĻžāχāϏ āϝāĻž āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ HTTP āϏāĻ‚āϝ⧋āĻ— āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āĻŦāĻž āϝ⧇ āĻĄāĻŋāĻ­āĻžāχāϏāϗ⧁āϞāĻŋāϤ⧇ āϕ⧇āĻŦāϞāĻŽāĻžāĻ¤ā§āϰ āĻŦā§āϞ⧁āϟ⧁āĻĨ āϏāĻ‚āϝ⧋āĻ— āφāϛ⧇- āϏ⧇āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ IoT Edge āĻĄāĻŋāĻ­āĻžāχāϏāϕ⧇ āϗ⧇āϟāĻ“āϝāĻŧ⧇ āĻĄāĻŋāĻ­āĻžāχāϏ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ , IoT Hub- āĻ āĻŦāĻžāĻ°ā§āϤāĻž āĻĒāĻžāĻ āĻžāύ⧋āϰ āϜāĻ¨ā§āϝāĨ¤ + +✅ āĻ•āĻŋāϛ⧁ āĻ—āĻŦ⧇āώāĻŖāĻž āĻ•āϰāĻŋ: Edge āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻŋāĻ‚ āĻāϰ āĻ…āĻ¨ā§āϝ āϕ⧋āύ āϕ⧋āύ āϏ⧁āĻŦāĻŋāϧāĻž āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇? + +### āĻ…āϏ⧁āĻŦāĻŋāϧāĻž + +Edge āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻŋāĻ‚āϝāĻŧ⧇āϰ āφāĻŦāĻžāϰ āĻ•āĻŋāϛ⧁ āĻ…āϏ⧁āĻŦāĻŋāϧāĻžāĻ“ āϰāϝāĻŧ⧇āϛ⧇, āϝ⧇āϏāĻŦ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻ•ā§āϞāĻžāωāĻĄ āĻ­āĻžāϞ⧋ āĻ…āĻĒāĻļāύ āĻšāϤ⧇ āĻĒāĻžāϰ⧇: + +1. **āĻ¸ā§āϕ⧇āϞ āĻāĻŦāĻ‚ āĻĢā§āϞ⧇āĻ•ā§āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ** - āĻ•ā§āϞāĻžāωāĻĄ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻŋāĻ‚ āĻ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āϰāĻŋāϏ⧋āĻ°ā§āϏ āϏāĻ‚āϝ⧋āϜāύ āĻŦāĻž āĻšā§āϰāĻžāϏ āĻ•āϰ⧇ āϰāĻŋāϝāĻŧ⧇āϞ -āϟāĻžāχāĻŽā§‡ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻāĻŦāĻ‚ āĻĄā§‡āϟāĻž āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ Edge āĻāϰ āϏ⧁āĻŦāĻŋāϧāĻž āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ⧇ āϝ⧋āĻ— āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ āφāϰ⧋ āĻĄāĻŋāĻ­āĻžāχāϏ āϝ⧋āĻ— āĻ•āϰāĻž āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤ + +1. **āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝāϤāĻž āĻāĻŦāĻ‚ āϏāĻšāύāĻļā§€āϞāϤāĻž** - āĻ•ā§āϞāĻžāωāĻĄ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻŋāĻ‚ āĻ āĻ…āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āϰāĻŋāϏ⧋āĻ°ā§āϏ āĻāĻŦāĻ‚ āĻĻ⧁āĻ°ā§āϝ⧋āĻ—āĻ•āĻžāϞ⧀āύ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋ āĻā§œāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻžāϝāĻŧāχ āĻāĻ•āĻžāϧāĻŋāĻ• āĻ¸ā§āĻĨāĻžāύ⧇ āĻāĻ•āĻžāϧāĻŋāĻ• āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāϰāĻŦāϰāĻžāĻš āĻ•āϰ⧇āĨ¤ Edge āĻ āĻāĻ•āχ āĻŽāĻžāĻ¤ā§āϰāĻžāϰ āĻ…āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāϤāĻžāϰ āϜāĻ¨ā§āϝ āĻŦāĻĄāĻŧ āĻŦāĻŋāύāĻŋāϝāĻŧā§‹āĻ— āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ⧇āϰ āĻ•āĻžāϜ āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤ + +1. **āϰāĻ•ā§āώāĻŖāĻžāĻŦ⧇āĻ•ā§āώāĻŖ** - āĻ•ā§āϞāĻžāωāĻĄ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻĒā§āϰāĻĻāĻžāύāĻ•āĻžāϰ⧀āϰāĻžāϰāĻžāχ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āϰāĻ•ā§āώāĻŖāĻžāĻŦ⧇āĻ•ā§āώāĻŖ āĻāĻŦāĻ‚ āφāĻĒāĻĄā§‡āϟ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤ + +✅ āĻ•āĻŋāϛ⧁ āĻ—āĻŦ⧇āώāĻŖāĻž āĻ•āϰāĻŋ: Edge āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻŋāĻ‚āϝāĻŧ⧇ āĻ…āĻ¨ā§āϝ āϕ⧋āύ āĻ…āϏ⧁āĻŦāĻŋāϧāĻž āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇? + +āĻ•ā§āϞāĻžāωāĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āĻ…āϏ⧁āĻŦāĻŋāϧāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āĻĻ⧇āĻ–āĻž āϝāĻžā§Ÿ - āφāĻŽāϰāĻž āĻ•ā§āϞāĻžāωāĻĄ āϏāϰāĻŦāϰāĻžāĻšāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻĻāĻ•ā§āώāϤāĻž āĻāĻŦāĻ‚ āĻ¸ā§āϕ⧇āϞ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦā§‹āύāĻž, āĻŦāϰāĻ‚ āφāĻŽāĻžāĻĻ⧇āϰāϕ⧇ āĻāχ āĻĄāĻŋāĻ­āĻžāχāϏāϗ⧁āϞāĻŋ āύāĻŋāĻœā§‡āχ āϤ⧈āϰāĻŋ āĻāĻŦāĻ‚ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ + +Edge āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻŋāĻ‚āϝāĻŧ⧇āϰ āĻĻā§āĻŦāĻžāϰāĻž āĻ•āĻŋāϛ⧁ āĻā§āρāĻ•āĻŋ āĻĒā§āϰāĻļāĻŽāĻŋāϤ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āϝāĻĻāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āϝāĻ¨ā§āĻ¤ā§āϰāĻĒāĻžāϤāĻŋ āϏāĻš āĻ•āĻžāϰāĻ–āĻžāύāĻžāϝāĻŧ āϝ⧇āĻ–āĻžāύ āĻĨ⧇āϕ⧇ āĻĄā§‡āϟāĻž āϏāĻ‚āĻ—ā§āϰāĻš āĻ•āϰāĻž āĻšā§Ÿ, āϏ⧇āĻ–āĻžāύ⧇āχ āĻāĻ•āϟāĻŋ Edge āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨāĻžāϕ⧇, āϤāĻžāĻšāϞ⧇ āφāĻŽāĻžāĻĻ⧇āϰāϕ⧇ āĻĻ⧁āĻ°ā§āϝ⧋āĻ— āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ­āĻžāĻŦāϤ⧇ āĻšāĻŦ⧇ āύāĻžāĨ¤ āϝāĻĻāĻŋ āĻ•āĻžāϰāĻ–āĻžāύāĻžāϰ āĻŦāĻŋāĻĻā§āĻ¯ā§ā§Ž āϚāϞ⧇ āϝāĻžāϝāĻŧ āϤāĻžāĻšāϞ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻŦā§āϝāĻžāĻ•āφāĻĒ Edge āĻĄāĻŋāĻ­āĻžāχāϏ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāĻŦ⧇ āύāĻž āĻ•āĻžāϰāĻŖ āĻŽā§‡āĻļāĻŋāύāϗ⧁āϞāĻŋ āĻĄā§‡āϟāĻž āϤ⧈āϰāĻŋāϰ āĻĒāϰ, Edge āĻĄāĻŋāĻ­āĻžāχāϏ⧇āϰ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϗ⧁āϞāĻŋāĻ“ āĻŦāĻŋāĻĻā§āĻ¯ā§ā§ŽāĻŦāĻŋāĻšā§€āύ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻž āϝāĻžāĻŦ⧇āĨ¤ + +IoT āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž āĻĒā§āϰāĻžāϝāĻŧāχ āĻ•ā§āϞāĻžāωāĻĄ āĻāĻŦāĻ‚ Edge āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻŋāĻ‚ āĻāϰ āĻŽāĻŋāĻļā§āϰāĻŖ āĻāϰ āĻ•ā§ŒāĻļāϞ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāĻŋ āϝ⧇āĻ–āĻžāύ⧇ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻāϰ āĻ—ā§āϰāĻžāĻšāĻ•āĻĻ⧇āϰ āĻāĻŦāĻ‚ āĻāϰ āϰāĻ•ā§āώāĻŖāĻžāĻŦ⧇āĻ•ā§āώāĻŖāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧇āϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏ⧇āĻŦāĻžāϰ āϏ⧁āĻŦāĻŋāϧāĻž āĻĒāĻžāĻ“ā§ŸāĻž āϝāĻžā§ŸāĨ¤ + +## Azure IoT Edge + +![The Azure IoT Edge logo](../../../../images/azure-iot-edge-logo.png) + +Azure IoT Edge āĻšāϞ āĻāĻ•āϟāĻŋ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āϝāĻž āφāĻŽāĻžāĻĻ⧇āϰāϕ⧇ āĻ•āĻžāĻœā§‡āϰ āϚāĻžāĻĒāϕ⧇ āĻ•ā§āϞāĻžāωāĻĄā§‡āϰ āĻŦāĻžāχāϰ⧇ āĻāĻŦāĻ‚ Edge āĻ āϏāϰāĻŋāϝāĻŧ⧇ āύāĻŋāϤ⧇ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ Edge āĻĄāĻŋāĻ­āĻžāχāϏ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻāĻ•āϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ āϏ⧇āϟ āφāĻĒ, āĻāĻŦāĻ‚ āĻ•ā§āϞāĻžāωāĻĄ āĻĨ⧇āϕ⧇ āφāĻŽāϰāĻž āϝ⧇ Edge āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āϕ⧋āĻĄ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ āĻāϟāĻŋ āφāĻŽāĻžāĻĻ⧇āϰāϕ⧇ āĻ•ā§āϞāĻžāωāĻĄ āĻāĻŦāĻ‚ Edge āĻāϰ āĻ•ā§āώāĻŽāϤāĻžāϗ⧁āϞāĻŋāϰ āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧇āĨ¤ + +> 🎓 *Workloads* āĻŦāϞāϤ⧇ āϏ⧇āϏāĻ•āϞ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻŦā§‹āĻāĻžā§Ÿ āϝ⧇āϗ⧁āϞ⧋ āϕ⧋āύ āϧāϰāύ⧇āϰ āĻ•āĻžāϜ āĻ•āϰ⧇, āϝ⧇āĻŽāύ āĻāφāχ āĻŽāĻĄā§‡āϞ, āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻŦāĻž āϏāĻžāĻ°ā§āĻ­āĻžāϰāϞ⧇āϏ āĻĢāĻžāĻ‚āĻļāύāĨ¤ + +āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āφāĻŽāϰāĻž āĻ•ā§āϞāĻžāωāĻĄā§‡ āĻāĻ•āϟāĻŋ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āĻĒā§āϰāĻļāĻŋāĻ•ā§āώāĻŖ āĻĻāĻŋāϤ⧇ āĻĒāĻžāϰāĻŋ, āϤāĻžāϰāĻĒāϰ āĻ•ā§āϞāĻžāωāĻĄ āĻĨ⧇āϕ⧇ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ Edge āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻŋāĨ¤ āφāĻŽāĻžāĻĻ⧇āϰ āφāχāĻ“āϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ āϤāĻžāϰāĻĒāϰ āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡ āĻ›āĻŦāĻŋ āĻĒāĻžāĻ āĻžāύ⧋āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ Edge āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āχāĻŽā§‡āϜ āĻĒāĻžāĻ āĻžāϝāĻŧ āĻļā§āϰ⧇āĻŖā§€āĻŦāĻŋāĻ¨ā§āϝāĻžāϏ⧇āϰ āϜāĻ¨ā§āϝāĨ¤ āϝāĻĻāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āĻŽāĻĄā§‡āϞ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻŦāĻž āωāĻ¨ā§āύ⧟āύ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ āφāĻŽāϰāĻž āĻāϟāĻŋāϕ⧇ āĻ•ā§āϞāĻžāωāĻĄā§‡ āĻĒā§āϰāĻļāĻŋāĻ•ā§āώāĻŖ āĻĻāĻŋāϤ⧇ āĻĒāĻžāϰāĻŋ āĻāĻŦāĻ‚ āφāχāĻ“āϟāĻŋ Edge āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ Edge āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āĻŽāĻĄā§‡āϞāϟāĻŋāϕ⧇ āφāĻŽāϰāĻž āφāĻĒāĻĄā§‡āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ + +> 🎓 IoT Edge- āĻ āϝ⧇ āϏāĻĢāϟāĻ“āϝāĻŧā§āϝāĻžāϰāϟāĻŋ āĻŽā§‹āϤāĻžāϝāĻŧ⧇āύ āĻ•āϰāĻž āĻšāϝāĻŧ āϤāĻž *āĻŽāĻĄāĻŋāωāϞ* āύāĻžāĻŽā§‡ āĻĒāϰāĻŋāϚāĻŋāϤāĨ¤ āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇ IoT Edge āĻŽāĻĄāĻŋāωāϞ āϚāĻžāϞāĻžāϝāĻŧ āϝāĻž IoT Hub- āĻāϰ āϏāĻžāĻĨ⧇ āϝ⧋āĻ—āĻžāϝ⧋āĻ— āĻ•āϰ⧇, āϝ⧇āĻŽāύ `edgeAgent` āĻāĻŦāĻ‚` edgeHub` āĻŽāĻĄāĻŋāωāϞāĨ¤ āϝāĻ–āύ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻŋ, āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻŽāĻĄāĻŋāωāϞ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ + +āφāχāĻ“āϟāĻŋ Edge āφāχāĻ“āϟāĻŋ āĻšāĻžāĻŦ⧇āϰ āĻŽāĻ§ā§āϝ⧇āχ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āϤāĻžāχ āφāĻŽāϰāĻž āĻāĻ•āχ āĻ¸ā§āϤāϰ⧇āϰ āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āφāχāĻ“āϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāϤ⧇ āϝ⧇ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋ, āϏ⧇āχ āĻāĻ•āχ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻĻāĻŋā§Ÿā§‡ āφāĻŽāϰāĻž Edge āĻĄāĻŋāĻ­āĻžāχāϏāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ + +āφāχāĻ“āϟāĻŋ Edge *āĻ•āύāĻŸā§‡āχāύāĻžāϰ* āĻĨ⧇āϕ⧇ āϕ⧋āĻĄ āϚāĻžāϞāĻžāϝāĻŧ - āĻāϟāĻŋ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϝāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ⧇ āĻŦāĻžāĻ•āĻŋ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻĨ⧇āϕ⧇ āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āύāĻ­āĻžāĻŦ⧇ āϚāĻžāϞāĻžāύ⧋ āĻšāϝāĻŧāĨ¤ āϝāĻ–āύ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϚāĻžāϞāĻžāχ āϤāĻ–āύ āĻāϟāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ⧇āϰ āĻ­āĻŋāϤāϰ⧇ āĻāĻ•āϟāĻŋ āĻĒ⧃āĻĨāĻ• āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ⧇āϰ āĻŽāϤ⧋ āĻ•āĻžāϜ āĻ•āϰ⧇, āϝāĻžāϰ āύāĻŋāϜāĻ¸ā§āĻŦ āϏāĻĢā§āϟāĻ“āϝāĻŧā§āϝāĻžāϰ, āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϗ⧁āϞāĻŋ āϚāϞāϛ⧇āĨ¤ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āϏāĻŽāϝāĻŧ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ⧇ āĻ•āĻŋāϛ⧁ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻž āϝāϤāĻ•ā§āώāĻŖ āύāĻž āφāĻŽāϰāĻž āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇āϰ āĻŽāϤ⧋ āϜāĻŋāύāĻŋāϏ āĻ­āĻžāĻ— āĻ•āϰāĻž āĻŦ⧇āϛ⧇ āύ⧇āχāĨ¤ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϤāĻžāϰāĻĒāϰ āĻāĻ•āϟāĻŋ āĻ–ā§‹āϞāĻž āĻĒā§‹āĻ°ā§āĻŸā§‡āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϏāĻžāĻ°ā§āĻ­āĻŋāϏāϗ⧁āϞāĻŋ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰ⧇ āϝāĻž āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻŦāĻž āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ + +![A web request redirected to a container](../../../../images/container-web-browser.png) + +āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āφāĻŽāϰāĻž āĻĒā§‹āĻ°ā§āϟ 80, āĻĄāĻŋāĻĢāĻ˛ā§āϟ HTTP āĻĒā§‹āĻ°ā§āĻŸā§‡ āϚāϞāĻŽāĻžāύ āĻāĻ•āϟāĻŋ āĻ“āϝāĻŧ⧇āĻŦ āϏāĻžāχāϟāϕ⧇ āĻāĻ•āϟāĻŋ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϰāĻžāĻ–āϤ⧇ āĻĒāĻžāϰāĻŋ āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āĻāϟāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ āĻĨ⧇āϕ⧇ āĻĒā§‹āĻ°ā§āϟ 80 āϤ⧇āĻ“ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ + +✅ āĻ•āĻŋāϛ⧁ āĻ—āĻŦ⧇āώāĻŖāĻž āĻ•āϰāĻŋ: Docker āĻŦāĻž Moby āĻāϰ āĻŽāϤ⧋ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻāĻŦāĻ‚ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āφāϰ⧋ āĻĒ⧜āĻŋāĨ¤ + +āφāĻŽāϰāĻž āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ āĻāĻŦāĻ‚ āϏ⧇āϗ⧁āϞ⧋āϕ⧇ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ, āĻšāϝāĻŧ āϏāϰāĻžāϏāϰāĻŋ āϕ⧋āύ⧋ āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āϚāĻžāϞāĻžāύ⧋ āĻ…āĻĨāĻŦāĻž āφāχāĻ“āϟāĻŋ Edge āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻŽā§‹āϤāĻžāϝāĻŧ⧇āύ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāĻ•āĻŦāĻžāϰ āĻāĻ•āϟāĻž āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϚāϞāϤ⧇ āĻĨāĻžāĻ•āϞ⧇, āĻ•ā§āϞāĻžāωāĻĄ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇āϰ āĻŽāϤ⧋ āĻāĻ•āχ REST API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāϟāĻŋ āĻāĻ•āϏ⧇āϏ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇, āϤāĻŦ⧇ endpoint āϟāĻŋ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ Edge āĻĄāĻŋāĻ­āĻžāχāϏ⧇āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇āĨ¤ + +## IoT Edge device āϰ⧇āϜāĻŋāĻ¸ā§āϟāĻžāϰ āĻ•āϰāĻž + +āĻāĻ•āϟāĻŋ āφāχāĻ“āϟāĻŋ Edge āĻĄāĻŋāĻ­āĻžāχāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āĻāϟāĻŋ āφāχāĻ“āϟāĻŋ āĻšāĻžāĻŦ -āĻ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰ⧇āĻļāύ āĻšāĻ“āϝāĻŧāĻž āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤ + +### Task - IoT Edge device āϰ⧇āϜāĻŋāĻ¸ā§āϟāĻžāϰ āĻ•āϰāĻž + +1. `fruit-quality-detector` āϰāĻŋāϏ⧋āĻ°ā§āϏ āĻ—ā§āϰ⧁āĻĒ⧇ āφāχāĻ“āϟāĻŋ āĻšāĻžāĻŦ āϤ⧈āϰ⧀ āĻ•āϰāĻŋāĨ¤ āĻāϟāĻžāϕ⧇ āχāωāύāĻŋāĻ• āĻāĻ•āϟāĻž āύāĻžāĻŽ āĻĻā§‡ā§ŸāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇, āϝ⧇āĻŽāύāσ `fruit-quality-detector` + +1. āĻāĻ•āϟāĻŋ IoT Edge device āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰ⧇āĻļāύ āĻ•āϰāĻŋ, āύāĻžāĻŽ āĻĻāĻŋāχ `fruit-quality-detector-edge`āĨ¤ āĻāϟāĻŋ āĻ•āϰāĻžāϰ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϟāĻŋ āĻāĻ•āϟāĻŋ non-edge āĻĄāĻŋāĻ­āĻžāχāϏ āύāĻŋāĻŦāĻ¨ā§āϧāύ⧇āϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡āϰ āĻ…āύ⧁āϰ⧂āĻĒ, āϤāĻŦ⧇ `--edge-enabled` āĻĢā§āĻ˛ā§āϝāĻžāĻ—āϟāĻŋ āĻĒāĻžāϏ āĻ•āϰāĻž āϝāĻžāĻŦ⧇āύāĻžāĨ¤ + + ```sh + az iot hub device-identity create --edge-enabled \ + --device-id fruit-quality-detector-edge \ + --hub-name + ``` + + `` āĻāϰ āĻ¸ā§āĻĨāϞ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āφāχāĻ“āϟāĻŋ āĻšāĻžāĻŦ⧇āϰ āύāĻžāĻŽ āĻŦāϏāĻžāχāĨ¤ + +1. āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻĄāĻŋāĻ­āĻžāχāϏ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻ‚āϝ⧋āĻ— āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āύāĻŋāχ: + + ```sh + az iot hub device-identity connection-string show --device-id fruit-quality-detector-edge \ + --output table \ + --hub-name + ``` + + `` āĻāϰ āĻ¸ā§āĻĨāϞ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āφāχāĻ“āϟāĻŋ āĻšāĻžāĻŦ⧇āϰ āύāĻžāĻŽ āĻŦāϏāĻžāχāĨ¤ + + āφāωāϟāĻĒ⧁āĻŸā§‡ āĻĻ⧇āĻ–āĻžāύ⧋ āĻ•āĻžāύ⧇āĻ•āĻļāύ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āĻāϰ āĻ•āĻĒāĻŋ āϰāĻžāĻ–āĻŋāĨ¤ + +## IoT Edge device āϏ⧇āϟāĻžāĻĒ āĻ•āϰāĻž + +āĻāĻ•āĻŦāĻžāϰ IoT āĻšāĻžāĻŦ āĻ āĻāϜ āĻĄāĻŋāĻ­āĻžāχāϏ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰ⧇āĻļāύ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āύāĻŋāϞ⧇, āφāĻŽāϰāĻž āĻāϜ āĻĄāĻŋāĻ­āĻžāχāϏ āϏ⧇āϟ āφāĻĒ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦā§‹āĨ¤ + +### Task - Install and start the IoT Edge Runtime + +**IoT Edge runtime āϕ⧇āĻŦāϞ Linux container āĻ āϰāĻžāύ āĻ•āϰ⧇āĨ¤** āĻāϟāĻŋ āϞāĻŋāύāĻžāĻ•ā§āϏ⧇ āϚāϞāĻŦ⧇ āĻ…āĻĨāĻŦāĻž āϞāĻŋāύāĻžāĻ•ā§āϏ āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ āĻŽā§‡āĻļāĻŋāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āωāχāĻ¨ā§āĻĄā§‹āĻœā§‡ āϚāĻžāϞāĻžāύ⧋ āϝāĻžāĻŦ⧇āĨ¤ + +* āφāĻŽāϰāĻž āϝāĻĻāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āφāχāĻ“āϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ āĻšāĻŋāϏāĻžāĻŦ⧇ āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻžāχ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋ, āϤāĻžāĻšāϞ⧇ āĻāϟāĻŋ āϞāĻŋāύāĻžāĻ•ā§āϏ⧇āϰ āĻāĻ•āϟāĻŋ āϏāĻžāĻĒā§‹āĻ°ā§āĻŸā§‡āĻĄ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āϚāĻžāϞāĻžāϝāĻŧ āĻāĻŦāĻ‚ āφāχāĻ“āϟāĻŋ Edge āϰāĻžāύāϟāĻžāχāĻŽ āĻšā§‹āĻ¸ā§āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āφāĻŽāϰāĻž [Microsoft docs āĻāϰ āϞāĻŋāύāĻžāĻ•ā§āϏ āĻ—āĻžāχāĻĄā§‡āϰ āϜāĻ¨ā§āϝ Azure āφāχāĻ“āϟāĻŋ Edge āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ](https://docs.microsoft.com/azure/iot-edge/how-to-install-iot-edge?WT.mc_id=academic-17441-jabenn) āĻĒā§œā§‡ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ + + > 💁 āĻŽāύ⧇ āϰāĻžāĻ–āϤ⧇ āĻšāĻŦ⧇, āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻžāχ āĻ“āĻāϏ āĻĄā§‡āĻŦāĻŋāϝāĻŧāĻžāύ āϞāĻŋāύāĻžāĻ•ā§āϏ⧇āϰ āĻāĻ•āϟāĻŋ āϰ⧂āĻĒāĨ¤ + +* āφāĻŽāϰāĻž āϝāĻĻāĻŋ āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻžāχ āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻ•āϰāĻŋ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāĻ•āϟāĻŋ āϞāĻŋāύāĻžāĻ•ā§āϏ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ āĻĨāĻžāϕ⧇, āϤāĻžāĻšāϞ⧇ āφāĻŽāϰāĻž IoT Edge āϰāĻžāύāϟāĻžāχāĻŽ āϚāĻžāϞāĻžāϤ⧇ āĻĒāĻžāϰāĻŦā§‹āĨ¤ āĻāĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āφāĻŽāϰāĻž [āϞāĻŋāύāĻžāĻ•ā§āϏ āĻ—āĻžāχāĻĄā§‡āϰ āϜāĻ¨ā§āϝ Azure āφāχāĻ“āϟāĻŋ āĻāϜ āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ](https://docs.microsoft.com/azure/iot-edge/how-to-install-iot-edge?WT.mc_id=academic-17441-jabenn) āĻĒā§œā§‡ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ + +* āωāχāĻ¨ā§āĻĄā§‹āĻœā§‡ āφāĻŽāϰāĻž IoT Edge runtime āχāĻ¨ā§āϏāϟāϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ Linux Virtual Machine āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āϝāĻžāϰ āϜāĻ¨ā§āϝ [āωāχāĻ¨ā§āĻĄā§‹āĻœā§‡ IoT Edge runtime āĻĒāϰāĻŋāϚāĻžāϞāύāĻž ](https://docs.microsoft.com/azure/iot-edge/quickstart?WT.mc_id=academic-17441-jabenn#install-and-start-the-iot-edge-runtime) āĻĒ⧜āϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ *Deploy a module* āϏ⧇āĻ•āĻļāύ⧇ āϝāĻžāĻ“ā§ŸāĻžāϰ āĻĒāϰ āĻ•āĻžāϜ āĻŦāĻ¨ā§āϧ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ + +* macOS āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻšāĻ˛ā§āϰ āĻ•ā§āϞāĻžāωāĻĄā§‡ virtual machine (VM) āϤ⧈āϰ⧀ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ IoT Edge āĻŋāĻ¨ā§āϏāϟāϞ āĻ•āϰāĻž āϞāĻŋāύāĻžāĻ•ā§āϏ āĻ­āĻŋāĻāĻŽ āφāĻŽāϰāĻž āĻĄā§‡āĻĒā§āϞ⧟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ āĻāϜāĻ¨ā§āϝ [IoT Edge āĻāϰ āϜāĻ¨ā§āϝ āĻ­āĻžāĻ°ā§āϚ⧁⧟āĻžāϞ āĻŽā§‡āĻļāĻŋāύ](vm-iotedge.md) āĻĒā§œā§‡ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ + +## āĻŽāĻĄā§‡āϞ āĻāĻ•ā§āϏāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāĻž + +Edge āĻ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ, āĻāϟāĻŋ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāĻļāύ āĻĨ⧇āϕ⧇ āĻāĻ•ā§āϏāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāĻļāύ āĻĻ⧁āχ āϧāϰāϪ⧇āϰ āĻŽāĻĄā§‡āϞ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ - āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻŽāĻĄā§‡āϞ āĻāĻŦāĻ‚ āĻ•āĻŽāĻĒā§āϝāĻžāĻ•ā§āϟ āĻŽāĻĄā§‡āϞāĨ¤ āĻ•āĻŽā§āĻĒā§āϝāĻžāĻ•ā§āϟ āĻŽāĻĄā§‡āϞāϗ⧁āϞāĻŋ āĻŽāĻĄā§‡āϞ⧇āϰ āφāĻ•āĻžāϰ āĻ•āĻŽāĻžāϤ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ•ā§ŒāĻļāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āĻāϟāĻŋ āφāχāĻ“āϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻāĻŦāĻ‚ āĻŽā§‹āϤāĻžāϝāĻŧ⧇āύ⧇āϰ āϜāĻ¨ā§āϝ āϝāĻĨ⧇āĻˇā§āϟ āϛ⧋āϟ āĻ•āϰ⧇ āϤ⧋āϞ⧇āĨ¤ + +āϝāĻ–āύ āφāĻŽāϰāĻž āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋ, āϤāĻ–āύ āφāĻŽāϰāĻž *Food* āĻĄā§‹āĻŽā§‡āχāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĻ›āĻŋāϞāĻžāĻŽ, āĻŽāĻĄā§‡āϞāϟāĻŋāϰ āĻāĻ•āϟāĻŋ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āϝāĻž Food āχāĻŽā§‡āϜāϗ⧁āϞāĻŋāϤ⧇ āĻĒā§āϰāĻļāĻŋāĻ•ā§āώāϪ⧇āϰ āϜāĻ¨ā§āϝ āĻ…āĻĒā§āϟāĻŋāĻŽāĻžāχāϜ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāĻļāύ⧇, āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āĻĄā§‹āĻŽā§‡āχāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇, āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰāĻļāĻŋāĻ•ā§āώāĻŖ āϤāĻĨā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āύāϤ⧁āύ āĻĄā§‹āĻŽā§‡āύ⧇āϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻŽāĻĄā§‡āϞāϕ⧇ āĻĒā§āϰāĻļāĻŋāĻ•ā§āώāĻŖ āĻĻāĻŋāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāĻļāύ āĻĻā§āĻŦāĻžāϰāĻž āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ āϏāĻŽāĻ¸ā§āϤ āĻĄā§‹āĻŽā§‡āχāύ āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻāĻŦāĻ‚ āĻ•āĻŽāĻĒā§āϝāĻžāĻ•ā§āϟ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻĒāĻžāĻ“ā§ŸāĻž āϝāĻžā§ŸāĨ¤ + +### āĻ•āĻžāϜ - āĻŽāĻĄā§‡āϞāϟāĻŋāϕ⧇ Food (compact) domain āĻ āĻŸā§āϰ⧇āχāύāĻŋāĻ‚ āĻĒā§āϰāĻĻāĻžāύ + +1. Custom Vision portal āĻ āϝāĻžāĻ“ā§ŸāĻžāϰ āϜāĻ¨ā§āϝ [CustomVision.ai](https://customvision.ai) āϤ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āϏāĻžāχāύ āχāύ āĻ•āϰ⧇ āύāĻŋāχ āϝāĻĻāĻŋ āφāϗ⧇ āĻĨ⧇āϕ⧇ āϏāĻžāχāύ āχāύ āĻ•āϰāĻž āύāĻž āĻĨāĻžāϕ⧇āĨ¤ āĻāĻ–āύ `fruit-quality-detector` āĻĒā§āϰāĻœā§‡āĻ•ā§āϟāϟāĻŋ āϚāĻžāϞ⧁ āĻ•āϰāĻŋāĨ¤ + +1. āĻāĻ–āύ **Settings** āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻŋ (āĻāχ ⚙ āϚāĻŋāĻšā§āύ) + +1. *Domains* āϞāĻŋāĻ¸ā§āϟ āĻĨ⧇āϕ⧇, āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰāĻŋ *Food (compact)* + +1. āϤāĻžāϰāĻĒāϰ *Export Capabilities* āĻĨ⧇āϕ⧇ *Basic platforms (Tensorflow, CoreML, ONNX, ...)* āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻŋāĨ¤ + +1. Settings āĻĒ⧇āχāĻœā§‡āϰ āĻāĻ•āĻĻāĻŽ āύ⧀āĻšā§‡ āĻĨāĻžāĻ•āĻž **Save Changes** āĻ āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻŋāĨ¤ + +1. āĻāĻ–āύ **Train** āĻ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧇, *Quick training* āĻ…āĻĒāĻļāύāϟāĻŋ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰ⧇ āĻŽāĻĄā§‡āϞāϕ⧇ āĻŸā§āϰ⧇āχāύ āĻ•āϰāĻŋāĨ¤ + +### Task - āĻŽāĻĄā§‡āϞ āĻāĻ•ā§āϏāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāĻž + +āĻŽāĻĄā§‡āϞāϟāĻŋ āĻāĻ•āĻŦāĻžāϰ āĻŸā§āϰ⧇āχāύ āĻšā§Ÿā§‡ āϗ⧇āϞ⧇ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϏāĻš āĻāĻ•ā§āϏāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ + +1. **Performance** āĻŸā§āϝāĻžāĻŦ⧇ āĻ—āĻŋā§Ÿā§‡ āĻ•āĻŽā§āĻĒā§āϝāĻžāĻ•ā§āϟ āĻĄā§‹āĻŽā§‡āχāύ⧇āϰ āĻ—āϤ āχāϟāĻžāϰ⧇āĻļāύ āϟāĻŋ āϤ⧇ āϝāĻžāχāĨ¤ + +1. āϏ⧇āĻ–āĻžāύ⧇ āωāĻĒāϰ⧇āϰ āĻĻāĻŋāϕ⧇ **Export** āĻŦāĻžāϟāύ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰāĻŋāĨ¤ + +1. **DockerFile** āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻŋ, āϤāĻžāϰāĻĒāϰ āφāĻŽāĻžāĻĻ⧇āϰ Edge āĻĄāĻŋāĻ­āĻžāχāϏ⧇āϰ āϏāĻžāĻĨ⧇ āĻŽāĻŋāϞ⧇ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻ­āĻžāĻ°ā§āϏāύ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰāĻŋ: + + * Linux computer, Windows computer āĻŦāĻž Virtual Machine āĻ IoT Edge āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϞ⧇, *Linux* āĻ­āĻžāĻ°ā§āϏāύāϟāĻŋ āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻŋāĨ¤ + * Raspberry Pi āĻ IoT Edge āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϞ⧇ , *ARM (Raspberry Pi 3)* āĻ­āĻžāĻ°ā§āϏāύāϟāĻŋ āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻŋāĨ¤ + + > 🎓 Docker āĻšāϞ⧋ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻĒāϰāĻŋāϚāĻžāϞāύāĻžāϰ āϜāĻ¨ā§āϝ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϜāύāĻĒā§āϰāĻŋāϝāĻŧ āĻŸā§āϝ⧁āϞāϗ⧁āϞāĻŋāϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻ•āϟāĻŋ āĻāĻŦāĻ‚ āĻĄāĻ•āĻžāϰ āĻĢāĻžāχāϞ āĻšāϞ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀āϰ āĻāĻ•āϟāĻŋ āϏ⧇āϟāĨ¤ + +1. āĻāĻŦāĻžāϰ **Export** āĻ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰāϞ⧇ Custom Vision āĻāϰ āĻĒā§āĻ°ā§Ÿā§‹āϜāĻ¨ā§€ā§Ÿ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋ āϤ⧈āϰ⧀ āĻšā§Ÿā§‡ āϝāĻžāĻŦ⧇āĨ¤ āϤāĻžāϰāĻĒāϰ **Download** āĻ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧇ āϜāĻŋāĻĒ āĻĢāĻžāχāϞ āφāĻ•āĻžāϰ⧇ āĻāϗ⧁āϞ⧋ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāĻŋāĨ¤ + +1. āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ⧇ āϏ⧇āĻ­ āĻ•āϰāĻžāϰ āĻĒāϰ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰāϟāĻŋ unzip āĻ•āϰāĻŋāĨ¤ + +## āĻĄā§‡āĻĒā§āϞ⧟āĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤāĻ•āϰāĻŖ + +![Containers are built then pushed to a container registry, then deployed from the container registry to an edge device using IoT Edge](../../../../images/container-edge-flow.png) + +āĻāĻ•āĻŦāĻžāϰ āĻŽāĻĄā§‡āϞāϟāĻŋ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāĻžāϰ āĻĒāϰ⧇, āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āĻŦāĻŋāĻ˛ā§āĻĄ āĻ•āϰāĻž āĻĒā§āϰāϝāĻŧā§‹āϜāύ, āϤāĻžāϰāĻĒāϰ āĻāĻ•āϟāĻŋ āĻ•āύāĻŸā§‡āχāύāĻžāϰ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋāϤ⧇ āĻĒ⧁āĻļ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ - āϝāĻž āĻāĻ•āϟāĻŋ āĻ…āύāϞāĻžāχāύ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āϝ⧇āĻ–āĻžāύ⧇ āφāĻŽāϰāĻž āϤāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ IoT Edge āϤāĻžāϰāĻĒāϰ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ āĻĨ⧇āϕ⧇ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰāϟāĻŋ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āĻĒ⧁āĻļ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āĨ¤ + +![THe Azure Container Registry logo](../../../../images/azure-container-registry-logo.png) + +āĻāχ āĻĒāĻžāϠ⧇āϰ āϜāĻ¨ā§āϝ āϝ⧇ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ āϤāĻž āĻšāϞ Azure Container RegistryāĨ¤ āĻāϟāĻŋ āϕ⧋āύ āĻĢā§āϰ⧀ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āύ⧟, āϤāĻžāχ āĻ…āĻ°ā§āĻĨ⧇āϰ āĻ…āĻĒāϚ⧟ āϰ⧋āϧ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ•āĻžāϜ āĻļ⧇āώ āĻšāĻ“ā§ŸāĻžāϰ āĻĒāϰ āφāĻŽāĻžāĻĻ⧇āϰāϕ⧇ [clean up your project](../../../clean-up.md) āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧇ āĻāϟāĻŋ āĻŦāĻ¨ā§āϧ āĻ•āϰ⧇ āĻĻāĻŋāϤ⧇ āĻšāĻŦ⧇āĨ¤ + +> 💁 Azure Container Registry āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ–āϰāϚ āφāĻŽāϰāĻž [Azure Container Registry pricing page](https://azure.microsoft.com/pricing/details/container-registry/?WT.mc_id=academic-17441-jabenn) āĻĨ⧇āϕ⧇ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰāĻŋ āĨ¤ + +### āĻ•āĻžāϜ - Docker āχāĻ¨ā§āϏāϟāϞ āĻ•āϰāĻž + +āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ āĻŦāĻŋāĻ˛ā§āĻĄ āĻāĻŦāĻ‚ āĻĄā§‡āĻĒāϞ⧟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻŽāĻžāĻĻ⧇āϰāϕ⧇ [Docker](https://www.docker.com/) āχāĻ¨ā§āϏāϟāϞ āĻ•āϰ⧇ āϰāĻžāĻ–āϤ⧇ āĻšāĻŦ⧇āĨ¤ + +1. [Docker install page](https://www.docker.com/products/docker-desktop) āĻĨ⧇āϕ⧇ āĻĻ⧇āϖ⧇ āύāĻŋāχ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻāϟāĻŋ āχāĻ¨ā§āϏāϟāϞ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ + +### āĻ•āĻžāϜ - container registry resource āϤ⧈āϰ⧀ + +1. Azure Container Registry resource āϤ⧈āϰ⧀āϰ āϜāĻ¨ā§āϝ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ āĻŦāĻž āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĒā§āϰāĻŽā§āĻĒāϟ āĻĨ⧇āϕ⧇ āύ⧀āĻšā§‡āϰ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϰāĻžāύ āĻĻāĻŋāχ: + + ```sh + az acr create --resource-group fruit-quality-detector \ + --sku Basic \ + --name + ``` + + `` āĻāϰ āĻ¸ā§āĻĨāϞ⧇ āĻāĻ•āϟāĻŋ āχāωāύāĻŋāĻ• āύāĻžāĻŽ āĻĻāĻŋāχ āϕ⧇āĻŦāϞ āĻ…āĻ•ā§āώāϰ āĻ“ āϏāĻ‚āĻ–ā§āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤ āĻāĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ `fruitqualitydetector`āĻāϰ āĻ•āĻžāĻ›āĻžāĻ•āĻžāĻ›āĻŋ āϕ⧋āύ āύāĻžāĻŽ āĻĻā§‡ā§ŸāĻžāχ āϏāĻŽā§€āĻšā§€āύ āĻšāĻŦ⧇āĨ¤ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ āϤ⧇ āĻāĻ•āϏ⧇āϏ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ URL āĻāϰ āĻāĻ•āϟāĻŋ āĻ…āĻ‚āĻļ⧇ āĻāχ āύāĻžāĻŽ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāĻŦ⧇āĨ¤ āϤāĻžāχ āύāĻžāĻŽāϟāĻŋāϕ⧇ āχāωāύāĻŋāĻ• āĻšāϤ⧇ āĻšāĻŦ⧇āĨ¤ + +1. āύāĻŋāĻŽā§āύ⧇āϰ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ Azure Container Registry āϤ⧇ āϞāĻ—āĻŋāύ āĻ•āϰāĻŋ: + + ```sh + az acr login --name + ``` + + `` āĻāϰ āĻ¸ā§āĻĨāϞ⧇ āĻ•āĻ¨ā§āĻŸā§‡āύāĻžāϰ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ āĻāϰ āύāĻžāĻŽ āĻŦāϏāĻžāχ + +1. Container registry āϟāĻŋ admin mode āĻ āϏ⧇āϟ āĻ•āϰāĻŋ āϝāĻžāϤ⧇ āĻĒāĻžāϏāĻ“ā§ŸāĻžāĻ°ā§āĻĄ āϏ⧇āϟ āĻ•āϰāĻž āϝāĻžā§Ÿāσ + + ```sh + az acr update --admin-enabled true \ + --name + ``` + + `` āĻāϰ āĻ¸ā§āĻĨāϞ⧇ āĻ•āĻ¨ā§āĻŸā§‡āύāĻžāϰ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ āĻāϰ āύāĻžāĻŽ āĻŦāϏāĻžāχāĨ¤ + +1. āύāĻŋāĻŽā§āύ⧇āϰ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋā§Ÿā§‡ āĻĒāĻžāϏāĻ“ā§ŸāĻžāĻ°ā§āĻĄ āϏ⧇āϟ āĻ•āϰāĻŋ: + + ```sh + az acr credential renew --password-name password \ + --output table \ + --name + ``` + + `` āĻāϰ āĻ¸ā§āĻĨāϞ⧇ āĻ•āĻ¨ā§āĻŸā§‡āύāĻžāϰ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ āĻāϰ āύāĻžāĻŽ āĻŦāϏāĻžāχ + + `PASSWORD` āĻāϰ āĻ­ā§āϝāĻžāϞ⧁āϟāĻŋ āĻ•āĻĒāĻŋ āĻ•āϰ⧇ āϕ⧋āĻĨāĻžāĻ“ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇ āϰāĻžāĻ–āĻŋ āϕ⧇āύāύāĻž āĻĒāϰ⧇ āĻāϟāĻŋāϰ āĻĒā§āĻ°ā§Ÿā§‹āϜāύ āĻšāĻŦ⧇ + +### āĻ•āĻžāϜ - āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϤ⧈āϰ⧀ āĻ•āϰāĻž + +āφāĻŽāϰāĻž āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāĻļāύ āĻĨ⧇āϕ⧇ āϝāĻž āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰ⧇āĻ›āĻŋāϞāĻžāĻŽ āϤāĻž āĻāĻ•āϟāĻŋ āĻĄāĻ•āĻžāϰāĻĢāĻžāχāϞ āϝāĻž āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰāϟāĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āωāϚāĻŋāϤ āϤāĻžāϰ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀, āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϕ⧋āĻĄ āϏāĻš āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāĻļāύ āĻŽāĻĄā§‡āϞ āĻšā§‹āĻ¸ā§āϟ āĻ•āϰāĻžāϰ āĻĒā§āĻ°ā§Ÿā§‹āϜāĻ¨ā§€ā§Ÿ āĻĢāĻžāχāϞ āĻāĻŦāĻ‚ REST API āĻ°ā§Ÿā§‡āϛ⧇āĨ¤ āφāĻŽāϰāĻž DockerFile āĻĨ⧇āϕ⧇ āĻāĻ•āϟāĻŋ āĻŸā§āϝāĻžāĻ—āϝ⧁āĻ•ā§āϤ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ Docker āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ, āϤāĻžāϰāĻĒāϰ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋāϤ⧇ āĻāϟāĻŋ āĻĒ⧁āĻļ āĻ•āϰ⧇ āĻĻāĻŋāχāĨ¤ + +> 🎓 āĻ•āύāĻŸā§‡āχāύāĻžāϰāϗ⧁āϞāĻŋāϕ⧇ āĻāĻ•āϟāĻŋ āĻŸā§āϝāĻžāĻ— āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧ āϝāĻž āϤāĻžāĻĻ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āύāĻžāĻŽ āĻāĻŦāĻ‚ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤ āϝāĻ–āύ āĻāĻ•āϟāĻŋ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āϤāĻ–āύ āφāĻŽāϰāĻž āĻāϟāĻŋ āĻāĻ•āχ āĻŸā§āϝāĻžāĻ— āĻĻāĻŋāϝāĻŧ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻ­āĻŋāĻ¨ā§āύ āĻ­āĻžāĻ°ā§āϏāύ⧇āĨ¤ + +1. āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ āĻŦāĻž āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĒā§āϰāĻŽā§āĻĒāϟ āĻĨ⧇āϕ⧇ āĻ¨ā§āϝāĻžāĻ­āĻŋāϗ⧇āϟ āĻ•āϰ⧇ āĻ•āĻžā§āϏāϟāĻŽ āĻ­āĻŋāĻļāύ⧇āϰ unzipped model āĻ āϝāĻžāχāĨ¤ + +1. āύāĻŋāĻŽā§āύ⧇āϰ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋā§Ÿā§‡ āχāĻŽā§‡āϜāϗ⧁āϞ⧋ āĻŦāĻŋāĻ˛ā§āĻĄ āĻāĻŦāĻ‚ āĻŸā§āϝāĻžāĻ— āĻ•āϰāĻŋ: + + ```sh + docker build --platform -t .azurecr.io/classifier:v1 . + ``` + + āĻāĻ–āύ `` āĻāϰ āĻ¸ā§āĻĨāϞ⧇ āϝ⧇ āĻĒā§āϞāĻžāϟāĻĢāĻ°ā§āĻŽā§‡ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϰāĻžāύ āĻ•āϰāĻŦ⧇, āϏ⧇āϟāĻŋ āĻĻāĻŋāχāĨ¤ āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻžāχ āĻšāϞ⧇ `linux/arm64`, ⧟āĻžāϰ āĻ…āĻ¨ā§āϝāϏāĻŦ āĻ•āĻŋāϛ⧁āϤ⧇āχ `linux/amd64` āĻĻāĻŋāϤ⧇ āĻšāĻŦ⧇āĨ¤ + + > 💁 āĻāĻ•āχ āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ IoT Edge āϚāĻžāϞāĻžāύ⧋ āĻāĻŦāĻ‚ āĻāχ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāĻ…āϗ⧁āϞ⧋ āϰāĻžāύ āĻ•āϰāĻž āĻšāϞ⧇, `--platform ` āĻ…āĻ‚āĻļāϟāĻŋ āĻŦāĻžāĻĻ āĻĻā§‡ā§ŸāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āϕ⧇āύāύāĻž āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻāϟāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϚāϞāĻŽāĻžāύ āĻĄāĻŋāĻ­āĻžāχāĻ¸ā§āϟāĻŋāϕ⧇ āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰ⧇ āϰāĻžāϖ⧇āĨ¤ + + `` āĻāϰ āĻ¸ā§āĻĨāϞ⧇ āĻ•āĻ¨ā§āĻŸā§‡āύāĻžāϰ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ āĻāϰ āύāĻžāĻŽ āĻŦāϏāĻžāχ + + > 💁 āϞāĻŋāύāĻžāĻ•ā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻ•āϰ⧇ āĻšāϞ⧇, āĻāχ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϰāĻžāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ `sudo` āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ + + Docker āĻāĻ–āĻžāύ⧇ āχāĻŽā§‡āϜ āϤ⧈āϰāĻŋ āĻ•āϰāĻŦ⧇, āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āϏāĻŦ āϏāĻĢāϟāĻ“āϝāĻŧā§āϝāĻžāϰ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻŦ⧇āĨ¤ āϤāĻžāϰāĻĒāϰ āĻ›āĻŦāĻŋāϟāĻŋ `classifier:v1` āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŸā§āϝāĻžāĻ— āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤ + + ```output + ➜ d4ccc45da0bb478bad287128e1274c3c.DockerFile.Linux docker build --platform linux/amd64 -t fruitqualitydetectorjimb.azurecr.io/classifier:v1 . + [+] Building 102.4s (11/11) FINISHED + => [internal] load build definition from Dockerfile + => => transferring dockerfile: 131B + => [internal] load .dockerignore + => => transferring context: 2B + => [internal] load metadata for docker.io/library/python:3.7-slim + => [internal] load build context + => => transferring context: 905B + => [1/6] FROM docker.io/library/python:3.7-slim@sha256:b21b91c9618e951a8cbca5b696424fa5e820800a88b7e7afd66bba0441a764d6 + => => resolve docker.io/library/python:3.7-slim@sha256:b21b91c9618e951a8cbca5b696424fa5e820800a88b7e7afd66bba0441a764d6 + => => sha256:b4d181a07f8025e00e0cb28f1cc14613da2ce26450b80c54aea537fa93cf3bda 27.15MB / 27.15MB + => => sha256:de8ecf497b753094723ccf9cea8a46076e7cb845f333df99a6f4f397c93c6ea9 2.77MB / 2.77MB + => => sha256:707b80804672b7c5d8f21e37c8396f319151e1298d976186b4f3b76ead9f10c8 10.06MB / 10.06MB + => => sha256:b21b91c9618e951a8cbca5b696424fa5e820800a88b7e7afd66bba0441a764d6 1.86kB / 1.86kB + => => sha256:44073386687709c437586676b572ff45128ff1f1570153c2f727140d4a9accad 1.37kB / 1.37kB + => => sha256:3d94f0f2ca798607808b771a7766f47ae62a26f820e871dd488baeccc69838d1 8.31kB / 8.31kB + => => sha256:283715715396fd56d0e90355125fd4ec57b4f0773f306fcd5fa353b998beeb41 233B / 233B + => => sha256:8353afd48f6b84c3603ea49d204bdcf2a1daada15f5d6cad9cc916e186610a9f 2.64MB / 2.64MB + => => extracting sha256:b4d181a07f8025e00e0cb28f1cc14613da2ce26450b80c54aea537fa93cf3bda + => => extracting sha256:de8ecf497b753094723ccf9cea8a46076e7cb845f333df99a6f4f397c93c6ea9 + => => extracting sha256:707b80804672b7c5d8f21e37c8396f319151e1298d976186b4f3b76ead9f10c8 + => => extracting sha256:283715715396fd56d0e90355125fd4ec57b4f0773f306fcd5fa353b998beeb41 + => => extracting sha256:8353afd48f6b84c3603ea49d204bdcf2a1daada15f5d6cad9cc916e186610a9f + => [2/6] RUN pip install -U pip + => [3/6] RUN pip install --no-cache-dir numpy~=1.17.5 tensorflow~=2.0.2 flask~=1.1.2 pillow~=7.2.0 + => [4/6] RUN pip install --no-cache-dir mscviplib==2.200731.16 + => [5/6] COPY app /app + => [6/6] WORKDIR /app + => exporting to image + => => exporting layers + => => writing image sha256:1846b6f134431f78507ba7c079358ed66d944c0e185ab53428276bd822400386 + => => naming to fruitqualitydetectorjimb.azurecr.io/classifier:v1 + ``` + +### āĻ•āĻžāϜ - āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰāϕ⧇ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋāϤ⧇ āĻĒ⧁āĻļ āĻ•āϰāĻž + +1. āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰāϕ⧇ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋāϤ⧇ āĻĒ⧁āĻļ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻŽā§āύ⧇āϰ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϰāĻžāύ āĻĻāĻŋāχ: + + ```sh + docker push .azurecr.io/classifier:v1 + ``` + + `` āĻāϰ āĻ¸ā§āĻĨāϞ⧇ āĻ•āĻ¨ā§āĻŸā§‡āύāĻžāϰ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ āĻāϰ āύāĻžāĻŽ āĻŦāϏāĻžāχ + + > 💁 āϞāĻŋāύāĻžāĻ•ā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻ•āϰ⧇ āĻšāϞ⧇, āĻāχ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϰāĻžāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ `sudo` āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ + + āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰāϟāĻŋ āĻĒ⧁āĻļ āĻšā§Ÿā§‡ āϝāĻžāĻŦ⧇āĨ¤ + + ```output + ➜ d4ccc45da0bb478bad287128e1274c3c.DockerFile.Linux docker push fruitqualitydetectorjimb.azurecr.io/classifier:v1 + The push refers to repository [fruitqualitydetectorjimb.azurecr.io/classifier] + 5f70bf18a086: Pushed + 8a1ba9294a22: Pushed + 56cf27184a76: Pushed + b32154f3f5dd: Pushed + 36103e9a3104: Pushed + e2abb3cacca0: Pushed + 4213fd357bbe: Pushed + 7ea163ba4dce: Pushed + 537313a13d90: Pushed + 764055ebc9a7: Pushed + v1: digest: sha256:ea7894652e610de83a5a9e429618e763b8904284253f4fa0c9f65f0df3a5ded8 size: 2423 + ``` + +1. Push āĻ āĻŋāĻ•āĻŽāϤ āĻšā§Ÿā§‡āϛ⧇ āĻ•āĻŋāύāĻž āϤāĻž āϭ⧇āϰāĻŋāĻĢāĻžāχ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇āϰ āϞāĻŋāĻ¸ā§āϟ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰāĻŋ: + + ```sh + az acr repository list --output table \ + --name + ``` + + `` āĻāϰ āĻ¸ā§āĻĨāϞ⧇ āĻ•āĻ¨ā§āĻŸā§‡āύāĻžāϰ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ āĻāϰ āύāĻžāĻŽ āĻŦāϏāĻžāχ + + ```output + ➜ d4ccc45da0bb478bad287128e1274c3c.DockerFile.Linux az acr repository list --name fruitqualitydetectorjimb --output table + Result + ---------- + classifier + ``` + + āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ⧇āϰ āϞāĻŋāĻ¸ā§āϟ āϚāϞ⧇ āφāϏāĻŦ⧇āĨ¤ + +## āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āĻĄā§‡āĻĒā§āϞ⧟ āĻ•āϰāĻž + +āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āĻāĻ–āύ āφāχāĻ“āϟāĻŋ āĻāϜ āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻĄā§‡āĻĒā§āϞ⧟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ deployment manifest āϕ⧇ āĻĄāĻŋāĻĢāĻžāχāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ - āĻāϟāĻŋ āĻāĻ•āϟāĻŋ JSON āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āϟ āϝāĻž EdgeāĻĄāĻŋāĻ­āĻžāχāϏ⧇ āĻŽāĻĄāĻŋāωāϞāϗ⧁āϞāĻŋ āϤāĻžāϞāĻŋāĻ•āĻžāϭ⧁āĻ•ā§āϤ āĻ•āϰ⧇āĨ¤ + +### āĻ•āĻžāϜ - deployment manifest āϤ⧈āϰ⧀ āĻ•āϰāĻž + +1. āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ⧇ `deployment.json` āύāĻžāĻŽā§‡ āĻāĻ•āϟāĻŋ āĻĢāĻžāχāϞ āϤ⧈āϰ⧀ āĻ•āϰāĻŋāĨ¤ + +1. āύāĻŋāĻŽā§āύ⧇āϰ āĻ…āĻ‚āĻļāϟ⧁āϕ⧁ āϏ⧇āχ āĻĢāĻžāχāϞ⧇ āϝ⧋āĻ— āĻ•āϰāĻŋ: + + ```json + { + "content": { + "modulesContent": { + "$edgeAgent": { + "properties.desired": { + "schemaVersion": "1.1", + "runtime": { + "type": "docker", + "settings": { + "minDockerVersion": "v1.25", + "loggingOptions": "", + "registryCredentials": { + "ClassifierRegistry": { + "username": "", + "password": "", + "address": ".azurecr.io" + } + } + } + }, + "systemModules": { + "edgeAgent": { + "type": "docker", + "settings": { + "image": "mcr.microsoft.com/azureiotedge-agent:1.1", + "createOptions": "{}" + } + }, + "edgeHub": { + "type": "docker", + "status": "running", + "restartPolicy": "always", + "settings": { + "image": "mcr.microsoft.com/azureiotedge-hub:1.1", + "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}" + } + } + }, + "modules": { + "ImageClassifier": { + "version": "1.0", + "type": "docker", + "status": "running", + "restartPolicy": "always", + "settings": { + "image": ".azurecr.io/classifier:v1", + "createOptions": "{\"ExposedPorts\": {\"80/tcp\": {}},\"HostConfig\": {\"PortBindings\": {\"80/tcp\": [{\"HostPort\": \"80\"}]}}}" + } + } + } + } + }, + "$edgeHub": { + "properties.desired": { + "schemaVersion": "1.1", + "routes": { + "upstream": "FROM /messages/* INTO $upstream" + }, + "storeAndForwardConfiguration": { + "timeToLiveSecs": 7200 + } + } + } + } + } + } + ``` + + > 💁 āĻāχ āĻĢāĻžāχāϞāϟāĻŋ [code-deployment/deployment](code-deployment/deployment) folder āĻ āĻĒāĻžāĻ“ā§ŸāĻž āϝāĻžāĻŦ⧇āĨ¤ + + ā§ŠāϟāĻŋ `` āĻāϰ āϜāĻžā§ŸāĻ—āĻžā§Ÿ āφāĻŽāĻžāĻĻ⧇āϰ āĻŦā§āϝāĻŦāĻšā§ƒāϤ container registry āĻāϰ āύāĻžāĻŽ āĻŦāϏāĻžāχāĨ¤ ā§§āϟāĻŋ `ImageClassifier` āĻŽāĻĄāĻŋāωāϞ⧇, āĻŦāĻžāĻ•āĻŋ ⧍āϟāĻŋ `registryCredentials` āĻ…āĻ‚āĻļ⧇ āĻ°ā§Ÿā§‡āϛ⧇āĨ¤ + + āĻāĻ–āύ `` āĻ…āĻ‚āĻļ⧇āϰ `registryCredentials` āϏ⧇āĻ•āĻļāύ⧇ āĻĒāĻžāϏāĻ“ā§ŸāĻžāĻ°ā§āĻĄ āĻĻāĻŋāχāĨ¤ + +1. āϝ⧇ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇ deployment manifest āĻ°ā§Ÿā§‡āϛ⧇ āϏ⧇āĻ–āĻžāύ⧇ āύāĻŋāĻŽā§āύ⧇āϰ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϰāĻžāύ āĻ•āϰāĻŋ: + + ```sh + az iot edge set-modules --device-id fruit-quality-detector-edge \ + --content deployment.json \ + --hub-name + ``` + + `` āĻāϰ āĻ¸ā§āĻĨāϞ⧇ āφāĻŽāĻžāĻĻ⧇āϰ IoT Hub āĻāϰ āύāĻžāĻŽ āĻŦāϏāĻžāχāĨ¤ + + Edge āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ āĻŽāĻĄāĻŋāωāϞāϟāĻŋ āĻĄā§‡āĻĒā§āϞ⧟ āĻšā§Ÿā§‡ āϝāĻžāĻŦ⧇āĨ¤ + +### āĻ•āĻžāϜ - āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰāϟāĻŋ āϚāϞāϛ⧇ āĻ•āĻŋāύāĻž āϤāĻž āϭ⧇āϰāĻŋāĻĢāĻžāχ āĻ•āϰāĻž + +1. IoT edge device āĻ āĻ•āĻžāύ⧇āĻ•ā§āϟ āĻ•āϰāĻž: + + * Raspberry Pi āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻšāϞ⧇, āĻ•āĻžāύ⧇āĻ•ā§āϟ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āĻšā§Ÿ ssh āĻĻāĻŋā§Ÿā§‡ terminal āĻĨ⧇āϕ⧇ āĻĨ⧇āϕ⧇ āĻ…āĻĨāĻŦāĻž āϕ⧋āύ VS Code āĻĨ⧇āϕ⧇ āϕ⧋āύ remote SSH session āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤ + * āωāχāĻ¨ā§āĻĄā§‹āĻœā§‡ Linux container āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻšāϞ⧇, [verify successful configuration guide](https://docs.microsoft.com/azure/iot-edge/how-to-install-iot-edge-on-windows?WT.mc_id=academic-17441-jabenn&view=iotedge-2018-06&tabs=powershell#verify-successful-configuration) āϟāĻŋ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ + * Virtual machine āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻšāϞ⧇, `adminUsername` āĻāĻŦāĻ‚ `password` āϏ⧇āϟ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿāχ SSH āĻ•āϰ⧇ āϰāĻžāĻ–āĻž āϝāĻžā§Ÿ + + ```sh + ssh @ + ``` + + āĻ…āĻĨāĻŦāĻž: + + ```sh + ssh @ + ``` + + āĻĒāĻžāϏāĻ“ā§ŸāĻžāĻ°ā§āĻĄ āϚāĻžāχāϞ⧇, āϤāĻž āĻĒā§āϰāĻŦ⧇āĻļ āĻ•āϰāĻžāχāĨ¤ + +1. āĻ•āĻžāύ⧇āĻ•ā§āϟ āĻšā§Ÿā§‡ āϗ⧇āϞ⧇, IoT Edge module āϗ⧁āϞ⧋ āĻĻ⧇āĻ–āĻžāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻŽā§āύ⧇āϰ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϰāĻžāύ āĻĻāĻŋāχ : + + ```sh + iotedge list + ``` + + > 💁 āĻāĻ–āĻžāύ⧇ `sudo` āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻĒā§āĻ°ā§Ÿā§‹āϜāύ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ + + āϰāĻžāύāĻŋāĻ‚ āĻŽāĻĄāĻŋāωāϞāϗ⧁āϞ⧋ āĻĻ⧇āĻ–āĻž āϝāĻžāĻŦ⧇: + + ```output + jim@fruit-quality-detector-jimb:~$ iotedge list + NAME STATUS DESCRIPTION CONFIG + ImageClassifier running Up 42 minutes fruitqualitydetectorjimb.azurecr.io/classifier:v1 + edgeAgent running Up 42 minutes mcr.microsoft.com/azureiotedge-agent:1.1 + edgeHub running Up 42 minutes mcr.microsoft.com/azureiotedge-hub:1.1 + ``` + +1. Image classifier module āĻāϰ āϞāĻ— āĻšāĻŋāĻ¸ā§āĻŸā§‹āϰāĻŋ āĻĻ⧇āĻ–āϤ⧇ āύāĻŋāĻŽā§āύ⧇āϰ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϰāĻžāύ āĻĻāĻŋāχ : + + ```sh + iotedge logs ImageClassifier + ``` + + > 💁 āĻāχ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻāϰ āϏāĻžāĻĨ⧇ `sudo` āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻĒā§āĻ°ā§Ÿā§‹āϜāύ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ + + ```output + jim@fruit-quality-detector-jimb:~$ iotedge logs ImageClassifier + 2021-07-05 20:30:15.387144: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA + 2021-07-05 20:30:15.392185: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2394450000 Hz + 2021-07-05 20:30:15.392712: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x55ed9ac83470 executing computations on platform Host. Devices: + 2021-07-05 20:30:15.392806: I tensorflow/compiler/xla/service/service.cc:175] StreamExecutor device (0): Host, Default Version + Loading model...Success! + Loading labels...2 found. Success! + * Serving Flask app "app" (lazy loading) + * Environment: production + WARNING: This is a development server. Do not use it in a production deployment. + Use a production WSGI server instead. + * Debug mode: off + * Running on http://0.0.0.0:80/ (Press CTRL+C to quit) + ``` + +### āĻ•āĻžāϜ - āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰāĻž + +1. CURL āĻĻāĻŋā§Ÿā§‡ image classifier āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰāĻž āϝāĻžā§Ÿ āϝ⧇āĻ–āĻžāύ⧇ IP address āĻŦāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ⧇āϰ āĻšā§‹āĻ¸ā§āϟ āύ⧇āχāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāĻŦ⧇ āϝ⧇āϟāĻŋāϤ⧇ IoT Edge agent āϚāϞāĻŽāĻžāύ āĻ°ā§Ÿā§‡āϛ⧇āĨ¤ IP address āϖ⧁āĻœā§‡ āĻŦ⧇āϰ āĻ•āϰāĻŋ: + + * IoT Edge āϝ⧇ āĻŽā§‡āĻļāĻŋāύ⧇ āϰāĻžāύ āĻšā§āĻšā§āϛ⧇ āϏ⧇āϟāĻŋ āĻĨ⧇āϕ⧇ āĻ•āĻžāϜ āĻ•āϰāϞ⧇, āĻšā§‹āĻ¸ā§āϟ āύ⧇āĻŽ āĻšāĻŦ⧇ `localhost` āĨ¤ + * VM (āĻ­āĻžāĻ°ā§āϚ⧁⧟āĻžāϞ āĻŽā§‡āĻļāĻŋāύ) āĻĨ⧇āϕ⧇ āĻ•āĻžāϜ āĻ•āϰāϞ⧇ IP address āĻ…āĻĨāĻŦāĻž āĻ­āĻŋāĻāĻŽ āĻāϰ DNS name āĻĻāĻŋāϤ⧇ āĻšāĻŦ⧇āĨ¤ + * āĻ…āĻ¨ā§āϝāĻĨāĻžā§Ÿ IoT Edge āϝ⧇ āĻŽā§‡āĻļāĻŋāύ⧇ āϚāϞāϛ⧇ āϏ⧇āϟāĻŋāϰ āφāχāĻĒāĻŋ āĻāĻĄā§āϰ⧇āϏ āϜāĻžāύāĻžāϰ āĻ…āĻ¨ā§āϝ, āϝāĻž āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϤāĻž āĻšāϞ⧋: + * Windows 10 āĻ [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) āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāĻŋāĨ¤ + * macOS āĻšāϞ⧇ [how to find you IP address on a Mac guide](https://www.hellotech.com/guide/for/how-to-find-ip-address-on-mac) āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāĻŋāĨ¤ + * linux āĻšāϞ⧇, [how to find your IP address in Linux guide](https://opensource.com/article/18/5/how-find-ip-address-linux) āĻĨ⧇āϕ⧇ āĻĒā§āϰāĻžāχāϭ⧇āϟ āĻāĻĄā§āϰ⧇āϏ⧇āϰ āĻ…āĻ‚āĻļāϟāĻŋ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāĻŋāĨ¤ + +1. āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰāϕ⧇ āϞ⧋āĻ•āĻžāϞ āĻĢāĻžāχāϞ āĻĻāĻŋā§Ÿā§‡ āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰāϤ⧇ āύ⧀āĻšā§‡āϰ curl āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋ: + + ```sh + curl --location \ + --request POST 'http:///image' \ + --header 'Content-Type: image/png' \ + --data-binary '@' + ``` + + `` āĻāϰ āϜāĻžā§ŸāĻ—āĻžā§Ÿ āφāĻŽāĻžāĻĻ⧇āϰ IP address āĻŦāĻž host name āĻĻāĻŋāχ āϝ⧇āϟāĻŋ āĻĨ⧇āϕ⧇ IoT Edge āϚāϞāϛ⧇ āĻāĻŦāĻ‚ `` āĻ™ā§āϗ⧇āϰ āϜāĻžā§ŸāĻ—āĻžā§Ÿ āϝ⧇ āĻĢāĻžāχāϞ āĻĻāĻŋā§Ÿā§‡ āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰāĻž āĻšāĻŦ⧇, āϏ⧇āϟāĻŋāϰ āύāĻžāĻŽ āĻĻāĻŋāχāĨ¤ + + āφāωāϟāĻĒ⧁āĻŸā§‡ āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āϰ⧇āϜāĻžāĻ˛ā§āϟ āĻĻ⧇āĻ–āĻž āϝāĻžāĻŦ⧇āĨ¤ + + ```output + { + "created": "2021-07-05T21:44:39.573181", + "id": "", + "iteration": "", + "predictions": [ + { + "boundingBox": null, + "probability": 0.9995615482330322, + "tagId": "", + "tagName": "ripe" + }, + { + "boundingBox": null, + "probability": 0.0004384400090202689, + "tagId": "", + "tagName": "unripe" + } + ], + "project": "" + } + ``` + + > 💁 āĻāĻ–āĻžāύ⧇ āĻāĻ•āϟāĻŋ āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āϕ⧀ (key) āϏāϰāĻŦāϰāĻžāĻš āĻ•āϰāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύ⧇āχ, āĻ•āĻžāϰāĻŖ āĻāϟāĻŋ Azure āϰāĻŋāϏ⧋āĻ°ā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϛ⧇ āύāĻžāĨ¤ āĻĒāĻžāĻŦāϞāĻŋāĻ• āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āĻāĻŦāĻ‚ āĻāĻĒāĻŋāφāχ āϕ⧀ (key) -āĻāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āύāĻž āĻ•āϰ⧇, āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧇āϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋāϤ⧇ āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤ + +## āφāĻŽāĻžāĻĻ⧇āϰ IoT Edge device āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž + +āĻāĻ–āύ āϝ⧇āĻšā§‡āϤ⧁ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āĻāĻ•āϟāĻŋ āφāχāĻ“āϟāĻŋ āĻāϜ āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āĻāϟāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āφāχāĻ“āϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦā§‹āĨ¤ + +### āĻ•āĻžāϜ - āφāĻŽāĻžāĻĻ⧇āϰ IoT Edge device āĻŦā§āϝāĻŦāĻšāĻžāϰ + +IoT Edge classifier āĻĻāĻŋā§Ÿā§‡ āĻ›āĻŦāĻŋ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāχ āĻ•āϰāϤ⧇, āύāĻŋāĻŽā§āύ⧇āϰ āĻ—āĻžāχāĻĄāϗ⧁āϞ⧋ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāĻŋ: + +* [Arduino - Wio Terminal](../wio-terminal.md) +* [Single-board computer - Raspberry Pi/Virtual IoT device](../single-board-computer.md) + +### Model retraining + +IoT Edge- āĻ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āϚāĻžāϞāĻžāύ⧋āϰ āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āĻšāϞ āĻāϗ⧁āϞāĻŋ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāĻļāύ āĻĒā§āϰāĻœā§‡āĻ•ā§āĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āύāϝāĻŧāĨ¤ āϝāĻĻāĻŋ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāĻļāύ⧇ **Predictions** āĻŸā§āϝāĻžāĻŦāϟāĻŋ āĻĻ⧇āĻ–āĻŋ, āϤāĻŦ⧇ āĻāϜ-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻļā§āϰ⧇āĻŖā§€āĻŦāĻĻā§āϧ āĻ•āϰāĻž āĻ›āĻŦāĻŋāϗ⧁āϞāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ āύāĻžāĨ¤ + +āϏāĻ¤ā§āϝāĻŋ āĻŦāϞāϤ⧇ āϗ⧇āϞ⧇ āĻāϟāĻŋ āĻāϕ⧇āĻŦāĻžāϰ⧇ āĻĒā§āϰāĻ¤ā§āϝāĻžāĻļāĻŋāϤ āĻāĻ•āϟāĻŋ āφāϚāϰāĻŖ - āĻ›āĻŦāĻŋāϗ⧁āϞāĻŋ āĻ•ā§āϞāĻžāωāĻĄā§‡ āĻļā§āϰ⧇āĻŖāĻŋāĻŦāĻŋāĻ¨ā§āϝāĻžāϏ⧇āϰ āϜāĻ¨ā§āϝ āĻĒāĻžāĻ āĻžāύ⧋ āĻšāϝāĻŧ āύāĻž, āϤāĻžāχ āϏ⧇āϗ⧁āϞāĻŋ āĻ•ā§āϞāĻžāωāĻĄā§‡ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāĻŦ⧇ āύāĻžāĨ¤ āφāχāĻ“āϟāĻŋ āĻāϜ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āĻāĻ•āϟāĻŋ āϏ⧁āĻŦāĻŋāϧāĻž āĻšāϞ āĻ—ā§‹āĻĒāύ⧀āϝāĻŧāϤāĻž, āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāĻž āϝ⧇ āĻ›āĻŦāĻŋāϗ⧁āϞāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻāϰ āĻŦāĻžāχāϰ⧇ āϝāĻžāĻŦ⧇āύāĻžāĨ¤ āφāĻŦāĻžāϰ āĻāϟāĻŋ āĻ…āĻĢāϞāĻžāχāύ⧇ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻšāĻšā§āϛ⧇, āϤāĻžāχ āϝāĻ–āύ āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āχāĻ¨ā§āϟāĻžāϰāύ⧇āϟ āϏāĻ‚āϝ⧋āĻ— āύ⧇āχ āϤāĻ–āύ āĻ›āĻŦāĻŋ āφāĻĒāϞ⧋āĻĄ āĻ•āϰāĻžāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ āύāĻžāĨ¤ āύ⧇āϤāĻŋāĻŦāĻžāϚāĻ• āĻĻāĻŋāĻ•āϟāĻŋ āĻšāϞ⧋ āϝ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻŽāĻĄā§‡āϞ⧇āϰ āωāĻ¨ā§āύāϤāĻŋ āĻ āĻŋāĻ•āĻŽāϤ āĻšāĻšā§āϛ⧇āύāĻž - āφāĻŽāĻžāĻĻ⧇āϰāϕ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ⧇āϰ āωāĻ¨ā§āύāϤāĻŋ āĻāĻŦāĻ‚ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻĒā§āϰāĻļāĻŋāĻ•ā§āώāϪ⧇āϰ āϜāĻ¨ā§āϝ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāχ āĻ•āϰāĻž āϝāĻžāϝāĻŧ āĻāĻŽāύ āĻ›āĻŦāĻŋ āϏāĻ‚āϰāĻ•ā§āώāϪ⧇āϰ āĻ…āĻ¨ā§āϝ āωāĻĒāĻžāϝāĻŧ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ + + +✅ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻĒā§āϰāĻļāĻŋāĻ•ā§āώāĻŖ āĻĻ⧇āĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āĻ›āĻŦāĻŋ āφāĻĒāϞ⧋āĻĄ āĻ•āϰāĻžāϰ āωāĻĒāĻžāϝāĻŧ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰāĻŋāĨ¤ + +--- + +## 🚀 āĻšā§āϝāĻžāϞ⧇āĻžā§āϜ + +Edge āĻĄāĻŋāĻ­āĻžāχāϏ⧇ AI āĻŽāĻĄā§‡āϞ āϚāĻžāϞāĻžāύ⧋ āĻ•ā§āϞāĻžāωāĻĄā§‡āϰ āϤ⧁āϞāύāĻžā§Ÿ āĻĻā§āϰ⧁āϤāϤāϰ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ - āĻ•āĻžāϰāĻŖ āϏ⧇āĻ–āĻžāύ⧇ network hop āϛ⧋āϟ āĨ¤ āϤāĻŦ⧇ āĻšāĻžāĻ°ā§āĻĄāĻ“āϝāĻŧā§āϝāĻžāϰ āĻāϰ āĻĢāϞ⧇ āϤāĻž āϧ⧀āϰāĻ“ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ ,āφāϰ āϤāĻžāχ āĻŽāĻĄā§‡āϞāϟāĻŋ āĻ•ā§āϞāĻžāωāĻĄā§‡āϰ āĻŽāϤ⧋ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ āύāĻžāĻ“ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ + +āϏāĻŽāϝāĻŧāĻ•ā§āώ⧇āĻĒāύ āĻāϰ āύ⧋āϟ āύāĻŋāχ āĻāĻŦāĻ‚ āϤ⧁āϞāύāĻž āĻ•āϰāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ Edge āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āĻ•āĻžāϜ, āĻ•ā§āϞāĻžāωāĻĄā§‡ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āĻšā§‡āϝāĻŧ⧇ āĻĻā§āϰ⧁āϤ āĻŦāĻž āϧ⧀āϰ - āϕ⧋āύāϟāĻŋ āϘāĻŸā§‡? āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āĻāϰ āĻ•āĻžāϰāĻŖ, āĻŦāĻž āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āύāĻž āĻĨāĻžāĻ•āϞ⧇ āϏ⧇āϟāĻŋ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰāĻŋāĨ¤ āĻŦāĻŋāĻļ⧇āώ āĻšāĻžāĻ°ā§āĻĄāĻ“āϝāĻŧā§āϝāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ Edge āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āĻāφāχ āĻŽāĻĄā§‡āϞāϗ⧁āϞāĻŋ āĻĻā§āϰ⧁āϤ āϚāĻžāϞāĻžāύ⧋āϰ āωāĻĒāĻžāϝāĻŧāϗ⧁āϞāĻŋ āĻ—āĻŦ⧇āώāĻŖāĻž āĻ•āϰāĻŋāĨ¤ + + +## āϞ⧇āĻ•āϚāĻžāϰ-āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϕ⧁āχāϜ + +[āϞ⧇āĻ•āϚāĻžāϰ-āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϕ⧁āχāϜ](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/34) + +## āϰāĻŋāĻ­āĻŋāω āĻāĻŦāĻ‚ āĻ¸ā§āĻŦ-āĻ…āĻ§ā§āϝ⧟āύ + +* āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϜāĻžāύāϤ⧇ āĻĒ⧜āϤ⧇ āĻĒāĻžāϰāĻŋ - [OS-level virtualization page on Wikipedia](https://wikipedia.org/wiki/OS-level_virtualization) +* Edge computing āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϜāĻžāύāϤ⧇ āĻšāϞ⧇, āĻĒ⧜āϤ⧇ āĻĒāĻžāϰāĻŋ - [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) +* IoT Edge āĻ āϚāϞāĻŽāĻžāύ AI service āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϜāĻžāύāϤ⧇ āĻšāϞ⧇, āĻĒ⧜āϤ⧇ āĻĒāĻžāϰāĻŋ - [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) + +## āĻāϏāĻžāχāύāĻŽā§‡āĻ¨ā§āϟ + +[Edge āĻ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻž](assignment.bn.md) diff --git a/4-manufacturing/lessons/3-run-fruit-detector-edge/translations/assignment.bn.md b/4-manufacturing/lessons/3-run-fruit-detector-edge/translations/assignment.bn.md new file mode 100644 index 00000000..e5adf974 --- /dev/null +++ b/4-manufacturing/lessons/3-run-fruit-detector-edge/translations/assignment.bn.md @@ -0,0 +1,14 @@ +# Edge āĻ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻž + +## āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀ + +Edge āĻ āϝ⧇ āϕ⧇āĻŦāϞ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āϚāĻžāϞāĻžāύ⧋ āϝāĻžāϝāĻŧ āϤāĻž āĻ•āĻŋāĻ¨ā§āϤ⧁ āύ⧟, āĻŦāϰāĻ‚ āϝ⧇āϕ⧋āύ āĻ•āĻžāϜ āϝāĻž āĻāĻ•āϟāĻŋ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻĒā§āϝāĻžāϕ⧇āϜ āĻ•āϰāĻž āϝāĻžāϝāĻŧ āϤāĻž IoT Edge āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āϏāĻžāĻ°ā§āĻ­āĻžāϰāϞ⧇āϏ āϕ⧋āĻĄ āϝāĻž Azure Functions āĻšāĻŋāϏāĻžāĻŦ⧇ āϚāϞ⧇, āϝ⧇āĻŽāύ āφāϗ⧇āϰ āϞ⧇āϏāύāϗ⧁āϞāĻŋāϤ⧇ āϤ⧈āϰāĻŋ āĻŸā§āϰāĻŋāĻ—āĻžāϰāϗ⧁āϞāĻŋ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āϚāĻžāϞāĻžāύ⧋ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āĻāϰ āϜāĻ¨ā§āϝ IoT Edge āĻāĻ“ āϤāĻž āϚāϞāĻŦ⧇āĨ¤ + +āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āĻĒāĻžāĻ āϗ⧁āϞāĻŋāϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻ•āϟāĻŋ āĻŦ⧇āϛ⧇ āύāĻŋāχ āĻāĻŦāĻ‚ IoT Edge āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ Azure Functions āĻ…ā§āϝāĻžāĻĒāϟāĻŋ āϚāĻžāϞāĻžāύ⧋āϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŋāĨ¤ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻāĻ•āϟāĻŋ āĻ­āĻŋāĻ¨ā§āύ Functions App āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ•āϰāĻž āϝāĻžāϝāĻŧ āϤāĻžāϰ āϜāĻ¨ā§āϝ [āϟāĻŋāωāĻŸā§‹āϰāĻŋ⧟āĻžāϞ: Azure Functions āϕ⧇ IoT Edge modules āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĄā§‡āĻĒā§āϞ⧟ āĻ•āϰāĻž](https://docs.microsoft.com/azure/iot-edge/tutorial-deploy-function?WT.mc_id=academic-17441-jabenn&view=iotedge-2020-11) āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ + + +## āĻāϏāĻžāχāύāĻŽā§‡āĻ¨ā§āϟ āĻŽā§‚āĻ˛ā§āϝāĻžā§Ÿāύ āĻŽāĻžāύāĻĻāĻ¨ā§āĻĄ + +| āĻ•ā§āϰāĻžāχāĻŸā§‡āϰāĻŋ⧟āĻž | āĻĻ⧃āĻˇā§āϟāĻžāĻ¨ā§āϤāĻŽā§‚āϞāĻ• (āϏāĻ°ā§āĻŦā§‹āĻ¤ā§āϤāĻŽ) | āĻĒāĻ°ā§āϝāĻžāĻĒā§āϤ (āĻŽāĻžāĻāĻžāϰāĻŋ) | āωāĻ¨ā§āύāϤāĻŋ āĻĒā§āϰāϝāĻŧā§‹āϜāύ (āύāĻŋāĻŽā§āύāĻŽāĻžāύ) | +| --------- | ------------------ | -------------- | -------------------- | +| Azure Functions āϕ⧇ IoT Edge āĻ āĻĄā§‡āĻĒā§āϞ⧟ āĻ•āϰāĻž | IoT Edge āĻ āĻāĻ•āϟāĻŋ Azure Functions App āĻĄā§‡āĻĒā§āϞ⧟ āĻ•āϰ⧇, āφāχāĻ“āϟāĻŋ āĻĄā§‡āϟāĻž āĻĨ⧇āϕ⧇ āĻŸā§āϰāĻŋāĻ—āĻžāϰ āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āφāχāĻ“āϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ⧇āϰ āϏāĻžāĻĨ⧇ āĻāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āϏāĻĢāϞ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ | IoT Edge āĻ āĻāĻ•āϟāĻŋ Functions App āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŸā§āϰāĻŋāĻ—āĻžāϰāϟāĻŋ āĻĻāĻŋā§Ÿā§‡ āĻ•āĻžāϜ āϏāĻŽā§āĻĒāĻ¨ā§āύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĻŋ | IoT Edge āĻ āĻāĻ•āϟāĻŋ Functions App āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻžāĻ°ā§āĻĨ āĻ›āĻŋāϞ| From 3456c02ff15502e31fb65f25adfd1de3ad0cdbac Mon Sep 17 00:00:00 2001 From: Mirza Nihal Baig <53098259+nihalbaig0@users.noreply.github.com> Date: Thu, 21 Oct 2021 01:07:48 +0600 Subject: [PATCH 07/30] [BN Translation] Check Fruit from Device Assignment (#335) * [BN Translation] Check Fruit from Device * deleted dummy.md * check fruit from device changed based on review * removed the english sentence that was translated * [BN Translation] translated assignment and updated path in readme file Co-authored-by: Jim Bennett --- .../translations/README.bn.md | 2 +- .../translations/assignment.bn.md | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 4-manufacturing/lessons/2-check-fruit-from-device/translations/assignment.bn.md diff --git a/4-manufacturing/lessons/2-check-fruit-from-device/translations/README.bn.md b/4-manufacturing/lessons/2-check-fruit-from-device/translations/README.bn.md index bfa11bdf..fff56fb2 100644 --- a/4-manufacturing/lessons/2-check-fruit-from-device/translations/README.bn.md +++ b/4-manufacturing/lessons/2-check-fruit-from-device/translations/README.bn.md @@ -205,4 +205,4 @@ model āϕ⧇ āωāĻ¨ā§āύāϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž IoT āĻĄāĻŋ ## āĻāϏāĻžāχāύāĻŽā§‡āĻ¨ā§āϟ -[āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻŋāϕ⧇āĻļāύ āϰ⧇āϜāĻžāĻ˛ā§āĻŸā§‡āϰ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋ⧟āĻž āϜāĻžāύāĻžāύ⧋](../assignment.md) +[āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻŋāϕ⧇āĻļāύ āϰ⧇āϜāĻžāĻ˛ā§āĻŸā§‡āϰ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋ⧟āĻž āϜāĻžāύāĻžāύ⧋](./assignment.bn.md) diff --git a/4-manufacturing/lessons/2-check-fruit-from-device/translations/assignment.bn.md b/4-manufacturing/lessons/2-check-fruit-from-device/translations/assignment.bn.md new file mode 100644 index 00000000..268e610c --- /dev/null +++ b/4-manufacturing/lessons/2-check-fruit-from-device/translations/assignment.bn.md @@ -0,0 +1,13 @@ +# āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻŋāϕ⧇āĻļāύ āϰ⧇āϜāĻžāĻ˛ā§āĻŸā§‡āϰ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋ⧟āĻž āϜāĻžāύāĻžāύ⧋ + +## āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀ + +āφāĻŽāĻžāĻĻ⧇āϰ āĻĄāĻŋāĻ­āĻžāχāϏ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāχ āĻ•āϰ⧇āϛ⧇, āĻāĻŦāĻ‚ āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ⧇āϰ āĻŽāĻžāύ āϗ⧁āϞ⧋ āφāϛ⧇āĨ¤ āφāĻŽāĻžāĻĻ⧇āϰ āĻĄāĻŋāĻ­āĻžāχāϏ āĻāχ āϤāĻĨā§āϝ āϗ⧁āϞ⧋ āĻĻāĻŋā§Ÿā§‡ āĻ•āĻŋāϛ⧁ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ - āĻāϟāĻž āĻĒā§āϰāϏ⧇āϏāĻŋāĻ‚ āĻāϰ āϜāĻ¨ā§āϝ IoT Hub āĻ āĻĒāĻžāĻ āĻžāϤ⧇ āĻĒāĻžāϰ⧇ āĻ…āĻ¨ā§āϝ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āϗ⧁āϞ⧋ āĻĻāĻŋā§Ÿā§‡, āĻ…āĻĨāĻŦāĻž āĻāϟāĻž āĻāĻ•āϟāĻž actuator āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āϝ⧇āĻŽāύ LED āφāϞ⧋āĻ•āĻŋāϤ āĻšāĻŦ⧇ āϝāĻ–āύ āĻĢāϞ āĻ•āĻžāρāϚāĻžāĨ¤ + +āφāĻŽāĻžāĻĻ⧇āϰ āĻĄāĻŋāĻ­āĻžāχāϏ āĻ āφāĻŽāĻžāĻĻ⧇āϰ āĻŽāϤ āĻ•āϰ⧇ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋ⧟āĻž āϜāĻžāύāĻžāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŽāύ āĻ­āĻžāĻŦ⧇ āϕ⧋āĻĄ āĻ•āϰāĻŋ - āĻšā§Ÿ IoT Hub āĻ āĻĄāĻžāϟāĻž āĻĒāĻžāĻ āĻžāĻŦ⧇ , actuator āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞ āĻ•āϰāĻŦ⧇, āĻ…āĻĨāĻŦāĻž āĻĻ⧁āĻŸā§‹ āϕ⧇ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻ•āϰāĻŦ⧇ āĻāĻŦāĻ‚ IoT Hub āĻ āĻĄāĻžāϟāĻž āĻĒāĻžāĻ āĻžāĻŦ⧇ āĻ•āĻŋāϛ⧁ āϏāĻžāĻ°ā§āĻ­āĻžāϰāϞ⧇āϏ āϕ⧋āĻĄ āĻĻāĻŋā§Ÿā§‡ āϝ⧇āϟāĻž āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāĻŦ⧇ āĻĢāϞ āϟāĻž āĻĒāĻžāĻ•āĻž āύāĻžāĻ•āĻŋ āύāĻž āĻāĻŦāĻ‚ actuator āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞ āĻ•āϰāĻžāϰ āĻāĻ•āϟāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĢ⧇āϰāϤ āĻĒāĻžāĻ āĻžāĻŦ⧇āĨ¤ + +## āĻāϏāĻžāχāύāĻŽā§‡āĻ¨ā§āϟ āĻŽā§‚āĻ˛ā§āϝāĻžā§Ÿāύ āĻŽāĻžāύāĻĻāĻ¨ā§āĻĄ + +| āĻ•ā§āϰāĻžāχāĻŸā§‡āϰāĻŋ⧟āĻž | āĻĻ⧃āĻˇā§āϟāĻžāĻ¨ā§āϤāĻŽā§‚āϞāĻ• (āϏāĻ°ā§āĻŦā§‹āĻ¤ā§āϤāĻŽ) | āĻĒāĻ°ā§āϝāĻžāĻĒā§āϤ (āĻŽāĻžāĻāĻžāϰāĻŋ) | āωāĻ¨ā§āύāϤāĻŋ āĻĒā§āϰāϝāĻŧā§‹āϜāύ (āύāĻŋāĻŽā§āύāĻŽāĻžāύ) | +| --------- | ------------------ | -------------- | -------------------- | +| āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ⧇āϰ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋ⧟āĻž āϜāĻžāύāĻžāύ⧋ | āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ⧇āϰ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋ⧟āĻž āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āĻ•āϰāϤ⧇ āĻĒ⧇āϰ⧇āϛ⧇ āϝ⧇āϟāĻž āĻāĻ•āχ āĻŽāĻžāύ⧇āϰ āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ⧇āϰ āϏāĻžāĻĨ⧇ āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ | āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰāĻļā§€āϞ āύāĻž āĻāĻŽāύ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋ⧟āĻž āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āĻ•āϰāϤ⧇ āĻĒ⧇āϰ⧇āϛ⧇, āϝ⧇āĻŽāύ IoT Hub āĻ āĻŽā§‚āϞ āĻĄāĻžāϟāĻž āĻĒā§āϰ⧇āϰāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇| āĻĄāĻŋāĻ­āĻžāχāϏ āϟāĻžāϕ⧇ āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ⧇āϰ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋ⧟āĻž āĻĻ⧇āĻ–āĻžāύ⧋āϰ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻžāχ | \ No newline at end of file From 48c96092b574164f3c247bb7fed19da9f4a9866f Mon Sep 17 00:00:00 2001 From: Jim Bennett Date: Wed, 20 Oct 2021 12:53:41 -0700 Subject: [PATCH 08/30] Update pi-text-to-speech.md --- .../3-spoken-feedback/pi-text-to-speech.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/6-consumer/lessons/3-spoken-feedback/pi-text-to-speech.md b/6-consumer/lessons/3-spoken-feedback/pi-text-to-speech.md index 2447dc5d..f8e7befe 100644 --- a/6-consumer/lessons/3-spoken-feedback/pi-text-to-speech.md +++ b/6-consumer/lessons/3-spoken-feedback/pi-text-to-speech.md @@ -103,21 +103,21 @@ Each language supports a range of different voices, and you can make a REST requ ```python def play_speech(speech): - with wave.open(speech, 'rb') as wave_file: - stream = audio.open(format=audio.get_format_from_width(wave_file.getsampwidth()), - channels=wave_file.getnchannels(), - rate=wave_file.getframerate(), - output_device_index=speaker_card_number, - output=True) + with wave.open(speech, 'rb') as wave_file: + stream = audio.open(format=audio.get_format_from_width(wave_file.getsampwidth()), + channels=wave_file.getnchannels(), + rate=wave_file.getframerate(), + output_device_index=speaker_card_number, + output=True) - data = wave_file.readframes(4096) - - while len(data) > 0: - stream.write(data) data = wave_file.readframes(4096) - stream.stop_stream() - stream.close() + while len(data) > 0: + stream.write(data) + data = wave_file.readframes(4096) + + stream.stop_stream() + stream.close() ``` This code uses a PyAudio stream, the same as capturing audio. The difference here is the stream is set as an output stream, and data is read from the audio data and pushed to the stream. From 2bf8b24c6113cb7142a15dcc0ab28aa65f729ed8 Mon Sep 17 00:00:00 2001 From: "Mohammad Iftekher (Iftu) Ebne Jalal" Date: Tue, 26 Oct 2021 21:05:01 +0600 Subject: [PATCH 09/30] [Bn Translation] Fixes (#336) * Quick Fix BN Translation * Update README.bn.md * Update README.bn.md * Update BN check-fruit-from-device --- .../translations/README.bn.md | 87 ++++++------------- translations/README.bn.md | 2 +- 2 files changed, 28 insertions(+), 61 deletions(-) diff --git a/4-manufacturing/lessons/2-check-fruit-from-device/translations/README.bn.md b/4-manufacturing/lessons/2-check-fruit-from-device/translations/README.bn.md index fff56fb2..eb5ce53e 100644 --- a/4-manufacturing/lessons/2-check-fruit-from-device/translations/README.bn.md +++ b/4-manufacturing/lessons/2-check-fruit-from-device/translations/README.bn.md @@ -10,123 +10,98 @@ ## āϏ⧂āϚāύāĻž -āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āϞ⧇āϏāύ āĻ āφāĻŽāϰāĻž āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ āύāĻŋā§Ÿā§‡ āϜāĻžāύāϞāĻžāĻŽ, āĻāĻŦāĻ‚ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āϤāĻžāĻĻ⧇āϰ train āĻ•āϰāĻž āϝāĻžā§Ÿ āĻ­āĻžāϞ āĻāĻŦāĻ‚ āĻ–āĻžāϰāĻžāĻĒ āĻĢāϞ āϏāύāĻžāĻ•ā§āϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝāĨ¤ āĻāχ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ āϟāĻžāϕ⧇ IoT āĻāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āφāĻŽāĻžāĻĻ⧇āϰāϕ⧇ āϕ⧋āύ⧋ āϧāϰāύ⧇āϰ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻĻāĻŋā§Ÿā§‡ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āĻāχ āχāĻŽā§‡āϜ āϟāĻžāϕ⧇ āĻ•ā§āϞāĻžāωāĻĄ āĻ āĻĒāĻžāĻ āĻžāϤ⧇ āĻšāĻŦ⧇āĨ¤ +āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āϞ⧇āϏāύ āĻ āφāĻŽāϰāĻž āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ āύāĻŋā§Ÿā§‡ āϜāĻžāύāϞāĻžāĻŽ āĻāĻŦāĻ‚ āφāϰ⧋ āĻœā§‡āύ⧇āĻ›āĻŋ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āϤāĻžāĻĻ⧇āϰāϕ⧇ āĻĒā§āϰāĻļāĻŋāĻ•ā§āώāĻŋāϤ (train) āĻ•āϰāĻž āϝāĻžā§Ÿ āĻ­āĻžāϞ āĻāĻŦāĻ‚ āĻ–āĻžāϰāĻžāĻĒ āĻĢāϞ āϏāύāĻžāĻ•ā§āϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝāĨ¤ āĻāχ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ IoT āĻāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āφāĻŽāĻžāĻĻ⧇āϰāϕ⧇ āϕ⧋āύ⧋ āϧāϰāύ⧇āϰ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻĻāĻŋā§Ÿā§‡ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āϏ⧇āχ āχāĻŽā§‡āϜāϟāĻŋ āĻ•ā§āϞāĻžāωāĻĄ āĻ āĻĒāĻžāĻ āĻžāϤ⧇ āĻšāĻŦ⧇āĨ¤ -āĻāχ āϞ⧇āϏāύ āĻ āφāĻŽāϰāĻž āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ āύāĻŋā§Ÿā§‡ āϜāĻžāύāĻŦā§‹ , āĻāĻŦāĻ‚ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻāϗ⧁āϞ⧋āϕ⧇ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϰ āϏāĻžāĻĨ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāϤ⧇ āĻšā§ŸāĨ¤ āφāĻŽāϰāĻž āφāϰ⧋ āϜāĻžāύāĻŦā§‹ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰāϟāĻžāϕ⧇ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āĻ•āϞ āĻ•āϰāϤ⧇ āĻšā§ŸāĨ¤ +āĻāχ āϞ⧇āϏāύ āĻ āφāĻŽāϰāĻž āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ āύāĻŋā§Ÿā§‡ āϜāĻžāύāĻŦā§‹ āĻāĻŦāĻ‚ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻāϗ⧁āϞ⧋āϕ⧇ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϰ āϏāĻžāĻĨ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāϤ⧇ āĻšā§Ÿ āϤāĻž āĻļāĻŋāĻ–āĻŦā§‹āĨ¤ āĻāĻ›āĻžā§œāĻžāĻ“ āφāĻŽāϰāĻž āĻĻ⧇āĻ–āĻŦā§‹ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰāϕ⧇ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āĻ•āϞ āĻ•āϰāϤ⧇ āĻšā§ŸāĨ¤ āĻāχ āϞ⧇āϏāύ āĻ āφāĻŽāϰāĻž āĻ•āĻ­āĻžāϰ āĻ•āϰāĻŦā§‹āσ * [āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ](#āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž-āϏ⧇āĻ¨ā§āϏāϰ) -* [IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻž](#IoT-āĻĄāĻŋāĻ­āĻžāχāϏ-āĻŦā§āϝāĻžāĻŦāĻšāĻžāϰ-āĻ•āϰ⧇-āĻāĻ•āϟāĻŋ-āχāĻŽā§‡āϜ-āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ-āĻ•āϰāĻž) +* [IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻž](#IoT-āĻĄāĻŋāĻ­āĻžāχāϏ-āĻŦā§āϝāĻŦāĻšāĻžāϰ-āĻ•āϰ⧇-āχāĻŽā§‡āϜ-āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ-āĻ•āϰāĻž) * [āφāĻŽāĻžāĻĻ⧇āϰ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāĻŋ](#āφāĻŽāĻžāĻĻ⧇āϰ-āχāĻŽā§‡āϜ-āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ-āĻĒāĻžāĻŦāϞāĻŋāĻļ-āĻ•āϰāĻŋ) * [IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāχ āĻ•āϰāĻž](#IoT-āĻĄāĻŋāĻ­āĻžāχāϏ-āĻĨ⧇āϕ⧇-āχāĻŽā§‡āϜ-āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāχ-āĻ•āϰāĻž) * [Model āωāĻ¨ā§āύāϤ āĻ•āϰāĻž](#Model-āωāĻ¨ā§āύāϤ-āĻ•āϰāĻž) - - ## āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ -āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ, āϤāĻžāϰ āύāĻžāĻŽā§‡āϰ āĻŽāϤāχ āĻāĻŽāύ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϝāĻž IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāύ⧇āĻ•ā§āϟ āĻ•āϰāĻž āϝāĻžā§ŸāĨ¤ āĻāϗ⧁āϞ⧋ āĻ¸ā§āĻĨāĻŋāϰāϚāĻŋāĻ¤ā§āϰ āĻ…āĻĨāĻŦāĻž āĻ¸ā§āĻŸā§āϰāĻŋāĻŽāĻŋāĻ‚ āĻ­āĻŋāĻĄāĻŋāĻ“ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇, āĻ•āĻŋāϛ⧁ āĻĄāĻŋāĻ­āĻžāχāϏ āϗ⧁āϞ⧋ āĻŽā§‚āϞ āχāĻŽā§‡āϜ āĻĄāĻžāϟāĻž āĻĢ⧇āϰāϤ āĻĒāĻžāĻ āĻžāχ , āĻŦāĻžāĻ•āĻŋ āϗ⧁āϞ⧋ āχāĻŽā§‡āϜ āĻĄāĻžāϟāĻž āĻ•āĻŽāĻĒā§āϰ⧇āϏ āĻ•āϰ⧇ JPEG āĻ…āĻĨāĻŦāĻž PNG āϟāĻžāχāĻĒ āĻāϰ āχāĻŽā§‡āϜ āĻĢāĻžāχāϞ āĻŦāĻžāύāĻžāĻŦ⧇āĨ¤ āϏāĻžāϧāĻžāϰāĻŖāϤ āϝ⧇ āĻ•āĻžāĻŽā§‡āϰāĻž āϗ⧁āϞ⧋ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āϗ⧁āϞ⧋āϰ āϏāĻžāĻĨ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšā§Ÿ āφāĻŽāϰāĻž āϝ⧇āϗ⧁āϞ⧋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…āĻ­ā§āϝāĻ¸ā§āϤ āϏ⧇āϗ⧁āϞ⧋ āĻĨ⧇āϕ⧇ āĻ…āύ⧇āĻ• āϛ⧋āϟ āϏāĻžāχāϜ āĻāϰ āĻāĻŦāĻ‚ āĻ•āĻŽ āϰ⧇āĻœā§‹āϞāĻŋāωāĻļāĻžāύ āĻāϰ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻŽāϰāĻž āĻšāĻžāχ āϰ⧇āĻœā§‹āϞāĻŋāωāĻļāĻžāύ āĻāϰ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āύāĻŋāϤ⧇ āĻĒāĻžāϰāĻŋ āϝ⧇āϗ⧁āϞ⧋ āφāϧ⧁āύāĻŋāĻ• āĻĢā§‹āύ āϗ⧁āϞāĻžāϰ āϏāĻžāĻĨ⧇ āĻŸā§‡āĻ•ā§āĻ•āĻž āĻĻā§‡ā§ŸāĨ¤ āφāĻŽāϰāĻž āϏāĻŦ āϧāϰāύ⧇āϰ āχāĻ¨ā§āϟāĻžāϰāĻšā§‡āĻžā§āĻœā§‡āĻŦāϞ āϞ⧇āĻ¨ā§āϏ , āĻ•ā§Ÿā§‡āĻ•āϟāĻž āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āϟāĻžāĻĒ , āχāύāĻĢā§āϰāĻžāϰ⧇āĻĄ āĻĨāĻžāĻ°ā§āĻŽāĻžāϞ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻ…āĻĨāĻŦāĻž āχāωāĻ­āĻŋ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āύāĻŋāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ +āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ, āϤāĻžāϰ āύāĻžāĻŽā§‡āϰ āĻŽāϤāχ āĻāĻŽāύ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϝāĻž IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāύ⧇āĻ•ā§āϟ āĻ•āϰāĻž āϝāĻžā§ŸāĨ¤ āĻāϗ⧁āϞ⧋ āĻ¸ā§āĻĨāĻŋāϰāϚāĻŋāĻ¤ā§āϰ āĻ…āĻĨāĻŦāĻž āĻ¸ā§āĻŸā§āϰāĻŋāĻŽāĻŋāĻ‚ āĻ­āĻŋāĻĄāĻŋāĻ“ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇, āĻ•āĻŋāϛ⧁ āĻĄāĻŋāĻ­āĻžāχāϏ āϗ⧁āϞ⧋ āĻŽā§‚āϞ āχāĻŽā§‡āϜ āĻĄāĻžāϟāĻž āĻĢ⧇āϰāϤ āĻĒāĻžāĻ āĻžāχ , āĻŦāĻžāĻ•āĻŋ āϗ⧁āϞ⧋ āχāĻŽā§‡āϜ āĻĄāĻžāϟāĻž āĻ•āĻŽāĻĒā§āϰ⧇āϏ āĻ•āϰ⧇ JPEG āĻ…āĻĨāĻŦāĻž PNG āϟāĻžāχāĻĒ āĻāϰ āχāĻŽā§‡āϜ āĻĢāĻžāχāϞ āĻŦāĻžāύāĻžāĻŦ⧇āĨ¤ āϏāĻžāϧāĻžāϰāĻŖāϤ āϝ⧇ āĻ•āĻžāĻŽā§‡āϰāĻž āϗ⧁āϞ⧋ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āϗ⧁āϞ⧋āϰ āϏāĻžāĻĨ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšā§Ÿ āφāĻŽāϰāĻž āϝ⧇āϗ⧁āϞ⧋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…āĻ­ā§āϝāĻ¸ā§āϤ āϏ⧇āϗ⧁āϞ⧋ āĻĨ⧇āϕ⧇ āĻ…āύ⧇āĻ• āϛ⧋āϟ āϏāĻžāχāϜ āĻāϰ āĻāĻŦāĻ‚ āĻ•āĻŽ āϰ⧇āĻœā§‹āϞāĻŋāωāĻļāĻžāύ āĻāϰ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻŽāϰāĻž āĻšāĻžāχ āϰ⧇āĻœā§‹āϞāĻŋāωāĻļāĻžāύ āĻāϰ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āύāĻŋāϤ⧇ āĻĒāĻžāϰāĻŋ āϝ⧇āϗ⧁āϞ⧋ āφāϧ⧁āύāĻŋāĻ• āĻĢā§‹āύ āϗ⧁āϞāĻžāϰ āϏāĻžāĻĨ⧇ āĻŸā§‡āĻ•ā§āĻ•āĻž āĻĻā§‡ā§ŸāĨ¤ āφāĻŽāϰāĻž āϏāĻŦ āϧāϰāύ⧇āϰ āχāĻ¨ā§āϟāĻžāϰāĻšā§‡āĻžā§āĻœā§‡āĻŦāϞ āϞ⧇āĻ¨ā§āϏ, āĻ•ā§Ÿā§‡āĻ•āϟāĻž āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āϟāĻžāĻĒ, āχāύāĻĢā§āϰāĻžāϰ⧇āĻĄ āĻĨāĻžāĻ°ā§āĻŽāĻžāϞ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻ…āĻĨāĻŦāĻž āχāωāĻ­āĻŋ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āύāĻŋāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ ![The light from a scene passes through a lens and is focused on a CMOS sensor](../../../../images/cmos-sensor.png) -āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ āχāĻŽā§‡āϜ āϏ⧇āĻ¨ā§āϏāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻĒā§āϰāĻ¤ā§āϝ⧇āĻ• āĻĒāĻŋāĻ•ā§āϏ⧇āϞ āĻšāϞ āĻĢāĻŸā§‹āĻĄāĻžā§Ÿā§‹āĻĄāĨ¤ āĻāĻ•āϟāĻž āϞ⧇āĻ¨ā§āϏ āχāĻŽā§‡āϜ āϏ⧇āĻ¨ā§āϏāϰ āĻāϰ āωāĻĒāϰ āχāĻŽā§‡āϜ āϟāĻžāϕ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻšāĻžāϜāĻžāϰ āĻ…āĻĨāĻŦāĻž āϞāĻ•ā§āώ āϞāĻ•ā§āώ āĻĢāĻŸā§‹āĻĄāĻžā§Ÿā§‹āĻĄāĨ¤ āĻĒā§āϰāĻ¤ā§āϝ⧇āϕ⧇āϰ āωāĻĒāϰ āĻĒāϰāĻž āφāϞ⧋ āĻĄāĻŋāĻŸā§‡āĻ•ā§āϟ āĻ•āϰ⧇ , āĻāĻŦāĻ‚ āĻĒāĻŋāĻ•ā§āϏ⧇āϞ āĻĄāĻžāϟāĻž āĻšāĻŋāϏāĻžāĻŦ⧇ āϰ⧇āĻ•āĻ°ā§āĻĄ āĻ•āϰ⧇āĨ¤ - - - -> 💁 āϞ⧇āĻ¨ā§āϏ āχāĻŽā§‡āϜ āϕ⧇ āωāĻ˛ā§āϟāĻžā§Ÿ, āĻĒāϰ⧇ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ āφāĻŦāĻžāϰ āĻ āĻŋāĻ• āĻ­āĻžāĻŦ⧇ āχāĻŽā§‡āϜ āϟāĻžāϕ⧇ āωāĻ˛ā§āϟāĻžā§ŸāĨ¤ āĻ āĻŋāĻ• āĻāĻ•āχ āϰāĻ•āĻŽ āφāĻŽāĻžāĻĻ⧇āϰ āĻšā§‹āϖ⧇ āĻšā§Ÿ - āφāĻŽāϰāĻž āϝāĻž āĻĻ⧇āĻ–āĻŋ āϤāĻž āĻšā§‹āϖ⧇āϰ āĻĒāĻŋāĻ›āύ⧇ -āωāĻ˛ā§āĻŸā§‹ āĻ­āĻžāĻŦ⧇ āĻĄāĻŋāĻŸā§‡āĻ•ā§āϟ āĻ•āϰ⧇ āĻāĻŦ⧁āĻ‚ āĻŦā§āϰ⧇āύ āϏ⧇āϟāĻžāϕ⧇ āĻ āĻŋāĻ• āĻ•āϰ⧇āĨ¤ - +āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ āχāĻŽā§‡āϜ āϏ⧇āĻ¨ā§āϏāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻĒā§āϰāĻ¤ā§āϝ⧇āĻ• āĻĒāĻŋāĻ•ā§āϏ⧇āϞ āĻšāϞ āĻĢāĻŸā§‹āĻĄāĻžā§Ÿā§‹āĻĄāĨ¤ āĻāĻ•āϟāĻž āϞ⧇āĻ¨ā§āϏ āχāĻŽā§‡āϜ āϏ⧇āĻ¨ā§āϏāϰ āĻāϰ āωāĻĒāϰ āχāĻŽā§‡āϜ āϟāĻžāϕ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻšāĻžāϜāĻžāϰ āĻ…āĻĨāĻŦāĻž āϞāĻ•ā§āώ āϞāĻ•ā§āώ āĻĢāĻŸā§‹āĻĄāĻžā§Ÿā§‹āĻĄ āĻĒā§āϰāĻ¤ā§āϝ⧇āϕ⧇ āϤāĻžāϰ āωāĻĒāϰ āφāĻĒāϤāĻŋāϤ āφāϞ⧋ āĻĄāĻŋāĻŸā§‡āĻ•ā§āϟ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻĒāĻŋāĻ•ā§āϏ⧇āϞ āĻĄāĻžāϟāĻž āĻšāĻŋāϏāĻžāĻŦ⧇ āϰ⧇āĻ•āĻ°ā§āĻĄ āĻ•āϰ⧇āĨ¤ +> 💁 āϞ⧇āĻ¨ā§āϏ āχāĻŽā§‡āϜ āϕ⧇ āωāĻ˛ā§āϟāĻžā§Ÿ, āĻĒāϰ⧇ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ āφāĻŦāĻžāϰ āĻ āĻŋāĻ• āĻ­āĻžāĻŦ⧇ āχāĻŽā§‡āϜāϟāĻžāϕ⧇ āωāĻ˛ā§āϟāĻžā§ŸāĨ¤ āĻ āĻŋāĻ• āĻāĻ•āχ āϰāĻ•āĻŽ āφāĻŽāĻžāĻĻ⧇āϰ āĻšā§‹āϖ⧇ āĻšā§Ÿ - āφāĻŽāϰāĻž āϝāĻž āĻĻ⧇āĻ–āĻŋ āϤāĻž āĻšā§‹āϖ⧇āϰ āĻĒāĻŋāĻ›āύ⧇ āωāĻ˛ā§āĻŸā§‹ āĻ­āĻžāĻŦ⧇ āĻĄāĻŋāĻŸā§‡āĻ•ā§āϟ āĻ•āϰ⧇ āĻāĻŦ⧁āĻ‚ āĻŦā§āϰ⧇āύ āϏ⧇āϟāĻžāϕ⧇ āĻ āĻŋāĻ• āĻ•āϰ⧇āĨ¤ > 🎓 āχāĻŽā§‡āϜ āϏ⧇āĻ¨ā§āϏāϰāϟāĻž āĻāĻ•āϟāĻŋāĻ­-āĻĒāĻŋāĻ•ā§āϏ⧇āϞ āϏ⧇āĻ¨ā§āϏāϰ (APS) āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĒāϰāĻŋāϚāĻŋāϤ, āĻāĻŦāĻ‚ āϏāĻŦāĻšā§‡ā§Ÿā§‡ āϜāύāĻĒā§āϰāĻŋāϝāĻŧ āϟāĻžāχāĻĒ āĻāϰ APS āĻšāϞ āĻ•āĻŽāĻĒā§āϞāĻŋāĻŽā§‡āĻ¨ā§āϟāĻžāϰāĻŋ āĻŽā§‡āϟāĻžāϞ-āĻ…āĻ•ā§āϏāĻžāχāĻĄ āϏ⧇āĻŽāĻŋāĻ•āĻ¨ā§āĻĄāĻžāĻ•ā§āϟāϰ āϏ⧇āĻ¨ā§āϏāϰ, āĻ…āĻĨāĻŦāĻž CMOSāĨ¤ āφāĻŽāϰāĻž āĻļ⧁āύ⧇ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰāĻŋ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ āĻ CMOS āϏ⧇āĻ¨ā§āϏāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ āϟāĻžāĻ°ā§āĻŽ āϟāĻžāĨ¤ - - āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ āĻšāϞ āĻĄāĻŋāϜāĻŋāϟāĻžāϞ āϏ⧇āĻ¨ā§āϏāϰ , āχāĻŽā§‡āϜ āĻĄāĻžāϟāĻž āϕ⧇ āĻĄāĻŋāϜāĻŋāϟāĻžāϞ āĻĄāĻžāϟāĻž āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĒāĻžāĻ āĻžā§Ÿ, āϏāĻžāϧāĻžāϰāĻŖāϤ āϝ⧇ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āĻ•āĻŽāĻŋāωāύāĻŋāϕ⧇āĻļāύ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇ āϤāĻžāϰ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āύāĻŋā§Ÿā§‡, āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āϗ⧁āϞ⧋ āĻ•āĻžāύ⧇āĻ•ā§āϟ āĻ•āϰ⧇ SPI āĻāϰ āĻŽāϤ āĻĒā§āϰ⧋āϟāĻ•āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϝāĻž āϤāĻžāĻĻ⧇āϰ āĻŦ⧜ āĻĒāϰāĻŋāĻŽāĻžāϪ⧇ āĻĄāĻžāϟāĻž āĻĒāĻžāĻ āĻžāϤ⧇ āĻ…āύ⧁āĻŽā§‹āĻĻāύ āĻĻā§‡ā§Ÿ - āχāĻŽā§‡āϜ āϗ⧁āϞ⧋ temperature āϏ⧇āĻ¨ā§āϏāϰ āĻāϰ āĻŽāϤ āϏ⧇āĻ¨ā§āϏāϰ āĻĨ⧇āϕ⧇ āĻĒāĻžāĻ“ā§ŸāĻž āϏāĻŋāĻ‚āϗ⧇āϞ āύāĻžāĻŽā§āĻŦāĻžāϰ āĻĨ⧇āϕ⧇ āϝāĻĨ⧇āĻˇā§āϟ āĻĒāϰāĻŋāĻŽāĻžāϪ⧇ āĻŦ⧜āĨ¤ ✅ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āϗ⧁āϞ⧋āϰ āχāĻŽā§‡āϜ āϏāĻžāχāϜ āĻāϰ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āĻ•āĻŋ āĻ•āĻŋ? āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻžāϗ⧁āϞ⧋ āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰāĻŋ āĻŦāĻŋāĻļ⧇āώ āĻ•āϰ⧇ āĻŽāĻžāχāĻ•ā§āϰ⧋āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞāĻžāϰ āĻšāĻžāĻ°ā§āĻĄāĻ“ā§ŸāĻžāϰ āĻāϰ āωāĻĒāϰāĨ¤ +## IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻž -## IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻž - -āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻāĻŦ⧁āĻ‚ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāχ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ +āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻāĻŦāĻ‚ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāχ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ ### āĻ•āĻžāϜ - IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻž āύāĻŋāĻŽā§āύ⧇āϰ āϕ⧋āύ āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻžāϏāĻ™ā§āĻ—āĻŋāĻ• āĻ—āĻžāχāĻĄ āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻŋāσ -* [Arduino - Wio Terminal](wio-terminal-camera.md) -* [Single-board computer - Raspberry Pi](pi-camera.md) -* [Single-board computer - Virtual device](virtual-device-camera.md) - +* [Arduino - Wio Terminal](../wio-terminal-camera.md) +* [Single-board computer - Raspberry Pi](../pi-camera.md) +* [Single-board computer - Virtual device](../virtual-device-camera.md) ## āφāĻŽāĻžāĻĻ⧇āϰ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāĻŋ āφāĻŽāϰāĻž āĻļ⧇āώ āϞ⧇āϏāύ āĻ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ āĻŸā§āϰ⧇āύ āĻ•āϰ⧇āĻ›āĻŋāϞāĻžāĻŽāĨ¤ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϟāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āφāϗ⧇, āφāĻŽāĻžāĻĻ⧇āϰ model āϤāĻž āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ - ### Model Iteration -āϝāĻ–āύ āφāĻŽāĻžāĻĻ⧇āϰ model āĻļ⧇āώ āϞ⧇āϏāύ āĻ āĻŸā§āϰ⧇āύ āĻšāĻšā§āĻ›āĻŋāϞ⧋, āφāĻŽāϰāĻž āĻšā§ŸāϤ āĻ–ā§‡ā§ŸāĻžāϞ āĻ•āϰāĻ›āĻŋāϞāĻžāĻŽ āϝ⧇ **Performance** āĻŸā§āϝāĻžāĻŦ āϏāĻžāχāĻĄ āĻ Iterationāϗ⧁āϞ⧋ āĻĻ⧇āĻ–āĻžāϝāĻŧāĨ¤ āϝāĻ–āύ āφāĻŽāϰāĻž āĻĒā§āϰāĻĨāĻŽ model āϟāĻž āĻŸā§āϰ⧇āύ āĻ•āϰāĻŋ āϤāĻ–āύ āφāĻŽāϰāĻž āĻĻ⧇āϖ⧇ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰāĻŋ *Iteration 1* āĻŸā§āϰ⧇āχāύāĻŋāĻ‚ āĻāĨ¤ āϝāĻ–āύ āφāĻŽāϰāĻž model āϟāĻžāϕ⧇ āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āχāĻŽā§‡āϜ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āφāϰ⧋ āωāĻ¨ā§āύāϤ āĻ•āϰāĻŋ, āϤāĻ–āύ āφāĻŽāϰāĻž āĻĻ⧇āϖ⧇ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰāĻŋ *Iteration 2* āĻŸā§āϰ⧇āχāύāĻŋāĻ‚ āĻāĨ¤ +āϝāĻ–āύ āφāĻŽāĻžāĻĻ⧇āϰ āĻŽāĻĄā§‡āϞ⧇ āĻļ⧇āώ āϞ⧇āϏāύ āĻ āĻŸā§āϰ⧇āύāĻŋāĻ‚ āĻšāĻšā§āĻ›āĻŋāϞ⧋, āφāĻŽāϰāĻž āĻšā§ŸāϤ āĻ–ā§‡ā§ŸāĻžāϞ āĻ•āϰāĻ›āĻŋāϞāĻžāĻŽ āϝ⧇ **Performance** āĻŸā§āϝāĻžāĻŦ āϏāĻžāχāĻĄ āĻ Iteration āϗ⧁āϞ⧋ āĻĻ⧇āĻ–āĻžāϝāĻŧāĨ¤ āϝāĻ–āύ āφāĻŽāϰāĻž āĻĒā§āϰāĻĨāĻŽ model āϟāĻž āĻŸā§āϰ⧇āύ āĻ•āϰāĻŋ āϤāĻ–āύ āφāĻŽāϰāĻž āĻĻ⧇āϖ⧇ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰāĻŋ *Iteration 1* āĻŸā§āϰ⧇āχāύāĻŋāĻ‚ āĻāĨ¤ āϝāĻ–āύ āφāĻŽāϰāĻž model āϟāĻžāϕ⧇ āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āχāĻŽā§‡āϜ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āφāϰ⧋ āωāĻ¨ā§āύāϤ āĻ•āϰāĻŋ, āϤāĻ–āύ āφāĻŽāϰāĻž āĻĻ⧇āϖ⧇ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰāĻŋ *Iteration 2* āĻŸā§āϰ⧇āχāύāĻŋāĻ‚ āĻāĨ¤ āĻĒā§āϰāϤ⧇āĻ•āĻŦāĻžāϰ āφāĻŽāϰāĻž āϝāĻ–āύ model āϟāĻžāϕ⧇ āĻŸā§āϰ⧇āχāύ āĻ•āϰāĻŋ, āφāĻŽāϰāĻž āύāϤ⧁āύ Iteration āĻĒāĻžāχāĨ¤ āĻāĻ­āĻžāĻŦ⧇ āφāĻŽāϰāĻž āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻĄāĻžāϟāĻžāϏ⧇āϟ āĻāϰ āωāĻĒāϰ āĻŸā§āϰ⧇āχāύ āĻ•āϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ model āĻāϰ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ­āĻžāĻ°ā§āϏāύ āĻŸā§āĻ°ā§āϝāĻžāĻ• āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ āϝāĻ–āύ āφāĻŽāϰāĻž **Quick Test** āĻ•āϰāĻŋ, āĻāĻ–āĻžāύ⧇ āφāĻŽāϰāĻž Iteration āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻžāϰ āĻāĻ•āϟāĻŋ āĻĄā§āϰāĻĒāĻĄāĻžāωāύ āĻŽā§‡āύ⧁ āĻĒāĻžāχ, āϝ⧇āύ āφāĻŽāϰāĻž āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ Iteration āĻāϰ āϰ⧇āϜāĻžāĻ˛ā§āϟ āϤ⧁āϞāύāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ āϝāĻ–āύ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ Iteration āύāĻŋā§Ÿā§‡ āϏāĻ¨ā§āϤ⧁āĻˇā§āϟ āĻšāχ, āφāĻŽāϰāĻž āĻāϟāĻžāϕ⧇ āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ āĻāĻ•ā§āϏāϟāĻžāĻ°ā§āύāĻžāϞ āĻāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻĨ⧇āϕ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āϏāĻšāϜāϞāĻ­ā§āϝ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝāĨ¤ āĻāĻ­āĻžāĻŦ⧇ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻĄāĻŋāĻ­āĻžāχāϏ āĻĻāĻŋā§Ÿā§‡ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻāĻ•āϟāĻŋ āĻĒāĻžāĻŦāϞāĻŋāĻ• āĻ­āĻžāĻ°ā§āϏāύ āĻĒ⧇āϤ⧇ āĻĒāĻžāϰāĻŋ, āĻĒāϰ⧇ āφāϰ⧋ āύāϤ⧁āύ āĻ•āĻŋāϛ⧁ Iteration āĻāϰ āωāĻĒāϰ āύāϤ⧁āύ āĻ­āĻžāĻ°ā§āϏāύ āύāĻŋā§Ÿā§‡ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ, āĻĒāϰ⧇ āϝāĻ–āύ āφāĻŽāϰāĻž āĻāϟāĻž āύāĻŋā§Ÿā§‡ āϏāĻ¨ā§āϤ⧁āĻˇā§āϟ āĻšāĻŦ āϤāĻ–āύ āĻāϟāĻž āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ - - - ### āĻ•āĻžāϜ - Iteration āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāĻž - -Iteration āĻšāϞ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāϏāύ āĻĒā§‹āĻ°ā§āϟāĻžāϞ āĨ¤ - - +Iteration āϗ⧁āϞ⧋ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāϏāύ āĻĒā§‹āĻ°ā§āϟāĻžāϞ āĻĨ⧇āϕ⧇ āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāϤ⧇ āĻšā§ŸāĨ¤ 1. [CustomVision.ai](https://customvision.ai) āϤ⧇ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāϏāύ āĻĒā§‹āĻ°ā§āϟāĻžāϞ āϞāĻžā§āϚ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āϏāĻžāχāύ āχāύ āĻ•āϰāĻŋ āϝāĻĻāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻāϟāĻž āϖ⧁āϞ⧇ āύāĻž āĻĨāĻžāĻ•āĻŋāĨ¤ āĻĒāϰ⧇ āφāĻŽāĻžāĻĻ⧇āϰ `fruit-quality-detector` āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āϟ āϖ⧁āϞāĻŋāĨ¤ - 1. āωāĻĒāϰ⧇āϰ āĻ…āĻĒāĻļāύ āĻĨ⧇āϕ⧇ **Performance** āĻŸā§āϝāĻžāĻŦ āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻŋāĨ¤ - 1. āϏāĻžāχāĻĄ āĻāϰ *Iterations* āϞāĻŋāĻ¸ā§āϟ āĻĨ⧇āϕ⧇ āϏāĻ°ā§āĻŦāĻļ⧇āώ Iteration āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻŋāĨ¤ - - - 1. Iteration āĻāϰ āϜāĻ¨ā§āϝ **Publish** āĻŦāĻžāϟāύ āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻŋāĨ¤ ![The publish button](../../../../images/custom-vision-publish-button.png) - - 1. *Publish Model* āĻĄāĻžā§ŸāϞāĻ— āĻ, *Prediction resource* āĻ āφāϗ⧇āϰ āϞ⧇āϏāύ āĻ āφāĻŽāĻžāĻĻ⧇āϰ āϤ⧈āϰāĻŋ āϰāĻŋāϏ⧋āĻ°ā§āϏ `fruit-quality-detector-prediction` āϏ⧇āϟ āĻ•āϰāĻŋāĨ¤ āύāĻžāĻŽ āĻšāĻŋāϏ⧇āĻŦ⧇ `Iteration2` āϰāĻžāĻ–āĻŋ, āĻāĻŦāĻ‚ **Publish** āĻŦāĻžāϟāύ āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻŋāĨ¤ -1. āĻāĻ•āĻŦāĻžāϰ āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāĻž āĻšāϞ⧇, **Prediction URL** āĻŦāĻžāϟāύ āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻŋāĨ¤ āĻāϟāĻž āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āĻāĻĒāĻŋāφāχ āĻāϰ āĻĄāĻŋāĻŸā§‡āϞāϏ āĻĻ⧇āĻ–āĻžāĻŦ⧇, āĻāĻŦāĻ‚ āφāĻŽāĻžāĻĻ⧇āϰ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ model āϕ⧇ āĻ•āϞ āĻ•āϰāϤ⧇ āĻāϗ⧁āϞ⧋ āĻĻāϰāĻ•āĻžāϰ āĻšāĻŦ⧇āĨ¤ āύāĻŋāĻšā§‡āϰ āϏ⧇āĻ•āĻļāύ āϕ⧇ *If you have an image file* āĻšāĻŋāϏ⧇āĻŦ⧇ āϞ⧇āĻŦ⧇āϞ āĻ•āϰāĻž , āĻāĻŦāĻ‚ āĻāχ āĻĄāĻŋāĻŸā§‡āχāϞ āϗ⧁āϞ⧋ āφāĻŽāϰāĻž āϚāĻžāχāĨ¤ āĻĻ⧇āĻ–āĻžāύ⧋ URL āĻāϰ āĻ•āĻĒāĻŋ āĻ•āϰāĻŋ āϝ⧇āϟāĻž āĻ•āĻŋāϛ⧁ āϟāĻž āĻāϰāĻ•āĻŽ āĻšāĻŦ⧇āσ +1. āĻāĻ•āĻŦāĻžāϰ āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāĻž āĻšāϞ⧇, **Prediction URL** āĻŦāĻžāϟāύ āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻŋāĨ¤ āĻāϟāĻž āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āĻāĻĒāĻŋāφāχ āĻāϰ āĻĄāĻŋāĻŸā§‡āϞāϏ āĻĻ⧇āĻ–āĻžāĻŦ⧇, āĻāĻŦāĻ‚ āφāĻŽāĻžāĻĻ⧇āϰ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ model āϕ⧇ āĻ•āϞ āĻ•āϰāϤ⧇ āĻāϗ⧁āϞ⧋ āĻĻāϰāĻ•āĻžāϰ āĻšāĻŦ⧇āĨ¤ āύāĻŋāĻšā§‡āϰ āϏ⧇āĻ•āĻļāύ āϕ⧇ *If you have an image file* āĻšāĻŋāϏ⧇āĻŦ⧇ āϞ⧇āĻŦ⧇āϞ āĻ•āϰāĻž āĻāĻŦāĻ‚ āĻāχ āĻĄāĻŋāĻŸā§‡āχāϞ āϗ⧁āϞ⧋ āφāĻŽāϰāĻž āϚāĻžāχāĨ¤ āĻĻ⧇āĻ–āĻžāύ⧋ URL āĻāϰ āĻ•āĻĒāĻŋ āĻ•āϰāĻŋ āϝ⧇āϟāĻž āĻ•āĻŋāϛ⧁ āϟāĻž āĻāϰāĻ•āĻŽ āĻšāĻŦ⧇āσ ```output https://.api.cognitive.microsoft.com/customvision/v3.0/Prediction//classify/iterations/Iteration2/image ``` āϝ⧇āĻ–āĻžāύ⧇ `` āĻšāĻŦ⧇ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāϏāύ āĻĒā§‹āĻ°ā§āϟāĻžāϞ āϰāĻŋāϏ⧋āĻ°ā§āϏ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϞ⧋āϕ⧇āĻļāύ, āĻāĻŦāĻ‚ `` āĻšāĻŦ⧇ āĻ…āύ⧇āĻ•āϗ⧁āϞ⧋ āϞ⧇āϟāĻžāϰ āĻāĻŦāĻ‚ āύāĻžāĻŽā§āĻŦāĻžāϰ āĻĻāĻŋā§Ÿā§‡ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āϞāĻŽā§āĻŦāĻž āφāχāĻĄāĻŋāĨ¤ - āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ *Prediction-Key* āĻ­ā§āϝāĻžāϞ⧁ āĻāϰ āĻāĻ•āϟāĻŋ āĻ•āĻĒāĻŋ āύāĻŋāχāĨ¤ āĻāϟāĻž āĻāĻ•āϟāĻŋ āϏāĻŋāĻ•āĻŋāωāϰāĻĄ āĻ•āĻŋ āϝ⧇āϟāĻž model āϕ⧇ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ āĻĒāĻžāϏ āĻ•āϰāĻž āĻšā§ŸāĨ¤ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϝ⧇ āφāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϗ⧁āϞ⧋ āĻāχ āĻ•āĻŋ āĻĒāĻžāϏ āĻ•āϰāĻŦ⧇ āϤāĻžāĻĻ⧇āϰāϕ⧇ model āϟāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĻā§‡ā§ŸāĻž āĻšāĻŦ⧇, āĻ…āĻ¨ā§āϝ āϏāĻŦ āφāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϕ⧇ āĻĒā§āϰāĻ¤ā§āϝāĻžāĻ–ā§āϝāĻžāύ āĻšāĻŦ⧇āĨ¤ + āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ *Prediction-Key* āĻ­ā§āϝāĻžāϞ⧁ āĻāϰ āĻāĻ•āϟāĻŋ āĻ•āĻĒāĻŋ āύāĻŋāχāĨ¤ āĻāϟāĻž āĻāĻ•āϟāĻŋ āϏāĻŋāĻ•āĻŋāωāϰāĻĄ āϕ⧀ (KEY) āϝ⧇āϟāĻž model āϕ⧇ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ āĻĒāĻžāϏ āĻ•āϰāĻž āĻšā§ŸāĨ¤ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϝ⧇ āφāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϗ⧁āϞ⧋ āĻāχ āĻ•āĻŋ āĻĒāĻžāϏ āĻ•āϰāĻŦ⧇ āϤāĻžāĻĻ⧇āϰāϕ⧇ model āϟāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĻā§‡ā§ŸāĻž āĻšāĻŦ⧇, āĻ…āĻ¨ā§āϝ āϏāĻŦ āφāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϕ⧇ āĻĒā§āϰāĻ¤ā§āϝāĻžāĻ–ā§āϝāĻžāύ āĻšāĻŦ⧇āĨ¤ ![The prediction API dialog showing the URL and key](../../../../images/custom-vision-prediction-key-endpoint.png) -✅ āϝāĻ–āύ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ Iteration āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāĻž āĻšā§Ÿ, āϤāĻ–āύ āĻāϟāĻžāϰ āĻ…āĻ¨ā§āϝ āύāĻžāĻŽ āĻĨāĻžāϕ⧇āĨ¤āύ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž Iteration āφāĻŽāϰāĻž āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āϝāĻžā§Ÿ āϏ⧇āϟāĻž āφāĻŽāϰāĻž āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ +✅ āϝāĻ–āύ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ Iteration āĻĒāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰāĻž āĻšā§Ÿ, āϤāĻ–āύ āĻāϟāĻžāϰ āĻ…āĻ¨ā§āϝ āύāĻžāĻŽ āĻĨāĻžāϕ⧇āĨ¤ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž Iteration āφāĻŽāϰāĻž āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āϝāĻžā§Ÿ āϏ⧇āϟāĻž āφāĻŽāϰāĻž āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ ## IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāχ āĻ•āϰāĻž @@ -134,40 +109,32 @@ Iteration āĻšāϞ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāϏāύ āĻĒā§‹āĻ°ā§āϟāĻžāϞ āĨ¤ ### āĻ•āĻžāϜ - āφāĻŽāĻžāĻĻ⧇āϰ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāχ āĻ•āϰāĻž - āĻĒā§āϰāĻžāϏāĻ™ā§āĻ—āĻŋāĻ• āĻ—āĻžāχāĻĄ āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ•āĻžāϜ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻŋāσ -* [Arduino - Wio Terminal](wio-terminal-classify-image.md) -* [Single-board computer - Raspberry Pi/Virtual IoT device](single-board-computer-classify-image.md) - +* [Arduino - Wio Terminal](../wio-terminal-classify-image.md) +* [Single-board computer - Raspberry Pi/Virtual IoT device](../single-board-computer-classify-image.md) ## Model āωāĻ¨ā§āύāϤ āĻ•āϰāĻž - - āφāĻŽāϰāĻž āϝ⧇āύ⧇ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰāĻŋ āϝ⧇, IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāύ⧇āĻ•ā§āĻŸā§‡āĻĄ āĻĨāĻžāĻ•āĻž āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻĨ⧇āϕ⧇ āφāĻŽāϰāĻž āφāĻļāĻžāύ⧁āϰ⧂āĻĒ āϰ⧇āϜāĻžāĻ˛ā§āϟ āύāĻžāĻ“ āĻĒ⧇āϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ āĻĨ⧇āϕ⧇ āφāĻĒāϞ⧋āĻĄ āĻ•āϰāĻž āχāĻŽā§‡āϜ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āϗ⧁āϞ⧋ āϏāĻŦāϏāĻŽā§Ÿ āϏāĻ āĻŋāĻ• āĻšā§Ÿ āύāĻžāĨ¤ āĻāϟāĻžāϰ āĻ•āĻžāϰāύ āĻšāϞ Model āϝ⧇ āĻĄāĻžāϟāĻžāϰ āωāĻĒāϰ āĻŸā§āϰ⧇āχāύ āĻ•āϰāĻž āĻšā§Ÿā§‡āϛ⧇ āϤāĻžāϰ āĻĨ⧇āϕ⧇ āĻ­āĻŋāĻ¨ā§āύ āĻĄāĻžāϟāĻž āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āĻāϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāĨ¤ - - āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžā§ŸāĻžāϰ āĻĨ⧇āϕ⧇ āϏāĻŦāĻšā§‡ā§Ÿā§‡ āĻ­āĻžāϞ āϰ⧇āϜāĻžāĻ˛ā§āϟ āĻāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āĻāϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āχāĻŽā§‡āϜ āĻāϰ āĻŽāϤ āϝāĻĨāĻžāϏāĻŽā§āĻ­āĻŦ āĻ…āύ⧁āϰ⧂āĻĒ āχāĻŽā§‡āϜ āωāĻĒāϰ āφāĻŽāĻžāĻĻ⧇āϰ model āĻŸā§āϰ⧇āχāύ āĻ•āϰāϤ⧇ āϚāĻžāĻŦā§‹āĨ¤ āωāĻĻāĻžāĻšāϰāĻŖ āĻ¸ā§āĻŦāϰ⧂āĻĒ, āφāĻŽāϰāĻž āϝāĻĻāĻŋ āĻŸā§āϰ⧇āχāύāĻŋāĻ‚ āĻāϰ āχāĻŽā§‡āϜ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻāϰ āϜāĻ¨ā§āϝ āĻĢā§‹āύ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋ, āϏ⧇āϟāĻžāϰ āχāĻŽā§‡āϜ āĻ•ā§‹ā§ŸāĻžāϞāĻŋāϟāĻŋ, āĻļāĻžāĻ°ā§āĻĒāύ⧇āϏ, āĻāĻŦāĻ‚ āĻ•āĻžāϞāĻžāϰ āĻāĻ•āϟ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāύ⧇āĻ•ā§āĻŸā§‡āĻĄ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻĨ⧇āϕ⧇ āĻ­āĻŋāĻ¨ā§āύ āĻšāĻŦ⧇āĨ¤ ![2 banana pictures, a low resolution one with poor lighting from an IoT device, and a high resolution one with good lighting from a phone](../../../../images/banana-picture-compare.png) - āωāĻĒāϰ⧇āϰ āχāĻŽā§‡āϜ āĻ, āĻŦāĻžāĻŽā§‡āϰ āĻ•āϞāĻžāϰ āĻ›āĻŦāĻŋ āĻāĻ•āϟāĻŋ āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻžāχ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻĨ⧇āϕ⧇ āĻ¨ā§‡ā§ŸāĻž āĻšā§Ÿā§‡āĻ›āĻŋāϞ, āĻĄāĻžāύ⧇āϰ āϟāĻž āĻāĻ•āχ āĻ•āϞāĻžāϰ āĻ›āĻŦāĻŋ āφāχāĻĢā§‹āύ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻĨ⧇āϕ⧇ āĻ¨ā§‡ā§ŸāĻž āĻšā§Ÿā§‡āĻ›āĻŋāϞāĨ¤ āĻāĻ–āĻžāύ⧇āϰ āĻ•ā§‹ā§ŸāĻžāϞāĻŋāϟāĻŋāϰ āĻĻāĻŋāĻ• āĻĨ⧇āϕ⧇ āϞāĻ•ā§āώāĻŖā§€āϝāĻŧ āĻ­āĻŋāĻ¨ā§āύāϤāĻž āφāϛ⧇ - āφāχāĻĢā§‹āύ āĻāϰ āĻ›āĻŦāĻŋ āϟāĻž āĻļāĻžāĻ°ā§āĻĒāĻžāϰ, āωāĻœā§āĻœā§āĻŦāϞ āĻ•āĻžāϞāĻžāϰ āϏāĻš āĻāĻŦāĻ‚ āĻŦ⧇āĻļāĻŋ āĻ•āĻ¨ā§āĻŸā§āϰāĻžāĻ¸ā§āϟ āĻāϰāĨ¤ ✅ āφāĻŽāĻžāĻĻ⧇āϰ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĻāĻŋā§Ÿā§‡ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻž āχāĻŽā§‡āϜ āĻāϰ āϭ⧁āϞ āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āĻāϰ āϜāĻ¨ā§āϝ āφāϰ āĻ•āĻŋ āĻ•āĻŋ āĻ•āĻžāϰāύ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇? āĻāĻ•āϟāĻž IoT āĻĄāĻŋāĻ­āĻžāχāϏ āϝ⧇ āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āϏ⧇āϟāĻž āύāĻŋā§Ÿā§‡ āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰāĻŋ, āĻ•āĻŋ āĻ•āĻŋ āĻĢā§āϝāĻžāĻ•ā§āϟāϰ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻž āχāĻŽā§‡āϜ āϕ⧇ āĻĒā§āϰāĻ­āĻžāĻŦāĻŋāϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ -model āϕ⧇ āωāĻ¨ā§āύāϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻž āχāĻŽā§‡āϜ āĻĻāĻŋā§Ÿā§‡ āϰāĻŋāĻŸā§āϰ⧇āχāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ - +āĻŽāĻĄā§‡āϞ āϕ⧇ āωāĻ¨ā§āύāϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻž āχāĻŽā§‡āϜ āĻĻāĻŋā§Ÿā§‡ āϰāĻŋāĻŸā§āϰ⧇āχāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ --- -### āĻ•āĻžāϜ - model āωāĻ¨ā§āύāϤ āĻ•āϰāĻž +### āĻ•āĻžāϜ - āĻŽāĻĄā§‡āϞ āωāĻ¨ā§āύāϤ āĻ•āϰāĻž -1. āφāĻŽāĻžāĻĻ⧇āϰ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĻāĻŋā§Ÿā§‡ āĻĒāĻžāĻ•āĻž āĻāĻŦāĻ‚ āĻ•āĻžāρāϚāĻž āĻāϰ āĻ•āĻŋāϛ⧁ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāχ āĻ•āϰāĻŋāĨ¤ +1. āφāĻŽāĻžāĻĻ⧇āϰ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĻāĻŋā§Ÿā§‡ āĻĒāĻžāĻ•āĻž āĻāĻŦāĻ‚ āĻ•āĻžāρāϚāĻž āĻĢāϞ⧇āϰ āĻ•āĻŋāϛ⧁ āχāĻŽā§‡āϜ āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻžāχ āĻ•āϰāĻŋāĨ¤ 1. āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāϏāύ āĻĒā§‹āĻ°ā§āϟāĻžāϞ āĻ, *Predictions* āĻŸā§āϝāĻžāĻŦ āĻāϰ āχāĻŽā§‡āϜ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϰāĻŋāĻŸā§āϰ⧇āχāύ āĻ•āϰāĻŋāĨ¤ @@ -187,22 +154,22 @@ model āϕ⧇ āωāĻ¨ā§āύāϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž IoT āĻĄāĻŋ ## 🚀 āĻšā§āϝāĻžāϞ⧇āĻžā§āϜ -āχāĻŽā§‡āϜ āĻāϰ āϰ⧇āĻœā§‹āϞāĻŋāωāĻļāύ āĻ…āĻĨāĻŦāĻž āφāϞ⧋ āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āϕ⧇ āĻ•āϤāϟ⧁āϕ⧁ āĻĒā§āϰāĻ­āĻžāĻŦāĻŋāϤ āĻ•āϰ⧇? +āχāĻŽā§‡āϜ āĻāϰ āϰ⧇āĻœā§‹āϞāĻŋāωāĻļāύ āĻ…āĻĨāĻŦāĻž āφāϞ⧋āϰ āωāĻĒāĻ¸ā§āĻĨāĻŋāϤāĻŋ āĻāĻ–āĻžāύ⧇ āĻĒā§āϰ⧇āĻĄāĻŋāĻ•āĻļāύ āϕ⧇ āĻ•āϤāϟ⧁āϕ⧁ āĻĒā§āϰāĻ­āĻžāĻŦāĻŋāϤ āĻ•āϰ⧇? āφāĻŽāĻžāĻĻ⧇āϰ āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϰ āϕ⧋āĻĄ āĻ āχāĻŽā§‡āϜ āĻāϰ āϰ⧇āĻœā§‹āϞāĻŋāωāĻļāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āĻĻ⧇āĻ–āĻŋ āĻāϟāĻž āχāĻŽā§‡āϜ āĻāϰ āĻ•ā§‹ā§ŸāĻžāϞāĻŋāϟāĻŋ āϤ⧇ āϕ⧋āύ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āφāύ⧇ āĻ•āĻŋāύāĻžāĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āφāϞ⧋ āĻšā§‡āĻžā§āϜ āĻ•āϰ⧇āĻ“ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧇ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ -āϝāĻĻāĻŋ āφāĻŽāϰāĻž āĻāχ āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ āĻĄāĻŋāĻ­āĻžāχāϏāϟāĻŋ āϕ⧋āύ āĻĢāĻžāĻ°ā§āĻŽ āĻ…āĻĨāĻŦāĻž āĻĢā§āϝāĻžāĻ•ā§āϟāϰāĻŋ āϤ⧇ āĻŦāĻŋāĻ•ā§āĻ°ā§Ÿā§‡āϰ āϜāĻ¨ā§āϝ āϤ⧈āϰ⧀ āĻ•āϰāĻŋ, āφāĻŽāϰāĻž āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ āϝ⧇ āĻāϟāĻž āϏāĻŦ āϏāĻŽā§Ÿ āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻ­āĻžāϞ⧋ āĻĢāϞāĻžāĻĢāϞ āĻĻāĻŋāĻŦ⧇āĨ¤ +āϝāĻĻāĻŋ āφāĻŽāϰāĻž āĻāχ āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ āĻĄāĻŋāĻ­āĻžāχāϏāϟāĻŋ āϕ⧋āύ āĻĢāĻžāĻ°ā§āĻŽ āĻ…āĻĨāĻŦāĻž āĻĢā§āϝāĻžāĻ•ā§āϟāϰāĻŋ āϤ⧇ āĻŦāĻŋāĻ•ā§āĻ°ā§Ÿā§‡āϰ āϜāĻ¨ā§āϝ āϤ⧈āϰ⧀ āĻ•āϰāĻŋ, āφāĻŽāϰāĻž āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ āϝ⧇ āĻāϟāĻž āϏāĻŦ āϏāĻŽā§Ÿ āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻ­āĻžāϞ⧋ āĻĢāϞāĻžāĻĢāϞ āĻĻāĻŋāĻŦ⧇? -## ## āϞ⧇āĻ•āϚāĻžāϰ-āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϕ⧁āχāϜ +## āϞ⧇āĻ•āϚāĻžāϰ-āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϕ⧁āχāϜ [āϞ⧇āĻ•āϚāĻžāϰ-āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϕ⧁āχāϜ](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/32) ## āϰāĻŋāĻ­āĻŋāω āĻ“ āĻ¸ā§āĻŦ-āĻ…āĻ§ā§āϝ⧟āύ -āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāϏāύ āĻŽāĻĄā§‡āϞ āĻĒā§‹āĻ°ā§āϟāĻžāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻŸā§āϰ⧇āχāύ āĻ•āϰ⧇āĻ›āĻŋāĨ¤ āĻāϟāĻž āχāĻŽā§‡āϜ āĻāϰ āϏāĻšāϜāϞāĻ­ā§āϝāϤāĻžāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ - āĻāĻŦāĻ‚ āĻŦāĻžāĻ¸ā§āϤāĻŦ āϜāĻ—āϤ⧇ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϰ āϏāĻžāĻĨ⧇ āĻŽā§āϝāĻžāϚ āĻ•āϰ⧇ āĻāĻŽāύ āĻŸā§āϰ⧇āχāύāĻŋāĻ‚ āĻĄāĻžāϟāĻž āĻšā§ŸāϤ āĻĒāĻžāĻŦā§‹ āύāĻžāĨ¤ āφāĻŽāϰāĻž āĻāϟāĻžāϰ āĻŦāĻĻāϞ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āϏāϰāĻžāϏāϰāĻŋ āĻŸā§āϰ⧇āχāύāĻŋāĻ‚ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ āĻ•āϰāϤ⧇ āĻāĻĒāĻŋāφāχ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻž āχāĻŽā§‡āϜ āĻĻāĻŋā§Ÿā§‡ āĻŽāĻĄā§‡āϞ āĻŸā§āϰ⧇āχāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝāĨ¤ +āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ­āĻŋāϏāύ āĻŽāĻĄā§‡āϞ āĻĒā§‹āĻ°ā§āϟāĻžāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻŸā§āϰ⧇āχāύ āĻ•āϰ⧇āĻ›āĻŋāĨ¤ āĻāϟāĻž āχāĻŽā§‡āϜ āĻāϰ āϏāĻšāϜāϞāĻ­ā§āϝāϤāĻžāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ - āĻāĻŦāĻ‚ āĻŦāĻžāĻ¸ā§āϤāĻŦ āϜāĻ—āϤ⧇ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻ•ā§āϝāĻžāĻŽā§‡āϰāĻž āĻĄāĻŋāĻ­āĻžāχāϏ āĻāϰ āϏāĻžāĻĨ⧇ āĻŽāĻŋāϞ⧇ āĻāĻŽāύ āĻŸā§āϰ⧇āχāύāĻŋāĻ‚ āĻĄāĻžāϟāĻž āĻšā§ŸāϤ āĻĒāĻžāĻŦā§‹ āύāĻžāĨ¤ āφāĻŽāϰāĻž āĻāϟāĻžāϰ āĻŦāĻĻāϞ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āϏāϰāĻžāϏāϰāĻŋ āĻŸā§āϰ⧇āχāύāĻŋāĻ‚ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ āĻ•āϰāϤ⧇ āĻāĻĒāĻŋāφāχ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāĻž āχāĻŽā§‡āϜ āĻĻāĻŋā§Ÿā§‡ āĻŽāĻĄā§‡āϞ āĻŸā§āϰ⧇āχāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝāĨ¤ -* āĻŸā§āϰ⧇āχāύāĻŋāĻ‚ āĻāĻĒāĻŋāφāχ āĻāϰ āωāĻĒāϰ āĻĒ⧜⧁āύ [using the Custom Vision SDK quick start](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/image-classification?WT.mc_id=academic-17441-jabenn&tabs=visual-studio&pivots=programming-language-python) +* āĻŸā§āϰ⧇āχāύāĻŋāĻ‚ āĻāĻĒāĻŋāφāχ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āφāϰ⧋ āϜāĻžāύāϤ⧇ [using the Custom Vision SDK quick start](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/image-classification?WT.mc_id=academic-17441-jabenn&tabs=visual-studio&pivots=programming-language-python) āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ ## āĻāϏāĻžāχāύāĻŽā§‡āĻ¨ā§āϟ -[āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻŋāϕ⧇āĻļāύ āϰ⧇āϜāĻžāĻ˛ā§āĻŸā§‡āϰ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋ⧟āĻž āϜāĻžāύāĻžāύ⧋](./assignment.bn.md) +[āĻ•ā§āϞāĻžāϏāĻŋāĻĢāĻŋāϕ⧇āĻļāύ āϰ⧇āϜāĻžāĻ˛ā§āĻŸā§‡āϰ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋ⧟āĻž āϜāĻžāύāĻžāύ⧋](assignment.bn.md) diff --git a/translations/README.bn.md b/translations/README.bn.md index 3ce2f415..69772140 100644 --- a/translations/README.bn.md +++ b/translations/README.bn.md @@ -92,7 +92,7 @@ | 13 | [āĻĒāϰāĻŋāĻŦāĻšāύ](../3-transport) | āϞ⧋āϕ⧇āĻļāύ āĻĄā§‡āϟāĻž āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ |āĻŽāĻžāύāϚāĻŋāĻ¤ā§āϰ⧇ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ⧇āϰ āĻĄā§‡āϟāĻž āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āϰāĻž āĻāĻŦāĻ‚ āĻŽāĻžāύāϚāĻŋāĻ¤ā§āϰāϗ⧁āϞāĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ ⧍āϟāĻŋ āĻŽāĻžāĻ¤ā§āϰāĻžāϝāĻŧ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻ¤ā§āϰāĻŋāĻŽāĻžāĻ¤ā§āϰāĻŋāĻ• āĻŦāĻŋāĻļā§āĻŦ⧇āϰ āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧇ āϏ⧇ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻœā§āĻžāĻžāύ āĻ…āĻ°ā§āϜāύ | [āϞ⧋āϕ⧇āĻļāύ āĻĄā§‡āϟāĻž āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ](../3-transport/lessons/3-visualize-location-data/translations/README.bn.md) | | 14 | [āĻĒāϰāĻŋāĻŦāĻšāύ](../3-transport) | Geofences | Geofences āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϜāĻžāύāĻž āĻāĻŦāĻ‚ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϏāĻžāĻĒā§āϞāĻžāχ āĻšā§‡āχāύ⧇āϰ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻĒāĻ°ā§āϝāĻžā§Ÿā§‡āϰ āĻŦāĻžāĻšāύāϗ⧁āϞ⧋ āϝāĻ–āύ āĻ—āĻ¨ā§āϤāĻŦā§āϝ⧇āϰ āĻ•āĻžāĻ›āĻžāĻ•āĻžāĻ›āĻŋ āĻĒ⧌āρāĻ›āĻžā§Ÿ āϤāĻ–āύ āĻāϞāĻžāĻ°ā§āϟ āĻĻā§‡ā§ŸāĻž āϝāĻžā§Ÿ āϤāĻž āĻļ⧇āĻ–āĻž | [Geofences](../3-transport/lessons/4-geofences/README.md) | | 15 | [āĻ‰ā§ŽāĻĒāĻžāĻĻāύ](../4-manufacturing) | āĻ–āĻžāĻĻā§āϝāĻĒāĻŖā§āϝ⧇āϰ āϗ⧁āĻŖāĻŽāĻžāύ āϏāύāĻžāĻ•ā§āϤāĻ•āĻžāϰ⧀ āĻŽāĻĄā§‡āϞāϕ⧇ āĻŸā§āϰ⧇āύāĻŋāĻ‚ āĻĒā§āϰāĻĻāĻžāύ | āĻ•ā§āϞāĻžāωāĻĄā§‡āϰ āĻ›āĻŦāĻŋ āĻļā§āϰ⧇āĻŖāĻŋāĻŦāĻĻā§āϧāĻ•āϰāĻŖ āĻŽāĻĄā§‡āϞāϕ⧇ (Image Classifier) āĻĢāϞ⧇āϰ āĻŽāĻžāύ āϏāύāĻžāĻ•ā§āϤ āĻ•āϰāϤ⧇ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻĒā§āϰāĻļāĻŋāĻ•ā§āώāĻŋāϤ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϏ⧇ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϜāĻžāύāĻž | [āĻ–āĻžāĻĻā§āϝāĻĒāĻŖā§āϝ⧇āϰ āϗ⧁āĻŖāĻŽāĻžāύ āϏāύāĻžāĻ•ā§āϤāĻ•āĻžāϰ⧀ āĻŽāĻĄā§‡āϞāϕ⧇ āĻŸā§āϰ⧇āύāĻŋāĻ‚ āĻĒā§āϰāĻĻāĻžāύ](../4-manufacturing/lessons/1-train-fruit-detector/translations/README.bn.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) | +| 16 | [āĻ‰ā§ŽāĻĒāĻžāĻĻāύ](../4-manufacturing) | IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĢāϞ⧇āϰ āĻŽāĻžāύ āϝāĻžāϚāĻžāχ | āφāχāĻ“āϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āĻĢāϞ⧇āϰ āϗ⧁āĻŖāĻ—āϤ āĻŽāĻžāύ āϏāύāĻžāĻ•ā§āϤāĻ•āĻžāϰ⧀ āĻŦā§āϝāĻŦāĻšāĻžāϰ | [IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĢāϞ⧇āϰ āĻŽāĻžāύ āϝāĻžāϚāĻžāχ](../4-manufacturing/lessons/2-check-fruit-from-device/translations/README.bn.md) | | 17 | [āĻ‰ā§ŽāĻĒāĻžāĻĻāύ](../4-manufacturing) | Edge āĻ Fruit Detector āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻž | āĻĢāϞ⧇āϰ āϗ⧁āĻŖāĻ—āϤ āĻŽāĻžāύ āϏāύāĻžāĻ•ā§āϤāĻ•āĻžāϰ⧀āϕ⧇ Edge āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ | [Edge āĻ Fruit Detector āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻž](../4-manufacturing/lessons/3-run-fruit-detector-edge/translations/README.bn.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) | From 72ebf6b1aecacca60d78e6d11a6127f685e9df8d Mon Sep 17 00:00:00 2001 From: Dhanya Hegde <71935582+DhanyaHegde01@users.noreply.github.com> Date: Thu, 28 Oct 2021 21:38:04 +0530 Subject: [PATCH 10/30] Created Hindi translation for retail (#337) * Created Hindi translation for retail * Update 5-retail/translations/ReadME.hi.md Co-authored-by: Bhavesh Suneja <40915476+EliteWarrior315@users.noreply.github.com> * Update 5-retail/translations/ReadME.hi.md Co-authored-by: Bhavesh Suneja <40915476+EliteWarrior315@users.noreply.github.com> * Update 5-retail/translations/ReadME.hi.md Co-authored-by: Bhavesh Suneja <40915476+EliteWarrior315@users.noreply.github.com> Co-authored-by: Jim Bennett Co-authored-by: Bhavesh Suneja <40915476+EliteWarrior315@users.noreply.github.com> --- 5-retail/translations/ReadME.hi.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 5-retail/translations/ReadME.hi.md diff --git a/5-retail/translations/ReadME.hi.md b/5-retail/translations/ReadME.hi.md new file mode 100644 index 00000000..1ffc8967 --- /dev/null +++ b/5-retail/translations/ReadME.hi.md @@ -0,0 +1,19 @@ +# ⤖āĨā¤Ļā¤°ā¤ž - ⤏āĨā¤ŸāĨ‰ā¤• ⤏āĨā¤¤ā¤°āĨ‹ā¤‚ ⤕āĨ‹ ā¤ĒāĨā¤°ā¤Ŧ⤂⤧ā¤ŋ⤤ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ IoT ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ā¤•ā¤°ā¤¨ā¤ž + +⤉ā¤Ē⤭āĨ‹ā¤•āĨā¤¤ā¤žā¤“⤂ ⤤⤕ ā¤Ēā¤šāĨā¤‚ā¤šā¤¨āĨ‡ ⤏āĨ‡ ā¤Ēā¤šā¤˛āĨ‡ ā¤Ģā¤ŧāĨ€ā¤Ą ⤕āĨ‡ ⤞ā¤ŋā¤ ⤅⤂⤤ā¤ŋā¤Ž ⤚⤰⤪ ⤖āĨā¤Ļā¤°ā¤ž ā¤šāĨˆ - ā¤Ŧā¤žā¤œā¤žā¤°, ⤕ā¤ŋā¤°ā¤žā¤¨āĨ‡ ā¤•ā¤ž ā¤¸ā¤žā¤Žā¤žā¤¨, ⤏āĨā¤Ēā¤°ā¤Žā¤žā¤°āĨā¤•āĨ‡ā¤Ÿ ⤔⤰ ⤏āĨā¤ŸāĨ‹ā¤° ⤜āĨ‹ ⤉ā¤Ē⤭āĨ‹ā¤•āĨā¤¤ā¤žā¤“⤂ ⤕āĨ‹ ⤉⤤āĨā¤Ēā¤žā¤Ļ ā¤ŦāĨ‡ā¤šā¤¤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ⤝āĨ‡ ⤏āĨā¤ŸāĨ‹ā¤° ā¤¯ā¤š ⤏āĨā¤¨ā¤ŋā¤ļāĨā¤šā¤ŋ⤤ ā¤•ā¤°ā¤¨ā¤ž ā¤šā¤žā¤šā¤¤āĨ‡ ā¤šāĨˆā¤‚ ⤕ā¤ŋ ⤉ā¤Ē⤭āĨ‹ā¤•āĨā¤¤ā¤žā¤“⤂ ⤕āĨ‡ ā¤ĻāĨ‡ā¤–⤍āĨ‡ ⤔⤰ ⤖⤰āĨ€ā¤Ļ⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤇⤍⤕āĨ‡ ā¤Ēā¤žā¤¸ ā¤…ā¤˛ā¤Žā¤žā¤°ā¤ŋ⤝āĨ‹ā¤‚ ā¤Ē⤰ ⤉⤤āĨā¤Ēā¤žā¤Ļ⤍ ā¤šāĨ‹āĨ¤ + +ā¤–ā¤žā¤ĻāĨā¤¯ ā¤­ā¤‚ā¤Ąā¤žā¤°āĨ‹ā¤‚ ā¤ŽāĨ‡ā¤‚, ā¤ĩā¤ŋā¤ļāĨ‡ā¤ˇ ⤰āĨ‚ā¤Ē ⤏āĨ‡ ā¤Ŧā¤Ąā¤ŧāĨ‡ ⤏āĨā¤Ēā¤°ā¤Žā¤žā¤°āĨā¤•āĨ‡ā¤Ÿ ā¤ŽāĨ‡ā¤‚, ⤏ā¤Ŧ⤏āĨ‡ ⤅⤧ā¤ŋ⤕ ā¤ŽāĨˆā¤¨āĨā¤…⤞, ā¤¸ā¤Žā¤¯ ⤞āĨ‡ā¤¨āĨ‡ ā¤ĩā¤žā¤˛āĨ‡ ā¤•ā¤žā¤°āĨā¤¯āĨ‹ā¤‚ ā¤ŽāĨ‡ā¤‚ ⤏āĨ‡ ā¤ā¤• ā¤¯ā¤š ⤏āĨā¤¨ā¤ŋā¤ļāĨā¤šā¤ŋ⤤ ā¤•ā¤°ā¤¨ā¤ž ā¤šāĨˆ ⤕ā¤ŋ ā¤…ā¤˛ā¤Žā¤žā¤°ā¤ŋ⤝āĨ‹ā¤‚ ⤕āĨ‹ ⤏āĨā¤ŸāĨ‰ā¤• ⤕ā¤ŋā¤¯ā¤ž ā¤—ā¤¯ā¤ž ā¤šāĨˆ ā¤¯ā¤ž ā¤¨ā¤šāĨ€ā¤‚ ⤔⤰ ā¤¯ā¤š ⤏āĨā¤¨ā¤ŋā¤ļāĨā¤šā¤ŋ⤤ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤅⤞⤗-⤅⤞⤗ ā¤…ā¤˛ā¤Žā¤žā¤°ā¤ŋ⤝āĨ‹ā¤‚ ⤕āĨ€ ā¤œā¤žā¤ā¤š ā¤•ā¤°ā¤¨ā¤ž ⤕ā¤ŋ ⤕ā¤ŋ⤏āĨ€ ⤭āĨ€ ā¤…ā¤‚ā¤¤ā¤°ā¤žā¤˛ ⤕āĨ‹ ⤏āĨā¤ŸāĨ‹ā¤° ⤰āĨ‚ā¤Ž ⤏āĨ‡ ⤉ā¤Ē⤜ ⤏āĨ‡ ā¤­ā¤°ā¤ž ā¤—ā¤¯ā¤ž ā¤šāĨˆ ā¤¯ā¤ž ā¤¨ā¤šāĨ€ā¤‚āĨ¤ + +IoT ā¤‡ā¤¸ā¤ŽāĨ‡ā¤‚ ā¤Žā¤Ļā¤Ļ ⤕⤰ ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆ, ⤏āĨā¤ŸāĨ‰ā¤• ⤗ā¤ŋ⤍⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ IoT ⤉ā¤Ē⤕⤰⤪āĨ‹ā¤‚ ā¤Ē⤰ ⤚⤞⤍āĨ‡ ā¤ĩā¤žā¤˛āĨ‡ AI ā¤ŽāĨ‰ā¤Ąā¤˛ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤕āĨ‡, ā¤Žā¤ļāĨ€ā¤¨ ⤞⤰āĨā¤¨ā¤ŋ⤂⤗ ā¤ŽāĨ‰ā¤Ąā¤˛ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤕āĨ‡ ⤜āĨ‹ ⤍ ⤕āĨ‡ā¤ĩ⤞ ⤛ā¤ĩā¤ŋ⤝āĨ‹ā¤‚ ⤕āĨ‹ ā¤ĩ⤰āĨā¤—āĨ€ā¤•āĨƒā¤¤ ⤕⤰⤤āĨ‡ ā¤šāĨˆā¤‚, ā¤Ŧ⤞āĨā¤•ā¤ŋ ā¤ĩāĨā¤¯ā¤•āĨā¤¤ā¤ŋ⤗⤤ ā¤ĩ⤏āĨā¤¤āĨā¤“⤂ ā¤•ā¤ž ā¤Ēā¤¤ā¤ž ā¤˛ā¤—ā¤ž ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚ ⤔⤰ ⤉⤍āĨā¤šāĨ‡ā¤‚ ⤗ā¤ŋ⤍ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ + +⤇⤍ 2 ā¤Ēā¤žā¤ āĨ‹ā¤‚ ā¤ŽāĨ‡ā¤‚ ⤆ā¤Ē ⤏āĨ€ā¤–āĨ‡ā¤‚⤗āĨ‡ ⤕ā¤ŋ ⤏āĨā¤ŸāĨ‰ā¤• ⤕āĨ€ ā¤—ā¤Ŗā¤¨ā¤ž ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤛ā¤ĩā¤ŋ-ā¤†ā¤§ā¤žā¤°ā¤ŋ⤤ AI ā¤ŽāĨ‰ā¤Ąā¤˛ ⤕āĨ‹ ⤕āĨˆā¤¸āĨ‡ ā¤ĒāĨā¤°ā¤ļā¤ŋ⤕āĨā¤ˇā¤ŋ⤤ ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤, ⤔⤰ ⤕āĨˆā¤¸āĨ‡ ⤇⤍ ā¤ŽāĨ‰ā¤Ąā¤˛āĨ‹ā¤‚ ⤕āĨ‹ IoT ⤉ā¤Ē⤕⤰⤪āĨ‹ā¤‚ ā¤Ē⤰ ā¤šā¤˛ā¤žā¤¯ā¤ž ā¤œā¤žā¤āĨ¤ + +> 💁 ⤝āĨ‡ ā¤Ēā¤žā¤  ⤕āĨā¤› ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ā¤¸ā¤‚ā¤¸ā¤žā¤§ā¤¨āĨ‹ā¤‚ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰āĨ‡ā¤‚⤗āĨ‡āĨ¤ ⤝ā¤Ļā¤ŋ ⤆ā¤Ē ⤇⤏ ā¤Ē⤰ā¤ŋ⤝āĨ‹ā¤œā¤¨ā¤ž ⤕āĨ‡ ⤏⤭āĨ€ ā¤Ēā¤žā¤ āĨ‹ā¤‚ ⤕āĨ‹ ā¤ĒāĨ‚ā¤°ā¤ž ā¤¨ā¤šāĨ€ā¤‚ ⤕⤰⤤āĨ‡ ā¤šāĨˆā¤‚, ⤤āĨ‹ ⤏āĨā¤¨ā¤ŋā¤ļāĨā¤šā¤ŋ⤤ ⤕⤰āĨ‡ā¤‚ ⤕ā¤ŋ ⤆ā¤Ē [⤅ā¤Ēā¤¨ā¤ž ā¤ĒāĨā¤°āĨ‹ā¤œāĨ‡ā¤•āĨā¤Ÿ ā¤¸ā¤žā¤Ģā¤ŧ ⤕⤰āĨ‡ā¤‚](../clean-up.md)āĨ¤ +## ā¤ĩā¤ŋ⤎⤝ + +1. [⤏āĨā¤ŸāĨ‰ā¤• ā¤Ąā¤ŋ⤟āĨ‡ā¤•āĨā¤Ÿā¤° ⤕āĨ‹ ā¤ĒāĨā¤°ā¤ļā¤ŋ⤕āĨā¤ˇā¤ŋ⤤ ⤕⤰āĨ‡ā¤‚](./lessons/1-train-stock-detector/README.md) +1. [IoT ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤏āĨ‡ ⤏āĨā¤ŸāĨ‰ā¤• ⤕āĨ€ ā¤œā¤žā¤‚ā¤š ⤕⤰āĨ‡ā¤‚](./lessons/2-check-stock-device/README.md) + +## ⤕āĨā¤°āĨ‡ā¤Ąā¤ŋ⤟ + +⤏⤭āĨ€ ā¤Ēā¤žā¤  [⤜ā¤ŋā¤Ž ā¤ŦāĨ‡ā¤¨āĨ‡ā¤Ÿ] ā¤ĻāĨā¤ĩā¤žā¤°ā¤ž ī¸ ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ⤞ā¤ŋ⤖āĨ‡ ā¤—ā¤ ā¤ĨāĨ‡ (https://GitHub.com/JimBobBennett) From 5f2806490d8ddc005803dfad8c3bcd1a2a8496e3 Mon Sep 17 00:00:00 2001 From: Mohit Jaisal Date: Sat, 30 Oct 2021 04:30:55 +0530 Subject: [PATCH 11/30] Added iot.gif (#338) --- README.md | 4 +++- images/IOT.gif | Bin 0 -> 369307 bytes 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 images/IOT.gif diff --git a/README.md b/README.md index c7fb8eab..035db896 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,9 @@ The projects cover the journey of food from farm to table. This includes farming Meet the team! -[![Promo video](./images/iot-for-beginners.png)](https://youtu.be/-wippUJRi5k) +[![Promo video](./images/iot.gif)](https://youtu.be/-wippUJRi5k) + +**Gif by** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) > đŸŽĨ Click the image above for a video about the project! diff --git a/images/IOT.gif b/images/IOT.gif new file mode 100644 index 0000000000000000000000000000000000000000..050adccd6b366ab3c54644921d644fec22965482 GIT binary patch literal 369307 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

K^xBlpE4?OJ9le%R8qVw}PWCqzKl0*{uE(87=ft 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

_h8wmT8`C@ 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/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%0D~)MYnh<>giPF$-9q% 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 Date: Fri, 29 Oct 2021 17:58:09 -0700 Subject: [PATCH 12/30] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 035db896..44139847 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ The projects cover the journey of food from farm to table. This includes farming Meet the team! -[![Promo video](./images/iot.gif)](https://youtu.be/-wippUJRi5k) +[![Promo video](./images/IOT.gif)](https://youtu.be/-wippUJRi5k) **Gif by** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) From 38a49e07e70dcad0630b5c89997a979a8dd2d93c Mon Sep 17 00:00:00 2001 From: Vianney Gall <41265342+IterateMe@users.noreply.github.com> Date: Tue, 2 Nov 2021 18:56:45 -0400 Subject: [PATCH 13/30] french translation Lesson 2-farm > 2-detect-soil-moisture (#310) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * - Added README.fr.md in the root folder - Translated the whole leçon 2.1 * just added the whole content * small updates in root folder * Unnecessary shields removed and some corrections have been made from Charles's review * Translation of all lessons of the root README * Translation of for-teachers.md * Translation of hardware.md * Translation of CODE_OF_CONDUCT.md * Translation of CODE_OF_CONDUCT.md * Implement suggested changes from the charles's PR review * Implement suggested changes from the charles's PR review * Implement suggested changes from the charles's PR review * Implement suggested changes from the charles's PR review * Changed the path to the translated README because they were not working from the translated ones * Small change * Resolved unworking links in hardware.fr.md * Removed the shields where it was not necessary as Jim suggested * small correction * Removed the shields and comments as requested by Jim * small update * Small correction on root README * farm > lesson 2 > assignement.fr.md * farm > 2 > README.fr.md * pi-soil-moisture.fr.md completed * farm > lesson 2 > virtual-device-soil-moisture.fr.md * farm > lesson 2 > wio-terminal-soil-moisture.fr.md * Update README.fr.md Co-authored-by: Jim Bennett --- .../translations/README.fr.md | 280 +++++++++--------- .../translations/assignment.fr.md | 47 +++ .../translations/pi-soil-moisture.fr.md | 94 ++++++ .../virtual-device-soil-moisture.fr.md | 109 +++++++ .../wio-terminal-soil-moisture.fr.md | 103 +++++++ .../virtual-device-soil-moisture.md | 2 +- 2-farm/translations/README.fr.md | 2 - translations/README.fr.md | 4 +- 8 files changed, 496 insertions(+), 145 deletions(-) create mode 100644 2-farm/lessons/2-detect-soil-moisture/translations/assignment.fr.md create mode 100644 2-farm/lessons/2-detect-soil-moisture/translations/pi-soil-moisture.fr.md create mode 100644 2-farm/lessons/2-detect-soil-moisture/translations/virtual-device-soil-moisture.fr.md create mode 100644 2-farm/lessons/2-detect-soil-moisture/translations/wio-terminal-soil-moisture.fr.md diff --git a/2-farm/lessons/2-detect-soil-moisture/translations/README.fr.md b/2-farm/lessons/2-detect-soil-moisture/translations/README.fr.md index 9b7605ec..74e0cdc9 100644 --- a/2-farm/lessons/2-detect-soil-moisture/translations/README.fr.md +++ b/2-farm/lessons/2-detect-soil-moisture/translations/README.fr.md @@ -1,262 +1,262 @@ -# Detect soil moisture +# DÊtecter l'humiditÊ du sol -![A sketchnote overview of this lesson](../../../sketchnotes/lesson-6.jpg) +![Un aperçu de cette leçon sous forme d'illustrÊ](../../../../sketchnotes/lesson-6.jpg) -> Sketchnote by [Nitya Narasimhan](https://github.com/nitya). Click the image for a larger version. +> IllustrÊ par [Nitya Narasimhan](https://github.com/nitya). Click the image for a larger version. -## Pre-lecture quiz +## Quiz PrÊ-lecture -[Pre-lecture quiz](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/11) +[Quiz PrÊ-lecture](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/11) ## Introduction -In the last lesson we looked at measuring an ambient property and using it to predict plant growth. Temperature can be controlled, but it is expensive to do so, requiring controlled environments. The easiest ambient property to control for plants is water - something that is controlled everyday from large-scale irrigation systems to young kids with watering cans watering their gardens. +Dans la dernière leçon, nous avons ÊtudiÊ la mesure d'une propriÊtÊ ambiante ainsi que son utilisation afin de prÊdire la croissance des plantes. La tempÊrature peut ÃĒtre contrôlÊe, mais cette opÊration est coÃģteuse et nÊcessite des environnements contrôlÊs. La propriÊtÊ ambiante la plus facile à contrôler pour les plantes est l'eau - un ÊlÊment qui est contrôlÊ tous les jours, depuis les systèmes d'irrigation à grande Êchelle jusqu'aux jeunes enfants qui arrosent leur jardin avec un arrosoir. -![A child watering a garden](../../../images/child-watering-garden.jpg) +![Un enfant arrosant un jardin](../../../../images/child-watering-garden.jpg) -In this lesson you will learn about measuring soil moisture, and in the next lesson you will learn how to control an automated watering system. This lesson introduces a third sensor, you've already used a light sensor, a temperature sensor, so in this lesson you will also learn more about how sensors and actuators communicate with IoT devices to understand more about how a soil moisture sensor can send data to an IoT device. +Dans cette leçon, vous apprendrez à mesurer l'humiditÊ du sol, et dans la leçon suivante, vous apprendrez à contrôler un système d'arrosage automatisÊ. Cette leçon introduit un troisième capteur, vous avez dÊjà utilisÊ un capteur de lumière, un capteur de tempÊrature, donc dans cette leçon vous allez Êgalement en apprendre plus sur la façon dont les capteurs et les actionneurs communiquent avec les dispositifs IoT pour comprendre davantage comment un capteur d'humiditÊ du sol peut envoyer des donnÊes à un dispositif IoT. -In this lesson we'll cover: +Dans cette leçon, nous aborderons: -* [Soil moisture](#soil-moisture) -* [How sensors communicate with IoT devices](#how-sensors-communicate-with-iot-devices) -* [Measure the moisture levels in soil](#measure-the-moisture-levels-in-soil) -* [Sensor calibration](#sensor-calibration) +* [HumiditÊ du sol](#humiditÊ-du-sol) +* [Comment les senseurs communiquent avec les composants IoT](#comment-les-senseurs-communiquent-avec-les-composants-IoT) +* [Mesurer les niveaux d'humiditÊ dans le sol](#mesurer-les-niveaux-d'humiditÊ-dans-le-sol) +* [Étalonnage du capteur](#Êtalonnage-du-capteur) -## Soil moisture +## HumiditÊ du sol -Plants require water to grow. They absorb water throughout the entire plant, with the majority being absorbed by the root system. Water is used by the plant for three things: +Les plantes ont besoin d'eau pour se dÊvelopper. Elles absorbent l'eau dans toute la plante, la majoritÊ Êtant absorbÊe par le système racinaire. L'eau est utilisÊe par la plante pour trois choses : -* [Photosynthesis](https://wikipedia.org/wiki/Photosynthesis) - plants creates a chemical reaction with water, carbon dioxide and light to produce carbohydrates and oxygen. -* [Transpiration](https://wikipedia.org/wiki/Transpiration) - plants use water for diffusion of carbon dioxide from the air into the plant via pores in the leaves. This process also carries nutrients around the plant, and cools the plant, similar to how humans sweat. -* Structure - plants also need water to maintain their structure - they are 90% water (as opposed to humans at only 60%), and this water keeps the cells rigid. If a plant doesn't have enough water it will wilt and eventually die. +* [Photosynthèse](https://wikipedia.org/wiki/Photosynthesis) - Les plantes crÊent une rÊaction chimique avec l'eau, le dioxyde de carbone et la lumière pour produire des hydrates de carbone et de l'oxygène. +* [Transpiration](https://wikipedia.org/wiki/Transpiration) - Les plantes utilisent l'eau pour diffuser le dioxyde de carbone de l'air dans la plante via les pores des feuilles. Ce processus permet Êgalement de transporter les nutriments autour de la plante et de la refroidir, comme la transpiration humaine. +* Structure - les plantes ont Êgalement besoin d'eau pour maintenir leur structure - elles sont composÊes à 90 % d'eau (contrairement aux humains qui n'en ont que 60 %), et cette eau maintient les cellules rigides. Si une plante n'a pas assez d'eau, elle se flÊtrit et finit par mourir. -![Water is absorbed through plant roots then carried around the plant, being used for photosynthesis and plant structure](../../../images/transpiration.png) +![L'eau est absorbÊe par les racines des plantes, puis transportÊe dans la plante, utilisÊe pour la photosynthèse et la structure de la plante.](../../../../images/transpiration.png) -✅ Do some research: how much water is lost through transpiration? +✅ Faites des recherches : quelle quantitÊ d'eau est perdue par transpiration ? -The root system provides water from moisture in the soil where the plant grows. Too little water in the soil and the plant cannot absorb enough to grow, too much water and roots cannot absorb enough oxygen needed to function. This leads to roots dying and the plant unable to get enough nutrients to survive. +Le système racinaire fournit de l'eau à partir de l'humiditÊ du sol oÚ pousse la plante. Trop peu d'eau dans le sol et la plante ne peut pas en absorber suffisamment pour se dÊvelopper, trop d'eau et les racines ne peuvent pas absorber suffisamment d'oxygène nÊcessaire à leur fonctionnement. Les racines meurent alors et la plante ne peut pas obtenir suffisamment de nutriments pour survivre. -For a farmer to get the best plant growth, the soil needs to be not too wet and not too dry. IoT devices can help with this by measuring soil moisture, allowing a farmer to only water when needed. +Pour qu'un agriculteur obtienne la meilleure croissance des plantes, le sol doit ÃĒtre ni trop humide ni trop sec. Les dispositifs IoT peuvent y contribuer en mesurant l'humiditÊ du sol, ce qui permet à l'agriculteur de n'arroser que lorsque cela est nÊcessaire. -### Ways to measure soil moisture +### Comment les senseurs communiquent avec les composants IoT -There are a range of different types of sensor you can use to measure soil moisture: +Il existe diffÊrents types de capteurs que vous pouvez utiliser pour mesurer l'humiditÊ du sol : -* Resistive - a resistive sensor has 2 probes that go into the soil. An electric current is sent to one probe, and received by the other. The sensor then measures the resistance of the soil - measuring how much the current drops at the second probe. Water is a good conductor of electricity, so the higher the water content of the soil, the lower the resistance. +* RÊsistif - un capteur rÊsistif possède deux sondes qui pÊnètrent dans le sol. Un courant Êlectrique est envoyÊ à une sonde et reçu par l'autre. Le capteur mesure alors la rÊsistance du sol - en mesurant de combien le courant chute au niveau de la deuxième sonde. L'eau est un bon conducteur d'ÊlectricitÊ, donc plus la teneur en eau du sol est ÊlevÊe, plus la rÊsistance est faible. - ![A resistive soil moisture sensor](../../../images/resistive-soil-moisture-sensor.png) + ![Un capteur d'humiditÊ du sol rÊsistif](../../../../images/resistive-soil-moisture-sensor.png) - > 💁 You can build a resistive soil moisture sensor using two pieces of metal, such as nails, separated by a couple of centimeters, and measuring the resistance between them using a multimeter. + > 💁 Vous pouvez construire un capteur d'humiditÊ du sol rÊsistif en utilisant deux morceaux de mÊtal, comme des clous, sÊparÊs de quelques centimètres, et en mesurant la rÊsistance entre eux à l'aide d'un multimètre. -* Capacitive - a capacitive moisture sensor measures the amount of electric charge that can be stored across a positive and a negative electrical plate, or [capacitance](https://wikipedia.org/wiki/Capacitance). The capacitance of soil changes as the moisture level changes, and this can be converted to a voltage that can be measured by an IoT device. The wetter the soil, the lower the voltage that comes out. +* Capacitif - un capteur d'humiditÊ capacitif mesure la quantitÊ de charge Êlectrique qui peut ÃĒtre stockÊe entre une plaque Êlectrique positive et une plaque nÊgative, ou [capacitance](https://wikipedia.org/wiki/Capacitance). La capacitance du sol change en fonction du niveau d'humiditÊ, et cela peut ÃĒtre converti en une tension qui peut ÃĒtre mesurÊe par un appareil IoT. Plus le sol est humide, plus la tension qui en ressort est faible. - ![A capacitive soil moisture sensor](../../../images/grove-capacitive-soil-moisture-sensor.png) + ![Un capteur capacitif d'humiditÊ du sol](../../../../images/grove-capacitive-soil-moisture-sensor.png) -These are both analog sensors, returning a voltage to indicate soil moisture. So how does this voltage get to your code? Before going any further with these sensors, let's look at how sensors and actuators communicate with IoT devices. +Ce sont tous deux des capteurs analogiques, qui renvoient une tension pour indiquer l'humiditÊ du sol. Comment cette tension arrive-t-elle dans votre code ? Avant d'aller plus loin avec ces capteurs, voyons comment les capteurs et les actionneurs communiquent avec les appareils IoT. -## How sensors communicate with IoT devices +## Comment les senseurs communiquent avec les composants IoT -So far in these lessons you've learned about a number of sensors and actuators, and these have been communicating with your IoT dev kit if you've been doing the physical hardware labs. But how does this communication work? How does a resistance measurement from a soil moisture sensor become a number you can use from code? +Jusqu'à prÊsent, dans ces leçons, vous avez appris à connaÃŽtre un certain nombre de capteurs et d'actionneurs, et ceux-ci ont communiquÊ avec votre kit de dÊveloppement IoT si vous avez fait les laboratoires de matÊriel physique. Mais comment cette communication fonctionne-t-elle ? Comment une mesure de rÊsistance d'un capteur d'humiditÊ du sol devient-elle un nombre utilisable dans le code ? -To communicate with most sensors and actuators you need some hardware, and a communication protocol - that is a well defined way for data to be sent and received. Take for example a capacitive soil moisture sensor: +Pour communiquer avec la plupart des capteurs et des actionneurs, il faut du matÊriel et un protocole de communication, c'est-à-dire une mÊthode bien dÊfinie d'envoi et de rÊception des donnÊes. Prenons l'exemple d'un capteur capacitif d'humiditÊ du sol : -* How is this sensor connected to the IoT device? -* If it measures a voltage that is an analog signal, it will need an ADC to create a digital representation of the value, and this value is sent as an alternating voltage to send 0s and 1s - but how long is each bit sent for? -* If the sensor returns a digital value, that will be a stream of 0s and 1s, again how long is each bit sent for? -* If the voltage is high for 0.1s is that a single 1 bit, or 2 consecutive 1 bits, or 10? -* At what point does the number start? Is `00001101` 25, or are the first 5 bits the end of the previous value? +* Comment ce capteur est-il connectÊ à l'appareil IoT ? +* S'il mesure une tension qui est un signal analogique, il aura besoin d'un "ADC" pour crÊer une reprÊsentation numÊrique de la valeur, et cette valeur est envoyÊe sous forme de tension alternative pour envoyer des 0 et des 1 - mais pendant combien de temps chaque bit est-il envoyÊ ? +* Si le capteur renvoie une valeur numÊrique, il s'agira d'un flux de 0 et de 1. Là encore, pendant combien de temps chaque bit est-il envoyÊ ? +* Si la tension est ÊlevÊe pendant 0,1 s, s'agit-il d'un seul bit, de deux bits consÊcutifs ou de dix bits ? +* A quel moment le nombre commence-t-il ? Est-ce que `00001101` 25, ou est-ce que les 5 premiers bits sont la fin de la valeur prÊcÊdente ? -The hardware provides the physical connectivity over which the data is sent, the different communication protocols ensure that the data is sent or received in the correct way so it can be interpreted. +Le matÊriel fournit la connectivitÊ physique sur laquelle les donnÊes sont envoyÊes, les diffÊrents protocoles de communication garantissent que les donnÊes sont envoyÊes ou reçues de manière correcte pour pouvoir ÃĒtre interprÊtÊes. -### General Purpose Input Output (GPIO) pins +### Broches d'entrÊe-sortie à usage gÊnÊral (GPIO) -GPIO is a set of pins you can use to connect hardware to your IoT device, and are often available on IoT developer kits such as the Raspberry Pi or Wio Terminal. You can use the various communication protocols covered in this section over the GPIO pins. Some GPIO pins provide a voltage, usually 3.3V or 5V, some pins are ground, and others can be programmatically set to either send a voltage (output), or receive a voltage (input). +GPIO est un ensemble de broches que vous pouvez utiliser pour connecter du matÊriel à votre dispositif IoT, et qui sont souvent disponibles sur les kits de dÊveloppement IoT tels que le Raspberry Pi ou le Terminal Wio. Vous pouvez utiliser les diffÊrents protocoles de communication abordÊs dans cette section sur les broches GPIO. Certaines broches GPIO fournissent une tension, gÊnÊralement 3,3 V ou 5 V, certaines broches sont des masses, et d'autres peuvent ÃĒtre configurÊes par programmation pour envoyer une tension (sortie) ou recevoir une tension (entrÊe). -> 💁 An electrical circuit needs to connect a voltage to ground via whatever circuitry you are using. You can think of voltage as the positive (+ve) terminal of a battery and ground as the negative (-ve) terminal. +> 💁 Un circuit Êlectrique doit relier une tension à la terre via le circuit que vous utilisez. Vous pouvez considÊrer la tension comme la borne positive (+ve) d'une batterie et la terre comme la borne nÊgative (-ve). -You can use GPIO pins directly with some digital sensors and actuators when you only care about on or off values - on referred to as high, off as low. Some examples are: +Vous pouvez utiliser les broches GPIO directement avec certains capteurs et actionneurs numÊriques lorsque vous ne vous prÊoccupez que des valeurs de marche ou d'arrÃĒt - marche Êtant dÊsignÊe comme haute, arrÃĒt comme basse. Voici quelques exemples : -* Button. 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. +* Bouton. Vous pouvez connecter un bouton entre une broche 5V et une broche dÊfinie comme entrÊe. Lorsque vous appuyez sur le bouton, un circuit est crÊÊ entre la broche 5V, le bouton et la broche d'entrÊe. A partir du code, vous pouvez lire la tension sur la broche d'entrÊe, et si elle est ÊlevÊe (5V), le bouton est enfoncÊ, si elle est basse (0V), le bouton n'est pas enfoncÊ. Rappelez-vous que la tension rÊelle elle-mÃĒme n'est pas lue, mais que vous obtenez un signal numÊrique de 1 ou 0 selon que la tension est supÊrieure ou non à un seuil. - ![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) + ![On envoie 5 volts à un bouton. Lorsqu'il n'est pas enfoncÊ, il renvoie 0 volt, ou 0, lorsqu'il est enfoncÊ, il renvoie 5 volts, ou 1](../../../../images/button-with-digital.png) -* LED. You can connect an LED between an output pin and a ground pin (using a resistor otherwise you'll burn out the LED). From code you can set the output pin to high and it will send 3.3V, making a circuit from the 3.3V pin, through the LED, to the ground pin. This will light the LED. +* LED. Vous pouvez connecter une LED entre une broche de sortie et une broche de masse (en utilisant une rÊsistance, sinon vous allez brÃģler la LED). À partir du code, vous pouvez mettre la broche de sortie à un niveau ÊlevÊ et elle enverra 3,3 V, crÊant un circuit de la broche 3,3 V à la broche de terre en passant par la DEL. Ceci allumera la 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) + ![On envoie à une LED un signal de 0 (3,3V), qui allume la LED. Si on lui envoie 0 (0v), la LED ne s'allume pas.](../../../../images/led-digital-control.png) -For more advanced sensors, you can use GPIO pins to send and receive digital data directly with digital sensors and actuators, or via controller boards with ADCs and DACs to talk to analog sensors and actuators. +Pour les capteurs plus avancÊs, vous pouvez utiliser les broches GPIO pour envoyer et recevoir des donnÊes numÊriques directement avec des capteurs et des actionneurs numÊriques, ou via des cartes de contrôle avec des ADC et des DAC pour parler aux capteurs et actionneurs analogiques. -> 💁 if you are using a Raspberry Pi for these labs, the Grove Base Hat has hardware to convert analog sensor signals to digital to send over GPIO. +> 💁 Si vous utilisez un Raspberry Pi pour ces travaux pratiques, le Grove Base Hat dispose d'un matÊriel permettant de convertir les signaux analogiques des capteurs en signaux numÊriques à envoyer via GPIO. -✅ If you have an IoT device with GPIO pins, locate these pins and find a diagram indicating which pins are voltage, ground or programmable. +✅ Si vous avez un dispositif IoT avec des broches GPIO, localisez ces broches et trouvez un diagramme indiquant quelles broches sont sous tension, reliÊes à la masse (ground) ou programmables. -### Analog pins +### Broches analogiques -Some devices, such as Arduino devices, provide analog pins. These are the same as GPIO pins, but instead of only supporting a digital signal, they have an ADC to convert voltage ranges to numerical values. Usually the ADC has a 10-bit resolution, meaning it converts voltages to a value of 0-1,023. +Certains appareils, tels que les appareils Arduino, fournissent des broches analogiques. Elles sont identiques aux broches GPIO, mais au lieu de supporter uniquement un signal numÊrique, elles disposent d'un ADC pour convertir les plages de tension en valeurs numÊriques. En gÊnÊral, l'ADC a une rÊsolution de 10 bits, ce qui signifie qu'il convertit les tensions en une valeur de 0-1,023. -For example, on a 3.3V board, if the sensor returns 3.3V, the value returned would be 1,023. If the voltage returned was 1.65v, the value returned will be 511. +Par exemple, sur une carte 3.3V, si le capteur renvoie 3.3V, la valeur renvoyÊe sera de 1,023. Si la tension renvoyÊe est de 1,65 V, la valeur renvoyÊe sera de 511. -![A soil moisture sensor sent 3.3V and returning 1.65v, or a reading of 511](../../../images/analog-sensor-voltage.png) +![Un capteur d'humiditÊ du sol envoie 3.3V et retourne 1.65v, soit une lecture de 511](../../../../images/analog-sensor-voltage.png) -> 💁 Back in nightlight - lesson 3, the light sensor returned a value from 0-1,023. If you are using a Wio Terminal, the sensor was connected to an analog pin. If you are using a Raspberry Pi, then the sensor was connected to an analog pin on the base hat that has an integrated ADC to communicate over the GPIO pins. The virtual device was set to send a value from 0-1,023 to simulate an analog pin. +> 💁 Dans la leçon 3 de la veilleuse, le capteur de lumière renvoyait une valeur comprise entre 0 et 1,023. Si vous utilisez un terminal Wio, le capteur Êtait connectÊ à une broche analogique. Si vous utilisez un Raspberry Pi, le capteur a ÊtÊ connectÊ à une broche analogique sur le chapeau de base qui a un ADC intÊgrÊ pour communiquer sur les broches GPIO. Le dispositif virtuel a ÊtÊ configurÊ pour envoyer une valeur de 0-1,023 pour simuler une broche analogique. -Soil moisture sensors rely on voltages, so will use analog pins and give values from 0-1,023. +Les capteurs d'humiditÊ du sol reposent sur des tensions, ils utilisent donc des broches analogiques et donnent des valeurs comprises entre 0 et 1 023. -### Inter Integrated Circuit (I2C) +### Protocol "Inter Integrated Circuit" (I2C) -I2C, pronounced *I-squared-C*, is a multi-controller, multi-peripheral protocol, with any connected device able to act as a controller or peripheral communicating over the I2C bus (the name for a communication system that transfers data). Data is sent as addressed packets, with each packet containing the address of the connected device it is intended for. +I2C, prononcÊ *I-squared-C*, est un protocole multi-contrôleur, multi-pÊriphÊrique, avec tout dispositif connectÊ capable d'agir comme un contrôleur ou un pÊriphÊrique communiquant sur le bus I2C (le nom d'un système de communication qui transfère des donnÊes). Les donnÊes sont envoyÊes sous forme de paquets adressÊs, chaque paquet contenant l'adresse du pÊriphÊrique connectÊ auquel il est destinÊ. -> 💁 This model used to be referred to as master/slave, but this terminology is being dropped due to its association with slavery. The [Open Source Hardware Association has adopted controller/peripheral](https://www.oshwa.org/a-resolution-to-redefine-spi-signal-names/), but you may still see references to the old terminology. +> 💁 Ce modèle Êtait autrefois appelÊ "maÃŽtre/esclave", mais cette terminologie est abandonnÊe en raison de son association avec l'esclavage. L'association [Open Source Hardware Association a adoptÊ un contrôleur/pÊriphÊrique](https://www.oshwa.org/a-resolution-to-redefine-spi-signal-names/), mais vous pouvez encore voir des rÊfÊrences à l'ancienne terminologie. -Devices have an address that is used when they connect to the I2C bus, and is usually hard coded on the device. For example, each type of Grove sensor from Seeed has the same address, so all the light sensors have the same address, all the buttons have the same address that is different from the light sensor address. Some devices have ways to change the address, by changing jumper settings or soldering pins together. +Les dispositifs ont une adresse qui est utilisÊe lorsqu'ils se connectent au bus I2C, et qui est gÊnÊralement Êcrite mot pour mot (hardcoded) sur le dispositif. Par exemple, chaque type de capteur Grove de Seeed a la mÃĒme adresse, donc tous les capteurs de lumière ont la mÃĒme adresse, tous les boutons ont la mÃĒme adresse qui est diffÊrente de celle du capteur de lumière. Certains appareils permettent de modifier l'adresse, en changeant le rÊglage des cavaliers ou en soudant les broches ensemble. -I2C has a bus made of 2 main wires, along with 2 power wires: +I2C a un bus composÊ de 2 fils principaux, ainsi que de 2 fils d'alimentation : -| Wire | Name | Description | +| Fil | Nom | Description | | ---- | --------- | ----------- | -| SDA | Serial Data | This wire is for sending data between devices. | -| SCL | Serial Clock | This wire sends a clock signal at a rate set by the controller. | -| VCC | Voltage common collector | The power supply for the devices. This is connected to the SDA and SCL wires to provide their power via a pull-up resistor that switches the signal off when no device is the controller. | -| GND | Ground | This provides a common ground for the electrical circuit. | +| SDA | Serial Data | Ce fil sert à envoyer des donnÊes entre les appareils. | +| SCL | Serial Clock | Ce fil envoie un signal d'horloge à un rythme dÊfini par le contrôleur. | +| VCC | Voltage common collector | L'alimentation des pÊriphÊriques. Elle est connectÊe aux fils SDA et SCL pour fournir leur alimentation via une rÊsistance pull-up qui coupe le signal lorsqu'aucun dispositif n'est le contrôleur. | +| GND | Ground | Cela fournit une masse commune pour le circuit Êlectrique. | -![I2C bus with 3 devices connected to the SDA and SCL wires, sharing a common ground wire](../../../images/i2c.png) +![Bus I2C avec 3 dispositifs connectÊs aux fils SDA et SCL, partageant un fil de terre commun.](../../../../images/i2c.png) -To send data, one device will issue a start condition to show it is ready to send data. It will then become the controller. The controller then sends the address of the device that it wants to communicate with, along with if it wants to read or write data. After the data has been transmitted, the controller sends a stop condition to indicate that it has finished. After this another device can become the controller and send or receive data. +Pour envoyer des donnÊes, un dispositif Êmet une condition de dÊmarrage pour montrer qu'il est prÃĒt à envoyer des donnÊes. Il devient alors le contrôleur. Le contrôleur envoie alors l'adresse du dispositif avec lequel il veut communiquer, et indique s'il veut lire ou Êcrire des donnÊes. Une fois que les donnÊes ont ÊtÊ transmises, le contrôleur envoie une condition d'arrÃĒt pour indiquer qu'il a terminÊ. Après cela, un autre dispositif peut devenir le contrôleur et envoyer ou recevoir des donnÊes. -I2C has speed limits, with 3 different modes running at fixed speeds. The fastest is High Speed mode with a maximum speed of 3.4Mbps (megabits per second), though very few devices support that speed. The Raspberry Pi for example, is limited to fast mode at 400Kbps (kilobits per second). Standard mode runs at 100Kbps. +I2C a des limites de vitesse, avec 3 modes diffÊrents fonctionnant à des vitesses fixes. Le plus rapide est le mode High Speed avec une vitesse maximale de 3,4Mbps (mÊgabits par seconde), bien que très peu d'appareils supportent cette vitesse. Le Raspberry Pi, par exemple, est limitÊ au mode rapide à 400Kbps (kilobits par seconde). Le mode standard fonctionne à 100Kbps. -> 💁 If you are using a Raspberry Pi with a Grove Base hat as your IoT hardware, you will be able to see a number of I2C sockets on the board you can use to communicate with I2C sensors. Analog Grove sensors also use I2C with an ADC to send analog values as digital data, so the light sensor you used simulated an analog pin, with the value sent over I2C as the Raspberry Pi only supports digital pins. +> 💁 Si vous utilisez un Raspberry Pi avec un chapeau Grove Base comme matÊriel IoT, vous pourrez voir un certain nombre de prises I2C sur la carte que vous pouvez utiliser pour communiquer avec des capteurs I2C. Les capteurs Analog Grove utilisent Êgalement l'I2C avec un ADC pour envoyer des valeurs analogiques sous forme de donnÊes numÊriques, de sorte que le capteur de lumière que vous avez utilisÊ a simulÊ une broche analogique, avec la valeur envoyÊe sur I2C car le Raspberry Pi ne prend en charge que les broches numÊriques. -### Universal asynchronous receiver-transmitter (UART) +### RÊcepteur-Êmetteur asynchrone universel (UART) -UART involves physical circuitry that allows two devices to communicate. Each device has 2 communication pins - transmit (Tx) and receive (Rx), with the Tx pin of the first device connected to the Rx pin of the second, and with the Tx pin of the second device connected to the Rx pin of the first. This allows data to be sent in both directions. +UART est un circuit physique qui permet à deux appareils de communiquer. Chaque pÊriphÊrique dispose de 2 broches de communication - transmission (Tx) et rÊception (Rx), la broche Tx du premier pÊriphÊrique Êtant connectÊe à la broche Rx du second, et la broche Tx du second pÊriphÊrique Êtant connectÊe à la broche Rx du premier. Cela permet d'envoyer des donnÊes dans les deux sens. -* Device 1 transmits data from its Tx pin, which is received by device 2 on it's Rx pin -* Device 1 receives data on its Rx pin that is transmitted by device 2 from its Tx pin +* Le dispositif 1 transmet des donnÊes depuis sa broche Tx, qui sont reçues par le dispositif 2 sur sa broche Rx. +* Le dispositif 1 reçoit des donnÊes sur sa broche Rx qui sont transmises par le dispositif 2 depuis sa broche Tx. -![UART with the Tx pin on one chip connected to the Rx pin on another, and vice versa](../../../images/uart.png) +![UART avec la broche Tx d'une puce connectÊe à la broche Rx d'une autre, et vice versa.](../../../../images/uart.png) -> 🎓 The data is sent one bit at a time, and this is known as *serial* communication. Most operating systems and microcontrollers have *serial ports*, that is connections that can send and receive serial data that are available to your code. +> 🎓 Les donnÊes sont envoyÊes un bit à la fois, c'est ce qu'on appelle la communication *sÊrie*. La plupart des systèmes d'exploitation et des microcontrôleurs ont des *ports sÊrie*, c'est-à-dire des connexions permettant d'envoyer et de recevoir des donnÊes sÊrie qui sont à la disposition de votre code. -UART devices have a [baud rate](https://wikipedia.org/wiki/Symbol_rate) (also known as Symbol rate), which is the speed that data will be sent and received in bits per second. A common baud rate is 9,600, meaning 9,600 bits (0s and 1s) of data are sent each second. +Les dispositifs UART ont un [dÊbit en bauds](https://wikipedia.org/wiki/Symbol_rate) (Êgalement connu sous le nom de taux de symbole), qui est la vitesse à laquelle les donnÊes sont envoyÊes et reçues en bits par seconde. Une vitesse de transmission courante est de 9 600 bauds, ce qui signifie que 9 600 bits (0 et 1) de donnÊes sont envoyÊs chaque seconde. -UART uses start and stop bits - that is it sends a start bit to indicate that it's about to send a byte (8 bits) of data, then a stop bit after it sends the 8 bits. +UART utilise des bits de dÊpart et d'arrÃĒt, c'est-à-dire qu'il envoie un bit de dÊpart pour indiquer qu'il est sur le point d'envoyer un octet (8 bits) de donnÊes, puis un bit d'arrÃĒt après avoir envoyÊ les 8 bits. -UART speed is dependent on hardware, but even the fastest implementations don't exceed 6.5 Mbps (megabits per second, or millions of bits, 0 or 1, sent per second). +La vitesse de l'UART dÊpend du matÊriel, mais mÃĒme les implÊmentations les plus rapides ne dÊpassent pas 6,5 Mbps (mÊgabits par seconde, ou millions de bits, 0 ou 1, envoyÊs par seconde). -You can use UART over GPIO pins - you can set one pin as Tx and another as Rx, then connect these to another device. +Vous pouvez utiliser UART sur les broches GPIO - vous pouvez dÊfinir une broche comme Tx et une autre comme Rx, puis les connecter à un autre appareil. -> 💁 If you are using a Raspberry Pi with a Grove Base hat as your IoT hardware, you will be able to see a UART socket on the board you can use to communicate with sensors that use the UART protocol. +> 💁 Si vous utilisez un Raspberry Pi avec un "hat" de base Grove comme matÊriel IoT, vous pourrez voir une prise UART sur la carte que vous pouvez utiliser pour communiquer avec des capteurs qui utilisent le protocole UART. ### Serial Peripheral Interface (SPI) -SPI is designed for communicating over short distances, such as on a microcontroller to talk to a storage device such as flash memory. It is based on a controller/peripheral model with a single controller (usually the processor of the IoT device) interacting with multiple peripherals. The controller controls everything by selecting a peripheral and sending or requesting data. +SPI est conçu pour communiquer sur de courtes distances, comme sur un microcontrôleur pour parler à un pÊriphÊrique de stockage tel que la mÊmoire flash. Il est basÊ sur un modèle contrôleur/pÊriphÊrique avec un seul contrôleur (gÊnÊralement le processeur du dispositif IoT) interagissant avec plusieurs pÊriphÊriques. Le contrôleur contrôle tout en sÊlectionnant un pÊriphÊrique et en envoyant ou en demandant des donnÊes. -> 💁 Like I2C, the terms controller and peripheral are recent changes, so you may see the older terms still used. +> 💁 Comme pour l'I2C, les termes contrôleur et pÊriphÊrique sont des changements rÊcents, vous verrez donc peut-ÃĒtre les anciens termes encore utilisÊs. -SPI controllers use 3 wires, along with 1 extra wire per peripheral. Peripherals use 4 wires. These wires are: +Les contrôleurs SPI utilisent 3 fils, ainsi qu'un fil supplÊmentaire par pÊriphÊrique. Les pÊriphÊriques utilisent 4 fils. Ces fils sont : -| Wire | Name | Description | +| Fil | Nom | Description | | ---- | --------- | ----------- | -| COPI | Controller Output, Peripheral Input | This wire is for sending data from the controller to the peripheral. | -| CIPO | Controller Input, peripheral Output | This wire is for sending data from the peripheral to the controller. | -| SCLK | Serial Clock | This wire sends a clock signal at a rate set by the controller. | -| CS | Chip Select | The controller has multiple wires, one per peripheral, and each wire connects to the CS wire on the corresponding peripheral. | +| COPI | Controller Output, Peripheral Input | Ce fil sert à envoyer des donnÊes du contrôleur au pÊriphÊrique. | +| CIPO | Controller Input, peripheral Output | Ce fil sert à envoyer des donnÊes du pÊriphÊrique au contrôleur. | +| SCLK | Serial Clock | Ce fil envoie un signal d'horloge à un rythme dÊfini par le contrôleur. | +| CS | Chip Select | Le contrôleur comporte plusieurs fils, un par pÊriphÊrique, et chaque fil se connecte au fil CS du pÊriphÊrique correspondant. | -![SPI with on controller and two peripherals](../../../images/spi.png) +![SPI avec un contrôleur et deux pÊriphÊriques](../../../../images/spi.png) -The CS wire is used to activate one peripheral at a time, communicating over the COPI and CIPO wires. When the controller needs to change peripheral, it deactivates the CS wire connected to the currently active peripheral, then activates the wire connected to the peripheral it wants to communicate with next. +Le fil CS est utilisÊ pour activer un pÊriphÊrique à la fois, en communiquant par les fils COPI et CIPO. Lorsque le contrôleur doit changer de pÊriphÊrique, il dÊsactive le fil CS connectÊ au pÊriphÊrique actuellement actif, puis active le fil connectÊ au pÊriphÊrique suivant avec lequel il veut communiquer. -SPI is *full-duplex*, meaning the controller can send and receive data at the same time from the same peripheral using the COPI and CIPO wires. SPI uses a clock signal on the SCLK wire to keep the devices in sync, so unlike sending directly over UART it doesn't need start and stop bits. +SPI est *full-duplex*, ce qui signifie que le contrôleur peut envoyer et recevoir des donnÊes en mÃĒme temps depuis le mÃĒme pÊriphÊrique en utilisant les fils COPI et CIPO. SPI utilise un signal d'horloge sur le fil SCLK pour garder les pÊriphÊriques synchronisÊs, donc contrairement à l'envoi direct sur UART, il n'a pas besoin de bits de dÊpart et d'arrÃĒt. -There are no defined speed limits for SPI, with implementations often able to transmit multiple megabytes of data per second. +Il n'y a pas de limites de vitesse dÊfinies pour SPI, les implÊmentations Êtant souvent capables de transmettre plusieurs mÊgaoctets de donnÊes par seconde. -IoT developer kits often support SPI over some of the GPIO pins. For example, on a Raspberry Pi you can use GPIO pins 19, 21, 23, 24 and 26 for SPI. +Les kits de dÊveloppement IoT prennent souvent en charge SPI sur certaines des broches GPIO. Par exemple, sur un Raspberry Pi, vous pouvez utiliser les broches GPIO 19, 21, 23, 24 et 26 pour SPI. -### Wireless +### Sans fil -Some sensors can communicate over standard wireless protocols, such as Bluetooth (mainly Bluetooth Low Energy, or BLE), LoRaWAN (a **Lo**ng **Ra**nge low power networking protocol), or WiFi. These allow for remote sensors not physically connected to an IoT device. +Certains capteurs peuvent communiquer via des protocoles sans fil standard, tels que Bluetooth (principalement Bluetooth Low Energy, ou BLE), LoRaWAN (un protocole de rÊseau **Lo**ng **Ra**nge à faible consommation) ou WiFi. Ceux-ci permettent d'utiliser des capteurs distants qui ne sont pas physiquement connectÊs à un dispositif IoT. -One such example is in commercial soil moisture sensors. These will measure soil moisture in a field, then send the data over LoRaWan to a hub device, which will process the data or send it over the Internet. This allows the sensor to be away from the IoT device that manages the data, reducing power consumption and the need for large WiFi networks or long cables. +Les capteurs commerciaux d'humiditÊ du sol en sont un exemple. Ceux-ci vont mesurer l'humiditÊ du sol dans un champ, puis envoyer les donnÊes sur LoRaWan à un dispositif hub, qui va traiter les donnÊes ou les envoyer sur Internet. Cela permet au capteur d'ÃĒtre ÊloignÊ du dispositif IoT qui gère les donnÊes, ce qui rÊduit la consommation d'Ênergie et la nÊcessitÊ de grands rÊseaux WiFi ou de longs cÃĸbles. -BLE is popular for advanced sensors such as fitness trackers work on the wrist. These combine multiple sensors and send the sensor data to an IoT device in the form of your phone via BLE. +BLE est populaire pour les capteurs avancÊs tels que les trackers de fitness fonctionnent au poignet. Ceux-ci combinent plusieurs capteurs et envoient les donnÊes du capteur à un dispositif IoT sous la forme de votre tÊlÊphone via BLE. -✅ Do you have any bluetooth sensors on your person, in your house or in your school? These might include temperature sensors, occupancy sensors, device trackers and fitness devices. +✅ Avez-vous des capteurs Bluetooth sur vous, dans votre maison ou dans votre Êcole ? Il peut s'agir de capteurs de tempÊrature, de capteurs d'occupation, de traqueurs d'appareils et d'appareils de fitness. -One popular way for commercial devices to connect is Zigbee. Zigbee uses WiFi to form mesh networks between devices, where each device connects to as many nearby devices as possible, forming a large number of connections like a spiders web. When one device wants to send a message to the Internet it can send it to the nearest devices, which then forward it on to other nearby devices and so on, until it reaches a coordinator and can be sent to the Internet. +Zigbee est un moyen populaire de connecter les appareils commerciaux. Zigbee utilise le WiFi pour former des rÊseaux maillÊs entre les appareils, oÚ chaque appareil se connecte à autant d'appareils proches que possible, formant un grand nombre de connexions comme une toile d'araignÊe. Lorsqu'un appareil veut envoyer un message à l'internet, il peut l'envoyer aux appareils les plus proches, qui le transmettent ensuite à d'autres appareils proches et ainsi de suite, jusqu'à ce qu'il atteigne un coordinateur et puisse ÃĒtre envoyÊ à l'internet. -> 🐝 The name Zigbee refers to the waggle dance of honey bees after their return to the beehive. +> 🐝 Le nom Zigbee fait rÊfÊrence à la danse de l'agitation des abeilles à miel après leur retour à la ruche. -## Measure the moisture levels in soil +## Mesurer les niveaux d'humiditÊ dans le sol -You can measure the moisture level in soil using a soil moisture sensor, an IoT device, and a house plant or nearby patch of soil. +Vous pouvez mesurer le niveau d'humiditÊ du sol à l'aide d'un capteur d'humiditÊ du sol, d'un dispositif IoT et d'une plante d'intÊrieur ou d'une parcelle de terre à proximitÊ. -### Task - measure soil moisture +### TÃĸche - mesurer l'humiditÊ du sol -Work through the relevant guide to measure soil moisture using your IoT device: +Suivez le guide correspondant pour mesurer l'humiditÊ du sol à l'aide de votre appareil IoT : -* [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) +* [Arduino - Terminal Wio](wio-terminal-soil-moisture.fr.md) +* [Ordinateur monocarte - Raspberry Pi](pi-soil-moisture.fr.md) +* [Ordinateur monocarte - Virtuel](virtual-device-soil-moisture.fr.md) -## Sensor calibration +## Étalonnage du capteur -Sensors rely on measuring electrical properties such as resistance or capacitance. +Les capteurs reposent sur la mesure de propriÊtÊs Êlectriques telles que la rÊsistance ou la capacitÊ. -> 🎓 Resistance, measured in ohms (Ί) is how much opposition there is to the electric current travelling through something. When a voltage is applied to a material, the amount of current that passes through it is dependant on the resistance of the material. You can read more on the [electrical resistance page on Wikipedia](https://wikipedia.org/wiki/Electrical_resistance_and_conductance). +> 🎓 La rÊsistance, mesurÊe en ohms (Ί), est la quantitÊ d'opposition au courant Êlectrique qui traverse quelque chose. Lorsqu'une tension est appliquÊe à un matÊriau, la quantitÊ de courant qui le traverse dÊpend de la rÊsistance du matÊriau. Vous pouvez en savoir plus sur la page [rÊsistance Êlectrique sur WikipÊdia](https://wikipedia.org/wiki/Electrical_resistance_and_conductance). -> 🎓 Capacitance, measured in farads (F), is the ability of a component or circuit to collect and store electrical energy. You can read more on capacitance on the [capacitance page on Wikipedia](https://wikipedia.org/wiki/Capacitance). +> 🎓 La capacitÊ, mesurÊe en farads (F), est la capacitÊ d'un composant ou d'un circuit à collecter et à stocker l'Ênergie Êlectrique. Pour en savoir plus sur la capacitÊ, consultez la [page sur la capacitÊ dans WikipÊdia](https://wikipedia.org/wiki/Capacitance). -These measurements are not always useful - imagine a temperature sensor that gave you a measurement of 22.5KΊ! Instead the value measured needs to be converted into a useful unit by being calibrated - that is matching the values measured to the quantity measured to allow new measurements to be converted to the right unit. +Ces mesures ne sont pas toujours utiles - imaginez un capteur de tempÊrature qui vous donne une mesure de 22.5KΊ ! Au lieu de cela, la valeur mesurÊe doit ÃĒtre convertie en une unitÊ utile en Êtant ÊtalonnÊe - c'est-à-dire en faisant correspondre les valeurs mesurÊes à la quantitÊ mesurÊe pour permettre aux nouvelles mesures d'ÃĒtre converties dans la bonne unitÊ. -Some sensors come pre-calibrated. For example the temperature sensor you used in the last lesson was already calibrated so that it can return a temperature measurement in °C. In the factory the first sensor created would be exposed to a range of known temperatures and the resistance measured. This would then be used to build a calculation that can convert from the value measured in Ί (the unit of resistance) to °C. +Certains capteurs sont livrÊs prÊ-calibrÊs. Par exemple, le capteur de tempÊrature que vous avez utilisÊ dans la dernière leçon a dÊjà ÊtÊ calibrÊ de façon à pouvoir fournir une mesure de tempÊrature en °C. En usine, le premier capteur crÊÊ est exposÊ à une gamme de tempÊratures connues et la rÊsistance est mesurÊe. Cette mesure est ensuite utilisÊe pour Êlaborer un calcul permettant de convertir la valeur mesurÊe en Ί (l'unitÊ de rÊsistance) en °C. -> 💁 The formula to calculate resistance from temperature is called the [Steinhart–Hart equation](https://wikipedia.org/wiki/Steinhart–Hart_equation). +> 💁 La formule permettant de calculer la rÊsistance à partir de la tempÊrature est appelÊe [Êquation de Steinhart-Hart](https://wikipedia.org/wiki/Steinhart–Hart_equation). -### Soil moisture sensor calibration +### Étalonnage du capteur d'humiditÊ du sol -Soil moisture is measured using gravimetric or volumetric water content. +L'humiditÊ du sol est mesurÊe par la teneur en eau gravimÊtrique ou volumÊtrique. -* Gravimetric is the weight of water in a unit weight of soil measured, as the number of kilograms of water per kilogram of dry soil -* Volumetric is the volume of water in a unit volume of soil measured, as the number of cubic metres of water per cubic metres of dry soil +* GravimÊtrique : le poids de l'eau dans une unitÊ de poids de sol mesurÊe, comme le nombre de kilogrammes d'eau par kilogramme de sol sec. +* VolumÊtrique : le volume d'eau dans une unitÊ de volume de sol mesurÊ en nombre de mètres cubes d'eau par mètre cube de sol sec. -> đŸ‡ē🇸 For Americans, because of the consistency of the units, these can be measured in pounds instead of kilograms or cubic feet instead of cubic metres. +> đŸ‡ē🇸 Pour les AmÊricains, en raison de la cohÊrence des unitÊs, on peut les mesurer en livres au lieu de kilogrammes ou en pieds cubes au lieu de mètres cubes. -Soil moisture sensors measure electrical resistance or capacitance - this not only varies by soil moisture, but also soil type as the components in the soil can change its electrical characteristics. Ideally sensors should be calibrated - that is taking readings from the sensor and comparing them to measurements found using a more scientific approach. For example a lab can calculate the gravimetric soil moisture using samples of a specific field taken a few times a year, and these numbers used to calibrate the sensor, matching the sensor reading to the gravimetric soil moisture. +Les capteurs d'humiditÊ du sol mesurent la rÊsistance Êlectrique ou la capacitÊ - celle-ci varie non seulement en fonction de l'humiditÊ du sol, mais aussi du type de sol, car les composants du sol peuvent modifier ses caractÊristiques Êlectriques. IdÊalement, les capteurs doivent ÃĒtre ÊtalonnÊs, c'est-à-dire qu'il faut prendre les lectures du capteur et les comparer aux mesures obtenues par une approche plus scientifique. Par exemple, un laboratoire peut calculer l'humiditÊ gravimÊtrique du sol en utilisant des Êchantillons d'un champ spÊcifique prÊlevÊs plusieurs fois par an, et ces chiffres sont utilisÊs pour calibrer le capteur, en faisant correspondre la lecture du capteur à l'humiditÊ gravimÊtrique du sol. -![A graph of voltage vs soil moisture content](../../../images/soil-moisture-to-voltage.png) +![Un graphique de la tension en fonction de la teneur en humiditÊ du sol](../../../../images/soil-moisture-to-voltage.png) -The graph above shows how to calibrate a sensor . The voltage is captured for a soil sample that is then measured in a lab by comparing the moist weight to the dry weight (by measuring the weight wet, then drying in an oven and measuring dry). Once a few readings have been taken, this can be plotted on a graph and a line fitted to the points. This line can then be used to convert soil moisture sensor readings taken by an IoT device into actual soil moisture measurements. +Le graphique ci-dessus montre comment calibrer un capteur. La tension est capturÊe pour un Êchantillon de sol qui est ensuite mesurÊ dans un laboratoire en comparant le poids humide au poids sec (en mesurant le poids humide, puis en le sÊchant dans un four et en le mesurant sec). Une fois que quelques mesures ont ÊtÊ effectuÊes, elles peuvent ÃĒtre reportÊes sur un graphique et une ligne peut ÃĒtre ajustÊe aux points. Cette ligne peut ensuite ÃĒtre utilisÊe pour convertir les lectures du capteur d'humiditÊ du sol prises par un dispositif IoT en mesures rÊelles de l'humiditÊ du sol. -💁 For resistive soil moisture sensors, the voltage increases as soil moisture increases. For capacitive soil moisture sensors, the voltage decreases as soil moisture increases, so the graphs for these would slope downwards, not upwards. +💁 Pour les capteurs d'humiditÊ du sol rÊsistifs, la tension augmente avec l'humiditÊ du sol. Dans le cas des capteurs d'humiditÊ du sol capacitifs, la tension diminue lorsque l'humiditÊ du sol augmente, de sorte que les graphiques de ces capteurs sont orientÊs vers le bas et non vers le haut. -![A soil moisture value interpolated from the graph](../../../images/soil-moisture-to-voltage-with-reading.png) +![Une valeur d'humiditÊ du sol interpolÊe à partir du graphique](../../../../images/soil-moisture-to-voltage-with-reading.png) -The graph above shows a voltage reading from a soil moisture sensor, and by following that to the line on the graph, the actual soil moisture can be calculated. +Le graphique ci-dessus montre une lecture de tension d'un capteur d'humiditÊ du sol, et en suivant cette lecture jusqu'à la ligne du graphique, l'humiditÊ rÊelle du sol peut ÃĒtre calculÊe. -This approach means the farmer only needs to get a few lab measurements for a field, then they can use IoT devices to measure soil moisture - drastically speeding up the time to take measurements. +Cette approche signifie que l'agriculteur n'a besoin que d'obtenir quelques mesures de laboratoire pour un champ, puis il peut utiliser des dispositifs IoT pour mesurer l'humiditÊ du sol - ce qui accÊlère considÊrablement le temps de prise de mesures. --- -## 🚀 Challenge +## 🚀 DÊfi -Resistive and capacitive soil moisture sensors have a number of differences. What are these differences, and which type (if any) is the best for a farmer to use? Does this answer change between developing and developed countries? +Les capteurs d'humiditÊ du sol rÊsistifs et capacitifs prÊsentent un certain nombre de diffÊrences. Quelles sont ces diffÊrences, et quel type (le cas ÊchÊant) est le meilleur pour un agriculteur ? Cette rÊponse change-t-elle entre les pays en dÊveloppement et les pays dÊveloppÊs ? -## Post-lecture quiz +## Quiz post-lecture -[Post-lecture quiz](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/12) +[Quiz post-lecture](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/12) -## Review & Self Study +## RÊvision et Êtude personnelle -Read up on the hardware and protocols used by sensors and actuators: +Renseignez-vous sur le matÊriel et les protocoles utilisÊs par les capteurs et les actionneurs : -* [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) -* [I2C Wikipedia page](https://wikipedia.org/wiki/I²C) -* [Zigbee Wikipedia page](https://wikipedia.org/wiki/Zigbee) +* [GPIO - Wikipedia](https://wikipedia.org/wiki/General-purpose_input/output) +* [UART - Wikipedia](https://wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter) +* [SPI - Wikipedia](https://wikipedia.org/wiki/Serial_Peripheral_Interface) +* [I2C - Wikipedia](https://wikipedia.org/wiki/I²C) +* [Zigbee - Wikipedia](https://wikipedia.org/wiki/Zigbee) -## Assignment +## Devoir -[Calibrate your sensor](assignment.md) +[Calibrez votre capteur](assignment.fr.md) \ No newline at end of file diff --git a/2-farm/lessons/2-detect-soil-moisture/translations/assignment.fr.md b/2-farm/lessons/2-detect-soil-moisture/translations/assignment.fr.md new file mode 100644 index 00000000..6a411f78 --- /dev/null +++ b/2-farm/lessons/2-detect-soil-moisture/translations/assignment.fr.md @@ -0,0 +1,47 @@ +# Calibrez votre capteur + +## Instructions + +Dans cette leçon, vous avez recueilli les lectures de la sonde d'humiditÊ du sol mesurÊes sous forme de valeurs comprises entre 0 et 1023. Pour les convertir en valeurs rÊelles d'humiditÊ du sol, vous devez Êtalonner votre capteur. Pour ce faire, vous pouvez effectuer des relevÊs sur des Êchantillons de sol, puis calculer la teneur en eau gravimÊtrique du sol à partir de ces Êchantillons. + +Vous devrez rÊpÊter ces Êtapes plusieurs fois pour obtenir les lectures nÊcessaires, avec une humiditÊ diffÊrente du sol à chaque fois. + +1. Relevez l'humiditÊ du sol à l'aide du capteur d'humiditÊ du sol. Notez cette mesure. + +1. Prenez un Êchantillon du sol et pesez-le. Notez ce poids. + +1. SÊchez la terre - un four chaud à 110°C (230°F) pendant quelques heures est le meilleur moyen, vous pouvez le faire à la lumière du soleil, ou le placer dans un endroit chaud et sec jusqu'à ce que la terre soit complètement sèche. Elle doit ÃĒtre poudreuse et meuble. + + > 💁 Dans un laboratoire, pour obtenir les rÊsultats les plus prÊcis, vous devez sÊcher dans un four pendant 48 à 72 heures. Si vous avez des Êtuves à votre Êcole, voyez si vous pouvez les utiliser pour sÊcher plus longtemps. Plus le temps est long, plus l'Êchantillon est sec et plus les rÊsultats sont prÊcis. + +1. Pesez à nouveau la terre. + + > đŸ”Ĩ Si vous l'avez sÊchÊ dans un four, assurez-vous qu'il a d'abord refroidi ! + +L'humiditÊ gravimÊtrique du sol est calculÊe comme suit : + +![Le pourcentage d'humiditÊ du sol est le poids humide moins le poids sec, divisÊ par le poids sec, multipliÊ par 100](../../../../images/gsm-calculation.png) + +* Whumide - le poids de la terre humide +* Wsec - le poids du sol sec + +Par exemple, disons que vous avez un Êchantillon de sol qui pèse 212 g humide et 197 g sec. + +![Calcul rempli](../../../../images/gsm-calculation-example.png) + +* Whumide = 212g +* Wsec = 197g +* 212 - 197 = 15 +* 15 / 197 = 0.076 +* 0.076 * 100 = 7.6% + +Dans cet exemple, le sol a une humiditÊ gravimÊtrique de 7,6 %. + +Une fois que vous avez les lectures d'au moins 3 Êchantillons, tracez un graphique du pourcentage d'humiditÊ du sol par rapport à la lecture du capteur d'humiditÊ du sol et ajoutez la ligne qui correspond le mieux aux points. Vous pouvez ensuite utiliser ce graphique pour calculer la teneur en eau gravimÊtrique du sol pour une lecture de capteur donnÊe en lisant la valeur de la ligne. + +## Grille d'Êvaluation + +| Critère | Exemple | AdÊquat | NÊcessite amÊlioration | +| -------- | --------- | -------- | ----------------- | +| Recueillir les donnÊes d'Êtalonnage | Capturez au moins 3 Êchantillons d'Êtalonnage | Capturez au moins 2 Êchantillons d'Êtalonnage | Capturez au moins un Êchantillon d'Êtalonnage | +| Effectuer une lecture calibrÊe | Tracez avec succès le graphique d'Êtalonnage, effectuez une lecture du capteur et convertissez-la en teneur en eau gravimÊtrique du sol | Tracer avec succès le graphique d'Êtalonnage | Impossible de tracer le graphique | diff --git a/2-farm/lessons/2-detect-soil-moisture/translations/pi-soil-moisture.fr.md b/2-farm/lessons/2-detect-soil-moisture/translations/pi-soil-moisture.fr.md new file mode 100644 index 00000000..dcb2644d --- /dev/null +++ b/2-farm/lessons/2-detect-soil-moisture/translations/pi-soil-moisture.fr.md @@ -0,0 +1,94 @@ +# Mesurer l'humiditÊ du sol - Raspberry Pi + +Dans cette partie de la leçon, vous allez ajouter un capteur capacitif d'humiditÊ du sol à votre Raspberry Pi, et lire des valeurs à partir de celui-ci. + +## MatÊriel + +Le Raspberry Pi a besoin d'un capteur capacitif d'humiditÊ du sol. + +Le capteur que vous utiliserez est un [Capteur d'humiditÊ du sol capacitif](https://www.seeedstudio.com/Grove-Capacitive-Moisture-Sensor-Corrosion-Resistant.html). Ce dernier mesure l'humiditÊ du sol en dÊtectant la capacitÊ du sol, une propriÊtÊ qui change en fonction de l'humiditÊ du sol. Plus l'humiditÊ du sol augmente, plus la tension diminue. + +Il s'agit d'un capteur analogique, qui utilise donc une broche analogique et le ADC 10 bits du "Grove Base Hat" sur le Pi pour convertir la tension en un signal numÊrique de 1 à 1023. Celui-ci est ensuite envoyÊ sur I2C via les broches GPIO du Pi. + +### Connecter le capteur d'humiditÊ du sol + +Le capteur d'humiditÊ du sol Grove peut ÃĒtre connectÊ au Raspberry Pi. + +#### TÃĸche - connecter le capteur d'humiditÊ du sol + +Connectez le capteur d'humiditÊ du sol. + +![Capteur d'humiditÊ du sol d'un bosquet](../../../../images/grove-capacitive-soil-moisture-sensor.png) + +1. InsÊrez une extrÊmitÊ d'un cÃĸble Grove dans la prise du capteur d'humiditÊ du sol. Il ne peut ÃĒtre insÊrÊ que dans un seul sens. + +1. Lorsque le Raspberry Pi est hors tension, connectez l'autre extrÊmitÊ du cÃĸble Grove à la prise analogique marquÊe **A0** sur le "Grove Base Hat" fixÊ au Pi. Cette prise est la deuxième en partant de la droite, sur la rangÊe de prises à côtÊ des broches GPIO. + +![Le capteur d'humiditÊ du sol du bosquet connectÊ à la prise A0](../../../../images/pi-soil-moisture-sensor.png) + +1. InsÊrez le capteur d'humiditÊ du sol dans le sol. Il est dotÊ d'une " ligne de position la plus ÊlevÊe ", une ligne blanche qui traverse le capteur. InsÊrez le capteur jusqu'à cette ligne mais sans la dÊpasser. + +![Le capteur d'humiditÊ du sol The Grove dans le sol](../../../../images/soil-moisture-sensor-in-soil.png) + +## Programmer le capteur d'humiditÊ du sol + +Le Raspberry Pi peut maintenant ÃĒtre programmÊ pour utiliser la sonde d'humiditÊ du sol jointe. + +### TÃĸche - programmer le capteur d'humiditÊ du sol + +Programmez l'appareil. + +1. Allumez le Pi et attendez qu'il dÊmarre. + +1. Lancez VS Code, soit directement sur le Pi, soit en vous connectant via l'extension SSH à distance. + + > âš ī¸ Vous pouvez vous rÊfÊrer [aux instructions pour configurer et lancer VS Code dans la veilleuse - leçon 1 si nÊcessaire](../../../../1-getting-started/lessons/1-introduction-to-iot/pi.fr.md). + +1. Depuis le terminal, crÊez un nouveau dossier dans le rÊpertoire personnel de l'utilisateur `pi` appelÊ `soil-moisture-sensor`. CrÊez un fichier dans ce dossier appelÊ `app.py`. + +1. Ouvrez ce dossier dans VS Code + +1. Ajoutez le code suivant au fichier `app.py` pour importer certaines bibliothèques requises : + + ```python + import time + from grove.adc import ADC + ``` + + L'instruction `import time` importe le module `time` qui sera utilisÊ plus tard dans ce devoir. + + L'instruction `from grove.adc import ADC` importe le `ADC` des bibliothèques Python de Grove. Cette bibliothèque contient du code pour interagir avec le convertisseur analogique-numÊrique du chapeau de base Pi et lire les tensions des capteurs analogiques. + +1. Ajoutez le code suivant en dessous pour crÊer une instance de la classe `ADC` : + + ```python + adc = ADC() + ``` + +1. Ajoutez une boucle infinie qui lit depuis cet ADC sur la broche A0, et Êcrit le rÊsultat sur la console. Cette boucle peut ensuite dormir pendant 10 secondes entre les lectures. + + ```python + while True: + soil_moisture = adc.read(0) + print("Soil moisture:", soil_moisture) + + time.sleep(10) + ``` + +1. ExÊcutez l'application Python. Vous verrez les mesures d'humiditÊ du sol Êcrites dans la console. Ajoutez de l'eau au sol ou retirez le capteur du sol et observez le changement de valeur. + + ```output + pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py + Soil moisture: 615 + Soil moisture: 612 + Soil moisture: 498 + Soil moisture: 493 + Soil moisture: 490 + Soil Moisture: 388 + ``` + + Dans l'exemple de sortie ci-dessus, vous pouvez voir la chute de tension lorsque de l'eau est ajoutÊe. + +> 💁 Vous pouvez trouver ce code dans le dossier [code/pi](../code/pi). + +😀 Votre programme de capteurs d'humiditÊ du sol a ÊtÊ un succès ! diff --git a/2-farm/lessons/2-detect-soil-moisture/translations/virtual-device-soil-moisture.fr.md b/2-farm/lessons/2-detect-soil-moisture/translations/virtual-device-soil-moisture.fr.md new file mode 100644 index 00000000..ae93eec5 --- /dev/null +++ b/2-farm/lessons/2-detect-soil-moisture/translations/virtual-device-soil-moisture.fr.md @@ -0,0 +1,109 @@ +# Mesurer l'humiditÊ du sol - MatÊriel IoT Virtuel + +Dans cette partie de la leçon, vous allez ajouter un capteur capacitif d'humiditÊ du sol à votre dispositif IoT virtuel, et lire des valeurs à partir de celui-ci. + +## MatÊriel virtuel + +Le dispositif IoT virtuel utilisera un capteur d'humiditÊ du sol capacitif Grove simulÊ. Ainsi, ce laboratoire est identique à l'utilisation d'un Raspberry Pi avec un capteur d'humiditÊ du sol capacitif Grove physique. + +Dans un dispositif IoT physique, le capteur d'humiditÊ du sol serait un capteur capacitif qui mesure l'humiditÊ du sol en dÊtectant la capacitÊ du sol, une propriÊtÊ qui change en fonction de l'humiditÊ du sol. Lorsque l'humiditÊ du sol augmente, la tension diminue. + +Il s'agit d'un capteur analogique, qui utilise donc un ADC 10 bits simulÊ pour rapporter une valeur de 1 à 1023. + +### Ajouter le capteur d'humiditÊ du sol à CounterFit + +Pour utiliser un capteur d'humiditÊ du sol virtuel, vous devez l'ajouter à l'application CounterFit. + +#### TÃĸche - Ajout du capteur d'humiditÊ du sol à CounterFit + +Ajoutez le capteur d'humiditÊ du sol à l'application CounterFit. + +1. CrÊez une nouvelle application Python sur votre ordinateur dans un dossier appelÊ `soil-moisture-sensor` avec un seul fichier appelÊ `app.py` et un environnement virtuel Python, et ajoutez les paquets pip de CounterFit. + + > âš ī¸ Vous pouvez vous rÊfÊrer [aux instructions pour crÊer et configurer un projet Python CounterFit dans la leçon 1 si nÊcessaire](../../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.fr.md). + +1. Assurez-vous que l'application web CounterFit est en cours d'exÊcution. + +1. CrÊez un capteur d'humiditÊ du sol : + + 1. Dans la case *Create sensor* du volet *Sensors*, dÊroulez la case *Sensor type* et sÊlectionnez *Soil Moisture*. + + 1. Laissez le paramètre *Units* sur *NoUnits*. + + 1. Assurez-vous que le paramètre *Pin* est rÊglÊe sur *0*. + + 1. SÊlectionnez le bouton **Add** pour crÊer le capteur d'humiditÊ sur la broche 0. + + ![The soil moisture sensor settings](../../../../images/counterfit-create-soil-moisture-sensor.png) + + Le capteur d'humiditÊ du sol sera crÊÊ et apparaÃŽtra dans la liste des capteurs. + + ![Le capteur d'humiditÊ du sol a crÊÊ](../../../../images/counterfit-soil-moisture-sensor.png) + +## Programmez l'application du capteur d'humiditÊ du sol + +L'application du capteur d'humiditÊ du sol peut maintenant ÃĒtre programmÊe en utilisant les capteurs CounterFit. + +### TÃĸche - programmer l'application du capteur d'humiditÊ du sol + +Programmez l'application du capteur d'humiditÊ du sol. + +1. Assurez-vous que l'application "Soil-Moisture-Sensor" est ouverte dans VS Code. + +1. Ouvrez le fichier `app.py`. + +1. Ajoutez le code suivant au dÊbut de `app.py` pour connecter l'application à CounterFit : + + ```python + from counterfit_connection import CounterFitConnection + CounterFitConnection.init('127.0.0.1', 5000) + ``` + +1. Ajoutez le code suivant au fichier `app.py` pour importer certaines bibliothèques requises : + + ```python + import time + from counterfit_shims_grove.adc import ADC + ``` + + L'instruction `import time` importe le module `time` qui sera utilisÊ plus tard dans ce devoir. + + L'instruction `from counterfit_shims_grove.adc import ADC` importe la classe `ADC` pour interagir avec un convertisseur analogique-numÊrique virtuel qui peut se connecter à un capteur CounterFit. + +1. Ajoutez le code suivant en dessous pour crÊer une instance de la classe `ADC` : + + ```python + adc = ADC() + ``` + +1. Ajoutez une boucle infinie qui lit à partir de cet ADC sur la broche 0 et Êcrit le rÊsultat sur la console. Cette boucle peut ensuite dormir pendant 10 secondes entre les lectures. + + ```python + while True: + soil_moisture = adc.read(0) + print("Soil moisture:", soil_moisture) + + time.sleep(10) + ``` + +1. Depuis l'application CounterFit, modifiez la valeur de la sonde d'humiditÊ du sol qui sera lue par l'application. Vous pouvez le faire de deux façons : + + * Saisissez un nombre dans la case *Value* pour le capteur d'humiditÊ du sol, puis sÊlectionnez le bouton **Set**. Le nombre que vous saisissez sera la valeur renvoyÊe par le capteur. + + * Cochez la case *Random* et saisissez une valeur *Min* et *Max*, puis sÊlectionnez le bouton **Set**. Chaque fois que le capteur lit une valeur, il lit un nombre alÊatoire entre *Min* et *Max*. + +1. ExÊcutez l'application Python. Vous verrez les mesures d'humiditÊ du sol Êcrites dans la console. Changez les paramètres *Value* ou *Random* pour voir la valeur changer. + + ```output + (.venv) ➜ soil-moisture-sensor $ python app.py + Soil moisture: 615 + Soil moisture: 612 + Soil moisture: 498 + Soil moisture: 493 + Soil moisture: 490 + Soil Moisture: 388 + ``` + +> 💁 Vous pouvez trouver ce code dans le [code/virtual-device](../code/virtual-device) folder. + +😀 Votre programme de capteurs d'humiditÊ du sol a ÊtÊ un succès ! diff --git a/2-farm/lessons/2-detect-soil-moisture/translations/wio-terminal-soil-moisture.fr.md b/2-farm/lessons/2-detect-soil-moisture/translations/wio-terminal-soil-moisture.fr.md new file mode 100644 index 00000000..0ffc3b5f --- /dev/null +++ b/2-farm/lessons/2-detect-soil-moisture/translations/wio-terminal-soil-moisture.fr.md @@ -0,0 +1,103 @@ +# Mesurer l'humiditÊ du sol - Terminal Wio + +Dans cette partie de la leçon, vous allez ajouter un capteur capacitif d'humiditÊ du sol à votre terminal Wio, et lire des valeurs à partir de celui-ci. + +## MatÊriel + +Le terminal Wio a besoin d'un capteur capacitif d'humiditÊ du sol. + +Le capteur que vous utiliserez est un [Capteur d'humiditÊ du sol capacitif](https://www.seeedstudio.com/Grove-Capacitive-Moisture-Sensor-Corrosion-Resistant.html), qui mesure l'humiditÊ du sol en dÊtectant la capacitÊ du sol, une propriÊtÊ qui change en fonction de l'humiditÊ du sol. Plus l'humiditÊ du sol augmente, plus la tension diminue. + +Il s'agit d'un capteur analogique, qui se connecte donc aux broches analogiques de la borne Wio, en utilisant un ADC intÊgrÊ pour crÊer une valeur de 0-1,023. + +### Connecter le capteur d'humiditÊ du sol + +Le capteur d'humiditÊ du sol Grove peut ÃĒtre connectÊ au port analogique/numÊrique configurable des terminaux Wio. + +#### TÃĸche - connecter le capteur d'humiditÊ du sol + +Connectez le capteur d'humiditÊ du sol. + +![Capteur d'humiditÊ du sol de type Groove](../../../../images/grove-capacitive-soil-moisture-sensor.png) + +1. InsÊrez une extrÊmitÊ d'un cÃĸble Grove dans la prise du capteur d'humiditÊ du sol. Il ne peut ÃĒtre insÊrÊ que dans un seul sens. + +1. Le terminal Wio Êtant dÊconnectÊ de votre ordinateur ou de toute autre source d'alimentation, connectez l'autre extrÊmitÊ du cÃĸble Grove à la prise Grove de droite du terminal Wio lorsque vous regardez l'Êcran. Il s'agit de la prise la plus ÊloignÊe du bouton d'alimentation. + +![Le capteur d'humiditÊ du sol du bosquet est connectÊ à la prise de droite](../../../../images/wio-soil-moisture-sensor.png) + +1. InsÊrez le capteur d'humiditÊ du sol dans le sol. Il est dotÊ d'une " ligne de position la plus ÊlevÊe ", une ligne blanche qui traverse le capteur. InsÊrez le capteur jusqu'à cette ligne mais sans la dÊpasser. + +![Le capteur d'humiditÊ du sol The Grove dans le sol](../../../../images/soil-moisture-sensor-in-soil.png) + +1. Vous pouvez maintenant connecter le terminal Wio à votre ordinateur. + +## Programmer le capteur d'humiditÊ du sol + +Le terminal Wio peut maintenant ÃĒtre programmÊ pour utiliser la sonde d'humiditÊ du sol jointe. + +### TÃĸche - programmer le capteur d'humiditÊ du sol + +Programmez l'appareil. + +1. CrÊez un tout nouveau projet Wio Terminal en utilisant PlatformIO. Appelez ce projet `soil-moisture-sensor`. Ajoutez du code dans la fonction `setup` pour configurer le port sÊrie. + + > âš ī¸ Vous pouvez vous rÊfÊrer [aux instructions pour crÊer un projet PlatformIO dans le projet 1, leçon 1 si nÊcessaire](../../../../1-getting-started/lessons/1-introduction-to-iot/wio-terminal.fr.md). + +1. Il n'y a pas de bibliothèque pour ce capteur, à la place vous pouvez lire la broche analogique en utilisant la fonction Arduino intÊgrÊ [`analogRead`](https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/). Commencez par configurer la broche analogique pour l'entrÊe afin que les valeurs puissent ÃĒtre lues en ajoutant ce qui suit à la fonction `setup`. + + ```cpp + pinMode(A0, INPUT); + ``` + + Ceci dÊfinit la broche `A0`, la broche combinÊe analogique/numÊrique, comme une broche d'entrÊe sur laquelle la tension peut ÃĒtre lue. + +1. Ajoutez ce qui suit à la fonction `loop` pour lire la tension de cette broche : + + ```cpp + int soil_moisture = analogRead(A0); + ``` + +1. Sous ce code, ajoutez le code suivant pour imprimer la valeur sur le port sÊrie : + + ```cpp + Serial.print("Soil Moisture: "); + Serial.println(soil_moisture); + ``` + +1. Enfin, ajoutez un dÊlai à la fin de 10 secondes : + + ```cpp + delay(10000); + ``` + +1. Construisez et tÊlÊchargez le code sur le terminal Wio. + + > âš ī¸ Vous pouvez vous rÊfÊrer [aux instructions pour crÊer un projet PlatformIO dans le projet 1, leçon 1 si nÊcessaire](../../../../1-getting-started/lessons/1-introduction-to-iot/wio-terminal.fr.md). + +1. Une fois tÊlÊchargÊ, vous pouvez surveiller l'humiditÊ du sol à l'aide du moniteur sÊrie. Ajoutez un peu d'eau au sol, ou retirez le capteur du sol, et observez le changement de valeur. + + ```output + > Executing task: platformio device monitor < + + --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time + --- More details at http://bit.ly/pio-monitor-filters + --- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 --- + --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- + Soil Moisture: 526 + Soil Moisture: 529 + Soil Moisture: 521 + Soil Moisture: 494 + Soil Moisture: 454 + Soil Moisture: 456 + Soil Moisture: 395 + Soil Moisture: 388 + Soil Moisture: 394 + Soil Moisture: 391 + ``` + + Dans l'exemple de sortie ci-dessus, vous pouvez voir la chute de tension lorsque de l'eau est ajoutÊe. + +> 💁 Vous pouvez trouver ce code dans le fichier [code/wio-terminal](../code/wio-terminal). + +😀 Votre programme de capteurs d'humiditÊ du sol a ÊtÊ un succès ! diff --git a/2-farm/lessons/2-detect-soil-moisture/virtual-device-soil-moisture.md b/2-farm/lessons/2-detect-soil-moisture/virtual-device-soil-moisture.md index ddceaead..e2406961 100644 --- a/2-farm/lessons/2-detect-soil-moisture/virtual-device-soil-moisture.md +++ b/2-farm/lessons/2-detect-soil-moisture/virtual-device-soil-moisture.md @@ -14,7 +14,7 @@ This is an analog sensor, so uses a simulated 10-bit ADC to report a value from To use a virtual soil moisture sensor, you need to add it to the CounterFit app -#### Task - dd the soil moisture sensor to CounterFit +#### Task - Add the soil moisture sensor to CounterFit Add the soil moisture sensor to the CounterFit app. diff --git a/2-farm/translations/README.fr.md b/2-farm/translations/README.fr.md index 5bf905cd..7f2995b5 100644 --- a/2-farm/translations/README.fr.md +++ b/2-farm/translations/README.fr.md @@ -1,5 +1,3 @@ -[![French](https://img.shields.io/badge/-French-purple)](translations/README.fr.md) - # Agriculture et IoT Les besoins en agriculture augmentent avec la croissance de la popualtion. La quantitÊ de terres disponible ne change pas, bien que le climat lui, change. Ceci amène des dÊfits de plus en plus importants aux fermiers, plus particulièrement pour les 2 milliards de [fermiers de subsistance](https://wikipedia.org/wiki/Subsistence_agriculture) qui dÊpendent de cette production afin de se nourrir ainsi que leur famille. Les technologies des objets connectÊs ont le potentiel d'aider ces fermiers à faire de meilleures dÊcisions sur la production, notemment quoi faire pousser, quand rÊcolter, accroÃŽtre les rÊcoltes, rÊduire la main d'oeuvre ou encore dÊtecter et gÊrer les parasites. diff --git a/translations/README.fr.md b/translations/README.fr.md index 0d3e128b..b4779338 100644 --- a/translations/README.fr.md +++ b/translations/README.fr.md @@ -23,9 +23,9 @@ L'ensemble des projets parlent du parcours que les aliments suivent, de la ferme > IllustrÊ de [Nitya Narasimhan](https://github.com/nitya). Cliquez sur l'image pour l'agrandir. -**Un remerciements chaleureux à nos auteurs [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).** +**Un remerciements chaleureux à nos auteurs [Jen Fox](https://github.com/jenfoxbot), [Jen Looper](https://github.com/jlooper), [Jim Bennett](https://github.com/jimbobbennett), et notre artiste de sketchs [Nitya Narasimhan](https://github.com/nitya).** -**Un grand merci aussi à notre Êquipe [Microsoft Learn Student Ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-17441-jabenn) qui ont rÊvisÊs et traduit cette sÊrie de cours - [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), [Mohammad Zulfikar](https://github.com/mohzulfikar), [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/).** +**Un grand merci aussi à notre Êquipe [Microsoft Learn Student Ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-17441-jabenn) qui ont rÊvisÊs et traduit cette sÊrie de cours - [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), [Mohammad Zulfikar](https://github.com/mohzulfikar), [Priyanshu Srivastav](https://www.linkedin.com/in/priyanshu-srivastav-b067241ba), [Thanmai Gowducheruvu](https://github.com/innovation-platform), ainsi que [Zina Kamel](https://www.linkedin.com/in/zina-kamel/).** Rencontrez l'Êquipe! From 422fc48041024359e7621c30dd62e6b1dafc9675 Mon Sep 17 00:00:00 2001 From: Jim Bennett Date: Mon, 8 Nov 2021 08:57:17 -0800 Subject: [PATCH 14/30] Update hardware.md --- hardware.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardware.md b/hardware.md index 784c7858..0419fb0f 100644 --- a/hardware.md +++ b/hardware.md @@ -55,7 +55,7 @@ All the device code for Raspberry Pi is in Python. To complete all the assignmen ### Raspberry Pi hardware * [Raspberry Pi](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/) - > 💁 Versions from the Pi 2B and above should work with the assignments in these lessons. + > 💁 Versions from the Pi 2B and above should work with the assignments in these lessons. If you are planning on running VS Code directly on the Pi, then a Pi 4 with 2GB or more of RAM is needed. If you are going to access the Pi remotely then any Pi 2B and above will work. * microSD Card (You can get Raspberry Pi kits that come with a microSD Card), along with a connector to use the SD card with your computer if you don't have one built-in. * USB power supply (You can get Raspberry Pi 4 kits that come with a power supply). If you are using a Raspberry Pi 4 you need a USB-C power supply, earlier devices need a micro-USB power supply. From d3ec15cfc305c7d96f8ab8c3f7227e113c8ccfe1 Mon Sep 17 00:00:00 2001 From: Ludovico Besana <35035423+ludovicobesana@users.noreply.github.com> Date: Mon, 8 Nov 2021 18:08:00 +0100 Subject: [PATCH 15/30] feat: Add new favicon and title (#341) Co-authored-by: Jim Bennett --- images/favicon.png | Bin 0 -> 4556 bytes index.html | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 images/favicon.png diff --git a/images/favicon.png b/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..7e33f5aedba624bb20001cc044b0fdd9a8587a46 GIT binary patch literal 4556 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 9bc1032f..171bfa1c 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ - Document + IoT for beginners - \ No newline at end of file + From 458009a7141b0063241e57f6a687ef41ffd7b79d Mon Sep 17 00:00:00 2001 From: Ludovico Besana <35035423+ludovicobesana@users.noreply.github.com> Date: Wed, 10 Nov 2021 19:12:46 +0100 Subject: [PATCH 16/30] fix: Fixed missing link tag (#345) --- index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/index.html b/index.html index 171bfa1c..09c642d5 100644 --- a/index.html +++ b/index.html @@ -8,6 +8,7 @@ + From 36ddcbd0d3a9200c4074aac0c998b53d41ba9289 Mon Sep 17 00:00:00 2001 From: Vianney Gall <41265342+IterateMe@users.noreply.github.com> Date: Wed, 10 Nov 2021 13:16:48 -0500 Subject: [PATCH 17/30] French translation - Missing changes from last PR - Lesson 2.2 (#340) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * - Added README.fr.md in the root folder - Translated the whole leçon 2.1 * just added the whole content * small updates in root folder * Unnecessary shields removed and some corrections have been made from Charles's review * Translation of all lessons of the root README * Translation of for-teachers.md * Translation of hardware.md * Translation of CODE_OF_CONDUCT.md * Translation of CODE_OF_CONDUCT.md * Implement suggested changes from the charles's PR review * Implement suggested changes from the charles's PR review * Implement suggested changes from the charles's PR review * Implement suggested changes from the charles's PR review * Changed the path to the translated README because they were not working from the translated ones * Small change * Resolved unworking links in hardware.fr.md * Removed the shields where it was not necessary as Jim suggested * small correction * Removed the shields and comments as requested by Jim * small update * Small correction on root README * farm > lesson 2 > assignement.fr.md * farm > 2 > README.fr.md * pi-soil-moisture.fr.md completed * farm > lesson 2 > virtual-device-soil-moisture.fr.md * farm > lesson 2 > wio-terminal-soil-moisture.fr.md * Update README.fr.md * Corrected a non functionnal .md link Co-authored-by: Jim Bennett --- 2-farm/lessons/2-detect-soil-moisture/translations/README.fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2-farm/lessons/2-detect-soil-moisture/translations/README.fr.md b/2-farm/lessons/2-detect-soil-moisture/translations/README.fr.md index 74e0cdc9..bd583946 100644 --- a/2-farm/lessons/2-detect-soil-moisture/translations/README.fr.md +++ b/2-farm/lessons/2-detect-soil-moisture/translations/README.fr.md @@ -20,7 +20,7 @@ Dans cette leçon, nous aborderons: * [HumiditÊ du sol](#humiditÊ-du-sol) * [Comment les senseurs communiquent avec les composants IoT](#comment-les-senseurs-communiquent-avec-les-composants-IoT) -* [Mesurer les niveaux d'humiditÊ dans le sol](#mesurer-les-niveaux-d'humiditÊ-dans-le-sol) +* [Mesurer les niveaux d'humiditÊ dans le sol](#mesurer-les-niveaux-d-humiditÊ-dans-le-sol) * [Étalonnage du capteur](#Êtalonnage-du-capteur) ## HumiditÊ du sol From 83dc16350ce1b1f7cba54ec40c69ddce2cd80bbb Mon Sep 17 00:00:00 2001 From: Ozora Ogino <63685461+ozora-ogino@users.noreply.github.com> Date: Wed, 1 Dec 2021 01:34:29 +0900 Subject: [PATCH 18/30] Trasnlate README.md to Japanese (#348) * Add ./lesson-template/translations/README.ja.md * Add a badge for japanese translation * Fix file location * Update README.md * Fix typo * Fix Co-authored-by: Jim Bennett --- README.md | 1 + translations/README.ja.md | 146 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+) create mode 100644 translations/README.ja.md diff --git a/README.md b/README.md index 44139847..f3918652 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ [![Chinese](https://img.shields.io/badge/-Chinese-yellow)](translations/README.zh-cn.md) [![Turkish](https://img.shields.io/badge/-Turkish-darkgreen)](translations/README.tr.md) [![French](https://img.shields.io/badge/-French-purple)](translations/README.fr.md) +[![Japanese](https://img.shields.io/badge/-Japanese-red)](translations/README.ja.md) # IoT for Beginners - A Curriculum diff --git a/translations/README.ja.md b/translations/README.ja.md new file mode 100644 index 00000000..fdb8e943 --- /dev/null +++ b/translations/README.ja.md @@ -0,0 +1,146 @@ +[![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)](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)](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)](https://GitHub.com/microsoft/IoT-For-Beginners/stargazers/) + +[![Bengali](https://img.shields.io/badge/-Bengali-blue)](../translations/README.bn.md) +[![Chinese](https://img.shields.io/badge/-Chinese-yellow)](../translations/README.zh-cn.md) +[![English](https://img.shields.io/badge/-English-red)](../README.md) +[![Turkish](https://img.shields.io/badge/-Turkish-darkgreen)](../translations/README.tr.md) +[![French](https://img.shields.io/badge/-French-purple)](../translations/README.fr.md) + +# IoT for Beginners - A Curriculum + +我々、Microsoftį¤žãŽã‚¯ãƒŠã‚Ļドã‚ĸãƒ‰ãƒœã‚ąã‚¤ãƒˆãƒãƒŧムはIoTぎåŸēį¤ŽãĢé–ĸする12週間ãĢã‚ãŸã‚‹åˆč¨ˆ24ぎãƒŦãƒƒã‚šãƒŗã‚’ã”æäž›ã§ãã‚‹ã“ã¨ã‚’åŋƒã‚ˆã‚ŠåŦ‰ã—く思いぞす。 それぞれぎãƒŦãƒƒã‚šãƒŗãĢã¯å•éĄŒã€č§ŖčĒŦ、IoTぎã‚ŊãƒĒãƒĨãƒŧã‚ˇãƒ§ãƒŗãŽį´šäģ‹ã€čĒ˛éĄŒãĒãŠãŒį”¨æ„ã•ã‚ŒãĻおり、原čˇĩįš„ãĒå­Ļįŋ’を通しãĻåŠšįŽ‡įš„ãĢIoT゚キãƒĢぎ取垗をすることができぞす。 + +ã“ãŽãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆã§ã¯ã€čž˛æĨ­ã€į‰Šæĩã€čŖŊ造æĨ­ã€å°åŖ˛ã€æļˆč˛ģ者ãĒおIoTãŒį”¨ã„ã‚‰ã‚Œã‚‹ä¸ģčρãĒæĨ­į•Œå…¨ãĻを取り上げぞす。 + + +![A road map for the course showing 24 lessons covering intro, farming, transport, processing, retail and cooking](../sketchnotes/Roadmap.jpg) + +> Sketchnote by [Nitya Narasimhan](https://github.com/nitya). Click the image for a larger version. + + +**č‘—č€…ã§ã‚ã‚‹ [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), [Mohammad Zulfikar](https://github.com/mohzulfikar), [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/))** + +Meet the team! + +[![Promo video](../images/IOT.gif)](https://youtu.be/-wippUJRi5k) + +**Gif by** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) + +> đŸŽĨ ä¸Šč¨˜ãŽį”ģ像をクãƒĒックするとビデã‚ĒがčĻ‹ã‚Œãžã™ã€‚ + +> **教å¸Ģぎ斚々へ** : [ã“ãĄã‚‰](../for-teachers.md)ã‚’å‚č€ƒãĢしãĻčŦ›įžŠã‚’するめることをお勧めしぞす。もしごč‡ĒčēĢで新しいãƒŦãƒƒã‚šãƒŗã‚’čŋŊ加されたい場合は [ã“ãĄã‚‰](../lesson-template/README.md)ãŽãƒ†ãƒŗãƒ—ãƒŦãƒŧãƒˆã‚’ã”åˆŠį”¨ãã ã•ã„ã€‚ + +> **å­Ļįŋ’č€…ãŽįš†æ§˜ã¸** : ã“ãĄã‚‰ãŽã‚ĢãƒĒキãƒĨナムをäŊŋうためãĢ、フりãƒŧクをäŊœæˆã—ごč‡ĒčēĢãŽį’°åĸƒã§ãƒŦãƒƒã‚šãƒŗã‚’é€˛ã‚ãĻください。ぞた、各ãƒŦãƒƒã‚šãƒŗãŽã‚ŊãƒĒãƒĨãƒŧã‚ˇãƒ§ãƒŗã¯/solutionフりãƒĢダからįĸēčĒå¯čƒŊã§ã™ãŒã€ã‚ŗãƒŧãƒ‰ã‚’ã‚ŗãƒ”ãƒŧīŧ†ãƒšãƒŧ゚トするぎではãĒくごč‡ĒčēĢで手を動かしãĻåŽŸčŖ…ã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ãžã™ã€‚å­Ļįŋ’をさらãĢé€˛ã‚ã‚‹ãŸã‚ãĢ友達と勉åŧˇäŧšã‚’開くぎもいいかもしれぞせん。さらãĢå­Ļįŋ’ã‚’é€˛ã‚ã‚‹ãĢは[Microsoft Learn](https://docs.microsoft.com/users/jimbobbennett/collections/ke2ehd351jopwr?WT.mc_id=academic-17441-jabenn)ã‚’å‚č€ƒãĢしãĻください。 + + +ã‚ŗãƒŧã‚šã§į”¨ã„ã‚‰ã‚Œã‚‹å‹•į”ģぎæĻ‚čρãĢついãĻはäģĨ下ぎ動į”ģをごčĻ§ãã ã•ã„ã€‚ + +[![Promo video](https://img.youtube.com/vi/bccEMm8gRuc/0.jpg)](https://youtube.com/watch?v=bccEMm8gRuc "Promo video") + +> đŸŽĨ ä¸Šč¨˜ãŽį”ģ像をクãƒĒックするとビデã‚ĒがčĻ‹ã‚Œãžã™ã€‚ + +## 勉åŧˇæ–šæŗ•ã€€ + +こぎプロジェクトではプロジェクトベãƒŧ゚ぎå­Ļįŋ’æ–šæŗ•ã‚’åŽŸįžã™ã‚‹ãŸã‚ãŽ2つぎãƒĢãƒŧãƒĢã‚’æŽĄį”¨ã—ãžã—ãŸã€‚1ã¤į›Žã¯å„ã‚ˇãƒĒãƒŧã‚ēぎįĩ‚わりãĢæ¤į‰ŠãŽæ°´ã‚„ã‚ŠæŠŸã‚„č‡Ē動čģŠčŋŊčˇĄã€éŖŸãšį‰Šã‚’čŋŊčˇĄã™ã‚‹ã‚šãƒžãƒŧãƒˆãƒ•ã‚Ąã‚¯ãƒˆãƒĒãƒŧãŽč¨­åŽšã€éŸŗåŖ°ã§æ“äŊœã§ãã‚‹ã‚­ãƒƒãƒãƒŗã‚ŋイマãƒŧãĒおを原čˇĩįš„ãĢå­Ļįŋ’č€…ãŒåŽŸčŖ…ã§ãã‚‹ã‚ˆã†ãĢ各ãƒŦãƒƒã‚šãƒŗã‚’ãƒ‡ã‚ļã‚¤ãƒŗã—ãžã—ãŸã€‚ã“ã‚ŒãĢより、IoTぎåŸēį¤Žã€įĩ„ãŋčžŧãŋå‘ã‘ãŽã‚ŗãƒŧドぎ書き斚、クナã‚Ļãƒ‰ã¨ãŽé€Ŗæēæ–šæŗ•ã€é éš”č¨ˆæ¸Ŧ値ぎ分析、エッジデバイ゚でAIã‚’åŽŸčĄŒã™ã‚‹æ–šæŗ•ãĒおを包æ‹Ŧįš„ãĢå­Ļãļことができ、より原čˇĩãĢčŋ‘いå­Ļįŋ’ã‚’čĄŒã†ã“ã¨ãŒã§ããžã™ã€‚ + +2ã¤į›ŽãĢ、それぞれぎãƒŦãƒƒã‚šãƒŗãŽå‰åžŒãĢį°Ąå˜ãĒå•éĄŒ(quiz)ã‚’č¨­ã‘ã‚‹ã“ã¨ã§å­Ļįŋ’ã—ãŸå†…åŽšãŒã‚ˆã‚ŠåŽšį€ã™ã‚‹ã‚ˆãĢしãĻいぞす。ぞた、こぎプロジェクトは全部で12é€ąé–“ã¨č†¨å¤§ãĒため、å­ĻãŗãŸã„åˆ†é‡ŽãŽãŋを選択しãĻå­Ļįŋ’できるようãĢč¨­č¨ˆã•ã‚ŒãĻいぞす。 + +ãã‚Œãžã‚ŒãŽãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆã§į”¨ã„ã‚‰ã‚Œã‚‹ãƒãƒŧドã‚Ļェã‚ĸはčĒ°ã‚‚ãŒåˆŠį”¨ã§ãã‚‹ã‚ˆã†ãĢä¸–į•Œä¸­ã§åēƒãåˆŠį”¨ã•れãĻã„ã‚‹ã‚‚ãŽã‚’æŽĄį”¨ã—ã€į‰šåŽšãŽåˆ†é‡ŽãĢãŠã‘ã‚‹čƒŒæ™¯ã‚„čĒ˛éĄŒã‚’čĒŦ明するようãĢしãĻã„ãžã™ã€‚ã‚ã‚‹į‰šåŽšãŽæĨ­į•Œã€åˆ†é‡ŽãĢãŠã‘ã‚‹čƒŒæ™¯ã‚’įŸĨることは開į™ēč€…ã¨ã—ãĻ成功する上でとãĻも重čĻã§ã™ã€‚čƒŒæ™¯ã‚’įŸĨることで、原際ぎæĨ­å‹™ã§å•ã‚ã‚Œã‚‹ã‚ˆã†ãĒčĒ˛éĄŒã‚„åŋ…čρãĒįŸĨč­˜ã€IoTã‚ŊãƒĒãƒĨãƒŧã‚ˇãƒ§ãƒŗãŽåŽŸčŖ…ãĢついãĻã‚¤ãƒĄãƒŧジしやすく、そぎã‚ŊãƒĒãƒĨãƒŧã‚ˇãƒ§ãƒŗãŽâ€ãĒぜ”をįŸĨることでよりãƒĻãƒŧã‚ļčĻ–į‚šãĢįĢ‹ãŖãŸã‚ŊãƒĒãƒĨãƒŧã‚ˇãƒ§ãƒŗã‚’æäž›ã§ããžã™ã€‚ + +## ハãƒŧドã‚Ļェã‚ĸ + +柔čģŸãĢč‡Ē分ãĢåˆãŖãŸé¸æŠžãŒã§ãã‚‹ã‚ˆã†ãĢ、IoTハãƒŧドã‚Ļェã‚ĸãĢé–ĸしãĻ2つぎ選択č‚ĸã‚’į”¨æ„ã—ãžã—ãŸã€‚ãã‚ŒãĢ加えãĻデバイ゚をčŗŧå…ĨしたくãĒい斚やäŊ•らかぎä狿ƒ…でハãƒŧドã‚Ļェã‚ĸがčŗŧå…ĨできãĒい斚ぎためãĢ"äģŽæƒŗãƒãƒŧドã‚Ļェã‚ĸ"を提䞛しãĻいぞす。 čŠŗį´°ãĢé–ĸしãĻは[hardware page](../hardware.md)ぎ'shopping list'からįĸēčĒã§ããžã™ã€‚ + +> 💁 意čĻ‹ãĒãŠã‚ã‚Œã°ãœã˛Issueã‚’į”¨ã„ãĻ我々ãĢäŧãˆãĻください。ContributionするためãĢは[Code of Conduct](../CODE_OF_CONDUCT.md), [Contributing](../CONTRIBUTING.md), [Translation](../TRANSLATIONS.md)ãĢį›Žã‚’é€šã—ãĻおいãĻください。 + +## それぞれぎãƒŦãƒƒã‚šãƒŗãŽå†…åŽš + +- ã‚šã‚ąãƒƒãƒãƒŽãƒŧト +- ビデã‚Ē(äģģæ„) +- ãƒŦãƒƒã‚šãƒŗå‰ãĢčĄŒã†å•éĄŒ (Quiz) +- ãƒŦãƒƒã‚šãƒŗ +- プロジェクトを厌成するためぎæŽĩ階ごとぎčĒŦ明īŧˆãƒ—ロジェクトベãƒŧ゚ぎãƒŦãƒƒã‚šãƒŗãŽå ´åˆīŧ‰ +- įŸĨ識įĸēčĒ +- ãƒãƒŖãƒŦãƒŗã‚¸å•éĄŒ +- čŋŊåŠ čŗ‡æ–™ +- čĒ˛éĄŒ +- ãƒŦãƒƒã‚šãƒŗãŽæœ€åžŒãĢčĄŒã†å•éĄŒīŧˆQuiz) + +> **å•éĄŒãĢé–ĸしãĻ**: 全ãĻãŽå•éĄŒã¯[こぎã‚ĸプãƒĒ](https://brave-island-0b7c7f50f.azurestaticapps.net)ã§åˆŠį”¨å¯čƒŊã§ã™ã€‚å•éĄŒã¯ãã‚Œãžã‚ŒãŽãƒŦãƒƒã‚šãƒŗå†…ã§ãƒĒãƒŗã‚¯ãŒč˛ŧられãĻいぞす。もしロãƒŧã‚ĢãƒĢでã‚ĸプãƒĒをčĩˇå‹•したい場合は`quiz-app`フりãƒĢダãƒŧã‚’å‚į…§ã—ãĻください。 + +## ãƒŦãƒƒã‚šãƒŗ + +| | プロジェクト名 | ã‚ŗãƒŗã‚ģプト | å­Ļįŋ’標 | é–ĸé€Ŗã™ã‚‹ãƒŦãƒƒã‚šãƒŗ Lesson | +|:--:|:------------------------------------------:|:------------------------------------------:|------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------:| +| 01 | [Getting started](../1-getting-started) | IoTぎåŸēæœŦ | IoTぎåŸēį¤ŽįŸĨč­˜ã€IoTã‚ŊãƒĒãƒĨãƒŧã‚ˇãƒ§ãƒŗã§į”¨ã„ã‚‰ã‚ŒãĻいるã‚ģãƒŗã‚ĩãƒŧやクナã‚Ļドã‚ĩãƒŧãƒ“ã‚šã¨ã„ãŖãŸåŸēæœŦįš„ãĒæŠ€čĄ“ãĢついãĻå­Ļįŋ’し、最初ぎIoTãƒ‡ãƒã‚¤ã‚šãŽč¨­åŽšã‚’čĄŒã„ãžã™ã€‚ | [Introduction to IoT](../1-getting-started/lessons/1-introduction-to-iot/README.md) | +| 02 | [Getting started](../1-getting-started) | IoTãŽä¸–į•Œã¸ | IoTã‚ˇã‚šãƒ†ãƒ ãŽæ§‹æˆã€ãƒžã‚¤ã‚¯ãƒ­ã‚ŗãƒŗãƒˆãƒ­ãƒŧãƒŠã€ã‚ˇãƒŗã‚°ãƒĢボãƒŧãƒ‰ã‚ŗãƒŗãƒ”ãƒĨãƒŧã‚ŋãĢついãĻå­Ļãŗãžã™ã€‚ | [A deeper dive into IoT](../1-getting-started/lessons/2-deeper-dive/README.md) | +| 03 | [Getting started](../1-getting-started) | ã‚ģãƒŗã‚ĩãƒŧとã‚ĸクチãƒĨエãƒŧã‚ŋã‚’į”¨ã„ãŸåŽŸčˇĩ | ã‚ģãƒŗã‚ĩãƒŧã‚’į”¨ã„ãĻデãƒŧã‚ŋを集め、ã‚ĸクチãƒĨエãƒŧã‚ŋã‚’į”¨ã„ãĻFeedbackを送äŋĄã™ã‚‹æ–šæŗ•ãĢついãĻå¸¸å¤œį¯ãŽåŽŸčŖ…ã‚’é€šã—ãĻå­Ļãŗãžã™ã€‚ | [Interact with the physical world with sensors and actuators](../1-getting-started/lessons/3-sensors-and-actuators/README.md) | +| 04 | [Getting started](../1-getting-started) | ãƒ‡ãƒã‚¤ã‚šãŽã‚¤ãƒŗã‚ŋãƒŧネットへぎæŽĨįļš | ナイトナイトとMQTTブロãƒŧã‚Ģãƒŧã‚’į”¨ã„ãĻIoTãŽã‚¤ãƒŗã‚ŋãƒŧネットへぎæŽĨį–šæŗ•ã¨ãƒĄãƒƒã‚ģãƒŧジぎ送受äŋĄæ–šæŗ•ãĢついãĻå­Ļãŗãžã™ã€‚ | [Connect your device to the Internet](../1-getting-started/lessons/4-connect-internet/README.md) | +| 05 | [Farm](../2-farm) | æ¤į‰ŠãŽæˆé•ˇä爿¸Ŧ | IoTデバイ゚で取垗した渊åēĻデãƒŧã‚ŋã‚’į”¨ã„ãĻæ¤į‰ŠãŽæˆé•ˇã‚’ä爿¸Ŧã™ã‚‹æ–šæŗ•ãĢついãĻå­Ļãŗãžã™ã€‚ | [Predict plant growth](../2-farm/lessons/1-predict-plant-growth/README.md) | +| 06 | [Farm](../2-farm) | åœŸãŽæ°´åˆ†č¨ˆæ¸Ŧ | åœŸãŽæ°´åˆ†ãŽč¨ˆæ¸Ŧæ–šæŗ•ã¨ã‚ģãƒŗã‚ĩãƒŧぎčĒŋæ•´æ–šæŗ•ã‚’å­Ļãŗãžã™ã€‚ | [Detect soil moisture](../2-farm/lessons/2-detect-soil-moisture/README.md) | +| 07 | [Farm](../2-farm) | č‡Ē動水やり抟 | MQTTと中įļ™æŠŸã‚’į”¨ã„ãĻ水やりをč‡Ēå‹•åŒ–ã™ã‚‹æ–šæŗ•ã‚’å­Ļãŗãžã™ã€‚ | [Automated plant watering](../2-farm/lessons/3-automated-plant-watering/README.md) | +| 08 | [Farm](../2-farm) | クナã‚Ļドへぎį§ģ行 | クナã‚Ļドとクナã‚ĻドぎIoTã‚ŊãƒĒãƒĨãƒŧã‚ˇãƒ§ãƒŗã€MQTTブロãƒŧã‚ĢãƒŧぎäģŖã‚ã‚ŠãĢクナã‚Ļãƒ‰ã‚’į”¨ã„ã‚‹æ–šæŗ•ãĢついãĻå­Ļãŗãžã™ã€‚ | [Migrate your plant to the cloud](../2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md) | +| 09 | [Farm](../2-farm) | 水やり抟ぎã‚ĸãƒ—ã‚ąãƒŧã‚ˇãƒ§ãƒŗã‚’ã‚¯ãƒŠã‚Ļドへį§ģ行 | IoTãƒĄãƒƒã‚ģãƒŧジãĢ寞åŋœã™ã‚‹ã‚ĸプãƒĒã‚ąãƒŧã‚ˇãƒ§ãƒŗãŽã‚¯ãƒŠã‚Ļãƒ‰ä¸Šã§ãŽåŽŸčŖ…æ–šæŗ•ãĢついãĻå­Ļãŗãžã™ã€‚ | [Migrate your application logic to the cloud](../2-farm/lessons/5-migrate-application-to-the-cloud/README.md) | +| 10 | [Farm](../2-farm) | 水やり抟ぎã‚ģキãƒĨãƒĒãƒ†ã‚Ŗ | IoTぎã‚ģキãƒĨãƒĒãƒ†ã‚Ŗã€ã‚­ãƒŧとč¨ŧæ˜Žæ›¸ã‚’į”¨ã„ãĻ水やり抟をã‚ģキãƒĨã‚ĸãĢäŋã¤æ–šæŗ•ã‚’å­Ļãŗãžã™ã€‚ | [Keep your plant secure](../2-farm/lessons/6-keep-your-plant-secure/README.md) | +| 11 | [Transport](../3-transport) | äŊįŊŽčŋŊ补 | IoTデバイ゚でGPSäŊįŊŽæƒ…å ąã‚’į”¨ã„ãŸčŋŊ补ãĢついãĻå­Ļãŗãžã™ã€‚ | [Location tracking](../3-transport/lessons/1-location-tracking/README.md) | +| 12 | [Transport](../3-transport) | äŊįŊŽãƒ‡ãƒŧã‚ŋぎäŋå­˜ | 分析や可čĻ–åŒ–ãŽãŸã‚ãĢIoTデãƒŧã‚ŋをäŋå­˜ã™ã‚‹æ–šæŗ•ã‚’å­Ļãŗãžã™ã€‚ | [Store location data](../3-transport/lessons/2-store-location-data/README.md) | +| 13 | [Transport](../3-transport) | äŊįŊŽãƒ‡ãƒŧã‚ŋぎ可čĻ–åŒ– | äŊįŊŽãƒ‡ãƒŧã‚ŋをMap上で可čĻ–åŒ–ã—ã€MapがおぎようãĢ3æŦĄå…ƒãƒ‡ãƒŧã‚ŋを2æŦĄå…ƒãƒ‡ãƒŧã‚ŋとしãĻčĄ¨įžã—ãĻいるぎかãĢついãĻå­Ļãŗãžã™ã€‚ | [Visualize location data](../3-transport/lessons/3-visualize-location-data/README.md) | +| 14 | [Transport](../3-transport) | ジã‚Ēãƒ•ã‚§ãƒŗã‚š | ジã‚Ēãƒ•ã‚§ãƒŗã‚šã¨ã‚¸ã‚Ēãƒ•ã‚§ãƒŗã‚šã‚’į”¨ã„ãĻã‚ĩプナイチェãƒŧãƒŗãĢあるčģŠä¸ĄãŒčŋ‘くãĢきたらã‚ĸナãƒŧãƒˆã‚’éŗ´ã‚‰ã™æ–šæŗ•ã‚’å­Ļãŗãžã™ã€‚ | [Geofences](../3-transport/lessons/4-geofences/README.md) | +| 15 | [Manufacturing](../4-manufacturing) | フãƒĢãƒŧツぎ品čŗĒã‚’č­˜åˆĨするAIぎå­Ļįŋ’ | フãƒĢãƒŧツぎ品čŗĒã‚’č­˜åˆĨã™ã‚‹č­˜åˆĨ器をクナã‚Ļド上でå­Ļįŋ’ã™ã‚‹æ–šæŗ•ã‚’å­Ļãŗãžã™ã€‚ | [Train a fruit quality detector](../4-manufacturing/lessons/1-train-fruit-detector/README.md) | +| 16 | [Manufacturing](../4-manufacturing) | IoTデバイ゚からフãƒĢãƒŧツぎ品čŗĒをįĸēčĒã™ã‚‹ | フãƒĢãƒŧツぎ品čŗĒã‚’č­˜åˆĨするAIをIoTãƒ‡ãƒã‚¤ã‚šã‹ã‚‰åˆŠį”¨ã™ã‚‹æ–šæŗ•ã‚’å­Ļãŗãžã™ã€‚ | [Check fruit quality from an IoT device](../4-manufacturing/lessons/2-check-fruit-from-device/README.md) | +| 17 | [Manufacturing](../4-manufacturing) | 識åˆĨ器をEdgeで動かす | Edgeãƒ‡ãƒã‚¤ã‚šä¸Šã§č­˜åˆĨå™¨ã‚’å‹•ã‹ã™æ–šæŗ•ã‚’å­Ļãŗãžã™ã€‚ | [Run your fruit detector on the edge](../4-manufacturing/lessons/3-run-fruit-detector-edge/README.md) | +| 18 | [Manufacturing](../4-manufacturing) | ã‚ģãƒŗã‚ĩãƒŧでフãƒĢãƒŧツぎ品čŗĒ識åˆĨをčĩˇå‹•する | ã‚ģãƒŗã‚ĩãƒŧã‚’į”¨ã„ãĻフãƒĢãƒŧツ品čŗĒ識åˆĨをčĩˇå‹•ã™ã‚‹æ–šæŗ•ã‚’å­Ļãŗãžã™ | [Trigger fruit quality detection from a sensor](../4-manufacturing/lessons/4-trigger-fruit-detector/README.md) | +| 19 | [Retail](../.-retail) | 在åēĢįŽĄį†AIぎå­Ļįŋ’ | į‰ŠäŊ“čĒč­˜ã‚’į”¨ã„ãĻåē—čˆ—ãŽåœ¨åēĢã‚’č­˜åˆĨã™ã‚‹æ–šæŗ•ã‚’å­Ļãŗãžã™ã€‚ | [Train a stock detector](../5-retail/lessons/1-train-stock-detector/README.md) | +| 20 | [Retail](../5-retail) | IoTデバイ゚から在åēĢをįĸēčĒã™ã‚‹ | į‰ŠäŊ“čĒč­˜ãƒĸデãƒĢã‚’į”¨ã„ãĻIoTデバイ゚から在åēĢをįĸēčĒã™ã‚‹čąŠå¯Œã‚’å­Ļãŗãžã™ã€‚ | [Check stock from an IoT device](../5-retail/lessons/2-check-stock-device/README.md) | +| 21 | [Consumer](../6-consumer) | IoTãƒ‡ãƒã‚¤ã‚šã‚’į”¨ã„ãŸéŸŗåŖ°čĒč­˜ | ゚マãƒŧトã‚ŋイマãƒŧã‚’åŽŸčŖ…ã™ã‚‹ãŸã‚ãĢIoTãƒ‡ãƒã‚¤ã‚šã‹ã‚‰éŸŗåŖ°čĒč­˜ã‚’čĄŒã†æ–šæŗ•ãĢついãĻå­Ļãŗãžã™ã€‚ | [Recognize speech with an IoT device](../6-consumer/lessons/1-speech-recognition/README.md) | +| 22 | [Consumer](../6-consumer) | į™ēčŠąå†…åŽšã‚’į†č§Ŗã™ã‚‹ | IoTデバイ゚で取垗したį™ēčŠąå†…åŽšã‚’į†č§Ŗã™ã‚‹æ–šæŗ•ã‚’å­Ļãŗãžã™ã€‚ | [Understand language](../6-consumer/lessons/2-language-understanding/README.md) | +| 23 | [Consumer](../6-consumer) | ã‚ŋイマãƒŧぎã‚ģットと通įŸĨ | IoTデバイ゚でã‚ŋイマãƒŧをã‚ģットし、ã‚ŋイマãƒŧぎ開始とįĩ‚わりãĢéŸŗåŖ°ã§é€šįŸĨã™ã‚‹æ–šæŗ•ã‚’å­Ļãŗãžã™ã€‚ | [Set a timer and provide spoken feedback](../6-consumer/lessons/3-spoken-feedback/README.md) | +| 24 | [Consumer](../6-consumer) | č¤‡æ•°č¨€čĒžãŽã‚ĩポãƒŧト | č¤‡æ•°ãŽč¨€čĒžã§éŸŗåŖ°čĒč­˜ã€é€šįŸĨã™ã‚‹æ–šæŗ•ã‚’å­Ļãŗãžã™ã€‚ | [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`を開いãĻください。 + +### PDF + +åŋ…čĻã§ã‚ã‚Œã°PDFをäŊœæˆã™ã‚‹ã“ともできぞす。 [npmã‚’ã‚¤ãƒŗã‚šãƒˆãƒŧãƒĢ](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)し、プロジェクトぎãƒĢãƒŧãƒˆãƒ‡ã‚ŖãƒŦクトãƒĒからäģĨä¸‹ãŽã‚ŗãƒžãƒŗãƒ‰ã‚’åŽŸčĄŒã—ãĻください。 + +```sh +npm i +npm run convert +``` + +### ゚ナイド + +[slides](../slides)フりãƒĢダãƒŧからãƒŦãƒƒã‚šãƒŗãŽã‚šãƒŠã‚¤ãƒ‰ãĢã‚ĸクã‚ģ゚できぞす。 + +## あãĒたぎ劊けがåŋ…čĻã§ã™īŧ + +įŋģ荺ãĢ協力しãĻいただける斚は [translation guidelines](../TRANSLATIONS.md) と [Translation issue](https://github.com/microsoft/IoT-For-Beginners/issues?q=is%3Aissue+is%3Aopen+label%3Atranslation)をįĸēčĒã—ãĻください。 もしぞだįŋģč¨ŗã•ã‚ŒãĻいãĒã„č¨€čĒžãŽįŋģč¨ŗã‚’ã—ãŸã„å ´åˆã¯ã€æ–°ã—ã„IssueをäŊœãŖãĻください。 + +## そぎãģかぎã‚ĢãƒĒキãƒĨナム + +į§ãŸãĄã¯IoTäģĨ外ãĢもäģĨ下ぎã‚ĢãƒĒキãƒĨナムも提䞛しãĻいぞす。 + +- [Web Dev for Beginners](https://aka.ms/webdev-beginners) +- [ML for Beginners](https://aka.ms/ml-beginners) +- [Data Science for Beginners](https://aka.ms/datascience-beginners) + +## į”ģåƒč‘—äŊœæ¨Š + +こぎã‚ĢãƒĒキãƒĨナムでäŊŋį”¨ã•ã‚ŒãĻいるį”ģ像全ãĻãŽč‘—äŊœæ¨Šå¸°åąžå…ˆãĢついãĻは、åŋ…čρãĢåŋœã˜ãĻ[Attributions](../attributions.md)ã‚’å‚į…§ã—ãĻください。 + +## æ—ĨæœŦčĒžįŋģ荺ãĢついãĻ + +æ—ĨæœŦčĒžãŽįŋģ荺ãĢé–ĸしãĻFeedbackãŒã‚ã‚Œã°ã“ãĄã‚‰ãŽ[Issue](https://github.com/microsoft/IoT-For-Beginners/issues/195)ã§ã‚ŗãƒĄãƒŗãƒˆã™ã‚‹ã€ã‚‚ã—ãã¯æ–°ãŸãĒIssueをäŊœæˆã—TranslatorãĢãƒĄãƒŗã‚ˇãƒ§ãƒŗã—ãĻください。 \ No newline at end of file From 36373eb48d1715c08cdc51335d5d044bece211f3 Mon Sep 17 00:00:00 2001 From: Jim Bennett Date: Wed, 1 Dec 2021 12:29:28 -0800 Subject: [PATCH 19/30] Adding note on BUllseye camera support --- 1-getting-started/lessons/1-introduction-to-iot/pi.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/1-getting-started/lessons/1-introduction-to-iot/pi.md b/1-getting-started/lessons/1-introduction-to-iot/pi.md index 47a4ae56..184d7758 100644 --- a/1-getting-started/lessons/1-introduction-to-iot/pi.md +++ b/1-getting-started/lessons/1-introduction-to-iot/pi.md @@ -31,7 +31,14 @@ If you want to work directly on your Pi, you can use the desktop version of Rasp Set up your Pi for development. -1. Follow the instructions in the [Raspberry Pi setup guide](https://projects.raspberrypi.org/en/projects/raspberry-pi-setting-up) to set up your Pi, connect it to a keyboard/mouse/monitor, connect it to your WiFi or ethernet network, and update the software. The OS you want to install is **Raspberry Pi OS (32 bit)**, it is marked as the recommended OS when using the Raspberry Pi Imager to image your SD card. +1. Follow the instructions in the [Raspberry Pi setup guide](https://projects.raspberrypi.org/en/projects/raspberry-pi-setting-up) to set up your Pi, connect it to a keyboard/mouse/monitor, connect it to your WiFi or ethernet network, and update the software. + + > IMPORTANT + > + > Currently the latest Raspberry Pi OS no longer suports accessing the camera via PiCamera or any other Python library. You can read about this change in this [Raspberry Pi blog post](https://www.raspberrypi.com/news/bullseye-camera-system/). + > You will need to install an older OS by downloading the Buster image from the here: + > + > [https://downloads.raspberrypi.org/raspios_armhf/images/raspios_armhf-2021-05-28/](https://downloads.raspberrypi.org/raspios_armhf/images/raspios_armhf-2021-05-28/) To program the Pi using the Grove sensors and actuators, you will need to install an editor to allow you to write the device code, and various libraries and tools that interact with the Grove hardware. From 0f56f8b7ed1422410b3ef0515761f21674a7b39e Mon Sep 17 00:00:00 2001 From: ehrqor39 <57606561+ehrqor39@users.noreply.github.com> Date: Fri, 3 Dec 2021 01:43:19 +0900 Subject: [PATCH 20/30] Translation of Getting Started Lesson 1 to Korean (#351) This is the Korean translation of 1-getting started. --- .../translations/README.ko.md | 230 ++++++++++++++++++ 1 file changed, 230 insertions(+) create mode 100644 1-getting-started/lessons/1-introduction-to-iot/translations/README.ko.md diff --git a/1-getting-started/lessons/1-introduction-to-iot/translations/README.ko.md b/1-getting-started/lessons/1-introduction-to-iot/translations/README.ko.md new file mode 100644 index 00000000..e4530b1b --- /dev/null +++ b/1-getting-started/lessons/1-introduction-to-iot/translations/README.ko.md @@ -0,0 +1,230 @@ +# IoT뗐 대한 ė†Œę°œ + +![ė´ ę°•ė˜ė˜ ę°œėš”](../../../../sketchnotes/lesson-1.jpg) + +> [Nitya Narasimhan](https://github.com/nitya) ė˜ 늤ėŧ€ėš˜ë…¸íЏ. 더 큰 ė´ë¯¸ė§€ëĨŧ ëŗ´ęŗ ė‹ļėœŧ늴 클ëĻ­í•˜ė„¸ėš”. + +ė´ ėˆ˜ė—…ė€ [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn)ė˜ [Hello IoT series](https://youtube.com/playlist?list=PLmsFUfdnGr3xRts0TIwyaHyQuHaNQcb6-) ėŧëļ€ëĄœ ė§„í–‰ë˜ė—ˆėŠĩ니다. ėˆ˜ė—…ė€ 2ę°œė˜ ëš„ë””ė˜¤ëĄœ ė§„í–‰ë˜ė—ˆëŠ”ë°, 1ė‹œę°„ė§œëĻŦ ėˆ˜ė—…ęŗŧ ę°•ė˜ė— 대한 ė§‘ė¤‘íƒęĩŦ 및 ė§ˆė˜ ė‘ë‹ĩ 1ė‹œę°„ėœŧ로 ęĩŦė„ąë˜ė–´ėžˆėŠĩ니다. + +[![Lesson 1: Introduction to IoT](https://img.youtube.com/vi/bVFfcYh6UBw/0.jpg)](https://youtu.be/bVFfcYh6UBw) + +[![Lesson 1: Introduction to IoT - Office hours](https://img.youtube.com/vi/YI772q5v3yI/0.jpg)](https://youtu.be/YI772q5v3yI) + +> đŸŽĨ ëš„ë””ė˜¤ëĨŧ ė‹œė˛­í•˜ęŗ  ė‹ļėœŧ늴 ė´ë¯¸ė§€ëĨŧ 클ëĻ­í•˜ė„¸ėš” + +## ę°•ė˜ ė „ 퀴ėψ + +[ę°•ė˜ ė „ 퀴ėψ](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/1) + +## ę°œėš” + +ė´ ę°•ė˜ė—ė„œëŠ” ė‚ŦëŦŧ ė¸í„°ë„ˇęŗŧ 관련된 ëLJ 氀맀 ė†Œę°œėšŠ 항ëĒŠė— 대해 네ëĒ…í•˜ęŗ  í•˜ë“œė›¨ė–´ëĨŧ ė„¤ė •í•˜ëŠ” ë°Šë˛•ė— 대해 네ëĒ…í•Šë‹ˆë‹¤. + +ė´ ë‹¨ė›ė—ė„œëŠ” ë‹¤ėŒė„ ë‹¤ëŖšë‹ˆë‹¤: + +* ['ė‚ŦëŦŧ ė¸í„°ë„ˇ'ė´ëž€?](#what-is-the-internet-of-things) +* [IoT ėžĨėš˜](#iot-devices) +* [ë””ë°”ė´ėŠ¤ 네렕](#set-up-your-device) +* [IoTė˜ ė‘ėšŠ 프로그램](#applications-of-iot) +* [내 ėŖŧëŗ€ė—ė„œ IoTė˜ ė˜ˆė‹œ](#examples-of-iot-devices-you-may-have-around-you) + +## 'ė‚ŦëŦŧ ė¸í„°ë„ˇ'ė´ëž€ ëŦ´ė—‡ė¸ę°€? + +'ė‚ŦëŦŧ ė¸í„°ë„ˇ'ė´ëŧ는 ėšŠė–´ëŠ” 1999년, [Kevin Ashton](https://wikipedia.org/wiki/Kevin_Ashton)ė´ ė„ŧė„œëĨŧ í†ĩ해 ė¸í„°ë„ˇė„ ëŦŧëĻŦ렁 넏溄뗐 ė—°ę˛°í•˜ëŠ” ę˛ƒė„ ė§€ėš­í•˜ę¸° ėœ„í•´ ë§Œë“¤ė—ˆë‹¤. ꡸ ė´í›„ëĄœ ė´ ėšŠė–´ëŠ” ė„ŧė„œëĄœëļ€í„° ë°ė´í„°ëĨŧ ėˆ˜ė§‘í•˜ęą°ë‚˜ ė•Ąė¸„ė—ė´í„°(ėŠ¤ėœ„ėš˜ëĨŧ ėŧœęą°ë‚˜ LEDëĨŧ ėŧœęą°ë‚˜ ėŧœëŠ” 것ęŗŧ ę°™ė€ ėŧė„ 하는 ėžĨėš˜)ëĨŧ í†ĩ해 ė‹¤ė œ ėƒí˜¸ėž‘ėšŠė„ 렜ęŗĩ함ėœŧëĄœė¨ ėŖŧëŗ€ ëŦŧëĻŦ 넏溄뙀 ėƒí˜¸ ėž‘ėšŠí•˜ëŠ” ëĒ¨ë“  ėžĨėš˜ëĨŧ ę¸°ėˆ í•˜ę¸° ėœ„í•´ ė‚ŦėšŠë˜ė–´ ė™”ėœŧ늰 ėŧë°˜ė ėœŧ로 다ëĨ¸ ėžĨėš˜ë‚˜ ė¸í„°ë„ˇė— ė—°ę˛°ë˜ė–´ ėžˆë‹¤. + +> **ė„ŧė„œ** 는 ė†ë„, ė˜¨ë„ 또는 ėœ„ėš˜ 뙀 ę°™ė€ ė •ëŗ´ëĨŧ ė„¸ėƒė—ė„œ ėˆ˜ė§‘í•Šë‹ˆë‹¤. +> +> **ė•Ąė¸„ė—ė´í„°** 는 렄揰 ė‹ í˜¸ëĨŧ ėŠ¤ėœ„ėš˜ 트ëĻŦęą°, ėĄ°ëĒ… ėŧœę¸°, ė†ŒëĻŦ 내기 또는 렄뛐 ė†Œėŧ“ ėŧœę¸°ė™€ ę°™ė€ ė‹¤ė œ ėƒí˜¸ ėž‘ėšŠėœŧ로 ëŗ€í™˜í•Šë‹ˆë‹¤. + +IoT는 ë‹¨ėˆœí•œ 기기가 ė•„ë‹ˆëŧ ė„ŧė„œ ë°ė´í„°ëĨŧ 래ëĻŦ하거나 IoT 揰揰뗐 ė—°ę˛°ëœ ė•Ąė¸„ė—ė´í„°ė— ėš”ė˛­ė„ ëŗ´ë‚ŧ 눘 ėžˆëŠ” 클ëŧėš°ë“œ 기반 ė„œëš„ėŠ¤ëĨŧ íŦ함합니다. 또한 edgeėžĨėš˜ëŧęŗ  ėĸ…ėĸ… ė–¸ę¸‰ë˜ëŠ”, ė¸í„°ë„ˇ ė—°ę˛°ė´ ė—†ęą°ë‚˜ í•„ėš”í•˜ė§€ ė•Šė€ ėžĨėš˜ë„ íŦ함됩니다. ė´ë“¤ė€ ė„ŧė„œ ë°ė´í„°ëĨŧ ėžė˛´ė ėœŧ로 래ëĻŦí•˜ęŗ  ëŒ€ė‘í•  눘 ėžˆëŠ” ėžĨėš˜ë“¤ëĄœ, 대개 클ëŧėš°ë“œė—ė„œ 훈련된 AI ëĒ¨ë¸ė„ ė‚ŦėšŠí•Šë‹ˆë‹¤. + +IoT는 ëš ëĨ´ę˛Œ ė„ąėžĨ하는 揰눠 ëļ„ė•ŧėž…ë‹ˆë‹¤. 2020년 ë§ęšŒė§€, IoT 기기가 300ė–ĩ대 ëŗ´ę¸‰ëŧ ė¸í„°ë„ˇė— ė—°ę˛°ëœ 것ėœŧ로 ėļ”ė‚°ëŠë‹ˆë‹¤. 미래ëĨŧ ë‚´ë‹¤ëŗ´ëŠ´ 2025ë…„ė—ëŠ”, IoT 기기가 ęą°ė˜ 80ė œíƒ€ë°”ė´íŠ¸ 또는 80ėĄ° ę¸°ę°€ë°”ė´íŠ¸ė˜ ë°ė´í„°ëĨŧ ėˆ˜ė§‘í•  것ėœŧ로 ė˜ˆėƒëŠë‹ˆë‹¤. ė •ë§ ë§Žė€ ë°ė´í„°ė–‘ė´ėŖ ! + +![2015ë…„ė— 50ė–ĩ ë¯¸ë§Œė—ė„œ 2025ë…„ė— 300ė–ĩ ė´ėƒėœŧ로 ėĻę°€í•˜ëŠ” ėļ”ė„¸ëĄœ ė‹œę°„ė— 따ëĨ¸ í™œė„ą IoT 기기ëĨŧ ëŗ´ė—ŦėŖŧ는 그래프](../../../../images/connected-iot-devices.svg) + +✅ ė•Ŋę°„ė˜ ėĄ°ė‚ŦëĨŧ í•´ëŗ´ė„¸ėš”: IoT ę¸°ę¸°ė—ė„œ ėƒė„ąëœ ë°ė´í„°ė˜ ė–ŧ마가 ė‹¤ė œëĄœ ė‚ŦėšŠë˜ęŗ  ėžˆęŗ , ė–ŧ마나 ë§Žė€ ë°ė´í„°ę°€ ë‚­ëš„ë˜ęŗ  ėžˆë‚˜ėš”? ė™œ ė´ë ‡ę˛Œ ë§Žė€ ë°ė´í„°ę°€ ëŦ´ė‹œë˜ëŠ” 것ėŧęšŒėš”? + +IoT ė„ąęŗĩė˜ ëš„ę˛°ė€ 바로 ė´ ë°ė´í„°ėž…ë‹ˆë‹¤. ė„ąęŗĩė ė¸ IoT ę°œë°œėžę°€ 되려늴 ėˆ˜ė§‘í•´ė•ŧ 할 ë°ė´í„°, ėˆ˜ė§‘ 방법, ė´ëĨŧ ė–´ë–ģ枌 ę˛°ė •ė„ í• ė§€ 및 í•„ėš”í•œ ę˛Ŋ뚰 ė´ëŸŦ한 ę˛°ė •ë“¤ė„ ëŦŧëĻŦ 넏溄뙀 ė—°ë™í•˜ę¸° ėœ„í•´ ė–´ë–ģ枌 ė´ėšŠí•´ė•ŧí•˜ëŠ”ė§€ ė´í•´í•´ė•ŧ 합니다. + +## IoT ėžĨėš˜ + +IoTė—ė„œ **T** 는 **Things** ė„ ė˜ë¯¸í•Šë‹ˆë‹¤. - ė„ŧė„œëĄœëļ€í„° ë°ė´í„°ëĨŧ ėˆ˜ė§‘í•˜ęą°ë‚˜ ė•Ąėļ”ė—ė´í„°ëĨŧ í†ĩ해 ė‹¤ė„¸ęŗ„ė˜ ėƒí˜¸ėž‘ėšŠė„ 렜ęŗĩ하며 ėŖŧëŗ€ ëŦŧëĻŦ렁 넏溄뙀 ėƒí˜¸ ėž‘ėšŠí•˜ëŠ” ėžĨėš˜ėž…ë‹ˆë‹¤. + +ė†Œëš„ėž í”ŧíŠ¸ë‹ˆėŠ¤ ėļ”렁揰 또는 ė‚°ė—…ėšŠ 揰溄 ė œė–´ę¸°ė™€ ę°™ė€ ėƒė‚° 또는 ėƒė—…ė  ė‚ŦėšŠė„ ėœ„í•œ ėžĨėš˜ëŠ” ėŧë°˜ė ėœŧ로 맞ėļ¤ ė œėž‘ëŠë‹ˆë‹¤. ė´ë“¤ė€ 맞ėļ¤í˜• 회로 기판, ė‹Ŧ맀떴 맞ėļ¤í˜• í”„ëĄœė„¸ė„œëĨŧ ė‚ŦėšŠí•˜ę¸°ë„ 하는데, ė´ ę¸°íŒė€ 놐ëĒŠė— ė°° ė •ë„ëĄœ ėž‘ęą°ë‚˜ 溠똍, ęŗ ę°•ë„ 또는 ęŗ ė§„ë™ ęŗĩėžĨ 환ę˛Ŋė—ė„œ ėž‘ë™í•˜ę¸°ė— ėļŠëļ„히 ę˛Ŧęŗ í•˜ęą°ë‚˜, 놐ëĒŠė— ėž˜ 맞도록 ė„¤ęŗ„ë˜ė–´ ėžˆėŠĩ니다. + +ę°œë°œėžëŠ” IoT뗐 대해 ë°°ėš°ęą°ë‚˜ 기기 í”„ëĄœí† íƒ€ėž…ė„ 만들 때 ę°œë°œėž 키트로 ė‹œėž‘í•´ė•ŧ 합니다. ęˇ¸ę˛ƒė€ ę°œë°œėžę°€ ė‚ŦėšŠí•  눘 ėžˆë„ëĄ ė„¤ęŗ„ëœ ë˛”ėšŠ IoT ėžĨėš˜ė´ëŠ°, ė„ŧė„œë‚˜ ė•Ąėļ”ė—ė´í„°ëĨŧ ė—°ę˛°í•  눘 ėžˆëŠ” 뙏ëļ€ í•€ ė„¸íŠ¸, ë””ë˛„ęš…ė„ ė§€ė›í•˜ëŠ” í•˜ë“œė›¨ė–´ 또는 대규ëǍ ė œėĄ° ė‹¤í–‰ ė‹œ ëļˆí•„ėš”í•œ ëš„ėšŠė„ ėļ”ę°€í•˜ëŠ” ėļ”ę°€ ëĻŦė†ŒėŠ¤ė™€ ę°™ė€ 뚴똁 ėžĨėš˜ė—ëŠ” ė—†ëŠ” 기ëŠĨė„ 갖ėļ”ęŗ  ėžˆėŠĩ니다. + +ė´ëŸŦ한 ę°œë°œėž 키트는 ėŧë°˜ė ėœŧ로 ë§ˆė´íŦ로ėģ¨íŠ¸ëĄ¤ëŸŦ뙀 ė‹ąę¸€ëŗ´ë“œ ėģ´í“¨í„°ė˜ 두 氀맀 범ėŖŧ로 나뉩니다. ė´ę˛ƒë“¤ė€ ė—Ŧę¸°ė„œ ė†Œę°œë  ę˛ƒė´ęŗ , ë‹¤ėŒ ėˆ˜ė—…ė—ė„œ 더 ėžė„¸ížˆ ë‹¤ëŖ¨ë„ëĄ 하겠ėŠĩ니다. + +> 💁 ë‹šė‹ ė˜ 핸드폰 또한 ė„ŧė„œė™€ ė•Ąėļ”ė—ė´í„°ę°€ 내ėžĨ된 ë˛”ėšŠ IoT 기기로도 ëŗŧ 눘 ėžˆėœŧ늰, ė•ąë§ˆë‹¤ ė„ŧė„œė™€ ė•Ąėļ”ė—ė´í„°ëĨŧ ė‚ŦėšŠí•˜ëŠ” ë°Šė‹ė´ 다ëĨ´ęŗ  클ëŧėš°ë“œ ė„œëš„ėŠ¤ë„ 다ëĻ…ë‹ˆë‹¤. ë‹šė‹ ė€ 또한 휴대폰 ė•ąė„ IoT 기기로 ė‚ŦėšŠí•˜ëŠ” IoT 튜토ëĻŦė–ŧ도 ė°žė•„ëŗŧ 눘 ėžˆėŠĩ니다. + +### ë§ˆė´íŦ로ėģ¨íŠ¸ëĄ¤ëŸŦ + +ë§ˆė´íŦ로ėģ¨íŠ¸ëĄ¤ëŸŦ(뤄ė—Ŧė„œ MCUëŧęŗ ë„ 함)는 ë‹¤ėŒęŗŧ ę°™ė´ ęĩŦė„ąëœ ė†Œí˜• ėģ´í“¨í„°ėž…니다.: + +🧠 하나 ė´ėƒė˜ CPU(뤑땙 래ëĻŦ ėžĨėš˜) - ë‹šė‹œė˜ í”„ëĄœęˇ¸ëž¨ė„ ė‹¤í–‰í•˜ëŠ” ë§ˆė´íŦ로ėģ¨íŠ¸ëĄ¤ëŸŦė˜ '두뇌' + +💾 메ëǍëĻŦ(RAM 및 프로그램 메ëǍëĻŦ) - ë‹šė‹ ė˜ 프로그램, ë°ė´í„° 및 ëŗ€ėˆ˜ę°€ ė €ėžĨ되는 ėœ„ėš˜ + +🔌 프로그래밍 가ëŠĨ한 ėž…ėļœë Ĩ(I/O) 뗰枰 - ė„ŧė„œ 및 ė•Ąėļ”ė—ė´í„°ė™€ ę°™ė€ 뙏ëļ€ ėŖŧëŗ€ ėžĨėš˜(뗰枰 ėžĨėš˜)뙀 í†ĩė‹  + +ë§ˆė´íŦ로ėģ¨íŠ¸ëĄ¤ëŸŦ는 ėŧë°˜ė ėœŧ로 ė €ë ´í•œ ėģ´í“¨íŒ… ėžĨėš˜ė´ëŠ°, ė‚ŦėšŠėž 맀렕 í•˜ë“œė›¨ė–´ė— ė‚ŦėšŠë˜ëŠ” ėžĨėš˜ė˜ 평균 ę°€ę˛Šė€ ė•Ŋ 0.50ë‹ŦëŸŦęšŒė§€ ë–¨ė–´ė§€ëŠ°, ė–´ë–¤ ėžĨėš˜ëŠ” 0.03ë‹ŦëŸŦ만íŧ ė €ë ´í•Šë‹ˆë‹¤. ę°œë°œėž 키트는 미화 4ë‹ŦëŸŦëļ€í„° ė‹œėž‘í•  눘 ėžˆėœŧ늰, 기ëŠĨė„ ėļ”ę°€í• ėˆ˜ëĄ ëš„ėšŠë„ ėĻę°€í•Šë‹ˆë‹¤. [Wio Terminal](https://www.seeedstudio.com/Wio-Terminal-p-4509.html) ė„ŧė„œ, ė•Ąė¸„ė—ė´í„°, WiFi, 늤íŦëĻ°ė„ 갖ėļ˜ [Seeed studios](https://www.seeedstudio.com) ė˜ ë§ˆė´íŦ로ėģ¨íŠ¸ëĄ¤ëŸŦ ę°œë°œėž 키트로 미화 ė•Ŋ 30ë‹ŦëŸŦė˜ 가격ėœŧ로 í˜•ė„ąë˜ė–´ ėžˆėŠĩ니다. + +![A Wio Terminal](../../../../images/wio-terminal.png) + +> 💁 ė¸í„°ë„ˇė—ė„œ ë§ˆė´íŦ로ėģ¨íŠ¸ëĄ¤ëŸŦëĨŧ ę˛€ėƒ‰í•  때 **MCU**ëŧ는 ėšŠė–´ëĨŧ ę˛€ėƒ‰í•˜ëŠ´ ë§ˆė´íŦ로ėģ¨íŠ¸ëĄ¤ëŸŦ가 ė•„ë‹Œ Marvel Cinematic Universe뗐 대한 ë§Žė€ 결ęŗŧëĨŧ ė–ģė„ 눘 ėžˆėœŧë¯€ëĄœ ėŖŧė˜í•´ė•ŧ 합니다. + +ë§ˆė´íŦ로ėģ¨íŠ¸ëĄ¤ëŸŦ는 PC나 ë§Ĩęŗŧ ę°™ė€ ë˛”ėšŠ ėģ´í“¨í„°ę°€ ė•„ë‹ˆëŧ ė œí•œëœ ėˆ˜ė˜ ë§¤ėš° íŠšė •í•œ ėž‘ė—…ė„ ėˆ˜í–‰í•˜ë„ëĄ í”„ëĄœęˇ¸ëž˜ë°ë˜ė–´ ėžˆėŠĩ니다. ë§¤ėš° ęĩŦė˛´ė ė¸ ė‹œë‚˜ëĻŦ똤ëĨŧ ė œė™¸í•˜ęŗ ëŠ” ëĒ¨ë‹ˆí„°, í‚¤ëŗ´ë“œ 및 ë§ˆėš°ėŠ¤ëĨŧ ė—°ę˛°í•˜ė—Ŧ ë˛”ėšŠ ėž‘ė—…ė— ė‚ŦėšŠí•  눘 ė—†ėŠĩ니다. + +ë§ˆė´íŦ로ėģ¨íŠ¸ëĄ¤ëŸŦ ę°œë°œėž 키트는 ëŗ´í†ĩ ėļ”ę°€ė ė¸ ė„ŧė„œė™€ ėž‘ë™ę¸°ę°€ 탑ėžŦë˜ė–´ ėžˆėŠĩ니다. 대ëļ€ëļ„ė˜ ëŗ´ë“œė—ëŠ” 프로그래밍할 눘 ėžˆëŠ” 하나 ė´ėƒė˜ LED뙀 ë‹¤ė–‘í•œ ė œėĄ°ė—…ė˛´ė˜ 뗐ėŊ”ė‹œėŠ¤í…œė„ ė‚ŦėšŠí•˜ė—Ŧ 더 ë§Žė€ ė„ŧė„œ 또는 ė•Ąėļ”ė—ė´í„°ëĨŧ ėļ”ę°€í•˜ëŠ” í‘œė¤€ 플ëŸŦ掏뙀 ę°™ė€ 다ëĨ¸ ėžĨėš˜ 또는 내ėžĨ ė„ŧė„œ(ėŧë°˜ė ėœŧ로 ė˜¨ë„ ė„ŧė„œ 등 가ėžĨ ė¸ę¸° ėžˆëŠ” ė„ŧė„œ)가 ėžˆėŠĩ니다. ėŧëļ€ ë§ˆė´íŦ로ėģ¨íŠ¸ëĄ¤ëŸŦ는 Bluetooth 또는 WiFi뙀 ę°™ė€ ëŦ´ė„  ė—°ę˛°ė´ 내ėžĨë˜ė–´ ėžˆęą°ë‚˜ ė´ ė—°ę˛°ė„ ėļ”ę°€í•˜ę¸° ėœ„í•´ ëŗ´ë“œė— ėļ”ę°€ ë§ˆė´íŦ로ėģ¨íŠ¸ëĄ¤ëŸŦ가 ėžˆėŠĩ니다. + +> 💁 ë§ˆė´íŦ로ėģ¨íŠ¸ëĄ¤ëŸŦ는 ëŗ´í†ĩ C/C++로 프로그래밍 됩니다. + +### ė‹ąę¸€ëŗ´ë“œ ėģ´í“¨í„° + +단ėŧ ëŗ´ë“œ ėģ´í“¨í„°(single-board computer)는 í•˜ë‚˜ė˜ ėž‘ė€ ëŗ´ë“œė— íŦ함된 ė™„ė „í•œ ėģ´í“¨í„°ė˜ ëĒ¨ë“  ėš”ė†ŒëĨŧ íŦ함하는 ė†Œí˜• ėģ´í“¨íŒ… ėžĨėš˜ėž…ë‹ˆë‹¤. ë°ėŠ¤íŦ탑 또는 노트ëļ PC 또는 Mac뗐 ę°€ęšŒėš´ ė‚Ŧė–‘ė„ 갖ėļ”ęŗ  ėžˆėœŧ늰 렄랴 뚴똁 랴렜ëĨŧ ė‹¤í–‰í•˜ė§€ë§Œ íŦ기가 ėž‘ęŗ  ė „ë Ĩ ė‚ŦėšŠëŸ‰ė´ 렁ėœŧ늰 ę°€ę˛Šė´ ėƒë‹šížˆ ė €ë ´í•œ ėžĨėš˜ėž…ë‹ˆë‹¤. + +![A Raspberry Pi 4](../../../../images/raspberry-pi-4.jpg) + +ëŧėĻˆë˛ ëĻŦ íŒŒė´ëŠ” 가ėžĨ ė¸ę¸° ėžˆëŠ” ė‹ąę¸€ëŗ´ë“œ ėģ´í“¨í„° 뤑 í•˜ë‚˜ėž…ë‹ˆë‹¤. + +ë§ˆė´íŦ로ėģ¨íŠ¸ëĄ¤ëŸŦ뙀 마ė°Ŧę°€ė§€ëĄœ ė‹ąę¸€ëŗ´ë“œ ėģ´í“¨í„°ė—ëŠ” CPU, 메ëǍëĻŦ, ėž…ėļœë Ĩ í•€ė´ ėžˆė§€ë§Œ ëĒ¨ë‹ˆí„°, ė˜¤ë””ė˜¤ ėļœë Ĩ, USB íŦ트ëĨŧ ė—°ę˛°í•˜ė—Ŧ í‚¤ëŗ´ë“œ ë§ˆėš°ėŠ¤ė™€ ė›šėē ė´ë‚˜ 뙏ėžĨ ėŠ¤í† ëĻŦ맀뙀 ę°™ė€ í‘œė¤€ USB ėžĨėš˜ëĨŧ ė—°ę˛°í•  눘 ėžˆëŠ” 그래í”Ŋ ėšŠęŗŧ ę°™ė€ ėļ”ę°€ 기ëŠĨė´ ėžˆėŠĩ니다. í”„ëĄœęˇ¸ëž¨ė€ 메ëǍëĻŦ ėšŠ ëŒ€ė‹  뚴똁 ė˛´ė œė™€ 함ęģ˜ SD ėš´ë“œë‚˜ 하드 드ëŧė´ë¸Œė— ė €ėžĨ됩니다. + +> 🎓 ė‹ąę¸€ëŗ´ë“œ ėģ´í“¨í„°ëŠ” ė„ŧė„œ 및 ė•Ąėļ”ė—ė´í„°ė™€ ėƒí˜¸ ėž‘ėšŠí•  GPIO(ėŧë°˜ėšŠ ėž…ë Ĩ/ėļœë Ĩ) í•€ė„ ėļ”ę°€í•˜ė—Ŧ ėŊęŗ  ėžˆëŠ” PC 또는 Macė˜ 더 ėž‘ęŗ  ė €ë ´í•œ ë˛„ė „ė´ëŧęŗ  ėƒę°í•  눘 ėžˆėŠĩ니다. + +ė‹ąę¸€ëŗ´ë“œ ėģ´í“¨í„°ëŠ” ëĒ¨ë“  기ëŠĨė„ 갖ėļ˜ ėģ´í“¨í„°ė´ë¯€ëĄœ ëĒ¨ë“  ė–¸ė–´ëĄœ 프로그래밍할 눘 ėžˆėŠĩ니다. IoT ėžĨėš˜ëŠ” ėŧë°˜ė ėœŧ로 íŒŒė´ėŦėœŧ로 프로그래밍됩니다. + +### ë‚¨ė€ ėˆ˜ė—… ë™ė•ˆė˜ í•˜ë“œė›¨ė–´ ė„ íƒ + +ė´í›„ė˜ ëĒ¨ë“  ęŗŧė •ė—ëŠ” IoT ë””ë°”ė´ėŠ¤ëĨŧ ė‚ŦėšŠí•˜ė—Ŧ ëŦŧëĻŦ렁 넏溄뙀 ėƒí˜¸ ėž‘ėšŠí•˜ęŗ  클ëŧėš°ë“œė™€ í†ĩė‹ í•˜ëŠ” ęŗŧė œę°€ íŦ함됩니다. 각 ë ˆėŠ¨ė€ Arduino(Seeed Studios Wio Terminal ė‚ŦėšŠ) 또는 단ėŧ ëŗ´ë“œ ėģ´í“¨í„°, ëŦŧëĻŦ렁 ėžĨėš˜(Lasberry Pi 4), PC 또는 Macė—ė„œ ė‹¤í–‰ë˜ëŠ” ę°€ėƒ 단ėŧ ëŗ´ë“œ ėģ´í“¨í„° 등 3氀맀 ėžĨėš˜ëĨŧ ė§€ė›í•Šë‹ˆë‹¤. + +ëĒ¨ë“  ęŗŧ렜ëĨŧ ė™„ëŖŒí•˜ëŠ” 데 í•„ėš”í•œ í•˜ë“œė›¨ė–´ė— 대한 ėžė„¸í•œ ë‚´ėšŠė€ [í•˜ë“œė›¨ė–´ ę°€ė´ë“œ](../../../hardware.md)ė—ė„œ í™•ė¸í•  눘 ėžˆėŠĩ니다. + +> 💁 ęŗŧ렜ëĨŧ ė™„ëŖŒí•˜ę¸° ėœ„í•´ IoT í•˜ë“œė›¨ė–´ëĨŧ ęĩŦėž…í•  í•„ėš”ę°€ ė—†ėœŧ늰 ę°€ėƒ ė‹ąę¸€ëŗ´ë“œ ėģ´í“¨í„°ëĄœ ëĒ¨ë“  ėž‘ė—…ė„ ėˆ˜í–‰í•  눘 ėžˆėŠĩ니다. + +ė–´ë–¤ í•˜ë“œė›¨ė–´ëĨŧ ė„ íƒí• ė§€ëŠ” ė—ŦëŸŦëļ„ė˜ 학ęĩė™€ ę°€ė •ė—ė„œ ė‚ŦėšŠí•  눘 ėžˆëŠ” 것ęŗŧ ė—ŦëŸŦëļ„ė´ ė•Œęŗ  ėžˆęą°ë‚˜ ë°°ėš¸ ęŗ„íšė¸ 프로그래밍 떏떴뗐 ë‹Ŧë ¤ ėžˆėŠĩ니다. 두 í•˜ë“œė›¨ė–´ ëŗ€í˜• ëĒ¨ë‘ 동ėŧ한 ė„ŧė„œ ėƒíƒœęŗ„ëĨŧ ė‚ŦėšŠí•˜ę¸° 때ëŦ¸ė— 한 ę˛ŊëĄœė—ė„œ ė‹œėž‘í•˜ëŠ´ 대ëļ€ëļ„ė˜ 키트ëĨŧ ęĩė˛´í•  í•„ėš” ė—†ė´ 다ëĨ¸ ę˛Ŋ로로 ëŗ€ę˛Ŋ할 눘 ėžˆėŠĩ니다. ę°€ėƒ ė‹ąę¸€ëŗ´ë“œ ėģ´í“¨í„°ëŠ” ëŧėĻˆë˛ ëĻŦ íŒŒė´ė—ė„œ 학ėŠĩ하는 것ęŗŧ 같ėœŧ늰, 결ęĩ­ ėžĨėš˜ė™€ ė„ŧė„œëĨŧ ė–ģ枌 되늴 대ëļ€ëļ„ė˜ ėŊ”드ëĨŧ íŒŒė´ëĄœ ė „ė†Ąí•  눘 ėžˆėŠĩ니다. + +### ė•„ë‘ė´ë…¸ ę°œë°œėž 키트 + +ë§ˆė´íŦ로ėģ¨íŠ¸ëĄ¤ëŸŦ ę°œë°œė— 관ė‹Ŧė´ ėžˆë‹¤ëŠ´ ė•„ë‘ė´ë…¸ 기기ëĨŧ ė´ėšŠí•´ ęŗŧ렜ëĨŧ ė™„ëŖŒí•  눘 ėžˆėŠĩ니다. ė´ ėˆ˜ė—…ė€ ė•„ë‘ė´ë…¸ í”„ë ˆėž„ė›ŒíŦ, ė‚ŦėšŠ ė¤‘ė¸ ė„ŧė„œė™€ ė•Ąėļ”ė—ė´í„°, 클ëŧėš°ë“œė™€ ėƒí˜¸ ėž‘ėšŠí•˜ëŠ” ëŧė´ë¸ŒëŸŦëĻŦ뙀 관련된 ėŊ”드만 가ëĨ´ėš˜ę¸° 때ëŦ¸ė— C/C++ í”„ëĄœęˇ¸ëž˜ë°ė— 대한 ę¸°ëŗ¸ė ė¸ ė´í•´ę°€ í•„ėš”í•Šë‹ˆë‹¤. + +ęŗŧė œëŠ” [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-17441-jabenn) 뙀 [PlatformIO extension for microcontroller development](https://platformio.org)ëĨŧ ė´ėšŠí•  ę˛ƒėž…ë‹ˆë‹¤. 또한 ė´ 도ęĩŦ뗐 ėĩėˆ™í•œ ę˛Ŋ뚰, ė§€ėš¨ė´ 렜ęŗĩë˜ė§€ ė•ŠëŠ” Arduino IDEëĨŧ ė‚ŦėšŠí•  ėˆ˜ë„ ėžˆėŠĩ니다. + +### Single-board ėģ´í“¨í„° ę°œë°œėž 키트 + +ė‹ąę¸€ëŗ´ë“œ ėģ´í“¨í„°ëĨŧ ė‚ŦėšŠí•˜ė—Ŧ IoT ę°œë°œė„ ë°°ėš°ëŠ” 데 관ė‹Ŧė´ ėžˆë‹¤ëŠ´ PC 또는 Macė—ė„œ ė‹¤í–‰ ė¤‘ė¸ ę°€ėƒ ėžĨėš˜ė¸ ëŧėĻˆë˛ ëĻŦ íŒŒė´ëĨŧ ė‚ŦėšŠí•˜ė—Ŧ ęŗŧ렜ëĨŧ ė™„ëŖŒí•  눘 ėžˆėŠĩ니다. + +ė‚ŦėšŠ ė¤‘ė¸ ė„ŧė„œė™€ ė•Ąėļ”ė—ė´í„°, 클ëŧėš°ë“œė™€ ėƒí˜¸ ėž‘ėšŠí•˜ëŠ” ëŧė´ë¸ŒëŸŦëĻŦ뙀 관련된 ėŊ”드만 학ėŠĩí•˜ë¯€ëĄœ íŒŒė´ėŦ í”„ëĄœęˇ¸ëž˜ë°ė— 대한 ę¸°ëŗ¸ė ė¸ ė´í•´ę°€ í•„ėš”í•Šë‹ˆë‹¤. + +> 💁 만ė•Ŋ ë‹šė‹ ė´ Pythonėœŧ로 ėŊ”드ëĨŧ ė•Œę¸° ė›í•œë‹¤ëŠ´ : ë‹¤ėŒė˜ ë‘ę°œė˜ ëš„ë””ė˜¤ ė‹œëĻŦėψëĨŧ í™•ė¸í•´ëŗ´ė„¸ėš” : +> +> * [ėž…ëŦ¸ėžëĨŧ ėœ„í•œ íŒŒė´ėŦ](https://channel9.msdn.com/Series/Intro-to-Python-Development?WT.mc_id=academic-17441-jabenn) +> * [ėž…ëŦ¸ėžëĨŧ ėœ„í•œ 더 ë§Žė€ íŒŒė´ėŦ](https://channel9.msdn.com/Series/More-Python-for-Beginners?WT.mc_id=academic-7372-jabenn) + +ęŗŧė œė—ė„œëŠ” [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-17441-jabenn)ė„ ė´ėšŠí•  ę˛ƒėž…ë‹ˆë‹¤.. + +Rasberry PiëĨŧ ė‚ŦėšŠí•˜ëŠ” ę˛Ŋ뚰 Rasberry Pi OSė˜ 렄랴 ë°ėŠ¤íŦ톱 ë˛„ė „ė„ ė‚ŦėšŠí•˜ė—Ŧ PiëĨŧ ė‹¤í–‰í•˜ęŗ  [Rasberry Pi OS ë˛„ė „ė˜ VS Code](https://code.visualstudio.com/docs/setup/raspberry-pi?WT.mc_id=academic-17441-jabenn)ëĨŧ ė‚ŦėšŠí•˜ė—Ŧ Piė—ė„œ 링렑 ëĒ¨ë“  ėŊ”ë”Šė„ ėˆ˜í–‰í•˜ęą°ë‚˜ [ė›ę˛Š SSH 확ėžĨ](https://code.visualstudio.com/docs/remote/ssh?WT.mc_id=academic-17441-jabenn)ė„ ė‚ŦėšŠí•˜ė—Ŧ PC 또는 Macė˜ 헤드ëĻŦ늤 ėžĨėš˜ 및 ėŊ”ë“œëĄœ PiëĨŧ ė‹¤í–‰í•  눘 ėžˆėŠĩ니다. 링렑 ėŊ”드ëĨŧ ėŊ”딊하는 枃래ëŸŧ ėŊ”드ëĨŧ íŽ¸ė§‘, 디버그 및 ė‹¤í–‰í•Šë‹ˆë‹¤. + +ę°€ėƒ ë””ë°”ė´ėŠ¤ ė˜ĩė…˜ė„ ė‚ŦėšŠí•˜ëŠ” ę˛Ŋ뚰 ėģ´í“¨í„°ė—ė„œ 링렑 ėŊ”딊핊니다. ė„ŧė„œė™€ ė•Ąėļ”ė—ė´í„°ė— ė•Ąė„¸ėŠ¤í•˜ëŠ” ëŒ€ė‹  도ęĩŦëĨŧ ė‚ŦėšŠí•˜ė—Ŧ ė •ė˜í•  눘 ėžˆëŠ” ė„ŧė„œ ę°’ė„ 렜ęŗĩí•˜ęŗ  ė•Ąėļ”ė—ė´í„°ė˜ 결ęŗŧëĨŧ í™”ëŠ´ė— í‘œė‹œí•Šë‹ˆë‹¤. + +## ėžĨėš˜ 네렕 + +IoT ėžĨėš˜ í”„ëĄœęˇ¸ëž˜ë°ė„ ė‹œėž‘í•˜ë ¤ëŠ´ ë¨ŧė € ė†ŒëŸ‰ė˜ ė„¤ė •ė„ ėˆ˜í–‰í•´ė•ŧ 합니다. ė‚ŦėšŠí•  揰揰뗐 따ëŧ ė•„ëž˜ė˜ 관련 ė§€ėš¨ė„ 따ëŧëŗ´ė„¸ėš”. + +> 💁 땄링 ėžĨėš˜ę°€ ė—†ëŠ” ę˛Ŋ뚰 [í•˜ë“œė›¨ė–´ ę°€ė´ë“œ](../../../../hardware.md)ëĨŧ ė°¸ėĄ°í•˜ė—Ŧ ė‚ŦėšŠí•  ėžĨėš˜ė™€ ęĩŦėž…í•´ė•ŧ 할 ėļ”ę°€ í•˜ë“œė›¨ė–´ëĨŧ ę˛°ė •í•´ëŗ´ė„¸ėš”. ëĒ¨ë“  í”„ëĄœė íŠ¸ëĨŧ ę°€ėƒ í•˜ë“œė›¨ė–´ė—ė„œ ė‹¤í–‰í•  눘 ėžˆėœŧë¯€ëĄœ í•˜ë“œė›¨ė–´ëĨŧ ęĩŦėž…í•  í•„ėš”ëŠ” ė—†ėŠĩ니다. + +ė´ëŸŦ한 ė§€ėš¨ė—ëŠ” ė‚ŦėšŠí•  í•˜ë“œė›¨ė–´ 또는 도ęĩŦëĨŧ 만든 ė‚ŦëžŒė´ 렜ęŗĩ하는 타ė‚Ŧ ė›š ė‚Ŧė´íŠ¸ė— 대한 링íŦ가 íŦ함됩니다. ė´ë ‡ę˛Œ 하면 ë‹¤ė–‘í•œ 도ęĩŦ 및 í•˜ë“œė›¨ė–´ė— 대한 ėĩœė‹  ė§€ėš¨ė„ í•­ėƒ ė‚ŦėšŠí•  눘 ėžˆėŠĩ니다. + +관련 ė•ˆë‚´ė— 따ëŧ ėžĨėš˜ëĨŧ ė„¤ė •í•˜ęŗ  'Hello World' í”„ëĄœė íŠ¸ëĨŧ ė™„ëŖŒí•´ëŗ´ė„¸ėš”. ė´ę˛ƒė€ ė´ ė‹œėž‘ ëļ€ëļ„ė˜ 4氀맀 ë ˆėŠ¨ė— 대한 IoT ė•ŧę°„ėĄ°ëĒ…ė„ 만드는 ė˛Ģ ë˛ˆė§¸ ë‹¨ęŗ„ę°€ 될 ę˛ƒėž…ë‹ˆë‹¤. + +* [Arduino - Wio Terminal](wio-terminal.md) +* [Single-board computer - Raspberry Pi](pi.md) +* [Single-board computer - Virtual device](virtual-device.md) + +✅ ë‹šė‹ ė€ ė•„ë‘ė´ë…¸ė™€ ė‹ąę¸€ëŗ´ë“œ ėģ´í“¨í„° ëĒ¨ë‘ė— VS codeëĨŧ ė‚ŦėšŠí•˜ę˛Œ 될 ę˛ƒėž…ë‹ˆë‹¤. ė‚ŦėšŠí•´ëŗ¸ė ė´ ė—†ë‹¤ëŠ´ [VS Code site](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn)ëĨŧ ėžė„¸ížˆ ėŊė–´ëŗ´ė„¸ėš”. + +## IoTė˜ ė‘ėšŠ + +IoT는 ëLJ 氀맀 ę´‘ë˛”ėœ„í•œ ęˇ¸ëŖšė— ęą¸ėŗ ę´‘ë˛”ėœ„í•œ ė‚ŦėšŠ ė‚Ŧ례ëĨŧ ë‹¤ëŖ¨ęŗ  ėžˆėŠĩ니다 : + +* ė†Œëš„ėž IoT +* ėƒėšŠ IoT +* ė‚°ė—… IoT +* ė‚Ŧ회 기반 ė‹œė„¤ IoT + +✅ ė•Ŋę°„ė˜ ėĄ°ė‚ŦëĨŧ í•´ëŗ´ė„¸ėš”: ė•„ëž˜ė— 네ëĒ…ëœ 각 ė˜ė—­ė— 대해, ëŗ¸ëŦ¸ė— ë‚˜ė™€ ėžˆė§€ ė•Šė€ ęĩŦė˛´ė ė¸ 똈ëĨŧ 하나 ė°žė•„ëŗ´ė„¸ėš”. + +### ė†Œëš„ėž IoT + +ėģ¨ėŠˆë¨¸ IoT는 ė†Œëš„ėžę°€ 氀렕 ėŖŧëŗ€ė—ė„œ ęĩŦ매해 ė‚ŦėšŠí•  IoT 기기ëĨŧ 말합니다. ėŠ¤ë§ˆíŠ¸ 늤í”ŧėģ¤, ėŠ¤ë§ˆíŠ¸ 난방 ė‹œėŠ¤í…œ, 로봇 ė˛­ė†Œę¸°ė™€ ę°™ė€ ė´ ėžĨėš˜ë“¤ 뤑 ėŧëļ€ëŠ” ė—„ė˛­ë‚˜ę˛Œ ėœ ėšŠí•Šë‹ˆë‹¤. ėŒė„ą ė œė–´ ėˆ˜ë„ęŧ­ė§€ė™€ ę°™ė´ ėœ ėšŠė„ąė´ ė˜ė‹Ŧ되는 ę˛Ŋėš°ë„ ėžˆëŠ”ë°, ė´ëŠ” ėŒė„ą ė œė–´ę°€ 흐ëĨ´ëŠ” ëŦŧ ė†ŒëĻŦ 때ëŦ¸ė— ë‹šė‹ ė˜ ëĒŠė†ŒëĻŦëĨŧ ë“¤ė„ 눘 뗆揰 때ëŦ¸ė— 끌 눘 ė—†ėŒė„ ė˜ë¯¸í•Šë‹ˆë‹¤. + +ė†Œëš„ėž IoT ę¸°ę¸°ë“¤ė€ 특히 ėžĨė• ëĨŧ 氀맄 10ė–ĩ ëĒ…ė˜ ė‚ŦëžŒë“¤ė—ę˛Œ ęˇ¸ë“¤ė˜ 환ę˛Ŋė—ė„œ 더 ë§Žė€ ę˛ƒė„ ė„ąėˇ¨í•  눘 ėžˆëŠ” íž˜ė„ ėŖŧęŗ  ėžˆėŠĩ니다. ëĄœë´‡ė˛­ė†Œę¸°ëŠ” ėŠ¤ėŠ¤ëĄœ ė§„ęŗĩė˛­ė†Œę¸°ëĨŧ ė‚ŦėšŠí•  눘 ė—†ëŠ” ęą°ë™ė´ ëļˆíŽ¸í•œ ė‚ŦëžŒë“¤ė—ę˛Œ 깨끗한 바ë‹Ĩė„ 렜ęŗĩ할 눘 ėžˆęŗ , ėŒė„ąė œė–´ ė˜¤ë¸ė€ ė‹œë Ĩė´ ė œí•œė ė´ęą°ë‚˜ ėš´ë™ę¸°ëŠĨė´ ėžˆëŠ” ė‚ŦëžŒë“¤ė´ ëĒŠė†ŒëĻŦ만ėœŧ로 ė˜¤ë¸ė„ ë°ėš¸ 눘 ėžˆę˛Œ 하며, 건강 ëĒ¨ë‹ˆí„°ëŠ” í™˜ėžë“¤ė´ ë§Œė„ą ėƒíƒœëĨŧ ęˇ¸ë“¤ė˜ ėƒíƒœė— 대한 ė—…ë°ė´íŠ¸ëĄœ ëŗ´ë‹¤ ęˇœėš™ė ė´ęŗ  더 ėžė„¸í•˜ę˛Œ ėŠ¤ėŠ¤ëĄœ ëĒ¨ë‹ˆí„°ë§í•  눘 ėžˆę˛Œ 합니다. 똈ëĨŧ ë“¤ė–´ COVID ëŒ€ėœ í–‰ 기간 ë™ė•ˆ ę°€ėƒ ęĩėœĄė„ 하는 í•™ėƒë“¤ė´ ėŠ¤ë§ˆíŠ¸ 홈 ėžĨėš˜ė— íƒ€ė´ë¨¸ëĨŧ ė„¤ė •í•˜ė—Ŧ 학ęĩ ęŗĩëļ€ëĨŧ ėļ”ė í•˜ęą°ë‚˜ ë‹¤ę°€ė˜¤ëŠ” 학급 íšŒė˜ëĨŧ ėƒę¸°ė‹œí‚¤ëŠ” 등 ė´ëŸŦ한 ėžĨėš˜ëŠ” ë§¤ėš° ëŗ´íŽ¸í™”ë˜ęŗ  ėžˆėŠĩ니다. + +✅ ę°œė¸ 또는 氀렕뗐 ė–´ë–¤ ė†Œëš„ėž IoT 기기ëĨŧ 氀맀溠 ėžˆë‚˜ėš”? + +### ėƒėšŠ IoT + +ėƒėšŠ IoT는 링ėžĨė—ė„œ IoTëĨŧ ė‚ŦėšŠí•˜ëŠ” ę˛ƒė„ íŦ함합니다. ė‚ŦëŦ´ė‹¤ 환ę˛Ŋė—ė„œëŠ” ėĄ°ëĒ…ęŗŧ ë‚œë°Šė„ 관ëĻŦ하기 ėœ„í•œ ęą°ėŖŧ 氐맀揰뙀 ë™ėž‘ 氐맀揰氀 ėžˆė–´ í•„ėš”í•˜ė§€ ė•Šė„ 때만 ėĄ°ëĒ…ė„ ėœ ė§€í•˜ęŗ  ė—´ė„ ė°¨ë‹¨í•˜ė—Ŧ ëš„ėšŠęŗŧ íƒ„ė†Œ ë°°ėļœëŸ‰ė„ 뤄ėŧ 눘 ėžˆėŠĩ니다. ęŗĩėžĨė—ė„œ ė‚ŦëŦŧė¸í„°ë„ˇ(IoT) 기기는 ėž‘ė—…ėžę°€ ė•ˆė „ëǍëĨŧ ė“°ė§€ ė•Šęą°ë‚˜ ėœ„í—˜ ėˆ˜ėœ„ė— 도ë‹Ŧ한 ė†ŒėŒ 등 ė•ˆė „ėƒė˜ ėœ„í—˜ė„ ę°ė‹œí•  눘 ėžˆėŠĩ니다. ė†Œë§¤ė—…ė˛´ė—ė„œëŠ” ė‚ŦëŦŧė¸í„°ë„ˇ(IoT) 기기가 냉ėžĨÂˇëƒ‰ë™ęŗ ę°€ í•„ėš” ė˜¨ë„ ë˛”ėœ„ëĨŧ ë˛—ė–´ë‚˜ëŠ´ 렐ėŖŧė—ę˛Œ ė•Œë ¤ 냉ėžĨÂˇëƒ‰ë™ęŗ  ëŗ´ę´€ ė˜¨ë„ëĨŧ ė¸Ąė •í•˜ęą°ë‚˜, ė„ ë°˜ė— ėžˆëŠ” 품ëĒŠė„ ëĒ¨ë‹ˆí„°ë§í•´ ė§ė›ë“¤ė—ę˛Œ 판매된 ë†ė‚°ëŦŧė„ ëĻŦ필하도록 ė§€ė‹œí•  눘 ėžˆėŠĩ니다. ėš´ė†Ąė—…ęŗ„ëŠ” ė°¨ëŸ‰ ėœ„ėš˜ ëĒ¨ë‹ˆí„°ë§, 도로 ė‚ŦėšŠėž ėļŠė „ė„ ėœ„í•œ ė˜¨ëĄœë“œ 마ėŧëĻŦė§€ ėļ”렁, ėš´ė „ėž ė‹œę°„ 및 ęŗ ėžĨ ė¤€ėˆ˜ ė—Ŧëļ€ ėļ”렁, 렁ėžŦ 또는 í•˜ė—­ ė¤€ëš„ëĨŧ ėœ„í•´ ė°¨ëŸ‰ ėž…ęŗ ė§€ ė ‘ęˇŧ ė‹œ ė§ė›ė—ę˛Œ ė•ŒëĻŦ는 ë“ąė˜ IoT ė˜ėĄ´ë„ę°€ ë†’ė•„ė§€ęŗ  ėžˆėŠĩ니다. + +✅ ë‹šė‹ ė˜ 학ęĩë‚˜ 링ėžĨ뗐 ė–´ë–¤ ėƒėšŠ IoT 기기ëĨŧ 氀맀溠 ėžˆë‚˜ėš”? + +### ė‚°ė—… IoT (IIoT) + +ė‚°ė—…ėšŠ IoT 또는 IIoT는 대규ëĒ¨ëĄœ 揰溄ëĨŧ ė œė–´í•˜ęŗ  관ëĻŦ하기 ėœ„í•´ IoT ėžĨėš˜ëĨŧ ė‚ŦėšŠí•˜ëŠ” ę˛ƒėž…ë‹ˆë‹¤. ė—Ŧę¸°ė—ëŠ” ęŗĩėžĨė—ė„œ ë””ė§€í„¸ ë†ė—…ė— ė´ëĨ´ę¸°ęšŒė§€ ę´‘ë˛”ėœ„í•œ ė‚ŦėšŠ ė‚Ŧ례가 íŦ함됩니다. + +ęŗĩėžĨë“¤ė€ IoT 기기ëĨŧ ë‹¤ė–‘í•œ ë°Šė‹ėœŧ로 ė‚ŦėšŠí•Šë‹ˆë‹¤. ę¸°ęŗ„ëŠ” ė˜¨ë„, ė§„ë™, íšŒė „ ė†ë„ė™€ ę°™ė€ ę˛ƒë“¤ė„ ėļ”ė í•˜ę¸° ėœ„í•´ ė—ŦëŸŦ ė„ŧė„œëĄœ ëĒ¨ë‹ˆí„°ë§ë  눘 ėžˆėŠĩ니다. 그런 ë‹¤ėŒ ė´ ë°ė´í„°ëĨŧ ëĒ¨ë‹ˆí„°ë§í•˜ė—Ŧ íŠšė • ęŗĩė°¨ëĨŧ ë˛—ė–´ë‚  ę˛Ŋ뚰 揰溄氀 ė¤‘ė§€ë˜ë„ëĄ 할 눘 ėžˆėŠĩ니다. 똈ëĨŧ ë“¤ė–´, 너ëŦ´ ëœ¨ęą°ėš¸ ę˛Ŋ뚰 揰溄氀 ėĸ…ëŖŒëŠë‹ˆë‹¤. ė´ ë°ė´í„°ëŠ” ė‹œę°„ė´ ė§€ë‚¨ė— 따ëŧ ėˆ˜ė§‘ 및 ëļ„ė„í•˜ė—Ŧ ė˜ˆė¸Ą ė •ëš„ëĨŧ ėˆ˜í–‰í•  눘 ėžˆėœŧ늰, ė—Ŧę¸°ė„œ AI ëĒ¨ë¸ė€ ėžĨė• ëĄœ ė´ė–´ė§€ëŠ” ë°ė´í„°ëĨŧ ė‚´íŽ´ëŗ´ęŗ  다ëĨ¸ ėžĨė• ę°€ ë°œėƒí•˜ę¸° 렄뗐 ė˜ˆė¸Ąė— ė‚ŦėšŠí•  눘 ėžˆėŠĩ니다. + +ė§€ęĩŦė˜ ėĻę°€í•˜ëŠ” ė¸ęĩŦ, 특히 [ė§€ė† ë†ė—…](https://wikipedia.org/wiki/Subsistence_agriculture)ėœŧ로 ėƒėĄ´í•˜ëŠ” 5ė–ĩ 가ęĩŦ 20ė–ĩ ė¸ęĩŦė˜ ę˛Ŋ뚰 ë””ė§€í„¸ ë†ė—…ė´ ė¤‘ėš”í•Šë‹ˆë‹¤. ë””ė§€í„¸ ë†ė—…ė€ ëLJ ę°œė˜ 한 ėžëĻŋ눘 ë‹ŦëŸŦ ė„ŧė„œė—ė„œ 대규ëǍ ėƒė—… 네렕뗐 ė´ëĨ´ę¸°ęšŒė§€ ë‹¤ė–‘í•Šë‹ˆë‹¤. 농ëļ€ëŠ” ė˜¨ë„ëĨŧ ëĒ¨ë‹ˆí„°ë§í•˜ęŗ  [ėŧëŗ„ ė„ąėžĨ ëš„ėœ¨](https://wikipedia.org/wiki/Growing_degree-day) ė„ ė‚ŦėšŠí•˜ė—Ŧ ë†ėž‘ëŦŧė´ ė–¸ė œ ėˆ˜í™•í•  눘 ėžˆëŠ”ė§€ ė˜ˆė¸Ąí•  눘 ėžˆėŠĩ니다. ęˇ¸ë“¤ė€ í† ė–‘ 눘ëļ„ ëĒ¨ë‹ˆí„°ë§ęŗŧ ėžë™ ė‹ėˆ˜ ė‹œėŠ¤í…œė„ ė—°ę˛°í•˜ė—Ŧ ė‹ëŦŧë“¤ė—ę˛Œ í•„ėš”í•œ 만íŧė˜ ëŦŧė„ 뤄 눘 ėžˆė§€ë§Œ, ëŦŧė„ ë‚­ëš„í•˜ė§€ ė•Šęŗ  ë†ėž‘ëŦŧė´ 마ëĨ´ė§€ ė•Šë„ëĄ 더 ė´ėƒ ëŗ´ėžĨ할 ėˆ˜ëŠ” ė—†ėŠĩ니다. 농ëļ€ë“¤ė€ ė‹Ŧ맀떴 ęˇ¸ę˛ƒė„ 더 ë‚˜ė•„ę°€ė„œ 드론, ėœ„ė„ą ë°ė´í„°, AIëĨŧ ė´ėšŠí•˜ė—Ŧ 거대한 농ę˛Ŋė§€ė˜ ë†ėž‘ëŦŧ ė„ąėžĨ, ė§ˆëŗ‘, í† ė–‘ė˜ 마 ë“ąė„ ę°ė‹œí•˜ęŗ  ėžˆėŠĩ니다. + +✅ 농ëļ€ë“¤ė—ę˛Œ ë„ė›€ė´ 될 눘 ėžˆëŠ” 다ëĨ¸ ė‚ŦëŦŧė¸í„°ë„ˇ ę¸°ę¸°ë“¤ė€ ëŦ´ė—‡ėŧęšŒėš”? + +### ė‚Ŧ회 기반 ė‹œė„¤(ė¸í”„ëŧ) IoT + +ė¸í”„ëŧ IoT는 ė‚ŦëžŒë“¤ė´ ėŧ냁렁ėœŧ로 ė‚ŦėšŠí•˜ëŠ” 맀뗭렁 ė¸í”„ëŧ뙀 넏溄렁 ė¸í”„ëŧëĨŧ ę°ė‹œí•˜ęŗ  ė œė–´í•˜ëŠ” ę˛ƒėž…ë‹ˆë‹¤. + +[Smart Cities](https://wikipedia.org/wiki/Smart_city) 는 IoT 기기ëĨŧ ė‚ŦėšŠí•˜ė—Ŧ ë„ė‹œė— 대한 ë°ė´í„°ëĨŧ ėˆ˜ė§‘í•˜ęŗ  ë„ė‹œ 뚴똁 ë°Šė‹ė„ ę°œė„ í•˜ëŠ” ë„ė‹œ ė§€ė—­ėž…ë‹ˆë‹¤. ė´ ë„ė‹œë“¤ė€ ëŗ´í†ĩ ė§€ë°Š ė •ëļ€, í•™ęŗ„, 맀뗭 ę¸°ė—…ë“¤ ę°„ė˜ í˜‘ė—…ėœŧ로 ėš´ė˜ë˜ëŠ°, ęĩí†ĩė—ė„œëļ€í„° ėŖŧė°¨, 똤ė—ŧ뗐 ė´ëĨ´ę¸°ęšŒė§€ ë‹¤ė–‘í•œ ę˛ƒë“¤ė„ ėļ”ė í•˜ęŗ  관ëĻŦ합니다. 똈ëĨŧ ë“¤ė–´ 덴마íŦ ėŊ”íŽœí•˜ę˛ė€ ëŒ€ę¸°ė˜¤ė—ŧė´ 맀뗭 ėŖŧë¯ŧë“¤ė—ę˛Œ ė¤‘ėš”í•˜ę¸° 때ëŦ¸ė— ė´ëĨŧ ė¸Ąė •í•´ ë°ė´í„°ëĨŧ í™œėšŠí•´ 가ėžĨ 깨끗한 ėžė „ęą°ė™€ ėĄ°ęš… ę˛ŊëĄœė— 대한 ė •ëŗ´ëĨŧ 렜ęŗĩ합니다. + +[ėŠ¤ë§ˆíŠ¸ ė „ë Ĩ망](https://wikipedia.org/wiki/Smart_grid) ė€ ę°œëŗ„ 氀렕 ėˆ˜ė¤€ė—ė„œ ė‚ŦėšŠ ë°ė´í„°ëĨŧ ėˆ˜ė§‘í•˜ė—Ŧ ė „ë Ĩ ėˆ˜ėš”ëĨŧ 더 ėž˜ ëļ„ė„í•  눘 ėžˆë„ëĄ 합니다. ė´ ë°ė´í„°ëŠ” ë°œė „ė†ŒëĨŧ ėƒˆëĄœ ė§€ė„ ėžĨė†ŒëĨŧ íŦ함한 ęĩ­ę°€ ė°¨ė›ė—ė„œė˜ ė˜ė‚Ŧ ę˛°ė •ė„ ė•ˆë‚´í•  눘 ėžˆėœŧ늰, ė‚ŦėšŠėžę°€ ė–ŧ마나 ë§Žė€ ė „ë Ĩė„ ė‚ŦėšŠí•˜ęŗ  ėžˆëŠ”ė§€, ė–¸ė œ ė‚ŦėšŠí•˜ëŠ”ė§€ė— 대한 í†ĩė°°ë Ĩęŗŧ ė‹Ŧ맀떴 ė•ŧ간 렄揰밍 ėļŠė „ęŗŧ ę°™ė€ ëš„ėšŠ 레氐 ë°Šë˛•ė— 대한 ė œė•ˆęšŒė§€ ė‚ŦėšŠėžė—ę˛Œ 렜ęŗĩ하ė—Ŧ ę°œė¸ ė°¨ė›ė—ė„œė˜ ė˜ė‚Ŧ ę˛°ė •ė„ ė•ˆë‚´í•  눘 ėžˆėŠĩ니다. + +✅ 만ė•Ŋ ë‹šė‹ ė´ ė‚´ęŗ  ėžˆëŠ” ęŗŗė˜ ė‚ŦëŦŧė¸í„°ë„ˇ ėžĨėš˜ëĨŧ ėļ”ę°€í•˜ė—Ŧ ëŦ´ė—‡ė´ë“  ė¸Ąė •í•  눘 ėžˆë‹¤ëŠ´, ëŦ´ė—‡ė„ í•˜ęŗ  ė‹ļë‚˜ėš”? + +## ėŖŧëŗ€ė— ėžˆė„ 눘 ėžˆëŠ” IoT ėžĨėš˜ė˜ 똈 + +ėŖŧëŗ€ė— IoT 기기가 ė–ŧ마나 ë§Žė€ė§€ ė•ŒëŠ´ 놀ëŧė‹¤ęą°ė—ėš”. ė§‘ė—ė„œ ėž‘ė„ą ė¤‘ė´ëŠ° ė•ą ėģ¨íŠ¸ëĄ¤, ėŒė„ą ėģ¨íŠ¸ëĄ¤ 또는 ė „í™”ę¸°ëĨŧ í†ĩ해 ë°ė´í„°ëĨŧ ė „ė†Ąí•˜ëŠ” 기ëŠĨęŗŧ ę°™ė€ ėŠ¤ë§ˆíŠ¸ 기ëŠĨė„ 갖ėļ˜ ë‹¤ėŒęŗŧ ę°™ė€ ėžĨėš˜ë“¤ė´ ė¸í„°ë„ˇė— ė—°ę˛°ë˜ė–´ ėžˆėŠĩ니다. + +* ë‹¤ė¤‘ ėŠ¤ë§ˆíŠ¸ 늤í”ŧėģ¤ +* 냉ėžĨęŗ , ė‹ę¸°ė„¸ė˛™ę¸°, ė˜¤ë¸ 및 ė „ėžë ˆė¸ė§€ +* íƒœė–‘ ė „ė§€íŒėšŠ 렄揰 ëĒ¨ë‹ˆí„° +* ėŠ¤ë§ˆíŠ¸ 플ëŸŦ꡸ +* ëš„ë””ė˜¤ ė´ˆė¸ėĸ… 및 ëŗ´ė•ˆ ėš´ëŠ”ëŧ +* ė—ŦëŸŦ ę°œė˜ ėŠ¤ë§ˆíŠ¸ ëŖ¸ ė„ŧė„œę°€ ėžĨė°Šëœ ėŠ¤ë§ˆíŠ¸ ė˜¨ë„ ėĄ°ė ˆę¸° +* 밍溠 ëŦ¸ 개폐기 +* ę°€ė •ėšŠ ė—”í„°í…Œė¸ë¨ŧ트 ė‹œėŠ¤í…œ 및 ėŒė„ą ė œė–´ TV +* ėĄ°ëĒ… +* í”ŧíŠ¸ë‹ˆėŠ¤ 및 건강 ėļ”렁揰 + +ė´ëŸŦ한 ëĒ¨ë“  ėœ í˜•ė˜ ėžĨėš˜ė—ëŠ” ė„ŧė„œ 및/또는 ėž‘ë™ę¸°ę°€ ėžˆėœŧ늰 ė¸í„°ë„ˇęŗŧ í†ĩė‹ í•Šë‹ˆë‹¤. 뚰ëĻŦ는 휴대폰ėœŧ로 밍溠 ëŦ¸ė´ ė—´ë ¤ ėžˆëŠ”ė§€ ė•Œ 눘 ėžˆęŗ , ėŠ¤ë§ˆíŠ¸ 늤í”ŧėģ¤ė—ę˛Œ ëŦ¸ė„ ë‹Ģė•„ë‹Ŧëŧęŗ  ëļ€íƒí•  눘 ėžˆėŠĩ니다. íƒ€ė´ë¨¸ë„ ė„¤ė •í•  눘 ėžˆė–´ė„œ ë°¤ė— ė—´ë ¤ ėžˆėœŧ늴 ėžë™ėœŧ로 ë‹Ģ힙니다. ė´ˆė¸ėĸ…ė´ 뚏ëĻŦ늴 넏溄 ė–´ë””ė— ėžˆë“  휴대폰ėœŧ로 누가 ėžˆëŠ”ė§€, ė´ˆė¸ėĸ… ė•ˆė— 내ėžĨ된 늤í”ŧėģ¤ė™€ ë§ˆė´íŦëĨŧ í†ĩ해 대화할 눘 ėžˆėŠĩ니다. 나는 내 혈당, ė‹Ŧë°•ėˆ˜, ėˆ˜ëŠ´ íŒ¨í„´ė„ ëĒ¨ë‹ˆí„°ë§ 할 눘 ėžˆęŗ  내 ęą´ę°•ė„ ėĻė§„ė‹œí‚¤ę¸° ėœ„í•´ ë°ė´í„°ė—ė„œ íŒ¨í„´ė„ ė°žė„ 눘 ėžˆėŠĩ니다. 뚰ëĻŦ는 클ëŧėš°ë“œëĨŧ í†ĩ해 ėĄ°ëĒ…ė„ ė œė–´í•  눘 ėžˆęŗ , ė¸í„°ë„ˇ ė—°ę˛°ė´ ëŠė–´ėĄŒė„ 때 ė–´ë‘  ė†ė— 땉땄 ėžˆė„ 눘 ėžˆėŠĩ니다. + +--- + +## 🚀 ë„ė „ + +ė§‘, 학ęĩ 또는 링ėžĨ뗐 ėžˆëŠ” IoT 기기ëĨŧ 가ëŠĨ한 한 ë§Žė´ ë‚˜ė—´í•´ëŗ´ė„¸ėš” - ėƒę°ëŗ´ë‹¤ ë§Žė„ ė—ėš”! + +## ę°•ė˜ 후 퀴ėψ + +[ę°•ė˜ 후 퀴ėψ](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/2) + +## ëŗĩėŠĩ & ėžę¸°ėŖŧ도 학ėŠĩ + +ė†Œëš„ėž IoT í”„ëĄœė íŠ¸ė˜ ė´ė ęŗŧ ė‹¤íŒ¨ė— 대해 ėŊė–´ëŗ´ė„¸ėš”. ë‰´ėŠ¤ ė‚Ŧė´íŠ¸ė—ė„œ ę°œė¸ ė •ëŗ´ ëŗ´í˜¸ ëŦ¸ė œ, í•˜ë“œė›¨ė–´ ëŦ¸ė œ 또는 뗰枰 ëļ€ėĄąėœŧ로 ė¸í•œ ëŦ¸ė œė™€ ę°™ė€ ėž˜ëĒģ된 기ė‚ŦëĨŧ í™•ė¸í•´ëŗ´ė„¸ėš”. + +ė˜ˆė‹œ : + +* íŠ¸ėœ„í„° ęŗ„ė • **[Internet of Sh*t](https://twitter.com/internetofshit)** *(profanity warning)* ė—ė„œ ė†Œëš„ėž IoTė˜ ė‹¤íė‚Ŧ례로 ėĸ‹ė€ ëLJ氀맀 ė˜ˆė‹œë“¤ė„ í™•ė¸í•´ëŗ´ė„¸ėš”. +* [c|net - My Apple Watch saved my life: 5 people share their stories](https://www.cnet.com/news/apple-watch-lifesaving-health-features-read-5-peoples-stories/) +* [c|net - ADT technician pleads guilty to spying on customer camera feeds for years](https://www.cnet.com/news/adt-home-security-technician-pleads-guilty-to-spying-on-customer-camera-feeds-for-years/) *(trigger warning - non-consensual voyeurism)* + +## ęŗŧ렜 + +[IoT í”„ëĄœė íŠ¸ ėĄ°ė‚Ŧ](assignment.md) From fc9b5911740082409960eaf85ea43ef2f33ae685 Mon Sep 17 00:00:00 2001 From: Anurag Sharma <53372213+Anurag-0-1-A@users.noreply.github.com> Date: Tue, 7 Dec 2021 23:02:44 +0530 Subject: [PATCH 21/30] Create README.hi.md (#272) * Create README.hi.md * Update README.hi.md Co-authored-by: Jim Bennett --- .../2-deeper-dive/translations/README.hi.md | 266 ++++++++++++++++++ 1 file changed, 266 insertions(+) create mode 100644 1-getting-started/lessons/2-deeper-dive/translations/README.hi.md diff --git a/1-getting-started/lessons/2-deeper-dive/translations/README.hi.md b/1-getting-started/lessons/2-deeper-dive/translations/README.hi.md new file mode 100644 index 00000000..07521593 --- /dev/null +++ b/1-getting-started/lessons/2-deeper-dive/translations/README.hi.md @@ -0,0 +1,266 @@ +# IoT ā¤ŽāĨ‡ā¤‚ ā¤—ā¤šā¤°ā¤žā¤ˆ ⤏āĨ‡ ⤅⤧āĨā¤¯ā¤¯ā¤¨ ⤕⤰āĨ‡ā¤‚ + +![⤇⤏ ā¤Ēā¤žā¤  ā¤•ā¤ž ā¤ā¤• ⤏⤂⤕āĨā¤ˇā¤ŋā¤ĒāĨā¤¤ ā¤ĩā¤ŋā¤ĩ⤰⤪](https://github.com/microsoft/IoT-For-Beginners/blob/main/sketchnotes/lesson-2.jpg?raw=true) + +> ⤏āĨā¤•āĨ‡ā¤šā¤¨āĨ‹ā¤Ÿ [⤍ā¤ŋ⤤āĨā¤¯ ⤍⤰⤏ā¤ŋā¤ŽāĨā¤šā¤¨](https://github.com/nitya) ā¤ĻāĨā¤ĩā¤žā¤°ā¤ž ā¤Ŧā¤¨ā¤žā¤¯ā¤ž ā¤—ā¤¯ā¤ž ā¤šāĨˆāĨ¤ ā¤ā¤• ā¤Ŧā¤Ąā¤ŧāĨ‡ ⤏⤂⤏āĨā¤•⤰⤪ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤛ā¤ĩā¤ŋ ā¤Ē⤰ ⤕āĨā¤˛ā¤ŋ⤕ ⤕⤰āĨ‡ā¤‚āĨ¤ + +ā¤¯ā¤š ā¤Ēā¤žā¤  [Hello IoT series](https://youtube.com/playlist?list=PLmsFUfdnGr3xRts0TIwyaHyQuHaNQcb6-) ⤕āĨ‡ ā¤šā¤ŋ⤏āĨā¤¸āĨ‡ ⤕āĨ‡ ⤰āĨ‚ā¤Ē ā¤ŽāĨ‡ā¤‚ [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=ā¤…ā¤•ā¤žā¤Ļā¤Žā¤ŋ⤕-17441-jabenn) ⤏āĨ‡ ā¤Ēā¤ĸā¤ŧā¤žā¤¯ā¤ž ā¤—ā¤¯ā¤ž ā¤Ĩā¤žāĨ¤ ā¤Ēā¤žā¤  ⤕āĨ‹ 2 ā¤ĩāĨ€ā¤Ąā¤ŋ⤝āĨ‹ ā¤ŽāĨ‡ā¤‚ ā¤Ēā¤ĸā¤ŧā¤žā¤¯ā¤ž ā¤—ā¤¯ā¤ž ā¤Ĩā¤ž - 1 ā¤˜ā¤‚ā¤ŸāĨ‡ ā¤•ā¤ž ā¤Ēā¤žā¤ , ⤔⤰ 1 ā¤˜ā¤‚ā¤ŸāĨ‡ ā¤•ā¤ž ā¤•ā¤žā¤°āĨā¤¯ā¤žā¤˛ā¤¯ ā¤¸ā¤Žā¤¯ ⤜ā¤ŋā¤¸ā¤ŽāĨ‡ ā¤Ēā¤žā¤  ⤕āĨ‡ ⤕āĨā¤› ā¤šā¤ŋ⤏āĨā¤¸āĨ‹ā¤‚ ā¤ŽāĨ‡ā¤‚ ā¤—ā¤šā¤°ā¤žā¤ˆ ⤏āĨ‡ ⤅⤧āĨā¤¯ā¤¯ā¤¨ ⤕⤰⤤āĨ‡ ā¤šāĨˆā¤‚ ⤔⤰ ⤏ā¤ĩā¤žā¤˛āĨ‹ā¤‚ ⤕āĨ‡ ⤜ā¤ĩā¤žā¤Ŧ ā¤ĻāĨ‡ā¤¤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ + +[![ā¤Ēā¤žā¤  2: IoT ā¤ŽāĨ‡ā¤‚ ā¤ā¤• ā¤—ā¤šā¤°āĨ€ ā¤ĄāĨā¤Ŧ⤕āĨ€](https://img.youtube.com/vi/t0SySWw3z9M/0.jpg)](https://youtu.be/t0SySWw3z9M) + +[![ā¤Ēā¤žā¤  2: IoT - ā¤•ā¤žā¤°āĨā¤¯ā¤žā¤˛ā¤¯ ā¤¸ā¤Žā¤¯ ā¤ŽāĨ‡ā¤‚ ā¤ā¤• ā¤—ā¤šā¤°āĨ€ ⤗āĨ‹ā¤¤ā¤ž](https://img.youtube.com/vi/tTZYf9EST1E/0.jpg)](https://youtu.be/tTZYf9EST1E) + +> ā¤ĩāĨ€ā¤Ąā¤ŋ⤝āĨ‹ ā¤ĻāĨ‡ā¤–⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤊ā¤Ē⤰ ⤕āĨ€ ⤛ā¤ĩā¤ŋ⤝āĨ‹ā¤‚ ā¤Ē⤰ ⤕āĨā¤˛ā¤ŋ⤕ ⤕⤰āĨ‡ā¤‚ + +## ā¤ĒāĨ‚⤰āĨā¤ĩ ā¤ĩāĨā¤¯ā¤žā¤–āĨā¤¯ā¤žā¤¨ ā¤ĒāĨā¤°ā¤ļāĨā¤¨āĨ‹ā¤¤āĨā¤¤ā¤°āĨ€ + +[ā¤ĩāĨā¤¯ā¤žā¤–āĨā¤¯ā¤žā¤¨ ā¤ĒāĨ‚⤰āĨā¤ĩ ā¤ĒāĨā¤°ā¤ļāĨā¤¨āĨ‹ā¤¤āĨā¤¤ā¤°āĨ€](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/3) + +## ā¤Ē⤰ā¤ŋ⤚⤝ + +ā¤¯ā¤š ā¤Ēā¤žā¤  ā¤Ēā¤ŋ⤛⤞āĨ‡ ā¤Ēā¤žā¤  ā¤ŽāĨ‡ā¤‚ ā¤ļā¤žā¤Žā¤ŋ⤞ ⤕āĨā¤› ⤅ā¤ĩā¤§ā¤žā¤°ā¤Ŗā¤žā¤“ā¤‚ ā¤ŽāĨ‡ā¤‚ ā¤—ā¤šā¤°ā¤žā¤ˆ ⤏āĨ‡ ⤅⤧āĨā¤¯ā¤¯ā¤¨ ā¤•ā¤°ā¤¤ā¤ž ā¤šāĨˆāĨ¤ + +⤇⤏ ā¤Ēā¤žā¤  ā¤ŽāĨ‡ā¤‚ ā¤šā¤Ž ⤕ā¤ĩ⤰ ⤕⤰āĨ‡ā¤‚⤗āĨ‡: + +* [ā¤ā¤• IoT ā¤ā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤ļ⤍ ⤕āĨ‡ ⤅⤂ā¤ļ](#ā¤ā¤•-IoT-ā¤ā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤ļ⤍-⤕āĨ‡-⤅⤂ā¤ļ) +* [ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤°āĨā¤¸ ā¤ŽāĨ‡ā¤‚ ā¤—ā¤šā¤°ā¤žā¤ˆ ⤏āĨ‡ ⤅⤧āĨā¤¯ā¤¯ā¤¨ ⤕⤰āĨ‡ā¤‚](#ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤°-ā¤ŽāĨ‡ā¤‚-ā¤—ā¤šā¤°ā¤žā¤ˆ-⤏āĨ‡-⤅⤧āĨā¤¯ā¤¯ā¤¨-⤕⤰āĨ‡ā¤‚) +* [⤏ā¤ŋ⤂⤗⤞-ā¤ŦāĨ‹ā¤°āĨā¤Ą ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤°āĨ‹ā¤‚ ā¤ŽāĨ‡ā¤‚ ā¤—ā¤šā¤°ā¤žā¤ˆ ⤏āĨ‡ ⤅⤧āĨā¤¯ā¤¯ā¤¨ ⤕⤰āĨ‡ā¤‚](#⤏ā¤ŋ⤂⤗⤞-ā¤ŦāĨ‹ā¤°āĨā¤Ą-⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤°-ā¤ŽāĨ‡ā¤‚-ā¤—ā¤šā¤°ā¤žā¤ˆ-⤏āĨ‡-⤅⤧āĨā¤¯ā¤¯ā¤¨-⤕⤰āĨ‡ā¤‚) + +## ā¤ā¤• IoT ā¤ā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤ļ⤍ ⤕āĨ‡ ⤅⤂ā¤ļ + +IoT ā¤ā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤ļ⤍ ⤕āĨ‡ ā¤ĻāĨ‹ ā¤˜ā¤Ÿā¤• ā¤šāĨˆā¤‚ *ā¤‡ā¤‚ā¤Ÿā¤°ā¤¨āĨ‡ā¤Ÿ* ⤔⤰ *ā¤Ĩā¤ŋ⤂⤗*āĨ¤ ā¤†ā¤‡ā¤ ⤇⤍ ā¤ĻāĨ‹ ⤅⤂ā¤ļāĨ‹ā¤‚ ⤕āĨ‹ ā¤ĨāĨ‹ā¤Ąā¤ŧā¤ž ⤔⤰ ā¤ĩā¤ŋ⤏āĨā¤¤ā¤žā¤° ⤏āĨ‡ ā¤ĻāĨ‡ā¤–āĨ‡ā¤‚āĨ¤ + +### ā¤Ĩā¤ŋ⤂⤗ + +![ā¤ā¤• ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ 4](https://github.com/microsoft/IoT-For-Beginners/raw/main/images/raspberry-pi-4.jpg) + +IoT ā¤•ā¤ž **ā¤Ĩā¤ŋ⤂⤗** ā¤­ā¤žā¤— ā¤ā¤• ⤐⤏āĨ‡ ⤉ā¤Ē⤕⤰⤪ ⤕āĨ‹ ⤏⤂ā¤Ļ⤰āĨā¤­ā¤ŋ⤤ ā¤•ā¤°ā¤¤ā¤ž ā¤šāĨˆ ⤜āĨ‹ ⤭āĨŒā¤¤ā¤ŋ⤕ ā¤ĻāĨā¤¨ā¤ŋā¤¯ā¤ž ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ā¤‡ā¤‚ā¤Ÿā¤°āĨˆā¤•āĨā¤Ÿ ⤕⤰ ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆāĨ¤ ⤝āĨ‡ ⤉ā¤Ē⤕⤰⤪ ā¤†ā¤Žā¤¤āĨŒā¤° ā¤Ē⤰ ⤛āĨ‹ā¤ŸāĨ‡, ā¤•ā¤Ž ⤕āĨ€ā¤Žā¤¤ ā¤ĩā¤žā¤˛āĨ‡ ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤° ā¤šāĨ‹ā¤¤āĨ‡ ā¤šāĨˆā¤‚, ⤜āĨ‹ ā¤•ā¤Ž ⤗⤤ā¤ŋ ā¤Ē⤰ ⤚⤞⤤āĨ‡ ā¤šāĨˆā¤‚ ⤔⤰ ā¤•ā¤Ž ā¤ļ⤕āĨā¤¤ā¤ŋ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤤āĨ‡ ā¤šāĨˆā¤‚ - ⤉ā¤Ļā¤žā¤šā¤°ā¤Ŗ ⤕āĨ‡ ⤞ā¤ŋā¤, ⤕ā¤ŋ⤞āĨ‹ā¤Ŧā¤žā¤‡ā¤Ÿ ⤰āĨˆā¤Ž ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ā¤¸ā¤žā¤§ā¤žā¤°ā¤Ŗ ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° (ā¤ĒāĨ€ā¤¸āĨ€ ā¤ŽāĨ‡ā¤‚ ⤗āĨ€ā¤—ā¤žā¤Ŧā¤žā¤‡ā¤Ÿ ⤕āĨ‡ ā¤ĩā¤ŋā¤Ē⤰āĨ€ā¤¤) ⤕āĨ‡ā¤ĩ⤞ ⤕āĨā¤› ⤏āĨŒ ā¤ŽāĨ‡ā¤—ā¤žā¤šā¤°āĨā¤ŸāĨā¤œā¤ŧ ā¤Ē⤰ ⤚⤞ ā¤°ā¤šāĨ‡ ā¤šāĨˆā¤‚ (ā¤ĒāĨ€ā¤¸āĨ€ ā¤ŽāĨ‡ā¤‚ ⤗āĨ€ā¤—ā¤žā¤šā¤°āĨā¤ŸāĨā¤œā¤ŧ ⤕āĨ‡ ā¤ĩā¤ŋā¤Ē⤰āĨ€ā¤¤), ⤞āĨ‡ā¤•ā¤ŋ⤍ ⤕⤭āĨ€-⤕⤭āĨ€ ⤇⤤⤍āĨ€ ā¤•ā¤Ž ā¤Ŧā¤ŋ⤜⤞āĨ€ ⤕āĨ€ ⤖ā¤Ē⤤ ⤕⤰⤤āĨ‡ ā¤šāĨā¤ ⤕ā¤ŋ ā¤ĩāĨ‡ ā¤ŦāĨˆā¤Ÿā¤°āĨ€ ā¤Ē⤰ ā¤šā¤ĢāĨā¤¤āĨ‹ā¤‚, ā¤Žā¤šāĨ€ā¤¨āĨ‹ā¤‚ ā¤¯ā¤ž ā¤ĩ⤰āĨā¤ˇāĨ‹ā¤‚ ⤤⤕ ⤚⤞ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ + +⤝āĨ‡ ⤉ā¤Ē⤕⤰⤪ ⤭āĨŒā¤¤ā¤ŋ⤕ ā¤ĻāĨā¤¨ā¤ŋā¤¯ā¤ž ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ā¤Ŧā¤žā¤¤ā¤šāĨ€ā¤¤ ⤕⤰⤤āĨ‡ ā¤šāĨˆā¤‚, ā¤¯ā¤ž ⤤āĨ‹ ⤏āĨ‡ā¤‚⤏⤰ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤕āĨ‡ ⤅ā¤Ē⤍āĨ‡ ⤆⤏ā¤Ēā¤žā¤¸ ⤏āĨ‡ ā¤ĄāĨ‡ā¤Ÿā¤ž ā¤‡ā¤•ā¤ŸāĨā¤ ā¤ž ⤕⤰⤤āĨ‡ ā¤šāĨˆā¤‚ ā¤¯ā¤ž ⤭āĨŒā¤¤ā¤ŋ⤕ ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨā¤¤ā¤¨ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤†ā¤‰ā¤Ÿā¤ĒāĨā¤Ÿ ā¤¯ā¤ž ā¤ā¤•āĨā¤šāĨā¤ā¤Ÿā¤°āĨā¤¸ ⤕āĨ‹ ⤍ā¤ŋ⤝⤂⤤āĨā¤°ā¤ŋ⤤ ⤕⤰⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ā¤‡ā¤¸ā¤•ā¤ž ā¤ĩā¤ŋā¤ļā¤ŋ⤎āĨā¤Ÿ ⤉ā¤Ļā¤žā¤šā¤°ā¤Ŗ ā¤ā¤• ⤏āĨā¤Žā¤žā¤°āĨā¤Ÿ ā¤Ĩ⤰āĨā¤ŽāĨ‹ā¤¸āĨā¤ŸāĨ‡ā¤Ÿ ā¤šāĨˆ - ā¤ā¤• ⤉ā¤Ē⤕⤰⤪ ⤜ā¤ŋā¤¸ā¤ŽāĨ‡ā¤‚ ā¤ā¤• ā¤¤ā¤žā¤Ēā¤Žā¤žā¤¨ ⤏āĨ‡ā¤‚⤏⤰ ā¤šāĨ‹ā¤¤ā¤ž ā¤šāĨˆ, ā¤ā¤• ā¤ĩā¤žā¤‚ā¤›ā¤ŋ⤤ ā¤¤ā¤žā¤Ēā¤Žā¤žā¤¨ ⤜āĨˆā¤¸āĨ‡ ā¤Ąā¤žā¤¯ā¤˛ ā¤¯ā¤ž ⤟⤚⤏āĨā¤•āĨā¤°āĨ€ā¤¨ ⤏āĨ‡ā¤Ÿ ⤕⤰⤍āĨ‡ ā¤•ā¤ž ā¤¸ā¤žā¤§ā¤¨, ⤔⤰ ā¤ā¤• ā¤šāĨ€ā¤Ÿā¤ŋ⤂⤗ ā¤¯ā¤ž ⤕āĨ‚⤞ā¤ŋ⤂⤗ ⤏ā¤ŋ⤏āĨā¤Ÿā¤Ž ⤏āĨ‡ ā¤ā¤• ⤕⤍āĨ‡ā¤•āĨā¤ļ⤍ ⤜ā¤ŋ⤏āĨ‡ ā¤¤ā¤žā¤Ēā¤Žā¤žā¤¨ ā¤•ā¤ž ā¤Ēā¤¤ā¤ž ⤚⤞⤍āĨ‡ ā¤Ē⤰ ā¤šā¤žā¤˛āĨ‚ ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤ž ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆ ā¤ĩā¤žā¤‚ā¤›ā¤ŋ⤤ ⤏āĨ€ā¤Žā¤ž ⤏āĨ‡ ā¤Ŧā¤žā¤šā¤° ā¤šāĨˆāĨ¤ ā¤¤ā¤žā¤Ēā¤Žā¤žā¤¨ ⤏⤂ā¤ĩāĨ‡ā¤Ļ⤕ ā¤¯ā¤š ā¤Ēā¤¤ā¤ž ā¤˛ā¤—ā¤žā¤¤ā¤ž ā¤šāĨˆ ⤕ā¤ŋ ā¤•ā¤Žā¤°ā¤ž ā¤Ŧā¤šāĨā¤¤ ā¤ ā¤‚ā¤Ąā¤ž ā¤šāĨˆ ⤔⤰ ā¤ā¤• ā¤ā¤•āĨā¤šāĨā¤ā¤Ÿā¤° ā¤šāĨ€ā¤Ÿā¤ŋ⤂⤗ ⤕āĨ‹ ā¤šā¤žā¤˛āĨ‚ ⤕⤰ ā¤ĻāĨ‡ā¤¤ā¤ž ā¤šāĨˆāĨ¤ + +![ā¤ā¤• IoT ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤕āĨ‡ ⤇⤍ā¤ĒāĨā¤Ÿ ⤕āĨ‡ ⤰āĨ‚ā¤Ē ā¤ŽāĨ‡ā¤‚ ā¤¤ā¤žā¤Ēā¤Žā¤žā¤¨ ⤔⤰ ā¤ā¤• ā¤Ąā¤žā¤¯ā¤˛, ⤔⤰ ā¤†ā¤‰ā¤Ÿā¤ĒāĨā¤Ÿ ⤕āĨ‡ ⤰āĨ‚ā¤Ē ā¤ŽāĨ‡ā¤‚ ā¤šāĨ€ā¤Ÿā¤° ā¤•ā¤ž ⤍ā¤ŋ⤝⤂⤤āĨā¤°ā¤Ŗ ā¤Ļā¤ŋā¤–ā¤žā¤¨āĨ‡ ā¤ĩā¤žā¤˛ā¤ž ā¤ā¤• ⤆⤰āĨ‡ā¤–](https://github.com/microsoft/IoT-For-Beginners/raw/main/images/basic-thermostat.png) + +ā¤ĩā¤ŋ⤭ā¤ŋ⤍āĨā¤¨ ⤚āĨ€ā¤œāĨ‹ā¤‚ ⤕āĨ€ ā¤ā¤• ā¤ĩā¤ŋā¤ļā¤žā¤˛ ā¤ļāĨā¤°āĨƒā¤‚ā¤–ā¤˛ā¤ž ā¤šāĨˆ ⤜āĨ‹ IoT ⤉ā¤Ē⤕⤰⤪āĨ‹ā¤‚ ⤕āĨ‡ ⤰āĨ‚ā¤Ē ā¤ŽāĨ‡ā¤‚ ā¤•ā¤žā¤°āĨā¤¯ ⤕⤰ ⤏⤕⤤āĨ€ ā¤šāĨˆ, ā¤¸ā¤Žā¤°āĨā¤Ēā¤ŋ⤤ ā¤šā¤žā¤°āĨā¤Ąā¤ĩāĨ‡ā¤¯ā¤° ⤏āĨ‡ ⤜āĨ‹ ā¤ā¤• ⤚āĨ€ā¤œ ⤕āĨ‹ ā¤¸ā¤Žā¤ā¤¤āĨ€ ā¤šāĨˆ, ā¤¸ā¤žā¤Žā¤žā¤¨āĨā¤¯ ā¤ĒāĨā¤°ā¤¯āĨ‹ā¤œā¤¨ ⤕āĨ‡ ⤉ā¤Ē⤕⤰⤪āĨ‹ā¤‚ ⤤⤕, ā¤¯ā¤šā¤žā¤‚ ⤤⤕ â€‹â€‹ā¤•ā¤ŋ ⤆ā¤Ēā¤•ā¤ž ⤏āĨā¤Žā¤žā¤°āĨā¤Ÿā¤ĢāĨ‹ā¤¨ ⤭āĨ€! ā¤ā¤• ⤏āĨā¤Žā¤žā¤°āĨā¤Ÿā¤ĢāĨ‹ā¤¨ ⤅ā¤Ē⤍āĨ‡ ⤆⤏ā¤Ēā¤žā¤¸ ⤕āĨ€ ā¤ĻāĨā¤¨ā¤ŋā¤¯ā¤ž ā¤•ā¤ž ā¤Ēā¤¤ā¤ž ā¤˛ā¤—ā¤žā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤏āĨ‡ā¤‚⤏⤰ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰ ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆ, ⤔⤰ ā¤ĻāĨā¤¨ā¤ŋā¤¯ā¤ž ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ā¤Ŧā¤žā¤¤ā¤šāĨ€ā¤¤ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤ā¤•āĨā¤ŸāĨā¤¯āĨ‚ā¤ā¤Ÿā¤°āĨā¤¸ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰ ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆ - ⤉ā¤Ļā¤žā¤šā¤°ā¤Ŗ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤆ā¤Ē⤕āĨ‡ ⤏āĨā¤Ĩā¤žā¤¨ ā¤•ā¤ž ā¤Ēā¤¤ā¤ž ā¤˛ā¤—ā¤žā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤ā¤• ⤜āĨ€ā¤ĒāĨ€ā¤ā¤¸ ⤏āĨ‡ā¤‚⤏⤰ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ā¤•ā¤°ā¤¨ā¤ž ⤔⤰ ā¤ā¤• ⤏āĨā¤ĒāĨ€ā¤•⤰ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤕āĨ‡ ⤆ā¤Ē⤕āĨ‹ ⤗⤂⤤ā¤ĩāĨā¤¯ ā¤Ē⤰ ⤍āĨ‡ā¤ĩā¤ŋ⤗āĨ‡ā¤ļ⤍ ⤍ā¤ŋ⤰āĨā¤ĻāĨ‡ā¤ļ ā¤ĻāĨ‡ā¤¨ā¤žāĨ¤ + +âœ…ā¤…ā¤Ē⤍āĨ‡ ⤆⤏-ā¤Ēā¤žā¤¸ ā¤ŽāĨŒā¤œāĨ‚ā¤Ļ ⤅⤍āĨā¤¯ ā¤ĒāĨā¤°ā¤Ŗā¤žā¤˛ā¤ŋ⤝āĨ‹ā¤‚ ⤕āĨ‡ ā¤Ŧā¤žā¤°āĨ‡ ā¤ŽāĨ‡ā¤‚ ⤏āĨ‹ā¤šāĨ‡ā¤‚ ⤜āĨ‹ ⤏āĨ‡ā¤‚⤏⤰ ⤏āĨ‡ ā¤ĄāĨ‡ā¤Ÿā¤ž ā¤Ēā¤ĸā¤ŧ⤤āĨ€ ā¤šāĨˆā¤‚ ⤔⤰ ⤍ā¤ŋ⤰āĨā¤Ŗā¤¯ ⤞āĨ‡ā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤‡ā¤¸ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤤āĨ€ ā¤šāĨˆā¤‚āĨ¤ ā¤ā¤• ⤉ā¤Ļā¤žā¤šā¤°ā¤Ŗ ⤓ā¤ĩ⤍ ā¤Ē⤰ ā¤Ĩ⤰āĨā¤ŽāĨ‹ā¤¸āĨā¤ŸāĨˆā¤Ÿ ā¤šāĨ‹ā¤—ā¤žāĨ¤ ⤕āĨā¤¯ā¤ž ⤆ā¤Ē ⤔⤰ ⤖āĨ‹ā¤œ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚? + +### ā¤‡ā¤‚ā¤Ÿā¤°ā¤¨āĨ‡ā¤Ÿ + +IoT ā¤ā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤ļ⤍ ⤕āĨ‡ **ā¤‡ā¤‚ā¤Ÿā¤°ā¤¨āĨ‡ā¤Ÿ** ā¤Ē⤕āĨā¤ˇ ā¤ŽāĨ‡ā¤‚ ⤐⤏āĨ‡ ā¤ā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤ļ⤍ ā¤šāĨ‹ā¤¤āĨ‡ ā¤šāĨˆā¤‚ ⤜ā¤ŋ⤍āĨā¤šāĨ‡ā¤‚ IoT ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ā¤ĄāĨ‡ā¤Ÿā¤ž ⤭āĨ‡ā¤œā¤¨āĨ‡ ⤔⤰ ā¤ĒāĨā¤°ā¤žā¤ĒāĨā¤¤ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤕⤍āĨ‡ā¤•āĨā¤Ÿ ⤕⤰ ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆ, ā¤¸ā¤žā¤Ĩ ā¤šāĨ€ ⤅⤍āĨā¤¯ ā¤ā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤ļ⤍ ⤜āĨ‹ IoT ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤏āĨ‡ ā¤ĄāĨ‡ā¤Ÿā¤ž ⤕āĨ‹ ā¤ĒāĨā¤°āĨ‹ā¤¸āĨ‡ā¤¸ ⤕⤰ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚ ⤔⤰ IoT ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ā¤ā¤•āĨā¤ŸāĨā¤¯āĨ‚ā¤ā¤Ÿā¤°āĨā¤¸ ⤕āĨ‹ ⤕āĨŒā¤¨ ⤏āĨ‡ ⤅⤍āĨā¤°āĨ‹ā¤§ ⤭āĨ‡ā¤œā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤍ā¤ŋ⤰āĨā¤Ŗā¤¯ ⤞āĨ‡ā¤¨āĨ‡ ā¤ŽāĨ‡ā¤‚ ā¤Žā¤Ļā¤Ļ ⤕⤰⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ + +ā¤ā¤• ā¤ĩā¤ŋā¤ļā¤ŋ⤎āĨā¤Ÿ ⤏āĨ‡ā¤Ÿā¤…ā¤Ē ā¤ŽāĨ‡ā¤‚ ⤕ā¤ŋ⤏āĨ€ ā¤ĒāĨā¤°ā¤•ā¤žā¤° ⤕āĨ€ ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ⤏āĨ‡ā¤ĩā¤ž ā¤šāĨ‹ā¤—āĨ€ ⤜ā¤ŋ⤏⤏āĨ‡ IoT ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤕⤍āĨ‡ā¤•āĨā¤Ÿ ā¤šāĨ‹ā¤¤ā¤ž ā¤šāĨˆ, ⤔⤰ ā¤¯ā¤š ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ⤏āĨ‡ā¤ĩā¤ž ⤏āĨā¤°ā¤•āĨā¤ˇā¤ž ⤜āĨˆā¤¸āĨ€ ⤚āĨ€ā¤œā¤ŧāĨ‹ā¤‚ ⤕āĨ‹ ā¤¸ā¤‚ā¤­ā¤žā¤˛ā¤¤āĨ€ ā¤šāĨˆ, ā¤¸ā¤žā¤Ĩ ā¤šāĨ€ IoT ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤏āĨ‡ ⤏⤂ā¤ĻāĨ‡ā¤ļ ā¤ĒāĨā¤°ā¤žā¤ĒāĨā¤¤ ⤕⤰⤤āĨ€ ā¤šāĨˆ, ⤔⤰ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ā¤Ē⤰ ⤏⤂ā¤ĻāĨ‡ā¤ļ ā¤ĩā¤žā¤Ē⤏ ⤭āĨ‡ā¤œā¤¤āĨ€ ā¤šāĨˆāĨ¤ ā¤¯ā¤š ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ⤏āĨ‡ā¤ĩā¤ž ⤤ā¤Ŧ ⤅⤍āĨā¤¯ ⤅⤍āĨā¤ĒāĨā¤°ā¤¯āĨ‹ā¤—āĨ‹ā¤‚ ⤏āĨ‡ ⤕⤍āĨ‡ā¤•āĨā¤Ÿ ā¤šāĨ‹ā¤—āĨ€ ⤜āĨ‹ ⤏āĨ‡ā¤‚⤏⤰ ā¤ĄāĨ‡ā¤Ÿā¤ž ⤕āĨ‹ ā¤¸ā¤‚ā¤¸ā¤žā¤§ā¤ŋ⤤ ā¤¯ā¤ž ⤏⤂⤗āĨā¤°ā¤šāĨ€ā¤¤ ⤕⤰ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚, ā¤¯ā¤ž ⤍ā¤ŋ⤰āĨā¤Ŗā¤¯ ⤞āĨ‡ā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤅⤍āĨā¤¯ ⤏ā¤ŋ⤏āĨā¤Ÿā¤Ž ⤕āĨ‡ ā¤ĄāĨ‡ā¤Ÿā¤ž ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ⤏āĨ‡ā¤‚⤏⤰ ā¤ĄāĨ‡ā¤Ÿā¤ž ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ + +ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ā¤šā¤ŽāĨ‡ā¤ļā¤ž ā¤ĩā¤žā¤ˆ-ā¤Ģā¤ŧā¤žā¤ˆ ā¤¯ā¤ž ā¤ĩā¤žā¤¯ā¤°āĨā¤Ą ⤕⤍āĨ‡ā¤•āĨā¤ļ⤍ ⤕āĨ‡ ā¤Žā¤žā¤§āĨā¤¯ā¤Ž ⤏āĨ‡ ⤏āĨ€ā¤§āĨ‡ ā¤‡ā¤‚ā¤Ÿā¤°ā¤¨āĨ‡ā¤Ÿ ⤏āĨ‡ ⤕⤍āĨ‡ā¤•āĨā¤Ÿ ā¤¨ā¤šāĨ€ā¤‚ ā¤šāĨ‹ā¤¤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ⤕āĨā¤› ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ā¤ŦāĨā¤˛āĨ‚ā¤ŸāĨ‚ā¤Ĩ ⤜āĨˆā¤¸āĨ€ ⤤⤕⤍āĨ€ā¤•āĨ‹ā¤‚ ā¤Ē⤰ ā¤ā¤•-ā¤ĻāĨ‚⤏⤰āĨ‡ ⤏āĨ‡ ā¤Ŧā¤žā¤¤ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤œā¤žā¤˛ ⤍āĨ‡ā¤Ÿā¤ĩ⤰āĨā¤•ā¤ŋ⤂⤗ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤤āĨ‡ ā¤šāĨˆā¤‚, ā¤ā¤• ā¤šā¤Ŧ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤕āĨ‡ ā¤Žā¤žā¤§āĨā¤¯ā¤Ž ⤏āĨ‡ ⤜āĨā¤Ąā¤ŧ⤤āĨ‡ ā¤šāĨˆā¤‚ ⤜ā¤ŋā¤¸ā¤ŽāĨ‡ā¤‚ ā¤‡ā¤‚ā¤Ÿā¤°ā¤¨āĨ‡ā¤Ÿ ⤕⤍āĨ‡ā¤•āĨā¤ļ⤍ ā¤šāĨ‹ā¤¤ā¤ž ā¤šāĨˆāĨ¤ + +ā¤ā¤• ⤏āĨā¤Žā¤žā¤°āĨā¤Ÿ ā¤Ĩ⤰āĨā¤ŽāĨ‹ā¤¸āĨā¤ŸāĨ‡ā¤Ÿ ⤕āĨ‡ ⤉ā¤Ļā¤žā¤šā¤°ā¤Ŗ ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ, ā¤Ĩ⤰āĨā¤ŽāĨ‹ā¤¸āĨā¤ŸāĨˆā¤Ÿ ā¤šāĨ‹ā¤Ž ā¤ĩā¤žā¤ˆā¤Ģā¤žā¤ˆ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤕āĨ‡ ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ā¤ŽāĨ‡ā¤‚ ⤚⤞ ā¤°ā¤šāĨ€ ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ⤏āĨ‡ā¤ĩā¤ž ⤏āĨ‡ ⤜āĨā¤Ąā¤ŧ ā¤œā¤žā¤ā¤—ā¤žāĨ¤ ā¤¯ā¤š ⤇⤏ ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ⤏āĨ‡ā¤ĩā¤ž ⤕āĨ‹ ā¤¤ā¤žā¤Ēā¤Žā¤žā¤¨ ā¤ĄāĨ‡ā¤Ÿā¤ž ⤭āĨ‡ā¤œāĨ‡ā¤—ā¤ž, ⤔⤰ ā¤ĩā¤šā¤žā¤‚ ⤏āĨ‡ ⤇⤏āĨ‡ ⤕ā¤ŋ⤏āĨ€ ā¤ĒāĨā¤°ā¤•ā¤žā¤° ⤕āĨ‡ ā¤ĄāĨ‡ā¤Ÿā¤žā¤ŦāĨ‡ā¤¸ ā¤ŽāĨ‡ā¤‚ ⤞ā¤ŋā¤–ā¤ž ā¤œā¤žā¤ā¤—ā¤ž ⤜ā¤ŋ⤏⤏āĨ‡ ā¤Žā¤•ā¤žā¤¨ ā¤Žā¤žā¤˛ā¤ŋ⤕ ā¤ĢāĨ‹ā¤¨ ⤐ā¤Ē ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤕āĨ‡ ā¤ĩ⤰āĨā¤¤ā¤Žā¤žā¤¨ ⤔⤰ ā¤Ēā¤ŋ⤛⤞āĨ‡ ā¤¤ā¤žā¤Ēā¤Žā¤žā¤¨ ⤕āĨ€ ā¤œā¤žā¤‚ā¤š ⤕⤰ ⤏⤕āĨ‡āĨ¤ ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ā¤ŽāĨ‡ā¤‚ ā¤ā¤• ⤅⤍āĨā¤¯ ⤏āĨ‡ā¤ĩā¤ž ⤕āĨ‹ ā¤Ēā¤¤ā¤ž ā¤šāĨ‹ā¤—ā¤ž ⤕ā¤ŋ ā¤Žā¤•ā¤žā¤¨ ā¤Žā¤žā¤˛ā¤ŋ⤕ ⤕āĨ‹ ⤕āĨŒā¤¨ ā¤¸ā¤ž ā¤¤ā¤žā¤Ēā¤Žā¤žā¤¨ ā¤šā¤žā¤šā¤ŋā¤, ⤔⤰ ā¤šāĨ€ā¤Ÿā¤ŋ⤂⤗ ⤏ā¤ŋ⤏āĨā¤Ÿā¤Ž ⤕āĨ‹ ā¤šā¤žā¤˛āĨ‚ ā¤¯ā¤ž ā¤Ŧ⤂ā¤Ļ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤•ā¤šā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ⤏āĨ‡ā¤ĩā¤ž ⤕āĨ‡ ā¤Žā¤žā¤§āĨā¤¯ā¤Ž ⤏āĨ‡ IoT ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ā¤Ē⤰ ⤏⤂ā¤ĻāĨ‡ā¤ļ ā¤ĩā¤žā¤Ē⤏ ⤭āĨ‡ā¤œāĨ‡ā¤‚āĨ¤ + +![ā¤ā¤• ā¤†ā¤ˆā¤“ā¤ŸāĨ€ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤕āĨ‡ ⤇⤍ā¤ĒāĨā¤Ÿ ⤕āĨ‡ ⤰āĨ‚ā¤Ē ā¤ŽāĨ‡ā¤‚ ā¤¤ā¤žā¤Ēā¤Žā¤žā¤¨ ⤔⤰ ā¤ā¤• ā¤Ąā¤žā¤¯ā¤˛ ā¤Ļā¤ŋā¤–ā¤žā¤¨āĨ‡ ā¤ĩā¤žā¤˛ā¤ž ā¤ā¤• ⤆⤰āĨ‡ā¤–, ā¤†ā¤ˆā¤“ā¤ŸāĨ€ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ⤏āĨ‡ 2 ā¤¤ā¤°ā¤š ⤏āĨ‡ ā¤¸ā¤‚ā¤šā¤žā¤° ā¤•ā¤°ā¤¤ā¤ž ā¤šāĨˆ, ⤜āĨ‹ ā¤Ŧā¤Ļ⤞āĨ‡ ā¤ŽāĨ‡ā¤‚ ā¤ā¤• ā¤ĢāĨ‹ā¤¨ ⤕āĨ‡ ⤞ā¤ŋā¤ 2-⤤⤰ā¤Ģā¤ž ā¤¸ā¤‚ā¤šā¤žā¤° ā¤šāĨ‹ā¤¤ā¤ž ā¤šāĨˆ, ⤔⤰ ā¤†ā¤ˆā¤“ā¤ŸāĨ€ ⤏āĨ‡ ā¤†ā¤‰ā¤Ÿā¤ĒāĨā¤Ÿ ⤕āĨ‡ ⤰āĨ‚ā¤Ē ā¤ŽāĨ‡ā¤‚ ā¤šāĨ€ā¤Ÿā¤° ā¤•ā¤ž ⤍ā¤ŋ⤝⤂⤤āĨā¤°ā¤Ŗ ā¤šāĨ‹ā¤¤ā¤ž ā¤šāĨˆāĨ¤ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸](https://github.com/microsoft/IoT-For-Beginners/raw/main/images/mobile-controlled-thermostat.png) + +ā¤ā¤• ⤔⤰ ⤭āĨ€ ⤏āĨā¤Žā¤žā¤°āĨā¤Ÿ ⤏⤂⤏āĨā¤•⤰⤪ ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ā¤ŽāĨ‡ā¤‚ AI ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤅⤍āĨā¤¯ IoT ⤉ā¤Ē⤕⤰⤪āĨ‹ā¤‚ ⤏āĨ‡ ⤜āĨā¤Ąā¤ŧāĨ‡ ⤅⤍āĨā¤¯ ⤏āĨ‡ā¤‚⤏⤰ ⤏āĨ‡ ā¤ĄāĨ‡ā¤Ÿā¤ž ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ⤕⤰ ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆ ⤜āĨˆā¤¸āĨ‡ ⤕ā¤ŋ ⤑⤕āĨā¤¯āĨ‚ā¤ĒāĨ‡ā¤‚⤏āĨ€ ⤏āĨ‡ā¤‚⤏⤰ ⤜āĨ‹ ā¤¯ā¤š ā¤Ēā¤¤ā¤ž ā¤˛ā¤—ā¤žā¤¤āĨ‡ ā¤šāĨˆā¤‚ ⤕ā¤ŋ ⤕āĨŒā¤¨ ⤏āĨ‡ ā¤•ā¤Žā¤°āĨ‡ ⤉ā¤Ē⤝āĨ‹ā¤— ā¤ŽāĨ‡ā¤‚ ā¤šāĨˆā¤‚, ā¤¸ā¤žā¤Ĩ ā¤šāĨ€ ā¤ĄāĨ‡ā¤Ÿā¤ž ⤜āĨˆā¤¸āĨ‡ ā¤ŽāĨŒā¤¸ā¤Ž ⤔⤰ ā¤¯ā¤šā¤žā¤‚ ⤤⤕ â€‹â€‹â€‹â€‹ā¤•ā¤ŋ ⤆ā¤Ēā¤•ā¤ž ⤕āĨˆā¤˛āĨ‡ā¤‚ā¤Ąā¤°, ⤇⤏ ā¤Ē⤰ ⤍ā¤ŋ⤰āĨā¤Ŗā¤¯ ⤞āĨ‡ā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤕ā¤ŋ ⤕āĨˆā¤¸āĨ‡ ā¤¤ā¤žā¤Ēā¤Žā¤žā¤¨ ⤕āĨ‹ ⤏āĨā¤Žā¤žā¤°āĨā¤Ÿ ⤤⤰āĨ€ā¤•āĨ‡ ⤏āĨ‡ ⤏āĨ‡ā¤Ÿ ⤕⤰āĨ‡ā¤‚āĨ¤ ⤉ā¤Ļā¤žā¤šā¤°ā¤Ŗ ⤕āĨ‡ ⤞ā¤ŋā¤, ⤝ā¤Ļā¤ŋ ā¤¯ā¤š ⤆ā¤Ē⤕āĨ‡ ⤕āĨˆā¤˛āĨ‡ā¤‚ā¤Ąā¤° ⤏āĨ‡ ā¤Ēā¤ĸā¤ŧā¤¤ā¤ž ā¤šāĨˆ ⤕ā¤ŋ ⤆ā¤Ē ⤛āĨā¤ŸāĨā¤ŸāĨ€ ā¤Ē⤰ ā¤šāĨˆā¤‚, ⤤āĨ‹ ā¤¯ā¤š ⤆ā¤Ē⤕āĨ‡ ā¤šāĨ€ā¤Ÿā¤ŋ⤂⤗ ⤕āĨ‹ ā¤Ŧ⤂ā¤Ļ ⤕⤰ ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆ, ā¤¯ā¤ž ⤆ā¤Ē⤕āĨ‡ ā¤ĻāĨā¤ĩā¤žā¤°ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕ā¤ŋā¤ ā¤œā¤žā¤¨āĨ‡ ā¤ĩā¤žā¤˛āĨ‡ ā¤•ā¤Žā¤°āĨ‹ā¤‚ ⤕āĨ‡ ā¤†ā¤§ā¤žā¤° ā¤Ē⤰ ā¤•ā¤Žā¤°āĨ‡-ā¤Ļ⤰-ā¤•ā¤Žā¤°āĨ‡ ⤕āĨ‡ ā¤†ā¤§ā¤žā¤° ā¤Ē⤰ ā¤šāĨ€ā¤Ÿā¤ŋ⤂⤗ ⤕āĨ‹ ā¤Ŧ⤂ā¤Ļ ⤕⤰ ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆ, ā¤ĄāĨ‡ā¤Ÿā¤ž ⤏āĨ‡ ⤅⤧ā¤ŋ⤕ ⤏āĨ‡ ⤅⤧ā¤ŋ⤕ ⤏⤟āĨ€ā¤• ā¤šāĨ‹ā¤¨ā¤ž ⤏āĨ€ā¤–ā¤¤ā¤ž ā¤šāĨˆ ⤅⤧ā¤ŋ⤕ ā¤¸ā¤Žā¤¯ ⤤⤕āĨ¤ + +![ā¤ā¤• ā¤†ā¤ˆā¤“ā¤ŸāĨ€ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤕āĨ‡ ⤇⤍ā¤ĒāĨā¤Ÿ ⤕āĨ‡ ⤰āĨ‚ā¤Ē ā¤ŽāĨ‡ā¤‚ ā¤•ā¤ˆ ā¤¤ā¤žā¤Ēā¤Žā¤žā¤¨ ⤏āĨ‡ā¤‚⤏⤰ ⤔⤰ ā¤ā¤• ā¤Ąā¤žā¤¯ā¤˛ ā¤Ļā¤ŋā¤–ā¤žā¤¤āĨ‡ ā¤šāĨā¤ ā¤ā¤• ⤆⤰āĨ‡ā¤–, ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ⤕āĨ‡ ⤞ā¤ŋā¤ 2-⤤⤰ā¤Ģā¤ž ā¤¸ā¤‚ā¤šā¤žā¤° ā¤ĩā¤žā¤˛ā¤ž ā¤†ā¤ˆā¤“ā¤ŸāĨ€ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸, ⤜ā¤ŋ⤏⤕āĨ‡ ā¤Ŧā¤Ļ⤞āĨ‡ ā¤ŽāĨ‡ā¤‚ ā¤ĢāĨ‹ā¤¨, ⤕āĨˆā¤˛āĨ‡ā¤‚ā¤Ąā¤° ⤔⤰ ā¤ŽāĨŒā¤¸ā¤Ž ⤏āĨ‡ā¤ĩā¤ž ⤕āĨ‡ ⤞ā¤ŋā¤ 2-⤤⤰ā¤Ģā¤ž ā¤¸ā¤‚ā¤šā¤žā¤° ā¤šāĨ‹ā¤¤ā¤ž ā¤šāĨˆ, ⤔⤰ IoT ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤏āĨ‡ ā¤†ā¤‰ā¤Ÿā¤ĒāĨā¤Ÿ ⤕āĨ‡ ⤰āĨ‚ā¤Ē ā¤ŽāĨ‡ā¤‚ ā¤šāĨ€ā¤Ÿā¤° ā¤•ā¤ž ⤍ā¤ŋ⤝⤂⤤āĨā¤°ā¤Ŗ](https://github.com/microsoft/IoT-For-Beginners/raw/main/images/smarter-thermostat.png) + +âœ…ā¤•āĨŒā¤¨ ā¤¸ā¤ž ⤅⤍āĨā¤¯ ā¤ĄāĨ‡ā¤Ÿā¤ž ā¤‡ā¤‚ā¤Ÿā¤°ā¤¨āĨ‡ā¤Ÿ ⤏āĨ‡ ⤜āĨā¤Ąā¤ŧāĨ‡ ā¤Ĩ⤰āĨā¤ŽāĨ‹ā¤¸āĨā¤ŸāĨ‡ā¤Ÿ ⤕āĨ‹ ⤏āĨā¤Žā¤žā¤°āĨā¤Ÿ ā¤Ŧā¤¨ā¤žā¤¨āĨ‡ ā¤ŽāĨ‡ā¤‚ ā¤Žā¤Ļā¤Ļ ⤕⤰ ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆ? + +### ⤕ā¤ŋā¤¨ā¤žā¤°āĨ‡ ā¤Ē⤰ IoT + +ā¤šā¤žā¤˛ā¤žā¤ā¤•ā¤ŋ IoT ā¤ŽāĨ‡ā¤‚ I ā¤•ā¤ž ⤅⤰āĨā¤Ĩ ā¤‡ā¤‚ā¤Ÿā¤°ā¤¨āĨ‡ā¤Ÿ ā¤šāĨˆ, ⤇⤍ ⤉ā¤Ē⤕⤰⤪āĨ‹ā¤‚ ⤕āĨ‹ ā¤‡ā¤‚ā¤Ÿā¤°ā¤¨āĨ‡ā¤Ÿ ⤏āĨ‡ ⤕⤍āĨ‡ā¤•āĨā¤Ÿ ⤕⤰⤍āĨ‡ ⤕āĨ€ ⤆ā¤ĩā¤ļāĨā¤¯ā¤•ā¤¤ā¤ž ā¤¨ā¤šāĨ€ā¤‚ ā¤šāĨˆāĨ¤ ⤕āĨā¤› ā¤Žā¤žā¤Žā¤˛āĨ‹ā¤‚ ā¤ŽāĨ‡ā¤‚, ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ 'ā¤ā¤œ' ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤏āĨ‡ ⤕⤍āĨ‡ā¤•āĨā¤Ÿ ā¤šāĨ‹ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚ - ⤗āĨ‡ā¤Ÿā¤ĩāĨ‡ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤜āĨ‹ ⤆ā¤Ē⤕āĨ‡ ⤏āĨā¤Ĩā¤žā¤¨āĨ€ā¤¯ ⤍āĨ‡ā¤Ÿā¤ĩ⤰āĨā¤• ā¤Ē⤰ ⤚⤞⤤āĨ‡ ā¤šāĨˆā¤‚, ⤜ā¤ŋā¤¸ā¤•ā¤ž ⤅⤰āĨā¤Ĩ ā¤šāĨˆ ⤕ā¤ŋ ⤆ā¤Ē ā¤‡ā¤‚ā¤Ÿā¤°ā¤¨āĨ‡ā¤Ÿ ā¤Ē⤰ ⤕āĨ‰ā¤˛ ⤕ā¤ŋā¤ ā¤Ŧā¤ŋā¤¨ā¤ž ā¤ĄāĨ‡ā¤Ÿā¤ž ⤕āĨ‹ ā¤ĒāĨā¤°āĨ‹ā¤¸āĨ‡ā¤¸ ⤕⤰ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ā¤¯ā¤š ⤤ā¤Ŧ ⤤āĨ‡ā¤œ ā¤šāĨ‹ ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆ ⤜ā¤Ŧ ⤆ā¤Ē⤕āĨ‡ ā¤Ēā¤žā¤¸ ā¤Ŧā¤šāĨā¤¤ ⤅⤧ā¤ŋ⤕ ā¤ĄāĨ‡ā¤Ÿā¤ž ā¤¯ā¤ž ⤧āĨ€ā¤Žā¤ž ā¤‡ā¤‚ā¤Ÿā¤°ā¤¨āĨ‡ā¤Ÿ ⤕⤍āĨ‡ā¤•āĨā¤ļ⤍ ā¤šāĨ‹, ā¤¯ā¤š ⤆ā¤Ē⤕āĨ‹ ⤑ā¤Ģā¤ŧā¤˛ā¤žā¤‡ā¤¨ ā¤šā¤˛ā¤žā¤¨āĨ‡ ⤕āĨ€ ⤅⤍āĨā¤Žā¤¤ā¤ŋ ā¤ĻāĨ‡ā¤¤ā¤ž ā¤šāĨˆ ā¤œā¤šā¤žā¤‚ ā¤‡ā¤‚ā¤Ÿā¤°ā¤¨āĨ‡ā¤Ÿ ⤕⤍āĨ‡ā¤•āĨā¤Ÿā¤ŋā¤ĩā¤ŋ⤟āĨ€ ⤏⤂⤭ā¤ĩ ā¤¨ā¤šāĨ€ā¤‚ ā¤šāĨˆ ⤜āĨˆā¤¸āĨ‡ ⤕ā¤ŋ ā¤œā¤šā¤žā¤œ ā¤Ē⤰ ā¤¯ā¤ž ⤆ā¤Ēā¤Ļā¤ž ⤕āĨā¤ˇāĨ‡ā¤¤āĨā¤° ā¤ŽāĨ‡ā¤‚ ā¤Žā¤žā¤¨ā¤ĩāĨ€ā¤¯ ā¤¸ā¤‚ā¤•ā¤Ÿ ā¤•ā¤ž ⤜ā¤ĩā¤žā¤Ŧ ā¤ĻāĨ‡ā¤¤āĨ‡ ā¤¸ā¤Žā¤¯, ⤔⤰ ⤆ā¤Ē⤕āĨ‹ ā¤ĄāĨ‡ā¤Ÿā¤ž ⤕āĨ‹ ⤍ā¤ŋ⤜āĨ€ ⤰⤖āĨ‡ā¤‚āĨ¤ ⤕āĨā¤› ⤉ā¤Ē⤕⤰⤪āĨ‹ā¤‚ ā¤ŽāĨ‡ā¤‚ ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ⤟āĨ‚⤞āĨā¤¸ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤕āĨ‡ ā¤Ŧā¤¨ā¤žā¤ ā¤—ā¤ ā¤ĒāĨā¤°āĨ‹ā¤¸āĨ‡ā¤¸ā¤ŋ⤂⤗ ⤕āĨ‹ā¤Ą ā¤šāĨ‹ā¤‚⤗āĨ‡ ⤔⤰ ⤍ā¤ŋ⤰āĨā¤Ŗā¤¯ ⤞āĨ‡ā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤‡ā¤‚ā¤Ÿā¤°ā¤¨āĨ‡ā¤Ÿ ⤕⤍āĨ‡ā¤•āĨā¤ļ⤍ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕ā¤ŋā¤ ā¤Ŧā¤ŋā¤¨ā¤ž ā¤ĄāĨ‡ā¤Ÿā¤ž ā¤ā¤•ā¤¤āĨā¤° ⤕⤰⤍āĨ‡ ⤔⤰ ā¤ĒāĨā¤°ā¤¤ā¤ŋ⤕āĨā¤°ā¤ŋā¤¯ā¤ž ā¤ĻāĨ‡ā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤇⤏āĨ‡ ⤏āĨā¤Ĩā¤žā¤¨āĨ€ā¤¯ ⤰āĨ‚ā¤Ē ⤏āĨ‡ ā¤šā¤˛ā¤žā¤ā¤‚ā¤—āĨ‡āĨ¤ + +ā¤‡ā¤¸ā¤•ā¤ž ā¤ā¤• ⤉ā¤Ļā¤žā¤šā¤°ā¤Ŗ ⤐ā¤ĒāĨā¤Ē⤞ ā¤šāĨ‹ā¤Žā¤ĒāĨ‰ā¤Ą, ā¤…ā¤ŽāĨ‡ā¤œā¤ŧāĨ…⤍ ā¤ā¤˛āĨ‡ā¤•āĨā¤¸ā¤ž, ā¤¯ā¤ž Google ā¤šāĨ‹ā¤Ž ⤜āĨˆā¤¸āĨ‡ ⤏āĨā¤Žā¤žā¤°āĨā¤Ÿ ā¤šāĨ‹ā¤Ž ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ā¤šāĨˆā¤‚, ⤜āĨ‹ ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ā¤ŽāĨ‡ā¤‚ ā¤ĒāĨā¤°ā¤ļā¤ŋ⤕āĨā¤ˇā¤ŋ⤤ ā¤ā¤†ā¤ˆ ā¤ŽāĨ‰ā¤Ąā¤˛ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤕āĨ‡ ⤆ā¤Ē⤕āĨ€ ⤆ā¤ĩā¤žā¤œ ⤏āĨā¤¨āĨ‡ā¤‚⤗āĨ‡, ⤞āĨ‡ā¤•ā¤ŋ⤍ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ā¤Ē⤰ ⤏āĨā¤Ĩā¤žā¤¨āĨ€ā¤¯ ⤰āĨ‚ā¤Ē ⤏āĨ‡ ⤚⤞ ā¤°ā¤šāĨ‡ ā¤šāĨˆā¤‚āĨ¤ ⤜ā¤Ŧ ⤕āĨ‹ā¤ˆ ⤍ā¤ŋā¤ļāĨā¤šā¤ŋ⤤ ā¤ļā¤ŦāĨā¤Ļ ā¤¯ā¤ž ā¤ĩā¤žā¤•āĨā¤¯ā¤žā¤‚ā¤ļ ā¤ŦāĨ‹ā¤˛ā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆ ⤤āĨ‹ ⤝āĨ‡ ⤉ā¤Ē⤕⤰⤪ 'ā¤œā¤žā¤—āĨƒā¤¤' ā¤šāĨ‹ā¤‚⤗āĨ‡, ⤔⤰ ⤉⤏⤕āĨ‡ ā¤Ŧā¤žā¤Ļ ā¤šāĨ€ ā¤ĒāĨā¤°ā¤¸ā¤‚⤏āĨā¤•⤰⤪ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤‡ā¤‚ā¤Ÿā¤°ā¤¨āĨ‡ā¤Ÿ ā¤Ē⤰ ⤅ā¤Ēā¤¨ā¤ž ā¤­ā¤žā¤ˇā¤Ŗ ⤭āĨ‡ā¤œāĨ‡ā¤‚⤗āĨ‡āĨ¤ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ā¤‰ā¤šā¤ŋ⤤ ā¤Ŧā¤ŋ⤂ā¤ĻāĨ ā¤Ē⤰ ā¤­ā¤žā¤ˇā¤Ŗ ⤭āĨ‡ā¤œā¤¨ā¤ž ā¤Ŧ⤂ā¤Ļ ⤕⤰ ā¤ĻāĨ‡ā¤—ā¤ž ⤜āĨˆā¤¸āĨ‡ ⤕ā¤ŋ ⤜ā¤Ŧ ā¤¯ā¤š ⤆ā¤Ē⤕āĨ‡ ā¤­ā¤žā¤ˇā¤Ŗ ā¤ŽāĨ‡ā¤‚ ā¤ĩā¤ŋā¤°ā¤žā¤Ž ā¤•ā¤ž ā¤Ēā¤¤ā¤ž ā¤˛ā¤—ā¤žā¤¤ā¤ž ā¤šāĨˆāĨ¤ ā¤ĩāĨ‡ā¤• ā¤ļā¤ŦāĨā¤Ļ ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤕āĨ‹ ā¤œā¤—ā¤žā¤¨āĨ‡ ⤏āĨ‡ ā¤Ēā¤šā¤˛āĨ‡ ⤆ā¤Ē ⤜āĨ‹ ⤕āĨā¤› ⤭āĨ€ ā¤•ā¤šā¤¤āĨ‡ ā¤šāĨˆā¤‚, ⤔⤰ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤕āĨ‡ ⤏āĨā¤¨ā¤¨ā¤ž ā¤Ŧ⤂ā¤Ļ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ā¤Ŧā¤žā¤Ļ ⤆ā¤Ē ⤜āĨ‹ ⤕āĨā¤› ⤭āĨ€ ā¤•ā¤šā¤¤āĨ‡ ā¤šāĨˆā¤‚ ā¤ĩā¤š ā¤‡ā¤‚ā¤Ÿā¤°ā¤¨āĨ‡ā¤Ÿ ā¤Ē⤰ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ā¤ĒāĨā¤°ā¤Ļā¤žā¤¤ā¤ž ⤕āĨ‹ ā¤¨ā¤šāĨ€ā¤‚ ⤭āĨ‡ā¤œā¤ž ā¤œā¤žā¤ā¤—ā¤ž, ⤔⤰ ⤇⤏⤞ā¤ŋā¤ ⤍ā¤ŋ⤜āĨ€ ā¤šāĨ‹ā¤—ā¤žāĨ¤ + +âœ…ā¤…ā¤¨āĨā¤¯ ā¤Ē⤰ā¤ŋā¤ĻāĨƒā¤ļāĨā¤¯āĨ‹ā¤‚ ⤕āĨ‡ ā¤Ŧā¤žā¤°āĨ‡ ā¤ŽāĨ‡ā¤‚ ⤏āĨ‹ā¤šāĨ‡ā¤‚ ā¤œā¤šā¤žā¤‚ ⤗āĨ‹ā¤Ē⤍āĨ€ā¤¯ā¤¤ā¤ž ā¤Žā¤šā¤¤āĨā¤ĩā¤ĒāĨ‚⤰āĨā¤Ŗ ā¤šāĨˆ ⤇⤏⤞ā¤ŋā¤ ā¤ĄāĨ‡ā¤Ÿā¤ž ā¤•ā¤ž ā¤ĒāĨā¤°ā¤¸ā¤‚⤏āĨā¤•⤰⤪ ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ⤕āĨ‡ ā¤Ŧā¤œā¤žā¤¯ ⤕ā¤ŋā¤¨ā¤žā¤°āĨ‡ ā¤Ē⤰ ā¤ŦāĨ‡ā¤šā¤¤ā¤° ā¤ĸ⤂⤗ ⤏āĨ‡ ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤ā¤—ā¤žāĨ¤ ā¤ā¤• ⤏⤂⤕āĨ‡ā¤¤ ⤕āĨ‡ ⤰āĨ‚ā¤Ē ā¤ŽāĨ‡ā¤‚ - ⤉⤍ IoT ⤉ā¤Ē⤕⤰⤪āĨ‹ā¤‚ ⤕āĨ‡ ā¤Ŧā¤žā¤°āĨ‡ ā¤ŽāĨ‡ā¤‚ ⤏āĨ‹ā¤šāĨ‡ā¤‚ ⤜ā¤ŋā¤¨ā¤ŽāĨ‡ā¤‚ ⤕āĨˆā¤Žā¤°āĨ‡ ā¤¯ā¤ž ⤅⤍āĨā¤¯ ā¤‡ā¤ŽāĨ‡ā¤œā¤ŋ⤂⤗ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ā¤šāĨˆā¤‚āĨ¤ + +### ā¤†ā¤ˆā¤“ā¤ŸāĨ€ ⤏āĨā¤°ā¤•āĨā¤ˇā¤ž + +⤕ā¤ŋ⤏āĨ€ ⤭āĨ€ ā¤‡ā¤‚ā¤Ÿā¤°ā¤¨āĨ‡ā¤Ÿ ⤕⤍āĨ‡ā¤•āĨā¤ļ⤍ ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ, ⤏āĨā¤°ā¤•āĨā¤ˇā¤ž ā¤ā¤• ā¤Žā¤šā¤¤āĨā¤ĩā¤ĒāĨ‚⤰āĨā¤Ŗ ā¤ĩā¤ŋā¤šā¤žā¤° ā¤šāĨˆāĨ¤ ā¤ā¤• ā¤ĒāĨā¤°ā¤žā¤¨ā¤ž ā¤Žā¤œā¤žā¤• ā¤šāĨˆ ⤕ā¤ŋ 'ā¤†ā¤ˆā¤“ā¤ŸāĨ€ ā¤ŽāĨ‡ā¤‚ ā¤ā¤¸ ⤏āĨā¤°ā¤•āĨā¤ˇā¤ž ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤–ā¤Ąā¤ŧā¤ž ā¤šāĨˆ' - ā¤†ā¤ˆā¤“ā¤ŸāĨ€ ā¤ŽāĨ‡ā¤‚ ⤕āĨ‹ā¤ˆ 'ā¤ā¤¸' ā¤¨ā¤šāĨ€ā¤‚ ā¤šāĨˆ, ⤜ā¤ŋā¤¸ā¤•ā¤ž ⤅⤰āĨā¤Ĩ ā¤šāĨˆ ⤕ā¤ŋ ā¤¯ā¤š ⤏āĨā¤°ā¤•āĨā¤ˇā¤ŋ⤤ ā¤¨ā¤šāĨ€ā¤‚ ā¤šāĨˆāĨ¤ + +IoT ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ⤏āĨ‡ā¤ĩā¤ž ⤏āĨ‡ ⤕⤍āĨ‡ā¤•āĨā¤Ÿ ā¤šāĨ‹ā¤¤āĨ‡ ā¤šāĨˆā¤‚, ⤔⤰ ⤇⤏⤞ā¤ŋā¤ ⤕āĨ‡ā¤ĩ⤞ ⤉⤏ ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ⤏āĨ‡ā¤ĩā¤ž ⤕āĨ€ ā¤¤ā¤°ā¤š ā¤šāĨ€ ⤏āĨā¤°ā¤•āĨā¤ˇā¤ŋ⤤ ā¤šāĨ‹ā¤¤āĨ‡ ā¤šāĨˆā¤‚ - ⤝ā¤Ļā¤ŋ ⤆ā¤Ē⤕āĨ€ ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ⤏āĨ‡ā¤ĩā¤ž ⤕ā¤ŋ⤏āĨ€ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤕āĨ‹ ⤕⤍āĨ‡ā¤•āĨā¤Ÿ ⤕⤰⤍āĨ‡ ⤕āĨ€ ⤅⤍āĨā¤Žā¤¤ā¤ŋ ā¤ĻāĨ‡ā¤¤āĨ€ ā¤šāĨˆ ⤤āĨ‹ ā¤ĻāĨā¤°āĨā¤­ā¤žā¤ĩā¤¨ā¤žā¤ĒāĨ‚⤰āĨā¤Ŗ ā¤ĄāĨ‡ā¤Ÿā¤ž ⤭āĨ‡ā¤œā¤ž ā¤œā¤ž ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆ, ā¤¯ā¤ž ā¤ĩā¤žā¤¯ā¤°ā¤¸ ⤕āĨ‡ ā¤šā¤Žā¤˛āĨ‡ ā¤šāĨ‹ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ⤇⤏⤕āĨ‡ ā¤Ŧā¤šāĨā¤¤ ā¤šāĨ€ ā¤ĩā¤žā¤¸āĨā¤¤ā¤ĩā¤ŋ⤕ ā¤ĻāĨā¤¨ā¤ŋā¤¯ā¤ž ⤕āĨ‡ ā¤Ē⤰ā¤ŋā¤Ŗā¤žā¤Ž ā¤šāĨ‹ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚ ⤕āĨā¤¯āĨ‹ā¤‚⤕ā¤ŋ IoT ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤅⤍āĨā¤¯ ⤉ā¤Ē⤕⤰⤪āĨ‹ā¤‚ ⤕āĨ‹ ā¤‡ā¤‚ā¤Ÿā¤°āĨˆā¤•āĨā¤Ÿ ⤔⤰ ⤍ā¤ŋ⤝⤂⤤āĨā¤°ā¤ŋ⤤ ⤕⤰⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ⤉ā¤Ļā¤žā¤šā¤°ā¤Ŗ ⤕āĨ‡ ⤞ā¤ŋā¤, [⤏āĨā¤Ÿā¤•āĨā¤¸ā¤¨āĨ‡ā¤Ÿ ā¤ĩ⤰āĨā¤Ž](https://wikipedia.org/wiki/Stuxnet) ⤍āĨ‡ ⤏āĨ‡ā¤‚ā¤ŸāĨā¤°āĨ€ā¤ĢāĨā¤¯āĨ‚ā¤œ ā¤ŽāĨ‡ā¤‚ ā¤ĩā¤žā¤˛āĨā¤ĩāĨ‹ā¤‚ ⤕āĨ‹ ā¤–ā¤°ā¤žā¤Ŧ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤šāĨ‡ā¤°ā¤ĢāĨ‡ā¤° ⤕ā¤ŋā¤¯ā¤žāĨ¤ ā¤šāĨˆā¤•⤰āĨā¤¸ ⤍āĨ‡ [ā¤ŦāĨ‡ā¤ŦāĨ€ ā¤ŽāĨ‰ā¤¨ā¤ŋ⤟⤰ ⤤⤕ ā¤Ēā¤šāĨā¤‚ā¤šā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤–ā¤°ā¤žā¤Ŧ ⤏āĨā¤°ā¤•āĨā¤ˇā¤ž](https://www.npr.org/sections/thetwo-way/2018/06/05/617196788/s-c-mom-says-baby-monitor-was-hacked-experts-say-many-devices-are-vulnerable) ā¤•ā¤ž ⤭āĨ€ ā¤Ģā¤žā¤¯ā¤Ļā¤ž ā¤‰ā¤ ā¤žā¤¯ā¤ž ā¤šāĨˆ ⤔⤰ ⤅⤍āĨā¤¯ ⤘⤰āĨ‡ā¤˛āĨ‚ ⤍ā¤ŋā¤—ā¤°ā¤žā¤¨āĨ€ ⤉ā¤Ē⤕⤰⤪āĨ¤ + +> đŸ’ā¤•ā¤­āĨ€-⤕⤭āĨ€ IoT ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤔⤰ ā¤ā¤œ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ā¤ĄāĨ‡ā¤Ÿā¤ž ⤕āĨ‹ ⤍ā¤ŋ⤜āĨ€ ⤔⤰ ⤏āĨā¤°ā¤•āĨā¤ˇā¤ŋ⤤ ⤰⤖⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤‡ā¤‚ā¤Ÿā¤°ā¤¨āĨ‡ā¤Ÿ ⤏āĨ‡ ā¤ĒāĨ‚⤰āĨ€ ā¤¤ā¤°ā¤š ⤏āĨ‡ ⤅⤞⤗ ⤍āĨ‡ā¤Ÿā¤ĩ⤰āĨā¤• ā¤Ē⤰ ⤚⤞⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ⤇⤏āĨ‡ [ā¤ā¤¯ā¤°-⤗āĨˆā¤Ēā¤ŋ⤂⤗](https://wikipedia.org/wiki/Air_gap_(networking)) ⤕āĨ‡ ā¤¨ā¤žā¤Ž ⤏āĨ‡ ā¤œā¤žā¤¨ā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆāĨ¤ + +## ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ā¤ŽāĨ‡ā¤‚ ā¤—ā¤šā¤°ā¤žā¤ˆ ⤏āĨ‡ ⤅⤧āĨā¤¯ā¤¯ā¤¨ ⤕⤰āĨ‡ā¤‚ + +ā¤Ēā¤ŋ⤛⤞āĨ‡ ā¤Ēā¤žā¤  ā¤ŽāĨ‡ā¤‚, ā¤šā¤Žā¤¨āĨ‡ ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ā¤ĒāĨ‡ā¤ļ ⤕ā¤ŋā¤ ā¤ĨāĨ‡āĨ¤ ā¤†ā¤‡ā¤ ⤅ā¤Ŧ ā¤‰ā¤¨ā¤ŽāĨ‡ā¤‚ ā¤—ā¤šā¤°ā¤žā¤ˆ ⤏āĨ‡ ā¤ĻāĨ‡ā¤–āĨ‡ā¤‚āĨ¤ + +### ⤏āĨ€ ā¤ĒāĨ€ ⤝āĨ‚ + +⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ā¤•ā¤ž 'ā¤Ļā¤ŋā¤Žā¤žā¤—' ā¤šāĨˆāĨ¤ ā¤¯ā¤š ā¤ĒāĨā¤°āĨ‹ā¤¸āĨ‡ā¤¸ā¤° ā¤šāĨˆ ⤜āĨ‹ ⤆ā¤Ē⤕āĨ‡ ⤕āĨ‹ā¤Ą ⤕āĨ‹ ā¤šā¤˛ā¤žā¤¤ā¤ž ā¤šāĨˆ ⤔⤰ ⤕ā¤ŋ⤏āĨ€ ⤭āĨ€ ⤕⤍āĨ‡ā¤•āĨā¤ŸāĨ‡ā¤Ą ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤏āĨ‡ ā¤ĄāĨ‡ā¤Ÿā¤ž ⤭āĨ‡ā¤œ ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆ ⤔⤰ ā¤ĄāĨ‡ā¤Ÿā¤ž ā¤ĒāĨā¤°ā¤žā¤ĒāĨā¤¤ ⤕⤰ ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆāĨ¤ ⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ā¤ŽāĨ‡ā¤‚ ā¤ā¤• ā¤¯ā¤ž ⤅⤧ā¤ŋ⤕ ⤕āĨ‹ā¤° ā¤šāĨ‹ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚ - ⤅⤍ā¤ŋā¤ĩā¤žā¤°āĨā¤¯ ⤰āĨ‚ā¤Ē ⤏āĨ‡ ā¤ā¤• ā¤¯ā¤ž ⤅⤧ā¤ŋ⤕ ⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ⤜āĨ‹ ⤆ā¤Ē⤕āĨ‡ ⤕āĨ‹ā¤Ą ⤕āĨ‹ ā¤šā¤˛ā¤žā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤ā¤• ā¤¸ā¤žā¤Ĩ ā¤•ā¤žā¤Ž ⤕⤰ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ + +⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ā¤ā¤• ⤏āĨ‡ā¤•ā¤‚ā¤Ą ā¤ŽāĨ‡ā¤‚ ā¤•ā¤ˆ ā¤˛ā¤žā¤– ā¤¯ā¤ž ⤅⤰ā¤ŦāĨ‹ā¤‚ ā¤Ŧā¤žā¤° ⤟ā¤ŋ⤕ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤ā¤• ā¤˜ā¤Ąā¤ŧāĨ€ ā¤Ē⤰ ⤭⤰āĨ‹ā¤¸ā¤ž ⤕⤰⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ā¤ĒāĨā¤°ā¤¤āĨā¤¯āĨ‡ā¤• ⤟ā¤ŋ⤕, ā¤¯ā¤ž ā¤šā¤•āĨā¤°, ⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ā¤ĻāĨā¤ĩā¤žā¤°ā¤ž ⤕āĨ€ ā¤œā¤žā¤¨āĨ‡ ā¤ĩā¤žā¤˛āĨ€ ⤕āĨā¤°ā¤ŋā¤¯ā¤žā¤“ā¤‚ ⤕āĨ‹ ⤏ā¤ŋ⤂⤕āĨā¤°ā¤¨ā¤žā¤‡ā¤œā¤ŧ ā¤•ā¤°ā¤¤ā¤ž ā¤šāĨˆāĨ¤ ā¤ĒāĨā¤°ā¤¤āĨā¤¯āĨ‡ā¤• ⤟ā¤ŋ⤕ ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ, ⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ā¤ā¤• ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Ž ⤏āĨ‡ ā¤ā¤• ⤍ā¤ŋ⤰āĨā¤ĻāĨ‡ā¤ļ ⤍ā¤ŋ⤎āĨā¤Ēā¤žā¤Ļā¤ŋ⤤ ⤕⤰ ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆ, ⤜āĨˆā¤¸āĨ‡ ā¤Ŧā¤žā¤šā¤°āĨ€ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤏āĨ‡ ā¤ĄāĨ‡ā¤Ÿā¤ž ā¤ĒāĨā¤¨ā¤°āĨā¤ĒāĨā¤°ā¤žā¤ĒāĨā¤¤ ā¤•ā¤°ā¤¨ā¤ž ā¤¯ā¤ž ⤗⤪ā¤ŋ⤤āĨ€ā¤¯ ā¤—ā¤Ŗā¤¨ā¤ž ā¤•ā¤°ā¤¨ā¤žāĨ¤ ā¤¯ā¤š ⤍ā¤ŋā¤¯ā¤Žā¤ŋ⤤ ā¤šā¤•āĨā¤° ⤅⤗⤞āĨ‡ ⤍ā¤ŋ⤰āĨā¤ĻāĨ‡ā¤ļ ⤕āĨ‡ ā¤¸ā¤‚ā¤¸ā¤žā¤§ā¤ŋ⤤ ā¤šāĨ‹ā¤¨āĨ‡ ⤏āĨ‡ ā¤Ēā¤šā¤˛āĨ‡ ⤏⤭āĨ€ ā¤•ā¤žā¤°āĨā¤¯āĨ‹ā¤‚ ⤕āĨ‹ ā¤ĒāĨ‚ā¤°ā¤ž ⤕⤰⤍āĨ‡ ⤕āĨ€ ⤅⤍āĨā¤Žā¤¤ā¤ŋ ā¤ĻāĨ‡ā¤¤ā¤ž ā¤šāĨˆāĨ¤ + +ā¤˜ā¤Ąā¤ŧāĨ€ ā¤•ā¤ž ā¤šā¤•āĨā¤° ⤜ā¤ŋā¤¤ā¤¨ā¤ž ⤤āĨ‡ā¤œā¤ŧ ā¤šāĨ‹ā¤¤ā¤ž ā¤šāĨˆ, ⤉⤤⤍āĨ‡ ā¤šāĨ€ ⤅⤧ā¤ŋ⤕ ⤍ā¤ŋ⤰āĨā¤ĻāĨ‡ā¤ļ ⤜āĨ‹ ā¤ĒāĨā¤°ā¤¤āĨā¤¯āĨ‡ā¤• ⤏āĨ‡ā¤•ā¤‚ā¤Ą ā¤ŽāĨ‡ā¤‚ ā¤¸ā¤‚ā¤¸ā¤žā¤§ā¤ŋ⤤ ⤕ā¤ŋā¤ ā¤œā¤ž ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚, ⤔⤰ ⤇⤏⤞ā¤ŋā¤ ⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ⤜ā¤ŋā¤¤ā¤¨ā¤ž ⤤āĨ‡ā¤œā¤ŧ ā¤šāĨ‹ā¤¤ā¤ž ā¤šāĨˆāĨ¤ CPU ⤕āĨ€ ⤗⤤ā¤ŋ [Hertz (Hz)](https://wikipedia.org/wiki/Hertz) ā¤ŽāĨ‡ā¤‚ ā¤Žā¤žā¤ĒāĨ€ ā¤œā¤žā¤¤āĨ€ ā¤šāĨˆ, ā¤ā¤• ā¤Žā¤žā¤¨ā¤• ā¤‡ā¤•ā¤žā¤ˆ ā¤œā¤šā¤žā¤‚ 1 Hz ā¤•ā¤ž ⤅⤰āĨā¤Ĩ ā¤šāĨˆ ā¤ĒāĨā¤°ā¤¤ā¤ŋ ⤏āĨ‡ā¤•ā¤‚ā¤Ą ā¤ā¤• ā¤šā¤•āĨā¤° ā¤¯ā¤ž ā¤˜ā¤Ąā¤ŧāĨ€ ā¤•ā¤ž ⤟ā¤ŋ⤕āĨ¤ + +> 🎓CPU ⤕āĨ€ ⤗⤤ā¤ŋ ⤅⤕āĨā¤¸ā¤° MHz ā¤¯ā¤ž GHz ā¤ŽāĨ‡ā¤‚ ā¤ĻāĨ€ ā¤œā¤žā¤¤āĨ€ ā¤šāĨˆāĨ¤ 1MHz 1 ā¤Žā¤ŋ⤞ā¤ŋ⤝⤍ ā¤šā¤°āĨā¤ŸāĨā¤œ ā¤šāĨˆ, 1GHz 1 ā¤Ŧā¤ŋ⤞ā¤ŋ⤝⤍ ā¤šā¤°āĨā¤ŸāĨā¤œ ā¤šāĨˆāĨ¤ + +> 💁 CPU [fetch-decode-execute cycle](https://wikipedia.org/wiki/Instruction_cycle) ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤕āĨ‡ ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Ž ⤍ā¤ŋ⤎āĨā¤Ēā¤žā¤Ļā¤ŋ⤤ ⤕⤰⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ā¤ĒāĨā¤°ā¤¤āĨā¤¯āĨ‡ā¤• ā¤˜ā¤Ąā¤ŧāĨ€ ⤕āĨ€ ⤟ā¤ŋ⤕ ⤕āĨ‡ ⤞ā¤ŋā¤, ⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ā¤ŽāĨ‡ā¤ŽāĨ‹ā¤°āĨ€ ⤏āĨ‡ ā¤…ā¤—ā¤˛ā¤ž ⤍ā¤ŋ⤰āĨā¤ĻāĨ‡ā¤ļ ā¤ĒāĨā¤°ā¤žā¤ĒāĨā¤¤ ⤕⤰āĨ‡ā¤—ā¤ž, ⤇⤏āĨ‡ ā¤ĄāĨ€ā¤•āĨ‹ā¤Ą ⤕⤰āĨ‡ā¤—ā¤ž, ā¤Ģā¤ŋ⤰ ⤇⤏āĨ‡ ⤍ā¤ŋ⤎āĨā¤Ēā¤žā¤Ļā¤ŋ⤤ ⤕⤰āĨ‡ā¤—ā¤ž ⤜āĨˆā¤¸āĨ‡ ⤕ā¤ŋ 2 ⤍⤂ā¤Ŧ⤰ ⤜āĨ‹ā¤Ąā¤ŧ⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤅⤂⤕⤗⤪ā¤ŋ⤤āĨ€ā¤¯ ⤤⤰āĨā¤• ā¤‡ā¤•ā¤žā¤ˆ (ā¤ā¤ā¤˛ā¤¯āĨ‚) ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ā¤•ā¤°ā¤¨ā¤žāĨ¤ ⤕āĨā¤› ⤍ā¤ŋ⤎āĨā¤Ēā¤žā¤Ļ⤍ ā¤šā¤˛ā¤žā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤•ā¤ˆ ⤟ā¤ŋ⤕ ⤞⤗āĨ‡ā¤‚⤗āĨ‡, ⤇⤏⤞ā¤ŋā¤ ā¤…ā¤—ā¤˛ā¤ž ā¤šā¤•āĨā¤° ⤍ā¤ŋ⤰āĨā¤ĻāĨ‡ā¤ļ ā¤ĒāĨ‚ā¤°ā¤ž ā¤šāĨ‹ā¤¨āĨ‡ ⤕āĨ‡ ā¤Ŧā¤žā¤Ļ ⤅⤗⤞āĨ‡ ⤟ā¤ŋ⤕ ā¤Ē⤰ ⤚⤞āĨ‡ā¤—ā¤žāĨ¤ + +![ā¤Ģā¤ŧāĨ‡ā¤š ā¤Ąā¤ŋ⤕āĨ‹ā¤Ą, ⤰āĨˆā¤Ž ā¤ŽāĨ‡ā¤‚ ⤏⤂⤗āĨā¤°ā¤šāĨ€ā¤¤ ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Ž ⤏āĨ‡ ā¤Ģā¤ŧāĨ‡ā¤š ⤞āĨ‡ā¤¨āĨ‡ ā¤•ā¤ž ⤍ā¤ŋ⤰āĨā¤ĻāĨ‡ā¤ļ ā¤Ļā¤ŋā¤–ā¤žā¤¤āĨ‡ ā¤šāĨā¤ ā¤šā¤•āĨā¤°āĨ‹ā¤‚ ⤕āĨ‹ ⤍ā¤ŋ⤎āĨā¤Ēā¤žā¤Ļā¤ŋ⤤ ā¤•ā¤°ā¤¤ā¤ž ā¤šāĨˆ, ā¤Ģā¤ŋ⤰ ⤇⤏āĨ‡ ⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ā¤Ē⤰ ā¤Ąā¤ŋ⤕āĨ‹ā¤Ąā¤ŋ⤂⤗ ⤔⤰ ⤍ā¤ŋ⤎āĨā¤Ēā¤žā¤Ļā¤ŋ⤤ ā¤•ā¤°ā¤¤ā¤ž ā¤šāĨˆ](https://github.com/microsoft/IoT-For-Beginners/raw/main/images/fetch-decode-execute.png) + +ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ⤕āĨ€ ā¤˜ā¤Ąā¤ŧāĨ€ ⤕āĨ€ ⤗⤤ā¤ŋ ā¤ĄāĨ‡ā¤¸āĨā¤•ā¤ŸāĨ‰ā¤Ē ā¤¯ā¤ž ⤞āĨˆā¤Ē⤟āĨ‰ā¤Ē ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤°, ā¤¯ā¤ž ā¤¯ā¤šā¤žā¤‚ ⤤⤕ â€‹â€‹ā¤•ā¤ŋ ⤅⤧ā¤ŋā¤•ā¤žā¤‚ā¤ļ ⤏āĨā¤Žā¤žā¤°āĨā¤Ÿā¤Ģā¤ŧāĨ‹ā¤¨ ⤕āĨ€ ⤤āĨā¤˛ā¤¨ā¤ž ā¤ŽāĨ‡ā¤‚ ā¤Ŧā¤šāĨā¤¤ ā¤•ā¤Ž ā¤šāĨ‹ā¤¤āĨ€ ā¤šāĨˆāĨ¤ ⤉ā¤Ļā¤žā¤šā¤°ā¤Ŗ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤ĩā¤žā¤ˆā¤“ ⤟⤰āĨā¤Žā¤ŋ⤍⤞ ā¤ŽāĨ‡ā¤‚ ā¤ā¤• ⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ā¤šāĨˆ ⤜āĨ‹ 120 ā¤ŽāĨ‡ā¤—ā¤žā¤šā¤ŸāĨā¤°āĨā¤œ ā¤¯ā¤ž 120,000,000 ā¤šā¤•āĨā¤° ā¤ĒāĨā¤°ā¤¤ā¤ŋ ⤏āĨ‡ā¤•āĨ‡ā¤‚ā¤Ą ā¤Ē⤰ ā¤šā¤˛ā¤¤ā¤ž ā¤šāĨˆāĨ¤ + +âœ…ā¤ā¤• ⤔⤏⤤ ā¤ĒāĨ€ā¤¸āĨ€ ā¤¯ā¤ž ā¤ŽāĨˆā¤• ā¤ŽāĨ‡ā¤‚ ā¤•ā¤ˆ ⤗āĨ€ā¤—ā¤žā¤šā¤°āĨā¤ŸāĨā¤œā¤ŧ ā¤Ē⤰ ⤚⤞⤍āĨ‡ ā¤ĩā¤žā¤˛āĨ‡ ā¤•ā¤ˆ ⤕āĨ‹ā¤° ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ā¤ā¤• ⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ā¤šāĨ‹ā¤¤ā¤ž ā¤šāĨˆ, ⤜ā¤ŋā¤¸ā¤•ā¤ž ⤅⤰āĨā¤Ĩ ā¤šāĨˆ ⤕ā¤ŋ ā¤˜ā¤Ąā¤ŧāĨ€ ā¤ā¤• ⤏āĨ‡ā¤•ā¤‚ā¤Ą ā¤ŽāĨ‡ā¤‚ ⤅⤰ā¤ŦāĨ‹ā¤‚ ā¤Ŧā¤žā¤° ⤟ā¤ŋ⤕⤤āĨ€ ā¤šāĨˆāĨ¤ ⤅ā¤Ē⤍āĨ‡ ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤° ⤕āĨ€ ā¤˜ā¤Ąā¤ŧāĨ€ ⤕āĨ€ ⤗⤤ā¤ŋ ā¤Ē⤰ ā¤ļāĨ‹ā¤§ ⤕⤰āĨ‡ā¤‚ ⤔⤰ ⤤āĨā¤˛ā¤¨ā¤ž ⤕⤰āĨ‡ā¤‚ ⤕ā¤ŋ ā¤¯ā¤š Wio ⤟⤰āĨā¤Žā¤ŋ⤍⤞ ⤏āĨ‡ ⤕ā¤ŋ⤤⤍āĨ€ ā¤Ŧā¤žā¤° ⤤āĨ‡ā¤œ ā¤šāĨˆāĨ¤ + +ā¤ĒāĨā¤°ā¤¤āĨā¤¯āĨ‡ā¤• ā¤˜ā¤Ąā¤ŧāĨ€ ā¤šā¤•āĨā¤° ā¤ļ⤕āĨā¤¤ā¤ŋ ⤖āĨ€ā¤‚ā¤šā¤¤ā¤ž ā¤šāĨˆ ⤔⤰ ⤗⤰āĨā¤ŽāĨ€ ⤉⤤āĨā¤Ē⤍āĨā¤¨ ā¤•ā¤°ā¤¤ā¤ž ā¤šāĨˆāĨ¤ ⤜ā¤ŋ⤤⤍āĨ€ ⤤āĨ‡ā¤œāĨ€ ⤏āĨ‡ ⤟ā¤ŋ⤕ ā¤šāĨ‹ā¤¤āĨ‡ ā¤šāĨˆā¤‚, ⤉⤤⤍āĨ€ ā¤šāĨ€ ⤅⤧ā¤ŋ⤕ ā¤Ŧā¤ŋ⤜⤞āĨ€ ⤕āĨ€ ⤖ā¤Ē⤤ ā¤šāĨ‹ā¤¤āĨ€ ā¤šāĨˆ ⤔⤰ ⤅⤧ā¤ŋ⤕ ⤗⤰āĨā¤ŽāĨ€ ⤉⤤āĨā¤Ē⤍āĨā¤¨ ā¤šāĨ‹ā¤¤āĨ€ ā¤šāĨˆāĨ¤ ā¤ĒāĨ€ā¤¸āĨ€ ā¤ŽāĨ‡ā¤‚ ⤗⤰āĨā¤ŽāĨ€ ⤕āĨ‹ ā¤ĻāĨ‚⤰ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤šāĨ€ā¤Ÿ ⤏ā¤ŋ⤂⤕ ⤔⤰ ā¤Ē⤂⤖āĨ‡ ā¤šāĨ‹ā¤¤āĨ‡ ā¤šāĨˆā¤‚, ⤜ā¤ŋ⤏⤕āĨ‡ ā¤Ŧā¤ŋā¤¨ā¤ž ā¤ĩāĨ‡ ⤗⤰āĨā¤Ž ā¤šāĨ‹ ā¤œā¤žā¤¤āĨ‡ ā¤šāĨˆā¤‚ ⤔⤰ ⤏āĨ‡ā¤•ā¤‚ā¤Ą ⤕āĨ‡ ⤭āĨ€ā¤¤ā¤° ā¤Ŧ⤂ā¤Ļ ā¤šāĨ‹ ā¤œā¤žā¤¤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ⤕āĨ‡ ā¤Ēā¤žā¤¸ ⤅⤕āĨā¤¸ā¤° ⤍ ⤤āĨ‹ ā¤šāĨ‹ā¤¤ā¤ž ā¤šāĨˆ ⤕āĨā¤¯āĨ‹ā¤‚⤕ā¤ŋ ā¤ĩāĨ‡ ⤅⤧ā¤ŋ⤕ ⤕āĨ‚⤞⤰ ā¤šā¤˛ā¤žā¤¤āĨ‡ ā¤šāĨˆā¤‚ ⤔⤰ ⤇⤏⤞ā¤ŋā¤ ā¤Ŧā¤šāĨā¤¤ ⤧āĨ€ā¤ŽāĨ‡ ā¤šāĨ‹ā¤¤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ā¤ĒāĨ€ā¤¸āĨ€ ⤕āĨ€ ⤰⤍ ⤑ā¤Ģ ā¤ŽāĨ‡ā¤¨ ā¤Ēā¤žā¤ĩ⤰ ā¤¯ā¤ž ā¤Ŧā¤Ąā¤ŧāĨ€ ā¤ŦāĨˆā¤Ÿā¤°āĨ€ ⤕āĨā¤› ā¤˜ā¤‚ā¤ŸāĨ‹ā¤‚ ⤕āĨ‡ ⤞ā¤ŋā¤, ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ⤛āĨ‹ā¤ŸāĨ€ ā¤ŦāĨˆā¤Ÿā¤°āĨ€ ⤏āĨ‡ ā¤Ļā¤ŋ⤍āĨ‹ā¤‚, ā¤Žā¤šāĨ€ā¤¨āĨ‹ā¤‚ ā¤¯ā¤ž ā¤ĩ⤰āĨā¤ˇāĨ‹ā¤‚ ⤤⤕ ⤚⤞ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ā¤ŽāĨ‡ā¤‚ ⤕āĨ‹ā¤° ⤭āĨ€ ā¤šāĨ‹ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚ ⤜āĨ‹ ⤅⤞⤗-⤅⤞⤗ ⤗⤤ā¤ŋ ⤏āĨ‡ ⤚⤞⤤āĨ‡ ā¤šāĨˆā¤‚, ⤜ā¤Ŧ ā¤Ŧā¤ŋ⤜⤞āĨ€ ⤕āĨ€ ⤖ā¤Ē⤤ ā¤•ā¤Ž ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ⤕āĨ€ ā¤Žā¤žā¤‚ā¤— ā¤•ā¤Ž ā¤šāĨ‹ā¤¤āĨ€ ā¤šāĨˆ, ⤤āĨ‹ ⤧āĨ€ā¤ŽāĨ€ ā¤•ā¤Ž ā¤Ēā¤žā¤ĩ⤰ ⤕āĨ‹ā¤° ā¤Ē⤰ ⤏āĨā¤ĩā¤ŋ⤚ ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆāĨ¤ + +> 💁 ⤕āĨā¤› ā¤ĒāĨ€ā¤¸āĨ€ ⤔⤰ ā¤ŽāĨˆā¤• ⤤āĨ‡ā¤œ ā¤šā¤žā¤ˆ ā¤Ēā¤žā¤ĩ⤰ ⤕āĨ‹ā¤° ⤔⤰ ⤧āĨ€ā¤ŽāĨ€ ⤞āĨ‹ ā¤Ēā¤žā¤ĩ⤰ ⤕āĨ‹ā¤° ⤕āĨ‡ ā¤¸ā¤Žā¤žā¤¨ ā¤Žā¤ŋā¤ļāĨā¤°ā¤Ŗ ⤕āĨ‹ ⤅ā¤Ēā¤¨ā¤ž ā¤°ā¤šāĨ‡ ā¤šāĨˆā¤‚, ā¤ŦāĨˆā¤Ÿā¤°āĨ€ ā¤Ŧā¤šā¤žā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤏āĨā¤ĩā¤ŋ⤚ ⤕⤰ ā¤°ā¤šāĨ‡ ā¤šāĨˆā¤‚āĨ¤ ⤉ā¤Ļā¤žā¤šā¤°ā¤Ŗ ⤕āĨ‡ ⤞ā¤ŋā¤, ⤍ā¤ĩāĨ€ā¤¨ā¤¤ā¤Ž Apple ⤞āĨˆā¤Ē⤟āĨ‰ā¤Ē ā¤ŽāĨ‡ā¤‚ M1 ⤚ā¤ŋā¤Ē ⤚⤞ ā¤°ā¤šāĨ‡ ā¤•ā¤žā¤°āĨā¤¯ ⤕āĨ‡ ā¤†ā¤§ā¤žā¤° ā¤Ē⤰ ā¤ŦāĨˆā¤Ÿā¤°āĨ€ ⤜āĨ€ā¤ĩ⤍ ā¤¯ā¤ž ⤗⤤ā¤ŋ ⤕āĨ‹ ⤅⤍āĨā¤•āĨ‚⤞ā¤ŋ⤤ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ 4 ā¤ĒāĨā¤°ā¤Ļ⤰āĨā¤ļ⤍ ⤕āĨ‹ā¤° ⤔⤰ 4 ā¤Ļ⤕āĨā¤ˇā¤¤ā¤ž ⤕āĨ‹ā¤° ⤕āĨ‡ ā¤ŦāĨ€ā¤š ⤏āĨā¤ĩā¤ŋ⤚ ⤕⤰ ⤏⤕⤤āĨ€ ā¤šāĨˆāĨ¤ + +✅ā¤ĨāĨ‹ā¤Ąā¤ŧā¤ž ā¤ļāĨ‹ā¤§ ⤕⤰āĨ‡ā¤‚: ⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ⤕āĨ‡ ā¤Ŧā¤žā¤°āĨ‡ ā¤ŽāĨ‡ā¤‚ [ā¤ĩā¤ŋ⤕ā¤ŋā¤ĒāĨ€ā¤Ąā¤ŋā¤¯ā¤ž ⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ⤞āĨ‡ā¤–](https://wikipedia.org/wiki/Central_processing_unit) ā¤Ē⤰ ā¤Ēā¤ĸā¤ŧāĨ‡ā¤‚āĨ¤ + +#### ā¤Ÿā¤žā¤¸āĨā¤• + +ā¤ĩā¤žā¤ˆā¤“ ⤟⤰āĨā¤Žā¤ŋ⤍⤞ ⤕āĨ€ ā¤œā¤žā¤‚ā¤š ⤕⤰āĨ‡ā¤‚āĨ¤ + +⤝ā¤Ļā¤ŋ ⤆ā¤Ē ⤇⤍ ā¤Ēā¤žā¤ āĨ‹ā¤‚ ⤕āĨ‡ ⤞ā¤ŋā¤ Wio Terminal ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰ ā¤°ā¤šāĨ‡ ā¤šāĨˆā¤‚, ⤤āĨ‹ CPU ⤖āĨ‹ā¤œā¤¨āĨ‡ ā¤•ā¤ž ā¤ĒāĨā¤°ā¤¯ā¤žā¤¸ ⤕⤰āĨ‡ā¤‚āĨ¤ ā¤‡ā¤‚ā¤Ÿā¤°āĨā¤¨ā¤˛ ⤕āĨ€ ⤤⤏āĨā¤ĩāĨ€ā¤° ⤕āĨ‡ ⤞ā¤ŋā¤ [Wio Terminal ⤉⤤āĨā¤Ēā¤žā¤Ļ ā¤ĒāĨƒā¤ˇāĨā¤ ](https://www.seeedstudio.com/Wio-Terminal-p-4509.html) ā¤•ā¤ž *ā¤šā¤žā¤°āĨā¤Ąā¤ĩāĨ‡ā¤¯ā¤° ⤓ā¤ĩāĨā¤šā¤°ā¤ĩāĨā¤¯āĨ‚* ⤅⤍āĨā¤­ā¤žā¤— ā¤ĸāĨ‚⤂ā¤ĸāĨ‡ā¤‚ ⤔⤰ ā¤ĒāĨ€ā¤›āĨ‡ ⤕āĨ€ ⤓⤰ ⤏āĨā¤Ē⤎āĨā¤Ÿ ā¤ĒāĨā¤˛ā¤žā¤¸āĨā¤Ÿā¤ŋ⤕ ā¤ĩā¤ŋā¤‚ā¤ĄāĨ‹ ⤕āĨ‡ ā¤Žā¤žā¤§āĨā¤¯ā¤Ž ⤏āĨ‡ CPU ⤕āĨ‹ ⤖āĨ‹ā¤œā¤¨āĨ‡ ā¤•ā¤ž ā¤ĒāĨā¤°ā¤¯ā¤žā¤¸ ⤕⤰āĨ‡ā¤‚āĨ¤ + +### ā¤ŽāĨ‡ā¤Žā¤°āĨ€ + +ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ā¤ŽāĨ‡ā¤‚ ā¤†ā¤Žā¤¤āĨŒā¤° ā¤Ē⤰ ā¤ĻāĨ‹ ā¤ĒāĨā¤°ā¤•ā¤žā¤° ⤕āĨ€ ā¤ŽāĨ‡ā¤ŽāĨ‹ā¤°āĨ€ ā¤šāĨ‹ā¤¤āĨ€ ā¤šāĨˆ - ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Ž ā¤ŽāĨ‡ā¤ŽāĨ‹ā¤°āĨ€ ⤔⤰ ⤰āĨˆā¤‚ā¤Ąā¤Ž-ā¤ā¤•āĨā¤¸āĨ‡ā¤¸ ā¤ŽāĨ‡ā¤ŽāĨ‹ā¤°āĨ€ (RAM)āĨ¤ + +ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Ž ā¤ŽāĨ‡ā¤ŽāĨ‹ā¤°āĨ€ ⤗āĨˆā¤°-ā¤ĩā¤žā¤ˇāĨā¤Ēā¤ļāĨ€ā¤˛ ā¤šāĨ‹ā¤¤āĨ€ ā¤šāĨˆ, ⤜ā¤ŋā¤¸ā¤•ā¤ž ⤅⤰āĨā¤Ĩ ā¤šāĨˆ ⤕ā¤ŋ ā¤‡ā¤¸ā¤ŽāĨ‡ā¤‚ ⤜āĨ‹ ⤕āĨā¤› ⤭āĨ€ ⤞ā¤ŋā¤–ā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆ ā¤ĩā¤š ⤤ā¤Ŧ ā¤°ā¤šā¤¤ā¤ž ā¤šāĨˆ ⤜ā¤Ŧ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ā¤ŽāĨ‡ā¤‚ ⤕āĨ‹ā¤ˆ ā¤ļ⤕āĨā¤¤ā¤ŋ ā¤¨ā¤šāĨ€ā¤‚ ā¤šāĨ‹ā¤¤āĨ€ ā¤šāĨˆāĨ¤ ā¤¯ā¤š ā¤ĩā¤š ā¤ŽāĨ‡ā¤ŽāĨ‹ā¤°āĨ€ ā¤šāĨˆ ⤜āĨ‹ ⤆ā¤Ē⤕āĨ‡ ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Ž ⤕āĨ‹ā¤Ą ⤕āĨ‹ ⤏āĨā¤ŸāĨ‹ā¤° ⤕⤰⤤āĨ€ ā¤šāĨˆāĨ¤ + +RAM ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Ž ā¤ĻāĨā¤ĩā¤žā¤°ā¤ž ā¤šā¤˛ā¤žā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤉ā¤Ē⤝āĨ‹ā¤— ⤕āĨ€ ā¤œā¤žā¤¨āĨ‡ ā¤ĩā¤žā¤˛āĨ€ ā¤ŽāĨ‡ā¤ŽāĨ‹ā¤°āĨ€ ā¤šāĨˆ, ⤜ā¤ŋā¤¸ā¤ŽāĨ‡ā¤‚ ⤆ā¤Ē⤕āĨ‡ ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Ž ā¤ĻāĨā¤ĩā¤žā¤°ā¤ž ⤆ā¤ĩā¤‚ā¤Ÿā¤ŋ⤤ ⤚⤰ ⤔⤰ ā¤Ŧā¤žā¤šāĨā¤¯ ⤉ā¤Ē⤕⤰⤪āĨ‹ā¤‚ ⤏āĨ‡ ā¤ā¤•ā¤¤āĨā¤°ā¤ŋ⤤ ā¤ĄāĨ‡ā¤Ÿā¤ž ā¤šāĨ‹ā¤¤ā¤ž ā¤šāĨˆāĨ¤ ⤰āĨˆā¤Ž ⤅⤏āĨā¤Ĩā¤ŋ⤰ ā¤šāĨˆ, ⤜ā¤Ŧ ā¤Ŧā¤ŋ⤜⤞āĨ€ ⤚⤞āĨ€ ā¤œā¤žā¤¤āĨ€ ā¤šāĨˆ ⤤āĨ‹ ā¤¸ā¤žā¤Žā¤—āĨā¤°āĨ€ ⤖āĨ‹ ā¤œā¤žā¤¤āĨ€ ā¤šāĨˆ, ā¤ĒāĨā¤°ā¤­ā¤žā¤ĩāĨ€ ⤰āĨ‚ā¤Ē ⤏āĨ‡ ⤆ā¤Ē⤕āĨ‡ ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Ž ⤕āĨ‹ ⤰āĨ€ā¤¸āĨ‡ā¤Ÿ ⤕⤰ ā¤ĻāĨ‡ā¤¤āĨ€ ā¤šāĨˆāĨ¤ + +> 🎓ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Ž ā¤ŽāĨ‡ā¤ŽāĨ‹ā¤°āĨ€ ⤆ā¤Ē⤕āĨ‡ ⤕āĨ‹ā¤Ą ⤕āĨ‹ ⤏āĨā¤ŸāĨ‹ā¤° ⤕⤰⤤āĨ€ ā¤šāĨˆ ⤔⤰ ā¤Ēā¤žā¤ĩ⤰ ⤍ ā¤šāĨ‹ā¤¨āĨ‡ ā¤Ē⤰ ā¤°ā¤šā¤¤āĨ€ ā¤šāĨˆāĨ¤ + +> 🎓RAM ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤆ā¤Ē⤕āĨ‡ ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Ž ⤕āĨ‹ ā¤šā¤˛ā¤žā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆ ⤔⤰ ā¤Ŧā¤ŋ⤜⤞āĨ€ ⤍ ā¤šāĨ‹ā¤¨āĨ‡ ā¤Ē⤰ ⤰āĨ€ā¤¸āĨ‡ā¤Ÿ ā¤šāĨ‹ ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆ + +⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ⤕āĨ€ ā¤¤ā¤°ā¤š, ā¤ā¤• ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ā¤Ē⤰ ā¤ŽāĨ‡ā¤ŽāĨ‹ā¤°āĨ€ ā¤ā¤• ā¤ĒāĨ€ā¤¸āĨ€ ā¤¯ā¤ž ā¤ŽāĨˆā¤• ⤏āĨ‡ ⤛āĨ‹ā¤ŸāĨ‡ ā¤Ē⤰ā¤ŋā¤Žā¤žā¤Ŗ ⤕āĨ‡ ⤆ā¤ĻāĨ‡ā¤ļ ā¤šāĨˆā¤‚āĨ¤ ā¤ā¤• ā¤¸ā¤žā¤Žā¤žā¤¨āĨā¤¯ ā¤ĒāĨ€ā¤¸āĨ€ ā¤ŽāĨ‡ā¤‚ 8 ⤗āĨ€ā¤—ā¤žā¤Ŧā¤žā¤‡ā¤Ÿ (GB) RAM, ā¤¯ā¤ž 8,000,000,000 ā¤Ŧā¤žā¤‡ā¤ŸāĨā¤¸ ā¤šāĨ‹ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚, ā¤ĒāĨā¤°ā¤¤āĨā¤¯āĨ‡ā¤• ā¤Ŧā¤žā¤‡ā¤Ÿ ā¤ŽāĨ‡ā¤‚ ā¤ā¤• ⤅⤕āĨā¤ˇā¤° ā¤¯ā¤ž 0-255 ⤕āĨ€ ⤏⤂⤖āĨā¤¯ā¤ž ⤕āĨ‹ ⤏⤂⤗āĨā¤°ā¤šāĨ€ā¤¤ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤Ē⤰āĨā¤¯ā¤žā¤ĒāĨā¤¤ ⤏āĨā¤Ĩā¤žā¤¨ ā¤šāĨ‹ā¤¤ā¤ž ā¤šāĨˆāĨ¤ ā¤ā¤• ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ā¤ŽāĨ‡ā¤‚ ⤕āĨ‡ā¤ĩ⤞ ⤕ā¤ŋ⤞āĨ‹ā¤Ŧā¤žā¤‡ā¤Ÿ (KB) RAM ā¤šāĨ‹ā¤—āĨ€, ⤜ā¤ŋā¤¸ā¤ŽāĨ‡ā¤‚ ā¤ā¤• ⤕ā¤ŋ⤞āĨ‹ā¤Ŧā¤žā¤‡ā¤Ÿ 1,000 ā¤Ŧā¤žā¤‡ā¤ŸāĨā¤¸ ā¤šāĨ‹ā¤—ā¤žāĨ¤ ⤊ā¤Ē⤰ ā¤Ŧā¤¤ā¤žā¤ ā¤—ā¤ Wio ⤟⤰āĨā¤Žā¤ŋ⤍⤞ ā¤ŽāĨ‡ā¤‚ 192KB RAM ā¤¯ā¤ž 192,000 ā¤Ŧā¤žā¤‡ā¤ŸāĨā¤¸ ā¤šāĨˆā¤‚ - ā¤ā¤• ⤔⤏⤤ PC ⤏āĨ‡ 40,000 ⤗āĨā¤¨ā¤ž ā¤•ā¤Ž! + +⤍āĨ€ā¤šāĨ‡ ā¤Ļā¤ŋā¤¯ā¤ž ā¤—ā¤¯ā¤ž ⤚ā¤ŋ⤤āĨā¤° 192KB ⤔⤰ 8GB ⤕āĨ‡ ā¤ŦāĨ€ā¤š ⤕āĨ‡ ā¤¸ā¤žā¤ĒāĨ‡ā¤•āĨā¤ˇ ā¤†ā¤•ā¤žā¤° ⤕āĨ‡ ⤅⤂⤤⤰ ⤕āĨ‹ ā¤Ļ⤰āĨā¤ļā¤žā¤¤ā¤ž ā¤šāĨˆ - ⤕āĨ‡ā¤‚ā¤ĻāĨā¤° ā¤ŽāĨ‡ā¤‚ ⤛āĨ‹ā¤Ÿā¤ž ā¤Ŧā¤ŋ⤂ā¤ĻāĨ 192KB ā¤•ā¤ž ā¤ĒāĨā¤°ā¤¤ā¤ŋ⤍ā¤ŋ⤧ā¤ŋ⤤āĨā¤ĩ ā¤•ā¤°ā¤¤ā¤ž ā¤šāĨˆāĨ¤ + +![192KB ⤔⤰ 8GB ⤕āĨ‡ ā¤ŦāĨ€ā¤š ⤕āĨ€ ⤤āĨā¤˛ā¤¨ā¤ž - 40,000 ⤗āĨā¤¨ā¤ž ⤏āĨ‡ ⤅⤧ā¤ŋ⤕ ā¤Ŧā¤Ąā¤ŧāĨ€](https://github.com/microsoft/IoT-For-Beginners/raw/main/images/ram-comparison.png) + +ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Ž ⤏āĨā¤ŸāĨ‹ā¤°āĨ‡ā¤œ ⤭āĨ€ ā¤ĒāĨ€ā¤¸āĨ€ ⤏āĨ‡ ⤛āĨ‹ā¤Ÿā¤ž ā¤šāĨ‹ā¤¤ā¤ž ā¤šāĨˆāĨ¤ ā¤ā¤• ā¤ĩā¤ŋā¤ļā¤ŋ⤎āĨā¤Ÿ ā¤ĒāĨ€ā¤¸āĨ€ ā¤ŽāĨ‡ā¤‚ ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Ž ⤏āĨā¤ŸāĨ‹ā¤°āĨ‡ā¤œ ⤕āĨ‡ ⤞ā¤ŋā¤ 500GB ā¤šā¤žā¤°āĨā¤Ą ā¤ĄāĨā¤°ā¤žā¤‡ā¤ĩ ā¤šāĨ‹ ⤏⤕⤤āĨ€ ā¤šāĨˆ, ⤜ā¤Ŧ⤕ā¤ŋ ā¤ā¤• ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ā¤ŽāĨ‡ā¤‚ ⤕āĨ‡ā¤ĩ⤞ ⤕ā¤ŋ⤞āĨ‹ā¤Ŧā¤žā¤‡ā¤ŸāĨā¤¸ ā¤¯ā¤ž ā¤ļā¤žā¤¯ā¤Ļ ⤕āĨā¤› ā¤ŽāĨ‡ā¤—ā¤žā¤Ŧā¤žā¤‡ā¤ŸāĨā¤¸ (MB) ⤏āĨā¤ŸāĨ‹ā¤°āĨ‡ā¤œ (1MB 1,000KB, ā¤¯ā¤ž 1,000,000 ā¤Ŧā¤žā¤‡ā¤ŸāĨā¤¸) ā¤šāĨ‹ ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆāĨ¤ Wio ⤟⤰āĨā¤Žā¤ŋ⤍⤞ ā¤ŽāĨ‡ā¤‚ 4MB ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Ž ⤏āĨā¤ŸāĨ‹ā¤°āĨ‡ā¤œ ā¤šāĨˆāĨ¤ + +✅ ā¤ĨāĨ‹ā¤Ąā¤ŧā¤ž ā¤ļāĨ‹ā¤§ ⤕⤰āĨ‡ā¤‚: ⤇⤏āĨ‡ ā¤Ēā¤ĸā¤ŧ⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤆ā¤Ē ⤜ā¤ŋ⤏ ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤° ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰ ā¤°ā¤šāĨ‡ ā¤šāĨˆā¤‚ ā¤‰ā¤¸ā¤ŽāĨ‡ā¤‚ ⤕ā¤ŋ⤤⤍āĨ€ ⤰āĨˆā¤Ž ⤔⤰ ⤏āĨā¤ŸāĨ‹ā¤°āĨ‡ā¤œ ā¤šāĨˆ? ā¤¯ā¤š ā¤ā¤• ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ⤏āĨ‡ ⤕āĨˆā¤¸āĨ‡ ⤤āĨā¤˛ā¤¨ā¤ž ā¤•ā¤°ā¤¤ā¤ž ā¤šāĨˆ? + +### ⤇⤍ā¤ĒāĨā¤Ÿ ā¤†ā¤‰ā¤Ÿā¤ĒāĨā¤Ÿ + +ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤°āĨā¤¸ ⤕āĨ‹ ⤏āĨ‡ā¤‚⤏⤰ ⤏āĨ‡ ā¤ĄāĨ‡ā¤Ÿā¤ž ā¤Ēā¤ĸā¤ŧ⤍āĨ‡ ⤔⤰ ā¤ā¤•āĨā¤šāĨā¤ā¤Ÿā¤°āĨā¤¸ ⤕āĨ‹ ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ ⤏ā¤ŋ⤗āĨā¤¨ā¤˛ ⤭āĨ‡ā¤œā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤇⤍ā¤ĒāĨā¤Ÿ ⤔⤰ ā¤†ā¤‰ā¤Ÿā¤ĒāĨā¤Ÿ (I/O) ⤕⤍āĨ‡ā¤•āĨā¤ļ⤍ ⤕āĨ€ ⤜⤰āĨ‚⤰⤤ ā¤šāĨ‹ā¤¤āĨ€ ā¤šāĨˆāĨ¤ ā¤‰ā¤¨ā¤ŽāĨ‡ā¤‚ ā¤†ā¤Žā¤¤āĨŒā¤° ā¤Ē⤰ ā¤•ā¤ˆ ā¤¸ā¤žā¤Žā¤žā¤¨āĨā¤¯-⤉ā¤ĻāĨā¤ĻāĨ‡ā¤ļāĨā¤¯ ⤇⤍ā¤ĒāĨā¤Ÿ/ā¤†ā¤‰ā¤Ÿā¤ĒāĨā¤Ÿ (GPIO) ā¤Ēā¤ŋ⤍ ā¤šāĨ‹ā¤¤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ⤇⤍ ā¤Ēā¤ŋ⤍āĨ‹ā¤‚ ⤕āĨ‹ ⤏āĨ‰ā¤ĢāĨā¤Ÿā¤ĩāĨ‡ā¤¯ā¤° ā¤ŽāĨ‡ā¤‚ ⤇⤍ā¤ĒāĨā¤Ÿ ⤕āĨ‡ ⤰āĨ‚ā¤Ē ā¤ŽāĨ‡ā¤‚ ⤕āĨ‰ā¤¨āĨā¤Ģā¤ŧā¤ŋ⤗⤰ ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤ž ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆ (⤅⤰āĨā¤Ĩā¤žā¤¤ ā¤ĩāĨ‡ ā¤ā¤• ⤏⤂⤕āĨ‡ā¤¤ ā¤ĒāĨā¤°ā¤žā¤ĒāĨā¤¤ ⤕⤰⤤āĨ‡ ā¤šāĨˆā¤‚), ā¤¯ā¤ž ā¤†ā¤‰ā¤Ÿā¤ĒāĨā¤Ÿ (ā¤ĩāĨ‡ ā¤ā¤• ⤏⤂⤕āĨ‡ā¤¤ ⤭āĨ‡ā¤œā¤¤āĨ‡ ā¤šāĨˆā¤‚)āĨ¤ + +ī¸đŸ§ âŦ…ī¸ā¤¸āĨ‡ā¤‚⤏⤰ ⤏āĨ‡ ā¤ŽāĨ‚⤞āĨā¤¯āĨ‹ā¤‚ ⤕āĨ‹ ā¤Ēā¤ĸā¤ŧ⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤇⤍ā¤ĒāĨā¤Ÿ ā¤Ēā¤ŋ⤍ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆ + +ī¸đŸ§ âžĄī¸ā¤†ā¤‰ā¤Ÿā¤ĒāĨā¤Ÿ ā¤Ēā¤ŋ⤍ ā¤ā¤•āĨā¤šāĨā¤ā¤Ÿā¤°āĨā¤¸ ⤕āĨ‹ ⤍ā¤ŋ⤰āĨā¤ĻāĨ‡ā¤ļ ⤭āĨ‡ā¤œā¤¤āĨ‡ ā¤šāĨˆā¤‚ + +âœ…ā¤†ā¤Ē ⤇⤏⤕āĨ‡ ā¤Ŧā¤žā¤°āĨ‡ ā¤ŽāĨ‡ā¤‚ ⤅⤗⤞āĨ‡ ā¤Ēā¤žā¤  ā¤ŽāĨ‡ā¤‚ ⤔⤰ ā¤œā¤žā¤¨āĨ‡ā¤‚⤗āĨ‡āĨ¤ + +#### ā¤Ÿā¤žā¤¸āĨā¤• + +ā¤ĩā¤žā¤ˆā¤“ ⤟⤰āĨā¤Žā¤ŋ⤍⤞ ⤕āĨ€ ā¤œā¤žā¤‚ā¤š ⤕⤰āĨ‡ā¤‚āĨ¤ + +⤝ā¤Ļā¤ŋ ⤆ā¤Ē ⤇⤍ ā¤Ēā¤žā¤ āĨ‹ā¤‚ ⤕āĨ‡ ⤞ā¤ŋā¤ Wio Terminal ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰ ā¤°ā¤šāĨ‡ ā¤šāĨˆā¤‚, ⤤āĨ‹ GPIO ā¤Ēā¤ŋ⤍ ⤖āĨ‹ā¤œāĨ‡ā¤‚āĨ¤ ā¤¯ā¤š ā¤œā¤žā¤¨ā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤕ā¤ŋ ⤕āĨŒā¤¨ ⤏āĨ‡ ā¤Ēā¤ŋ⤍ ⤕āĨŒā¤¨ ⤏āĨ‡ ā¤šāĨˆā¤‚, [Wio Terminal ⤉⤤āĨā¤Ēā¤žā¤Ļ ā¤ĒāĨƒā¤ˇāĨā¤ ](https://www.seeedstudio.com/Wio-Terminal-p-4509.html) ⤕āĨ‡ *ā¤Ēā¤ŋā¤¨ā¤†ā¤‰ā¤Ÿ ā¤Ąā¤žā¤¯ā¤—āĨā¤°ā¤žā¤Ž* ⤅⤍āĨā¤­ā¤žā¤— ⤖āĨ‹ā¤œāĨ‡ā¤‚āĨ¤ Wio Terminal ā¤ā¤• ⤏āĨā¤Ÿā¤ŋ⤕⤰ ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ā¤†ā¤¤ā¤ž ā¤šāĨˆ ⤜ā¤ŋ⤏āĨ‡ ⤆ā¤Ē ā¤Ēā¤ŋ⤍ ⤍⤂ā¤Ŧ⤰ ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ā¤ĒāĨ€ā¤›āĨ‡ ⤕āĨ€ ⤤⤰ā¤Ģ ā¤Žā¤žā¤‰ā¤‚ā¤Ÿ ⤕⤰ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚, ⤇⤏⤞ā¤ŋā¤ ⤇⤏āĨ‡ ⤅⤭āĨ€ ⤜āĨ‹ā¤Ąā¤ŧāĨ‡ā¤‚ ⤝ā¤Ļā¤ŋ ⤆ā¤Ē⤍āĨ‡ ā¤Ēā¤šā¤˛āĨ‡ ⤏āĨ‡ ā¤¨ā¤šāĨ€ā¤‚ ⤕ā¤ŋā¤¯ā¤ž ā¤šāĨˆāĨ¤ + +### ⤭āĨŒā¤¤ā¤ŋ⤕ ā¤Žā¤žā¤Ē + +ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ā¤†ā¤Žā¤¤āĨŒā¤° ā¤Ē⤰ ā¤†ā¤•ā¤žā¤° ā¤ŽāĨ‡ā¤‚ ⤛āĨ‹ā¤ŸāĨ‡ ā¤šāĨ‹ā¤¤āĨ‡ ā¤šāĨˆā¤‚, ⤏ā¤Ŧ⤏āĨ‡ ⤛āĨ‹ā¤ŸāĨ‡ ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ, [ā¤Ģā¤ŧāĨā¤°āĨ€ā¤¸āĨā¤•āĨ‡ā¤˛ ā¤•ā¤žā¤‡ā¤¨āĨ‡ā¤Ÿā¤ŋ⤏ KL03 MCU ⤗āĨ‹ā¤˛āĨā¤Ģā¤ŧ ā¤ŦāĨ‰ā¤˛ ⤕āĨ‡ ā¤Ąā¤ŋ⤂ā¤Ē⤞ ā¤ŽāĨ‡ā¤‚ ā¤Ģā¤ŧā¤ŋ⤟ ā¤šāĨ‹ā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤Ē⤰āĨā¤¯ā¤žā¤ĒāĨā¤¤ ⤛āĨ‹ā¤Ÿā¤ž ā¤šāĨ‹ā¤¤ā¤ž ā¤šāĨˆ](https://www.edn.com/tiny-arm-cortex-m0-based-mcu-shrinks-package/)āĨ¤ ā¤Ŧ⤏ ā¤ā¤• ā¤ĒāĨ€ā¤¸āĨ€ ā¤ŽāĨ‡ā¤‚ ⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ 40 ā¤Žā¤ŋā¤ŽāĨ€ x 40 ā¤Žā¤ŋā¤ŽāĨ€ ā¤Žā¤žā¤Ē ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆ, ⤔⤰ ā¤‡ā¤¸ā¤ŽāĨ‡ā¤‚ ā¤šāĨ€ā¤Ÿ ⤏ā¤ŋ⤂⤕ ⤔⤰ ā¤Ē⤂⤖āĨ‡ ā¤ļā¤žā¤Žā¤ŋ⤞ ā¤¨ā¤šāĨ€ā¤‚ ā¤šāĨˆā¤‚ ⤜āĨ‹ ā¤¯ā¤š ⤏āĨā¤¨ā¤ŋā¤ļāĨā¤šā¤ŋ⤤ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤆ā¤ĩā¤ļāĨā¤¯ā¤• ā¤šāĨˆā¤‚ ⤕ā¤ŋ ⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ā¤Ŧā¤ŋā¤¨ā¤ž ⤓ā¤ĩā¤°ā¤šāĨ€ā¤Ÿā¤ŋ⤂⤗ ⤕āĨ‡ ⤕āĨā¤› ⤏āĨ‡ā¤•ā¤‚ā¤Ą ⤏āĨ‡ ⤅⤧ā¤ŋ⤕ ā¤¸ā¤Žā¤¯ ⤤⤕ ⤚⤞ ⤏⤕āĨ‡, ā¤ā¤• ā¤ĒāĨ‚⤰āĨā¤Ŗ ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ⤏āĨ‡ ā¤•ā¤žā¤ĢāĨ€ ā¤Ŧā¤Ąā¤ŧā¤žāĨ¤ ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤°, ⤕āĨ‡ā¤¸, ⤏āĨā¤•āĨā¤°āĨ€ā¤¨, ⤔⤰ ⤕⤍āĨ‡ā¤•āĨā¤ļ⤍ ⤔⤰ ā¤˜ā¤Ÿā¤•āĨ‹ā¤‚ ⤕āĨ€ ā¤ā¤• ā¤ļāĨā¤°āĨƒā¤‚ā¤–ā¤˛ā¤ž ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ Wio ⤟⤰āĨā¤Žā¤ŋ⤍⤞ ā¤ĄāĨ‡ā¤ĩ⤞ā¤Ē⤰ ⤕ā¤ŋ⤟ ā¤ā¤• ⤖āĨā¤˛ā¤ž ā¤šāĨā¤† Intel i9 CPU ⤏āĨ‡ ā¤Ŧā¤šāĨā¤¤ ā¤Ŧā¤Ąā¤ŧā¤ž ā¤¨ā¤šāĨ€ā¤‚ ā¤šāĨˆ, ⤔⤰ ā¤ā¤• ā¤šāĨ€ā¤Ÿ ⤏ā¤ŋ⤂⤕ ⤔⤰ ā¤Ē⤂⤖āĨ‡ ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ CPU ⤏āĨ‡ ā¤•ā¤žā¤ĢāĨ€ ⤛āĨ‹ā¤Ÿā¤ž ā¤šāĨˆ! + +| ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ | ā¤†ā¤•ā¤žā¤° | +| ----------------------------- | --------------------- | +| ā¤ĢāĨā¤°āĨ€ā¤¸āĨā¤•āĨ‡ā¤˛ ā¤•ā¤žā¤‡ā¤¨āĨ‡ā¤Ÿā¤ŋ⤏ KL03 | 1.6 ā¤Žā¤ŋā¤ŽāĨ€ x 2 ā¤Žā¤ŋā¤ŽāĨ€ x 1 ā¤Žā¤ŋā¤ŽāĨ€ | +| ā¤ĩā¤žā¤ˆā¤“ ⤟⤰āĨā¤Žā¤ŋ⤍⤞ | 72ā¤Žā¤ŋā¤ŽāĨ€ x 57ā¤Žā¤ŋā¤ŽāĨ€ x 12ā¤Žā¤ŋā¤ŽāĨ€ | +| ā¤‡ā¤‚ā¤ŸāĨ‡ā¤˛ i9 ⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚, ā¤šāĨ€ā¤Ÿ ⤏ā¤ŋ⤂⤕ ⤔⤰ ā¤Ēā¤‚ā¤–ā¤ž | 136 ā¤Žā¤ŋā¤ŽāĨ€ x 145 ā¤Žā¤ŋā¤ŽāĨ€ x 103 ā¤Žā¤ŋā¤ŽāĨ€ | + +### ā¤ĢāĨā¤°āĨ‡ā¤Žā¤ĩ⤰āĨā¤• ⤔⤰ ⤑ā¤Ē⤰āĨ‡ā¤Ÿā¤ŋ⤂⤗ ⤏ā¤ŋ⤏āĨā¤Ÿā¤Ž + +⤉⤍⤕āĨ€ ā¤•ā¤Ž ⤗⤤ā¤ŋ ⤔⤰ ⤏āĨā¤ŽāĨƒā¤¤ā¤ŋ ā¤†ā¤•ā¤žā¤° ⤕āĨ‡ ā¤•ā¤žā¤°ā¤Ŗ, ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ā¤ļā¤ŦāĨā¤Ļ ⤕āĨ‡ ā¤ĄāĨ‡ā¤¸āĨā¤•ā¤ŸāĨ‰ā¤Ē ⤅⤰āĨā¤Ĩ ā¤ŽāĨ‡ā¤‚ ā¤ā¤• ⤑ā¤Ē⤰āĨ‡ā¤Ÿā¤ŋ⤂⤗ ⤏ā¤ŋ⤏āĨā¤Ÿā¤Ž (OS) ā¤¨ā¤šāĨ€ā¤‚ ā¤šā¤˛ā¤žā¤¤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ⤑ā¤Ē⤰āĨ‡ā¤Ÿā¤ŋ⤂⤗ ⤏ā¤ŋ⤏āĨā¤Ÿā¤Ž ⤜āĨ‹ ⤆ā¤Ē⤕āĨ‡ ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤° ⤕āĨ‹ ā¤šā¤˛ā¤žā¤¤ā¤ž ā¤šāĨˆ (Windows, Linux, ā¤¯ā¤ž macOS) ⤕āĨ‹ ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤ĒāĨ‚⤰āĨ€ ā¤¤ā¤°ā¤š ⤏āĨ‡ ā¤…ā¤¨ā¤žā¤ĩā¤ļāĨā¤¯ā¤• ā¤•ā¤žā¤°āĨā¤¯āĨ‹ā¤‚ ⤕āĨ‹ ā¤šā¤˛ā¤žā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤Ŧā¤šāĨā¤¤ ⤅⤧ā¤ŋ⤕ ā¤ŽāĨ‡ā¤ŽāĨ‹ā¤°āĨ€ ⤔⤰ ā¤ĒāĨā¤°āĨ‹ā¤¸āĨ‡ā¤¸ā¤ŋ⤂⤗ ā¤Ēā¤žā¤ĩ⤰ ⤕āĨ€ ⤆ā¤ĩā¤ļāĨā¤¯ā¤•ā¤¤ā¤ž ā¤šāĨ‹ā¤¤āĨ€ ā¤šāĨˆāĨ¤ ā¤¯ā¤žā¤Ļ ⤰⤖āĨ‡ā¤‚ ⤕ā¤ŋ ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤°āĨā¤¸ ⤕āĨ‹ ā¤†ā¤Žā¤¤āĨŒā¤° ā¤Ē⤰ ā¤ā¤• ā¤¯ā¤ž ⤅⤧ā¤ŋ⤕ ā¤ĩā¤ŋā¤ļā¤ŋ⤎āĨā¤Ÿ ā¤•ā¤žā¤°āĨā¤¯āĨ‹ā¤‚ ⤕āĨ‹ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Ž ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆ, ā¤ĒāĨ€ā¤¸āĨ€ ā¤¯ā¤ž ā¤ŽāĨˆā¤• ⤜āĨˆā¤¸āĨ‡ ā¤¸ā¤žā¤Žā¤žā¤¨āĨā¤¯-⤉ā¤ĻāĨā¤ĻāĨ‡ā¤ļāĨā¤¯ ā¤ĩā¤žā¤˛āĨ‡ ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤° ⤕āĨ‡ ā¤ĩā¤ŋā¤Ē⤰āĨ€ā¤¤, ⤜ā¤ŋ⤏āĨ‡ ⤉ā¤Ē⤝āĨ‹ā¤—⤕⤰āĨā¤¤ā¤ž ā¤‡ā¤‚ā¤Ÿā¤°ā¤Ģā¤ŧāĨ‡ā¤¸ ā¤•ā¤ž ā¤¸ā¤Žā¤°āĨā¤Ĩ⤍ ⤕⤰⤍āĨ‡, ⤏⤂⤗āĨ€ā¤¤ ā¤¯ā¤ž ā¤Ģā¤ŋ⤞āĨā¤ŽāĨ‡ā¤‚ ā¤šā¤˛ā¤žā¤¨āĨ‡, ā¤Ļ⤏āĨā¤¤ā¤žā¤ĩāĨ‡ā¤œā¤ŧ ā¤¯ā¤ž ⤕āĨ‹ā¤Ą ⤞ā¤ŋ⤖⤍āĨ‡, ⤗āĨ‡ā¤Ž ⤖āĨ‡ā¤˛ā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤉ā¤Ē⤕⤰⤪ ā¤ĒāĨā¤°ā¤Ļā¤žā¤¨ ⤕⤰⤍āĨ‡ ⤕āĨ€ ⤆ā¤ĩā¤ļāĨā¤¯ā¤•ā¤¤ā¤ž ā¤šāĨ‹ā¤¤āĨ€ ā¤šāĨˆ, ā¤¯ā¤ž ā¤‡ā¤‚ā¤Ÿā¤°ā¤¨āĨ‡ā¤Ÿ ā¤ŦāĨā¤°ā¤žā¤‰ā¤œā¤ŧ ⤕⤰āĨ‡ā¤‚āĨ¤ + +ā¤“ā¤ā¤¸ ⤕āĨ‡ ā¤Ŧā¤ŋā¤¨ā¤ž ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Ž ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤆ā¤Ē⤕āĨ‹ ⤕āĨā¤› ⤟āĨ‚⤞ā¤ŋ⤂⤗ ⤕āĨ€ ⤆ā¤ĩā¤ļāĨā¤¯ā¤•ā¤¤ā¤ž ā¤šāĨ‹ā¤¤āĨ€ ā¤šāĨˆ ā¤¤ā¤žā¤•ā¤ŋ ⤆ā¤Ē ⤅ā¤Ēā¤¨ā¤ž ⤕āĨ‹ā¤Ą ⤇⤏ ā¤¤ā¤°ā¤š ⤏āĨ‡ ā¤Ŧā¤¨ā¤ž ⤏⤕āĨ‡ā¤‚ ⤕ā¤ŋ ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ⤚⤞ ⤏⤕āĨ‡, ā¤ā¤ĒāĨ€ā¤†ā¤ˆ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤕āĨ‡ ⤜āĨ‹ ⤕ā¤ŋ⤏āĨ€ ⤭āĨ€ ā¤Ŧā¤žā¤šāĨā¤¯ ⤉ā¤Ē⤕⤰⤪āĨ‹ā¤‚ ⤏āĨ‡ ā¤Ŧā¤žā¤¤ ⤕⤰ ⤏⤕āĨ‡āĨ¤ ā¤ĒāĨā¤°ā¤¤āĨā¤¯āĨ‡ā¤• ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ⤅⤞⤗ ā¤šāĨ‹ā¤¤ā¤ž ā¤šāĨˆ, ⤇⤏⤞ā¤ŋā¤ ⤍ā¤ŋ⤰āĨā¤Žā¤žā¤¤ā¤ž ā¤¸ā¤žā¤Žā¤žā¤¨āĨā¤¯ ⤰āĨ‚ā¤Ē ⤏āĨ‡ ā¤Žā¤žā¤¨ā¤• ā¤ĸā¤žā¤‚ā¤šāĨ‡ ā¤•ā¤ž ā¤¸ā¤Žā¤°āĨā¤Ĩ⤍ ⤕⤰⤤āĨ‡ ā¤šāĨˆā¤‚ ⤜āĨ‹ ⤆ā¤Ē⤕āĨ‹ ⤅ā¤Ēā¤¨ā¤ž ⤕āĨ‹ā¤Ą ā¤Ŧā¤¨ā¤žā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤ā¤• ā¤Žā¤žā¤¨ā¤• '⤍āĨā¤¸āĨā¤–ā¤ž' ā¤•ā¤ž ā¤Ēā¤žā¤˛ā¤¨ ⤕⤰⤍āĨ‡ ⤕āĨ€ ⤅⤍āĨā¤Žā¤¤ā¤ŋ ā¤ĻāĨ‡ā¤¤āĨ‡ ā¤šāĨˆā¤‚ ⤔⤰ ⤇⤏āĨ‡ ⤕ā¤ŋ⤏āĨ€ ⤭āĨ€ ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ā¤Ē⤰ ā¤šā¤˛ā¤žā¤¤āĨ‡ ā¤šāĨˆā¤‚ ⤜āĨ‹ ⤉⤏ ā¤ĸā¤žā¤‚ā¤šāĨ‡ ā¤•ā¤ž ā¤¸ā¤Žā¤°āĨā¤Ĩ⤍ ā¤•ā¤°ā¤¤ā¤ž ā¤šāĨˆāĨ¤ + +⤆ā¤Ē ā¤“ā¤ā¤¸ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤕āĨ‡ ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Ž ⤕⤰ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚ - ⤜ā¤ŋ⤏āĨ‡ ⤅⤕āĨā¤¸ā¤° ⤰āĨ€ā¤¯ā¤˛-ā¤Ÿā¤žā¤‡ā¤Ž ⤑ā¤Ē⤰āĨ‡ā¤Ÿā¤ŋ⤂⤗ ⤏ā¤ŋ⤏āĨā¤Ÿā¤Ž (ā¤†ā¤°ā¤ŸāĨ€ā¤“ā¤ā¤¸) ⤕āĨ‡ ⤰āĨ‚ā¤Ē ā¤ŽāĨ‡ā¤‚ ⤏⤂ā¤Ļ⤰āĨā¤­ā¤ŋ⤤ ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆ, ⤕āĨā¤¯āĨ‹ā¤‚⤕ā¤ŋ ⤇⤍āĨā¤šāĨ‡ā¤‚ ⤰āĨ€ā¤¯ā¤˛-ā¤Ÿā¤žā¤‡ā¤Ž ā¤ŽāĨ‡ā¤‚ ā¤Ŧā¤žā¤šāĨā¤¯ ⤉ā¤Ē⤕⤰⤪āĨ‹ā¤‚ ⤏āĨ‡ ā¤ĄāĨ‡ā¤Ÿā¤ž ⤭āĨ‡ā¤œā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤Ąā¤ŋ⤜ā¤ŧā¤žā¤‡ā¤¨ ⤕ā¤ŋā¤¯ā¤ž ā¤—ā¤¯ā¤ž ā¤šāĨˆāĨ¤ ⤝āĨ‡ ⤑ā¤Ē⤰āĨ‡ā¤Ÿā¤ŋ⤂⤗ ⤏ā¤ŋ⤏āĨā¤Ÿā¤Ž ā¤Ŧā¤šāĨā¤¤ ā¤šā¤˛āĨā¤•āĨ‡ ā¤šāĨ‹ā¤¤āĨ‡ ā¤šāĨˆā¤‚ ⤔⤰ ⤇⤏ ā¤¤ā¤°ā¤š ⤕āĨ€ ⤏āĨā¤ĩā¤ŋā¤§ā¤žā¤ā¤ ā¤ĒāĨā¤°ā¤Ļā¤žā¤¨ ⤕⤰⤤āĨ‡ ā¤šāĨˆā¤‚: + +* ā¤Žā¤˛āĨā¤ŸāĨ€-ā¤ĨāĨā¤°āĨ‡ā¤Ąā¤ŋ⤂⤗, ⤆ā¤Ē⤕āĨ‡ ⤕āĨ‹ā¤Ą ⤕āĨ‹ ā¤ā¤• ā¤šāĨ€ ā¤¸ā¤Žā¤¯ ā¤ŽāĨ‡ā¤‚ ⤕āĨ‹ā¤Ą ⤕āĨ‡ ā¤ā¤• ⤏āĨ‡ ⤅⤧ā¤ŋ⤕ ā¤ŦāĨā¤˛āĨ‰ā¤• ā¤šā¤˛ā¤žā¤¨āĨ‡ ⤕āĨ€ ⤅⤍āĨā¤Žā¤¤ā¤ŋ ā¤ĻāĨ‡ā¤¤ā¤ž ā¤šāĨˆ, ā¤¯ā¤ž ⤤āĨ‹ ā¤•ā¤ˆ ⤕āĨ‹ā¤° ā¤Ē⤰ ā¤¯ā¤ž ā¤ā¤• ⤕āĨ‹ā¤° ⤕āĨ‹ ā¤šā¤žā¤˛āĨ‚ ⤕⤰⤕āĨ‡ +* ā¤‡ā¤‚ā¤Ÿā¤°ā¤¨āĨ‡ā¤Ÿ ā¤Ē⤰ ⤏āĨā¤°ā¤•āĨā¤ˇā¤ŋ⤤ ⤰āĨ‚ā¤Ē ⤏āĨ‡ ā¤¸ā¤‚ā¤šā¤žā¤° ⤕⤰⤍āĨ‡ ⤕āĨ€ ⤅⤍āĨā¤Žā¤¤ā¤ŋ ā¤ĻāĨ‡ā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤍āĨ‡ā¤Ÿā¤ĩ⤰āĨā¤•ā¤ŋ⤂⤗ +* ⤏āĨā¤•āĨā¤°āĨ€ā¤¨ ā¤ĩā¤žā¤˛āĨ‡ ⤉ā¤Ē⤕⤰⤪āĨ‹ā¤‚ ā¤Ē⤰ ⤝āĨ‚ā¤œā¤° ā¤‡ā¤‚ā¤Ÿā¤°ā¤ĢāĨ‡ā¤¸ (⤝āĨ‚ā¤†ā¤ˆ) ⤕āĨ‡ ⤍ā¤ŋ⤰āĨā¤Žā¤žā¤Ŗ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤗āĨā¤°ā¤žā¤Ģā¤ŋ⤕⤞ ⤝āĨ‚ā¤œā¤° ā¤‡ā¤‚ā¤Ÿā¤°ā¤ĢāĨ‡ā¤¸ (⤜āĨ€ā¤¯āĨ‚ā¤†ā¤ˆ) ā¤˜ā¤Ÿā¤•āĨ¤ + +✅ ⤕āĨā¤› ⤅⤞⤗ RTOS ⤕āĨ‡ ā¤Ŧā¤žā¤°āĨ‡ ā¤ŽāĨ‡ā¤‚ ā¤Ēā¤ĸā¤ŧāĨ‡ā¤‚: [Azure RTOS](https://azure.microsoft.com/services/rtos/?WT.mc_id=academic-17441-jabenn), [FreeRTOS](https://www.freertos.org), [⤜ā¤ŧāĨ‡ā¤Ģā¤ŋ⤰](https://www.zephyrproject.org) + +#### ⤅⤰āĨā¤Ąā¤ŋ⤍āĨ‹ + +![Arduino logo](https://github.com/microsoft/IoT-For-Beginners/raw/main/images/arduino-logo.svg) + +[Arduino](https://www.arduino.cc) ā¤ļā¤žā¤¯ā¤Ļ ⤏ā¤Ŧ⤏āĨ‡ ⤞āĨ‹ā¤•ā¤ĒāĨā¤°ā¤ŋ⤝ ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ā¤ĢāĨā¤°āĨ‡ā¤Žā¤ĩ⤰āĨā¤• ā¤šāĨˆ, ā¤–ā¤žā¤¸ā¤•ā¤° ā¤›ā¤žā¤¤āĨā¤°āĨ‹ā¤‚, ā¤ļāĨŒā¤•ā¤ŧāĨ€ā¤¨ ⤞āĨ‹ā¤—āĨ‹ā¤‚ ⤔⤰ ⤍ā¤ŋ⤰āĨā¤Žā¤žā¤¤ā¤žā¤“⤂ ⤕āĨ‡ ā¤ŦāĨ€ā¤šāĨ¤ Arduino ā¤ā¤• ⤓ā¤Ē⤍-⤏āĨ‹ā¤°āĨā¤¸ ⤇⤞āĨ‡ā¤•āĨā¤ŸāĨā¤°āĨ‰ā¤¨ā¤ŋ⤕āĨā¤¸ ā¤ĒāĨā¤˛āĨ‡ā¤Ÿā¤ĢāĨ‰ā¤°āĨā¤Ž ā¤šāĨˆ ⤜āĨ‹ ⤏āĨ‰ā¤ĢāĨā¤Ÿā¤ĩāĨ‡ā¤¯ā¤° ⤔⤰ ā¤šā¤žā¤°āĨā¤Ąā¤ĩāĨ‡ā¤¯ā¤° ⤕āĨ‹ ā¤Žā¤ŋā¤˛ā¤žā¤¤ā¤ž ā¤šāĨˆāĨ¤ ⤆ā¤Ē Arduino ⤏āĨ‡ ⤏āĨā¤ĩ⤝⤂ ā¤¯ā¤ž ⤅⤍āĨā¤¯ ⤍ā¤ŋ⤰āĨā¤Žā¤žā¤¤ā¤žā¤“⤂ ⤏āĨ‡ Arduino ⤏⤂⤗⤤ ā¤ŦāĨ‹ā¤°āĨā¤Ą ⤖⤰āĨ€ā¤Ļ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚, ā¤Ģā¤ŋ⤰ Arduino ā¤ĢāĨā¤°āĨ‡ā¤Žā¤ĩ⤰āĨā¤• ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤕āĨ‡ ⤕āĨ‹ā¤Ą ⤕⤰ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ + +Arduino ā¤ŦāĨ‹ā¤°āĨā¤ĄāĨ‹ā¤‚ ⤕āĨ‹ C ā¤¯ā¤ž C++ ā¤ŽāĨ‡ā¤‚ ⤕āĨ‹ā¤Ą ⤕ā¤ŋā¤¯ā¤ž ā¤—ā¤¯ā¤ž ā¤šāĨˆāĨ¤ C ā¤¯ā¤ž C++ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤍āĨ‡ ⤏āĨ‡ ⤆ā¤Ē⤕āĨ‡ ⤕āĨ‹ā¤Ą ⤕āĨ‹ ā¤Ŧā¤šāĨā¤¤ ⤛āĨ‹ā¤Ÿā¤ž ⤏⤂⤕⤞ā¤ŋ⤤ ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤ž ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆ ⤔⤰ ⤤āĨ‡ā¤œāĨ€ ⤏āĨ‡ ā¤šā¤˛ā¤žā¤¯ā¤ž ā¤œā¤ž ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆ, ā¤ā¤• ⤏āĨ€ā¤Žā¤ŋ⤤ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤜āĨˆā¤¸āĨ‡ ⤕ā¤ŋ ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ā¤Ē⤰ ⤕āĨā¤› ⤆ā¤ĩā¤ļāĨā¤¯ā¤• ā¤šāĨˆāĨ¤ ā¤ā¤• Arduino ā¤ā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤ļ⤍ ⤕āĨ‡ ā¤ŽāĨ‚⤞ ⤕āĨ‹ ā¤ā¤• ⤏āĨā¤•āĨ‡ā¤š ⤕āĨ‡ ⤰āĨ‚ā¤Ē ā¤ŽāĨ‡ā¤‚ ⤏⤂ā¤Ļ⤰āĨā¤­ā¤ŋ⤤ ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆ ⤔⤰ 2 ā¤•ā¤žā¤°āĨā¤¯āĨ‹ā¤‚ ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ C/C++ ⤕āĨ‹ā¤Ą ā¤šāĨˆ - `setup` ⤔⤰ `loop`āĨ¤ ⤜ā¤Ŧ ā¤ŦāĨ‹ā¤°āĨā¤Ą ā¤ļāĨā¤°āĨ‚ ā¤šāĨ‹ā¤¤ā¤ž ā¤šāĨˆ, ⤤āĨ‹ Arduino ā¤ĢāĨā¤°āĨ‡ā¤Žā¤ĩ⤰āĨā¤• ⤕āĨ‹ā¤Ą ā¤ā¤• ā¤Ŧā¤žā¤° `setup` ā¤Ģā¤ŧ⤂⤕āĨā¤ļ⤍ ā¤šā¤˛ā¤žā¤ā¤—ā¤ž, ā¤Ģā¤ŋ⤰ ā¤¯ā¤š `loop` ā¤Ģā¤ŧ⤂⤕āĨā¤ļ⤍ ⤕āĨ‹ ā¤Ŧā¤žā¤°-ā¤Ŧā¤žā¤° ā¤šā¤˛ā¤žā¤ā¤—ā¤ž, ⤇⤏āĨ‡ ⤤ā¤Ŧ ⤤⤕ ā¤˛ā¤—ā¤žā¤¤ā¤žā¤° ā¤šā¤˛ā¤žā¤ā¤—ā¤ž ⤜ā¤Ŧ ⤤⤕ ⤕ā¤ŋ ā¤Ŧā¤ŋ⤜⤞āĨ€ ā¤Ŧ⤂ā¤Ļ ⤍ ā¤šāĨ‹ ā¤œā¤žā¤āĨ¤ + +⤆ā¤Ē ⤅ā¤Ēā¤¨ā¤ž setup ⤕āĨ‹ā¤Ą `setup` ā¤Ģā¤ŧ⤂⤕āĨā¤ļ⤍ ā¤ŽāĨ‡ā¤‚ ⤞ā¤ŋ⤖āĨ‡ā¤‚⤗āĨ‡, ⤜āĨˆā¤¸āĨ‡ ⤕ā¤ŋ ā¤ĩā¤žā¤ˆā¤Ģā¤žā¤ˆ ⤔⤰ ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ⤏āĨ‡ā¤ĩā¤žā¤“ā¤‚ ⤏āĨ‡ ⤕⤍āĨ‡ā¤•āĨā¤Ÿ ā¤•ā¤°ā¤¨ā¤ž ā¤¯ā¤ž ⤇⤍ā¤ĒāĨā¤Ÿ ⤔⤰ ā¤†ā¤‰ā¤Ÿā¤ĒāĨā¤Ÿ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤Ēā¤ŋ⤍ ⤇⤍ā¤ŋā¤ļā¤ŋā¤¯ā¤˛ā¤žā¤‡ā¤œā¤ŧ ā¤•ā¤°ā¤¨ā¤žāĨ¤ ⤤ā¤Ŧ ⤆ā¤Ē⤕āĨ‡ ⤞āĨ‚ā¤Ē ⤕āĨ‹ā¤Ą ā¤ŽāĨ‡ā¤‚ ā¤ĒāĨā¤°āĨ‹ā¤¸āĨ‡ā¤¸ā¤ŋ⤂⤗ ⤕āĨ‹ā¤Ą ā¤šāĨ‹ā¤—ā¤ž, ⤜āĨˆā¤¸āĨ‡ ⤏āĨ‡ā¤‚⤏⤰ ⤏āĨ‡ ā¤Ēā¤ĸā¤ŧā¤¨ā¤ž ⤔⤰ ā¤Žā¤žā¤¨ ⤕āĨ‹ ⤕āĨā¤˛ā¤žā¤‰ā¤Ą ā¤Ē⤰ ⤭āĨ‡ā¤œā¤¨ā¤žāĨ¤ ⤆ā¤Ē ā¤¸ā¤žā¤Žā¤žā¤¨āĨā¤¯ ⤰āĨ‚ā¤Ē ⤏āĨ‡ ā¤ĒāĨā¤°ā¤¤āĨā¤¯āĨ‡ā¤• ⤞āĨ‚ā¤Ē ā¤ŽāĨ‡ā¤‚ ā¤ĻāĨ‡ā¤°āĨ€ ā¤ļā¤žā¤Žā¤ŋ⤞ ⤕⤰āĨ‡ā¤‚⤗āĨ‡, ⤉ā¤Ļā¤žā¤šā¤°ā¤Ŗ ⤕āĨ‡ ⤞ā¤ŋā¤, ⤝ā¤Ļā¤ŋ ⤆ā¤Ē ā¤šā¤žā¤šā¤¤āĨ‡ ā¤šāĨˆā¤‚ ⤕ā¤ŋ ā¤šā¤° 10 ⤏āĨ‡ā¤•ā¤‚ā¤Ą ā¤ŽāĨ‡ā¤‚ ⤕āĨ‡ā¤ĩ⤞ ⤏āĨ‡ā¤‚⤏⤰ ā¤ĄāĨ‡ā¤Ÿā¤ž ⤭āĨ‡ā¤œā¤ž ā¤œā¤žā¤ ⤤āĨ‹ ⤆ā¤Ē ⤞āĨ‚ā¤Ē ⤕āĨ‡ ⤅⤂⤤ ā¤ŽāĨ‡ā¤‚ 10 ⤏āĨ‡ā¤•ā¤‚ā¤Ą ⤕āĨ€ ā¤ĻāĨ‡ā¤°āĨ€ ⤜āĨ‹ā¤Ąā¤ŧ ā¤ĻāĨ‡ā¤‚⤗āĨ‡ ā¤¤ā¤žā¤•ā¤ŋ ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ⤏āĨ‹ ⤏⤕āĨ‡, ā¤Ŧā¤ŋ⤜⤞āĨ€ ā¤Ŧā¤šā¤ž ⤏⤕āĨ‡, ā¤Ģā¤ŋ⤰ 10 ⤏āĨ‡ā¤•ā¤‚ā¤Ą ā¤Ŧā¤žā¤Ļ ⤜⤰āĨ‚⤰⤤ ā¤Ēā¤Ąā¤ŧ⤍āĨ‡ ā¤Ē⤰ ⤞āĨ‚ā¤Ē ⤕āĨ‹ ā¤Ģā¤ŋ⤰ ⤏āĨ‡ ā¤šā¤˛ā¤ž ⤏⤕āĨ‡ā¤‚āĨ¤ + +![ā¤Ēā¤šā¤˛āĨ‡ ā¤ā¤• Arduino ⤏āĨā¤•āĨ‡ā¤š ⤰⤍ā¤ŋ⤂⤗ ⤏āĨ‡ā¤Ÿā¤…ā¤Ē, ā¤Ģā¤ŋ⤰ ā¤Ŧā¤žā¤°-ā¤Ŧā¤žā¤° ⤞āĨ‚ā¤Ē ā¤šā¤˛ā¤žā¤¨ā¤ž](https://github.com/microsoft/IoT-For-Beginners/raw/main/images/arduino-sketch.png) + +âœ…ā¤‡ā¤¸ ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Ž ⤕āĨ‡ ⤆⤰āĨā¤•ā¤ŋ⤟āĨ‡ā¤•āĨā¤šā¤° ⤕āĨ‹ *⤇ā¤ĩāĨ‡ā¤‚ā¤Ÿ ⤞āĨ‚ā¤Ē* ā¤¯ā¤ž *ā¤ŽāĨˆā¤¸āĨ‡ā¤œ ⤞āĨ‚ā¤Ē* ⤕āĨ‡ ⤰āĨ‚ā¤Ē ā¤ŽāĨ‡ā¤‚ ā¤œā¤žā¤¨ā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆāĨ¤ ā¤•ā¤ˆ ā¤ā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤ļ⤍ ā¤šāĨā¤Ą ⤕āĨ‡ ā¤¤ā¤šā¤¤ ā¤‡ā¤¸ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤤āĨ‡ ā¤šāĨˆā¤‚ ⤔⤰ ⤅⤧ā¤ŋā¤•ā¤žā¤‚ā¤ļ ā¤ĄāĨ‡ā¤¸āĨā¤•ā¤ŸāĨ‰ā¤Ē ā¤ā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤ļ⤍ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤Žā¤žā¤¨ā¤• ā¤šāĨˆā¤‚ ⤜āĨ‹ ā¤ĩā¤ŋā¤‚ā¤ĄāĨ‹ā¤œ, ā¤ŽāĨˆā¤•ā¤“ā¤ā¤¸ ā¤¯ā¤ž ⤞ā¤ŋ⤍⤕āĨā¤¸ ⤜āĨˆā¤¸āĨ‡ ā¤“ā¤ā¤¸ ā¤Ē⤰ ⤚⤞⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ `loop` ⤉ā¤Ē⤝āĨ‹ā¤—⤕⤰āĨā¤¤ā¤ž ā¤‡ā¤‚ā¤Ÿā¤°ā¤Ģā¤ŧāĨ‡ā¤¸ ā¤˜ā¤Ÿā¤•āĨ‹ā¤‚ ⤜āĨˆā¤¸āĨ‡ ā¤Ŧ⤟⤍, ā¤¯ā¤ž ⤕āĨ€ā¤ŦāĨ‹ā¤°āĨā¤Ą ⤜āĨˆā¤¸āĨ‡ ⤉ā¤Ē⤕⤰⤪āĨ‹ā¤‚ ⤕āĨ‡ ⤏⤂ā¤ĻāĨ‡ā¤ļāĨ‹ā¤‚ ⤕āĨ‹ ⤏āĨā¤¨ā¤¤ā¤ž ā¤šāĨˆ, ⤔⤰ ā¤‰ā¤¨ā¤•ā¤ž ⤜ā¤ĩā¤žā¤Ŧ ā¤ĻāĨ‡ā¤¤ā¤ž ā¤šāĨˆāĨ¤ ⤆ā¤Ē ⤇⤏ [⤇ā¤ĩāĨ‡ā¤‚ā¤Ÿ ⤞āĨ‚ā¤Ē ā¤Ē⤰ ⤞āĨ‡ā¤–](https://wikipedia.org/wiki/Event_loop) ā¤ŽāĨ‡ā¤‚ ⤔⤰ ⤅⤧ā¤ŋ⤕ ā¤Ēā¤ĸā¤ŧ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ + +Arduino ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ⤔⤰ I/O ā¤Ēā¤ŋ⤍ ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ā¤‡ā¤‚ā¤Ÿā¤°āĨˆā¤•āĨā¤Ÿ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤Žā¤žā¤¨ā¤• ā¤ĒāĨā¤¸āĨā¤¤ā¤•ā¤žā¤˛ā¤¯ ā¤ĒāĨā¤°ā¤Ļā¤žā¤¨ ā¤•ā¤°ā¤¤ā¤ž ā¤šāĨˆ, ā¤ĩā¤ŋ⤭ā¤ŋ⤍āĨā¤¨ ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ā¤Ē⤰ ⤚⤞⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤šāĨā¤Ą ⤕āĨ‡ ā¤¤ā¤šā¤¤ ā¤ĩā¤ŋ⤭ā¤ŋ⤍āĨā¤¨ ā¤•ā¤žā¤°āĨā¤¯ā¤žā¤¨āĨā¤ĩ⤝⤍ ⤕āĨ‡ ā¤¸ā¤žā¤ĨāĨ¤ ⤉ā¤Ļā¤žā¤šā¤°ā¤Ŗ ⤕āĨ‡ ⤞ā¤ŋā¤, [`delay` ā¤Ģā¤ŧ⤂⤕āĨā¤ļ⤍](https://www.arduino.cc/reference/en/language/functions/time/delay/) ā¤ā¤• ⤍ā¤ŋā¤ļāĨā¤šā¤ŋ⤤ ⤅ā¤ĩ⤧ā¤ŋ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤•ā¤žā¤°āĨā¤¯ā¤•āĨā¤°ā¤Ž ⤕āĨ‹ ⤰āĨ‹ā¤• ā¤ĻāĨ‡ā¤—ā¤ž, [`digitalRead` ā¤Ģā¤ŧ⤂⤕āĨā¤ļ⤍](https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/) ā¤Ļā¤ŋā¤ ā¤—ā¤ ā¤Ēā¤ŋ⤍ ⤏āĨ‡ `HIGH` ā¤¯ā¤ž `LOW` ā¤•ā¤ž ā¤Žā¤žā¤¨ ā¤Ēā¤ĸā¤ŧāĨ‡ā¤—ā¤ž, ā¤šā¤žā¤šāĨ‡ ⤕ā¤ŋ⤏āĨ€ ⤭āĨ€ ā¤ŦāĨ‹ā¤°āĨā¤Ą ā¤Ē⤰ ⤕āĨ‹ā¤Ą ā¤šā¤žā¤˛āĨ‚ ā¤šāĨˆāĨ¤ ⤇⤍ ā¤Žā¤žā¤¨ā¤• ā¤ĒāĨā¤¸āĨā¤¤ā¤•ā¤žā¤˛ā¤¯āĨ‹ā¤‚ ā¤•ā¤ž ā¤Žā¤¤ā¤˛ā¤Ŧ ā¤šāĨˆ ⤕ā¤ŋ ā¤ā¤• ā¤ŦāĨ‹ā¤°āĨā¤Ą ⤕āĨ‡ ⤞ā¤ŋā¤ ⤞ā¤ŋ⤖āĨ‡ ā¤—ā¤ Arduino ⤕āĨ‹ā¤Ą ⤕āĨ‹ ⤕ā¤ŋ⤏āĨ€ ⤅⤍āĨā¤¯ Arduino ā¤ŦāĨ‹ā¤°āĨā¤Ą ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤ĒāĨā¤¨: ⤏⤂⤕⤞ā¤ŋ⤤ ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤ž ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆ ⤔⤰ ā¤¯ā¤š ā¤Žā¤žā¤¨ā¤¤āĨ‡ ā¤šāĨā¤ ⤚⤞āĨ‡ā¤—ā¤ž ⤕ā¤ŋ ā¤Ēā¤ŋ⤍ ā¤¸ā¤Žā¤žā¤¨ ā¤šāĨˆā¤‚ ⤔⤰ ā¤ŦāĨ‹ā¤°āĨā¤Ą ā¤¸ā¤Žā¤žā¤¨ ⤏āĨā¤ĩā¤ŋā¤§ā¤žā¤“ā¤‚ ā¤•ā¤ž ā¤¸ā¤Žā¤°āĨā¤Ĩ⤍ ⤕⤰⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ + +⤤āĨƒā¤¤āĨ€ā¤¯-ā¤Ē⤕āĨā¤ˇ Arduino ā¤ĒāĨā¤¸āĨā¤¤ā¤•ā¤žā¤˛ā¤¯āĨ‹ā¤‚ ā¤•ā¤ž ā¤ā¤• ā¤Ŧā¤Ąā¤ŧā¤ž ā¤Ēā¤žā¤°ā¤ŋ⤏āĨā¤Ĩā¤ŋ⤤ā¤ŋ⤕āĨ€ ⤤⤂⤤āĨā¤° ā¤šāĨˆ ⤜āĨ‹ ⤆ā¤Ē⤕āĨ‹ ⤅ā¤Ē⤍āĨ‡ Arduino ā¤ĒāĨā¤°āĨ‹ā¤œāĨ‡ā¤•āĨā¤ŸāĨā¤¸ ā¤ŽāĨ‡ā¤‚ ⤅⤤ā¤ŋ⤰ā¤ŋ⤕āĨā¤¤ ⤏āĨā¤ĩā¤ŋā¤§ā¤žā¤ā¤ ⤜āĨ‹ā¤Ąā¤ŧ⤍āĨ‡ ⤕āĨ€ ⤅⤍āĨā¤Žā¤¤ā¤ŋ ā¤ĻāĨ‡ā¤¤ā¤ž ā¤šāĨˆ, ⤜āĨˆā¤¸āĨ‡ ⤏āĨ‡ā¤‚⤏⤰ ⤔⤰ ā¤ā¤•āĨā¤šāĨā¤ā¤Ÿā¤°āĨā¤¸ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ā¤•ā¤°ā¤¨ā¤ž ā¤¯ā¤ž ⤕āĨā¤˛ā¤žā¤‰ā¤Ą IoT ⤏āĨ‡ā¤ĩā¤žā¤“ā¤‚ ⤏āĨ‡ ⤜āĨā¤Ąā¤ŧā¤¨ā¤žāĨ¤ + +##### ā¤Ÿā¤žā¤¸āĨā¤• + +ā¤ĩā¤žā¤ˆā¤“ ⤟⤰āĨā¤Žā¤ŋ⤍⤞ ⤕āĨ€ ā¤œā¤žā¤‚ā¤š ⤕⤰āĨ‡ā¤‚āĨ¤ + +⤝ā¤Ļā¤ŋ ⤆ā¤Ē ⤇⤍ ā¤Ēā¤žā¤ āĨ‹ā¤‚ ⤕āĨ‡ ⤞ā¤ŋā¤ Wio Terminal ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰ ā¤°ā¤šāĨ‡ ā¤šāĨˆā¤‚, ⤤āĨ‹ ā¤Ēā¤ŋ⤛⤞āĨ‡ ā¤Ēā¤žā¤  ā¤ŽāĨ‡ā¤‚ ⤆ā¤Ē⤕āĨ‡ ā¤ĻāĨā¤ĩā¤žā¤°ā¤ž ⤞ā¤ŋ⤖āĨ‡ ā¤—ā¤ ⤕āĨ‹ā¤Ą ⤕āĨ‹ ā¤ĻāĨ‹ā¤Ŧā¤žā¤°ā¤ž ā¤Ēā¤ĸā¤ŧāĨ‡ā¤‚āĨ¤ `setup` ⤔⤰ `loop` ā¤Ģā¤ŧ⤂⤕āĨā¤ļ⤍ ā¤ĸāĨ‚⤂ā¤ĸāĨ‡ā¤‚āĨ¤ ⤞āĨ‚ā¤Ē ā¤Ģā¤ŧ⤂⤕āĨā¤ļ⤍ ⤕āĨ‹ ā¤Ŧā¤žā¤°-ā¤Ŧā¤žā¤° ⤕āĨ‰ā¤˛ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤏āĨ€ā¤°ā¤ŋ⤝⤞ ā¤†ā¤‰ā¤Ÿā¤ĒāĨā¤Ÿ ⤕āĨ€ ⤍ā¤ŋā¤—ā¤°ā¤žā¤¨āĨ€ ⤕⤰āĨ‡ā¤‚āĨ¤ ⤏āĨ€ā¤°ā¤ŋ⤝⤞ ā¤ĒāĨ‹ā¤°āĨā¤Ÿ ā¤Ē⤰ ⤞ā¤ŋ⤖⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ `setup` ā¤Ģā¤ŧ⤂⤕āĨā¤ļ⤍ ā¤ŽāĨ‡ā¤‚ ⤕āĨ‹ā¤Ą ⤜āĨ‹ā¤Ąā¤ŧ⤍āĨ‡ ā¤•ā¤ž ā¤ĒāĨā¤°ā¤¯ā¤žā¤¸ ⤕⤰āĨ‡ā¤‚ ⤔⤰ ā¤ĻāĨ‡ā¤–āĨ‡ā¤‚ ⤕ā¤ŋ ā¤¯ā¤š ⤕āĨ‹ā¤Ą ⤕āĨ‡ā¤ĩ⤞ ā¤ā¤• ā¤Ŧā¤žā¤° ⤰āĨ€ā¤ŦāĨ‚ā¤Ÿ ⤕⤰⤍āĨ‡ ā¤Ē⤰ ā¤šāĨ€ ⤕āĨ‰ā¤˛ ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆāĨ¤ ⤅ā¤Ē⤍āĨ‡ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤕āĨ‹ ā¤¸ā¤žā¤‡ā¤Ą ā¤ŽāĨ‡ā¤‚ ā¤Ēā¤žā¤ĩ⤰ ⤏āĨā¤ĩā¤ŋ⤚ ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ⤰āĨ€ā¤ŦāĨ‚ā¤Ÿ ⤕⤰⤍āĨ‡ ā¤•ā¤ž ā¤ĒāĨā¤°ā¤¯ā¤žā¤¸ ⤕⤰āĨ‡ā¤‚ ā¤¯ā¤š ā¤Ļā¤ŋā¤–ā¤žā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤕ā¤ŋ ā¤šā¤° ā¤Ŧā¤žā¤° ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤰āĨ€ā¤ŦāĨ‚ā¤Ÿ ā¤šāĨ‹ā¤¨āĨ‡ ā¤Ē⤰ ⤇⤏āĨ‡ ā¤•ā¤šā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆāĨ¤ + +## ⤏ā¤ŋ⤂⤗⤞-ā¤ŦāĨ‹ā¤°āĨā¤Ą ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤° ā¤ŽāĨ‡ā¤‚ ā¤—ā¤šā¤°ā¤žā¤ˆ ⤏āĨ‡ ⤅⤧āĨā¤¯ā¤¯ā¤¨ ⤕⤰āĨ‡ā¤‚ + +ā¤Ēā¤ŋ⤛⤞āĨ‡ ā¤Ēā¤žā¤  ā¤ŽāĨ‡ā¤‚, ā¤šā¤Žā¤¨āĨ‡ ⤏ā¤ŋ⤂⤗⤞-ā¤ŦāĨ‹ā¤°āĨā¤Ą ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤° ā¤ĒāĨ‡ā¤ļ ⤕ā¤ŋā¤ ā¤ĨāĨ‡āĨ¤ ā¤†ā¤‡ā¤ ⤅ā¤Ŧ ā¤‰ā¤¨ā¤ŽāĨ‡ā¤‚ ā¤—ā¤šā¤°ā¤žā¤ˆ ⤏āĨ‡ ā¤ĻāĨ‡ā¤–āĨ‡ā¤‚āĨ¤ + +### ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ + +![ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ ⤞āĨ‹ā¤—āĨ‹](https://github.com/microsoft/IoT-For-Beginners/raw/main/images/raspberry-pi-logo.png) + +[ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ ā¤Ģā¤žā¤‰ā¤‚ā¤ĄāĨ‡ā¤ļ⤍](https://www.raspberrypi.org) ⤝āĨ‚⤕āĨ‡ ⤕āĨ€ ā¤ā¤• ⤚āĨˆā¤°ā¤ŋ⤟āĨ€ ā¤šāĨˆ ⤜ā¤ŋ⤏⤕āĨ€ ⤏āĨā¤Ĩā¤žā¤Ēā¤¨ā¤ž 2009 ā¤ŽāĨ‡ā¤‚ ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤° ā¤ĩā¤ŋ⤜āĨā¤žā¤žā¤¨ ⤕āĨ‡ ⤅⤧āĨā¤¯ā¤¯ā¤¨ ⤕āĨ‹ ā¤Ŧā¤ĸā¤ŧā¤žā¤ĩā¤ž ā¤ĻāĨ‡ā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤕āĨ€ ā¤—ā¤ˆ ā¤ĨāĨ€, ā¤–ā¤žā¤¸ā¤•ā¤° ⤏āĨā¤•āĨ‚⤞ ⤏āĨā¤¤ā¤° ā¤Ē⤰āĨ¤ ⤇⤏ ā¤Žā¤ŋā¤ļ⤍ ⤕āĨ‡ ā¤šā¤ŋ⤏āĨā¤¸āĨ‡ ⤕āĨ‡ ⤰āĨ‚ā¤Ē ā¤ŽāĨ‡ā¤‚, ⤉⤍āĨā¤šāĨ‹ā¤‚⤍āĨ‡ ā¤ā¤• ⤏ā¤ŋ⤂⤗⤞-ā¤ŦāĨ‹ā¤°āĨā¤Ą ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤° ā¤ĩā¤ŋ⤕⤏ā¤ŋ⤤ ⤕ā¤ŋā¤¯ā¤ž, ⤜ā¤ŋ⤏āĨ‡ ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ ā¤•ā¤šā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆāĨ¤ ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ ā¤ĩ⤰āĨā¤¤ā¤Žā¤žā¤¨ ā¤ŽāĨ‡ā¤‚ 3 ā¤ĒāĨā¤°ā¤•ā¤žā¤°āĨ‹ā¤‚ ā¤ŽāĨ‡ā¤‚ ⤉ā¤Ē⤞ā¤ŦāĨā¤§ ā¤šāĨˆ - ā¤ā¤• ā¤ĒāĨ‚⤰āĨā¤Ŗ ā¤†ā¤•ā¤žā¤° ā¤•ā¤ž ⤏⤂⤏āĨā¤•⤰⤪, ⤛āĨ‹ā¤Ÿā¤ž ā¤Ēā¤žā¤ˆ ⤜ā¤ŧāĨ€ā¤°āĨ‹, ⤔⤰ ā¤ā¤• ā¤—ā¤Ŗā¤¨ā¤ž ā¤ŽāĨ‰ā¤ĄāĨā¤¯āĨ‚⤞ ⤜ā¤ŋ⤏āĨ‡ ⤆ā¤Ē⤕āĨ‡ ⤅⤂⤤ā¤ŋā¤Ž IoT ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ā¤ŽāĨ‡ā¤‚ ā¤Ŧā¤¨ā¤žā¤¯ā¤ž ā¤œā¤ž ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆāĨ¤ + +![ā¤ā¤• ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ 4](https://github.com/microsoft/IoT-For-Beginners/raw/main/images/raspberry-pi-4.jpg) + +ā¤ĒāĨ‚⤰āĨā¤Ŗ ā¤†ā¤•ā¤žā¤° ⤕āĨ‡ ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ ā¤•ā¤ž ⤍ā¤ĩāĨ€ā¤¨ā¤¤ā¤Ž ā¤ĒāĨā¤¨ā¤°ā¤žā¤ĩāĨƒā¤¤āĨā¤¤ā¤ŋ ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ 4 ā¤ŦāĨ€ ā¤šāĨˆāĨ¤ ā¤‡ā¤¸ā¤ŽāĨ‡ā¤‚ ā¤ā¤• ⤕āĨā¤ĩā¤žā¤Ą-⤕āĨ‹ā¤° (4 ⤕āĨ‹ā¤°) ⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ā¤šāĨˆ ⤜āĨ‹ 1.5GHz, 2, 4, ā¤¯ā¤ž 8GB RAM, ⤗āĨ€ā¤—ā¤žā¤Ŧā¤ŋ⤟ ⤈ā¤Ĩ⤰⤍āĨ‡ā¤Ÿ, ā¤ĩā¤žā¤ˆā¤Ģā¤žā¤ˆ, 4k ⤏āĨā¤•āĨā¤°āĨ€ā¤¨ ⤕āĨ‹ ⤏ā¤ĒāĨ‹ā¤°āĨā¤Ÿ ⤕⤰⤍āĨ‡ ā¤ĩā¤žā¤˛āĨ‡ 2 HDMI ā¤ĒāĨ‹ā¤°āĨā¤Ÿ, ā¤ā¤• ā¤‘ā¤Ąā¤ŋ⤝āĨ‹ ⤔⤰ ā¤•ā¤ŽāĨā¤ĒāĨ‹ā¤œā¤ŋ⤟ ā¤ĩāĨ€ā¤Ąā¤ŋ⤝āĨ‹ ā¤†ā¤‰ā¤Ÿā¤ĒāĨā¤Ÿ ā¤ĒāĨ‹ā¤°āĨā¤Ÿ, USB ā¤ĒāĨ‹ā¤°āĨā¤Ÿ (2 USB) ā¤Ē⤰ ā¤šā¤˛ā¤¤ā¤ž ā¤šāĨˆāĨ¤ 2.0, 2 ⤝āĨ‚ā¤ā¤¸ā¤ŦāĨ€ 3.0), 40 ⤜āĨ€ā¤ĒāĨ€ā¤†ā¤ˆā¤“ ā¤Ēā¤ŋ⤍, ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ ⤕āĨˆā¤Žā¤°ā¤ž ā¤ŽāĨ‰ā¤ĄāĨā¤¯āĨ‚⤞ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤ā¤• ⤕āĨˆā¤Žā¤°ā¤ž ⤕⤍āĨ‡ā¤•āĨā¤Ÿā¤° ⤔⤰ ā¤ā¤• ā¤ā¤¸ā¤ĄāĨ€ ā¤•ā¤žā¤°āĨā¤Ą ⤏āĨā¤˛āĨ‰ā¤ŸāĨ¤ ā¤¯ā¤š ⤏ā¤Ŧ ā¤ā¤• ā¤ŦāĨ‹ā¤°āĨā¤Ą ā¤Ē⤰ ā¤šāĨˆ ⤜āĨ‹ 88mm x 58mm x 19.5mm ā¤šāĨˆ ⤔⤰ ā¤¯ā¤š 3A USB-C ā¤Ŧā¤ŋ⤜⤞āĨ€ ⤕āĨ€ ⤆ā¤ĒāĨ‚⤰āĨā¤¤ā¤ŋ ā¤ĻāĨā¤ĩā¤žā¤°ā¤ž ā¤¸ā¤‚ā¤šā¤žā¤˛ā¤ŋ⤤ ā¤šāĨˆāĨ¤ ⤝āĨ‡ 35 ā¤…ā¤ŽāĨ‡ā¤°ā¤ŋ⤕āĨ€ ā¤ĄāĨ‰ā¤˛ā¤° ⤏āĨ‡ ā¤ļāĨā¤°āĨ‚ ā¤šāĨ‹ā¤¤āĨ‡ ā¤šāĨˆā¤‚, ⤜āĨ‹ ā¤ĒāĨ€ā¤¸āĨ€ ā¤¯ā¤ž ā¤ŽāĨˆā¤• ⤏āĨ‡ ā¤•ā¤žā¤ĢāĨ€ ⤏⤏āĨā¤¤ā¤ž ā¤šāĨˆāĨ¤ + +> đŸ’ā¤ā¤• ⤕āĨ€ā¤ŦāĨ‹ā¤°āĨā¤Ą ā¤ŽāĨ‡ā¤‚ ⤍ā¤ŋ⤰āĨā¤Žā¤ŋ⤤ Pi4 ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ā¤ā¤• ⤏⤭āĨ€ ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤° ā¤ŽāĨ‡ā¤‚ ā¤ā¤• Pi400 ⤭āĨ€ ā¤šāĨˆāĨ¤ + +![ā¤ā¤• ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ ⤜ā¤ŧāĨ€ā¤°āĨ‹](https://github.com/microsoft/IoT-For-Beginners/raw/main/images/raspberry-pi-zero.jpg) + +ā¤Ēā¤žā¤ˆ ⤜ā¤ŧāĨ€ā¤°āĨ‹ ā¤Ŧā¤šāĨā¤¤ ⤛āĨ‹ā¤Ÿā¤ž ā¤šāĨˆ, ā¤•ā¤Ž ā¤ļ⤕āĨā¤¤ā¤ŋ ⤕āĨ‡ ā¤¸ā¤žā¤ĨāĨ¤ ā¤‡ā¤¸ā¤ŽāĨ‡ā¤‚ ⤏ā¤ŋ⤂⤗⤞-⤕āĨ‹ā¤° 1GHz CPU, 512MB RAM, WiFi (⤜ā¤ŧāĨ€ā¤°āĨ‹ W ā¤ŽāĨ‰ā¤Ąā¤˛ ā¤ŽāĨ‡ā¤‚), ā¤ā¤• ⤏ā¤ŋ⤂⤗⤞ HDMI ā¤ĒāĨ‹ā¤°āĨā¤Ÿ, ā¤ā¤• ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹-USB ā¤ĒāĨ‹ā¤°āĨā¤Ÿ, 40 GPIO ā¤Ēā¤ŋ⤍, ā¤ā¤• ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ ⤕āĨˆā¤Žā¤°ā¤ž ā¤ŽāĨ‰ā¤ĄāĨā¤¯āĨ‚⤞ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤ā¤• ⤕āĨˆā¤Žā¤°ā¤ž ⤕⤍āĨ‡ā¤•āĨā¤Ÿā¤° ⤔⤰ ā¤ā¤• SD ā¤šāĨˆāĨ¤ ā¤•ā¤žā¤°āĨā¤Ą ā¤•ā¤ž ⤏āĨā¤Ĩā¤žā¤¨āĨ¤ ā¤¯ā¤š 65 ā¤Žā¤ŋā¤ŽāĨ€ x 30 ā¤Žā¤ŋā¤ŽāĨ€ x 5 ā¤Žā¤ŋā¤ŽāĨ€ ā¤Žā¤žā¤Ēā¤¤ā¤ž ā¤šāĨˆ, ⤔⤰ ā¤Ŧā¤šāĨā¤¤ ā¤•ā¤Ž ā¤ļ⤕āĨā¤¤ā¤ŋ ⤖āĨ€ā¤‚ā¤šā¤¤ā¤ž ā¤šāĨˆāĨ¤ ⤜ā¤ŧāĨ€ā¤°āĨ‹ ⤝āĨ‚ā¤ā¤¸ $ 5 ā¤šāĨˆ, ā¤ĩā¤žā¤ˆ-ā¤Ģā¤žā¤ˆ ⤝āĨ‚ā¤ā¤¸ $ 10 ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ā¤Ąā¤ŦāĨā¤˛āĨā¤¯āĨ‚ ⤏⤂⤏āĨā¤•⤰⤪ ⤕āĨ‡ ā¤¸ā¤žā¤ĨāĨ¤ + +>🎓 ⤇⤍ ā¤ĻāĨ‹ā¤¨āĨ‹ā¤‚ ā¤ŽāĨ‡ā¤‚ ⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ā¤ā¤†ā¤°ā¤ā¤Ž ā¤ĒāĨā¤°āĨ‹ā¤¸āĨ‡ā¤¸ā¤° ā¤šāĨˆā¤‚, ā¤‡ā¤‚ā¤ŸāĨ‡ā¤˛/ā¤ā¤ā¤Žā¤ĄāĨ€ x86 ā¤¯ā¤ž x64 ā¤ĒāĨā¤°āĨ‹ā¤¸āĨ‡ā¤¸ā¤° ⤕āĨ‡ ā¤ĩā¤ŋā¤Ē⤰āĨ€ā¤¤ ⤜āĨ‹ ⤆ā¤Ē⤕āĨ‹ ⤅⤧ā¤ŋā¤•ā¤žā¤‚ā¤ļ ā¤ĒāĨ€ā¤¸āĨ€ ⤔⤰ ā¤ŽāĨˆā¤• ā¤ŽāĨ‡ā¤‚ ā¤Žā¤ŋ⤞⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ⤝āĨ‡ ⤕āĨā¤› ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤°āĨā¤¸ ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ-ā¤¸ā¤žā¤Ĩ ⤞⤗⤭⤗ ⤏⤭āĨ€ ā¤ŽāĨ‹ā¤Ŧā¤žā¤‡ā¤˛ ā¤ĢāĨ‹ā¤¨, ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤¸āĨ‰ā¤ĢāĨā¤Ÿ ⤏⤰āĨā¤ĢāĨ‡ā¤¸ ā¤ā¤•āĨā¤¸ ⤔⤰ ā¤¨ā¤ ⤐ā¤ĒāĨā¤Ē⤞ ⤏ā¤ŋ⤞ā¤ŋ⤕āĨ‰ā¤¨-ā¤†ā¤§ā¤žā¤°ā¤ŋ⤤ ⤐ā¤ĒāĨā¤Ē⤞ ā¤ŽāĨˆā¤• ā¤ŽāĨ‡ā¤‚ ā¤Ēā¤žā¤ ā¤œā¤žā¤¨āĨ‡ ā¤ĩā¤žā¤˛āĨ‡ ⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ⤕āĨ‡ ā¤¸ā¤Žā¤žā¤¨ ā¤šāĨˆā¤‚āĨ¤ + +ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ ⤕āĨ‡ ⤏⤭āĨ€ ā¤ĩāĨ‡ā¤°ā¤ŋā¤ā¤‚ā¤Ÿ ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ ā¤“ā¤ā¤¸ ā¤¨ā¤žā¤Žā¤• ā¤ĄāĨ‡ā¤Ŧā¤ŋ⤝⤍ ⤞ā¤ŋ⤍⤕āĨā¤¸ ā¤•ā¤ž ā¤ā¤• ⤏⤂⤏āĨā¤•⤰⤪ ā¤šā¤˛ā¤žā¤¤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ā¤¯ā¤š ā¤Ŧā¤ŋā¤¨ā¤ž ā¤ĄāĨ‡ā¤¸āĨā¤•ā¤ŸāĨ‰ā¤Ē ⤕āĨ‡ ā¤ā¤• ā¤˛ā¤žā¤‡ā¤Ÿ ⤏⤂⤏āĨā¤•⤰⤪ ⤕āĨ‡ ⤰āĨ‚ā¤Ē ā¤ŽāĨ‡ā¤‚ ⤉ā¤Ē⤞ā¤ŦāĨā¤§ ā¤šāĨˆ, ⤜āĨ‹ 'ā¤šāĨ‡ā¤Ąā¤˛āĨ‡ā¤¸' ā¤Ē⤰ā¤ŋ⤝āĨ‹ā¤œā¤¨ā¤žā¤“⤂ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤ā¤•ā¤Ļā¤Ž ā¤¸ā¤šāĨ€ ā¤šāĨˆ, ā¤œā¤šā¤žā¤‚ ⤆ā¤Ē⤕āĨ‹ ⤏āĨā¤•āĨā¤°āĨ€ā¤¨ ⤕āĨ€ ⤆ā¤ĩā¤ļāĨā¤¯ā¤•ā¤¤ā¤ž ā¤¨ā¤šāĨ€ā¤‚ ā¤šāĨˆ, ā¤¯ā¤ž ā¤ā¤• ā¤ĒāĨ‚⤰āĨā¤Ŗ ā¤ĄāĨ‡ā¤¸āĨā¤•ā¤ŸāĨ‰ā¤Ē ā¤ĩā¤žā¤¤ā¤žā¤ĩ⤰⤪ ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ā¤ā¤• ā¤ĒāĨ‚⤰āĨā¤Ŗ ⤏⤂⤏āĨā¤•⤰⤪, ā¤ā¤• ā¤ĩāĨ‡ā¤Ŧ ā¤ŦāĨā¤°ā¤žā¤‰ā¤œā¤ŧ⤰, ā¤•ā¤žā¤°āĨā¤¯ā¤žā¤˛ā¤¯ ⤅⤍āĨā¤ĒāĨā¤°ā¤¯āĨ‹ā¤—āĨ‹ā¤‚, ⤕āĨ‹ā¤Ąā¤ŋ⤂⤗ ⤟āĨ‚⤞, ⤔⤰ ⤖āĨ‡ā¤˛ ⤚āĨ‚⤂⤕ā¤ŋ ā¤“ā¤ā¤¸ ā¤ĄāĨ‡ā¤Ŧā¤ŋ⤝⤍ ⤞ā¤ŋ⤍⤕āĨā¤¸ ā¤•ā¤ž ā¤ā¤• ⤏⤂⤏āĨā¤•⤰⤪ ā¤šāĨˆ, ⤆ā¤Ē ā¤ĄāĨ‡ā¤Ŧā¤ŋ⤝⤍ ā¤Ē⤰ ⤚⤞⤍āĨ‡ ā¤ĩā¤žā¤˛āĨ‡ ⤕ā¤ŋ⤏āĨ€ ⤭āĨ€ ā¤ā¤ĒāĨā¤˛ā¤ŋ⤕āĨ‡ā¤ļ⤍ ā¤¯ā¤ž ⤟āĨ‚⤞ ⤕āĨ‹ ⤇⤂⤏āĨā¤ŸāĨ‰ā¤˛ ⤕⤰ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚ ⤔⤰ ā¤ĒāĨ€ā¤†ā¤ˆ ⤕āĨ‡ ⤅⤂ā¤Ļ⤰ ā¤ā¤†ā¤°ā¤ā¤Ž ā¤ĒāĨā¤°āĨ‹ā¤¸āĨ‡ā¤¸ā¤° ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤Ŧā¤¨ā¤žā¤¯ā¤ž ā¤—ā¤¯ā¤ž ā¤šāĨˆāĨ¤ + +#### ā¤Ÿā¤žā¤¸āĨā¤• + +ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ ⤕āĨ€ ā¤œā¤žā¤‚ā¤š ⤕⤰āĨ‡ā¤‚āĨ¤ + +⤝ā¤Ļā¤ŋ ⤆ā¤Ē ⤇⤍ ā¤Ēā¤žā¤ āĨ‹ā¤‚ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰ ā¤°ā¤šāĨ‡ ā¤šāĨˆā¤‚, ⤤āĨ‹ ā¤ŦāĨ‹ā¤°āĨā¤Ą ā¤Ē⤰ ā¤ĩā¤ŋ⤭ā¤ŋ⤍āĨā¤¨ ā¤šā¤žā¤°āĨā¤Ąā¤ĩāĨ‡ā¤¯ā¤° ā¤˜ā¤Ÿā¤•āĨ‹ā¤‚ ⤕āĨ‡ ā¤Ŧā¤žā¤°āĨ‡ ā¤ŽāĨ‡ā¤‚ ā¤Ēā¤ĸā¤ŧāĨ‡ā¤‚āĨ¤ + +* ⤆ā¤Ē [ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ ā¤šā¤žā¤°āĨā¤Ąā¤ĩāĨ‡ā¤¯ā¤° ā¤ĄāĨ‰ā¤•āĨā¤¯āĨ‚ā¤ŽāĨ‡ā¤‚ā¤ŸāĨ‡ā¤ļ⤍ ā¤ĒāĨ‡ā¤œ](https://www.raspberrypi.org/documentation/hardware/raspberrypi/) ā¤Ē⤰ ⤇⤏āĨā¤¤āĨ‡ā¤Žā¤žā¤˛ ⤕ā¤ŋā¤ ā¤—ā¤ ā¤ĒāĨā¤°āĨ‹ā¤¸āĨ‡ā¤¸ā¤° ⤕āĨ‡ ā¤Ŧā¤žā¤°āĨ‡ ā¤ŽāĨ‡ā¤‚ ā¤œā¤žā¤¨ā¤•ā¤žā¤°āĨ€ ā¤Ēā¤ž ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ⤆ā¤Ē ⤜ā¤ŋ⤏ ā¤Ēā¤žā¤ˆ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰ ā¤°ā¤šāĨ‡ ā¤šāĨˆā¤‚ ā¤‰ā¤¸ā¤ŽāĨ‡ā¤‚ ā¤ĒāĨā¤°ā¤¯āĨā¤•āĨā¤¤ ā¤ĒāĨā¤°āĨ‹ā¤¸āĨ‡ā¤¸ā¤° ⤕āĨ‡ ā¤Ŧā¤žā¤°āĨ‡ ā¤ŽāĨ‡ā¤‚ ā¤Ēā¤ĸā¤ŧāĨ‡ā¤‚āĨ¤ +* GPIO ā¤Ēā¤ŋ⤍ ā¤•ā¤ž ā¤Ēā¤¤ā¤ž ā¤˛ā¤—ā¤žā¤ā¤āĨ¤ [ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ GPIO ā¤Ļ⤏āĨā¤¤ā¤žā¤ĩāĨ‡ā¤œā¤ŧāĨ€ā¤•⤰⤪](https://www.raspberrypi.org/documentation/hardware/raspberrypi/gpio/README.md) ā¤Ē⤰ ⤉⤍⤕āĨ‡ ā¤Ŧā¤žā¤°āĨ‡ ā¤ŽāĨ‡ā¤‚ ⤔⤰ ā¤Ēā¤ĸā¤ŧāĨ‡ā¤‚āĨ¤ ⤅ā¤Ē⤍āĨ‡ ā¤Ēā¤žā¤ˆ ā¤Ē⤰ ⤅⤞⤗-⤅⤞⤗ ā¤Ēā¤ŋ⤍ ⤕āĨ€ ā¤Ēā¤šā¤šā¤žā¤¨ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ [GPIO ā¤Ēā¤ŋ⤍ ⤝āĨ‚⤏āĨ‡ā¤œ ā¤—ā¤žā¤‡ā¤Ą](https://www.raspberrypi.org/documentation/usage/gpio/README.md) ā¤•ā¤ž ⤇⤏āĨā¤¤āĨ‡ā¤Žā¤žā¤˛ ⤕⤰āĨ‡ā¤‚āĨ¤ + +### ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Žā¤ŋ⤂⤗ ⤏ā¤ŋ⤂⤗⤞-ā¤ŦāĨ‹ā¤°āĨā¤Ą ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤° + +⤏ā¤ŋ⤂⤗⤞-ā¤ŦāĨ‹ā¤°āĨā¤Ą ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤° ā¤ĒāĨ‚⤰āĨā¤Ŗ ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤° ā¤šāĨˆā¤‚, ⤜āĨ‹ ā¤ā¤• ā¤ĒāĨ‚⤰āĨā¤Ŗ OS ā¤šā¤˛ā¤ž ā¤°ā¤šāĨ‡ ā¤šāĨˆā¤‚āĨ¤ ā¤‡ā¤¸ā¤•ā¤ž ā¤Žā¤¤ā¤˛ā¤Ŧ ā¤¯ā¤š ā¤šāĨˆ ⤕ā¤ŋ ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ⤕āĨ‡ ā¤ĩā¤ŋā¤Ē⤰āĨ€ā¤¤ ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Žā¤ŋ⤂⤗ ā¤­ā¤žā¤ˇā¤žā¤“ā¤‚, ā¤ĸā¤žā¤‚ā¤šāĨ‡ ⤔⤰ ⤟āĨ‚⤞ ⤕āĨ€ ā¤ā¤• ā¤ĩā¤ŋ⤏āĨā¤¤āĨƒā¤¤ ā¤ļāĨā¤°āĨƒā¤‚ā¤–ā¤˛ā¤ž ā¤šāĨˆ ⤜ā¤ŋā¤¸ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤆ā¤Ē ⤉⤍āĨā¤šāĨ‡ā¤‚ ⤕āĨ‹ā¤Ą ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤕⤰ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚, ⤜āĨ‹ Arduino ⤜āĨˆā¤¸āĨ‡ ā¤ĸā¤žā¤‚ā¤šāĨ‡ ā¤ŽāĨ‡ā¤‚ ā¤ŦāĨ‹ā¤°āĨā¤Ą ⤕āĨ‡ ā¤¸ā¤Žā¤°āĨā¤Ĩ⤍ ā¤Ē⤰ ⤭⤰āĨ‹ā¤¸ā¤ž ⤕⤰⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ⤅⤧ā¤ŋā¤•ā¤žā¤‚ā¤ļ ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Žā¤ŋ⤂⤗ ā¤­ā¤žā¤ˇā¤žā¤“ā¤‚ ā¤ŽāĨ‡ā¤‚ ā¤ĒāĨā¤¸āĨā¤¤ā¤•ā¤žā¤˛ā¤¯ ā¤šāĨ‹ā¤¤āĨ‡ ā¤šāĨˆā¤‚ ⤜āĨ‹ ⤏āĨ‡ā¤‚⤏⤰ ⤔⤰ ā¤ā¤•āĨā¤šāĨā¤ā¤Ÿā¤°āĨā¤¸ ⤏āĨ‡ ā¤ĄāĨ‡ā¤Ÿā¤ž ⤭āĨ‡ā¤œā¤¨āĨ‡ ⤔⤰ ā¤ĒāĨā¤°ā¤žā¤ĒāĨā¤¤ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ GPIO ā¤Ēā¤ŋ⤍ ⤤⤕ ā¤Ēā¤šāĨā¤‚ā¤š ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ + +✅ ⤆ā¤Ē ⤕ā¤ŋ⤍ ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Žā¤ŋ⤂⤗ ā¤­ā¤žā¤ˇā¤žā¤“ā¤‚ ⤏āĨ‡ ā¤Ē⤰ā¤ŋ⤚ā¤ŋ⤤ ā¤šāĨˆā¤‚? ⤕āĨā¤¯ā¤ž ā¤ĩāĨ‡ ⤞ā¤ŋ⤍⤕āĨā¤¸ ā¤Ē⤰ ā¤¸ā¤Žā¤°āĨā¤Ĩā¤ŋ⤤ ā¤šāĨˆā¤‚? + +ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ ā¤Ē⤰ IoT ⤅⤍āĨā¤ĒāĨā¤°ā¤¯āĨ‹ā¤—āĨ‹ā¤‚ ⤕āĨ‡ ⤍ā¤ŋ⤰āĨā¤Žā¤žā¤Ŗ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤏ā¤Ŧ⤏āĨ‡ ā¤†ā¤Ž ā¤ĒāĨā¤°āĨ‹ā¤—āĨā¤°ā¤žā¤Žā¤ŋ⤂⤗ ā¤­ā¤žā¤ˇā¤ž ā¤Ēā¤žā¤¯ā¤Ĩ⤍ ā¤šāĨˆāĨ¤ ā¤Ēā¤žā¤ˆ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤Ąā¤ŋ⤜ā¤ŧā¤žā¤‡ā¤¨ ⤕ā¤ŋā¤ ā¤—ā¤ ā¤šā¤žā¤°āĨā¤Ąā¤ĩāĨ‡ā¤¯ā¤° ā¤•ā¤ž ā¤ā¤• ā¤ĩā¤ŋā¤ļā¤žā¤˛ ā¤Ēā¤žā¤°ā¤ŋ⤏āĨā¤Ĩā¤ŋ⤤ā¤ŋ⤕āĨ€ ⤤⤂⤤āĨā¤° ā¤šāĨˆ, ⤔⤰ ā¤‡ā¤¨ā¤ŽāĨ‡ā¤‚ ⤏āĨ‡ ⤞⤗⤭⤗ ⤏⤭āĨ€ ā¤ŽāĨ‡ā¤‚ ⤏⤂ā¤Ŧ⤂⤧ā¤ŋ⤤ ⤕āĨ‹ā¤Ą ā¤ļā¤žā¤Žā¤ŋ⤞ ā¤šāĨˆā¤‚ ⤜āĨ‹ ⤉⤍āĨā¤šāĨ‡ā¤‚ ā¤Ēā¤žā¤¯ā¤Ĩ⤍ ā¤ĒāĨā¤¸āĨā¤¤ā¤•ā¤žā¤˛ā¤¯āĨ‹ā¤‚ ⤕āĨ‡ ⤰āĨ‚ā¤Ē ā¤ŽāĨ‡ā¤‚ ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤆ā¤ĩā¤ļāĨā¤¯ā¤• ā¤šāĨˆā¤‚āĨ¤ ā¤‡ā¤¨ā¤ŽāĨ‡ā¤‚ ⤏āĨ‡ ⤕āĨā¤› ā¤Ēā¤žā¤°ā¤ŋ⤏āĨā¤Ĩā¤ŋ⤤ā¤ŋ⤕ ⤤⤂⤤āĨā¤° '⤟āĨ‹ā¤ĒāĨ€' ā¤Ē⤰ ā¤†ā¤§ā¤žā¤°ā¤ŋ⤤ ā¤šāĨ‹ā¤¤āĨ‡ ā¤šāĨˆā¤‚ - ⤤ā¤Ĩā¤žā¤•ā¤Ĩā¤ŋ⤤ ⤕āĨā¤¯āĨ‹ā¤‚⤕ā¤ŋ ā¤ĩāĨ‡ ā¤ā¤• ⤟āĨ‹ā¤ĒāĨ€ ⤕āĨ€ ā¤¤ā¤°ā¤š ā¤Ēā¤žā¤ˆ ⤕āĨ‡ ⤊ā¤Ē⤰ ā¤ŦāĨˆā¤ ā¤¤āĨ‡ ā¤šāĨˆā¤‚ ⤔⤰ ā¤ā¤• ā¤Ŧā¤Ąā¤ŧāĨ‡ ⤏āĨ‰ā¤•āĨ‡ā¤Ÿ ⤏āĨ‡ 40 GPIO ā¤Ēā¤ŋ⤍ ⤏āĨ‡ ⤜āĨā¤Ąā¤ŧ⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ⤝āĨ‡ ⤟āĨ‹ā¤Ēā¤ŋā¤¯ā¤žā¤‚ ⤅⤤ā¤ŋ⤰ā¤ŋ⤕āĨā¤¤ ⤕āĨā¤ˇā¤Žā¤¤ā¤žā¤ā¤‚ ā¤ĒāĨā¤°ā¤Ļā¤žā¤¨ ⤕⤰⤤āĨ€ ā¤šāĨˆā¤‚, ⤜āĨˆā¤¸āĨ‡ ⤏āĨā¤•āĨā¤°āĨ€ā¤¨, ⤏āĨ‡ā¤‚⤏⤰, ⤰ā¤ŋā¤ŽāĨ‹ā¤Ÿ-⤍ā¤ŋ⤝⤂⤤āĨā¤°ā¤ŋ⤤ ā¤•ā¤žā¤°, ā¤¯ā¤ž ā¤ā¤ĄāĨ‡ā¤ĒāĨā¤Ÿā¤° ⤆ā¤Ē⤕āĨ‹ ā¤Žā¤žā¤¨ā¤•āĨ€ā¤•āĨƒā¤¤ ⤕āĨ‡ā¤Ŧ⤞ ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ⤏āĨ‡ā¤‚⤏⤰ ā¤ĒāĨā¤˛ā¤—-⤇⤍ ⤕⤰⤍āĨ‡ ⤕āĨ€ ⤅⤍āĨā¤Žā¤¤ā¤ŋ ā¤ĻāĨ‡ā¤¤āĨ‡ ā¤šāĨˆā¤‚ + +### ā¤ĒāĨ‡ā¤ļāĨ‡ā¤ĩ⤰ IoT ā¤Ē⤰ā¤ŋ⤍ā¤ŋ⤝āĨ‹ā¤œā¤¨ ā¤ŽāĨ‡ā¤‚ ⤏ā¤ŋ⤂⤗⤞-ā¤ŦāĨ‹ā¤°āĨā¤Ą ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤° ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— + +ā¤ā¤•ā¤˛-ā¤ŦāĨ‹ā¤°āĨā¤Ą ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤° ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ā¤ĒāĨ‡ā¤ļāĨ‡ā¤ĩ⤰ IoT ā¤Ē⤰ā¤ŋ⤍ā¤ŋ⤝āĨ‹ā¤œā¤¨ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆ, ⤍ ⤕ā¤ŋ ⤕āĨ‡ā¤ĩ⤞ ā¤ĄāĨ‡ā¤ĩ⤞ā¤Ē⤰ ⤕ā¤ŋ⤟ ⤕āĨ‡ ⤰āĨ‚ā¤Ē ā¤ŽāĨ‡ā¤‚āĨ¤ ā¤ĩāĨ‡ ā¤šā¤žā¤°āĨā¤Ąā¤ĩāĨ‡ā¤¯ā¤° ⤕āĨ‹ ⤍ā¤ŋ⤝⤂⤤āĨā¤°ā¤ŋ⤤ ⤕⤰⤍āĨ‡ ⤔⤰ ā¤Žā¤ļāĨ€ā¤¨ ⤞⤰āĨā¤¨ā¤ŋ⤂⤗ ā¤ŽāĨ‰ā¤Ąā¤˛ ā¤šā¤˛ā¤žā¤¨āĨ‡ ⤜āĨˆā¤¸āĨ‡ ⤜⤟ā¤ŋ⤞ ā¤•ā¤žā¤°āĨā¤¯āĨ‹ā¤‚ ⤕āĨ‹ ā¤šā¤˛ā¤žā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤ā¤• ā¤ļ⤕āĨā¤¤ā¤ŋā¤ļā¤žā¤˛āĨ€ ⤤⤰āĨ€ā¤•ā¤ž ā¤ĒāĨā¤°ā¤Ļā¤žā¤¨ ⤕⤰ ⤏⤕⤤āĨ‡ ā¤šāĨˆā¤‚āĨ¤ ⤉ā¤Ļā¤žā¤šā¤°ā¤Ŗ ⤕āĨ‡ ⤞ā¤ŋā¤, ā¤ā¤• [ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ 4 ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿ ā¤ŽāĨ‰ā¤ĄāĨā¤¯āĨ‚⤞](https://www.raspberrypi.org/blog/raspberry-pi-compute-module-4/) ā¤šāĨˆ ⤜āĨ‹ ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ 4 ⤕āĨ€ ā¤¸ā¤žā¤°āĨ€ ā¤ļ⤕āĨā¤¤ā¤ŋ ā¤ĒāĨā¤°ā¤Ļā¤žā¤¨ ā¤•ā¤°ā¤¤ā¤ž ā¤šāĨˆ ⤞āĨ‡ā¤•ā¤ŋ⤍ ā¤ā¤• ā¤ŽāĨ‡ā¤‚ ⤅⤧ā¤ŋā¤•ā¤žā¤‚ā¤ļ ā¤ĒāĨ‹ā¤°āĨā¤Ÿ ⤕āĨ‡ ā¤Ŧā¤ŋā¤¨ā¤ž ⤕āĨ‰ā¤ŽāĨā¤ĒāĨˆā¤•āĨā¤Ÿ ⤔⤰ ⤏⤏āĨā¤¤ā¤ž ā¤ĢāĨ‰ā¤°āĨā¤Ž ā¤ĢāĨˆā¤•āĨā¤Ÿā¤°, ⤜ā¤ŋ⤏āĨ‡ ⤕⤏āĨā¤Ÿā¤Ž ā¤šā¤žā¤°āĨā¤Ąā¤ĩāĨ‡ā¤¯ā¤° ā¤ŽāĨ‡ā¤‚ ⤏āĨā¤Ĩā¤žā¤Ēā¤ŋ⤤ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤Ąā¤ŋ⤜ā¤ŧā¤žā¤‡ā¤¨ ⤕ā¤ŋā¤¯ā¤ž ā¤—ā¤¯ā¤ž ā¤šāĨˆāĨ¤ + +--- + +## đŸš€ā¤šāĨā¤¨āĨŒā¤¤āĨ€ + +ā¤Ēā¤ŋ⤛⤞āĨ‡ ā¤Ēā¤žā¤  ā¤ŽāĨ‡ā¤‚ ⤚āĨā¤¨āĨŒā¤¤āĨ€ ā¤ĨāĨ€ ⤕ā¤ŋ ⤆ā¤Ē ⤅ā¤Ē⤍āĨ‡ ⤘⤰, ⤏āĨā¤•āĨ‚⤞ ā¤¯ā¤ž ā¤•ā¤žā¤°āĨā¤¯ā¤¸āĨā¤Ĩ⤞ ā¤ŽāĨ‡ā¤‚ ⤜ā¤ŋ⤤⤍āĨ‡ ā¤šāĨ‹ ⤏⤕āĨ‡ ⤉⤤⤍āĨ‡ IoT ⤉ā¤Ē⤕⤰⤪āĨ‹ā¤‚ ⤕āĨ‹ ⤏āĨ‚ā¤šāĨ€ā¤Ŧā¤ĻāĨā¤§ ⤕⤰āĨ‡ā¤‚āĨ¤ ⤇⤏ ⤏āĨ‚ā¤šāĨ€ ā¤ŽāĨ‡ā¤‚ ā¤ĒāĨā¤°ā¤¤āĨā¤¯āĨ‡ā¤• ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤕āĨ‡ ⤞ā¤ŋā¤, ⤕āĨā¤¯ā¤ž ⤆ā¤Ē⤕āĨ‹ ā¤˛ā¤—ā¤¤ā¤ž ā¤šāĨˆ ⤕ā¤ŋ ā¤ĩāĨ‡ ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ā¤¯ā¤ž ⤏ā¤ŋ⤂⤗⤞-ā¤ŦāĨ‹ā¤°āĨā¤Ą ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤°, ā¤¯ā¤ž ā¤¯ā¤šā¤žā¤‚ ⤤⤕ â€‹â€‹ā¤•ā¤ŋ ā¤ĻāĨ‹ā¤¨āĨ‹ā¤‚ ⤕āĨ‡ ā¤Žā¤ŋā¤ļāĨā¤°ā¤Ŗ ⤕āĨ‡ ⤆⤏ā¤Ēā¤žā¤¸ ā¤Ŧā¤¨ā¤žā¤ ā¤—ā¤ ā¤šāĨˆā¤‚? + +## ā¤ĩāĨā¤¯ā¤žā¤–āĨā¤¯ā¤žā¤¨ ⤕āĨ‡ ā¤Ŧā¤žā¤Ļ ā¤ĒāĨā¤°ā¤ļāĨā¤¨āĨ‹ā¤¤āĨā¤¤ā¤°āĨ€ + +[ā¤ĩāĨā¤¯ā¤žā¤–āĨā¤¯ā¤žā¤¨ ⤕āĨ‡ ā¤Ŧā¤žā¤Ļ ā¤ĒāĨā¤°ā¤ļāĨā¤¨āĨ‹ā¤¤āĨā¤¤ā¤°āĨ€](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/4) + +## ā¤¸ā¤ŽāĨ€ā¤•āĨā¤ˇā¤ž ⤔⤰ ⤆⤤āĨā¤Ž ⤅⤧āĨā¤¯ā¤¯ā¤¨ + +* Arduino ā¤ĒāĨā¤˛āĨ‡ā¤Ÿā¤ĢāĨ‰ā¤°āĨā¤Ž ⤕āĨ‡ ā¤Ŧā¤žā¤°āĨ‡ ā¤ŽāĨ‡ā¤‚ ⤅⤧ā¤ŋ⤕ ā¤¸ā¤Žā¤ā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ [Arduino ⤗āĨ‡ā¤Ÿā¤ŋ⤂⤗ ⤏āĨā¤Ÿā¤žā¤°āĨā¤Ÿ ā¤—ā¤žā¤‡ā¤Ą](https://www.arduino.cc/en/Guide/Introduction) ā¤Ēā¤ĸā¤ŧāĨ‡ā¤‚āĨ¤ +* ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ ⤕āĨ‡ ā¤Ŧā¤žā¤°āĨ‡ ā¤ŽāĨ‡ā¤‚ ⤅⤧ā¤ŋ⤕ ā¤œā¤žā¤¨ā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ [ā¤°ā¤žā¤¸āĨā¤Ēā¤ŦāĨ‡ā¤°āĨ€ ā¤Ēā¤žā¤ˆ 4 ā¤•ā¤ž ā¤Ē⤰ā¤ŋ⤚⤝](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/) ā¤Ēā¤ĸā¤ŧāĨ‡ā¤‚āĨ¤ +* [⤇⤞āĨ‡ā¤•āĨā¤ŸāĨā¤°ā¤ŋ⤕⤞ ā¤‡ā¤‚ā¤œāĨ€ā¤¨ā¤ŋ⤝⤰ā¤ŋ⤂⤗ ⤜⤰āĨā¤¨ā¤˛ ā¤ŽāĨ‡ā¤‚ ⤏āĨ€ā¤ĒāĨ€ā¤¯āĨ‚, ā¤ā¤Žā¤ĒāĨ€ā¤¯āĨ‚, ā¤ā¤Žā¤¸āĨ€ā¤¯āĨ‚ ⤔⤰ ⤜āĨ€ā¤ĒāĨ€ā¤¯āĨ‚ ⤕āĨ‡ ⤅⤕āĨā¤¸ā¤° ā¤ĒāĨ‚⤛āĨ‡ ā¤œā¤žā¤¨āĨ‡ ā¤ĩā¤žā¤˛āĨ‡ ⤏ā¤ĩā¤žā¤˛ ⤕āĨā¤¯ā¤ž ā¤šāĨˆā¤‚](https://www.eejournal.com/article/what-the-faq-are-cpus-mpus-mcus-and-gpus/) ā¤ŽāĨ‡ā¤‚ ⤕āĨā¤› ⤅ā¤ĩā¤§ā¤žā¤°ā¤Ŗā¤žā¤“ā¤‚ ⤔⤰ ā¤ļā¤ŦāĨā¤ĻāĨ‹ā¤‚ ⤕āĨ‡ ā¤Ŧā¤žā¤°āĨ‡ ā¤ŽāĨ‡ā¤‚ ⤔⤰ ā¤œā¤žā¤¨āĨ‡ā¤‚āĨ¤ + +âœ…ā¤†ā¤Ē ⤕ā¤ŋ⤏ ā¤šā¤žā¤°āĨā¤Ąā¤ĩāĨ‡ā¤¯ā¤° ā¤ĒāĨā¤˛āĨ‡ā¤Ÿā¤ĢāĨ‰ā¤°āĨā¤Ž ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ā¤•ā¤°ā¤¨ā¤ž ā¤šā¤žā¤šā¤¤āĨ‡ ā¤šāĨˆā¤‚, ā¤¯ā¤ž ⤝ā¤Ļā¤ŋ ⤆ā¤Ē ⤇⤏⤕āĨ‡ ā¤Ŧā¤œā¤žā¤¯ ā¤¯ā¤š ⤤⤝ ⤕⤰⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ [ā¤šā¤žā¤°āĨā¤Ąā¤ĩāĨ‡ā¤¯ā¤° ā¤—ā¤žā¤‡ā¤Ą](https://github.com/microsoft/IoT-For-Beginners/blob/main/hardware.md) ā¤ŽāĨ‡ā¤‚ ⤞ā¤ŋ⤂⤕ ā¤•ā¤ž ā¤Ēā¤žā¤˛ā¤¨ ⤕⤰⤕āĨ‡ ā¤Ļā¤ŋā¤–ā¤žā¤ ā¤—ā¤ ā¤˛ā¤žā¤—ā¤¤āĨ‹ā¤‚ ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ ⤇⤍ ā¤—ā¤žā¤‡ā¤Ą ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰āĨ‡ā¤‚ ā¤ĩ⤰āĨā¤šāĨā¤…⤞ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰āĨ‡ā¤‚āĨ¤ + +## ā¤•ā¤žā¤°āĨā¤¯ā¤­ā¤žā¤° + +[ā¤Žā¤žā¤‡ā¤•āĨā¤°āĨ‹ā¤•ā¤‚ā¤ŸāĨā¤°āĨ‹ā¤˛ā¤° ⤔⤰ ⤏ā¤ŋ⤂⤗⤞-ā¤ŦāĨ‹ā¤°āĨā¤Ą ⤕⤂ā¤ĒāĨā¤¯āĨ‚ā¤Ÿā¤°āĨ‹ā¤‚ ⤕āĨ€ ⤤āĨā¤˛ā¤¨ā¤ž ⤔⤰ ⤤āĨā¤˛ā¤¨ā¤ž ⤕⤰āĨ‡ā¤‚](https://github.com/microsoft/IoT-For-Beginners/blob/main/1-getting-started/lessons/2-deeper-dive/assignment.md) From 157df73b4654994f19fd27de4f64461c729418ca Mon Sep 17 00:00:00 2001 From: Gabriel Borja Vergara <64596011+gabrielborja@users.noreply.github.com> Date: Fri, 10 Dec 2021 03:59:54 +0100 Subject: [PATCH 22/30] Change humidity to Soil Moisture sensor (#353) In line 35, is suggested to change the word "humidity" to "Soil Moisture" sensor. --- .../2-detect-soil-moisture/virtual-device-soil-moisture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2-farm/lessons/2-detect-soil-moisture/virtual-device-soil-moisture.md b/2-farm/lessons/2-detect-soil-moisture/virtual-device-soil-moisture.md index e2406961..edbbd1dc 100644 --- a/2-farm/lessons/2-detect-soil-moisture/virtual-device-soil-moisture.md +++ b/2-farm/lessons/2-detect-soil-moisture/virtual-device-soil-moisture.md @@ -32,7 +32,7 @@ Add the soil moisture sensor to the CounterFit app. 1. Ensure the *Pin* is set to *0* - 1. Select the **Add** button to create the humidity sensor on Pin 0 + 1. Select the **Add** button to create the *Soil Moisture* sensor on Pin 0 ![The soil moisture sensor settings](../../../images/counterfit-create-soil-moisture-sensor.png) From 3b757ac77920db05b9b8c43a6edc1131c0632ef5 Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Fri, 17 Dec 2021 21:55:21 -0500 Subject: [PATCH 23/30] replace thinglearn url with its new home as a subdomain --- 1-getting-started/lessons/3-sensors-and-actuators/README.md | 2 +- .../lessons/3-sensors-and-actuators/translations/README.ar.md | 2 +- .../lessons/3-sensors-and-actuators/translations/README.bn.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/1-getting-started/lessons/3-sensors-and-actuators/README.md b/1-getting-started/lessons/3-sensors-and-actuators/README.md index 9f7a1615..5ca8d156 100644 --- a/1-getting-started/lessons/3-sensors-and-actuators/README.md +++ b/1-getting-started/lessons/3-sensors-and-actuators/README.md @@ -207,7 +207,7 @@ For every device you listed, what sensors and actuators are they connected to? W ## Review & Self Study -* Read up on electricity and circuits on [ThingLearn](http://www.thinglearn.com/essentials/). +* Read up on electricity and circuits on [ThingLearn](http://thinglearn.jenlooper.com/curriculum/). * Read about the different types of temperature sensors on the [Seeed Studios Temperature Sensors guide](https://www.seeedstudio.com/blog/2019/10/14/temperature-sensors-for-arduino-projects/) * Read about LEDs on the [Wikipedia LED page](https://wikipedia.org/wiki/Light-emitting_diode) diff --git a/1-getting-started/lessons/3-sensors-and-actuators/translations/README.ar.md b/1-getting-started/lessons/3-sensors-and-actuators/translations/README.ar.md index 0f17d39c..2c03f2ee 100644 --- a/1-getting-started/lessons/3-sensors-and-actuators/translations/README.ar.md +++ b/1-getting-started/lessons/3-sensors-and-actuators/translations/README.ar.md @@ -199,7 +199,7 @@ ## Ų…ØąØ§ØŦؚ؊ ŲˆØ¯ØąØ§ØŗØŠ ذاØĒŲŠØŠ -* Ø§Ų‚ØąØŖ ØšŲ† Ø§Ų„ŲƒŲ‡ØąØ¨Ø§ØĄ ŲˆØ§Ų„Ø¯ŲˆØ§ØĻØą ØšŲ„Ų‰ ThingLearn. +* Ø§Ų‚ØąØŖ ØšŲ† Ø§Ų„ŲƒŲ‡ØąØ¨Ø§ØĄ ŲˆØ§Ų„Ø¯ŲˆØ§ØĻØą ØšŲ„Ų‰ ThingLearn. * Ø§Ų‚ØąØŖ ØšŲ† Ø§Ų„ØŖŲ†ŲˆØ§Øš Ø§Ų„Ų…ØŽØĒŲ„ŲØŠ Ų…Ų† Ų…ØŗØĒØ´ØšØąØ§ØĒ Ø¯ØąØŦØŠ Ø§Ų„Ø­ØąØ§ØąØŠ ؁؊ Ø¯Ų„ŲŠŲ„ Ų…ØŗØĒØ´ØšØąØ§ØĒ Ø¯ØąØŦØŠ Ø§Ų„Ø­ØąØ§ØąØŠ ؁؊ Ø§Ų„Ø§ØŗØĒŲˆØ¯ŲŠŲˆŲ‡Ø§ * Ø§Ų‚ØąØŖ ØšŲ† Ų…ØĩØ§Ø¨ŲŠØ­ LED ØšŲ„Ų‰ ØĩŲØ­ØŠ Wikipedia LED diff --git a/1-getting-started/lessons/3-sensors-and-actuators/translations/README.bn.md b/1-getting-started/lessons/3-sensors-and-actuators/translations/README.bn.md index af95115c..4e8700a3 100644 --- a/1-getting-started/lessons/3-sensors-and-actuators/translations/README.bn.md +++ b/1-getting-started/lessons/3-sensors-and-actuators/translations/README.bn.md @@ -194,7 +194,7 @@ ## āϰāĻŋāĻ­āĻŋāω āĻāĻŦāĻ‚ āĻ¸ā§āĻŦ-āĻ…āĻ§ā§āϝ⧟āύ -* [ThingLearn](http://www.thinglearn.com/essentials/) āĻĨ⧇āϕ⧇ āχāϞ⧇āĻ•ā§āĻŸā§āϰāĻŋāϏāĻŋāϟāĻŋ āĻ“ āϏāĻžāĻ°ā§āĻ•āĻŋāĻŸā§‡āϰ āĻŦā§āϝāĻžāĻĒāĻžāϰ⧇ āĻĒ⧜āĻžāĨ¤ +* [ThingLearn](http://thinglearn.jenlooper.com/curriculum/) āĻĨ⧇āϕ⧇ āχāϞ⧇āĻ•ā§āĻŸā§āϰāĻŋāϏāĻŋāϟāĻŋ āĻ“ āϏāĻžāĻ°ā§āĻ•āĻŋāĻŸā§‡āϰ āĻŦā§āϝāĻžāĻĒāĻžāϰ⧇ āĻĒ⧜āĻžāĨ¤ * [Seeed Studios Temperature Sensors guide](https://www.seeedstudio.com/blog/2019/10/14/temperature-sensors-for-arduino-projects/) āĻĨ⧇āϕ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϧāϰāϪ⧇āϰ āϤāĻžāĻĒāĻŽāĻžāĻ¤ā§āϰāĻž āϏ⧇āĻ¨ā§āϏāϰ⧇āϰ āĻŦā§āϝāĻžāĻĒāĻžāϰ⧇ āϜāĻžāύāĻžāĨ¤ * āĻāϞāχāĻĄāĻŋ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ [Wikipedia LED page](https://wikipedia.org/wiki/Light-emitting_diode) āĻĨ⧇āϕ⧇ āφāϰ⧋ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āϧāĻžāϰāĻŖāĻž āϞāĻžāĻ­ āĻ•āϰāĻžāĨ¤ From 597d82c5db53b8b7a2de5b950af5bd606e1474b7 Mon Sep 17 00:00:00 2001 From: Marty Hummel <71525323+marty-optum@users.noreply.github.com> Date: Wed, 16 Feb 2022 15:58:07 -0500 Subject: [PATCH 24/30] Update README.md (#360) Add line to capture response_body --- 3-transport/lessons/4-geofences/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/3-transport/lessons/4-geofences/README.md b/3-transport/lessons/4-geofences/README.md index 2fdf1d2f..0891b67b 100644 --- a/3-transport/lessons/4-geofences/README.md +++ b/3-transport/lessons/4-geofences/README.md @@ -416,10 +416,11 @@ Earlier in this lesson you used curl to query a geofence to see if a point was l The items in the `params` dictionary will match the key value pairs you used when calling the web API via curl. -1. Add the following line of code to call the web API: +1. Add the following lines of code to call the web API: ```python response = requests.get(url, params=params) + response_body = json.loads(response.text) ``` This calls the URL with the parameters, and gets back a response object. From 33f7e3c297e12a3dcdde976dca6c38bdce86e399 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Feb 2022 12:58:43 -0800 Subject: [PATCH 25/30] Bump follow-redirects from 1.13.1 to 1.14.8 in /quiz-app (#361) Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.13.1 to 1.14.8. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.13.1...v1.14.8) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jim Bennett --- quiz-app/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/quiz-app/package-lock.json b/quiz-app/package-lock.json index ba15a276..97e40630 100644 --- a/quiz-app/package-lock.json +++ b/quiz-app/package-lock.json @@ -6673,9 +6673,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", - "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==", + "version": "1.14.8", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", + "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", "dev": true, "funding": [ { @@ -20466,9 +20466,9 @@ } }, "follow-redirects": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", - "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==", + "version": "1.14.8", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", + "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", "dev": true }, "for-in": { From 27dfac9813354347c530482379e8b834637ff1c0 Mon Sep 17 00:00:00 2001 From: "Charles Emmanuel S. Ndiaye" Date: Fri, 4 Mar 2022 19:12:44 +0000 Subject: [PATCH 26/30] add missing translated text (#367) [fr] add missing translated text --- translations/TRANSLATIONS.fr.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/translations/TRANSLATIONS.fr.md b/translations/TRANSLATIONS.fr.md index 3afe7579..32aebdc0 100644 --- a/translations/TRANSLATIONS.fr.md +++ b/translations/TRANSLATIONS.fr.md @@ -17,6 +17,12 @@ Lorsque vous traduisez le Readme initial, reliez les autres traductions à votre Dans la mesure ou _[language]_ est une abrÊviation linguistique de deux lettres suivant la norme ISO 639-1 (par exemple `README.es.md` pour l'espagnol et `README.nl.md` pour l'allemand). +> Important: lorsque vous traduisez du texte dans ce dÊpôt, assurez vous de ne pas utiliser de traduction automatique. Nous vÊrifierons les traductions via la communautÊ, veuillez donc vous porter volontaire uniquement pour les traductions dans les langues que vous maÃŽtrisez. + +## Liens + +Lors de la traduction, veuillez mettre à jour les liens vers les fichiers traduits. Si un fichier n'a pas ÊtÊ traduit, conservez le lien vers la version anglaise. Comme chaque fichier se trouve dans un dossier `translations`, vous devrez Êgalement mettre à jour le chemin des liens pour les hyperliens et les images. + ## Questionnaires Ajoutez votre traduction au quiz-app en ajoutant un fichier ici : https://github.com/microsoft/IoT-For-Beginners/tree/main/quiz-app/src/assets/translations. Veuillez ne pas localiser les mots 'true' ou 'false'. Merci ! From f26a30f24f8a63aa6df19934e49e7aecc5892bc2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Mar 2022 16:00:13 -0800 Subject: [PATCH 27/30] Bump url-parse from 1.5.1 to 1.5.10 in /quiz-app (#366) Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.1 to 1.5.10. - [Release notes](https://github.com/unshiftio/url-parse/releases) - [Commits](https://github.com/unshiftio/url-parse/compare/1.5.1...1.5.10) --- updated-dependencies: - dependency-name: url-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jim Bennett --- quiz-app/package-lock.json | 540 +------------------------------------ 1 file changed, 6 insertions(+), 534 deletions(-) diff --git a/quiz-app/package-lock.json b/quiz-app/package-lock.json index 97e40630..48273b72 100644 --- a/quiz-app/package-lock.json +++ b/quiz-app/package-lock.json @@ -10219,45 +10219,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-discard-comments/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-comments/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-discard-comments/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-discard-duplicates": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", @@ -10294,45 +10255,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-discard-overridden/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-discard-overridden/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-discard-overridden/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-load-config": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", @@ -10394,51 +10316,12 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-merge-longhand/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true }, - "node_modules/postcss-merge-longhand/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-merge-longhand/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-merge-rules": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", @@ -10504,51 +10387,12 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-minify-gradients/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true }, - "node_modules/postcss-minify-gradients/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-minify-gradients/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-minify-params": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", @@ -10566,51 +10410,12 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-minify-params/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "node_modules/postcss-minify-params/node_modules/postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true }, - "node_modules/postcss-minify-params/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-minify-params/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-minify-selectors": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", @@ -10626,24 +10431,6 @@ "node": ">=6.9.0" } }, - "node_modules/postcss-minify-selectors/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -10658,27 +10445,6 @@ "node": ">=8" } }, - "node_modules/postcss-minify-selectors/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-minify-selectors/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-modules-extract-imports": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", @@ -10691,45 +10457,6 @@ "node": ">= 6" } }, - "node_modules/postcss-modules-extract-imports/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-modules-extract-imports/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-modules-extract-imports/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-modules-local-by-default": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", @@ -10758,45 +10485,6 @@ "node": ">= 6" } }, - "node_modules/postcss-modules-scope/node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-modules-scope/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-modules-scope/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/postcss-modules-values": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", @@ -13661,9 +13349,9 @@ } }, "node_modules/url-parse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", - "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, "dependencies": { "querystringify": "^2.1.1", @@ -23283,34 +22971,6 @@ "dev": true, "requires": { "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-discard-duplicates": { @@ -23338,34 +22998,6 @@ "dev": true, "requires": { "postcss": "^7.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-load-config": { @@ -23415,37 +23047,11 @@ "stylehacks": "^4.0.0" }, "dependencies": { - "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -23506,37 +23112,11 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -23554,37 +23134,11 @@ "uniqs": "^2.0.0" }, "dependencies": { - "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -23600,17 +23154,6 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { - "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -23621,21 +23164,6 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -23646,34 +23174,6 @@ "dev": true, "requires": { "postcss": "^7.0.5" - }, - "dependencies": { - "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-modules-local-by-default": { @@ -23696,34 +23196,6 @@ "requires": { "postcss": "^7.0.6", "postcss-selector-parser": "^6.0.0" - }, - "dependencies": { - "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-modules-values": { @@ -26111,9 +25583,9 @@ } }, "url-parse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", - "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, "requires": { "querystringify": "^2.1.1", From 2a27c8c61a252a7199109f9cbb959a9003045742 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Mar 2022 16:00:41 -0800 Subject: [PATCH 28/30] Bump prismjs from 1.23.0 to 1.27.0 (#365) Bumps [prismjs](https://github.com/PrismJS/prism) from 1.23.0 to 1.27.0. - [Release notes](https://github.com/PrismJS/prism/releases) - [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md) - [Commits](https://github.com/PrismJS/prism/compare/v1.23.0...v1.27.0) --- updated-dependencies: - dependency-name: prismjs dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jim Bennett --- package-lock.json | 107 ++++------------------------------------------ 1 file changed, 9 insertions(+), 98 deletions(-) diff --git a/package-lock.json b/package-lock.json index 29bec53a..9e30ae3d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -380,18 +380,6 @@ "node": ">=6" } }, - "node_modules/clipboard": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.8.tgz", - "integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==", - "dev": true, - "optional": true, - "dependencies": { - "good-listener": "^1.2.2", - "select": "^1.1.2", - "tiny-emitter": "^2.0.0" - } - }, "node_modules/cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", @@ -587,13 +575,6 @@ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", "dev": true }, - "node_modules/delegate": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", - "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", - "dev": true, - "optional": true - }, "node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -1031,16 +1012,6 @@ "node": ">=8" } }, - "node_modules/good-listener": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", - "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", - "dev": true, - "optional": true, - "dependencies": { - "delegate": "^3.1.2" - } - }, "node_modules/got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", @@ -1841,12 +1812,12 @@ } }, "node_modules/prismjs": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.23.0.tgz", - "integrity": "sha512-c29LVsqOaLbBHuIbsTxaKENh1N2EQBOHaWv7gkHN4dgRbxSREqDnDbtFJYdpPauS4YCplMSNCABQ6Eeor69bAA==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", + "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", "dev": true, - "optionalDependencies": { - "clipboard": "^2.0.0" + "engines": { + "node": ">=6" } }, "node_modules/process-nextick-args": { @@ -2126,13 +2097,6 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "node_modules/select": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", - "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", - "dev": true, - "optional": true - }, "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -2345,13 +2309,6 @@ "node": ">=8" } }, - "node_modules/tiny-emitter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", - "dev": true, - "optional": true - }, "node_modules/tinydate": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.3.0.tgz", @@ -3081,18 +3038,6 @@ "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", "dev": true }, - "clipboard": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.8.tgz", - "integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==", - "dev": true, - "optional": true, - "requires": { - "good-listener": "^1.2.2", - "select": "^1.1.2", - "tiny-emitter": "^2.0.0" - } - }, "cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", @@ -3257,13 +3202,6 @@ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", "dev": true }, - "delegate": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", - "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", - "dev": true, - "optional": true - }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -3615,16 +3553,6 @@ "ini": "1.3.7" } }, - "good-listener": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", - "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", - "dev": true, - "optional": true, - "requires": { - "delegate": "^3.1.2" - } - }, "got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", @@ -4245,13 +4173,10 @@ "dev": true }, "prismjs": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.23.0.tgz", - "integrity": "sha512-c29LVsqOaLbBHuIbsTxaKENh1N2EQBOHaWv7gkHN4dgRbxSREqDnDbtFJYdpPauS4YCplMSNCABQ6Eeor69bAA==", - "dev": true, - "requires": { - "clipboard": "^2.0.0" - } + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", + "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", + "dev": true }, "process-nextick-args": { "version": "2.0.1", @@ -4482,13 +4407,6 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "select": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", - "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", - "dev": true, - "optional": true - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -4663,13 +4581,6 @@ "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", "dev": true }, - "tiny-emitter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", - "dev": true, - "optional": true - }, "tinydate": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.3.0.tgz", From 89e9d55d3a01e1d322d57cc9bcc2c737c21c5f00 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Mar 2022 16:00:55 -0800 Subject: [PATCH 29/30] Bump node-fetch from 2.6.1 to 2.6.7 (#363) Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.6.1 to 2.6.7. - [Release notes](https://github.com/node-fetch/node-fetch/releases) - [Commits](https://github.com/node-fetch/node-fetch/compare/v2.6.1...v2.6.7) --- updated-dependencies: - dependency-name: node-fetch dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jim Bennett --- package-lock.json | 72 ++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 65 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9e30ae3d..f9403080 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1548,12 +1548,23 @@ "dev": true }, "node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, "engines": { "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, "node_modules/normalize-path": { @@ -2348,6 +2359,12 @@ "node": ">=0.6" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, "node_modules/tweezer.js": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/tweezer.js/-/tweezer.js-1.5.0.tgz", @@ -2523,6 +2540,22 @@ "node": ">= 0.4.0" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -3981,10 +4014,13 @@ "dev": true }, "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } }, "normalize-path": { "version": "3.0.0", @@ -4608,6 +4644,12 @@ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", "dev": true }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, "tweezer.js": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/tweezer.js/-/tweezer.js-1.5.0.tgz", @@ -4749,6 +4791,22 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "dev": true }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", From b22fc04e792daeba026fffcfcc9684279eed0eee Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Tue, 8 Mar 2022 15:24:52 -0500 Subject: [PATCH 30/30] adding student page link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f3918652..a6484c9a 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Meet the team! > **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). -> **Students**, to use this curriculum on your own, fork the entire repo and complete the exercises on your own, starting with a pre-lecture quiz, then reading the lecture and completing the rest of the activities. Try to create the projects by comprehending the lessons rather than copying the solution code; however that code is available in the /solutions folders in each project-oriented lesson. Another idea would be to form a study group with friends and go through the content together. For further study, we recommend [Microsoft Learn](https://docs.microsoft.com/users/jimbobbennett/collections/ke2ehd351jopwr?WT.mc_id=academic-17441-jabenn). +> **[Students](https://aka.ms/student-page)**, to use this curriculum on your own, fork the entire repo and complete the exercises on your own, starting with a pre-lecture quiz, then reading the lecture and completing the rest of the activities. Try to create the projects by comprehending the lessons rather than copying the solution code; however that code is available in the /solutions folders in each project-oriented lesson. Another idea would be to form a study group with friends and go through the content together. For further study, we recommend [Microsoft Learn](https://docs.microsoft.com/users/jimbobbennett/collections/ke2ehd351jopwr?WT.mc_id=academic-17441-jabenn). For a video overview of this course, check out this video: