Code Monkey home page Code Monkey logo

iot-for-beginners's Introduction

GitHub license GitHub contributors GitHub issues GitHub pull-requests PRs Welcome

GitHub watchers GitHub forks GitHub stars

Bengali Chinese Turkish French Korean Japanese

IoT for Beginners - A Curriculum

Azure Cloud Advocates at Microsoft are pleased to offer a 12-week, 24-lesson curriculum all about IoT basics. Each lesson includes pre- and post-lesson quizzes, written instructions to complete the lesson, a solution, an assignment and more. Our project-based pedagogy allows you to learn while building, a proven way for new skills to 'stick'.

The projects cover the journey of food from farm to table. This includes farming, logistics, manufacturing, retail and consumer - all popular industry areas for IoT devices.

A road map for the course showing 24 lessons covering intro, farming, transport, processing, retail and cooking

Sketchnote by Nitya Narasimhan. Click the image for a larger version.

Hearty thanks to our authors Jen Fox, Jen Looper, Jim Bennett, and our sketchnote artist Nitya Narasimhan.

Thanks as well to our team of Microsoft Learn Student Ambassadors who have been reviewing and translating this curriculum - Aditya Garg, Anurag Sharma, Arpita Das, Aryan Jain, Bhavesh Suneja, Faith Hunja, Lateefah Bello, Manvi Jha, Mireille Tan, Mohammad Iftekher (Iftu) Ebne Jalal, Mohammad Zulfikar, Priyanshu Srivastav, Thanmai Gowducheruvu, and Zina Kamel.

Meet the team!

Promo video

Gif by Mohit Jaisal

🎥 Click the image above for a video about the project!

Teachers, we have included some suggestions on how to use this curriculum. If you would like to create your own lessons, we have also included a lesson template.

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.

For a video overview of this course, check out this video:

Promo video

🎥 Click the image above for a video about the project!

Pedagogy

We have chosen two pedagogical tenets while building this curriculum: ensuring that it is project-based and that it includes frequent quizzes. By the end of this series, students will have built a plant monitoring and watering system, a vehicle tracker, a smart factory setup to track and check food, and a voice-controlled cooking timer, and will have learned the basics of the Internet of Things including how to write device code, connect to the cloud, analyze telemetry and run AI on the edge.

By ensuring that the content aligns with projects, the process is made more engaging for students and retention of concepts will be augmented.

In addition, a low-stakes quiz before a class sets the intention of the student towards learning a topic, while a second quiz after class ensures further retention. This curriculum was designed to be flexible and fun and can be taken in whole or in part. The projects start small and become increasingly complex by the end of the 12 week cycle.

Each project is based around real-world hardware available to students and hobbyists. Each project looks into the specific project domain, providing relevant background knowledge. To be a successful developer it helps to understand the domain in which you are solving problems, providing this background knowledge allows students to think about their IoT solutions and learnings in the context of the kind of real-world problem that they might be asked to solve as an IoT developer. Students learn the 'why' of the solutions they are building, and get an appreciation of the end user.

Hardware

We have two choices of IoT hardware to use for the projects depending on personal preference, programming language knowledge or preferences, learning goals and availability. We have also provided a 'virtual hardware' version for those who don't have access to hardware, or want to learn more before committing to a purchase. You can read more and find a 'shopping list' on the hardware page, including links to buy complete kits from our friends at Seeed Studio.

💁 Find our Code of Conduct, Contributing, and Translation guidelines. We welcome your constructive feedback!

Each lesson includes:

  • sketchnote
  • optional supplemental video
  • pre-lesson warmup quiz
  • written lesson
  • for project-based lessons, step-by-step guides on how to build the project
  • knowledge checks
  • a challenge
  • supplemental reading
  • assignment
  • post-lesson quiz

A note about quizzes: All quizzes are contained in this app, for 48 total quizzes of three questions each. They are linked from within the lessons but the quiz app can be run locally; follow the instruction in the quiz-app folder. They are gradually being localized.

Lessons

Project Name Concepts Taught Learning Objectives Linked Lesson
01 Getting started Introduction to IoT Learn the basic principles of IoT and the basic building blocks of IoT solutions such as sensors and cloud services whilst you are setting up your first IoT device Introduction to IoT
02 Getting started A deeper dive into IoT Learn more about the components of an IoT system, as well as microcontrollers and single-board computers A deeper dive into IoT
03 Getting started Interact with the physical world with sensors and actuators Learn about sensors to gather data from the physical world, and actuators to send feedback, whilst you build a nightlight Interact with the physical world with sensors and actuators
04 Getting started Connect your device to the Internet Learn about how to connect an IoT device to the Internet to send and receive messages by connecting your nightlight to an MQTT broker Connect your device to the Internet
05 Farm Predict plant growth Learn how to predict plant growth using temperature data captured by an IoT device Predict plant growth
06 Farm Detect soil moisture Learn how to detect soil moisture and calibrate a soil moisture sensor Detect soil moisture
07 Farm Automated plant watering Learn how to automate and time watering using a relay and MQTT Automated plant watering
08 Farm Migrate your plant to the cloud Learn about the cloud and cloud-hosted IoT services and how to connect your plant to one of these instead of a public MQTT broker Migrate your plant to the cloud
09 Farm Migrate your application logic to the cloud Learn about how you can write application logic in the cloud that responds to IoT messages Migrate your application logic to the cloud
10 Farm Keep your plant secure Learn about security with IoT and how to keep your plant secure with keys and certificates Keep your plant secure
11 Transport Location tracking Learn about GPS location tracking for IoT devices Location tracking
12 Transport Store location data Learn how to store IoT data to be visualized or analysed later Store location data
13 Transport Visualize location data Learn about visualizing location data on a map, and how maps represent the real 3d world in 2 dimensions Visualize location data
14 Transport Geofences Learn about geofences, and how they can be used to alert when vehicles in the supply chain are close to their destination Geofences
15 Manufacturing Train a fruit quality detector Learn about training an image classifier in the cloud to detect fruit quality Train a fruit quality detector
16 Manufacturing Check fruit quality from an IoT device Learn about using your fruit quality detector from an IoT device Check fruit quality from an IoT device
17 Manufacturing Run your fruit detector on the edge Learn about running your fruit detector on an IoT device on the edge Run your fruit detector on the edge
18 Manufacturing Trigger fruit quality detection from a sensor Learn about triggering fruit quality detection from a sensor Trigger fruit quality detection from a sensor
19 Retail Train a stock detector Learn how to use object detection to train a stock detector to count stock in a shop Train a stock detector
20 Retail Check stock from an IoT device Learn how to check stock from an IoT device using an object detection model Check stock from an IoT device
21 Consumer Recognize speech with an IoT device Learn how to recognize speech from an IoT device to build a smart timer Recognize speech with an IoT device
22 Consumer Understand language Learn how to understand sentences spoken to an IoT device Understand language
23 Consumer Set a timer and provide spoken feedback Learn how to set a timer on an IoT device and give spoken feedback on when the timer is set and when it finishes Set a timer and provide spoken feedback
24 Consumer Support multiple languages Learn how to support multiple languages, both being spoken to and the responses from your smart timer Support multiple languages

Offline access

You can run this documentation offline by using Docsify. Fork this repo, install Docsify on your local machine, and then in the root folder of this repo, type docsify serve. The website will be served on port 3000 on your localhost: localhost:3000.

PDF

You can generate a PDF of this content for offline access if needed. To do this, make sure you have npm installed and run the following commands in the root folder of this repo:

npm i
npm run convert

Slides

There are slide decks for some of the lessons in the slides folder.

Help Wanted!

Would you like to contribute a translation? Please read our translation guidelines and add input to one of the translations issues. If you want to translate into a new language, please raise a new issue for tracking.

Other Curricula

Our team produces other curricula! Check out:

Image attributions

You can find all the attributions for the images used in this curriculum where required in the Attributions.

iot-for-beginners's People

Contributors

adityagarg00 avatar alihakimtaskiran avatar anurag01a avatar brminnick avatar chungzh avatar cinnamonxi avatar dependabot[bot] avatar diganta-droid avatar dobiisfree avatar elitewarrior315 avatar emilyf11 avatar faithhunja avatar iftu119 avatar iterateme avatar jhyun505 avatar jks-liu avatar jlooper avatar juliamuiruri4 avatar knowncold avatar leocamello avatar ludovicobesana avatar manusquall avatar microsoftopensource avatar mireille-t avatar mohzulfikar avatar mushonnip avatar nihalbaig0 avatar wirelesslife avatar wznt-kimhyejin avatar zina-kamel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iot-for-beginners's Issues

Translation - Indonesian

Translate the curriculum in to Indonesian. Use this issue for all discussions during this work.

Sketchnotes

Create sketch notes for all the lessons.

Sketchnotes live in the sketchnotes folder. Each lesson should start with the sketch note and a note about opening it to see a full size version, as well as attribution.

![A sketchnote overview of this lesson](../../../sketchnotes/lesson-1.png)

> Sketchnote by [Nitya Narasimhan](https://github.com/nitya). Click the image for a larger version.

Sketchnotes to do

  • Lesson 1
  • Lesson 2
  • Lesson 3
  • Lesson 4
  • Lesson 5
  • Lesson 6
  • Lesson 7
  • Lesson 8
  • Lesson 9
  • Lesson 10
  • Lesson 11
  • Lesson 12
  • Lesson 13
  • Lesson 14
  • Lesson 15
  • Lesson 16
  • Lesson 17
  • Lesson 18
  • Lesson 19
  • Lesson 20
  • Lesson 21
  • Lesson 22
  • Lesson 23
  • Lesson 24

Translation - Japanese

This issue was created to track progress and discussions for the Japanese translation.

(*I am a newbie to the open-source project contribution, so I am not sure whether I can already start translating the docs and make a pull request...)

Translation - Chinese

Translate the curriculum in to Chinese. Use this issue for all discussions during this work.

Lesson 11 – Location tracking

Lesson

Concepts taught

  • IoT devices can track location using GPS coordinates.
  • GPS is based on positions on the globe and can define any point.
  • GPS positioning is based off time signals from satellites and is not millimeter accurate.
  • GPS data comes in NMEA format.

Learning objectives

  • Learn about geo-spatial coordinates.
  • Learn how to capture and decode NMEA GPS data from a GPS sensor.

Hardware required

  • Wio/Pi
  • Grove GPS sensor

Software/services

  • VS Code
  • PlatformIO (Wio)
  • IoT Hub (free tier)

Code

  • On-device code to read and decode GPS data
  • On-device decoding of NMEA sentences using a third party library

Tasks

  • Write lesson
  • Build and test lab - Wio Terminal with library for NMEA decode
  • Build and test lab - Raspberry Pi with library for NMEA decode
  • Build and test lab - Virtual IoT device with library for NMEA decode
  • Add GPS sensor to CounterFit
  • Pre and post quiz questions
  • Sketchnote

Translation - Russian

This issue was created to track progress and discussions for the Russian translation.

Support LMS

Add support for LMSes like Moodle and Canvas

Hardware.md

Few recommendations for the hardware page.

  1. In the 7th line, there should be its instead of it's .
  2. If we could add something like
This lesson covers buying guides for  :
   [Arduino](#Arduino)
   [Raspberry Pi](#Raspberry-Pi)
   [Sensors and actuators](#Sensors-and-actuators)
   [Optional hardware](#Optional-hardware)
   [Virtual hardware](#Virtual-hardware)

It would help students to easily navigate in the doc.

  1. In the 7th line, we see

The physical hardware choices are Arduino, or Raspberry Pi. Each platform has it's own upsides and downsides, and these are all covered in one of the initial lessons. Review that lesson to decide which hardware platform you are most interested in learning.

If that primary lesson is hyperlinked, it would make things easy for the users of this curriculum.

Lesson 10 – Keep your plant secure

Lesson

Concepts taught

  • IoT devices need to connect securely to avoid bad actors.
  • You can secure an IoT device with a symmetric key, or a certificate.
  • You should clean up cloud resources once you have finished a project to save money or free resources.

Learning objectives

  • Learn the principles IoT security.
  • Learn about symmetric keys.
  • Learn about x.509 certificates.
  • Learn how to generate and use a test certificate.
  • Learn about cleaning up cloud resources.

Hardware required

  • Wio/Pi
  • Grove capacitive soil moisture sensor
  • Grove relay
  • Pump (optional)

Software/services

  • VS Code
  • PlatformIO (Wio)
  • IoT Hub (free tier)

Code

  • On-device code to read soil moisture and send to IoT Hub and listen to IoT Hub to control the relay, secured using x.509.

Tasks

  • Write lesson
  • Build and test lab - IoT Hub certificate setup
  • Build and test lab - Wio Terminal
  • Build and test lab - Raspberry Pi
  • Build and test lab - Virtual IoT device
  • Pre and post quiz questions
  • Sketchnote

Lesson 7 - Automated plant watering

Lesson

Concepts taught

  • Sensors may not provide an immediate reading.
  • Actuators can control additional hardware
  • IoT feedback loops can be controlled from the cloud to allow decisions to be made using more data than a single sensor, or to allow actuators to be controlled when not connected to the sensor.

Learning objectives

  • Learn how to send soil moisture data and control the relay over MQTT.
  • Learn about feedback delays such as waiting for water to soak into the soil before checking the moisture sensor.
  • Learn how to create server-side logic to listen for telemetry on the MQTT broker and send commands back.

Hardware required

  • Wio/Pi
  • Grove capacitive soil moisture sensor
  • Grove relay
  • Pump (optional)

Software/services

  • VS Code
  • PlatformIO (Wio)

Code

  • On-device code to read soil moisture and send over MQTT and listen to MQTT to control the relay.
  • The relay is left on for a fixed time, then wait for a fixed time before taking the next measurement.
  • Local server code to control the relay on time and wait for soil moisture changes.

Tasks

  • Write lesson
  • Build and test lab - Wio Terminal
  • Build and test lab - Raspberry Pi
  • Build and test lab - Virtual IoT device
  • Build and test lab - 'server' code
  • Pre and post quiz questions
  • Sketchnote

Isn't void main() mot allowed in C++ ??

I am C++ learner, i don't know about IoT. Just out of curiosity, Isn't void main() considered invalid from C++ 98.Or is it only for normal C++ and not the C++ IoT devices use ???
Edit: I am talking about IoT generally, bcoz I have come across some using void main() , Because its a IoT repo. Perphaps you can guide me. Thanks

Lesson 18 – Triggering the AI model call from a sensor

Lesson

Concepts taught

  • Many components would work together for checking quality – a sensor would detect that an item needs to be checked, an image would be taken, and feedback would be given via an actuator.
  • Serverless code can manage these devices working together.

Learning objectives

  • Learn about end-to-end solutions with multiple components.
  • Learn how to build an end-to-end fruit quality monitor by connecting multiple different devices via the cloud

Hardware required

  • Wio/Pi
  • Grove camera sensor or Pi camera
  • Grove proximity sensor
  • Red and green Grove LEDs
  • Fruit

Software/services

  • VS Code
  • PlatformIO (Wio)
  • IoT Hub (free tier)

Code

  • On-device code to read from the proximity sensor and send a message to IoT hub.

  • Local server-side code to listen for this message and send a command to capture a photo and run it through the AI model.

  • On-device code to listen for this request, take a photo, send it to the custom vision API on the edge and return the results.

  • Local Azure Functions code to send a request to report the quality status.

  • On-device code to listen to the status and display it using LEDs

Tasks

  • Write lesson
  • Build and test lab - Wio Terminal
  • Build and test lab - Raspberry Pi
  • Build and test lab - Virtual IoT device
  • Add Grove Proximity sensor
  • Pre and post quiz questions
  • Sketchnote

Lesson 17 – Running AI models on the edge

Lesson

Concepts taught

  • AI models can be run on the edge – so running on IoT devices closer to the sensors.
  • This is faster, private and can be cheaper.

Learning objectives

  • Learn about the upsides to running IoT models on the edge such as privacy and speed.
  • Learn the downside of running IoT models on the edge such as resiliency and having to manually capture data to retrain the model.
  • Learn how to run the custom vision model on the edge with IoT Edge (either on a Pi, or on your device)

Hardware required

  • Wio/Pi
  • Grove camera sensor or Pi camera
  • Fruit

Software/services

  • VS Code
  • PlatformIO (Wio)
  • IoT Hub (free tier)
  • Custom Vision
  • Cognitive services resource (free tier)

Code

  • On-device code to capture an image from the camera and send it to the custom vision API running on the edge.

Tasks

  • Write lesson
  • Build and test lab - IoT Hub setup with the CLI
  • Build and test lab - IoT Edge setup with the CLI
  • Build and test lab - Local IoT Edge deployment
  • Build and test lab - Raspberry Pi IoT Edge deployment
  • Build and test lab - Wio Terminal
  • Build and test lab - Wio Terminal
  • Build and test lab - Raspberry Pi
  • Build and test lab - Virtual IoT device
  • Pre and post quiz questions
  • Sketchnote

Home Assistants Security Explanation

Chapter : 1-Getting Started ; Lesson : 2 - A Deeper Dive into IoT

The Readme file of this lesson requires slight explanation

In the 69th line, when discussed the security issues of the home assistants , it says :

One example of this is a smart home device such as an Apple HomePod, Amazon Alexa, or Google Home, which will listen to your voice using AI models trained in the cloud, and will 'wake up' when a certain word or phrase is spoken, and only then send your speech to the Internet for processing, keeping everything else you say private.

The latter part that says keeping everything else you say private can be a bit confusing who are not very familiar with how these devices work. Can you please clarify this for everyone ?

Thank You.

--
Screenshot :
image

Lesson 8 – Moving your plant to the cloud

Lesson

Concepts taught

  • The cloud provides hosted IoT gateways you can use with your IoT devices to save hosting your own.

Learning objectives

  • Learn the principles of cloud hosting.

  • Learn about Azure IoT Hub.

  • Learn how to migrate soil control to IoT Hub.

  • Wio/Pi

  • Grove capacitive soil moisture sensor

  • Grove relay

  • Pump (optional)

Software/services

  • VS Code
  • PlatformIO (Wio)
  • IoT Hub (free tier)

Code

  • On-device code to read soil moisture and send to IoT Hub and listen to IoT Hub to control the relay.

Tasks

  • Write lesson
  • Build and test lab - IoT Hub deployment via the CLI
  • Build and test lab - Wio Terminal
  • Build and test lab - Raspberry Pi
  • Build and test lab - Virtual IoT device
  • Pre and post quiz questions
  • Sketchnote

Lesson 19 – Training a stock detector

Lesson

Concepts taught

  • AI can be trained to detect objects in an image, not just classify images.
  • It can be used to count images, giving an indication when an item needs to be re-stocked on a store shelf.

Learning objectives

  • Learn about object detection.
  • Learn how to train an object detector to count produce.

Hardware required

  • Identical objects (such as cereal boxes)

Software/services

  • Custom Vision
  • Cognitive services resource (free tier)

Code

  • None

Tasks

  • Write lesson
  • Build and test lab - create cognitive servies resource
  • Build and test lab - create custom vision object detector
  • Pre and post quiz questions
  • Sketchnote

Lesson 14 – Geofencing

Lesson

Concepts taught

  • Geofences are defined geospatial areas.
  • A GPS location can be tested to see if it is inside or outside the Geofence.
  • GPS is not accurate, and this comes into the testing of the geofence.

Learning objectives

  • Learn about geofences.
  • Learn how to define a Geofence using Azure Maps.
  • Learn how to test a point against a Geofence using Azure Maps.
  • Learn about consumer groups to run multiple Azure Functions against the same IoT Hub

Hardware required

  • Wio/Pi
  • Grove GPS sensor

Software/services

  • VS Code
  • PlatformIO (Wio)
  • IoT Hub (free tier)
  • Azure Maps (S1 tier, usage in the free quantity)

Code

  • On-device code to read and decode GPS data, and send to IoT Hub.
  • Local script to define a geofence.
  • Azure Functions app to detect if a vehicle is within a geofence and alert if not.

Tasks

  • Write lesson
  • Build and test lab - define geofence
  • Build and test lab - test geofence
  • Pre and post quiz questions
  • Sketchnote

Lesson 24 – Multiple language support

Lesson

Concepts taught

  • AI models can translate between different languages.
  • Spoken words can be translated into one language, processed for language understanding, and the result translated back to the original language.

Learning objectives

  • Learn about AI translations.
  • Learn how to translate the incoming speech, detecting the language.
  • Learn how to translate the outgoing speech to the original detected language.

Hardware required

  • Wio/Pi
  • USB Microphone (Pi)
  • Grove button (Pi)
  • Grove speaker (Wio)
  • USB speaker (Pi)

Software/services

  • VS Code
  • PlatformIO (Wio)
  • Cognitive services resource (free tier)

Code

  • On-device code to capture audio when the button is pressed and send it to the cloud to get the language spoken and convert to text in a common language.
  • The text is then processed using the language understanding model.
  • Responses are given in the initial language

Tasks

  • Write lesson
  • Build and test lab - Wio Terminal
  • Build and test lab - Raspberry Pi
  • Build and test lab - Virtual IoT device
  • Pre and post quiz questions
  • Sketchnote

Lesson 9 – Transplant your application logic to the cloud

Lesson

Concepts taught

  • The logic code that controls the relay can live in event-driven code in the cloud.
  • Using serverless you can respond to IoT telemetry and control IoT devices with custom logic that is only called when telemetry is received.

Learning objectives

  • Learn the principles of serverless.
  • Learn about Azure Functions.
  • Learn how to listen for telemetry in an Azure Function.
  • Learn how to control IoT devices from an Azure Function.
  • Learn how to run Azure Functions locally, then deploy to the cloud.

Hardware required

  • Wio/Pi
  • Grove capacitive soil moisture sensor
  • Grove relay
  • Pump (optional)

Software/services

  • VS Code
  • PlatformIO (Wio)
  • IoT Hub (free tier)
  • Azure Functions CLI
  • Azure Functions (consumption plan, within the free quantity)

Code

  • On-device code to read soil moisture and send to IoT Hub and listen to IoT Hub to control the relay.
  • Azure Functions event hub trigger connected to IoT Hub to control the relay on a timer and wait for soil moisture changes.

Tasks

  • Write lesson
  • Build and test lab - Install the Azure Functions CLI
  • Build and test lab - Local Azure Functions
  • Build and test lab - Deploy Azure Functions to the cloud
  • Pre and post quiz questions
  • Sketchnote

Lesson 16 – Checking fruit quality from an IoT device

Lesson

Concepts taught

  • IoT devices can use cameras and send the images to AI services for image classification.

Learning objectives

  • Learn how to capture images with a camera.
  • Learn how to use the custom vision APIs to check fruit.
  • Learn how to improve the model.

Hardware required

  • Wio/Pi
  • Grove camera sensor or Pi camera
  • Fruit

Software/services

  • VS Code
  • PlatformIO (Wio)
  • Custom Vision
  • Cognitive services resource (free tier)

Code

  • On-device code to capture an image from the camera and send it to the custom vision API.

Tasks

  • Write lesson
  • Build and test lab - Wio Terminal
  • Build and test lab - Raspberry Pi
  • Build and test lab - Virtual IoT device
  • Add PyCamera support to CounterFit
  • Pre and post quiz questions
  • Sketchnote

Quizes

Each lesson needs a pre- and post- lesson quiz.

Lessons

  • Lesson 1
  • Lesson 2
  • Lesson 3
  • Lesson 4
  • Lesson 5
  • Lesson 6
  • Lesson 7
  • Lesson 8
  • Lesson 9
  • Lesson 10
  • Lesson 11
  • Lesson 12
  • Lesson 13
  • Lesson 14
  • Lesson 15
  • Lesson 16
  • Lesson 17
  • Lesson 18
  • Lesson 19
  • Lesson 20
  • Lesson 21
  • Lesson 22
  • Lesson 23
  • Lesson 24

Lesson 5 - Predicting plant growth with IoT

Lesson

Concepts taught

  • IoT can be used to improve agriculture to help feed the growing global population.
  • Sensor data can help with prediction of plant growth and maturity.

Learning objectives

  • Learn about digital agriculture and ways IoT is helping increase growth yields.
  • Learn about measuring temperatures and calculating growing-degree days.

Hardware required

  • Wio/Pi
  • Grove temperature sensor

Software/services

  • VS Code
  • PlatformIO (Wio)

Code

  • On-device code to capture temperature sensor readings.
  • Calculation on-device of growing-degree day measurements for a given base temperature
  • Jupyter notebook to visualize growing degree day data

Tasks

  • Write lesson
  • Build and test lab - Wio Terminal
  • Build and test lab - Raspberry Pi
  • Build and test lab - Virtual IoT device
  • Build and test lab - Jupyter notebook for visualizing growing degree day data
  • Pre and post quiz questions
  • Sketchnote

Translation - Bengali

Translation of this curriculum in Bengali (aka Bangla). This issue is to be used for all discussions during this work.
Some resommendations are attached here regarding the usage of the contents and contributing into Bengali translation.
The main readme file containing currciulum overview is translations/README.bn.md


কনটেন্ট ব্যবহার সংক্রান্ত নির্দেশনা

  • কারিক্যুলামটির অনুবাদে শাব্দিক অর্থের চাইতে, ভাবগত বার্তাটি পৌঁছানোকে প্রাধান্য দেয়া হয়েছে । একারণে ইংরেজির প্রচলিত শব্দকে খুব বেশি পরিবর্তন করা হয়নি। অনেকক্ষেত্রে বাংলা বর্ণে তাদের লেখা হয়েছে।
  • ফাইলগুলোর অনুবাদের কাজটি চলমান রয়েছে এবং সবকিছু এখনো অনুবাদ করা সম্পন্ন হয়নি বিধায় সেসকল কনটেন্ট বাংলায় পাওয়া যাবেনা।
  • অনুবাদে কোন ভাষাগত অসংগতি, ত্রুটি, ভিন্ন ব্যখ্যা বিদ্যমান থাকলে, অনুগ্রহপূর্বক এই Issue তে জানাবেন।

এই কারিক্যুলামে বাংলা অনুবাদ সংযুক্তকরণ

  • শুরুতেই কনট্রিবিউশন এবং অনুবাদ ফাইল দুটো পড়ে নিলে অনেক বিষয় সম্বন্ধে জানা সহজ হবে।
  • এটি অনুবাদের ক্ষেত্রে ভাবগত অর্থকে প্রাধান্য দিতে হবে এবং এইক্ষেত্রে অনেক সময় ইংরেজির সাথে বাংলা বাক্যের গঠনে অমিলও আসতে পারে।
  • মাইক্রোসফটের স্টাইল গাইড অনুসরণ করে, তুমি/আপনি এই ধরণের সরাসরি সম্বোধন এডিয়ে যাওয়া হয়েছে কেননা সম্মানিত শিক্ষকেরাও এটি ব্যবহার করবেন, যেখানে 'তুমি' শব্দটি সামাজিকভাবে গৃহিত নয়। আবার 'আপনি' সম্বোধন অনেক বেশি প্রাতিষ্ঠানিক হয়ে যায় অথচ মাইক্রোসফটের ভাষা "Less Formal"। তাই "আমরা" সম্বোধন ব্যবহার করা হয়েছে, এতে করে শিখন কার্যক্রমে সব শ্রেণিকে অন্তর্ভুক্ত করা যায়। এই বিষয়টি বজায় রাখার অনুরোধ করা হলো। (বি.দ্র. বিশেষ কিছু ক্ষেত্রে এই নীতির ব্যত্যয় ঘটতে পারে)
  • অনুবাদ শুরুর পূর্বে এই Issue তে জানানোর অনুরোধ করা হলো যাতে একইসময় একইসাথে ২জন একই ফাইলে কাজ করার মতো পরিস্থিতি এড়িয়ে সুনিপুণভাবে কাজ করা যায়।

❤️ ধন্যবাদ !


Mohammad Iftekher (Iftu) Ebne Jalal

Microsoft Learn Student Ambassador.
Bangladesh.

Translation - Hindi

Translation of this curriculum to Hindi. This issue is to be used for all discussions during this work.

Lesson 21 – Speech recognition

Lesson

Concepts taught

  • IoT devices can capture audio and use AI services in the cloud for speech detection.

Learning objectives

  • Learn about pre-built AI services.
  • Learn how to capture audio.
  • Learn how to use AI services to convert speech to text.

Hardware required

  • Wio/Pi
  • USB Microphone (Pi)
  • Grove button (Pi)

Software/services

  • VS Code
  • PlatformIO (Wio)
  • Cognitive services resource (free tier)

Code

  • On-device code to capture audio when the button is pressed and send it to the cloud to convert to text.

Tasks

  • Write lesson
  • Build and test lab - Set up cognitive services speech with the CLI
  • Build and test lab - Wio Terminal
  • Build and test lab - Raspberry Pi
  • Build and test lab - Virtual IoT device
  • Pre and post quiz questions
  • Sketchnote

Lesson 12 - storing location data

Lesson

Concepts taught

  • IoT data is not stored by IoT services, it needs to be manually stored somewhere
  • IoT data is unstructured, so is better suited for NoSQL database
  • Azure storage includes blob storage for IoT data

Learning objectives

  • Learn about the differences between SQL and NoSQL storage
  • Learn about the differences between Table and Blob storage
  • Learn how to save IoT data into an Azure Storage Account blob storage

Hardware required

  • Wio/Pi
  • Grove GPS sensor

Software/services

  • VS Code
  • PlatformIO (Wio)
  • IoT Hub (free tier)
  • Azure Functions
  • Azure Storage Account

Code

  • On-device code to read and decode GPS data
  • Azure Functions to store GPS data

Tasks

  • Write lesson
  • Build and test lab - IoT Hub, Azure Functions, and storage account deployment
  • Build and test lab - Wio Terminal
  • Build and test lab - Raspberry Pi
  • Build and test lab - Virtual IoT device
  • Pre and post quiz questions
  • Sketchnote

Lesson 15 – Training a fruit quality detector

Lesson

Concepts taught

  • AI can detect images and can be trained to classify fruit based on good or bad.
  • Transfer learning allows image classifiers to be trained with only a small number of images.

Learning objectives

  • Learn about image classifiers.
  • Learn how to train an image classifier to compare good and bad fruit, then test it.

Hardware required

  • None

Software/services

  • Custom Vision
  • Cognitive services resource (free tier)

Code

  • None

Tasks

  • Write lesson
  • Gather sample image data
  • Build and test lab - create cognitive services resource with the CLI
  • Build and test lab - train an image classifier
  • Pre and post quiz questions
  • Sketchnote

Add support for sunlight sensor

At the recommendation of Seeed, the light sensor used in lessons 3 and 4 for the Pi should be changed to use a sunlight sensor instead of a light sensor.

The hardware guide will also need to be updated.

Repetition of Pip Installation Guide

In the pi.md , the details & instructions for Pip installation have been discussed twice in 54 and 168 lines. I am not sure if it's intentionally kept twice or if any one of them was to be removed. Please have a look if it's okay.

The same text that has been repeated in both instances is :

One of the powerful features of Python is the ability to install pip packages - these are packages of code written by other people and published to the Internet. You can install a pip package onto your computer with one command, then use that package in your code. This Grove install script will install the pip packages you will use to work with the Grove hardware from Python.

Lesson 20 – Checking stock from an IoT device

Lesson

Concepts taught

  • IoT devices can use cameras and send the images to AI services for object detection.

Learning objectives

  • Learn how to use the custom vision APIs to count objects.
  • Learn how to improve the model.

Hardware required

  • Wio/Pi
  • Grove camera sensor or Pi camera
  • Identical objects (such as cereal boxes)

Software/services

  • VS Code
  • PlatformIO (Wio)
  • Custom Vision
  • Cognitive services resource (free tier), IoT Hub (free tier)

Code

  • On-device code to capture an image from the camera and send it to the custom vision API

Tasks

  • Write lesson
  • Build and test lab - Wio Terminal
  • Build and test lab - Raspberry Pi
  • Build and test lab - Virtual IoT device
  • Pre and post quiz questions
  • Sketchnote

Translation - Spanish

Translate the curriculum in to Spanish. Use this issue for all discussions during this work.

Translation - Arabic

Translate the curriculum in to Arabic. Use this issue for all discussions during this work.

Lesson 23 – Giving spoken feedback

Lesson

Concepts taught

  • AI models can convert text to spoken words, using a variety of voice models.
  • This speech can be played on an IoT device.

Learning objectives

  • Learn about text to speech.
  • Learn about different voice models.
  • Learn how to convert text to speech using an AI service and play the speech on an IoT device.

Hardware required

  • Wio/Pi
  • USB Microphone (Pi)
  • Grove button (Pi)
  • Grove speaker (Wio)
  • USB speaker (Pi)

Software/services

  • VS Code
  • PlatformIO (Wio)
  • Cognitive services resource (free tier)

Code

  • On-device code to capture audio when the button is pressed and send it to the cloud to convert to text.
  • The text is then processed using the language understanding model.
  • On-device code to speak the response to the spoken command, as well as speak when the timer is up.

Tasks

  • Write lesson
  • Build and test lab - Wio Terminal
  • Build and test lab - Raspberry Pi
  • Build and test lab - Virtual IoT device
  • Pre and post quiz questions
  • Sketchnote

Translation - Turkish

This issue was created to track progress and discussions for the Turkish translation.

.net core / c#

Just wondering, can't you run .net core on rpi? Why not use that instead of python?

Translation - Macedonian

Translate the curriculum in to Macedonian. Use this issue for all discussions during this work.

Lesson 2 - A deeper dive into IoT

The following tasks need to be completed for this lesson:

  • Sketchnote
  • Slide deck for Reactor series
  • Live stream prep for Reactor series

Deploy action is erroring

When the quiz app is deployed, this error is given:

npm ERR! code EINTEGRITY
51
npm ERR! sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== integrity checksum failed when using sha512: wanted sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== but got sha512-b/h7CPV7QEdrqIxtAf2j31U5ef05uBDuvoXv6L51Q4rcS1jdlXAVKJv+atCFdUXYl9dyTHGyoMzIepwowRJjFw==. (44555 bytes)
52

53
npm ERR! A complete log of this run can be found in:
54
npm ERR!     /github/home/.npm/_logs/2021-06-29T00_02_44_873Z-debug.log
55

56

57
---End of Oryx build logs---
58
Oryx has failed to build the solution.

Lesson 22 – Language understanding

Lesson

Concepts taught

  • AI services can be trained to understand language.
  • They can extract entities and intents, such as how long to set a timer for.

Learning objectives

  • Learn how to configure language understanding.
  • Learn how to call a language understanding model from an IoT device.

Hardware required

  • Wio/Pi
  • USB Microphone (Pi)
  • Grove button (Pi)

Software/services

  • VS Code
  • PlatformIO (Wio)
  • Cognitive services resource (free tier)

Code

  • On-device code to capture audio when the button is pressed and send it to the cloud to convert to text.
  • The text is then processed using the language understanding model.

Tasks

  • Write lesson
  • Build and test lab - set up LUIS
  • Build and test lab - Functions app
  • Pre and post quiz questions
  • Sketchnote

Lesson 1 - Introduction to IoT

The following tasks need to be completed for this lesson:

  • Sketchnote
  • Slide deck for Reactor series
  • Live stream prep for Reactor series

Lesson 13 – Visualizing location data

Lesson

Concepts taught

  • IoT data can be visualized on dashboards in different forms depending on the data.
  • Location data can be visualized on a map that uses a Mercator projection to ‘flatten’ the globe.

Learning objectives

  • Learn about the Mercator projection.
  • Learn how to use the Azure Maps web SDK to show a map.
  • Learn about the GeoJSON format
  • Learn how to plot IoT data on the map using GeoJSON, and how GeoJSON uses lon,lat for points, not lat,lon

Hardware required

  • Wio/Pi
  • Grove GPS sensor

Software/services

  • VS Code
  • PlatformIO (Wio)
  • IoT Hub (free tier), Azure Functions, Azure Storage
  • Azure Maps (S1 tier, usage in the free quantity)

Code

  • On-device code to read and decode GPS data, and send to IoT Hub, then a function app, then storage (from previous lesson)
  • Local web app to show the Azure Maps web SDK and plot the GPS location

Tasks

  • Write lesson
  • Build and test lab - set up Azure Maps with the CLI
  • Build and test lab - Web app
  • Pre and post quiz questions
  • Sketchnote

Lesson 6 – Detecting soil moisture

Lesson

Concepts taught

  • IoT can implement feedback loops to control actuators based off sensor data, such as watering dry soil.
  • The underlying implementation of how sensors and actuators communicate (I2C, SPI, UART)
  • Sensors sometimes need to be calibrated

Learning objectives

  • Learn how to measure soil moisture.
  • Learn about I2C, SPI, UART (this is a light lesson as the concepts are not new, so is a good time to add additional knowledge)

Hardware required

  • Wio/Pi
  • Grove capacitive soil moisture sensor

Software/services

  • VS Code
  • PlatformIO (Wio)

Code

  • On-device code to read soil moisture

Tasks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.