21ec581 IOT Manual-Vtu-Belagavi

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 63

lOMoARcPSD|37191326

21EC581-Manual - VTU Belagavi Syllabus for ECE

IoT Lab Mnaul (Visvesvaraya Technological University)

Scan to open on Studocu

Studocu is not sponsored or endorsed by any college or university


Downloaded by Leena vvit ([email protected])
VISVESVARAYA TECHNOLOGICAL
UNIVERSITY,
Jnana Sangama, Belagavi – 590018

KLS VISHWNATHRAO DESHPANDE INSTITUTE


OF TECHNOLOGY,
Haliyal – 581 329, Uttara Kannada

LABORATORY MANUAL
Course Internet of Things
Title :
Course Code 21EC581
:
Year / 3rd Year / 5th Semester
Semester
: Academic Odd Semester of 2023
Year : - 2024
Course In-Charge Mr. B N
: Choukimath
[email protected]

1
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Department of Electronics & Communication
Engineering

Only for education purpose


Title of Experiments Page No.
Expt.No
.
1 a) To interface LED/Buzzer with Arduino/Raspberry Pi and write a
program to ‘turn ON’ LED for 1 sec after every 2 seconds.
b) To interface Push button/Digital sensor (IR/LDR) with
Arduino/Raspberry Pi and write a program to ‘turn ON’ LED when
push button is pressed or at sensor detection.
2 a) To interface DHT11 sensor with Arduino/Raspberry Pi and write a
program to print temperature and humidity readings.
b) To interface OLED with Arduino/Raspberry Pi and write a program to
print temperature and humidity readings on it.
3 To interface motor using relay with Arduino/Raspberry Pi and write a
program to ‘turn ON’ motor when push button is pressed.
4 To interface Bluetooth with Arduino/Raspberry Pi and write a program to
turn LED ON/OFF when '1'/'0' is received from smartphone using
Bluetooth.
5 To interface Bluetooth with Arduino/Raspberry Pi and write a program to
send sensor data to smartphone using Bluetooth.
6 Write a program on Arduino/Raspberry Pi to upload temperature and
humidity data to thingspeak cloud.
7 Write a program on Arduino/Raspberry Pi to retrieve temperature and
humidity data from thingspeak cloud.
8 Write a program to create UDP server on Arduino/Raspberry Pi and
respond with humidity data to UDP client when requested.
9 Write a program to create TCP server on Arduino/Raspberry Pi and
respond with humidity data to TCP client when requested.
10 Write a program on Arduino/Raspberry Pi to publish temperature data to

2
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
MQTT broker.
11 Write a program on Arduino/Raspberry Pi to subscribe to MQTT broker
for temperature data and print it.
12 To install MySQL database on Raspberry Pi and perform basic SQL
queries.

Introduction to Internet of Things


IoT (Internet of Things) is a revolutionary concept that refers to the network of
interconnected physical objects, devices, and sensors that communicate and exchange data over
the internet. These objects, often called "things," are embedded with various technologies such as
sensors, actuators, and communication interfaces, enabling them to collect, transmit, and receive
data. Here's an explanation of IoT:

Key Components and Characteristics of IoT:


1. Things/Devices: These are the physical objects equipped with sensors, actuators, and
communication modules. These devices can be anything from smart thermostats,
wearable fitness trackers, industrial machines, to environmental sensors, and more. They
gather data from their surroundings or perform actions based on commands.
2. Sensors and Actuators: Sensors collect data from the environment, measuring variables
such as temperature, humidity, pressure, motion, and more. Actuators are responsible for
carrying out actions based on commands received from the network or other devices, such
as turning on/off lights or adjusting the thermostat.
3. Connectivity: IoT devices rely on various communication technologies to connect to the
internet and other devices. This can include Wi-Fi, cellular networks, Bluetooth, Zigbee,
LoRa, or Ethernet, depending on the device's range, power consumption, and bandwidth
requirements.
4. Data Transmission: Data collected by IoT devices is transmitted to central processing
units, such as cloud servers or edge computing platforms. This data can be transmitted in
real-time or stored locally for later transmission, depending on the use case.
5. Data Processing: The collected data is processed to extract valuable insights, trends, and
patterns. This can involve analytics, artificial intelligence, and machine learning to make
informed decisions.
6. Cloud/Edge Computing: IoT data can be processed either in the cloud (centralized) or at
the edge (closer to the device). Edge computing reduces latency and allows for real-time
decision-making, while cloud computing offers scalability and accessibility from
anywhere.

3
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
7. Applications: IoT applications are software programs or interfaces that enable users to
interact with IoT data and control devices. These can take the form of web-based
dashboards, mobile apps, or automation systems.

Key Principles of IoT:


1. Interconnectivity: IoT thrives on the idea that virtually any device can be connected to
the internet, allowing for data sharing and remote control. This interconnectivity
facilitates automation and real-time monitoring.
2. Sensing and Data Collection: IoT devices are equipped with sensors that collect data
from the physical world. This data can be environmental data, usage statistics, or other
relevant information.
3. Data Analysis: The collected data is analyzed to derive valuable insights, enabling
businesses and individuals to make informed decisions, optimize processes, and improve
efficiency.
4. Remote Control and Automation: IoT allows for remote monitoring and control of
devices. This can range from adjusting home thermostat settings from a smartphone to
remotely managing industrial equipment.

Applications of IoT:
IoT has a wide range of applications across various industries, including:
• Smart Homes: Home automation, security systems, and energy management.
• Smart Cities: Traffic management, waste management, and environmental monitoring.
• Industrial IoT (IIoT): Predictive maintenance, asset tracking, and process optimization.
• Healthcare: Remote patient monitoring and medical device connectivity.
• Agriculture: Precision farming and livestock monitoring.
• Logistics and Supply Chain: Inventory management and asset tracking.

How does Internet of Thing (IoT) Work?


The Internet of Things (IoT) works by connecting physical devices, sensors, and objects to the
internet, enabling them to collect, transmit, and receive data. The core principles of how IoT
works involve data sensing, connectivity, data processing, and user interaction:

4
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
Sensing Data: IoT devices are equipped with various sensors that capture data from the
physical world. These sensors can measure parameters like temperature, humidity,
pressure, light, motion, and more. Some devices also include cameras and microphones
for visual and audio data.
2. Data Transmission: IoT devices use communication technologies to transmit the data
they collect to other devices or central processing units. The choice of communication
method depends on factors such as range, power consumption, and bandwidth
requirements. Common communication technologies include Wi-Fi, cellular networks
(3G, 4G, 5G), Bluetooth, Zigbee, LoRa, and more.
3. Data Processing: The data collected by IoT devices is sent to central processing units,
such as cloud servers or edge computing platforms. Here, the data is processed and
analyzed. This processing can include data filtering, aggregation, storage, and, in many
cases, the application of machine learning or artificial intelligence algorithms to extract
meaningful insights from the data.
4. Storage: Processed data is often stored in databases or data lakes, making it accessible
for future analysis and historical reference.
5. Decision-Making: Based on the processed data, IoT systems can make informed
decisions. These decisions can range from simple actions like turning on a light when a
motion sensor is triggered to complex decisions in industrial IoT (IIoT), such as
predicting equipment maintenance needs.
6. User Interaction: IoT applications and interfaces enable users to interact with the
system. Users can monitor and control devices, view data through web-based dashboards
or mobile apps, and receive alerts or notifications. Some systems also allow voice control
or integration with other software applications.
7. Automation: IoT can enable automation based on pre-defined rules or data-driven
triggers. For example, a smart thermostat can automatically adjust the temperature based
on occupancy and ambient conditions.

5
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
8. Security and Privacy: Security measures are crucial in IoT to protect data, devices, and
the network from unauthorized access and potential vulnerabilities. This includes
encryption, authentication, and access control.

IoT Ecosystem: IoT systems are part of a larger ecosystem that includes:
• Devices/Things: These are the IoT devices and sensors that collect data and perform
actions.

• Connectivity: Communication networks and protocols that allow devices to transmit data
over the internet.

• Cloud/Edge: Centralized cloud platforms or edge computing environments for data


processing and storage.

• Applications: Software interfaces that enable users and other systems to interact with IoT
data and devices

IoT Architecture
IoT (Internet of Things) architecture defines the structure and components of an IoT system,
outlining how devices, data, and processes interact. It provides a blueprint for building a
functional and secure IoT ecosystem. Here's an explanation of the typical architecture of IoT:

1. Devices/Things: These are the physical objects or devices embedded with sensors,
actuators, and communication modules.

IoT devices can include a wide range of objects, from environmental sensors to industrial
machinery and wearable devices.

They collect data from their surroundings or perform actions based on commands received.

2. Sensors and Actuators: Sensors are responsible for collecting data from the physical
world. They measure variables such as temperature, humidity, pressure, motion, light, and
more.

Actuators carry out actions based on commands received from the network or other devices.
Examples include turning on lights or adjusting thermostat settings.

3. Connectivity: IoT devices rely on various communication technologies to connect to the


internet and other devices. The choice of connectivity depends on the specific use case.

Common IoT communication technologies include Wi-Fi, cellular networks (3G, 4G, 5G),
Bluetooth, Zigbee, LoRa, and Ethernet.

4. Data Transmission: Data collected by IoT devices is transmitted to central processing


units, such as cloud servers or edge computing platforms.

6
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Data can be transmitted in real-time or stored locally for later transmission, depending on the use
case.

5. Data Processing: Processed data is essential for extracting valuable insights from the collected
information. Data processing can involve filtering, aggregation, and applying machine learning
algorithms.

Data processing can occur in the cloud (centralized) or at the edge (closer to the device),
depending on the architecture and requirements.

6. Cloud/Edge Computing: The data is sent to cloud platforms or edge computing environments
for further processing, storage, and analysis.

Cloud computing offers scalability and accessibility from anywhere, while edge computing
reduces latency and allows for real-time decision-making.

7. Applications: IoT applications are software programs or interfaces that enable users to interact
with IoT data and control devices.

These applications can take the form of web-based dashboards, mobile apps, or automation
systems.

8. User Interaction: End-users interact with the IoT system through web interfaces, mobile apps,
voice commands, or other interfaces.

Users can monitor data, control devices, and receive alerts or notifications.

9. Security and Privacy: Security measures are crucial to protect against data breaches,
unauthorized access, and device tampering. IoT security includes encryption, authentication,
access control, and regular updates to address vulnerabilities.

10. External Integration: IoT systems may integrate with other systems, such as enterprise
resource planning (ERP) systems, customer relationship management (CRM) systems, or third-
party APIs for extended functionality and data sharing.

7
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
IoT Protocols
IoT (Internet of Things) protocols are communication standards that enable devices and
systems in the IoT ecosystem to exchange data reliably and efficiently. These protocols play a
crucial role in ensuring that devices from different manufacturers can communicate and work
together seamlessly. Here are some common IoT protocols:
MQTT (Message Queuing Telemetry Transport):
• MQTT is a lightweight and efficient publish-subscribe messaging protocol.
• It is well-suited for IoT due to its low overhead, making it ideal for low-power and low-
bandwidth devices.
• Devices can publish messages to topics, and other devices can subscribe to these topics to
receive data.
HTTP (Hypertext Transfer Protocol) and HTTPS (HTTP Secure):
• HTTP is a standard protocol for transmitting data over the web.
• IoT devices can communicate with web servers and cloud services using HTTP or its
secure version, HTTPS.
• It's commonly used for interactions between IoT devices and cloud platforms or web
applications.
CoAP (Constrained Application Protocol):
• CoAP is a lightweight, UDP-based protocol designed for constrained IoT devices.
• It is suitable for low-power, low-data-rate applications, and it is often used in resource-
constrained environments.
AMQP (Advanced Message Queuing Protocol):
• AMQP is a robust and reliable messaging protocol that ensures guaranteed message
delivery.
• It is suitable for IoT applications that require reliable communication, such as industrial
and enterprise IoT use cases.
DDS (Data Distribution Service):
• DDS is a protocol for real-time, data-centric communication between IoT devices and
systems.
• It is commonly used in industrial and mission-critical applications where low latency and
high reliability are essential.
Bluetooth and Bluetooth Low Energy (BLE):
• Bluetooth is a wireless communication protocol often used in short-range IoT
applications.
• BLE, a low-power variant of Bluetooth, is well-suited for battery-operated IoT devices
and smartphone connectivity.
LoRaWAN (Long Range Wide Area Network):
• LoRaWAN is designed for long-range, low-power communication.
• It is suitable for IoT applications like remote environmental monitoring and asset
tracking.
Zigbee:
• Zigbee is a low-power, low-data-rate wireless communication protocol.
• It is commonly used in home automation and industrial IoT applications.
Modbus:
• Modbus is a communication protocol widely used in industrial automation.
• It is suitable for connecting industrial devices and sensors to control systems and SCADA
(Supervisory Control and Data Acquisition) systems.
DDS (Device Device Server):
• DDS is a lightweight protocol that facilitates peer-to-peer communication between IoT
devices.
• It is suitable for applications where low latency and efficient data exchange are critical.

8
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
IoT Software
Embedded systems have less storage and processing power, their language needs are different.
The most commonly used operating systems for such embedded systems are Linux or UNIX-like
OSs like Ubuntu Core or Android.
IoT software encompasses a wide range of software and programming languages from general-
purpose languages like C++ and Java to embedded-specific choices like Google ‘s Go language
or Parasail.

Fig: IoT Hardware | IoT Software


Few IoT Software’s are
 C & C++: The C programming language has its roots in embedded systems—it even got its
start for programming telephone switches. It‘s pretty ubiquitous, that is, it can be used almost
everywhere and many programmers already know it. C++ is the object-oriented version of C,
which is a language popular for both the Linux OS and Arduino embedded IoT software systems.
These languages were basically written for the hardware systems which makes them so easy to
use.
 Java: While C and C++ are hardware specific, the code in JAVA is more portable. It is more
like a write once and read anywhere language, where you install libraries, invests time in writing
codes once and you are good to go.
 Python: There has been a recent surge in the number of python users and has now become
one of the ―go-to‖ languages in Web development. Its use is slowly spreading to the embedded
control and IoT world—specially the Raspberry Pi processor. Python is an interpreted language,
which is, easy to read, quick to learn and quick to write. Also, it‘s a powerhouse for serving data-
heavy applications.

9
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Introduction to Node MCU ESP8266 module
The NodeMCU (Node Micro-Controller Unit) is an open-source software and hardware
development environment built around an inexpensive System-on-a-Chip (SoC) called the
ESP8266. The ESP8266, designed and manufactured by Espressif Systems, contains the crucial
elements of a computer: CPU, RAM, networking (WiFi), and even a modern operating system
and SDK. That makes it an excellent choice for Internet of Things (IoT) projects of all kinds.

NodeMCU ESP8266 Specifications & Features and Pinout


• Microcontroller: Tensilica 32-bit RISC CPU Xtensa LX106

10
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
• Operating Voltage: 3.3V

11
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
• Input Voltage: 7-12V
• Digital I/O Pins (DIO): 16
• Analog Input Pins (ADC): 1
• UARTs: 1
• SPIs: 1
• I2Cs: 1
• Flash Memory: 4 MB
• SRAM: 64 KB
• Clock Speed: 80 MHz
• USB-TTL based on CP2102 is included onboard, Enabling Plug n Play
• PCB Antenna
• Small Sized module to fit smartly inside your IoT projects

PIN CODE
A0 A0
GPIO 16 D0
GPIO 5 D1
GPIO 4 D2
GPIO 0 D3
GPIO 2 D4
GPIO14 D5
GPIO 12 D6
GPIO 13 D7
GPIO 15 D8
GPIO 9 SD2
GPIO10 SD3
GPIO3 Rx
GPIO1 Tx

12
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Steps to install Node MCU
1. Download and install Arduino IDE
2. Open the IDE and follow this path. File -> preferences -> Additional board
manager URL.
3. Now paste the URL in the dialog box :
http://arduino.esp8266.com/stable/package_esp8266com_index.json
4. Then, click the “OK” button.
5. Now follow this path. Tools -> Board -> Boards Manager
6. Search for ESP8266 and install the “ESP8266 by ESP8266 Community“
7. After this, restart your Arduino IDE.
8. Then, go to Tools > Board and check that you have ESP8266 boards available.
9. First, make sure you have an ESP8266 selected in Tools > Board. If you’re using the
ESP8266-12E NodeMCU Kit as shown in previous pictures, select the NodeMCU 1.0
(ESP-12E Module) option.

Experiment No: 1.a


To interface LED/Buzzer with Arduino and write a program to ‘turn ON’ LED for 1 sec after
every 2 seconds.

Apparatus Required:
Sl No Components Quantity
1 Node MCU ESP 8266 1

13
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
2 LED or Buzzer 1
3 USB cable for NODE MCU 1
4 Connecting wires 1

Circuit Diagram:

Pin Connection
NODE MCU LED
Theory:
GND Cathode
D0 Anode LED,
which

stands for Light Emitting Diode, is a semiconductor device that emits light when an electric
current passes through it. LEDs are widely used for various applications due to their energy
efficiency, long lifespan, and versatility. Here are some key points about LEDs.
Basic Operation: LEDs work on the principle of electroluminescence. When electrons and holes
(positive counterparts of electrons) recombine within the semiconductor material, they release
energy in the form of photons, which produces light.

Item Mi Max Unit


n
Forward Current 20 30 mA
Forward Voltage 1.8 2.2 V

Program
#define ledDO //inbuilt LED Pin void setup() {
pinMode(led, OUTPUT);
}
void loop() { digitalWrite(led, HIGH); delay(1000)
}

14
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Experiment No: 1.b
To interface Push button with Arduino and write a program to ‘turn ON’ LED when push
button is pressed or at sensor detection.

Component Required:
Sl No Components Quantity
1 NODE MCU ESP8266 1
2 LED or Buzzer 1
3 USB cable for NODE MCU 1
4 Connecting wires --
5 Push Button 1
6 Bread Board 1
7 Resistance (Any value above 1KΩ) 1

Circuit Diagram

15
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Program
#define buttonpin D3
#define led D0

int buttonstate=0;

void setup() {
pinMode(buttonpin, INPUT);
pinMode(led, OUTPUT);
Serial.begin(9600);
}

void loop() {
buttonstate=digitalRead(buttonpin);
Serial.print(“buttonstate status is:”);
Serial.println(buttonstate);
if(buttonstate == HIGH)
digitalWrite(led, HIGH);
else
digitalWrite(led, LOW);
delay(500);
}

Result: Turn ON and OFF of LED automatically as well as controlled Switching operation of
LED by using push button done using Arduino UNO.

16
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Experiment No.: 2.a
To interface DHT11 sensor with Arduino and write a program to print temperature and
humidity readings

Component Required:
Sl No Components Quantity
1 NODE MCU ESP8266 1
2 DHT11 Temperature sensor 1
3 USB cable for NODE MCU 1
4 Connecting wires --
17
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Circuit Diagram

NODE MCU DHT11


GND GND
3V3 VCC
D2 DATA

Theory
The DHT11 sensor is a low-cost digital temperature and humidity sensor. It operates at
a voltage of 3.3V to 5V and can measure temperatures ranging
from 0°C to 50°C with an accuracy of ±2°C. Additionally, it can
measure relative humidity ranging from 20% to 90% with an
accuracy of ±5% .
The humidity sensing capacitor has two electrodes with a moisture
holding substrate as a dielectric between them. Change in the
capacitance value occurs with the change in humidity levels. The IC measure, process this
changed resistance values and change them into digital form.For measuring temperature this
sensor uses a Negative Temperature coefficient thermistor, which causes a decrease in its
resistance value with increase in temperature.

DHT11 Specifications
• Operating Voltage: 3.5V to 5.5V
• Operating current: 0.3mA (measuring) 60uA (standby)
• Output: Serial data
• Temperature Range: 0°C to 50°C
• Humidity Range: 20% to 90%
• Resolution: Temperature and Humidity both are 16-bit
• Accuracy: ±1°C and ±1%
Libraries are a collection of code that makes it easy for you to connect to a sensor, display,
module, etc. For example, the LiquidCrystal library makes it easy to talk to character LCD

18
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
displays.
There are thousands of libraries available for download directly through the Arduino IDE, and
you can find all of them listed at the Arduino Library Reference.
Steps to Add DHT11 Sensor Library
1) Open your Arduino IDE and go to Sketch > Include Library > Manage
Libraries. The Library Manager should open.
2) Search DHT then find the DHT Sensor library by Adafruit
3) Click install button to install library
4) If ask click on install all button to install library dependencies

Program
#include <DHT.h>

#define DHTPIN D2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

float humidity;
float temp;

void setup() {
Serial.begin(9600);
dht.begin();

void loop() {
humidity= dht.readHumidity();
Serial.print("Humidity = ");
19
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Serial.print(humidity, 2);
Serial.println (" %");

temp=dht.readTemperature();
Serial.print("Temperature = ");
Serial.println(temp,2);
delay(500);

Experiment No.: 2.b


To interface OLED with Arduino and write a program to print temperature and humidity
readings on it.

Component Required:
Sl No Components Quantity
1 NODE MCU ESP8266 1
2 DHT11 Temperature sensor 1
3 USB cable for NODE MCU 1
4 Connecting wires --
5 OLED Display 128×64, SSD1306 I2C 1

Circuit Diagram

20
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
NODE MCU ESP 8266 DHT 11/22 OLED Pins
3.3V VCC VCC
GND GND GND
D5 DATA --
D2 -- SDA
D3 -- SCK

Theory
Specification of OLED

Size 0.96 inch

Terminals 4

Pixels 128×64

Communication I2C only

VCC 3.3V-5V

Operating erature -40℃ to


+80℃
The SSD1306 OLED I2C 128X64 OLED Display module is a small
monochrome organic light-emitting diode (OLED) display that is controlled

21
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
through an I2C interface. It has a display resolution of 128×64 pixels, and the SSD1306 is the
controller chip that manages the display. It’s commonly used for display purposes in various
electronics projects and is compact low power, and easily readable in low light conditions.

To control the OLED display you need the adafruit_SSD1306.h and the adafruit_GFX.h libraries.
Follow the next instructions to install those libraries.

1. Open your Arduino IDE and go to Sketch > Include Library > Manage
Libraries. The Library Manager should open.
2. Type “SSD1306” in the search box and install the SSD1306 library from Adafruit.
3. Click install button to install library
4. If ask click on install all button to install library dependencies
5. After installing the SSD1306 library from Adafruit, type “GFX” in the search box and
install the library.
6. If ask click on install all button to install library dependencies
7. After installing the libraries, restart your Arduino IDE
8. Find the Adafruit_SSD1306.h file in the Arduino Library folder. Generally, it is
located at Documents\Arduino\libraries on windows systems. There you will find the
Adafruit_SSD1306.h file inside the Adafruit_SSD1306 folder.

Program

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h> // Include DHT library code

#define OLED_RESET 5 // define SSD1306 OLED reset at ESP8266


GPIO5 (NodeMCU D1)
Adafruit_SSD1306 display(OLED_RESET);

#define DHTPIN D5
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

char temperature[] = "00.0 C";


char humidity[] = "00.0 %";

void setup(void)
{

Serial.begin(9600);
delay(1000);
// set I2C pins [SDA = GPIO4 (D2), SCL = GPIO0 (D3)], default clock is 100kHz
Wire.begin(4, 0);
22
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
// by default, we'll generate the high voltage from the 3.3v line internally!
(neat!)
// initialize with the I2C addr 0x3D (for the 128x64)
// init done
display.begin(SSD1306_SWITCHCAPVCC, 0x3D);
dht.begin();
display.clearDisplay();

display.drawFastHLine(0, 32, SSD1306_LCDWIDTH, WHITE);

display.setTextSize(1);
display.setTextColor(WHITE, BLACK);
display.setCursor(10, 5);
display.print("DHT11 TEMPERATURE:");
display.setCursor(19, 37);
display.print("DHT11 HUMIDITY:");
display.display();
}

void loop()
{
// Read humidity
byte RH = dht.readHumidity();
//Read temperature in degree Celsius
byte Temp = dht.readTemperature();

temperature[0] = Temp / 10 + '0';


temperature[1] = Temp % 10 + '0';
humidity[0] = RH / 10 + '0';
humidity[1] = RH % 10 + '0';

// print data on serial monitor


Serial.printf("Temperature = %02u°C\r\n", Temp);
Serial.printf("Humidity = %02u %%\r\n\r\n", RH);

// print data on the SSD1306 display


display.setCursor(46, 20);
display.print(temperature);
display.setCursor(46, 52);
display.print(humidity);
display.drawRect(71, 20, 3, 3, WHITE); // Put degree symbol ( °
) display.display();

delay(1000);

Result: Successfully interfaced with DHT11 and OLED Display along NODE MCU Esp266 and
measured and displayed temperature and humidity readings.

23
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Experiment No: 3
To interface motor using relay with Arduino and write a program to ‘turn ON’ motor when
push button is pressed.

Component Required:
Sl No Components Quantity
1 NOD MCU ESP 8266 1

24
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
2 Relay 2 Channel 1
3 USB cable for NODE MCU 1
4 Connecting wires --
5 Push Button 1
6 Power Supply 1
7 DC motor 1

Circuit Diagram

Note : Set Regulated DC power supply based on Capacity of motor voltage

Theory
Relay: A relay module is an electrical switch that is operated by an electromagnet. 2-Channel
5V Relay Module is a relay interface board,
it can be controlled directly by a wide range
of microcontrollers such as Arduino, AVR,
PIC, ARM and so on. It uses a low-level
triggered control signal (3.3-5VDC) to control
the relay. Triggering the relay operates the
normally open or normally closed contacts. It is an automatic switch to control a high-current
circuit with a low-current signal.
Dual-Channel Relay Module Specifications
Supply voltage – 3.75V to 6V
Trigger current – 5mA
Current when relay is active - ~70mA (single), ~140mA
(both) Relay maximum contact voltage – 250VAC, 30VDC
Relay maximum current – 10A
DC Motor: A DC motor is a machine which converts DC electrical energy into mechanical
energy. DC motors normally have just two leads, one positive and one negative. If you connect
these two leads directly to a battery, the motor will rotate. If you switch the leads, the motor
will rotate in the opposite direction.
24
………………………………………………… ………………………………………… ………
ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
DC Motor Specification
Operating Voltage(V): 12
Rated Speed (RPM): 200
Rated Torque(kg-cm): 1.5
Load Current (A): 0.3
No Load Current (A): 0.06

Program
#define buttonpin D3
#define relay D0

int buttonstate=0;

void setup() {
pinMode(buttonpin, INPUT);
pinMode(relay, OUTPUT);
Serial.begin(9600);
}

void loop() {
buttonstate=digitalRead(buttonpin);
Serial.print("buttonstate status is:");
Serial.println(buttonstate);

if(buttonstate == HIGH)
digitalWrite(relay, HIGH);

else
digitalWrite(relay, LOW);
delay(500);
}

Result: Completed ON/OFF of DC motor using relay and push button with Arduino.

Experiment No: 4
To interface Bluetooth with Arduino and write a program to turn LED ON/OFF when '1'/'0' is
received from smartphone using Bluetooth.

Component Required:
Sl No Components Quantity
1 Node MCU ESP8266 1

25
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
2 Bluetooth Module HC-05 1
3 USB cable for NODE MCU 1
4 Connecting wires --
5 LED 1
6 Smart Phone with RC Controlled Bluetooth app 1

Circuit Diagram

Pin Connection details


Arduino Pins Bluetooth Module LED
3.3 V VCC
GND GND Cathode
Rx Tx
Tx RX
D4 -- Anode

Theory
Bluetooth is a low-power wireless connectivity technology used to stream audio, transfer data and broadcast i
Operating frequency is: 2.4 to 2.485 GHz(UHF)

The HC-05 is a popular module which can add two-way (full-duplex) wireless functionality. You
can use this module to communicate between two microcontrollers like Arduino or communicate with any de
communicates with the help of USART at 9600 baud rate hence it is easy to interface with any

26
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
microcontroller that supports USART. So if you looking for a Wireless module that
could
transfer data from your computer or mobile phone to microcontroller or vice versa then

HC-05 Pinout Configuration

Pin Name Description

Enable / Key This pin is used to toggle between Data Mode (set low) and AT command
mode (set high). By default, it is in Data mode

Vcc Powers the module. Connect to +5V Supply voltage

Ground Ground pin of module, connect to system ground.

TX – Transmits Serial Data. Everything received via Bluetooth will be given out
Transmitter by this pin as serial data.

RX – Receiver Receive Serial Data. Every serial data given to this pin will be broadcasted
via Bluetooth

State The state pin is connected to on board LED, it can be used as feedback to
check if Bluetooth is working properly.

LED Indicates the status of Module


• Blink once in 2 sec: Module has entered Command Mode
• Repeated Blinking: Waiting for connection in Data Mode
• Blink twice in 1 sec: Connection successful in Data Mode
Button Used to control the Key/Enable pin to toggle between Data and command
Mode
Mobile app
Connecting the Android device to the HC-05 creates a serial communication channel very similar
to the serial monitor in the Arduino IDE. This means we need a Bluetooth version of the serial
monitor.

Procedure to connect Bluetooth with mobile app


1. Download “ Arduino Bluetooth controller “ app from play store and install in your mobile.

2. Pair your phone with HC-05. for doing this go to Settings->Bluetooth->Scan device->select
HC-05 as KLSX (Check backside of module X =0 1 2 3 4 5 6….example KLS1 )and pair it.
Pass code to pair is ‘1234’.

3. Now, open the app and connect the HC-05 module in terminal mode.

4. Type “0” in terminal to turn OFF LED.

5. Type “1” in terminal to turn ON LED,

27
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
6. Output: If you send ‘0’ it will make to LED ON and if you send ‘1’ it will make the
LED OFF. The Arduino code also sends the current state of LED also.

Program

#define led D4
char data;

void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
}
void loop() {
if(Serial.available()>0);{
data=Serial.read();
}
if(data =='0'){
Serial.println("LED OFF");
digitalWrite(led, LOW);
}
if(data=='1'){
Serial.println("LED ON");
digitalWrite(led, HIGH);
}
delay(300);
}

Result: A Arduino program written and verified to turn LED ON/OFF when '1'/'0' is received
from smartphone using Bluetooth.

Experiment No: 5
To interface Bluetooth with Arduino and write a program to send sensor data to smartphone
using Bluetooth.

Component Required:
Sl No Components Quantity
1 NODE MCU ESP 8266 1
2 Bluetooth Module 1

28
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
3 USB cable A to B 1
4 Connecting wires 1
5 Smart Phone with RC Controlled Bluetooth app 1

Circuit Diagram

Pin Connection details


Arduino Pins Bluetooth Module Sensor DHT11
3.3 V VCC
GND GND GND
5V -- VCC
D4 -- DATA
Rx Tx
Tx RX

Theory
The HC-05 is a popular module which can add two-way (full-duplex) wireless functionality. You can use this
Phone or Laptop. There are many android applications that are already available which makes this process a l
baud rate hence it is easy to interface with any microcontroller that supports USART. So if you
looking for a Wireless module that could transfer data from your computer or mobile phone to microcontroller

HC-05 Technical Specifications

• Serial Bluetooth module for Arduino and other microcontrollers


• Operating Voltage: 4V to 6V (Typically +5V)

29
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
• Operating Current: 30mA
• Range: <100m
• Works with Serial communication (USART) and TTL compatible
• Follows IEEE 802.15.1 standardized protocol
• Uses Frequency-Hopping Spread spectrum (FHSS)
• Can operate in Master, Slave or Master/Slave mode
• Can be easily interfaced with Laptop or Mobile phones with Bluetooth
• Supported baud rate: 9600,19200,38400,57600,115200,230400,460800.

Program
#include <DHT.h>

#define DHTPIN D4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

float humidity;
float temp;
char data;
void setup() {
Serial.begin(9600);
dht.begin();

void loop() {
data =temp;

humidity= dht.readHumidity();
Serial.print("Humidity = ");
Serial.print(humidity, 2);
Serial.println (" %");

temp=dht.readTemperature();
Serial.print("Temperature = ");
Serial.println(temp,2);

delay(500);

Result: Successfully Interfaced with Bluetooth and sent sensor DHT11 Temperature data to
smartphone using Bluetooth.

30
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Experiment No: 6
Write a program on Arduino to upload temperature and humidity data to thingspeak cloud.

Component Required:
Sl No Components Quantity
1 ESP8266 12E Node MCU Kit 1
2 Temperature sensor DHT11 1
3 USB cable 1
4 Connecting wires --
5 Breadboard 1

31
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Circuit diagram
NODE MCU DHT11
GND GND
3V3 VCC
D5 DATA

Theory

ThingSpeak is an open-source Internet of Things (IoT) application and API that allows users
to collect and store sensor data in the cloud and perform analytics on that data. It allows users
to create “channels” to collect data from multiple sensors, and also has built-in support for
visualizing and analyzing the data. ThingSpeak can be used for a variety of applications, such
as monitoring environmental conditions, tracking the location of assets, and controlling
devices remotely. It is available for free and also has paid subscription plans for additional
features and support. The device that sends the data must be configured with the correct
channel information, such as the channel ID and write API key.

32
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Steps to Connect
Step 1: ThingSpeak Setup for Temperature and Humidity Monitoring

a. For creating your channel on Thingspeak, you first need to Sign up on Thingspeak.

b. In case if you already have an account on Thingspeak, just sign in using your id and
password.

c. For creating your account go to www.thinspeak.com.

d. After this, verify your E-mail id and click on continue.

Step 2: Create a Channel for Your Data


a. Once you Sign in after your account verification, create a new channel by clicking
“New Channel” button.

b. After clicking on “New Channel”, enter the Name and Description of the data you want
to upload on this channel.

c. Enter the name of your data ‘Temperature’ in Field1 and ‘Humidity’ in Field2.

d. Click on the save channel button to save your details.

33
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Step 3: API Key
a. To send data to Thingspeak, we need a unique API key, which we will use later in our
code to upload our sensor data to Thingspeak Website.
b. Click on “API Keys” button to get your unique API key for uploading your sensor data.
c. Now copy your “Write API Key”. We will use this API key in our code.

Code
#include <DHT.h>
#include <ESP8266WiFi.h>

const char* ssid = "choukimathwifi";


const char* password ="12345678";
String apiKey = "5OI7FCEK635ZJ336"; //Write API Key from website
const char* server = "api.thingspeak.com";

#define DHTPIN D1
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
float humidity;
float temp;

WiFiClient client; //need to communication with the ThingSpeak server

void setup() {
Serial.begin(9600);
dht.begin();
WiFi.begin(ssid, password);
Serial.print("Wifi connecting to ...SSID:");
Serial.println(ssid);
Serial.print("connecting");

while(WiFi.status()!=WL_CONNECTED){
delay(500);
Serial.print(".");
}

Serial.println("Wifi connected successfully");


Serial.print("nodemcu Ip Adress");
Serial.println(WiFi.localIP());

void loop() {
temp=dht.readTemperature();
humidity= dht.readHumidity();

34
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
if(client.connect(server, 80)){

String postStr = apiKey;


postStr += "&field1=";
postStr += String(temp);
postStr += "&field2=";
postStr += String(humidity);
postStr += "\r\n\r\n";

client.print("POST /update HTTP/1.1\n");


client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);
delay(1000); //necessary for posting to ThingSpeak

Serial.print("Temperature = ");
Serial.println(temp,2);
Serial.print("Humidity = ");
Serial.print(humidity, 2);
Serial.println (" %");
Serial.println("Data sent to ThingSpeak");
}
client.stop();
Serial.println("Waiting for 15sec...");
delay(15000); //ThingSpeak needs min. 15sec delay between each data post
}

Result : Program written on Arduino to upload temperature and humidity data to thingspeak
cloud.

Experiment No: 7
Write a program on Arduino to retrieve temperature and humidity data from Thingspeak
cloud.

35
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Component Required:
Sl No Components Quantity
1 Node MCU 1
2 Temperature sensor DHT11 1
3 USB cable 1
4 Connecting wires --
5 Breadboard 1

Circuit diagram
NODE MCU DHT11
GND GND
3V3 VCC
D5 DATA

Theory

36
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
To read values from Thingspeak we need to upload some data in real time, to do this, first
upload temperature and humidity data to Thingspeak using previous experiment using
NodeMCU 8266,

Installing the ThingSpeak Library


1. To send or receive sensor readings to ThingSpeak, we’ll use the ThingSpeak Arduino
library. Go to Sketch > Include Library > Manage Libraries… and search for
“ThingSpeak” in the Library Manager. Install the ThingSpeak library by MathWorks.
OR
2. Upload the Library from drive Go to Sketch > Include Library > Add ZIP Library.
… > open to install Library
Channel Settings that you need to do read data
Go to your Thingspeak account and do the following setting to receive temperature and
humidity data.
3. Go to channel setting put ‘tick’ mark for both filed 1 and filed 2 and scroll down to
bottom and save it.
4. You need your channel ID to read the fields on your channel you wish to read so that
copy your channel id and paste in the code
5. You need your Read API key from your channel and copy Read API key.
6. use this Read API key in our code.
7. Write following program and upload in the Node MCU82666
8. After successful upload Open the serial monitor; you will be able to see the values read
from your channel.

Code

37
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
#include <ThingSpeak.h>
#include <ESP8266WiFi.h>

const char* ssid = "choukimathwifi";


const char* password ="12345678";

//---------Channel Details--------------//
// enter your Channel ID
unsigned long counterChannelNumber = 2307603;
// enter your Read API Key
const char * myCounterReadAPIKey = "GVA4D3FK3A4VG36C";
const int FieldNumber1 = 1; // The field you wish to
read const int FieldNumber2 = 2; // The field you wish
to read

WiFiClient client; //need to communication with the ThingSpeak

server void setup()


{
Serial.begin(9600);
WiFi.begin(ssid, password);

WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);

while(WiFi.status()!=WL_CONNECTED){
delay(500);
Serial.println("Wifi connecting..........");
}
Serial.println("Wifi connected successfully ");
}

void loop(){
// Channel 1 //
long temp = ThingSpeak.readLongField(counterChannelNumber, FieldNumber1,
myCounterReadAPIKey);
int statusCode = 0;
statusCode = ThingSpeak.getLastReadStatus();
if (statusCode == 200)
{
Serial.print("Temperature: ");
Serial.println(temp);
}
else
{
Serial.println("Unable to read channel / No internet connection");
}
delay(100);

// Channel 2 //
long humidity = ThingSpeak.readLongField(counterChannelNumber, FieldNumber2,
38
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
myCounterReadAPIKey);
statusCode = ThingSpeak.getLastReadStatus();
if (statusCode == 200)
{
Serial.print("Humidity: ");
Serial.println(humidity);
}
else
{
Serial.println("Unable to read channel / No internet connection");
}
delay(100);
// End of Channel 2 //
}

Result : Program on Arduino written to retrieve temperature and humidity data from Thingspeak
cloud.

39
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Experiment No: 8
Write a program to create UDP server on Arduino and respond with humidity data to UDP
client when requested.

Component Required:
Sl No Components Quantity
1 Node MCU ESP 8266 1
2 Temperature sensor DHT11 1
3 USB cable 1
4 Connecting wires --
6 Breadboard 1

Circuit Diagram

PIN Configuration : NODMCU 3.3V to DHT VCC Pin


NODMCU GND to DHT GND pin
NODMCU D4 (GPIO2) to DHT DATA
pin

Theory

40
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
User Datagram Protocol (UDP) is a network communication protocol that operates at the
transport layer of the Internet Protocol (IP) suite. It is a connectionless and lightweight
protocol designed for fast and efficient data transmission, but it does not provide the same
level of reliability and error-checking as Transmission Control Protocol (TCP).
UDP is a lightweight, connectionless, and fast protocol that prioritizes low-latency data
transmission over reliability. It is suitable for applications where occasional packet loss or out-
of-order delivery can be tolerated, and real-time communication is essential. However, for
applications that require guaranteed delivery and error recovery, TCP is a better choice.

41
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Program
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <DHT.h>

#define DHTPIN D4
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

float temp;
char packet[1024];
const char* ssid = "choukimathwifi";
const char* password ="12345678";
const char* udpServerIP = "192.168.0.245"; // Replace <IP> with the actual
IP address of your computer
unsigned int port = 9000;

WiFiUDP Udp; // Create a UDP object

void setup() {
Serial.begin(9600);
dht.begin();
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {


delay(500);
Serial.println("Connecting to WiFi...");
}
Serial.println("Wifi connected successfully");
}

void loop() {
Udp.beginPacket(udpServerIP, port);

// Read temperature from DHT sensor and convert it to a string


temp = dht.readTemperature();
//confirm value in serila monitor
Serial.print("Temperature in degree Cel. :");
Serial.println(temp);

String tempStr = String(temp);

// Copy the temperature string into the packet buffer


tempStr.toCharArray(packet, 1024);

// Send the packet over UDP


Udp.write(packet);

// End the UDP packet and send it

42
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Udp.endPacket();
delay(500);
}

Python code for UDP Server


import socket

UDP_IP = "192.168.0.245"
UDP_PORT = 9000

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)


sock.bind((UDP_IP, UDP_PORT))

while True:
received_data, addr = sock.recvfrom(1024)
print(received_data)

Procedure
To run Python code for UDP Server

1) Install python software


2) Open python IDLE
3) In python IDLE go to File  New File (it opens new script windows)  Type the code
4) Click on Run button and Save the program from script window
5) See the output from IDLE shell (command prompt)

Result: Python program used to create UDP server and Arduino program written to respond
with humidity data to UDP client when requested.

43
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Experiment No: 9
Write a program to create TCP server on Arduino and respond with Temperature data to TCP
client when requested.

Component Required:
Sl No Components Quantity
1 Node MCU ESP 8266 1
2 Temperature sensor DHT11 1
3 USB cable 1
4 Connecting wires --
6 Breadboard 1

Circuit Diagram

PIN Configuration : NODMCU 3.3V to DHT VCC Pin


NODMCU GND to DHT GND pin
NODMCU D4 (GPIO2) to DHT DATA
pin

Theory
The Transmission Control Protocol (TCP) is a widely used protocol in the Internet Protocol
(IP) suite. It is a connection-oriented protocol that provides reliable, ordered, and error-
checked delivery of data between applications running on hosts1. In IoT, TCP is used to
establish connections between clients and servers, allowing devices to interact with each other
and resolve common problems.

A TCP server is a program that listens for incoming connections from clients and responds to
their requests. When a client connects to the server, it sends a request for data. The server then
sends back the requested data to the client. In IoT, TCP servers are used to provide access to
data from sensors and other devices
44
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
In the context of the Internet of Things (IoT), a TCP server refers to a network service running
on a device or gateway that listens for incoming TCP connections from other IoT devices or
clients

In the context of IoT, TCP (Transmission Control Protocol) and UDP (User Datagram
Protocol) are two protocols of the Transport Layer that are used to transmit data between
devices over a network.

TCP is a connection-oriented protocol that provides reliable delivery services by keeping track
of the segments being transmitted or received by assigning numbers to every single one of
them. It also implements an error control mechanism for reliable data transfer and takes into
account the level of congestion in the network .

On the other hand, UDP is a connectionless protocol that is used for simple request-response
communication when the size of data is less and hence there is lesser concern about flow and
error control. It is a suitable protocol for multicasting as UDP supports packet switching.
Normally used for real-time applications which cannot tolerate uneven delays between sections
of a received message.

In summary, TCP is more reliable but slower than UDP, while UDP is faster but less reliable
than TCP

Finding IP address of your computer


1) Search command Prompt from your PC
2) Type ipconfig in command prompt
3) Search IPv4 Adress …….: 192.168.137.1 like this in prompt
4) Copy and paste the same in the program at tcpServerIP

Program
#include <ESP8266WiFi.h>
#include <DHT.h>

#define DHTPIN D4
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

float temp;
const char* ssid = "choukimathwifi";
const char* password = "12345678";
const char* tcpServerIP = "192.168.1.6"; // Replace <IP> with the actual
IP address of your computer
unsigned int port = 80; //most commonly used protocol port in

TCP WiFiClient client; // Create a TCP client object

void setup() {
Serial.begin(9600);
dht.begin();
WiFi.begin(ssid, password);

45
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Connecting to WiFi...");
}
Serial.println("WiFi connected successfully");
}

void loop() {
client.connect(tcpServerIP, port);
// Read temperature from DHT sensor and convert it to a string
temp = dht.readTemperature();
// Confirm value in serial monitor
Serial.print("Temperature in degree Celsius: ");
Serial.println(temp);

// Send the temperature over TCP as a string


client.print(temp);
delay(500);

Python code for UDP Server


import socket
mysock =socket.socket(socket.AF_INET, socket.SOCK_STREAM)
TCP_IP = '192.168.1.6' # Get local machine IP from LAN or WIFI setting of PC
TCP_PORT=80; #most commonly used protocol in TCP

mysock.bind((TCP_IP, TCP_PORT))

mysock.listen(5) # Now wait for client connection.


while True:
received_data, addr=mysock.accept() # Establish connection with client.

data = received_data.recv(1024).decode()
#we are extracting 1024 bytes of data at a time.
#(One can use one’s convenient number here).
print(data)

Procedure
To run Python code for UDP Server

1) Install python software (Ignore if already installed)


2) Open python IDLE
3) In python IDLE go to File  New File (it opens new script windows)  Type the code
4) Click on Run button and Save the program from script window
5) See the output from IDLE shell (command prompt)

46
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Result: Python Program used to create TCP server and Arduino program used to respond with
Temperature data to TCP client when requested is written and verified.

Experiment No: 10
Write a program on Arduino to publish temperature data to MQTT broker.

Component Required:
Sl No Components Quantity
1 Node MCU ESP 8266 1
2 Temperature sensor DHT11 1
3 USB cable 1
4 Connecting wires --
6 Breadboard 1

Circuit Diagram

PIN Configuration : NODMCU 3.3V to DHT VCC Pin


NODMCU GND to DHT GND pin
NODMCU GPIO2 to DHT DATA
pin

Theory
MQTT stands for Message Queuing Telemetry Transport. MQTT is a simple messaging
protocol, designed for constrained devices with low bandwidth. So, it’s the perfect solution to
47
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
exchange data between multiple IoT devices.
Devices publish messages on a specific topic. All devices that are subscribed to that topic
receive the message.
In a publish and subscribe system, a device can
publish a message on a topic, or it can be subscribed
to a particular topic to receive messages
The MQTT broker is responsible for receiving all
messages, filtering the messages, deciding who is
interested in them, and then publishing the message
to all subscribed clients.
The MQTT broker is the central point of communication, and it is in charge of dispatching all
messages between the senders and the rightful receivers. A client is any device that connects to
the broker and can publish or subscribe to topics to access the information. A topic contains
the routing information for the broker. Each client that wants to send messages publishes them
to a certain topic, and each client that wants to receive messages subscribes to a certain topic.
The broker delivers all messages with the matching topic to the appropriate clients.
ThingSpeak™ has an MQTT broker at the URL mqtt3.thingspeak.com and port 1883. The
ThingSpeak broker supports both MQTT publish and MQTT subscribe

In this Experiment, we will create a setup that allows a NODE MCUESP8266 board to send
data to another MCU ESP 8266, using MQTT (Message Queuing Telemetry Transport). The
sender device, simply publishes a message to a broker service, which then can be subscribed to
by a receiver device.
The data we will send consists of readings from a DHT11 sensor, including temperature and
humidity data, from a NODE MCU ESP8266 to another NODE MCU. This experiment
utilizes the broker test.mosquitto.org, an open-source service that is free for anyone to use.

Getting Started to MQTT


Go to Tools > Manage libraries.., and search
for ArduinoMqttClient and install.

Program

#include <ESP8266WiFi.h>

48
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
#include <ArduinoMqttClient.h>
#include <DHT.h>
#include <DHT_U.h>

const char* ssid = "choukimathwifi";


const char* password ="12345678";

const long interval = 8000;


unsigned long previousMillis = 0;
int count = 0;

const char topicT[] = "Temperature Value is ";


const char topicH[] = "Humidity Value is";

WiFiClient wifiClient;
MqttClient mqttClient(wifiClient);

const char broker[] = "test.mosquitto.org";


int port = 1883;

#define DHTPIN D4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
float humidity;
float temp;

void setup() {

Serial.begin(9600);
dht.begin();
Serial.println();
Serial.print("Wifi connecting to..........");
Serial.print(ssid);
WiFi.begin(ssid, password);

while(WiFi.status()!=WL_CONNECTED){
Serial.println("connecting.............");
delay(500);
}
Serial.println("Wifi connected successfully");

Serial.print("Attempting to connect to the MQTT broker: ");


Serial.println(broker);

if (!mqttClient.connect(broker, port)) {
Serial.print("MQTT connection failed! Error code = ");
Serial.println(mqttClient.connectError());

while (1);

49
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
}
Serial.println("You're connected to the MQTT broker!");

void loop() {
mqttClient.poll();

unsigned long previousMillis = 0;


unsigned long currentMillis = millis();

if (currentMillis - previousMillis >= interval) {


// save the last time a message was
sent previousMillis = currentMillis;

humidity= dht.readHumidity();
Serial.print("Humidity = ");
Serial.print(humidity, 2);
Serial.println (" %");

temp=dht.readTemperature();
Serial.print("Temperature = ");
Serial.println(temp,2);
delay(500);

mqttClient.beginMessage(topicT);
mqttClient.print(temp);
mqttClient.endMessage();

mqttClient.beginMessage(topicH);
mqttClient.print(humidity);
mqttClient.endMessage();

Serial.println();
}
delay(1000);
}

Result: Program written on Arduino to publish temperature data to MQTT broker.

50
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Experiment No: 11
Write a program on Arduino to subscribe to MQTT broker for temperature data and print it.

Component Required:
Sl No Components Quantity
1 Node MCU ESP 8266 1
2 Temperature sensor DHT11 1
3 USB cable 1
4 Connecting wires --
6 Breadboard 1

Circuit Diagram

PIN Configuration : NODMCU 3.3V to DHT VCC Pin


NODMCU GND to DHT GND pin
NODMCU D5 to DHT DATA
pin

Theory
The MQTT protocol was first introduced in 1999, as a light-
weight publish and subscribe system. It is particularly useful for devices with low-bandwidth,
where we can send commands, sensor values or messages over the Internet with little effort.

51
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
A

basic explanation on how it works is that a node, for example and Arduino with a Wi-Fi
module, sends a payload to a broker. A broker is a kind of "middle-point" server, that
essentially stores payloads sent to it, in something called topics. A topic, is a definition of what
type of data it contains, it could for example be "humidity" or " temperature". Another node
can then subscribe to this information, from the broker, and voilà, data has been moved from
Node A to Node B over the Internet.
One way to protect the data is for example, by using a token, something that is quite common
when working with various IoT services. For instance, if we are publishing something to a
broker, anyone that has the URL, e.g. randombroker.org/randomtopic can subscribe to it.
But if we add a unique token on both sides, they wouldn't be able to. These tokens could for
example be Z6ACuLwr5T, which is not exactly something easy to guess.

Program

#include <ESP8266WiFi.h>
#include <ArduinoMqttClient.h>

const char* ssid = "choukimathwifi";

const char* password ="12345678";

52
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
const char broker[] = "test.mosquitto.org";
int port = 1883;
const char topicT[] = "Temperature Value is ";
const char topicH[] = "Humidity Value is";

WiFiClient wifiClient;
MqttClient mqttClient(wifiClient);

void setup() {

Serial.begin(9600);

Serial.print("Wifi connecting to..........");


Serial.print(ssid);
WiFi.begin(ssid, password);

while(WiFi.status()!=WL_CONNECTED){
Serial.println("connecting.............");
delay(500);
}
Serial.println("Wifi connected successfully");

Serial.print("Attempting to connect to the MQTT broker: ");


Serial.println(broker);

if (!mqttClient.connect(broker, port)) {
Serial.print("MQTT connection failed! Error code = ");
Serial.println(mqttClient.connectError());

while (1);
}
Serial.println("You're connected to the MQTT broker!");
Serial.println();

// set the message receive callback


mqttClient.onMessage(onMqttMessage);

Serial.print("Subscribing to topic: ");


Serial.println(topicH);
Serial.println(topicT);
Serial.println();

// subscribe to a topic
mqttClient.subscribe(topicT);
mqttClient.subscribe(topicH);

// topics can be unsubscribed using:


// mqttClient.unsubscribe(topic);
53
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Serial.print("Topic Tempertaure: ");
Serial.println(topicT);
Serial.print("Topic Humidity: ");
Serial.println(topicH);
Serial.println();

void loop() {
mqttClient.poll();
delay(1000);
}
void onMqttMessage(int messageSize) {
// we received a message, print out the topic and contents
Serial.println("Received a message with topic '");
Serial.print(mqttClient.messageTopic());
Serial.print("', length ");
Serial.print(messageSize);
Serial.println(" bytes:");

// use the Stream interface to print the


contents while (mqttClient.available()) {
Serial.print((char)mqttClient.read());
}
Serial.println();
Serial.println();
delay(1500);
}

Result: Program written on Arduino to subscribe to MQTT broker to print temperature and
humidity data.

54
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Experiment No: 12
To install MySQL database on Raspberry Pi and perform basic SQL queries

Component Required:
Sl No Components Quantity
1 Raspberry Pi 4B 1
2 5 V DC adapter 1
3 Micro SD card (at least 16GB) 1
4 SD card reader 1
6 Monitor* 1
7 HDMI cable / VGA to mini-HDMI cable /HDMI to VGA convert 1
(among any one based on your system requirement)*
8 Keyboard 1
9 Mouse 1
10 Ethernet Cable 1

Theory
Raspberry Pi (often called Rpi) is a computationally powerful mini-computer developed by the
Raspberry Pi Foundation along with Broadcom. It has almost all the useful peripherals like
USB, Ethernet, WiFi, HDMI,
Audio Jack, memory card
interface, external display
connector, external camera
connector and GPIO pins for
controlling external hardware.
There are many versions of
Raspberry Pi ranging from
Raspberry Pi Zero to Raspberry
Pi 4. The peripherals and specifications of Raspberry Pi differ a lot from model to model. So,
purchase a Raspberry Pi according to your use case.
Specifications
Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @
1.8GHz 1GB, 2GB, 4GB or 8GB LPDDR4-3200 SDRAM (depending on
model)
55
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
2.4 GHz and 5.0 GHz IEEE 802.11ac wireless, Bluetooth 5.0,
BLE Gigabit Ethernet
2 USB 3.0 ports; 2 USB 2.0 ports.
Raspberry Pi standard 40 pin GPIO header (fully backwards compatible with previous boards)
2 × micro-HDMI® ports (up to 4kp60 supported)
2-lane MIPI DSI display port
2-lane MIPI CSI camera port
4-pole stereo audio and composite video port
H.265 (4kp60 decode), H264 (1080p60 decode, 1080p30 encode)
OpenGL ES 3.1, Vulkan 1.0
Micro-SD card slot for loading operating system and data storage
5V DC via USB-C connector (minimum 3A*)
5V DC via GPIO header (minimum 3A*)
Power over Ethernet (PoE) enabled (requires separate PoE
HAT) Operating temperature: 0 – 50 degrees C ambient

SQL software : MariaDB is an open-source database derived from MySQL which is created
when Oracle bought Sun (and so MySQL) a few years ago. It aims to be a drop-in alternative
to MySQL, while remaining free, open source, and community supported.
MariaDB is an alternative to MySQL that works on Raspberry Pi. MySQL is difficult to install
on Raspberry Pi as it is not officially supported for 32-bit ARM-based operating systems
(which the current version of Raspberry Pi OS is). While it is possible to install MySQL on
Raspberry Pi using a 64 bit operating system, MariaDB works natively with Raspberry Pi OS.

Downloading and Installing Raspberry Pi OS (do only once at beginning)

56
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
1. Initially, insert the micro-SD card into your SD card reader and connect it to a PC
for formatting it.
2. Raspberry Pi Imager developed by the Raspberry Pi organization. OS can be
down- loaded from this link (https://www.raspberrypi.org/software/)
3. PC with Windows OS, we need to download Raspberry Pi Imager to flash OS in
SD card
4. Download and install Raspberry Pi Imager (Neglect if already installed) to a
computer to write image of OS in SD card
5. Click on Raspberry Pi Imager
6. From Pi Imager Choose device and select your Raspberry Pi model from the list.
(type of raspberry note it from given board)
7. Click on Choose OS >> from bottom second option click on Eraser >> Select SD card
from Storage >> click Next >> and agree all options to format the SD card
8. Click one more time on Choose OS >> Click on Use custom >> Select Image from
the drive >> open
9. Choose Storage >> select SD Card >>Click Next >> click Write to flashing the OS
10. If the flashing of OS is successful, then you’ll see a pop-up window and remove
the micro-SD card from the SD card reader and insert it into the Raspberry Pi.

Hardware Connection to Raspberry pi (do only once at beginning)


11. Check the SD slot on the underside of your Raspberry Pi and insert a flashed SD in it
12. Connect the mouse and Keyboard to a USB port on your Raspberry Pi
13. Use a HDMI cable to connect the Monitor screen to the Raspberry Pi’s HDMI port
use an adapter if necessary.
14. Use an Ethernet cable to connect the Ethernet port on the Raspberry Pi to an Ethernet
socket on the wall or on your internet router
15. Plug the power supply into a socket and then connect it to your Raspberry Pi’s
USB power port.
16. You should see a red light on your Raspberry Pi and raspberries on the monitor.
17. Your Raspberry Pi then boots up into a graphical desktop.

57
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Software Setting (Finish the setup)
1. When you start your Raspberry Pi for the first time, the Welcome to
Raspberry Pi application will pop up and guide you through the initial setup.
2. Click Next to start the setup.
3. Set your Country (India), Language (English), and Time zone (Kolkota), then
click Next again.
4. Enter a new username (vditXX- where XX is two-digit number) and password
(set 123456) for your Raspberry Pi and click Next.
5. Set up your screen or screens. (make off of two buttons from Screen)
6. Connect to your WiFi network or LAN by selecting its name, entering the
password, and clicking Next.
7. Click Next let the wizard check for updates to Raspbian and install them (this
might take a little while).
8. Click Restart to finish the setup.

58
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
Installing MySQL
Please open the raspberry pi terminal.
Execute the following commands to update the existing packages to install IMariaDB server
which is shown below.
1. Update the package list:
Sudo apt update
2. Upgrade installed packages:
sudo apt upgrade
3. Install MySQL Server:
sudo apt install mysql-server
4. Secure the MySQL installation:
sudo mysql_secure_installation

Follow the prompts during the secure installation to set a root password and configure other
security options. Do not forget to remember the root password you set.
5. It appears you were trying to switch to the MySQL command line as well. You can do
that after securing the installation with:
mysql -u root -p
Replace -u root with the appropriate username if you created a different one during the secure
installation. You'll be prompted to enter the root password you set earlier.
1. If you want to install MariaDB instead of MySQL, you can use:
sudo apt install mariadb-server
2. To secure the MariaDB installation:
sudo mysql_secure_installation

The MariaDB commands should be similar to those for MySQL, but keep in mind that
MariaDB and MySQL have some differences in their features and behaviour.

SQL Data Base


Hardware / Software Procedure:
1. Install MySQL on Raspberry Pi.

2. Install Mariadb On Raspberry Pi.

3. Allow remote connection to Mariadb On Raspberry Pi.

59
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
4. Login to Mariadb on Raspberry Pi from Windows Computer.

1. Log in to your MySQL or MariaDB server:


mysql -u root -p // Enter your password when prompted.
2. Create a database:
CREATE DATABASE exampledb;
3. Create a user and grant privileges:
CREATE USER 'exampleuser'@'localhost' IDENTIFIED BY 'pimylifeup';
GRANT ALL PRIVILEGES ON exampledb.* TO
'exampleuser'@'localhost';
FLUSH PRIVILEGES;
[Make sure to replace 'exampleuser', localhost by vditxx and 'pimylifeup' with your
preferred username, and password.]
4. Create a table within the database:
USE exampledb;
CREATE TABLE Books (
Id INT AUTO_INCREMENT PRIMARY
KEY, Title VARCHAR(100),
Author VARCHAR(60)
);
5. Insert data into the table:
INSERT INTO Books (Title, Author) VALUES ('Control System', ' Basavaraj');
6. Query the data from the table:
SELECT * FROM Books;
7. Query the data from the table:
UPDATE Books SET Author = 'Network Theory Choukimath' WHERE Id
= 1;
8. Delete a record from the table (note the correct table name 'Books' and usage of the
WHERE clause):
DELETE FROM Books WHERE Id = 1;
Make sure you are logged into the MySQL or MariaDB server when running these SQL
commands.

Result : Installed MySQL database on Raspberry Pi and performed basic SQL queries like
creating table and adding data in it.

60
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])
61
……………………………………………………………………………………………………
… ECE, VDIT Haliyal
Downloaded by Leena vvit ([email protected])

You might also like