From f6b8983fe00bf3d349a341bc4031090629c6732f Mon Sep 17 00:00:00 2001 From: Jim Bennett Date: Fri, 2 Jul 2021 11:15:42 -0700 Subject: [PATCH 1/6] Adding Wio purchase link (#146) * Adding content * Update en.json * Update README.md * Update TRANSLATIONS.md * Adding lesson tempolates * Fixing code files with each others code in * Update README.md * Adding lesson 16 * Adding virtual camera * Adding Wio Terminal camera capture * Adding wio terminal code * Adding SBC classification to lesson 16 * Adding challenge, review and assignment * Adding images and using new Azure icons * Update README.md * Update iot-reference-architecture.png * Adding structure for JulyOT links * Removing icons * Sketchnotes! * Create lesson-1.png * Starting on lesson 18 * Updated sketch * Adding virtual distance sensor * Adding Wio Terminal image classification * Update README.md * Adding structure for project 6 and wio terminal distance sensor * Adding some of the smart timer stuff * Updating sketchnotes * Adding virtual device speech to text * Adding chapter 21 * Language tweaks * Lesson 22 stuff * Update en.json * Bumping seeed libraries * Adding functions lab to lesson 22 * Almost done with LUIS * Update README.md * Reverting sunlight sensor change Fixes #88 * Structure * Adding speech to text lab for Pi * Adding virtual device text to speech lab * Finishing lesson 23 * Clarifying privacy Fixes #99 * Update README.md * Update hardware.md * Update README.md * Fixing some code samples that were wrong * Adding more on translation * Adding more on translator * Update README.md * Update README.md * Adding public access to the container * First part of retail object detection * More on stock lesson * Tweaks to maps lesson * Update README.md * Update pi-sensor.md * IoT Edge install stuffs * Notes on consumer groups and not running the event monitor at the same time * Assignment for object detector * Memory notes for speech to text * Migrating LUIS to an HTTP trigger * Adding Wio Terminal speech to text * Changing smart timer to functions from hub * Changing a param to body to avoid URL encoding * Update README.md * Tweaks before IoT Show * Adding sketchnote links * Adding object detection labs * Adding more on object detection * More on stock detection * Finishing stock counting * Tidying stuff * Adding wio purchase link --- hardware.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardware.md b/hardware.md index 896ff745..f8f9df06 100644 --- a/hardware.md +++ b/hardware.md @@ -16,7 +16,7 @@ You will also need a few non-technical items, such as soil or a pot plant, and f Seeed Studios have very kindly made all the hardware available as easy to purchase kits: -* [IoT for beginners with Seeed and Microsoft - Wio Terminal Starter Kit]() +* [IoT for beginners with Seeed and Microsoft - Wio Terminal Starter Kit](https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Wio-Terminal-Starter-Kit-p-5006.html) * [IoT for beginners with Seeed and Microsoft - Raspberry Pi 4 Starter Kit](https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Raspberry-Pi-Starter-Kit.html) ## Arduino From 8e417931c702a552b6c615f9b1e977a893a02d33 Mon Sep 17 00:00:00 2001 From: "Mohammad Iftekher (Iftu) Ebne Jalal" Date: Sat, 3 Jul 2021 00:19:06 +0600 Subject: [PATCH 2/6] [Bn Translation] Quiz (#141) * dummy txt for Trans placeholder * Update .dummy.md * translations structured with dummy * translations structured with dummy * dummy.md updated * Update .dummy.md * Update all .dummy.md * Fixed .dummy * Create bn.json * Update bn.json * Update bn.json * Update bn.json * Update bn.json Co-authored-by: Jim Bennett --- quiz-app/src/assets/translations/bn.json | 1017 ++++++++++++++++++++++ 1 file changed, 1017 insertions(+) create mode 100644 quiz-app/src/assets/translations/bn.json diff --git a/quiz-app/src/assets/translations/bn.json b/quiz-app/src/assets/translations/bn.json new file mode 100644 index 00000000..737d911f --- /dev/null +++ b/quiz-app/src/assets/translations/bn.json @@ -0,0 +1,1017 @@ +[ + { + "title": "বিগিনারদের জন্য আইওটি: কুইজ", + "complete": "অভিনন্দন, কুইজ সফলভাবে সম্পূর্ণ হয়েছে !", + "error": "দুঃখিত, আবার চেষ্টা করুন", + "quizzes": [ + { + "id": 1, + "title": "লেসন:১ - আইওটি পরিচিতি: লেকচার পূর্ববর্তী কুইজ", + "quiz": [ + { + "questionText": "IoT শব্দে I দ্বারা বোঝানো হয় :", + "answerOptions": [ + { + "answerText": "Internet(ইন্টারনেট)", + "isCorrect": "true" + }, + { + "answerText": "Iridium(ইরিডিয়াম)", + "isCorrect": "false" + }, + { + "answerText": "Ironing(আয়রনিং)", + "isCorrect": "false" + } + ] + }, + { + "questionText": "২০২০ এর শেষে আইওটি ডিভাইসের ব্যবহারের আনুমানিক সংখ্যা কত?", + "answerOptions": [ + { + "answerText": "৩০", + "isCorrect": "false" + }, + { + "answerText": "৩০ মিলিয়ন", + "isCorrect": "false" + }, + { + "answerText": "৩০ বিলিয়ন", + "isCorrect": "true" + } + ] + }, + { + "questionText": "স্মার্টফোন হলো আইওটি ডিভাইস", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "true" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 2, + "title": "লেসন:১ - আইওটি পরিচিতি : লেকচার পরবর্তী কুইজ", + "quiz": [ + { + "questionText": "আইওটি ডিভাইসগুলিকে সর্বদা ইন্টারনেটে সংযুক্ত থাকা দরকার", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "false" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "true" + } + ] + }, + { + "questionText": "আইওটি ডিভাইস সর্বাবস্থায় সুরক্ষিত", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "false" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "true" + } + ] + }, + { + "questionText": "কম পাওয়ারে চালিত আইওটি ডিভাইসে আর্টিফিশিয়াল ইন্টেলিজেন্স চালানো যেতে পারে", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "true" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 3, + "title": "লেসন ২ - IoT এর আরো গভীরে : লেকচার পূর্ববর্তী কুইজ", + "quiz": [ + { + "questionText": "IoT শব্দে T বলতে বোঝানো হয়:", + "answerOptions": [ + { + "answerText": "Transistors(ট্রানজিস্টর)", + "isCorrect": "false" + }, + { + "answerText": "Things(থিংস)", + "isCorrect": "true" + }, + { + "answerText": "Turkeys(টার্কিস)", + "isCorrect": "false" + } + ] + }, + { + "questionText": "আইওটি ডিভাইসগুলি তাদের চারপাশের বিশ্ব থেকে তথ্য সংগ্রহ করতে ব্যবহার করে :", + "answerOptions": [ + { + "answerText": "সেন্সর", + "isCorrect": "true" + }, + { + "answerText": "অ্যাকচুয়েটর", + "isCorrect": "false" + }, + { + "answerText": "বার্তাবাহী কবুতর", + "isCorrect": "false" + } + ] + }, + { + "questionText": "আইওটি ডিভাইসগুলি গড়পড়তা ডেস্কটপ বা ল্যাপটপ কম্পিউটারের চেয়ে বেশি পাওয়ার ব্যবহার করে", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "false" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 4, + "title": "লেসন ২ - IoT এর আরো গভীরে : লেকচার পরবর্তী কুইজ", + "quiz": [ + { + "questionText": "সিপিইউ নির্দেশচক্রের (instruction cycle) তিনটি ধাপ হল:", + "answerOptions": [ + { + "answerText": "ডিকোড, এক্সিকিউট, ফেচ", + "isCorrect": "false" + }, + { + "answerText": " ফেচ, ডিকোড, এক্সিকিউট", + "isCorrect": "true" + }, + { + "answerText": "থামা, কোলাবোরেট করা, শোনা", + "isCorrect": "false" + } + ] + }, + { + "questionText": "রাস্পবেরি পাই কোন অপারেটিং সিস্টেম রান করে?", + "answerOptions": [ + { + "answerText": "কোন অপারেটিং সিস্টেম রান করেনা ", + "isCorrect": "false" + }, + { + "answerText": "উইন্ডোজ ৯৫", + "isCorrect": "false" + }, + { + "answerText": "রাস্পবেরি পাই ওএস", + "isCorrect": "true" + } + ] + }, + { + "questionText": "আইওটি ডিভাইসগুলি সাধারণত দ্রুত চলে এবং সাধারণ ডেস্কটপ বা ল্যাপটপ কম্পিউটারের চেয়ে বেশি মেমোরি থাকে", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "false" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 5, + "title": "লেসন ৩ - সেন্সর এবং অ্যাকচুয়েটরের সাহায্যে বাহ্যিক জগতের সাথে যোগাযোগ: লেকচার পূর্ববর্তী কুইজ", + "quiz": [ + { + "questionText": "এলইডি একধরণের সেন্সর:", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "false" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "true" + } + ] + }, + { + "questionText": "সেন্সর ব্যবহৃত হয়:", + "answerOptions": [ + { + "answerText": "বাহ্যিক জগতের ডেটা সংগ্রহ করতে ", + "isCorrect": "true" + }, + { + "answerText": "বাহ্যিক জগতকে নিয়ন্ত্রণ করতে", + "isCorrect": "false" + }, + { + "answerText": "শুধু তাপমাত্রা মাপতে", + "isCorrect": "false" + } + ] + }, + { + "questionText": "অ্যাকচুয়েটর ব্যবহৃত হয়:", + "answerOptions": [ + { + "answerText": "বাহ্যিক জগতের ডেটা সংগ্রহ করতে ", + "isCorrect": "false" + }, + { + "answerText": "বাহ্যিক জগতকে নিয়ন্ত্রণ করতে", + "isCorrect": "true" + }, + { + "answerText": "ইনপ্স্যুরেন্স রিস্ক হিসাব করতে", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 6, + "title": "লেসন ৩ - সেন্সর এবং অ্যাকচুয়েটরের সাহায্যে বাহ্যিক জগতের সাথে যোগাযোগ: লেকচার পরবর্তী কুইজ", + "quiz": [ + { + "questionText": "ডিজিটাল সেন্সরগুলি ডেটা প্রেরণ করে:", + "answerOptions": [ + { + "answerText": "ভোল্টেজ রেন্জ অনুসারে", + "isCorrect": "false" + }, + { + "answerText": "হাই(High) এবং লো(low) ভোল্টেজ হিসেবে", + "isCorrect": "true" + }, + { + "answerText": "ইমেইলে", + "isCorrect": "false" + } + ] + }, + { + "questionText": "একটি বাটনে প্রেস করলে কোন ডিজিটাল সিগন্যাল প্রেরণ করা হয়?", + "answerOptions": [ + { + "answerText": "0", + "isCorrect": "false" + }, + { + "answerText": "1", + "isCorrect": "true" + } + ] + }, + { + "questionText": "পালস-উইথ মডুলেশন ব্যবহার করে ডিজিটাল ডিভাইস থেকে অ্যানালগ অ্যাকিউটরেটরগুলি নিয়ন্ত্রণ করা যাবে", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "true" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 7, + "title": "লেসন ৪ - ডিভাইসকে ইন্টারনেটের সাথে যুক্ত করা: লেকচার পূর্ববর্তী কুইজ", + "quiz": [ + { + "questionText": "আইওটি ডিভাইসগুলি সর্বদা কাজ করার জন্য ইন্টারনেটে সংযুক্ত থাকা প্রয়োজন", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "false" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "true" + } + ] + }, + { + "questionText": "ওয়েব অ্যাপ্লিকেশন বা অন্যান্য ওয়েব APIগুলির মত আইওটি ডিভাইসগুলি সর্বদা HTTP এর মাধ্যমে যোগাযোগ করে", + "answerOptions": [ + { + "answerText": "মিথ্যা", + "isCorrect": "true" + }, + { + "answerText": "সত্য", + "isCorrect": "false" + } + ] + }, + { + "questionText": "আইওটি ডিভাইসগুলি তাদের সকল সিদ্ধান্ত নেওয়ার জন্য ক্লাউডের উপর নির্ভর করে:", + "answerOptions": [ + { + "answerText": "মিথ্যা", + "isCorrect": "true" + }, + { + "answerText": "সত্য", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 8, + "title": "লেসন ৪ - ডিভাইসকে ইন্টারনেটের সাথে যুক্ত করা: লেকচার পরবর্তী কুইজ", + "quiz": [ + { + "questionText": "সেন্সর থেকে সংগ্রহ করা এবং ক্লাউডে প্রেরণ করা ডেটাকে বলা হয়:", + "answerOptions": [ + { + "answerText": "টেলিমেট্রি", + "isCorrect": "true" + }, + { + "answerText": "কমান্ড", + "isCorrect": "false" + }, + { + "answerText": "পরিমাপ", + "isCorrect": "false" + } + ] + }, + { + "questionText": "আইওটি ডিভাইস অফলাইনে থাকলে কোন কমান্ডের কী হবে:", + "answerOptions": [ + { + "answerText": "ডিভাইসটি অনলাইনে পুনরায় যুক্ত হলে, কমান্ড আবারো পাঠাতে হবে", + "isCorrect": "false" + }, + { + "answerText": "ডিভাইসটি অনলাইনে পুনরায় যুক্ত হলওে, কমান্ড আবারো পাঠানো উচিত হবেনা", + "isCorrect": "false" + }, + { + "answerText": "এটি কমান্ড, ডিভাইসটি এবং আইওটি অ্যাপ্লিকেশনটির প্রয়োজনীয়তার উপর নির্ভর করে", + "isCorrect": "true" + } + ] + }, + { + "questionText": "MQTT অর্থাৎ Message Queueing Telemetry Transport এ ম্যাসেজের সারি থাকে:", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "false" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 9, + "title": "লেসন ৫ - গাছের বৃদ্ধি অনুমান করা: লেকচার পূর্ববর্তী কুইজ", + "quiz": [ + { + "questionText": "আইট ডিভাইসগুলি কৃষিক্ষেত্রে সহায়তা করতে ব্যবহার করা যেতে পারে", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "true" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "false" + } + ] + }, + { + "questionText": "উদ্ভিদের প্রয়োজনীয়তার মধ্যে রয়েছে: (সেরা উত্তরটি বেছে নিতে হবে)", + "answerOptions": [ + { + "answerText": "কার্বন ডাইঅক্সাইড, পানি, পুষ্টি উপাদান", + "isCorrect": "false" + }, + { + "answerText": "কার্বন ডাইঅক্সাইড, পানি, পুষ্টি উপাদান, আলো", + "isCorrect": "false" + }, + { + "answerText": "কার্বন ডাইঅক্সাইড, পানি, পুষ্টি উপাদান, আলো, উষ্ণতা", + "isCorrect": "true" + } + ] + }, + { + "questionText": "উন্নত দেশগুলির কৃষকদের ব্যবহারের জন্য সেন্সরগুলি অত্যন্ত ব্যয়বহুল:", + "answerOptions": [ + { + "answerText": "মিথ্যা", + "isCorrect": "true" + }, + { + "answerText": "সত্য", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 10, + "title": "লেসন ৫ - গাছের বৃদ্ধি অনুমান করা: লেকচার পরবর্তী কুইজ", + "quiz": [ + { + "questionText": "উদ্ভিদের বৃদ্ধি তাপমাত্রার উপর নির্ভরশীল", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "true" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "false" + } + ] + }, + { + "questionText": "উদ্ভিদ বৃদ্ধির জন্য কোন তাপমাত্রাগুলো বিবেচনা করতে হবে", + "answerOptions": [ + { + "answerText": "সর্বনিম্ন, সর্বোচ্চ", + "isCorrect": "false" + }, + { + "answerText": "নিম্নমান, পরিমিত, সর্বোচ্চ", + "isCorrect": "true" + }, + { + "answerText": "শুধুমাত্র সর্বোচ্চ", + "isCorrect": "false" + } + ] + }, + { + "questionText": "ক্রমবর্ধমান বৃদ্ধির ডিগ্রি (Growing Degree Days) দিনগুলি কোন সূত্রটি ব্যবহার করে গণনা করা হয়:", + "answerOptions": [ + { + "answerText": "(day max + day min) - plant base", + "isCorrect": "false" + }, + { + "answerText": "((day max + day min) / 2) - plant base", + "isCorrect": "true" + }, + { + "answerText": "((day min + plant base) / 2)", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 11, + "title": "লেসন ৬ - মাটির আর্দ্রতা পরিমাপ: লেকচার পূর্ববর্তী কুইজ", + "quiz": [ + { + "questionText": "আইওটি ডিভাইসগুলি মাটির আর্দ্রতার মতো চারিপার্শ্বিক বৈশিষ্ট্যগুলি সনাক্ত করতে ব্যবহার করা যেতে পারে", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "true" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "false" + } + ] + }, + { + "questionText": "এর মধ্যে কোনটি গাছের বৃদ্ধির জন্য সমস্যা সৃষ্টি করতে পারে (একটি বাছাই করতে হবে)?", + "answerOptions": [ + { + "answerText": "খুব অল্প পানি", + "isCorrect": "false" + }, + { + "answerText": "খুব বেশি পানি", + "isCorrect": "false" + }, + { + "answerText": "খুব অল্প বা খুব বেশি পান", + "isCorrect": "true" + } + ] + }, + { + "questionText": "সমস্ত সেন্সরে স্ট্যান্ডার্ড ইউনিটগুলির জন্য আগে থেকেই ক্যালিব্রেটেড থাকে", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "false" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 12, + "title": "লেসন ৬ - মাটির আর্দ্রতা পরিমাপ: লেকচার পরবর্তী কুইজ", + "quiz": [ + { + "questionText": "মাটির আর্দ্রতা পরিমাপ করার সময়, রোধক (resistive) এবং ক্যাপাসিটিভ আর্দ্রতা সেন্সরের মধ্যে একটি পার্থক্য:", + "answerOptions": [ + { + "answerText": "আর্দ্রতা স্তর বাড়ার সাথে সাথে রোধক সেন্সরগুলির ভোল্টেজ মান বাড়ে এবং ক্যাপাসিটিভ সেন্সরগুলির জন্য নিচে নেমে যায়", + "isCorrect": "true" + }, + { + "answerText": "আর্দ্রতা স্তর বাড়ার সাথে সাথে ভোল্টেজ রোধক সেন্সরগুলির ভোল্টেজ মান কমে এবং ক্যাপাসিটিভ সেন্সরগুলির জন্য বেড়ে যায়", + "isCorrect": "false" + }, + { + "answerText": "আর্দ্রতা স্তর বাড়ার সাথে সাথে রোধক সেন্সর এবং ক্যাপাসিটিভ সেন্সর উভয়ের ভোল্টেজ বেড়ে যায়", + "isCorrect": "false" + } + ] + }, + { + "questionText": "SPI প্রটোকল সাপোর্ট করে:", + "answerOptions": [ + { + "answerText": "শুধু ১টি কন্ট্রোলার এবং ১টি পেরিফেরাল", + "isCorrect": "false" + }, + { + "answerText": "শুধু ১টি কন্ট্রোলার এবং একাধিক পেরিফেরাল", + "isCorrect": "true" + }, + { + "answerText": "একাধিক কন্ট্রোলার এবং একাধিক পেরিফেরাল", + "isCorrect": "false" + } + ] + }, + { + "questionText": "I2C প্রটোকল সাপোর্ট করে:", + "answerOptions": [ + { + "answerText": "শুধু ১টি কন্ট্রোলার এবং ১টি পেরিফেরাল", + "isCorrect": "false" + }, + { + "answerText": "শুধু ১টি কন্ট্রোলার এবং একাধিক পেরিফেরাল", + "isCorrect": "false" + }, + { + "answerText": "একাধিক কন্ট্রোলার এবং একাধিক পেরিফেরাল", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 13, + "title": "লেসন ৭ - অটোমেটিক গাছে পানি দেয়া: লেকচার পূর্ববর্তী কুইজ", + "quiz": [ + { + "questionText": "আইওটি ডিভাইসগুলি পানির পাম্পগুলি নিয়ন্ত্রণ করতে যথেষ্ট শক্তিশালী", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "false" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "true" + } + ] + }, + { + "questionText": "অতিরিক্ত ডিভাইসে পাওয়ার নিয়ন্ত্রণ করতে একচুয়েটর ব্যবহার করা যেতে পারে", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "true" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "false" + } + ] + }, + { + "questionText": "সেন্সরগুলি তাত্ক্ষণিকভাবে একচুয়েটরগুলির পরিবর্তনগুলি সনাক্ত করে", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "false" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 14, + "title": "লেসন ৭ - অটোমেটিক গাছে পানি দেয়া: লেকচার পরবর্তী কুইজ", + "quiz": [ + { + "questionText": "রিলে কোন ধরণের সুইচ?", + "answerOptions": [ + { + "answerText": "ইলেক্ট্রিকাল", + "isCorrect": "false" + }, + { + "answerText": "ইলেক্ট্রোমেকানিক্যাল", + "isCorrect": "true" + }, + { + "answerText": "মেকানিক্যাল", + "isCorrect": "false" + } + ] + }, + { + "questionText": "রিলে এর মাধ্যম যা করা যায়-", + "answerOptions": [ + { + "answerText": "কম পাওয়ারের ডিভাইস দিয়ে হাই-পাওয়ার ডিভাইস নিয়ন্ত্রণ", + "isCorrect": "true" + }, + { + "answerText": "হাই-পাওয়ার ডিভাইস দিয়ে কম পাওয়ারের ডিভাইস নিয়ন্ত্রণ", + "isCorrect": "false" + }, + { + "answerText": "দৌড়বিদদের মধ্যে ব্যাটন পরিবর্তন", + "isCorrect": "false" + } + ] + }, + { + "questionText": "অ্যাকচুয়েটরকে সর্বদা সেন্সর রিডিংয়ের সাথে তাত্ক্ষণিকভাবে প্রতিক্রিয়া জানানো উচিত:", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "false" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 15, + "title": "লেসন ৮ - গাছকে ক্লাউড থেকে নিয়ন্ত্রণ: লেকচার পূর্ববর্তী কুইজ", + "quiz": [ + { + "questionText": " একটি পাবলিক MQTT broker দিয়ে কমার্শিয়াল আইওটি প্রজেক্ট করা যায়", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "false" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "true" + } + ] + }, + { + "questionText": "ক্লাউড কম্পিউটিং দ্বারা যা করতে পারি -", + "answerOptions": [ + { + "answerText": "কেবল কম্পিউটার ভাড়া নেয়া", + "isCorrect": "false" + }, + { + "answerText": "কম্পিউটার এবং এপ্লিকেশন প্লাটফর্ম ভাড়া নেয়া", + "isCorrect": "false" + }, + { + "answerText": "কম্পিউটার, অ্যাপ্লিকেশন প্ল্যাটফর্ম, সফ্টওয়্যার, সার্ভারলেস প্ল্যাটফর্ম এবং অন্যান্য পরিষেবাগুলি ভাড়া করা", + "isCorrect": "true" + } + ] + }, + { + "questionText": "6 টি মহাদেশে বিভিন্ন দেশে ডেটা সেন্টার সহ একাধিক ক্লাউড সেবাদানকার ীরয়েছে", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "true" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 16, + "title": "লেসন ৮ - গাছকে ক্লাউড থেকে নিয়ন্ত্রণ: লেকচার পরবর্তী কুইজ", + "quiz": [ + { + "questionText": "একটি Actuator নিয়ন্ত্রণ করতে এবং IOT ডিভাইস থেকে একটি প্রতিক্রিয়া পেতে, অ্যাপ্লিকেশন কোড ব্যবহার করে:", + "answerOptions": [ + { + "answerText": "ডিভাইস থেকে ক্লাউডে ম্যাসেজ", + "isCorrect": "false" + }, + { + "answerText": "ডিভাইস টুইন", + "isCorrect": "false" + }, + { + "answerText": "সরাসরি রিকুয়েস্ট", + "isCorrect": "true" + } + ] + }, + { + "questionText": "IoT Hub সিক্যুরিটি ছাড়াই যেকোন ডিভাইস কানেক্ট করতে দেয়", + "answerOptions": [ + { + "answerText": "মিথ্যা"", + "isCorrect": "true" + }, + { + "answerText": "সত্য", + "isCorrect": "false" + } + ] + }, + { + "questionText": "IoT Hub এর নাম ইউনিক হতে হবে:", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "true" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 17, + "title": "লেসন ৯ - ক্লাউড থেকে এপ্লিকেশন লজিক নিয়ন্ত্রণ: লেকচার পূর্ববর্তী কুইজ", + "quiz": [ + { + "questionText": "আইওটি ইভেন্টের প্রতিক্রিয়া জানাতে আপনি সার্ভারলেস কোড ব্যবহার করতে পারা যাবে", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "true" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "false" + } + ] + }, + { + "questionText": "IoT Hub এ আইওটি ইভেন্ট পাঠানো হলে:", + "answerOptions": [ + { + "answerText": "শুধুমাত্র একটি সার্ভিস IoT Hub এর ইভেন্টগুলি পড়তে পারে", + "isCorrect": "false" + }, + { + "answerText": "নির্দিষ্ট সংখ্যক সার্ভিস IoT Hub এর ইভেন্টগুলি পড়তে পারে", + "isCorrect": "true" + }, + { + "answerText": "কোন সার্ভিসই IoT Hub এর ইভেন্টগুলি পড়তে পারেনা, এজন্য সার্ভিসকে ডিভাইসে কানেক্ট থাকতে হবে", + "isCorrect": "false" + } + ] + }, + { + "questionText": "আইওটি হাবে ইভেন্টগুলি পড়ার সময়, কেবল ক্লাউডে চালিত কোডটি ব্যবহার করতে পারা যাবে", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "false" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 18, + "title": "লেসন ৯ - ক্লাউড থেকে এপ্লিকেশন লজিক নিয়ন্ত্রণ: লেকচার পরবর্তী কুইজ", + "quiz": [ + { + "questionText": "Azure ফাংশন লোকালি চালানো এবং ডিবাগ করা যাবে", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "true" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "false" + } + ] + }, + { + "questionText": "সার্ভারলেস কোড কেবল জাভাস্ক্রিপ্ট এবং COBOL-এ লেখা যেতে পারে:", + "answerOptions": [ + { + "answerText": "মিথ্যা", + "isCorrect": "true" + }, + { + "answerText": "সত্য", + "isCorrect": "false" + } + ] + }, + { + "questionText": "ক্লাউডে কোন ফাংশন অ্যাপ ব্যবহারের সময়, ইউজারকে তৈরি এবং ডেপলয় করতে হবে:", + "answerOptions": [ + { + "answerText": "শুধু ১টি ফাংশন অ্যাপ", + "isCorrect": "false" + }, + { + "answerText": "১টি ফাংশন অ্যাপ এবং একটি স্টোরেজ একাউন্ট", + "isCorrect": "false" + }, + { + "answerText": "১টি ফাংশন অ্যাপ এবং একটি স্টোরেজ একাউন্ট এবং এপ্লিকেশন সেটিং", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 19, + "title": "লেসন ১০ - গাছগুলোর নিরাপত্তা নিশ্চিতকরণ: লেকচার পূর্ববর্তী কুইজ", + "quiz": [ + { + "questionText": "আইওটি ডিভাইস সর্বদা সুরক্ষিত থাকে", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "false" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "true" + } + ] + }, + { + "questionText": "কোনও আইওটি ডিভাইস দিয়ে হ্যাক করার মতো নজির নেই:", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "false" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "true" + } + ] + }, + { + "questionText": "আইওটি ডিভাইস সংযোগের স্ট্রিং যে কারও সাথে ভাগ করতে পারা যাবে", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "false" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 20, + "title": "লেসন ১০ - গাছগুলোর নিরাপত্তা নিশ্চিতকরণ: লেকচার পরবর্তী কুইজ", + "quiz": [ + { + "questionText": "Symmetric key encryption এবং asymmetric key encryption এর পার্থক্য:", + "answerOptions": [ + { + "answerText": "Symmetric key encryption এর স্পীড asymmetric এর চেয়ে কম", + "isCorrect": "false" + }, + { + "answerText": "Symmetric key encryption এখানে asymmetric এর তুলনায় বেশি নিরাপদ", + "isCorrect": "false" + }, + { + "answerText": "Symmetric key encryption টি asymmetric এর তুলনায় বেশি দ্রুত কাজ করলেও, নিরাপত্তা কম", + "isCorrect": "true" + }, + { + "answerText": "Symmetric key encryption টি asymmetric এর তুলনায় ধীরে কাজ করলেও, নিরাপত্তা বেশি", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Self-signed X.509 সার্টিফিকেটগুলো Production Environment এর জন্য আদর্শ", + "answerOptions": [ + { + "answerText": "সত্য", + "isCorrect": "false" + }, + { + "answerText": "মিথ্যা", + "isCorrect": "true" + } + ] + }, + { + "questionText": "X.509 certificates:", + "answerOptions": [ + { + "answerText": "আইওটি ডিভাইসগুলোর মাঝে শেয়ার করা উচিত নয়", + "isCorrect": "false" + }, + { + "answerText": "আইওটি ডিভাইসগুলোর মাঝে শেয়ার করা যাবে", + "isCorrect": "true" + }, + { + "answerText": "গোপন রাখা উচিত এবং কোন ডিভাইসের সাথে শেয়ার করা আবেনা", + "isCorrect": "false" + } + ] + } + ] + } + ] + } +] From 85d72dcea3ccc693581cbde9197cf30284eecc49 Mon Sep 17 00:00:00 2001 From: Jim Bennett Date: Fri, 2 Jul 2021 14:23:54 -0700 Subject: [PATCH 3/6] Updating an image (#147) * Adding content * Update en.json * Update README.md * Update TRANSLATIONS.md * Adding lesson tempolates * Fixing code files with each others code in * Update README.md * Adding lesson 16 * Adding virtual camera * Adding Wio Terminal camera capture * Adding wio terminal code * Adding SBC classification to lesson 16 * Adding challenge, review and assignment * Adding images and using new Azure icons * Update README.md * Update iot-reference-architecture.png * Adding structure for JulyOT links * Removing icons * Sketchnotes! * Create lesson-1.png * Starting on lesson 18 * Updated sketch * Adding virtual distance sensor * Adding Wio Terminal image classification * Update README.md * Adding structure for project 6 and wio terminal distance sensor * Adding some of the smart timer stuff * Updating sketchnotes * Adding virtual device speech to text * Adding chapter 21 * Language tweaks * Lesson 22 stuff * Update en.json * Bumping seeed libraries * Adding functions lab to lesson 22 * Almost done with LUIS * Update README.md * Reverting sunlight sensor change Fixes #88 * Structure * Adding speech to text lab for Pi * Adding virtual device text to speech lab * Finishing lesson 23 * Clarifying privacy Fixes #99 * Update README.md * Update hardware.md * Update README.md * Fixing some code samples that were wrong * Adding more on translation * Adding more on translator * Update README.md * Update README.md * Adding public access to the container * First part of retail object detection * More on stock lesson * Tweaks to maps lesson * Update README.md * Update pi-sensor.md * IoT Edge install stuffs * Notes on consumer groups and not running the event monitor at the same time * Assignment for object detector * Memory notes for speech to text * Migrating LUIS to an HTTP trigger * Adding Wio Terminal speech to text * Changing smart timer to functions from hub * Changing a param to body to avoid URL encoding * Update README.md * Tweaks before IoT Show * Adding sketchnote links * Adding object detection labs * Adding more on object detection * More on stock detection * Finishing stock counting * Tidying stuff * Adding wio purchase link * Updating Seeed logo --- images/seeed-logo.png | Bin 10183 -> 30879 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/seeed-logo.png b/images/seeed-logo.png index 53526172c7bfa98f1de47ac8231a329b75d983c4..68348445e8f83682210d07e280f5b1f6d178dc9c 100644 GIT binary patch literal 30879 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 JH6lhq{|7)4$~gc4 literal 10183 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 c(tn{u1Y2mQ!LRm`jsLP#6}1%V Date: Sat, 3 Jul 2021 17:24:34 +0100 Subject: [PATCH 4/6] chapter 4 (lesson 2&4) (#144) * Update README.md * chapter 4 (lesson one) * chapter 4 (lesson 2&4) * Update pi-camera.md * Update pi-proximity.md Co-authored-by: Jim Bennett --- .../lessons/1-train-fruit-detector/README.md | 14 +++++++------- .../lessons/2-check-fruit-from-device/README.md | 2 +- .../single-board-computer-classify-image.md | 6 +++--- .../virtual-device-camera.md | 2 +- .../wio-terminal-camera.md | 2 +- .../wio-terminal-classify-image.md | 4 ++-- .../lessons/4-trigger-fruit-detector/README.md | 6 +++--- .../4-trigger-fruit-detector/pi-proximity.md | 8 +++++++- 8 files changed, 25 insertions(+), 19 deletions(-) diff --git a/4-manufacturing/lessons/1-train-fruit-detector/README.md b/4-manufacturing/lessons/1-train-fruit-detector/README.md index 938ff3a4..7be9143a 100644 --- a/4-manufacturing/lessons/1-train-fruit-detector/README.md +++ b/4-manufacturing/lessons/1-train-fruit-detector/README.md @@ -144,7 +144,7 @@ To use Custom Vision, you first need to create two cognitive services resources 1. Launch the Custom Vision portal at [CustomVision.ai](https://customvision.ai), and sign in with the Microsoft account you used for your Azure account. -1. Follow the [Create a new Project section of the Build a classifier quickstart on the Microsoft docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#create-a-new-project) to create a new Custom Vision project. The UI may change and these docs are always the most up to date reference. +1. Follow the [create a new Project section of the build a classifier quickstart on the Microsoft docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#create-a-new-project) to create a new Custom Vision project. The UI may change and these docs are always the most up to date reference. Call your project `fruit-quality-detector`. @@ -178,11 +178,11 @@ Image classifiers run at very low resolution. For example Custom Vision can take If you don't have both ripe and unripe fruit, you can use different fruits, or any two objects you have available. You can also find some example images in the [images](./images) folder of ripe and unripe bananas that you can use. -1. Follow the [Upload and tag images section of the Build a classifier quickstart on the Microsoft docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#upload-and-tag-images) to upload your training images. Tag the ripe fruit as `ripe`, and the unripe fruit as `unripe`. +1. Follow the [upload and tag images section of the build a classifier quickstart on the Microsoft docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#upload-and-tag-images) to upload your training images. Tag the ripe fruit as `ripe`, and the unripe fruit as `unripe`. ![The upload dialogs showing the upload of ripe and unripe banana pictures](../../../images/image-upload-bananas.png) -1. Follow the [Train the classifier section of the Build a classifier quickstart on the Microsoft docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#train-the-classifier) to train the image classifier on your uploaded images. +1. Follow the [train the classifier section of the build a classifier quickstart on the Microsoft docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#train-the-classifier) to train the image classifier on your uploaded images. You will be given a choice of training type. Select **Quick Training**. @@ -196,7 +196,7 @@ Once your classifier is trained, you can test it by giving it a new image to cla ### Task - test your image classifier -1. Follow the [Test your model documentation on the Microsoft docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/test-your-model?WT.mc_id=academic-17441-jabenn#test-your-model) to test your image classifier. Use the testing images you created earlier, not any of the images you used for training. +1. Follow the [test your model documentation on the Microsoft docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/test-your-model?WT.mc_id=academic-17441-jabenn#test-your-model) to test your image classifier. Use the testing images you created earlier, not any of the images you used for training. ![A unripe banana predicted as unripe with a 98.9% probability, ripe with a 1.1% probability](../../../images/banana-unripe-quick-test-prediction.png) @@ -210,7 +210,7 @@ Every time you make a prediction using the quick test option, the image and resu ### Task - retrain your image classifier -1. Follow the [Use the predicted image for training documentation on the Microsoft docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/test-your-model?WT.mc_id=academic-17441-jabenn#use-the-predicted-image-for-training) to retrain your model, using the correct tag for each image. +1. Follow the [use the predicted image for training documentation on the Microsoft docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/test-your-model?WT.mc_id=academic-17441-jabenn#use-the-predicted-image-for-training) to retrain your model, using the correct tag for each image. 1. Once you model has been retrained, test on new images. @@ -228,8 +228,8 @@ Try it out and see what the predictions are. You can find images to try with usi ## Review & Self Study -* When you trained your classifier, you would have seen values for *Precision*, *Recall*, and *AP* that rate the model that was created. Read up on what these values are using [the Evaluate the classifier section of the Build a classifier quickstart on the Microsoft docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#evaluate-the-classifier) -* Read up on how to improve your classifier from the [How to improve your Custom Vision model on the Microsoft docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-improving-your-classifier?WT.mc_id=academic-17441-jabenn) +* When you trained your classifier, you would have seen values for *Precision*, *Recall*, and *AP* that rate the model that was created. Read up on what these values are using [the evaluate the classifier section of the build a classifier quickstart on the Microsoft docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#evaluate-the-classifier) +* Read up on how to improve your classifier from the [how to improve your Custom Vision model on the Microsoft docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-improving-your-classifier?WT.mc_id=academic-17441-jabenn) ## Assignment diff --git a/4-manufacturing/lessons/2-check-fruit-from-device/README.md b/4-manufacturing/lessons/2-check-fruit-from-device/README.md index fe522c07..35ee1d0b 100644 --- a/4-manufacturing/lessons/2-check-fruit-from-device/README.md +++ b/4-manufacturing/lessons/2-check-fruit-from-device/README.md @@ -149,7 +149,7 @@ If you were to create a production device to sell to farms or factories, how wou You trained your custom vision model using the portal. This relies on having images available - and in the real world you may not be able to get training data that matches what the camera on your device captures. You can work round this by training directly from your device using the training API, to train a model using images captured from your IoT device. -* Read up on the training API in the [Using the Custom Vision SDK quick start](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/image-classification?tabs=visual-studio&pivots=programming-language-python&WT.mc_id=academic-17441-jabenn) +* Read up on the training API in the [using the Custom Vision SDK quick start](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/image-classification?tabs=visual-studio&pivots=programming-language-python&WT.mc_id=academic-17441-jabenn) ## Assignment diff --git a/4-manufacturing/lessons/2-check-fruit-from-device/single-board-computer-classify-image.md b/4-manufacturing/lessons/2-check-fruit-from-device/single-board-computer-classify-image.md index 41b6994c..109f1e4e 100644 --- a/4-manufacturing/lessons/2-check-fruit-from-device/single-board-computer-classify-image.md +++ b/4-manufacturing/lessons/2-check-fruit-from-device/single-board-computer-classify-image.md @@ -1,6 +1,6 @@ # Classify an image - Virtual IoT Hardware and Raspberry Pi -In this part of the lesson, you will add send the image captured by the camera to the Custom Vision service to classify it. +In this part of the lesson, you will send the image captured by the camera to the Custom Vision service to classify it. ## Send images to Custom Vision @@ -25,7 +25,7 @@ The Custom Vision service has a Python SDK you can use to classify images. This brings in some modules from the Custom Vision libraries, one to authenticate with the prediction key, and one to provide a prediction client class that can call Custom Vision. -1. Add the following code to to the end of the file: +1. Add the following code to the end of the file: ```python prediction_url = '' @@ -86,6 +86,6 @@ The Custom Vision service has a Python SDK you can use to classify images. ![A banana in custom vision predicted ripe at 56.8% and unripe at 43.1%](../../../images/custom-vision-banana-prediction.png) -> 💁 You can find this code in the [code-classify/pi](code-classify/pi) or [code-classify/virtual-device](code-classify/virtual-device) folder. +> 💁 You can find this code in the [code-classify/pi](code-classify/pi) or [code-classify/virtual-iot-device](code-classify/virtual-iot-device) folder. 😀 Your fruit quality classifier program was a success! diff --git a/4-manufacturing/lessons/2-check-fruit-from-device/virtual-device-camera.md b/4-manufacturing/lessons/2-check-fruit-from-device/virtual-device-camera.md index 806b942f..a6802ce3 100644 --- a/4-manufacturing/lessons/2-check-fruit-from-device/virtual-device-camera.md +++ b/4-manufacturing/lessons/2-check-fruit-from-device/virtual-device-camera.md @@ -101,7 +101,7 @@ Program the device. > 💁 You can capture the image directly to a file instead of a `BytesIO` object by passing the file name to the `camera.capture` call. The reason for using the `BytesIO` object is so that later in this lesson you can send the image to your image classifier. -1. Configure the image that the camera in CounterFit will capture. You can either set the *Source* to *File*, then upload an image file, or set the *Source* to *WebCam*, and images will be captures from your web cam. Make sure you select the **Set** button after selecting a picture or selecting your webcam. +1. Configure the image that the camera in CounterFit will capture. You can either set the *Source* to *File*, then upload an image file, or set the *Source* to *WebCam*, and images will be captured from your web cam. Make sure you select the **Set** button after selecting a picture or selecting your webcam. ![CounterFit with a file set as the image source, and a web cam set showing a person holding a banana in a preview of the webcam](../../../images/counterfit-camera-options.png) diff --git a/4-manufacturing/lessons/2-check-fruit-from-device/wio-terminal-camera.md b/4-manufacturing/lessons/2-check-fruit-from-device/wio-terminal-camera.md index 8323de3b..877603a1 100644 --- a/4-manufacturing/lessons/2-check-fruit-from-device/wio-terminal-camera.md +++ b/4-manufacturing/lessons/2-check-fruit-from-device/wio-terminal-camera.md @@ -10,7 +10,7 @@ The camera you'll use is an [ArduCam Mini 2MP Plus](https://www.arducam.com/prod ## Connect the camera -The ArduCam doesn't have a Grove socket, instead it connects to both the SPI and I2C busses via the GPIO pins on the Wio Terminal. +The ArduCam doesn't have a Grove socket, instead it connects to both the SPI and I2C buses via the GPIO pins on the Wio Terminal. ### Task - connect the camera diff --git a/4-manufacturing/lessons/2-check-fruit-from-device/wio-terminal-classify-image.md b/4-manufacturing/lessons/2-check-fruit-from-device/wio-terminal-classify-image.md index 6a646ef4..36de4315 100644 --- a/4-manufacturing/lessons/2-check-fruit-from-device/wio-terminal-classify-image.md +++ b/4-manufacturing/lessons/2-check-fruit-from-device/wio-terminal-classify-image.md @@ -1,10 +1,10 @@ # Classify an image - Wio Terminal -In this part of the lesson, you will add send the image captured by the camera to the Custom Vision service to classify it. +In this part of the lesson, you will send the image captured by the camera to the Custom Vision service to classify it. ## Classify an image -The Custom Vision service has a REST API you can call from the Wio Terminal use to classify images. THis REST API is accessed over an HTTPS connection - a secure HTTP connection. +The Custom Vision service has a REST API you can call from the Wio Terminal use to classify images. This REST API is accessed over an HTTPS connection - a secure HTTP connection. When interacting with HTTPS endpoints, the client code needs to request the public key certificate from the server being accessed, and use that to encrypt the traffic it sends. Your web browser does this automatically, but microcontrollers do not. You will need to request this certificate manually and use it to create a secure connection to the REST API. These certificates don't change, so once you have a certificate, it can be hard coded in your application. diff --git a/4-manufacturing/lessons/4-trigger-fruit-detector/README.md b/4-manufacturing/lessons/4-trigger-fruit-detector/README.md index b358d2b2..7fdef5e3 100644 --- a/4-manufacturing/lessons/4-trigger-fruit-detector/README.md +++ b/4-manufacturing/lessons/4-trigger-fruit-detector/README.md @@ -74,7 +74,7 @@ As you define the architecture of your system, you need to constantly consider d ## Design a fruit quality control system -Lets now take this idea of things, insights, and actions and apply it to our fruit quality detector to design a larger end-to-end application. +Let's now take this idea of things, insights, and actions and apply it to our fruit quality detector to design a larger end-to-end application. Imagine you have been given the task of building a fruit quality detector to be used in a processing plant. Fruit travels on a conveyer belt system where currently employees spend time checking the fruit by hand and removing any unripe fruit as it arrives. To reduce costs, the plant owner wants an automated system. @@ -205,7 +205,7 @@ The prototype will form the basis of a final production system. Some of the diff ## 🚀 Challenge -In this lesson you have learned some of the concepts you need to know to architect an IoT system. Think back to the previous projects. How would do they fit into the reference architecture shown above? +In this lesson you have learned some of the concepts you need to know on how to architect an IoT system. Think back to the previous projects. How would do they fit into the reference architecture shown above? Pick one of the projects so far and think of the design of a more complicated solution bringing together multiple capabilities beyond what was covered in the projects. Draw the architecture and think of all the devices and services you would need. @@ -218,7 +218,7 @@ For example - a vehicle tracking device that combines GPS with sensors to monito ## Review & Self Study * Read more about IoT architecture on the [Azure IoT reference architecture documentation on Microsoft docs](https://docs.microsoft.com/azure/architecture/reference-architectures/iot?WT.mc_id=academic-17441-jabenn) -* Read more about device twins in the [Understand and use device twins in IoT Hub documentation on Microsoft docs](https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-device-twins?WT.mc_id=academic-17441-jabenn) +* Read more about device twins in the [understand and use device twins in IoT Hub documentation on Microsoft docs](https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-device-twins?WT.mc_id=academic-17441-jabenn) * Read about OPC-UA, a machine to machine communication protocol used in industrial automation on the [OPC-UA page on Wikipedia](https://wikipedia.org/wiki/OPC_Unified_Architecture) ## Assignment diff --git a/4-manufacturing/lessons/4-trigger-fruit-detector/pi-proximity.md b/4-manufacturing/lessons/4-trigger-fruit-detector/pi-proximity.md index 254f23e9..ef4a7ba7 100644 --- a/4-manufacturing/lessons/4-trigger-fruit-detector/pi-proximity.md +++ b/4-manufacturing/lessons/4-trigger-fruit-detector/pi-proximity.md @@ -40,6 +40,12 @@ Program the device. 1. Open the `fruit-quality-detector` code in VS Code, either directly on the Pi, or connect via the Remote SSH extension. +1. Install the rpi-vl53l0x Pip package, a Python package that interacts with a VL53L0X time-of-flight distance sensor. Install it using this pip command + + ```sh + pip install rpi-vl53l0x + ``` + 1. Create a new file in this project called `distance-sensor.py`. > 💁 An easy way to simulate multiple IoT devices is to do each in a different Python file, then run them at the same time. @@ -95,4 +101,4 @@ Program the device. > 💁 You can find this code in the [code-proximity/pi](code-proximity/pi) folder. -😀 Your proximity sensor program was a success! \ No newline at end of file +😀 Your proximity sensor program was a success! From 18b17febc35fa9c9fbab7097b81619b1ccc253db Mon Sep 17 00:00:00 2001 From: Jim Bennett Date: Sat, 3 Jul 2021 09:26:16 -0700 Subject: [PATCH 5/6] Fixing indentation (#149) * Adding content * Update en.json * Update README.md * Update TRANSLATIONS.md * Adding lesson tempolates * Fixing code files with each others code in * Update README.md * Adding lesson 16 * Adding virtual camera * Adding Wio Terminal camera capture * Adding wio terminal code * Adding SBC classification to lesson 16 * Adding challenge, review and assignment * Adding images and using new Azure icons * Update README.md * Update iot-reference-architecture.png * Adding structure for JulyOT links * Removing icons * Sketchnotes! * Create lesson-1.png * Starting on lesson 18 * Updated sketch * Adding virtual distance sensor * Adding Wio Terminal image classification * Update README.md * Adding structure for project 6 and wio terminal distance sensor * Adding some of the smart timer stuff * Updating sketchnotes * Adding virtual device speech to text * Adding chapter 21 * Language tweaks * Lesson 22 stuff * Update en.json * Bumping seeed libraries * Adding functions lab to lesson 22 * Almost done with LUIS * Update README.md * Reverting sunlight sensor change Fixes #88 * Structure * Adding speech to text lab for Pi * Adding virtual device text to speech lab * Finishing lesson 23 * Clarifying privacy Fixes #99 * Update README.md * Update hardware.md * Update README.md * Fixing some code samples that were wrong * Adding more on translation * Adding more on translator * Update README.md * Update README.md * Adding public access to the container * First part of retail object detection * More on stock lesson * Tweaks to maps lesson * Update README.md * Update pi-sensor.md * IoT Edge install stuffs * Notes on consumer groups and not running the event monitor at the same time * Assignment for object detector * Memory notes for speech to text * Migrating LUIS to an HTTP trigger * Adding Wio Terminal speech to text * Changing smart timer to functions from hub * Changing a param to body to avoid URL encoding * Update README.md * Tweaks before IoT Show * Adding sketchnote links * Adding object detection labs * Adding more on object detection * More on stock detection * Finishing stock counting * Tidying stuff * Adding wio purchase link * Updating Seeed logo * Update pi-proximity.md --- .../lessons/4-trigger-fruit-detector/pi-proximity.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/4-manufacturing/lessons/4-trigger-fruit-detector/pi-proximity.md b/4-manufacturing/lessons/4-trigger-fruit-detector/pi-proximity.md index ef4a7ba7..35c7740a 100644 --- a/4-manufacturing/lessons/4-trigger-fruit-detector/pi-proximity.md +++ b/4-manufacturing/lessons/4-trigger-fruit-detector/pi-proximity.md @@ -43,7 +43,7 @@ Program the device. 1. Install the rpi-vl53l0x Pip package, a Python package that interacts with a VL53L0X time-of-flight distance sensor. Install it using this pip command ```sh - pip install rpi-vl53l0x + pip install rpi-vl53l0x ``` 1. Create a new file in this project called `distance-sensor.py`. From 858c1b6bacff1454f33a28473aae042793c9cc6b Mon Sep 17 00:00:00 2001 From: Jim Bennett Date: Sat, 3 Jul 2021 09:33:33 -0700 Subject: [PATCH 6/6] Fix clean up link (#150) * Adding content * Update en.json * Update README.md * Update TRANSLATIONS.md * Adding lesson tempolates * Fixing code files with each others code in * Update README.md * Adding lesson 16 * Adding virtual camera * Adding Wio Terminal camera capture * Adding wio terminal code * Adding SBC classification to lesson 16 * Adding challenge, review and assignment * Adding images and using new Azure icons * Update README.md * Update iot-reference-architecture.png * Adding structure for JulyOT links * Removing icons * Sketchnotes! * Create lesson-1.png * Starting on lesson 18 * Updated sketch * Adding virtual distance sensor * Adding Wio Terminal image classification * Update README.md * Adding structure for project 6 and wio terminal distance sensor * Adding some of the smart timer stuff * Updating sketchnotes * Adding virtual device speech to text * Adding chapter 21 * Language tweaks * Lesson 22 stuff * Update en.json * Bumping seeed libraries * Adding functions lab to lesson 22 * Almost done with LUIS * Update README.md * Reverting sunlight sensor change Fixes #88 * Structure * Adding speech to text lab for Pi * Adding virtual device text to speech lab * Finishing lesson 23 * Clarifying privacy Fixes #99 * Update README.md * Update hardware.md * Update README.md * Fixing some code samples that were wrong * Adding more on translation * Adding more on translator * Update README.md * Update README.md * Adding public access to the container * First part of retail object detection * More on stock lesson * Tweaks to maps lesson * Update README.md * Update pi-sensor.md * IoT Edge install stuffs * Notes on consumer groups and not running the event monitor at the same time * Assignment for object detector * Memory notes for speech to text * Migrating LUIS to an HTTP trigger * Adding Wio Terminal speech to text * Changing smart timer to functions from hub * Changing a param to body to avoid URL encoding * Update README.md * Tweaks before IoT Show * Adding sketchnote links * Adding object detection labs * Adding more on object detection * More on stock detection * Finishing stock counting * Tidying stuff * Adding wio purchase link * Updating Seeed logo * Update pi-proximity.md * Fix clean up link Fixes #145 --- 2-farm/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2-farm/README.md b/2-farm/README.md index e974f528..779b7acf 100644 --- a/2-farm/README.md +++ b/2-farm/README.md @@ -4,7 +4,7 @@ As the population grows, so does the demand on agriculture. The amount of land a In these 6 lessons you'll learn how to apply the Internet of Things to improve and automate farming. -> 💁 These lessons will use some cloud resources. If you don't complete all the lessons in this project, make sure you follow the [Clean up your project](lessons/6-keep-your-plant-secure/README.md#clean-up-your-project) step in [lesson 6](lessons/6-keep-your-plant-secure/README.md). +> 💁 These lessons will use some cloud resources. If you don't complete all the lessons in this project, make sure you [Clean up your project](../clean-up.md). **Add video of automated plant**