cover photo

COURSE

IOT-001

3 Levels · 6 Months

Introduction to IOT

IOT-001

Jump to:


Level 1


Generic Tasks

TASK 1: 3D Printing

Understand the working of a 3D printer, check out the online resources. Understand what's an STL file, and then learn to slice it (using ultimaker or creality slicer).Go through the SOP'S regarding the 3d printer. Learn about bed temperature, infill density and other printer settings. Finally get an STL file from the internet, and slice it and put it for print.

Resources:

Introduction to 3d printer

PLA settings

Types of 3D printing

(Note this task is to be done under coordinator supervision.) 3dprinter

TASK 2: API

What is an API? Learn the working of an API and its applications. Using any api of your choice, build an user interface(web app, mobile app, etc), where you can make calls and then display the necessary information. An example weather app is given below, using the open weather api.

Example

TASK 3: Working with Github

Familiarize yourself with GitHub integrated workflows (GitHub actions), Issues, and pull requests with this task. Given below is a git repository, go check it out and then perform the necessary tasks stated in the readme file.

Check this link for more info: https://github.com/UVCE-Marvel/git-task

TASK 4: Get familiar with the command line on ubuntu and do the following subtasks:

● Create a folder named test.

● cd into that folder.

● Create a blank file without using any text editor.

● list the files in that folder

● create 2600 folders in this folder where each folder is named like . For example, M90 or B56.

● concatenate two text files containing any random text and display them on the terminal.

https://ubuntu.com/tutorials/command-line-for-beginners#1-overview

Task 5 : Build Your Own Brain -Linear Regression from Scratch

Dive into the core of machine learning by implementing Linear Regression from scratch using , and compare its performance with the scikit-learn implementation. Use the California Housing dataset to evaluate your model on real-world data.

Your Task:

  • Implement linear regression manually (without using ML libraries for training).
  • Understand and apply gradient descent to minimize error.
  • Compare your custom model’s performance against sklearn.linear_model.LinearRegression .
  • You should analyze results by:
    • Graph showing line of best fit and the datapoints.
    • Performance metrics: MSE, MAE, R² for both custom and scikit-learn models.
    • Brief comparison between two models.

Download Dataset

Learn Linear Regression:

  1. Understanding :

  2. Coding the linear regression algorithm from scratch:

Expected Outcomes:

  • Grasp how gradient descent optimizes weights in linear regression.
  • Understand the importance of feature scaling.
  • Know how to evaluate regression models using standard metrics.
  • Be able to appreciate the convenience and performance of inbuilt ML libraries.

Precautions:

  • Always normalize or standardize features before training your scratch model, especially if you’re using gradient descent.
  • Be cautious with your learning rate , too small and the model is slow, too large and it may diverge.
  • Initialize weights and bias properly ( small random values or zeros).

Task 6 : The Matrix Puzzle — Decode with NumPy & Reveal the Image

Get hands-on with NumPy and Matplotlib by solving a visual puzzle. You’ll be given a scrambled matrix, and your mission is to decode it into a hidden image using NumPy operations and visualization techniques.

Your Task:

  • Download the scrambled matrix from the link provided.
  • Use your knowledge of NumPy to manipulate, reshape, and reorient the matrix.
  • Reveal the secret image by plotting it using matplotlib.pyplot.imshow() .
  • Scrambled Matrix: Download Here
  • NumPy Learning Doc: Explore Here

Learn NUMPY:

Learn Matplotlib:

Decode the Matrix using these clues and Visualize it :

  • "Try reshaping the encoded array into a square—how many elements are there?"
  • "The structure may be upright, but the data might be sideways. Look at its orientation."
  • "Sometimes the end is actually the beginning."

Expected Outcomes:

  • Gain confidence with NumPy operations like reshaping, slicing, flipping, and transposing.
  • Learn to visualize 2D arrays using Matplotlib.
  • Sharpen your debugging and puzzle-solving skills in a fun context.

Precautions:

  • Check the shape of the array before applying imshow() - wrong dimensions will throw errors.
  • Ensure that your reshaped matrix has the correct number of elements (it's likely a square!).

TASK 7: Create a Portfolio Webpage

Create a website to showcase your portfolio - about yourself, interests, projects, social media profiles and more. It has to be responsive and also pushed to the git repository. CSS can be of your choice and any framework can be used.

TASK 8: Writing Resource Article using Markdown

Markdown is an easy-to-use markup language that is used with plain text to add formatting elements (headings, bulleted lists, URLs) to plain text without the use of a formal text editor or the use of HTML tags. Markdown is device agnostic and displays the writing format consistently across device type. Write a technical resource article on a topic of your choice and post it on the MARVEL website. Refer to the linked article for further details

Link

TASK 9: Tinkercad

Create a tinkercad account, get familiar with the application, understand the example circuits given and simulate a simple circuit using an ultrasonic sensor to estimate the distance between an obstacle and the sensor. Display the results on the serial monitor.

Create a radar system utilising an ultrasonic sensor and servo motor to detect objects within a certain range. The ultrasonic sensor emits sound waves and measures the time taken for them to bounce back, while the servo motor rotates the sensor to cover a wider area, providing a simple yet effective detection mechanism. RESOURCE: https://youtu.be/NwmcNCvUcDc?si=x2LAYMFiqs1SzLfI TASK OUTCOME: introduction to- · TINKERCAD · Working of ultrasonic sensor and servo motor · Radar technology PRECAUTIONS/SAFETY MEASURES- NOT ANY

TASK 10: Speed Control of DC Motor

Explore basic techniques for controlling DC motors, understand the control DC motors using the L298N motor driver and the Arduino board. Using an UNO and H-Bridge L298N motor driver, control the speed of a 5V BO motor, try simulating this on tinkercad and then perform it on the hardware, Record videos of you doing the same.

Reference

TASK 11: LED Toggle Using ESP32

Learn the working of an ESP32 and create a standalone web server with an ESP32 that controls the LED connected with ESP32 GPIOs. Use the arduino IDE to code and upload the program to the ESP32. Learn to configure the IDE to upload code to an ESP32.

Reference

TASK 12: Soldering Prerequisites

(Soldering is to be done in presence of a coordinator)

Learn about the soldering equipment present in our lab, the solder, the soldering iron, soldering wick, flux, etc. Learn to use them and perform basic soldering on a perf board, for example a LED circuit in the presence of a coordinator and document the same.

Reference

TASK 13:

Design a 555 astable multivibrator with duty cycle 60%, rig up the circuit on a breadboard and by using the probes observe the output of your circuit on the DSO. Resources:

Circuit

TASK 14: Karnaugh Maps and Deriving the logic circuit

Description: For 4 cases, based on door lock/open and key pressed/not pressed. Determine the karnaugh map and make a burglar alarm using simple logic circuits. The buzzer or led blinks when certain conditions are met, you can use push buttons for the door and key.

(Tip: use logic gates, use k-maps to figure out the working conditions.)

TASK 15: Active Participation:

Take part in any technical event, inter or intra college and submit the issued certificate of participation.

Enroll for a MOOC and complete the course.

TASK 16: Datasheets report writing:

Topics: 1)MQ135 Gas sensor 2)L293D motor driver Task Description: Study the datasheet of any one of the above and write a report on it. Specify about the ICs used in L293D, PWM, H-bridge etc. In case of MQ 135, specify the calibrations for different gases and the Freundlich Absorption Theorem Graph.

Task 17: Introduction to VR

Familiarise yourself with what Virtual Reality is. Make a detailed study about what's the difference between VR and AR. Mention about the trends in the space and technology stack being developed. Make about Indian companies in this space. Make the report with detail. Using generative AI to generate this study can lead to disqualification.

vrlol

TASK 18: Sad servers - "Like LeetCode for Linux"

Sadservers is an excellent ground to test your Linux troubleshooting skills. Here is a troubleshooting scenario: Command Line Murders. Troubleshoot and Make Sad Servers Happy!

Command line murder
Linux commands
Linux commands

Task 19: Make a Web app

Using express create a resource library website where you can browse the resource articles, books etc which are available and also manage your account
Reference


Level 2


Level 1 – Introduction to ESP32 & Basic Components


Task 1a – Theory: Digital I/O & Interrupts

Objective: Study GPIO configuration and interrupts for efficient input handling.

Description: Study and comprehend the hardware and software principles behind GPIO pin configuration, including input, output, pull-up/down resistors, and interrupt-driven event handling on the ESP32. Students will explore how interrupts optimize system responsiveness for button presses without constant polling.

Resource: Pinout of ESP32


Task 1b – Simon Says Game using ESP32

Objective: Familiarize with the ESP32 microcontroller by creating an engaging game.

Description: Create a fun and interactive Simon Says game using an ESP32, pushbuttons, and LEDs. The game should blink the LEDs in a random sequence, and the user needs to press the corresponding buttons in the correct order. If the user fails, provide a clear indication (e.g., all LEDs flashing) and restart the game.

Resource: Modify the existing Wokwi Simulation for ESP32 compatibility.


Task 2 – Temperature-Based Fan Control

Objective: Automate fan (DC motor) control using a temperature sensor and relay.

Description: Create an automated temperature regulation system where a DHT11 sensor continuously monitors ambient temperature, displaying readings via the serial monitor. When temperature crosses a pre-set threshold, the motor driver will signal the DC motor to turn on at the appropriate speed. This task integrates sensor data acquisition with actuator control to demonstrate real-world environmental automation concepts.

Resource: Temperature Controlled Fan


Communication Protocols


Task 3a – IoT Communication Protocols

Objective: Understand IoT and Serial protocols: MQTT, HTTP, I2C, SPI.

Description: Gain theoretical knowledge of common IoT communication protocols (MQTT, CoAP, HTTP, etc.), understanding their characteristics, trade-offs, and suitable use cases.

Resources:


Task 3b – Controlling LEDs Using MQTT

Objective: Utilize any MQTT platform to establish publishing and subscribing functionalities.

Description: Explore the basics of the MQTT protocol and its working. Learn about different communication and network protocols. Upon publishing a message to control LEDs, the subscribers should receive the message and activate the corresponding LED accordingly.

Example:

LED 1 ON  → Turns on the first LED  
LED 1 OFF → Turns off the first LED  

Similarly, control LED 2 and LED 3.

Resources:

Takeaway: Understand MQTT communication and apply it to control hardware remotely.


Task 4 – Communication using I2C Protocol

Objective:

  • Both ESP32 boards should host web servers for bidirectional communication.
  • The typed message on one webserver should be displayed on the LCD connected to the other ESP32.

Description: Send data between two ESP32 boards using the I2C protocol. Display a message on an LCD screen by typing the message using a webserver hosted on the ESP32.

Takeaway: Learn wired communication between two microcontrollers using the I2C protocol.

Resource: ESP32 I2C Master and Slave


Cloud Communication & Data Logging


Task 5 – Sending Data to ThingSpeak and Creating a Regression Model

Objective:

  • Publish temperature data from ESP32 to ThingSpeak.
  • Retrieve the dataset from ThingSpeak for analysis.
  • Using Matplotlib in Python, plot the graph of Temperature vs. Time.
  • Create a regression model to analyze the relationship between Humidity (from a DHT11 sensor) and Moisture Percentage (from a capacitive soil moisture sensor).

Description: Using an ESP32, post temperature data from a sensor and soil moisture data to the ThingSpeak website using its API and display graphs:

  • Temperature vs. Soil Moisture
  • Humidity vs. Soil Moisture

Retrieve the data back from ThingSpeak and create a regression model.

Plot the Regression Graph:

  • X-axis: Humidity
  • Y-axis: Moisture Percentage

Resources:

Takeaway: Learn to publish and retrieve data from a web server, analyze data, and apply machine learning for prediction.


Web Servers & Local Interfaces


Task 6 – Flashing Morse Code

Objective: Create a website that converts typed input (normal words) to Morse code. The LED should blink according to the Morse code generated.

Description: Set up an ESP32 to flash Morse code using an LED. The message is sent through a webserver hosted on the ESP32.

Resource: Morse Code with Arduino

Takeaway: Understand the application of webservers in communication.


Task 7 – Health Vitals Dashboard

Objective: Plot graphs of the vitals on a webserver for real-time monitoring.

Description: Measure heart rate and blood oxygen levels using the pulse sensor and display the results graphically on a webserver.

Resources:

Takeaway: Learn to monitor health vitals and display data graphically on a webserver.


Actuation, Surveillance & Alerts


Task 8 – Wi-Fi Controlled Surveillance Bot with Live Video Stream

Objective: Create a surveillance bot capable of capturing live video feed and remotely controlling its movements.

Description: Build a surveillance robot using an ESP32-CAM and L298N motor driver. Implement live video streaming and enable remote control functionality over Wi-Fi.

Specific Requirements:

  • Use L298N Motor Driver for movement control.
  • Set up live video streaming server.
  • Upload the captured video to the MARVEL website.

Resource: ESP32-CAM Surveillance Robot

Takeaway: Learn video streaming, remote control, and motor driver interfacing with ESP32.


Task 9 – Fire Alarm System with SMS Alerts

Objective: Learn about fire detection and integrating SMS alert systems using APIs.

Description: Develop a fire alarm system using the ESP32 microcontroller with fire sensors. On detecting heat, the ESP32 triggers an SMS alert using the Twilio API or any other platform.

⚠️ Important: This task must be tested under supervision due to safety precautions.

Resources:

Takeaway: Learn about fire detection and integrating SMS alert systems using APIs.


Level 3


Level 2 – Smart Living & Environmental Automation

Task 1 – Smart Irrigation System

Objective: Automate plant watering based on soil moisture levels.

Description: Design a smart irrigation system using an ESP32 and a solenoid valve that waters the plant when the soil moisture content goes below a certain threshold. The system should use a relay to control the valve.

Requirements:

  • Monitor soil moisture continuously.
  • Trigger the solenoid valve using a relay when moisture falls below the set threshold.

Resource: How to Control Solenoid Valve Using Arduino

Takeaway: Learn automated irrigation using relays and solenoid valves with ESP32.

Task 2 – Smart Parking System

Objective: Monitor parking space availability using ultrasonic sensors.

Description: Develop a smart parking system using an ESP32 and an ultrasonic sensor, integrating it with any IoT platform (e.g., Blynk, Rainmaker) to detect whether a car is parked in a spot.

Requirements:

  • Ultrasonic sensor should detect vehicle presence.
  • Status should be displayed on the Blynk app.

Resource: Smart Parking System with Ultrasonic Sensor and Blynk

Takeaway: Learn real-time monitoring and IoT integration using the Blynk platform.

Task 3 – Smart Street Lighting with Node-RED Dashboard

Objective: Create a Smart Street Lighting System and get real-time operational data using a Node-RED dashboard.

Description: Develop an automated street lighting system that uses:

  • LDR sensor to detect daylight levels.
  • PIR sensor to sense pedestrian motion. The system dims lights during idle periods and brightens them upon motion detection using a relay switch. Additionally, send real-time operational data to a Node-RED dashboard for monitoring and alerts.

Requirements:

  • Implement an intelligent street lighting system using an ESP32.
  • Use an LDR sensor to detect ambient light levels.
  • Use a PIR sensor to detect pedestrian or vehicle motion.
  • Dim the street light during idle/dark conditions and brighten upon motion detection.
  • Control the lighting system using a relay module.
  • Visualize real-time sensor data and system state on a Node-RED Dashboard.

Resources: Interfacing with LDR and ESP32 Interfacing Node-Red with ESP32

Takeaway: Learn how to integrate sensor fusion (LDR + PIR), automate actuation (Relay), and visualize smart infrastructure status using a live Node-RED dashboard. This task enhances understanding of real-time control systems and IoT-based urban infrastructure.

Identification & Cloud Logging

Task 4 – Intro to RFID and Attendance Logger

Objective: Understand RFID technology and learn to log data on cloud platforms.

Part i – Introduction to RFID

  • Learn about RFID cards and RFID card readers.
  • Interface an RFID reader with ESP32 and read a metro card.
  • Display the card's hex code on the serial monitor.

Resource: ESP32 with RFID Access Control

Part ii – Attendance Logger

  • Use RFID cards to log attendance.
  • Display attendance with timestamps on Google Sheets using Google App Scripts or any other preferred method.

Resource: Attendance Logger with RFID and Google Sheets

Takeaway: Understand RFID technology and learn to log data on cloud platforms.

Security & Computer Vision

Task 5 – House Security System

Objective: Create a security system to detect motion, capture intruder images, and trigger an alert.

Description: Develop a house security system using:

  • ESP32-CAM
  • PIR motion sensor
  • Buzzer, integrated with the Blynk app.

Requirements:

  • PIR sensor to detect motion.
  • ESP32-CAM to capture intruder images.
  • Buzzer to sound an alarm upon intrusion detection.
  • Integrate with Blynk app for real-time alerts and image viewing.

Resource: ESP32-CAM Security System

Takeaway: Learn home security automation with image capturing and IoT alert systems.

Task 6 – Red Light Green Light Game (Squid Game)

Objective: Build a motion detection game using image processing and sound effects.

Description: Create a “Red Light Green Light” game inspired by Squid Game using ESP32-CAM, an image recognition model (e.g., OpenCV), and a buzzer.

Requirements:

  • ESP32-CAM to detect player movements.
  • Image recognition model (OpenCV) to identify player movements.
  • Use a buzzer to play a sound when a player is eliminated.

Resources: Motion Detection with ESP32-CAM Squid Game Red Light Green Light

Takeaway: Learn computer vision, image recognition, and sound integration with ESP32.

AI & Voice-Controlled Automation

Task 7 – Creating Your Own Home Assistant

Objective: Implement voice-controlled home automation.

Description: Build a smart home system using an ESP32 and a microphone sensor, integrated with ChatGPT or any AI model to control devices using voice commands.

Requirements:

  • Use a microphone sensor to capture voice commands.
  • Control LEDs and motors using ChatGPT or any AI for processing commands.
  • Enable question-answer functionality via ChatGPT or AI integration.

Resources: ESP32 Voice Recognition Integrating AI with Home Automation

Takeaway: Learn voice recognition, IoT automation, and AI integration.

UVCE,
K. R Circle,
Bengaluru 01