0% found this document useful (0 votes)
44 views22 pages

Report Major Project R

Uploaded by

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

Report Major Project R

Uploaded by

Rishabh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 22

1|Page

Report Of Internship

Digital thermometer using STM32

(8th Semester)

Submitted By:-
Name:- Rishabh Kumar Singh
Regd No:- 20010733

Under The Supervision of


BICARD
(Embedded System Design Training Institute)

Department of Electrical Engineering


C. V. Raman Global University, Odisha, Bhubaneswar, India

Department of Electrical Engineering


2|Page

ABSTRACT

This project presents the design and implementation of an embedded system for
real-time temperature monitoring using an STM32 microcontroller. The system
interfaces a temperature sensor with the microcontroller via the I2C bus,
enabling precise and efficient temperature data acquisition. The microcontroller
processes the raw sensor data, converts it into a human-readable format, and
transmits this data over UART for external logging or monitoring. Additionally,
the real-time temperature readings are displayed on an LCD screen, providing
an immediate visual representation. This integration highlights the capability of
the STM32 microcontroller to manage multiple communication protocols and
output interfaces concurrently, making it a robust solution for temperature
monitoring applications.

The versatility of this project extends its applicability to various fields,


including environmental monitoring, industrial control systems, and smart home
applications, where accurate and real-time temperature data is essential. By
leveraging I2C for sensor communication, UART for data transmission, and an
LCD for display, this project provides a comprehensive example of embedded
system design and peripheral interfacing. It serves as an educational tool for
students and engineers, demonstrating the practical use of microcontroller
peripherals and the importance of efficient data handling in embedded systems.
The project also underscores the STM32 microcontroller’s ability to perform
complex tasks, making it a valuable component in modern electronic designs.

Department of Electrical Engineering


3|Page

C. V. Raman Global University, Odisha,


Bhubaneswar 2022-2023

CERTIFICATE FROM SUPERVISOR

This is to certify that the Internship Project report entitled Digital thermometer
using STM32 submitted in partial fulfilment of the requirement for the award of
Bachelor of Technology in EEE of the C. V. Raman Global University, Odisha
during the year 2020-2024, is a faithful record of the bonafide work carried out
by Rishabh Kumar Singh (20010733) under my guidance and supervision.

BICARD
Embedded System Design Training Institue,Pune

Department of Electrical Engineering


4|Page

ACKNOWLEDGEMENT

It is a great privilege for us to express our profound gratitude to our


respected institute BICARD and their trainers for his constant
guidance, valuable' suggestions, supervision and inspiration
throughout the work without which it would have been difficult to
complete the work within the scheduled time.
I am also indebted to the Head of the Department, of Electrical
Engineering. C.V. Raman Global University for permitting us to
pursue the training. I would like to take this opportunity to thank all
the respected teachers of this Department for being a perennial source
of inspiration and showing the right path at a time of necessity.

Thanking you
Rishabh Kumar Singh(20010733)

Department of Electrical Engineering


5|Page

INDEX

S.N Content Page no.


o
1. Introduction to STM32 6-7

2. STM32 ARCHITECTURE 8-11


3. Timers 11-13
4. STM32 UART 14-15
5. I2C 16-17
6. Methodology Of Project 17-19
7. Project Flow 19-20
8. Project Simulation and Result 20
9. Project Code 21
10. Conclusion 22
11. References 23

Department of Electrical Engineering


6|Page

INTRODUCTION TO STM32

The STM32 family of micro-controllers, based upon the ARM CortexM3 core,
provides a foundation for building a vast range of embedded systems from
simple battery-powered dongles to complex real-time systems such as
helicopter autopilots. This component family includes 0es dozens of distinct
configurations providing wide-ranging choices in memory sizes, available
peripherals, performance, and power. The components are sufficiently
inexpensive in small quantities – a few dollars for the least complex devices – to
justify their use for most low-volume applications. Indeed, the low-end “Value
Line” components are comparable in cost to the ATmega parts which are used
for the popular Arduino development boards yet offer significantly greater
performance and more powerful peripherals. Furthermore, the peripherals used
are shared across many family members (for example, the USART modules are
common to all STM32 F1 components) and are supported by a single firmware
library. Thus, learning how to program one member of the STM32 F1 family
enables programming them all.
Unfortunately, power and flexibility are achieved at a cost – software
development for the STM32 family can be extremely challenging for the
uninitiated with a vast array of documentation and software libraries to wade
through. For example, RM0041, the reference manual for large value-line
STM32 F1 devices, is 675 pages and does not even cover the Cortex-M3
processor core! Fortunately, it is not necessary to read this book to get started
with developing software for the STM32, although it is an important reference.
In addition, a beginner is faced with many tool-chain choices.
In contrast, the Arduino platform offers a simple application library and a
single tool chain which is accessible to relatively inexperienced programmers.
For many simple systems, this offers a quick path to prototype. However,
simplicity has its own costs – the Arduino software platform isn’t well suited to
managing concurrent activities in a complex real-time system and, for software
interacting with external devices, is dependent upon libraries developed outside
the Arduino programming model using tools and techniques similar to those
required for the STM32.
Furthermore, the Arduino platform doesn’t provide debugging capability which
severely limits the development of more complex systems. Again, debugging
requires breaking outside the confines of the Arduino platform. Finally, the
Arduino environment does not support a real-time operating system (RTOS),
which is essential when building more complex embedded systems. For readers
with prior ’C’ programming experience, the STM32 family is a far better

Department of Electrical Engineering


7|Page

platform than the Arduino upon which to build micro-controller-powered


systems if the barriers to entry can be reduced.

The development software used in this book is all open-source. Our primary
resource is the GNU software development toolchain including gcc, gas,
objcopy, objdump, and the debugger gdb. I do not use an IDE such as Eclipse. I
find that most IDEs have a high startup cost although they can ultimately
streamline the development process for large systems. IDEs also obscure the
compilation process in a manner that makes it difficult to determine what is
really happening, when my objective here is to lay bare the development
process. While the reader is welcome to use an IDE, I offer no guidance on
setting one up. One should not assume that open-source means lower quality –
many commercial tool chains for embedded systems utilize GNU software and
a significant fraction of commercial software development is accomplished with
GNU software.

Finally, virtually every


embedded processor is
supported by the GNU
software toolchain. Learning
to use this toolchain on one
processor literally opens the
doors to embedded software
development. Firmware
development differs
significantly from application development because it is often exceedingly
difficult to determine what is actually happening in code that interacts with a
hardware peripheral simply through examining program state. Furthermore, in
many situations, it is impractical to halt program execution (e.g., through a
debugger) because doing so would invalidate real-time behaviour. For example,
in developing code to interface with a Wii Num-chuk (one of the projects
described in this book) I had difficulty tracking down a timing bug that related
to how fast data was being “clocked” across the hardware interface.

STM32 ARCHITECTURE
Department of Electrical Engineering
8|Page

he STM32 family of microcontrollers, developed by STMicroelectronics, is


based on the ARM Cortex-M processor cores and is widely used in embedded
systems due to its flexibility, performance, and extensive peripheral set. Here's a
detailed explanation of the architecture of STM32 microcontrollers:
1.Core and Instruction Set:-
The STM32 microcontrollers are built around ARM Cortex-M cores, which
include:
Cortex-M0/M0+: Basic, low-power cores with an ARMv6-M instruction set,
suitable for simple applications.
Cortex-M3: A mid-range core with ARMv7-M architecture, balancing
performance and power consumption.
Cortex-M4: Enhances the Cortex-M3 core with DSP (Digital Signal Processing)
instructions and an optional Floating Point Unit (FPU).
Cortex-M7: High-
performance core with a
superscalar architecture,
advanced DSP capabilities,
and FPU, supporting the
ARMv7E-M instruction set.
2. Memory Architecture
STM32 microcontrollers
have a Harvard architecture,
separating program and data
memory, which allows
simultaneous access to instructions and data, thus improving performance.
Flash Memory: Non-volatile memory for storing the firmware. Sizes range from
tens of kilobytes to several megabytes.
SRAM: Volatile memory for data storage during program execution. It is
generally divided into different regions (e.g., SRAM1, SRAM2) with varying
sizes.
EEPROM/Emulated EEPROM: For storing non-volatile data that needs to be
written frequently.

Department of Electrical Engineering


9|Page

3. Peripherals and Connectivity


STM32 microcontrollers include a wide range of peripherals:
Timers and Counters: General-purpose timers, advanced control timers, and
watchdog timers.
Communication Interfaces: Multiple interfaces such as USART (Universal
Synchronous/Asynchronous Receiver/Transmitter), SPI (Serial Peripheral
Interface), I2C (Inter-Integrated Circuit), CAN (Controller Area Network),
USB, and Ethernet.
Analog Peripherals: ADC (Analog-to-Digital Converters), DAC (Digital-to-
Analog Converters), and comparators.
Digital Interfaces: GPIO (General Purpose Input/Output) pins, PWM (Pulse
Width Modulation) outputs, and more.
4. Clock System
The STM32 clock system is highly flexible and configurable, featuring:
Internal Oscillators: High-speed internal (HSI) and low-speed internal (LSI)
oscillators.
External Oscillators: High-speed external (HSE) and low-speed external (LSE)
oscillators.
PLL (Phase-Locked Loop): Used to generate higher frequencies from a lower
frequency input, allowing fine-grained control over system clock speeds.
5. Power Management
STM32 microcontrollers offer several power-saving modes to optimize energy
consumption:
Run Mode: Standard operation mode.
Sleep Mode: The core stops, but peripherals can continue operating.
Stop Mode: The core and most peripherals are stopped, with an option to retain
SRAM contents.
Standby Mode: Minimal power consumption, with only the RTC (Real-Time
Clock) running, and the contents of SRAM are lost.
6. Interrupt System
The Nested Vectored Interrupt Controller (NVIC) manages interrupts with
features like:
Priority Levels: Allows nesting of interrupts based on priority.
Fast Interrupt Handling: Low-latency interrupt entry and exit.

Department of Electrical Engineering


10 | P a g e

Vectored Interrupts: Directly jumps to the interrupt service routine (ISR)


address.
7. Debugging and Programming Interfaces
STM32 microcontrollers support various debugging and programming
interfaces:
JTAG: Standard interface for debugging.
SWD (Serial Wire Debug): A two-wire protocol offering a subset of JTAG
functionality for debugging.
Serial Wire Viewer (SWV): Real-time trace and debug information via the
SWD interface.
Bootloaders: Built-in bootloaders allowing programming via USART, USB,
CAN, etc.
8. Development Tools
Development for STM32 microcontrollers can be done using:
Integrated Development Environments (IDEs): Such as STM32CubeIDE, Keil
MDK, IAR Embedded Workbench.
HAL and LL Libraries: STM32Cube HAL (Hardware Abstraction Layer) and
LL (Low-Layer) libraries provided by STMicroelectronics facilitate easy
development.
Third-Party Tools: Various third-party tools and libraries support STM32
development, including FreeRTOS, mbed, etc.
The STM32 microcontrollers' architecture combines powerful ARM Cortex-M
cores with a rich set of peripherals, flexible memory configurations, and
advanced power management features. This makes them suitable for a wide
range of applications, from simple IoT devices to complex industrial control
systems. The extensive support for development tools and libraries further
enhances their versatility and ease of use in embedded system design.

TIMERS
STM32 microcontrollers feature a rich set of timers, each designed to support
different functions required in embedded applications. These timers can handle
time-related tasks like generating precise time delays, measuring time intervals,
PWM signal generation, and more. Here is a detailed explanation of the timers
in STM32 microcontrollers.
1. Types of Timers

Department of Electrical Engineering


11 | P a g e

STM32 microcontrollers include various types of timers, each with specific


capabilities and features:
General-Purpose Timers:-General-purpose timers are versatile and can be
used for multiple functions, including time base generation, input capture,
output compare, PWM generation, and one-pulse mode.
TIM2 to TIM5: 32-bit timers (TIM2 and TIM5) and 16-bit timers (TIM3 and
TIM4) in STM32F1 series, for example. They offer multiple channels for input
capture, output comparison, PWM, and one-pulse mode.
TIM1 and TIM8: Advanced-control timers, typically used for motor control and
similar applications. They are 16-bit timers with advanced features like
complementary outputs and dead-time generation.
Basic Timers:-Basic timers are primarily used as simple time bases and do not
have input capture/output compare functionalities. TIM6 and TIM7: Basic 16-
bit timers, often used for DAC triggering and as a time base for general purpose.
Advanced-Control Timers:-Advanced-control timers have additional features
compared to general-purpose timers and are used in applications requiring
complex waveforms like motor control.
TIM1 and TIM8: These are 16-bit timers with features such as dead-time
insertion, break input, and complementary PWM outputs.
Low-Power Timers
Designed for applications that require low power consumption.
LPTIM1 and LPTIM2: These timers can continue to run in low-power modes
and are suitable for low-power time base applications.
High-Resolution Timers
These timers offer finer granularity and are used in applications needing precise
control over timing, such as digital power conversion.
HRTIM: High-resolution timers provide enhanced control with very fine
resolution, suitable for applications like LED dimming and motor control.
2. Timer Features
Timers in STM32 microcontrollers come with a variety of features that enable
their use in different applications:
Time Base Generation:-Timers can generate a periodic interrupt for creating
time bases. The basic configuration involves setting the prescaler and auto-
reload register to define the timer's counting period.

Department of Electrical Engineering


12 | P a g e

Input Capture-This mode captures the value of the counter when an external
event occurs on a timer input pin. It is useful for measuring the frequency or
pulse width of an external signal.
Output Compare:-In this mode, the timer compares the counter value to a
predefined value and can generate an output signal when they match. It is used
for generating precise time delays.
PWM (Pulse Width Modulation):-PWM mode generates a periodic signal with a
variable duty cycle. This is widely used for controlling motors, LEDs, and other
actuators.

One-Pulse Mode:-The timer can generate a single pulse of a specified width in


response to an external trigger event. It is useful for applications requiring
precise pulse generation.
Encoder Interface:-Some timers can operate as quadrature encoders, useful for
measuring the position and speed of rotary encoders.
Synchronization and Triggering:-Timers can be synchronized with each other or
triggered by external signals, allowing complex timing sequences and
coordinated operations across multiple timers.
3. Timer Configuration
Timers in STM32 microcontrollers are highly configurable. Here’s an example
of configuring a general-purpose timer for PWM generation:
Clock Configuration:-Enable the timer clock in the RCC (Reset and Clock
Control) peripheral.

Timer Base Configuration:-Set the prescaler and auto-reload register to


configure the timer frequency.

4 . Advanced Features
Dead-Time Insertion: Used in motor control applications to prevent short
circuits by inserting a delay between complementary outputs.

Department of Electrical Engineering


13 | P a g e

Break Input: Used to immediately disable PWM outputs in case of a fault


condition.
Complementary Outputs: Generate inverted PWM signals, useful in half-bridge
or full-bridge driver circuits.

5.. Low-Power Features:-Low-Power Timers: LPTIM1 and LPTIM2 can


operate in low-power modes and continue counting, allowing for low-power
timekeeping
STM32 UART
Universal Asynchronous Receiver/Transmitter (UART) is a key feature in
STM32 microcontrollers for serial communication. UARTs in STM32 MCUs
enable data exchange between the microcontroller and other devices like PCs,
sensors, and other microcontrollers. Here’s a detailed explanation of UART
functionality in STM32:

1. Basic Concept of UART


UART is a hardware communication protocol that uses asynchronous serial
communication with configurable data format and transmission speed. It
typically involves:
TX (Transmit): Sends data bits.
RX (Receive): Receives data bits.
Baud Rate: Speed of data transmission in bits per second (bps).
2. Features of STM32 UART
STM32 microcontrollers offer UART and USART (Universal
Synchronous/Asynchronous Receiver/Transmitter) peripherals with the
following features:

Department of Electrical Engineering


14 | P a g e

Asynchronous Mode: Standard UART communication.


Synchronous Mode: Supports clocked data transfer.
Multi-Processor Communication: Allows addressing specific devices in a
network.
LIN (Local Interconnect Network) Mode: For automotive communication.
IrDA (Infrared Data Association) Mode: Wireless communication.
Smartcard Mode: For interfacing with smartcards.
Modem Control: Support for hardware flow control (RTS/CTS).
3. UART Configuration
Configuring UART involves several steps, including setting the baud rate, data
format, enabling the UART, and configuring interrupts or DMA if needed.

I2C

Department of Electrical Engineering


15 | P a g e

I2C is a synchronous, multi-master, multi-slave, packet-switched, single-ended,


serial communication bus. It is widely used for connecting low-speed
peripherals to processors and microcontrollers. I2C uses two lines:
SCL (Serial Clock Line): This is the clock signal, generated by the master
device. SDA (Serial Data Line): This is the data signal, used for sending and
receiving data.
Key Features of I2C
Multi-master capability: Multiple master devices can control the bus.
Addressing: Each slave device on the bus has a unique address.
Speed: Standard mode (100 kbps), Fast mode (400 kbps), Fast mode plus (1
Mbps), and High-speed mode (3.4 Mbps).
I2C on STM32
STM32 microcontrollers typically have built-in I2C peripherals. Here's a step-
by-step guide to setting up and using I2C on STM32 microcontrollers using
STM32CubeMX and HAL (Hardware Abstraction Layer) library.

Step 1: Initialize I2C with STM32CubeMX


Open STM32CubeMX and create a new project:
Select your STM32 microcontroller.
Configure the I2C peripheral:
Enable the I2C peripheral (e.g., I2C1).
Configure the pins for I2C (SCL and SDA).
Set the mode (master/slave), clock speed, and other parameters.
Department of Electrical Engineering
16 | P a g e

Generate the code:


Select the toolchain/IDE (e.g., STM32CubeIDE, Keil, etc.).
Click "Generate Code" to create the project with the I2C setup.

METHODOLOGY OF PROJECT

LM35
SENSOR

I2C

STM MICROCONTROLLER

UART

LCD
This project interfaces a temperature sensor with an STM32 microcontroller via
the I2C bus, transmits real-time temperature data over UART, and displays the
temperature readings on an LCD screen. The block diagram outlines the
essential components and their interactions.
Temperature Sensor (I2C Interface): Measures the ambient temperature.
Interface: I2C bus.
Operation: The sensor periodically sends temperature data to the STM32
microcontroller through the I2C bus. The sensor operates as a slave device on
the I2C bus, and the microcontroller operates as the master, requesting data as
needed.
STM32 Microcontroller

Department of Electrical Engineering


17 | P a g e

Core Functions:
I2C Communication: Receives temperature data from the sensor.
Data Processing: Interprets the raw data from the sensor.
UART Communication: Transmits the processed temperature data.
LCD Control: Sends the temperature data to the LCD for display.
Modules Used:
I2C Peripheral: To communicate with the temperature sensor.
UART Peripheral: To send data to a computer or other devices.
GPIO/Display Driver: To interface with the LCD screen.
Operation: The microcontroller acts as the central unit, managing data flow
from the sensor to the display and the UART interface.
UART Communication
Function: Transmits temperature data from the STM32 microcontroller to an
external device such as a PC or another microcontroller.
Operation: The STM32 sends the temperature data over UART. This could be
used for logging, debugging, or further processing on a PC.
Components:
UART Peripheral on STM32: Configured for data transmission.
PC/Receiver: Displays or logs the received data.
LCD Display:-Function: Displays the real-time temperature data.
Interface: Connected to the STM32 via GPIO or a specific display interface
(e.g., SPI, I2C, or parallel).
Operation: The microcontroller sends temperature data to the LCD, which
updates its display to show the current temperature.
PROJECT OVERFLOW
1. Initialization
STM32 Initialization: Set up the I2C, UART, and LCD peripherals.
Sensor Initialization: Configure the temperature sensor, if needed, via I2C
commands.
2. Data Acquisition
I2C Communication: The STM32 microcontroller periodically requests
temperature data from the sensor using the I2C protocol.

Department of Electrical Engineering


18 | P a g e

Data Reception: The sensor sends the temperature data back to the
STM32.
3. Data Processing
Raw Data Handling: The STM32 processes the raw data received from
the sensor, converting it into a readable temperature format (e.g., Celsius
or Fahrenheit).
4. Data Transmission
UART Communication: The STM32 sends the processed temperature
data to an external device via UART for logging or monitoring.
Data Packet: The data is typically sent in a formatted packet, which might
include a header, the temperature data, and a checksum.

5. Display Update:-LCD Interface: The STM32 sends the temperature data


to the LCD.
LCD Update: The LCD screen updates to display the current temperature.

PROJECT SIMULATION

Department of Electrical Engineering


19 | P a g e

Fig:- Simulation of Digital Thermometer

PROJECT CODE

Department of Electrical Engineering


20 | P a g e

Department of Electrical Engineering


21 | P a g e

CONCLUSION
Engaging in this project provided me with hands-on experience with STM32
microcontrollers, as well as practical knowledge of I2C and UART
communication protocols and LCD interfacing. This immersive experience
allowed me to work directly with these technologies, enhancing my technical
proficiency and understanding of how they operate in real-world applications.

Additionally, I significantly enhanced my skills in embedded system design and


real-time data processing. This deepened my comprehension of practical
applications in electronics and microcontroller programming. The project
pushed me to apply theoretical knowledge to actual scenarios, resulting in a
more robust grasp of the intricacies involved in these fields.

Moreover, this experience sharpened my problem-solving abilities as I


navigated challenges related to sensor calibration and communication
reliability. It provided a solid foundation for integrating hardware and software
components, enabling me to create functional and efficient electronic devices.
This blend of hands-on practice and problem-solving has equipped me with the
skills necessary to tackle complex issues in electronics and microcontroller
programming confidently.

Department of Electrical Engineering


22 | P a g e

REFERNCES

 B. Deng, Z. Bo, Y. Jia, Z. Gao and Z. Liu, "Research on STM32


Development Board Based on ARM Cortex-M3," 2020 IEEE 2nd
International Conference on Civil Aviation Safety and Information
Technology (ICCASIT, Weihai, China, 2020, pp. 266-272, doi:
10.1109/ICCASIT50869.2020.9368860. keywords: {Time-frequency
analysis;Semiconductor device measurement;Power demand;Pulse width
modulation;Programming;Safety;Registers;STM32;ARM;Cortex-
M3;PWM TIMER}

 Jiao Jiangli and Li Fenglian, "Design and implementation of STM32


development board based on ARM Cortex-M3 [J]", China New
Communications, vol. 15, no. 09, pp. 94-96, 2013.

 G. H. Rosa and J. P. Papa, "Soft-Tempering Deep Belief Networks


Parameters Through Genetic Programming", Journal of Artificial
Intelligence and Systems, vol. 1, pp. 43-59, 2019.

Department of Electrical Engineering

You might also like