final[1]
final[1]
Submitted to
The Department of Electronics and Communication
Engineering
In partial fulfillment of the academic requirements of
Jawaharlal Nehru Technological University
For
The award of the degree of
Bachelor of Technology in
Electronics and Communication Engineering
By
P.Sreya 23315a0401
Affiliated to
CERTIFICATE
This is to certify that this Summer Industry Internship – I Report on “Embedded System
Developer Virtual Internship”, submitted by P.Sreya (23315a0401) in the year 2023 in
partial fulfillment of the academic requirements of Jawaharlal Nehru Technological
University for the award of the degree of Bachelor of Technology in Electronics and
Communication Engineering, is a bonafide work in industry internship that has been carried
out during II B Tech ECE II Semester Summer, will be evaluated in III B Tech ECE I
Semester , under our guidance. This report has not been submitted to any other institute or
university for the award of any degree.
External Examiner
Date:-
-
-
DECLARATION
Summer Industry Internship-I Report, titled “Embedded System Developer Virtual Internship”
It is declared to the best of our knowledge that the work reported does not form part of any dissertation
P.SREYA 23315a0401
-
ACKNOWLEDGEMENT
I would like to express my gratitude to all the people behind the screen who helped me to transform
an idea into a real application.
I would like to thank my Project coordinator Dr.Abhishek Choubey for his technical guidance,
constant encouragement and support in carrying out my project at college.
I profoundly thank Dr. S. P. V. Subba Rao , Head of the Department of Computer Science &
Engineering who has been an excellent guide and also a great source of inspiration to my work. 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. I am grateful to our principal, Dr. T. Ch. Siva
Reddy, who most ably run the institution and has had the major hand in enabling me to do my
project.
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 non-teaching, who have
extended their timely help and eased my task.
P.SREYA 23315a0401
-
Abstract
In the contemporary digital era, the need for robust and efficient authentication
systems has become more critical than ever due to the increasing prevalence of cyber threats
and the necessity for secure access control. Traditional authentication methods,
predominantly reliant on passwords, have proven insufficient in addressing these security
challenges, often resulting in vulnerabilities such as unauthorized access and data breaches.
This project aims to design, develop, and implement a comprehensive smart authentication
system that leverages multifactor authentication technologies to significantly enhance
security and user experience while ensuring regulatory compliance.
The proposed smart authentication system integrates three layers of authentication:
passcode entry, RFID card scanning, and fingerprint verification. This multi-layered
approach ensures a high level of security by combining something the user knows (passcode),
something the user has (RFID card), and something the user is (biometric fingerprint). Upon
entering the correct passcode, users scan their RFID card linked to their credentials, receive
an SMS notification on their registered phone number, and finally authenticate through
fingerprint verification to gain access.
Key objectives of this project include improving security measures to mitigate
unauthorized access, enhancing usability through streamlined and intuitive authentication
processes, and ensuring adaptability to various access scenarios, including remote and mobile
environments. The system is also designed to meet compliance requirements with industry
standards such as GDPR, HIPAA, and PCI DSS by incorporating data protection measures
and audit trails.The project’s anticipated outcomes include a significant reduction in security
breaches, improved user satisfaction and compliance, and the establishment of a scalable and
interoperable system architecture. Through comprehensive training and support resources,
the project aims to facilitate smooth deployment, usage, and troubleshooting for
administrators and end-users.
By achieving these goals, the smart authentication system will provide a robust
solution to modern access control challenges, delivering enhanced security, user
convenience, and regulatory compliance in an increasingly interconnected and digitalized
world
-
Block Diagram
-
SCHEMATIC DIAGRAM
-
RESULTS
2. You can be able to Scan RFID tag after passcode is verified to completing second Authentication.
message is sent to the registered mobile number that the card scanned is
particular or specific task is known as Embedded system Example: mobiles, smart tv,
refrigirator etc....
Categories:
Slave Embedded system does not decide on its own which means that it is not
having intervenience but in independent Embedded system it can take necessary
actions based on input from the synthesis
Real time Embedded system are the systems takes action within a specific amount of time
Example: airbags in cars, pacemakers which are used for blood pumping
Networked Embedded system are the systems which are connected via network
-
Example: routers ,gps modems
1. CPU Core:
- They feature an 8-bit RISC (Reduced Instruction Set Computer) CPU core,
which is highly optimized for low-power and fast execution of instructions.
- The CPU can execute most instructions in a single instruction cycle, making it
relatively efficient.
2. Memory:
- Program Memory (Flash): This is where the program code is stored. The size of the Flash
memory can vary depending on the specific PIC16 model.
-
- Data Memory (RAM): This is where variables and data are stored during program execution.
PIC16 devices typically have a limited amount of RAM.
3.Registers:
PIC16 micro controllers have a set of special function registers (SFRs) that control various
hardware features and are used for I/O operations. These include general-purpose registers, status
registers, and control registers.
4. Instruction Set:
- The instruction set of the PIC16 micro controller is relatively small and designed for
simplicity and efficiency.
- Instructions are mostly 8-bit wide and include arithmetic, logical, and control
operations. 5. Peripherals:
- PIC16 micro controllers offer a variety of on-chip peripherals, which can include
timers,
USARTs (Universal Synchronous/Asynchronous Receiver/Transmitter), PWM (Pulse Width
Modulation) controllers, and more.
6. I/O Ports:
- PIC16 micro controllers typically have multiple I/O ports for connecting to external devices
and sensors.
- These ports can be configured as inputs or outputs and can be used for digital I/O operations.
7. Interrupts:
- PIC16 micro controllers support both hardware and software interrupts, allowing for
responsive event handling.
-
- Interrupts are vectored, meaning there are specific memory locations for different interrupt
sources.
- These micro controllers have an internal oscillator, but they can also be connected to an
external crystal or clock source for more precise timing.
- They provide reset and power-on reset circuitry to ensure a controlled start-up.
- PIC16 micro controllers are known for their low power consumption and offer various
- MPLAB X IDE is primarily used for developing software for Microchip's micro
controllers and digital signal controllers, including PIC micro controllers, dsPIC digital
signal controllers, and more.
2. Cross-Platform Compatibility:
4. 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.
5. Project Management:
- Developers can create and manage projects within MPLAB X IDE. Projects help organize
code files, configuration settings, and build options.
6. 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.
- 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 incircuit debuggers
and programmers. You can set breakpoints, view register values, and step through your code
during debugging sessions.
8. 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
MPLAB 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 system.
1.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 start ed:
Define your application's behavior using state machines. State machines are a powerful
way to model complex behavior 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.
2. 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.
- 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 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.
Once you're satisfied with your code and it's free of errors, use a suitable programmer
(e.g., PICkit) to program the PIC16F1xxx MCU on your development board.
6. Test and Iteration: Test your application on the hardware, and iterate as
necessary to refine and expand its functionality
-
CHAPTER 2
2.1 Syntax and Structures of C
The 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:
1. Comments:
- Single-line comments start with `//`, and multi-line comments are enclosed in
`/* */`.
Example:
/*
*/
2. Preprocessor Directives:
- Preprocessor directives begin with a `#` symbol and are used to include header
files,
- 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.
4. 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.
Example:
int age = 25; // Declare and initialize an integer variable float temperature; // Declare a floating-
point variable 5. 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.
Example: int x
= 42; float pi =
= 'A';
};
-
9. Operators:
- C includes various operators for performing operations on variables and values, including
arithmetic, comparison, logical, and assignment operators.
- C provides control structures like `if`, `else`, `while`, `for`, and `switch` for decisionmaking
and looping. Example: if (x > 10) { // Code to execute if x is greater than 10 } else {
11. Functions:
{ return a + b;
- Arrays are used to store collections of data of the same data type.
- Pointers are variables that store memory addresses. They are used
for dynamic memory allocation and accessing data indirectly.
Example: int value = 42; int *ptr = &value; // Declare a pointer and assign
the address of 'value' printf("Value: %d\n", *ptr); // Dereference the pointer
to access the value
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:
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
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 *newNode = (struct Node *)malloc(sizeof(struct Node)); newNode->data = 42;
newNode->next = head; head = newNode;
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 to
bypass the node you want to remove, then free the memory of the deleted node.
Example:
// Assuming 'prevNode' is the node before the one you want to delete struct
Node *temp = prevNode->next; prevNode->next = temp->next; free(temp);
1. Dynamic Size: Linked lists can grow or shrink dynamically, making them suitable for
situations where the size is not known in advance.
2. Memory Efficiency: Linked lists can be more memory-efficient than arrays because they
allocate memory for each element only when needed.
3. 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.
1. Random Access: Unlike arrays, linked lists don't support direct random access to
-
2.3 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.
1. 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:
(*CallbackFunction)(int);
// Define a function that takes a callback function as an argument void doSomething(int
value, CallbackFunction callback) { // Perform some operation callback(value); // Call
the callback function
// Define a callback function void myCallback(int value) { printf("Callback invoked with value:
%d\n", value);
2. elements. To access an element, you need to traverse the list from the beginning.
3. Memory Overhead: Linked lists require extra memory for the next pointer, which can
lead to higher memory consumption compared to arrays.
-
} int main() { doSomething(42, myCallback); // Pass the callback function as an argument
return 0;
}
In this example, `doSomething` 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.
- 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:
- Callbacks are commonly used in C library functions, such as sorting algorithms. For
example, the `qsort` function in the C standard library allows you to provide a comparison
callback to customize the sorting order. Example:
#include
<stdio.h> #include
<stdlib.h>
-
// Comparison callback function for sorting integers in ascending order
int compareAscending(const void *a, const void *b) { return (*(int *)a
- *(int *)b);
} return 0; }
In this example, `qsort` is a library function that sorts an array of integers. It accepts a callback
function (`compareAscending`) to determine 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.
2. Data Structures:
- Implementing and working with complex data structures like linked lists, trees, graphs,
and hash tables. This involves memory management and pointer manipulation.
4. File Handling:
- Advanced file I/O operations, binary file handling, and handling complex file formats.
Understanding fseek, ftell, and how to read and write binary data is important.
6. Advanced Data Types: Working with advanced data types such as unions and bitfields
to optimize memory usage and data representation.
8. Error Handling:
- Creating robust error-handling mechanisms using error codes, errno, and custom
error reporting.
9. Preprocessor Directives:
- Writing secure code to prevent common vulnerabilities like buffer overflows and
injection attacks.
- Working with sockets for network programming and using select/poll for asynchronous
I/O operations.
- Writing low-level code for hardware interaction, embedded systems, or operating system
development.
3. Interrupt Handling: Understand interrupt priorities and use efficient interrupt handlers.
Minimize the time spent in interrupts to avoid disrupting the system's realtime behavior.
4. Clock Management: Be aware of clock sources and settings. Accurate timing is critical in
embedded systems. Pay attention to clock initialization and configuration.
6. Watchdog Timers: Use watchdog timers to recover from system crashes or lock- ups.
Ensure that your code periodically resets the watchdog timer.
7. Optimize Code: Write efficient code. Profile your code to identify bottlenecks and
optimize critical sections. Employ compiler optimization flags.
8. Modular Design: Use modular and structured code design. Divide your code into
manageable functions and modules. Avoid long, complex functions.
9. Testing and Debugging: Invest in debugging tools like in-circuit emulators or debuggers.
Implement logging and diagnostics to aid in debugging.
10. RTOS (Real-Time Operating System): If using an RTOS, understand its features and
limitations. Proper task scheduling and synchronization are crucial.
-
CHAPTER-3
3.1 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:
- 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.
- 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.
3. Hardware Selection:
- 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.
5. 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.
6. Security:
-
- Prioritize security in your design. Implement encryption, authentication, and access control
mechanisms to protect data and devices from unauthorized access and attacks.
- Choose the appropriate sensors to collect relevant data for your project. Consider factors
like accuracy, precision, and calibration.
- 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.
9. 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.
10. Data Storage:
-Plan for data storage requirements. Decide whether you will store data locally on the
-Consider the scalability of your IoT solution. Can it handle a growing number of devices
-Be aware of regulatory requirements and certifications, especially if your IoT device is
-Plan for remote firmware updates to fix bugs, add features, and enhance security.
15. Data Privacy and Compliance: Address data privacy concerns and comply with data
protection regulations, such as GDPR or HIPAA, if applicable.
- Select the development platform and tools that suit your project. Popular options
include Nordic Semiconductor's nRF series, Texas Instruments' CC26xx/CC13xx series,
and the Arduino platform with BLE shields.
- 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.
-
4. Set Up Development Environment:
- Install the necessary software development kits (SDKs), compilers, and debugging
tools provided by your chosen hardware platform. Familiarize yourself with the IDE and
development workflow.
5. 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.
6. 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.
7. 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.
- Test your BLE application thoroughly. Use debugging tools and real devices for
testing.
Address any bugs or issues that arise during the testing phase.
- BLE is known for its low power consumption, but you can optimize further by using lowpower
modes, optimizing advertising intervals, and minimizing data transfers.
-Conduct real-world testing in the intended environment to evaluate the performance and
13. Deployment:
14. Maintenance:
-Continue to support and maintain your BLE application by addressing bug fixes, updates,
Building a BLE application from start to finish involves a combination of hardware and
software development skills, along with a deep understanding of BLE protocols and best
practices. It's also beneficial to engage with the BLE developer community and access
online resources and documentation provided by your hardware platform and the
Bluetooth Special Interest Group (SIG).3.2
-
14.1 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:
-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.
2. Select Hardware:
-Install the necessary software tools and libraries for your chosen hardware platform.
5. Interface Sensors:
Connect and interface your sensors with the microcontroller. Read data from the sensors
using appropriate libraries or code.
6. 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
chosen method.
-
7. Azure IoT Central Setup: -Sign in to the Azure IoT Central portal
(https://apps.azureiotcentral.com/).
-Define a device template that describes the capabilities and properties of your sensor node.
8. Device Provisioning:
-Implement device provisioning on your sensor node. Azure IoT Central supports various
9. 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.
-Ensure that your firmware includes secure communication practices, such as using TLS/SSL
11. 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 troubleshoot
any issues.
-Register your sensor node with Azure IoT Central by providing device-specific information
and credentials.
-Define dashboards and visualizations in Azure IoT Central to display the data sent by your
sensor node.
Implement remote monitoring and management capabilities for your sensor node using
Azure IoT Central's features.
16. Deployment:
-Deploy your sensor node in the target environment. Ensure it has a reliable power source
17. Scalability:
-Consider how to scale your solution if you need to deploy multiple sensor nodes.
18. Documentation:
-Create documentation for your project, including hardware schematics, firmware source
-Ensure that your solution complies with regulatory standards and follows security best
practices.
20. Continuous Improvement: Plan for ongoing maintenance, updates, and improvements
based on user feedback and changing requirements.
Creating a sensor node for Azure IoT Central involves both hardware and software
development, along with integration with the Azure IoT platform. Be prepared to iterate
on your design and implementation to achieve a reliable and scalable IoT solution.
-
Workshop Goals:
2. Motor Control Fundamentals: Cover the basics of motor control theory, including types
of motors (DC, BLDC, AC), control techniques, and hardware requirements.
3. Hands-On Lab: Practical exercises with dsPIC DSC development boards, motor control
hardware, and software tools.
4. Advanced Topics: Explore advanced motor control concepts, such as sensorless control,
field-oriented control (FOC), and position control.
6. Troubleshooting and Debugging: Learn debugging techniques for motor control systems
and common challenges.
Workshop Outline:
- Hands-on lab: Assembling motor control hardware with dsPIC DSC development boards.
- Introduction to motor control software development using the Motor Control Application
Framework (MCAF).
- Hands-on lab: Writing code to control a motor using PWM and sensor feedback.
Session 8: Project Showcase (1-2 hours) - Participants present their motor control
projects. - Discussion and feedback.
FUTURESCOPE
The future scope for an embedded system developer is promising and diverse. As technology
continues to advance, embedded systems are becoming increasingly integral to various industries.
Here are some key points regarding the future scope of an embedded system developer:
1. IoT (Internet of Things): With the proliferation of IoT devices, embedded systems will continue
to be in high demand. Developers will work on creating smart, connected devices for applications in
healthcare, smart homes, industrial automation, and more.
2. Automotive Industry: Embedded systems play a crucial role in the automotive sector, powering
advanced driver-assistance systems (ADAS), infotainment systems, and autonomous vehicles. Future
opportunities will abound in this rapidly evolving field.
3. Medical Devices: The healthcare industry relies heavily on embedded systems for medical
devices, patient monitoring, and diagnostics. Developers will continue to innovate in this area,
contributing to improved healthcare solutions.
4. Aerospace and Defense: Embedded systems are critical in aerospace and defense for avionics,
missile systems, and communication equipment. As technology advances, there will be ongoing
development and maintenance of these systems.
5. Robotics: The robotics industry is expanding rapidly, and embedded systems are at its core.
Developers will have opportunities to work on robotics for various applications, from manufacturing to
healthcare and beyond.
-
REFERENCES
1. Academic Journals: Websites like IEEE Xplore, ACM Digital Library, and ScienceDirect host
academic journals and papers related to embedded systems. You can search for specific papers or
journals that are relevant to your research or interests.
2. Online Courses and Tutorials: Websites like Coursera, edX, Udemy, and YouTube offer online
courses and tutorials on embedded systems development. These can serve as educational references.
3. GitHub Repositories: Many developers and organizations share open-source embedded systems
projects on GitHub. You can explore repositories, access source code, and learn from real-world
examples.