Cs3691-Embedded Systems and Iot Lab Manual
Cs3691-Embedded Systems and Iot Lab Manual
EXP NO:
8051 Assembly Language program using Keil simulator
DATE
AIM:
To write 8051 Assembly Language Program for an 8-bit addition using Keil
simulator and execute it.
SOFTWARE REQUIRED:
A simulator is software that will execute the program and show the results exactly
to the program running on the hardware, if the programmer finds any errors in the
program while simulating the program in the simulator, he can change the program and re
-simulate the code and get the expected result, before going to the hardware testing. The
programmer can confidently dump the program in the hardware when he simulates his
program in the simulator and gets the expected results.
8051 controller is a most popular 8-bit controller which is used in a large number of
embedded applications and many programmers write programs according to their
application. So testing their programs in the software simulators is a way. Simulators will
help the programmer to understand the errors easily and the time taken for the testing is
also decreased.
These simulators are very useful for students because they do need not to build
the complete hardware for testing their program and validate their program very easily in
an interactive way.
2. EDSIM 51: This is a virtual 8051 interfaced with virtual peripherals like 7 segment
display, motor, keypad, UART etc. This simulator is exclusively for students developed
by James Rogers,.
The features of this simulator are
✓ Have virtual peripherals like ADC, DAC with scope to display, comparator etc.
✓ Supports only assembly language
✓ IDE is completely written in JAVA and supports all the OS.
✓ Completely free and with user guide, examples, etc.
You can download this simulator from the https://www.edsim51.com/index.html.
3. 8051 IDE: This simulation software is exclusively for the Windows operating system
(98/xp).
The features of this simulator are
✓ Text editor, assembler, and software simulate in one single program.
✓ Has facilities like Breakpoint setter, execute to break point, predefined
simulator watch window, etc.
✓ It is available in both free version and paid version.
You can download this tool from https://www.acebus.com/win8051.htm
CS3691 EMBEDDED SYSTEMS AND IOT
4. KEIL µVision: KEIL is the most popular software simulator. It has many features like
interactive IDE and supports both C and assembly languages for compilation and
simulation.
After saving the file, a new window will pop up asking you to select your microcontroller.
As discussed, we are using AT89C51/AT89C51ED2/AT89C52, so select this controller
under the Microchip section (as Atmel is now a part of Microchip).
Select ‘Yes’ in the next pop-up, as we do not need this file in our project.
CS3691 EMBEDDED SYSTEMS AND IOT
From here, we need to create a file where we can write our C code. Navigate to File —>
New.
Once the file is created, save it with .c extension in the same project folder.
Next, we have to add that .c or .asm file to our project workspace. Select Add Existing
Files and then select the created .c or .asm file to get it added.
PROCEDURE
1. Create a new project, go to “Project” and close the current project “Close Project”.
2. Next Go to the Project New μVision Project and Create New Project Select
Device for Target.
3. Select the device AT89C51ED2 or AT89C51 or AT89C52
4. Add Startup file Next go to “File” and click “New”.
5. Write a program on the editor window and save it with .asm extension.
6. Add this source file to Group and click on “Build Target” or F7.
7. Go to debugging mode to see the result of simulation by clicking Run or step
run.8.
CS3691 EMBEDDED SYSTEMS AND IOT
PROGRAM:
ORG 0000H
CLR C
MOV A, #20H
ADD A, #21H
MOV R0, A
END OUTPUT:
CS3691 EMBEDDED SYSTEMS AND IOT
EXP NO:
Test data transfer between registers and memory
DATE
AIM:
To write and execute an Assembly language program to transfer data between
registers and memory.
SOFTWARE REQUIRED:
PROCEDURE
1. Create a new project, go to “Project” and close the current project “Close Project”.
2. Next Go to the Project New μVision Project and Create a New Project Select
Device for the Target.
3. Select the device AT89C51ED2 or AT89C51 or AT89C52
4. Add Startup file Next go to “File” and click “New”.
5. Write a program on the editor window and save it with .asm extension.
6. Add this source file to Group and click on “Build Target” or F7.
7. Go to debugging mode to see the result of the simulation by clicking Run or Step
run.
CS3691 EMBEDDED SYSTEMS AND IOT
PROGRAM:
TYPE-I:
ORG 0000H
CLR C
MOV R0, #55H
MOV R1, #6FH
MOV A, R0
MOV 30H, A
MOV A, R1
MOV 31H, A
END
OUTPUT:
CS3691 EMBEDDED SYSTEMS AND IOT
PROGRAM:
TYPE-II:
ORG 0000H
CLR C
MOV R0, #30H
MOV R1, #40H
MOV R7, #06H
BACK: MOV A, @R0
MOV @R1, A
INC R0
INC R1
DJNZ R7, BACK
END
OUTPUT:
CS3691 EMBEDDED SYSTEMS AND IOT
EXP NO:
ALU operations
DATE
AIM:
To write and execute the ALU program using the Keil simulator.
PROCEDURE
1. Create a new project, go to “Project” and close the current project “Close Project”.
2. Next Go to the Project New μVision Project and Create New Project Select Device
for Target.
3. Select the device AT89C51ED2 or AT89C51 or AT89C52
4. Add Startup file Next go to “File” and click “New”.
5. Write a program on the editor window and save it with .asm extension.
6. Add this source file to Group and click on “Build Target” or F7.
7. Go to debugging mode to see the result of simulation by clicking Run or step run.
CS3691 EMBEDDED SYSTEMS AND IOT
PROGRAM:
ORG 0000H
CLR C
//ADDITION
MOV A, #20H
ADD A, #21H
MOV 41H, A
//SUBTRACTION
MOV A, #20H
SUBB A, #18H
MOV 42H, A
//MULTIPLICATION
MOV A, #03H
MOV B, #04H
MUL AB
MOV 43H, A
//DIVISION
MOV A, #95H
MOV B, #10H
DIV AB
MOV 44H, A
MOV 45H, B
//AND
MOV A, #25H MOV
B, #12H
ANL A, B
MOV 46H, A
//OR
MOV A, #25H
MOV B, #15H
ORL A, B
MOV 47H, A
//XOR
CS3691 EMBEDDED SYSTEMS AND IOT
MOV A, #45H
MOV B, #67H
XRL A, B
MOV 48H, A
//NOT
MOV A, #45H
CPL A
MOV 49H, A
END OUTPUT:
RESULT:
CS3691 EMBEDDED SYSTEMS AND IOT
EXP NO:
WRITE BASIC PROGRAMS USING EMBEDDED C
DATE
AIM:
To write a basic embedded C program to control a port 0 pin 0 connected to an
8051 microcontroller using a Keil simulator.
SOFTWARE REQUIRED:
PROCEDURE
1. Create a new project, go to “Project” and close the current project “Close Project”.
2. Next Go to the Project New μVision Project and Create a New Project Select
Device for the Target.
3. Select the device AT89C51ED2 or AT89C51 or AT89C52
4. Add Startup file Next go to “File” and click “New”.
5. Write a program on the editor window and save it with .asm extension.
6. Add this source file to Group and click on “Build Target” or F7.
7. Go to debugging mode to see the result of the simulation by clicking Run or Step
run.
CS3691 EMBEDDED SYSTEMS AND IOT
PROGRAM:
#include<REG51.h>
int i,j;
sbit LED = P2^0;
void main() {
while(1)
{
LED = 0;
for(j=0;j<10000;j++); LED
= 1; for(j=0;j<10000;j++);
}
}
OUTPUT:
RESULT:
CS3691 EMBEDDED SYSTEMS AND IOT
EXP NO:
ARITHMETIC PROGRAMS USING EMBEDDED C
DATE
AIM:
To write an embedded C program for addition, subtraction, multiplication, and
division using the Keil simulator.
SOFTWARE REQUIRED:
PROCEDURE
1. Create a new project, go to “Project” and close the current project “Close Project”.
2. Next Go to the Project New μvision Project and Create New Project Select Device
for Target.
3. Select the device AT89C51ED2 or AT89C51 or AT89C52
4. Add Startup file Next go to “File” and click “New”.
5. Write a program on the editor window and save it with the .asm extension.
6. Add this source file to Group and click on “Build Target” or F7.
7. Go to debugging mode to see the result of the simulation by clicking Run or Step
run.
CS3691 EMBEDDED SYSTEMS AND IOT
PROGRAM:
#include<REG51.H>
unsigned char a, b;
void main()
{
a=0x10;
b=0x04; P0=a-b;
P1=a+b;
P2=a*b; P3=a/b;
while(1); }
OUTPUT:
RESULT:
CS3691 EMBEDDED SYSTEMS AND IOT
EXP NO:
INTRODUCTION TO THE ARDUINO PLATFORM
DATE
AIM:
To study the basics of Arduino Uno board and Arduino IDE 2.0 software.
INTRODUCTION TO ARDUINO:
Arduino is a project, open-source hardware, and software platform used to design and
build electronic devices. It designs and manufactures microcontroller kits and single-
board interfaces for building electronics projects. The Arduino boards were initially
created to help students with the non-technical background. The designs of Arduino
boards use a variety of controllers and microprocessors. Arduino is an easy-to-use open
platform for creating electronic projects. Arduino boards play a vital role in creating
different projects. It makes electronics accessible to non-engineers, hobbyists, etc. The
various components present on the Arduino boards are a Microcontroller, Digital
Input/output pins, USB Interface and Connector, Analog Pins, reset buttons, Power buttons,
LEDs, Crystal oscillators, and Voltage regulators. Some components may differ depending
CS3691 EMBEDDED SYSTEMS AND IOT
on the type of board. The most standard and popular board used over time is Arduino UNO.
The ATmega328 Microcontroller present on the UNO board makes it rather powerful than
other boards. There are various types of Arduino boards used for different purposes and
projects. The Arduino Boards are organized using the Arduino (IDE), which can run on
various platforms. Here, IDE stands for Integrated Development Environment. Let's
discuss some common and best Arduino boards.
2) Arduino Nano
The Arduino Nano is a small Arduino board based on ATmega328P or ATmega628
Microcontroller. The connectivity is the same as the Arduino UNO board. The Nano board
is defined as a sustainable, small, consistent, and flexible microcontroller board. It is small
in size compared to the UNO board. The devices required to start our projects using the
Arduino Nano board are Arduino IDE and miniUSB. The Arduino Nano includes an I/O pin
set of 14 digital pins and 8 analog pins. It also includes 6 Power pins and 2 Reset pins.
CS3691 EMBEDDED SYSTEMS AND IOT
3) Arduino Mega
The Arduino Mega is based on the ATmega2560 Microcontroller. The ATmega2560 is an 8
-bit microcontroller. We need a simple USB cable to connect to the computer and the AC
to DC adapter or battery to get started with it. It has the advantage of working with more
memory space. The
Arduino Mega includes 54 I/O digital pins and 16 Analog Input/Output (I/O), ICSP header, a
reset button, 4 UART (Universal Asynchronous Reciever/Transmitter) ports, USB
connection, and a power jack.
4) Arduino Micro
The Arduino Micro is based on the ATmega32U4 Microcontroller. It consists of 20 sets of
pins. The 7 pins from the set are PWM (Pulse Width Modulation) pins, while 12 pins are
analog input pins. The other components on board are a reset button, a 16MHz crystal
oscillator, an ICSP header, and a micro-USB connection. The USB is built in the Arduino
Micro board.
CS3691 EMBEDDED SYSTEMS AND IOT
5) Arduino Leonardo
The basic specification of the Arduino Leonardo is the same as the Arduino Micro. It is
also based on the ATmega32U4 Microcontroller. The components present on the board
are 20 analog and digital pins, a reset button, a 16MHz crystal oscillator, an ICSP header,
and a micro USB connection.
6) Arduino Due
The Arduino Due is based on the 32-bit ARM core. It is the first Arduino board that has
been developed based on the ARM Microcontroller. It consists of 54 Digital Input/Output
pins and 12 Analog pins. The Microcontroller present on the board is the Atmel SAM3X8E
ARM Cortex-M3 CPU. It has two ports, namely, a native USB port and a Programming port.
The micro side of the USB cable should be attached to the programming port.
7) Arduino Lilypad
The Arduino LilyPad was initially created for wearable projects and e-textiles. It is based
on the ATmega168 Microcontroller. The functionality of Lilypad is the same as other
Arduino Boards. It is a round, lightweight board with a minimal number of components to
keep the size of the board small. The Arduino Lilypad board was designed by Sparkfun and
CS3691 EMBEDDED SYSTEMS AND IOT
8) Arduino Bluetooth
The Arduino Bluetooth board is based on ATmega168 Microcontroller. It is also named as
Arduino
BT board. The components present on the board are 16 digital pins, 6 analog pins, reset
button, 16MHz crystal oscillator, ICSP header, and screw terminals. The screw terminals
are used for power. The Arduino Bluetooth Microcontroller board can be programmed over
the Bluetooth as a wireless connection.
9) Arduino Diecimila
The Arduino Diecimila is also based on the ATmeg628 Microcontroller. The board consists
of 6 analog pin inputs, 14 digital Input/Output pins, a USB connector, a power jack, an ICSP
(In-Circuit Serial Programming) header, and a reset button. We can connect the board to
the computer using the USB and can power on the board with the help of an AC to DC
adapter. The Diecimila was initially developed to mark the 10000 delivered boards of
Arduino. Here, Diecimila means 10,000 in Italian.
CS3691 EMBEDDED SYSTEMS AND IOT
UNO to label the first release of Arduino Software. It was also the first USB board released
by Arduino. It is considered a powerful board used in various projects. Arduino. cc
developed the Arduino UNO board. Arduino UNO is based on an ATmega328P
microcontroller. It is easy to use compared to other boards, such as the Arduino Mega
board, etc. The board consists of digital and analog Input/Output pins (I/O), shields, and
other circuits. The Arduino UNO includes 6 analog pin inputs, 14 digital pins, a USB
connector, a power jack, and an ICSP (In-Circuit Serial Programming) header. It is
programmed based on IDE, which stands for Integrated Development Environment. It can
run on both online and offline platforms. The IDE is common to all available boards of
Arduino.
SDA: It stands for Serial Data. It is a line used by the slave and master to send and receive data. It
is called as a data line, while SCL is called as a clock line.
SCL: It stands for Serial Clock. It is defined as the line that carries the clock data. It is used to
synchronize the transfer of data between the two devices. The Serial Clock is generated by the
device and it is called as master.
SPI: It stands for Serial Peripheral Interface. It is popularly used by the microcontrollers to
communicate with one or more peripheral devices quickly. It uses conductors for data receiving,
data sending, synchronization, and device selection (for communication).
MOSI: It stands for Master Output/ Slave Input. The MOSI and SCK are driven by the Master.
SS: It stands for Slave Select. It is the Slave Select line, which is used by the master. It acts as the
enable line. I2C: It is the two-wire serial communication protocol. It stands for Inter Integrated
Circuits. The I2C is a serial communication protocol that uses SCL (Serial Clock) and SDA (Serial
Data) to receive and send data between two devices.
3.3V and 5V are the operating voltages of the board.
CS3691 EMBEDDED SYSTEMS AND IOT
The Arduino IDE 2.0 is an open-source project, currently in its beta-phase. It is a big step
from it's sturdy predecessor, Arduino IDE 2.0, and comes with revamped UI, improved
board & library manger, autocomplete feature and much more.
In this tutorial, we will go through step by step, how to download and install the software.
Download the editor
Downloading the Arduino IDE 2.0 is done through the Arduino Software page. Here you will
also find information on the other editors available to use.
Requirements
• Windows - Win 10 and newer, 64 bits
• Linux - 64 bits
• Mac OS X - Version 10.14: "Mojave" or newer, 64 bits
Installation
Windows
Download URL: https://www.arduino.cc/en/software
To install the Arduino IDE 2.0 on a Windows computer, simply run the file downloaded
from the software page.
CS3691 EMBEDDED SYSTEMS AND IOT
Follow the instructions in the installation guide. The installation may take several minutes.
You can now use the Arduino IDE 2.0 on your windows computer!
CS3691 EMBEDDED SYSTEMS AND IOT
How to use the board manager with the Arduino IDE 2.0
The board manager is a great tool for installing the necessary cores to use your Arduino
boards. In this quick tutorial, we will take a look at how to install one, and choosing the
right core for your board!
Requirements
• Arduino IDE 2.0 installed.
Why use the board manager?
The board manager is a tool that is used to install different cores on your local computer.
So what is a core, and why is it necessary that I install one?
Simply explained, a core is written and designed for specific microcontrollers. As Arduino
have several different types of boards, they also have different type of microcontrollers.
For example, an Arduino UNO has an ATmega328P, which uses the AVR core, while an
Arduino Nano 33 IoT has a SAMD21 microcontroller, where we need to use the SAMD
core.
In conclusion, to use a specific board, we need to install a specific core.
Installing a core
Installing a core is quick and easy, but let's take a look at what we need to do.
1. Open the Arduino IDE 2.0.
2. With the editor open, let's take a look at the left column. Here, we can see a couple of
icons.
Let's click the on the "computer chip" icon.
CS3691 EMBEDDED SYSTEMS AND IOT
1. A list will now appear of all available cores. Now let's say we are using an Nano 33
IoT board, and we want to install the core. Simply enter the name in the search field,
and the right core (SAMD) will appear, where the Nano 33 IoT features in the
description. Click on the "INSTALL" button.
4. This will begin an installation process, which in some cases may take several
minutes.
CS3691 EMBEDDED SYSTEMS AND IOT
5. When it is finished, we can take a look at the core in the boards manager column,
where it should say "INSTALLED".
You have now successfully downloaded and installed a core on your machine, and you can
start using your Arduino board!
CS3691 EMBEDDED SYSTEMS AND IOT
3. Click on the verify tool (checkmark). Since we are verifying an empty sketch, we can
be sure it is going to compile. After a few seconds, we can see the result of the
action in the console (black box in the bottom).
1. Now we know that our code is compiled, and that it is working. Now, before we can
upload the code to our board, we will first need to select the board that we are
using. We can do this by navigating to Tools > Port > {Board}. The board(s) that are
connected to your computer should appear here, and we need to select it by
clicking it. In this case, our board is displayed as COM44 (Arduino UNO).
CS3691 EMBEDDED SYSTEMS AND IOT
5. With the board selected, we are good to go! Click on the upload button, and it will
start uploading the sketch to the board.
6. When it is finished, it will notify you in the console log. Of course, sometimes there
are some complications when uploading, and these errors will be listed here as well.
How to install and use a library with the Arduino IDE 2.0
A large part of the Arduino programming experience is the use of libraries. Thousands of
libraries can be found online, and the best-documented ones can be found and installed
directly through the editor. In this tutorial, we will go through how to install a library using
the library manager in the Arduino IDE 2.0. We will also show how to access examples
from a library that you have installed.
Requirements
• Arduino IDE 2.0 installed.
Why use libraries?
Libraries are incredibly useful when creating a project of any type. They make our
development experience much smoother, and there almost an infinite amount out there.
They are used to interface with many different sensors, RTCs, Wi-Fi modules, RGB
matrices and of course with other components on your board.
Arduino has many official libraries, but the real heroes are the Arduino community, who
develop, maintain and improve their libraries on a regular basis.
CS3691 EMBEDDED SYSTEMS AND IOT
Installing a library
Installing a library is quick and easy, but let's take a look at what we need to do.
1. Open the Arduino IDE 2.0.
2. With the editor open, let's take a look at the left column. Here, we can see a couple
of icons.
Let's click the on the "library" icon.
3. A list will now appear of all available libraries, where we can also search for the
library we want to use. In this example, we are going to install the RTCZero library.
Click on the "INSTALL" button to install the library.
CS3691 EMBEDDED SYSTEMS AND IOT
4. This process should not take too long, but allow up to a minute to install it.
5. When it is finished, we can take a look at the library in the library manager column,
where it should say "INSTALLED".
CS3691 EMBEDDED SYSTEMS AND IOT
You have now successfully downloaded and installed a library on your machine.
Including a library
To use a library, you first need to include the library at the top of the sketch.
CS3691 EMBEDDED SYSTEMS AND IOT
Almost all libraries come with already made examples that you can use. These are
accessible through File > Examples > {Library} > {Example}. In this example, we are
choosing the RTCZero > SimpleRTC.
The chosen example will now open up in a new window, and you can start using it however
you want to.
CS3691 EMBEDDED SYSTEMS AND IOT
RESULT:
CS3691 EMBEDDED SYSTEMS AND IOT
EXP NO:
INTRODUCTION TO ARDUINO PROGRAMMING
DATE
AIM:
To write and execute different Arduino programming for analog, digital signals and
serial communication.
5 Joystick Module 1
PROCEDURE:
CONNECTION:
PROGRAM:
DIGITAL WRITE:
void setup()
{ pinMode(2, OUTPUT);
} void loop()
{ digitalWrite(2,
HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
}
CONNECTION:
DIGITAL READ:
void setup() { pinMode(2,
OUTPUT); pinMode(5,
INPUT_PULLUP);
} void loop() { int
sw=digitalRead(5);
if(sw==1)
{ for(int i=0; i<5;
i++)
{
digitalWrite(2, HIGH);
delay(1000);
CS3691 EMBEDDED SYSTEMS AND IOT
digitalWrite(2, LOW);
delay(1000);
} }
else
{ digitalWrite(2,
LOW);
}
}
CONNECTION:
ANALOG READ:
void setup()
{ pinMode(2, OUTPUT);
Serial.begin(9600); } void
loop() { int
joystick=analogRead(A0);
Serial.println(joystick);
if(joystick>800)
digitalWrite(2, HIGH);
else
digitalWrite(2, LOW);
delay(500);
}
CS3691 EMBEDDED SYSTEMS AND IOT
CONNECTION:
ANALOG WRITE:
void setup()
{ pinMode(3, OUTPUT);
} void loop() { for(int
i=0; i<256;i++)
{ analogWrite(3,i);
delay(20);
}
for(int i=255; i>=0;i--)
{ analogWrite(3,i);
delay(20);
}
}
CONNECTION:
SERIAL COMMUNICATION:
void setup()
{ Serial.begin(9600);
pinMode(4, OUTPUT);
}
void loop()
{ if(Serial.available()>0)
{
char data=Serial.read();
Serial.println(data);
if(data=='1'){ digital
Write(4,HIGH); } else
if(data=='2'){ digital
Write(4,LOW);
}
}
}
RESULT:
CS3691 EMBEDDED SYSTEMS AND IOT
AIM:
To Explore different communication methods with IoT devices (Zigbee, GSM,
Bluetooth).
Zigbee:
Zigbee is a low-power wireless communication protocol designed for short-range
communication between devices. It operates on the 2.4 GHz frequency band and supports
mesh networking, allowing devices to communicate with each other through intermediate
nodes. Zigbee is commonly used in home automation, industrial control, and smart energy
applications.
Bluetooth:
Bluetooth is a short-range wireless communication technology that operates on the
2.4 GHz frequency band. It is commonly used for connecting IoT devices to smartphones,
tablets, and other nearby devices. Bluetooth Low Energy (BLE) is a power-efficient version
of Bluetooth that is ideal for battery-powered IoT devices. Bluetooth is widely used in
CS3691 EMBEDDED SYSTEMS AND IOT
Each communication method has its advantages and limitations, and the choice
depends on the specific requirements of the IoT application. Factors to consider include
range, power consumption, data rate, security, and interoperability with other devices or
systems.
RESULT:
CS3691 EMBEDDED SYSTEMS AND IOT
EXP NO:
BLUETOOTH COMMUNICATION
DATE
AIM:
To write a program to control an LED using a Bluetooth module.
PROCEDURE
CS3691 EMBEDDED SYSTEMS AND IOT
CONNECTIONS:
PROGRAM:
#include<SoftwareSerial.h>
SoftwareSerial mySerial(2,3);
//rx,tx void setup()
{ mySerial.begin(9600);
Serial.begin(9600); pinMode(4,
OUTPUT);
}
void loop()
{ if(mySerial.available()>0)
{
char
data=mySerial.read();
Serial.println(data);
if(data=='1'){ digitalWrit
e(4,HIGH);
Serial.println("LED ON");
} else
if(data=='2'){ digitalWrit
e(4,LOW);
Serial.println("LED OFF");
}
CS3691 EMBEDDED SYSTEMS AND IOT
}
}
RESULT:
EXP NO:
ZIGBEE COMMUNICATION
DATE
AIM:
To write a program to control an LED using a Zigbee module.
5 Zigbee Module 2
PROCEDURE
CONNECTIONS:
TRANSMITTER:
CS3691 EMBEDDED SYSTEMS AND IOT
PROGRAM:
TRANSMITTER SIDE:
#include<SoftwareSerial.h>
SoftwareSerial mySerial(2,3);
//rx,tx void setup()
{ mySerial.begin(9600);
Serial.begin(9600);
}
void loop()
{ mySerial.write('A');
Serial.println('A');
delay(100);
mySerial.write('B');
Serial.println('B');
delay(100);
}
CONNECTIONS:
RECEIVER:
Arduino UNO Pin Zigbee Module Arduino Development
Board
- 5V 5V
- G GND
2 Tx -
CS3691 EMBEDDED SYSTEMS AND IOT
3 Rx -
4 - LED1
RECEIVER SIDE:
#include<SoftwareSerial.h>
SoftwareSerial mySerial(2,3);
//rx,tx void setup()
{ mySerial.begin(9600);
Serial.begin(9600); pinMode(4,
OUTPUT);
}
void loop()
{ if(mySerial.available()>0)
{ char data=mySerial.read();
Serial.println(data);
if(data=='A')
digitalWrite(4,HIGH);
else if(data=='B')
digitalWrite(4,LOW);
}
}
RESULT:
CS3691 EMBEDDED SYSTEMS AND IOT
Raspberry Pi Pico W:
The Raspberry Pi Pico W is based on the RP2040 microcontroller, which was designed by
Raspberry Pi in-house. It combines a powerful ARM Cortex-M0+ processor with built-in Wi-
Fi connectivity, opening up a range of possibilities for IoT projects, remote monitoring, and
wireless communication. The Pico W retains the same form factor as the original Pico,
making it compatible with existing Pico accessories and add-ons.
RP2040 Microcontroller:
At the core of the Raspberry Pi Pico W is the RP2040 microcontroller. It features a dual-
core ARM Cortex-M0+ processor running at 133MHz, providing ample processing power
for a wide range of applications. The microcontroller also includes 264KB of SRAM, which
is essential for storing and manipulating data during runtime. Additionally, the RP2040
incorporates 2MB of onboard flash memory for program storage, ensuring sufficient
space for your code and firmware.
Wireless Connectivity:
The standout feature of the Raspberry Pi Pico W is its built-in wireless connectivity. It
includes an onboard Cypress CYW43455 Wi-Fi chip, which supports dual-band (2.4GHz
and 5GHz) Wi-Fi 802.11b/g/n/ac. This allows the Pico W to seamlessly connect to
wireless networks, communicate with other devices, and access online services. The
wireless capability opens up new avenues for IoT projects, remote monitoring and control,
CS3691 EMBEDDED SYSTEMS AND IOT
The Raspberry Pi Pico W brings wireless connectivity to the popular Raspberry Pi Pico
microcontroller board. With its powerful RP2040 microcontroller, built-in Wi-Fi chip,
extensive GPIO capabilities, and compatibility with MicroPython and C/C++ programming,
the Pico W offers a versatile and affordable platform for a wide range of embedded
projects. Whether you are a beginner or an experienced developer, the Raspberry Pi Pico W
provides a user-friendly and flexible platform to bring your ideas to life and explore the
exciting world of wireless IoT applications.
CS3691 EMBEDDED SYSTEMS AND IOT
RESULT:
EXP NO:
INTRODUCTION TO PYTHON PROGRAMMING
DATE
What is MicroPython?
MicroPython is a Python 3 programming language re-implementation targeted for
microcontrollers and embedded systems. MicroPython is very similar to regular Python.
Apart from a few exceptions, the language features of Python are also available in
MicroPython. The most significant difference between Python and MicroPython is that
MicroPython was designed to work under constrained conditions.
Because of that, MicroPython does not come with the entire pack of standard libraries. It
only includes a small subset of the Python standard libraries, but it includes modules to
easily control and interact with the GPIOs, use Wi-Fi, and other communication protocols.
Thonny IDE:
Thonny is an open-source IDE which is used to write and upload MicroPython programs to
different development boards such as Raspberry Pi Pico, ESP32, and ESP8266. It is
extremely interactive and easy to learn IDE as much as it is known as the beginner-friendly
IDE for new programmers. With the help of Thonny, it becomes very easy to code in
Micropython as it has a built-in debugger that helps to find any error in the program by
CS3691 EMBEDDED SYSTEMS AND IOT
You can realize the popularity of Thonny IDE from this that it comes pre-installed in
Raspian OS which is an operating system for a Raspberry Pi. It is available to install on r
Windows, Linux, and Mac OS.
4. Follow the installation wizard to complete the installation process. You just need to click
“Next”.
5. After completing the installation, open Thonny IDE. A window as shown in the following
figure should open.
CS3691 EMBEDDED SYSTEMS AND IOT
CONNECTIONS:
PROGRAM
LED:
from machine import
Pin import time LED =
Pin(16, Pin.OUT) while
True: LED.value(1)
time.sleep(1)
LED.value(0)
time.sleep(1)
CONNECTIONS:
RGB:
from machine import Pin
from time import
sleep_ms,sleep
r=Pin(16,Pin.OUT)
y=Pin(17,Pin.OUT)
g=Pin(18,Pin.OUT)
while True:
r.value(1)
CS3691 EMBEDDED SYSTEMS AND IOT
sleep_ms(1000)
r.value(0)
sleep_ms(1000)
y.value(1)
sleep(1)
y.value(0)
sleep(1)
g.value(1)
sleep(1)
g.value(0)
sleep(1)
CONNECTIONS:
led.value(0)
sleep(2) else:
print("LED OFF")
sleep(0.5)
RESULT:
CS3691 EMBEDDED SYSTEMS AND IOT
EXP NO:
INTERFACING SENSORS WITH RASPBERRY PI
DATE
AIM:
To interface the IR sensor and Ultrasonic sensor with Raspberry Pico.
1 Thonny IDE 1
5 IR Sensor 1
6 Ultrasonic sensor 1
PROCEDURE
CONNECTIONS:
PROGRAM:
IR Sensor: from
machine import Pin
from time import sleep
buzzer=Pin(16,Pin.OUT)
ir=Pin(15,Pin.IN) while
True:
ir_value=ir.value() if
ir_value== True:
print("Buzzer OFF")
buzzer.value(0)
else:
print("Buzzer ON")
buzzer.value (1)
sleep(0.5) CONNECTIONS:
ULTRASONIC SENSOR:
from machine import Pin,
PWM import utime trigger =
Pin(14, Pin.OUT) echo =
Pin(15, Pin.IN)
buzzer = Pin(16, Pin.OUT)
def measure_distance():
trigger.low()
utime.sleep_us(2)
trigger.high()
utime.sleep_us(5)
trigger.low() while
echo.value() == 0:
signaloff = utime.ticks_us()
while echo.value() == 1:
signalon = utime.ticks_us()
while True:
dist = measure_distance()
print(f"Distance : {dist} cm")
if dist <= 10:
buzzer.value(1)
utime.sleep(0.01) else:
buzzer.value(0)
utime.sleep(0.01)
utime.sleep(0.5)
RESULT:
CS3691 EMBEDDED SYSTEMS AND IOT
AIM:
To write and execute the program to Communicate between Arduino and Raspberry
PI using any wireless medium (Bluetooth)
1 Thonny IDE 1
6 Bluetooth Module 2
PROCEDURE
CONNECTIONS:
PROGRAM:
MASTER
ARDUINO:
#include<SoftwareSerial.h>
SoftwareSerial mySerial(2,3);
//rx,tx void setup()
{ mySerial.begin(9600);
}
void loop()
{ mySerial.write('A');
delay(1000);
mySerial.write('B');
delay(1000);
}
CONNECTIONS:
SLAVE
RASPBERRY PI PICO
from machine import Pin,
UART uart = UART(0, 9600)
led = Pin(16, Pin.OUT)
EXP NO:
CLOUD PLATFORM TO LOG THE DATA
DATE
AIM:
To set up a cloud platform to log the data from IoT devices.
1 Blynk Platform 1
CLOUD PLATFORM-BLYNK:
Blynk is a smart platform that allows users to create their Internet of Things applications
without the need for coding or electronics knowledge. It is based on the idea of physical
programming & provides a platform to create and control devices where users can
connect physical devices to the Internet and control them using a mobile app.
Step 1: Visit blynk.cloud and create a Blynk account on the Blynk website. Or you can
simply sign in using the registered Email ID.
CS3691 EMBEDDED SYSTEMS AND IOT
Step 3: Give any name to the Template such as Raspberry Pi Pico W. Select ‘Hardware
Type’ as Other and ‘Connection Type’ as WiFi.
Select the device from a template that you created earlier and also give any name to the
device. Click on Create.
A new device will be created. You will find the Blynk Authentication Token Here. Copy it as
it is necessary for the code.
CS3691 EMBEDDED SYSTEMS AND IOT
From the widget box drag a switch and place it on the dashboard screen.
CS3691 EMBEDDED SYSTEMS AND IOT
Step 6:
On the switch board click on Settings and here you need to set up the Switch. Give any title
to it and Create Datastream as Virtual Pin.
Configure the switch settings as per the image below and click on create.
CS3691 EMBEDDED SYSTEMS AND IOT
With this Blynk dashboard set up, you can now proceed to program the Raspberry Pi Pico
W board to control the LED.
CS3691 EMBEDDED SYSTEMS AND IOT
Step 7:
To control the LED with a mobile App or Mobile Dashboard, you also need to setup the
Mobile Phone Dashboard. The process is similarly explained above.
Install the Blynk app on your smartphone The Blynk app is available for iOS and Android.
Download and install the app on your smartphone. then need to set up both the Mobile
App and the Mobile Dashboard in order to control the LED with a mobile device. The
process is explained above.
RESULT:
EXP NO: Log Data using Raspberry PI and upload it to the cloud
DATE platform
AIM:
To write and execute the program Log Data using Raspberry PI and upload it to the
cloud platform
1 Thonny IDE 1
3 Jumper Wires 1
PROCEDURE
CONNECTIONS:
PROGRAM:
from machine import Pin, I2C,
ADC from utime import
sleep_ms from pico_i2c_lcd
import I2cLcd import time import
network
import BlynkLib
adc = machine.ADC(4)
i2c=I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
CS3691 EMBEDDED SYSTEMS AND IOT
I2C_ADDR=i2c.scan()[0]
lcd=I2cLcd(i2c,I2C_ADDR,2,16)
wlan = network.WLAN()
wlan.active(True)
wlan.connect("Wifi_Username","Wifi_Password")
BLYNK_AUTH = 'Your_Token'
# Handle connection
error if wlan.status() != 3:
raise RuntimeError('network connection
failed') else: print('connected')
ip=wlan.ifconfig()[0]
print('IP: ', ip)
"Connection to Blynk"
# Initialize Blynk
blynk = BlynkLib.Blynk(BLYNK_AUTH)
lcd.clear()
while True:
ADC_voltage = adc.read_u16() * (3.3 / (65536))
temperature_celcius = 27 - (ADC_voltage - 0.706)/0.001721
temp_fahrenheit=32+(1.8*temperature_celcius)
print("Temperature in C: {}".format(temperature_celcius))
print("Temperature in F: {}".format(temp_fahrenheit))
lcd.move_to(0,0)
lcd.putstr("Temp:")
lcd.putstr(str(round(temperature_celcius,2)))
lcd.putstr("C ")
lcd.move_to(0,1)
lcd.putstr("Temp:")
lcd.putstr(str(round(temp_fahrenheit,2)))
CS3691 EMBEDDED SYSTEMS AND IOT
lcd.putstr("F")
time.sleep(5)
blynk.virtual_write(3, temperature_celcius)
blynk.virtual_write(4, temp_fahrenheit)
blynk.log_event(temperature_celcius)
blynk.run()
time.sleep(5)
RESULT:
EXP NO:
Design an IOT-based system
DATE
AIM:
To design a Smart Home Automation IOT-based system
1 Thonny IDE 1
2 Raspberry Pi Pico Development Board few
3 Jumper Wires 1
5 LED or Relay 1
CS3691 EMBEDDED SYSTEMS AND IOT
PROCEDURE
CS3691 EMBEDDED SYSTEMS AND IOT
CONNECTIONS:
PROGRAM:
wlan = network.WLAN()
wlan.active(True)
wlan.connect("Wifi_Username","Wifi_Password")
BLYNK_AUTH = 'Your_Token'
break
wait -= 1
print('waiting for connection...')
time.sleep(1)
# Handle connection
error if wlan.status() != 3:
raise RuntimeError('network connection failed')
else:
print('connected')
ip=wlan.ifconfig()[0]
print('IP: ', ip)
"Connection to Blynk"
# Initialize Blynk
blynk = BlynkLib.Blynk(BLYNK_AUTH)
LCD DISPLAY:
while True:
lcd.move_to(3,0)
lcd.putstr("Ediylabs")
sleep(5) lcd.clear()
Connection
pwm = PWM(Pin(1))
pwm.freq(50)
Connection
IN1 = Pin(12,Pin.OUT)
IN2 = Pin(13,Pin.OUT)
IN3 = Pin(14,Pin.OUT)
IN4 = Pin(15,Pin.OUT)
sequence = [[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]]
Connection