0% found this document useful (0 votes)
47 views35 pages

Summer Internship Report On: Embedded System Developer Virtual Internship

The document is a summer internship report by Purnasekhar Hanuma, detailing a virtual internship focused on embedded system development as part of a Bachelor of Technology degree in Electrical and Electronics Engineering. It includes an overview of embedded systems, programming with MPLAB X IDE, and various programming concepts in C, alongside a structured index of activities undertaken during the internship. The report acknowledges the guidance received from faculty and outlines the learning experiences and technical skills acquired throughout the internship period.

Uploaded by

madhavgodasi7
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
47 views35 pages

Summer Internship Report On: Embedded System Developer Virtual Internship

The document is a summer internship report by Purnasekhar Hanuma, detailing a virtual internship focused on embedded system development as part of a Bachelor of Technology degree in Electrical and Electronics Engineering. It includes an overview of embedded systems, programming with MPLAB X IDE, and various programming concepts in C, alongside a structured index of activities undertaken during the internship. The report acknowledges the guidance received from faculty and outlines the learning experiences and technical skills acquired throughout the internship period.

Uploaded by

madhavgodasi7
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

SUMMER INTERNSHIP REPORT ON

EMBEDDED SYSTEM DEVELOPER VIRTUAL


INTERNSHIP
in partial fulfillment for the award of the degree of
BACHELOR OF TECHNOLOGY
in
ELECTRICAL AND ELECTRONICS ENGINEERING

Submitted by

PAMPIREDDY PURNA SEKHAR HANUMA


226N1A0241

Department of Electrical and Electronics Engineering


SRINIVASA INSTITUTE OF ENGINEERING AND TECHNOLOGY
(UGC – Autonomous Institution)
( Approved by AICTE, permanently affiliated to JNTUK, Kakinada, ISO 9001: 2015 certified Institution)

(Accredited by NAAC with 'A' Grade; Recognised by UGC under sections2 (f)&12 (B))

NH-216, Amalapuram-Kakinada Highway, Cheyyeru (V), Amalapuram-533216.

(2022-2026)
SRINIVASA INSTITUTE OF ENGINEERING AND TECHNOLOGY
(UGC – Autonomous Institution)
( Approved by AICTE, permanently affiliated to JNTUK, Kakinada, ISO 9001: 2015 certified Institution)

(Accredited by NAAC with 'A' Grade; Recognised by UGC under sections2 (f)&12 (B))

NH-216, Amalapuram-Kakinada Highway, Cheyyeru (V), Amalapuram-533216.

DEPARTMENT OF ELECTRICAL AND ELECTRONICS ENGINEERING

CERTIFICATE

This is to certify that the Summer Internship Report on “EMBEDDED SYSTEM


DEVELOPER VIRTUAL INTERNSHIP” carried at APSCHE is submitted by Name
PAMPIREDDY PURNA SEKHAR HANUMA (226N1A0217) is a student of IV B.tech
Electrical And Electronics Engineering at Srinivasa Institute of Engineering and
Technology, Amalapuram, for the Summer internship carried between APRIL to JUNE
during the Academic year 2025-2026. This report has been submitted in partial fulfilment
of the requirements for the award of the degree of Bachelor of Technology in Electrical
and Electronics Engineering.

Mentor Head of the department


Principal
INTERNSHIP CERTIFICATE

PURNA SEKHAR HANUMA PAMPIREDDY


Srinivasa Institute of Engineering and Technology (Autonomous)

Certificate ID :f0d90639f5bc98b55475482ca83cfec9
Student ID :STU66a27b96d3cbf1721924502 B
ACKNOWLEDGEMENT

I extend my heartfelt gratitude to Ms. P. SOWJANYA, M.Tech,Assistant professor Department


of Electrical and Electronics Engineering for their invaluable guidance, expertise, and
unwavering support throughout my research which significantly contributed to my growth and
learning.

I would be thankful to Mr. K.V.V.BAPIRAJU, M.Tech, (Ph.D), Assistant professor and Head
of the Department Electrical and Electronics Engineering for her technical guidance who has been
an excellent guide and also a great source of inspiration to my work.

I am grateful to our principal Dr. K.SURESH BABU, M.Tech, Ph.D., Srinivasa Institute of
Engineering and Technology, who most able to run the institution and his constant encouragement
and support in carrying out my seminar report at college.

I would like to express my heart-felt gratitude to my parents without whom I would not have been
privileged to achieve and fulfill my dreams.

The satisfaction and euphoria that accompany the successful completion of the task would be great
but incomplete without the mention of the people who made it possible with their constant
guidance and encouragement crowns all the efforts with success. In this context, I would like thank
all the other staff members, both teaching and nonteaching, which have extended their timely help
and eased my task.

PAMPIREDDY PURNA SEKHAR HANUMA


(226N1A0241)

1
INDEX

S.NO WEEKS CONTENT PG.NO


1. Abstract 1
Internship Activities
2. WEEK-1 Introduction to embedded system 2-3
8bit micro controllers: architecture of the PIC 16

3. WEEK-2 Introduction to MPLAB X IDE 4=5


Getting started with PIC16F1xxx MCUs using MCC and
4. WEEK-3 State Machines 6=7
Introduction to embedded c
5. WEEK-4 Advanced c programming 8-9

6. WEEK-5 C programming: Linked list data structures 11-12

7. WEEK-6 C programming call backs 13-14

8. WEEK-7 Advanced embedded C Tips, Tricks and Cautions 15-16

9. WEEK-8 Design considerations for your first IOT project 17-18


Exploring Bluetooth low energy from first Steps to final
10. WEEK-9 application. 19-22
Creating a sensor node for Azure IOT central
Motor control Workshop using DSPIC digital signal
11. WEEK-10 controllers (DSC) dual core devices 23-24

12. Results and discussion 25

13. List of completion certificates 26-28

14. Conclusion 30

1
ABSTRACT
Embedded systems play a crucial role in shaping the modern technological landscape,
powering an array of devices that surround us in our daily lives. This abstract explores the
fundamental concepts, applications, and challenges of embedded systems, underscoring their
pervasive influence on various industries and the potential for future advancements.Embedded
systems are specialized computing systems designed to perform dedicated functions within
larger devices or machines. They are integrated into a wide spectrum of products, ranging from
household appliances, consumer electronics, and automobiles to industrial machinery, medical
devices, and aerospace systems. This integration enables these devices to carry out complex
tasks efficiently, often without the need for user intervention.The success of embedded systems
can be attributed to their unique characteristics. They are typically resource-constrained, with
limited processing power, memory, and energy supply, demanding efficient algorithms and
tailored hardware designs. Real-time responsiveness is often a critical requirement, as many
embedded applications involve safety-critical tasks that demand timely and precise execution.
This tutorial provides basic understanding of Embedded systems and its implementation using
Keil software and Proteus Software.

1
INTERNSHIP ACTIVITIES

WEEK-1
INTRODUCTION TO EMBEDDED SYSTEMS
An embedded system is a special purpose system that is used to perform one or few dedicated
functions. Simply, we can call any electronic device that has a computer system embedded
inside it an embedded system.The microprocessor is the core of computer systems. Many
communications, digital entertainment, portable devices, are controlled by them.

8 BIT MICRO CONTROLLERS: ARCHITECTURE OF THE PIC


16
microcontroller uses a Reduced Instruction Set Computer (RISC) architecture that has a
separate address and data bus. This means they can be separate in size as well. All 8-bit PIC
microcontrollers have an 8-bit wide data bus but the program bus will vary in size depending
on the family.

Baseline
Baseline PIC microcontrollers utilize a 12-bit instruction word and provide the right number
of features and options to minimize expenses and get the job done right.
Simple 33 (12-bit wide) instruction set for ease of use and quick development.
144 bytes RAM (max).
2-level hardware stack.

1
Mid-Range
Mid-Range PIC microcontrollers are the next tier in performance and have features from the
Baseline PIC microcontrollers.
35 (14-bit wide) easy instructions to learn.

8K word (14 KB) addressable program memory.


368 bytes RAM (max).
8-level hardware stack.
One (9-bit) file select register.
Hardware interrupt handling.

Highly integrated feature set: Electrically Erasable Programmable Read-Only Memory


(EEPROM), LCD, m Touch ™ sensing solutions, and serial communications.

The Mid-Range family can be recognized by their part number structure: 10Fxxx, 12Fxxx,
and 16Fxxx.

Enhanced Mid-Range
The newest family is the Enhanced Mid-Range core which builds upon the best elements of
the Mid-Range core and provides additional performance while maintaining compatibility with
Mid-Range PIC MCUs for true product migration. These devices have the latest features and
the lowest power in the 8-bit core.
49 (14-bit wide) assembly commands
32 K word (56 KB) addressable program memory
4 KB RAM (max)
16-level hardware stack

High-End
These parts have their own prefix namely, PIC18. This family combines the maximum level of
performance and integration with the ease of use of an 8-bit architecture. With up to 16 MIPS
of processing power, PIC18 microcontrollers feature advanced peripherals, such as CAN, USB,
Ethernet, LCD, and Charge Time Measurement Unit (CTMU). They offer the largest pin count
and memory size in the 8-bit family of parts. The architecture is optimized for C programming.
83 (16-bit wide) assembly instructions.
Up to 2 MB addressable program memory.
4 KB RAM (max).
32-level hardware stack
One (8-bit) file select register.
Integrated 8x8 hardware multiply.
1
WEEK-2
INTRODUCTION TO MPLAB X IDE
MPLAB X IDE is an integrated development environment (IDE) specifically designed for
programming and developing applications for Microchip microcontrollers and digital signal
controllers (DSCs). It's a powerful tool that provides a comprehensive set of features to
streamline the entire embedded software development process.

: Supported Microchip Devices


MPLAB X IDE is primarily used for developing software for Microchip's microcontrollers
and digital signal controllers, including PIC micro controllers, ds PIC digital signal controllers,
and more.

Cross-Platform Compatibility
MPLAB X IDE is designed to be cross-platform, which means it runs on multiple operating
systems, including Windows, macOS, and Linux, making it accessible to a wide range of
developers.

Integrated Development EnvirMPLAB X IDE: provides a complete environment for


embedded software development. It includes all the tools and features required for writing,
compiling, debugging, and programming
1
Code Editor
The IDE includes a powerful code editor with features such as syntax highlighting, code
completion, and code navigation to assist developers in writing and editing code.

Project Management
Developers can create and manage projects within MPLAB X IDE. Projects help organize code
files, configuration settings, and build options.

Device Configuration
MPLAB X IDE offers a device configuration tool that simplifies the process of setting up and
configuring peripherals, pins, and clock settings for the target microcontroller.

Compiler and Debugger Integration


The IDE seamlessly integrates with Microchip's XC compilers, allowing you to compile your
code directly within the IDE.MPLAB X IDE also supports debugging through various tools,
including in-circuit debuggers and programmers. You can set breakpoints, view register values,
and step through your code during debugging sessions.

Plugin Support
MPLAB X IDE supports plugins, which extend its functionality. Developers can create custom
plugins or use existing ones to enhance the IDE's capabilities.

Real-Time Data Monitoring


For debugging and analysis, the IDE provides real-time data monitoring and visualization
tools, allowing you to monitor variables and peripheral registers while your code runs on the
target device.

Integrated Programmer
MPLAB X IDE includes support for Microchip's programmers and debuggers, making it easy
to program your microcontroller with the compiled code directly from the IDE.

Version Control Integration


The IDE can integrate with version control systems like Git, making it easier for teams to
collaborate on projects and manage source code revisions.

Community and Support


Microchip provides a wealth of documentation, tutorials, and a user community to help
developers get started and troubleshoot any issues. MP LAB X IDE is an essential tool for
anyone developing applications for Microchip microcontrollers and digital signal controllers.
It offers a user-friendly interface and a wide range of features that simplify the development
process, from writing code to programming and debugging your embedded systems.

1
WEEK-3
GETTING STARTED WITH PIC16F1XXX MCUS USING MCC
AND STATE MACHINES
Getting started with PIC16F1xxx microcontrollers (MCUs) using the MPLAB Code
Configurator (MCC) and state machines is a great way to quickly develop embedded
applications. This approach simplifies the configuration of peripherals and the creation of state
- based applications. Here are the steps to get started:

Hardware Setup

Start by setting up your hardware. This includes connecting the PIC16F1xxxMCU to your
development board and ensuring you have a suitable power supply.
MPLAB X IDE and MCC Installation

If you haven't already, download and install MPLAB X IDE from the Microchip website.
Ensure that you also install MPLAB Code Configurator (MCC), which is a plugin for MPLAB
X IDE.

Create a New Project


Launch MPLAB X IDE, and create a new project by going to "File" > "New Project."
1
Configure the Clock
Use MCC to configure the MCU's clock settings. Select the clock source and frequency that
best suits your application.

Configure Peripherals
Use MCC to configure the peripheral modules you plan to use in your project. This might
include GPIO pins, timers, UART, or other peripherals.

Create State Machines


Define your application's behaviour using state machines. State machines are powerful way to
model complex behaviour in an organized manner. You can use MCC's "State Machine" feature
to create and manage state machines within your project. Define states, transitions, and actions
for your state machine to describe how your application should respond to events.

Code Generation
After configuring your peripherals and creating state machines, generate code using MCC.
MCC will generate initialization code for your peripherals and state machine code based on
your configurations.

Custom Application Code


Write custom application code to handle high-level logic and interactions within your state
machine. You can do this in the main. c file or other source files created in your project.

Build and Debug


Build your project to compile the code, and use MPLAB X IDE's debugging tools to test your
application. You can set breakpoints, examine variable values, and step through your code to
identify and fix issues.

Program the MCU


Once you're satisfied with your code and it's free of errors, use a suitable programmer (e.g.,
PIC kit) to program the PIC16F1xxx MCU on your development board.

Test and Iteration


Test your application on the hardware, and iterate as necessary to refine and expand its
functionality.

1
WEEK-4
INTRODUCTION TO EMBEDDED C
C programming language is known for its simplicity and power. It consists of various syntax
rules and structures that govern how programs are written. Here's an overview of some key
syntax and structures in C:

Comments
Comments in C are used to add explanatory notes within the code. Single-line comments start
with //, and multi-line comments are enclosed in /**/.

Preprocessor Directives
Preprocessor directives begin with a # symbol and are used to include header files, define
macros, and perform other preprocessing tasks.

Main Function
Every C program must have a main function where program execution begins. The main
function returns an integer value that represents the program's exit status.

Variables
Variables are used to store data. They must be declared before use, specifying their data type.
Variable names can include letters, digits, and underscores but must start with a letter or
underscore.

Data Types
C supports basic data types such as int, float, char, and more. You can also create user-defined
data types using structures and enumerations.

Operators
C includes various operators for performing operations on variables and values, including
arithmetic, comparison, logical, and assignment operators.

Control Structures
C provides control structures like if, else, while, for, and switch for decision- making and
looping.

Pointers
Pointers are variables that store memory addresses. They are used for dynamic memory
allocation and accessing data indirectly.These are some of the fundamental syntax and
structures in the C programming language. Understanding and mastering these concepts is
essential for writing Cprograms effectively. C is a versatile language, and it allows for low-
level memory manipulation, making it suitable for systems programming and embedded
development.
1
ADVANCED C PROGRAMMING
Advanced C programming delves into more complex and nuanced aspects of the Clanguage,
enabling developers to write efficient and sophisticated code. Here are some topics and
concepts that are considered advanced in C programming:

Pointers and Memory Management


Mastery of pointers is essential for advanced C programming. This includes pointer arithmetic,
dynamic memory allocation with malloc and free, and understanding stack vs. heap memory.

Data Structures
Implementing and working with complex data structures like linked lists, trees, graphs, and
hash tables. This involves memory management and pointer manipulation.

Function Pointers and Callbacks


Utilizing function pointers to implement callback mechanisms and dynamic function
invocation, as discussed in the previous response.

File Handling
Advanced file I/O operations, binary file handling, and handling complex file formats.
Understanding f seek, f tells, and how to read and write binary data is important.

Multi-threading and Concurrency


Writing multithreaded programs using libraries like p threads or Windows threads. Managing
shared resources, synchronization, and avoiding race conditions.

Advanced Data Types


Working with advanced data types such as unions and bitfields to optimize memory usage and
data representation.

Dynamic Data Structures


Implementing dynamic arrays, queues, and stacks with resizing capabilities.

Error Handling
Creating robust error-handling mechanisms using error codes, err no, and custom error
reporting.

Preprocessor Directives
Advanced use of preprocessor directives for conditional compilation, macro tricks, and code
generation.

1
WEEK-5
C PROGRAMMING: LINKED LIST DATA STRUCTURES
In C programming, linked lists are a fundamental data structure used to store and manage
collections of data dynamically. A linked list consists of a sequence of nodes, where each node
contains two parts: a data element and a reference (or pointer) to the next node in the sequence.
Linked lists come in various forms, including singly linked lists, doubly linked lists, and
circular linked lists. Here's an overview of implementing singly linked lists in C:

Singly Linked List Structure


In a singly linked list, each node points to the next node in the sequence, and the last node
points to NULL to indicate the end of the list.
Example:
struct Node {
int data;
struct Node *next;
};

Creating a Linked List


To create a linked list, you typically start with a pointer to the first node (the head) and
initialize it to NULL. You then add nodes dynamically as needed.

Example:
struct Node *head = NULL; // Initialize an empty linked list

Inserting Nodes
To insert a node at the beginning of the linked list, you allocate memory for the new node, set
its data and next pointer, and update the head to point to the new node.
Example:
struct Node *new Node = (struct Node *) malloc (size of (struct Node));
new Node->data = 42;
new Node->next = head;

head = new Node;

To insert a node at a specific position or at the end of the list, you traverse the list until you
reach the desired position or the end, then update the pointers accordingly.

Deleting Nodes
To delete a node, you update the pointers of the previous node toby pass the node you want to
remove, then free the memory of the deleted.

1
Advantages of Linked Lists
Dynamic Size
Linked lists can grow or shrink dynamically, making them suitable for situations where the
size is not known in advance

Memory Efficiency
Linked lists can be more memory-efficient than arrays because they allocate memory for each
element only when needed.

Insertions and Deletions


Inserting or deleting elements in a linked list is more efficient than in an array because you
don't need to shift elements

Disadvantages of Linked Lists


Random Access
Unlike arrays, linked lists don't support direct random access to elements. To access an
element, you need to traverse the list from the beginning.

Memory Overhead
Linked lists require extra memory for the next pointer, which can lead to higher memory
consumption compared to arrays.

Linked lists are a fundamental building block in C programming and are widely used in various
applications, including implementing data structures like stacks, queues, and hash tables.
Understanding linked lists and their operations is crucial for C programmers.

Applications
Linked lists are used in various applications, including:

Implementing other data structures like stacks, queues, and hash tables.

Managing dynamic memory allocation.

Representing polynomial expressions.

Creating undo/redo functionalities in applications

1
WEEK-6
C PROGRAMMING CALLBACKS
In C programming, callbacks are a powerful and flexible way to implement functions that can
be passed as arguments to other functions. Callbacks allow you to define custom behavior for
functions, making your code more modular and adaptable. Callbacks are often used in event-
driven programming, asynchronous operations, and in scenarios where you need to customize
the behavior of a function without modifying its code.
Here's how callbacks work in C programming:

Function Pointers
Callbacks are implemented using function pointers. A function pointer is a variable that stores
the address of a function instead of its value. Function pointers have a specific function
signature, meaning they point to functions with a specific set of parameters and return type.

Example:
// Declare a function pointer type
typedef void (*Callback Function)
(int);
// Define a function that takes a callback function as an
argument void do Something (int value, Callback Function
callback) {
// Perform some operation
callback(value); // Call the callback function
}
// Define a callback function
void my Callback (int
value)
{
Print ("Callback invoked with value: %d\n", value);
}
int main ()
{
do Something (42, my Callback); // Pass the callback function as an argument
return0;
}

In this example, do Something is a function that takes an integer value and a callback function
as arguments. When called, it performs some operation and then invokes the provided callback
function with the given value.
Using Callbacks for Custom Behavior
Callbacks are often used when you want to customize the behavior of a function without
modifying its code. This allows for greater flexibility and reusability of code.
Example:
// Another callback function
void double Callback (int
value)
{
print ("Double Callback: %d\n", value * 2);
}
int main ()
{
do Something (42, my Callback); // Pass one callback
do Something (10, double Callback); // Pass another
callback return 0;
}

Callbacks in Library Functions


Callbacks are commonly used in C library functions, such as sorting algorithms. For example,
the q sort function n in the C standard library allows you to provide a comparison callback to
customize the sorting order.

Callbacks are a powerful tool in C programming that allows you to create flexible and reusable
code by separating functionality from behavior. They are commonly used in libraries,
frameworks, and event-driven systems to enable customization and extensibility.

Applications of Callbacks:
Event Handling: Responding to user actions (e.g., button clicks, key presses) in GUI
applications.

Custom Sorting and Filtering: Providing custom logic for sorting or filtering data
structures.Asynchronous Operations: Handling tasks that complete at a later time (e.g., network
requests, file I/O).
WEEK-7
ADVANCED EMBEDDED C TIPS, TRICKS AND CAUTIONS
Advanced embedded C programming involves working with microcontrollers and embedded
systems, where resource constraints and real-time considerations are critical. Here are some
tips, tricks, and cautions to keep in mind:

Tips and Tricks


Use data types that match the target hardware's architecture to improve performance and reduce
memory usage. For example, use`uint8_t` for an 8-bit microcontroller.

Memory Management
Carefully manage memory, especially in systems with limited RAM. Use dynamic memory
allocation sparingly and consider implementing memory pools or fixed-size buffers.

Interrupt Handling
Understand interrupt priorities and use efficient interrupt handlers. Minimize the time spent in
interrupts to avoid disrupting the system's real-time behavior.

Clock Management
Be aware of clock sources and settings. Accurate timing is critical in embedded systems. Pay
attention to clock initialization and configuration.

Power Management
Implement power-saving modes when appropriate to reduce energy consumption.
Understand the power-down and sleep modes of the microcontroller.

Watchdog Timers
Use watchdog timers to recover from system crashes or lock-ups. Ensure that your code
periodically resets the watchdog timer.

Optimize Code
Write efficient code. Profile your code to identify bottle necks and optimize critical sections.
Employ compiler optimization flags.

Modular Design
Use modular and structured code design. Divide your code into manageable functions and
modules. Avoid long, complex functions.

Testing and Debugging


Invest in debugging tools like in-circuit emulators or debuggers. Implement logging and
diagnostics to aid in debugging.If using an RTOS, understand its features and limitations. Proper
task scheduling and synchronization are crucial.
Resource Constraints
Be mindful of memory and processing power limitations. Avoid using unnecessary libraries or
features that may consume excessive resources.

Real-Time Requirements
Ensure that your code meets real-time deadlines. Understand and minimize interrupt latency.

Floating-Point Arithmetic
Be cautious when using floating-point arithmetic, as it can be slow and may not be supported
on all microcontrollers.

Global Variables
Minimize the use of global variables, as they can lead to maintenance challenges and make
debugging difficult.

Concurrency Issues
Be aware of concurrency issues in multi-threaded or multi-tasking systems. Use proper
synchronization mechanisms to prevent data corruption.

Hardware Abstraction
Implement hardware abstraction layers (HALs) to isolate hardware-specific code. This makes
porting to different microcontrollers easier.

Memory Alignment
Pay attention to memory alignment requirements, especially when working with peripherals
that require specific data alignments.

Error Handling
Implement robust error handling and recovery mechanisms. Understand how to handle and
report errors gracefully.

Security
Consider security vulnerabilities, especially in connected embedded systems. Protect against
unauthorized access and data breaches.

Cautions
Always be mindful that embedded C is hardware-dependent, and mistakes can have
consequences for the system’s physical behavior.
WEEK-8
DESIGN CONSIDERATIONS FOR YOUR FIRST IOT PROJECT
Designing your first IoT (Internet of Things) project involves several important considerations
to ensure the success and functionality of our project. Here are key design considerations for
your first IoT project:

Define the Problem and Objectives


Clearly define the problem you want to solve with your IoT project and set specific objectives.
Understand the needs and requirements of your target users or customers.
Select the IoT Platform

Choose a suitable IoT platform or framework to build upon. Platforms like Arduino, Raspberry
Pi, or cloud-based platforms like AWS IoT, Azure IoT, or Google Cloud IoT can simplify
development.
Hardware Selection

Select the appropriate hardware components, including sensors, actuators, microcontrollers,


and communication modules (Wi-Fi, Bluetooth, LoRa, etc.), based on your project's
requirements.

Power Supply and Management


Plan for the power supply and management of your IoT device. Consider battery life, power
efficiency, and whether the device needs to operate in a low-power mode.
Connectivity

Determine how your IoT device will connect to the internet or other devices. This could
involve Wi-Fi, Ethernet, cellular, or LPWAN (Low-Power Wide Area Network) technologies.

Security:
Prioritize security in your design. Implement encryption, authentication, and access control
mechanisms to protect data and devices from unauthorized access and attacks.

Data Collection and Sensors

Choose the appropriate sensors to collect relevant data for your project. Consider factors like
accuracy, precision, and calibration.
Data Processing and Analytics

Decide how and where data will be processed and analyzed. It can be on the device itself, at
the edge, or in the cloud. Determine the necessary processing power and storage capacity.

User Interface

Design a user interface if your project requires user interaction. This could be a web or mobile
app, a dashboard, or even voice commands through virtual assistants.
Regulatory Compliance

Be aware of regulatory requirements and certifications, especially if your IoT device is


intended for specific industries like healthcare or automotive.

Power Efficiency
Optimize power consumption to extend the device's battery life and reduce operational costs.
Firmware Updates and Maintenance

Plan for remote firmware updates to fix bugs, add features, and enhance security. Ensure that
updates can be deployed seamlessly.

Data Privacy and Compliance

Address data privacy concerns and comply with data protection regulations, such as GDPR or
HIPAA, if applicable.
Testing and Validation

Perform rigorous testing, including unit testing, integration testing, and field testing, to ensure
the reliability and functionality of your IoT device.

Documentation and Support

Create comprehensive documentation for users, developers, and maintainers. Provide customer
support channels for troubleshooting and inquiries.
Cost Analysis

Calculate the total cost of ownership (TCO) for your IoT project, including hardware, software
development, maintenance, and operational costs.

Environmental Impact

Consider the environmental impact of your IoT project, including the disposal of electronic waste
and energy efficiency.

Team and skills


Identify required skills: You’ll need skills in hardware development, software programming, and
data analysis. Consider working with a team or a firm if you don’t have all the necessary
expertise.

Software and data


Plan for data management: Decide how data will be acquired, processed, and stored. Ensure the
backend system and the device are designed to work together smoothly.

Address security from the start: Incorporate security measures into your design from the
beginning, as it’s a major consideration for any IoT project.
WEEK-9
EXPLORING BLUETOOTH LOW ENERGY (BLE) FROM
FIRST STEPS TO FINAL APPLICATION
Exploring Bluetooth Low Energy (BLE) from first steps to a final application involves
understanding the technology, developing the necessary skills, and following a systematic
approach to building your project. Here's a step-by-step guide:

Understand BLE Technology


Start by learning the fundamentals of BLE technology. Understand how it differs from classic
Bluetooth and its advantages, such as low power consumption and compatibility with
smartphones and IoT devices.

Choose Development Tools


Select the development platform and tools that suit your project. Popular options include
Nordic Semiconductor's n RF series, Texas Instruments' CC26xx/CC13xxseries, and the
Arduino platform with BLE shields.

Learn BLE Protocols


Study the BLE protocol stack, which includes the Generic Attribute Profile (GATT), Generic
Access Profile (GAP), and more. Understand concepts like advertising, connections, services,
and characteristics.
Set Up Development Environment
Install the necessary software development kits (SDKs), compilers, and debugging tools
provided by your chosen hardware platform. Familiarize yourself f with development
workflow.
Develop Basic BLE Applications
Start with simple BLE applications, like creating a peripheral device that broadcasts data (e.g.,
sensor readings) and a central device that scans for and receives this data.

Study BLE Profiles


Explore standard BLE profiles like Heart Rate Monitor, Proximity, or Health Thermometer to
understand how services and characteristics are structured. Create custom profiles if needed.

Design Your Application


Define the purpose and functionality of your BLE application. Decide what data it will transmit,
how devices will interact, and any specific requirements.

Code Your Application


Begin coding your BLE application. Implement the necessary services, characteristics, and
descriptors. Handle advertising, connections, data exchange, and disconnections.

Test and Debug


Test your BLE application thoroughly. Use debugging tools and real devices for testing.
Address any bugs or issues that arise during the testing phase.

Optimize Power Consumption


BLE is known for its low power consumption, but you can optimize further by using low-power
modes, optimizing advertising intervals, and minimizing data transfers.

Implement Security
Ensure data security by implementing encryption, authentication, and authorization
mechanisms as required by your application.

Handle Errors and Exceptions


Implement error handling and exception management in your code to handle unexpected
situations gracefully.

User Interface (UI)


If your application has a user interface, design and implement it to interact with the BLE
functionality effectively.
CREATING A SENSOR NODE FOR AZURE IOT CENTRAL
Creating a sensor node for Azure IoT Central involves several steps, from hardware selection and
sensor integration to setting up communication with the Azure IoT Central platform. Here’s a
high-level guide to help you get started

Define Your Project


Determine the purpose of your sensor node and the type of data it will collect. Consider factors
like the environment, power constraints, and communication range.

Select Hardware
Choose a microcontroller or single-board computer (SBC) that is compatible with Azure IoT
Central. Common options include Raspberry Pi, Arduino, or specialized IoT development
boards with built-in connectivity.

Assemble Hardware
Assemble your hardware components, including the microcontroller, sensors (e.g.,
temperature, humidity, light), power supply, and any necessary peripherals.

Set Up Development Environment


Install the necessary software tools and libraries for your chosen hardware platform. Configure
your development environment.

Interface Sensors
Connect and interface your sensors with the microcontroller. Read data from the sensors using
appropriate libraries or code.

Implement Communication
Choose a communication method to send sensor data to Azure IoT Central. Common options
include Wi-Fi, Ethernet, or cellular connectivity. Ensure your hardware supports the method
Azure IoT Central Setup
Sign in to the Azure IoT Central portal (https://apps.azureiotcentral.com/). Create a new
application or use an existing one. Define a device template that describes the capabilities and
properties of your sensor node.

Device Provisioning
Implement device provisioning on your sensor node. Azure IoT Central supports various
methods, such as symmetric key authentication or X.509 certificates.

Develop Firmware
Write firmware for your sensor node that collects sensor data and sends it to Azure IoT Central.
Use the Azure IoT SDK for your chosen platform.

Security Implementation
Ensure that your firmware includes secure communication practices, such as using TLS/SSL
for data encryption and proper authentication mechanisms.

Test and Debug


Test your sensor node in a real-world environment to ensure data collection and transmission
work as expected. Use debugging tools and logs to trouble shoot any issues.

Device Integration
Register your sensor node with Azure IoT Central by providing device-specific information
and credentials.

Data Visualization
Define dashboards and visualizations in Azure IoT Central to display the data sent by your
sensor node.

Visualize and manage your data


After uploading the code to your NodeMCU, it will connect to Wi-Fi and begin sending data
to Azure IoT Central.

Monitor in IoT Central: Return to your device page in the Azure IoT Central application.

View telemetry: You can see the real-time sensor data on the Overview dashboard.

Explore raw data: The Raw Data tab will show the telemetry messages as they are received.

Create rules and jobs: You can set up rules to trigger actions, like sending an email alert if
the temperature exceeds a certain threshold.

i
WEEK-10
MOTOR CONTROL WORKSHOP USING DS PIC DIGITAL
SIGNAL CONTROLLERS (DSC) DUAL CORE DEVICES
A Motor Control Workshop using ds PIC Digital Signal Controllers (DSC) with Dual-Core
Devices is an excellent opportunity to learn about embedded systems and motor control. These
dual-core devices combine a Digital Signal Processor (DSP) core with a microcontroller core
making them suitable for demanding control applications like motor control. Below is a
structured outline for conducting such a workshop:

ds PIC dual core DSC Device

Workshop Title: Motor Control Workshop using ds PIC Dual-Core DSC Devices.
Workshop Duration

Typically, a full-day or multi-day workshop, depending on the depth of the content and hands-
on activities.

Workshop Goals
Introduce Dual-Core ds PIC DSCs

Provide an overview of the ds PIC dual-core architecture and its advantages in motor control
applications.

Combination starter:

The most common type, including components like circuit breakers, contactors, and overload
relays.

ii
Advanced Topics
Explore advanced motor control concepts, such as sensor less control, field-oriented control
(FOC), and position control.

Real-World Applications
Discuss real-world applications of motor control in robotics, automotive, industrial
automation, and more.

Troubleshooting and Debugging


Learn debugging techniques for motor control systems and common challenges.

Workshop
Outline Session 1
Introduction to ds PIC Dual-Core DSCs (1-2 hours)
Overview of ds PIC DSCs and their dual-core
architecture. Features and benefits of ds PIC DSCs for
motor control.
Introduction to the development environment (MPLAB X IDE).
Session 2
Motor Control Basics (1-2 hours)
Types of motors and their
characteristics. Open-loop vs. closed-
loop control.
Introduction to pulse-width modulation (PWM) and motor drive circuits.
Session 3

Motor Control Hardware (2-3 hours)- Overview of motor control hardware components (sensors,
drivers, encoders).

Evaluation and Assessment


Participants may be evaluated based on their performance in hands-on labs and project
presentations.

Assessment can also include quizzes or written assignments to test their understanding of
motor control concepts.

iii
RESULTS & DISCUSSIONS
Results
This section presents the objective outcomes of the work you have done. It includes performance
metrics, test results, and other key findings.

System Overview: Briefly describe the final system that was developed (hardware,
software, communication protocols, etc.).For example, "The system was successfully
integrated using an STM32 microcontroller with a real-time operating system (RTOS) to
control a robotic arm."

Performance Metrics: Present quantifiable results such as processing speed, power


consumption, accuracy, or data transmission rates.

Example: "The system operates at a clock speed of 100 MHz and consume 350 mW during
full a load operation."

Functional Validation: Show whether the system met its functional requirements.
Include screenshots, tables, graphs, or logs to back up the results.

Example: "The system was able to maintain a ±1% accuracy in temperature regulation over a
24-hour testing period."

Discussions:In the discussion section, interpret the results, explain their implications, and
provide critical insights.

Interpretation of Results: Explain what the results mean in the context of your project.
Did the system meet its design goals.

Example: "The system's power consumption was 10% lower than anticipated, likely due to more
efficient task scheduling in the RTOS."

Successes: Highlight the successful aspects of your embedded system development. Did the
final product meet all the intended objectives? If so, how?

Example: "The system successfully maintained real-time performance, handling multiple tasks
concurrently without noticeable lag."

Challenges Encountered: Identify any obstacles faced during the development or


testing phases. What were the sources of any issues, and how were they resolved?

iv
CONCLUSION
I hereby conclude, my internship as an embedded system developer has been a valuable and
enriching experience. Over the course of this internship, I have had the opportunity to work on
real-world projects, collaborate with a talented team, and expand my technical skills
significantly. This internship has reaffirmed my passion for embedded systems development
and has equipped me with the knowledge and skills needed to excel in this field. I am grateful
for the guidance and mentorship I have received throughout this journey.Embedded systems
are the indispensable, specialized computer systems within larger devices, powering everyday
life by enabling specific functions with high reliability, efficiency, and often, real-time
performance. As technological advancements like AI, IoT, and 5G converge with embedded
systems, they are set to become even more intelligent, secure, and interconnected, driving
innovation in areas from autonomous vehicles and smart cities to advanced healthcare and
industrial automation, ultimately shaping a more integrated and efficient future. Embedded
systems are the silent, yet fundamental, enablers of modern technology. Their ongoing
evolution, driven by innovations in AI, IoT, and connectivity, ensures they will continue to
revolutionize how we live, work, and interact with the world, leading to smarter, more efficient,
and more connected systems in the future. An embedded system is a special-purpose computer
system designed to perform one or few dedicated functions, often with real-time computing
constraints. It is usually embedded as part of a complete device including hardware and
mechanical parts. In contrast a general-purpose computer, such as a personal computer, can do
many different tasks depending on programming. Embedded system controls many of the
common devices in use today. If asked to define, it is hard to define. It is found to be embedded
within electronic devices.The key characteristic, however, is being dedicated to handle a
particular task. Since the embedded system is dedicated to specific tasks, design engineers can
optimize it to reduce the size and cost of the product and increase the reliability and
performance. Some embedded systems are mass-produced, benefiting from economies of scale.
Hence to conclude with, embedded systems has a wide future in the forthcoming technological
developments.

v
LIST OF COMPLETION CERTIFICATES

 8 Bit Microcontrollers: Architecture of the PIC16


 Introduction To MPLAB® X IDE
 Getting Started with PIC16F1xxx MCUs using MCC and State Machines
 Syntax And Structure of C - Simply C
 Advanced C Programming
 C Programming Linked List Data Structures
 C Programming Callbacks
 Advanced Embedded C Tips, Tricks, and Cautions
 Design Considerations for Your First IoT Project
 Exploring Bluetooth® Low Energy (BLE) From First Steps to Final Application
 Creating a Sensor Node for Azure IoT Central
 Motor Control Workshop using dsPIC® Digital Signal Controllers (DSC) Dual Core
Devices

vi
vii
viii
Appendix-B: Details of the Organization

Microchip University, established by Microchip Technology Inc., a leading semiconductor


company, provides specialized training and education in embedded systems, IoT, electronics
engineering, and related technologies. Through its partnership with Edu Skills, a pioneering
online platform for industry-academia collaboration, Microchip University offers virtual
internships, training programs, and courses that focus on developing industry-ready skills in
students and professionals. These programs cover various topics, including microcontrollers,
FPGA, embedded Linux, and wireless communication, providing hands-on experience and
practical expertise. Microchip University is a free online learning platform that offers technical
training on Microchip, Atmel, and Microsemi products. While I don't have access to a real-time
list of all their partners, I can provide you with some examples of companies that typically
collaborate with such platforms:

Semiconductor companies: Companies like Microchip Technology, Texas Instruments,


NXP Semiconductors, and STMicroelectronics often partner with online learning platforms to
provide training on their products and technologies.

Embedded systems and IoT companies: Companies like Qualcomm, Arm, and Intel
may collaborate with platforms like Edu Skills to offer training on embedded systems
development, IoT applications, and related technologies.

Software development companies: Companies like Microsoft, Google, and Amazon


may partner with online platforms to provide training on their development tools, programming
languages, and cloud computing services.

Educational Institutions: Universities and colleges may also collaborate with online
platforms to offer joint training programs or provide acc ess to their courses and resource.

You might also like