0% found this document useful (0 votes)
2 views

Final Project Report

The document is a capstone project report titled 'College Time Table and Notice Board Display with Auto SMS to Faculty,' submitted by students of Audisankara College of Engineering & Technology for their Bachelor of Technology in Electronics and Communication Engineering. The project aims to automate the display of college timetables and notices on digital screens, along with an SMS notification system for faculty, enhancing communication and efficiency in academic operations. The report includes sections on embedded systems, project description, hardware and software details, and concludes with future scope and references.
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)
2 views

Final Project Report

The document is a capstone project report titled 'College Time Table and Notice Board Display with Auto SMS to Faculty,' submitted by students of Audisankara College of Engineering & Technology for their Bachelor of Technology in Electronics and Communication Engineering. The project aims to automate the display of college timetables and notices on digital screens, along with an SMS notification system for faculty, enhancing communication and efficiency in academic operations. The report includes sections on embedded systems, project description, hardware and software details, and concludes with future scope and references.
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
You are on page 1/ 93

AUDISANKARA COLLEGE OF ENGINEERING & TECHNOLOGY

(AUTONOMOUS)
A Capstone Project Report on

COLLEGE TIME TABLE AND NOTICE BOARD DISPLAY WITH AUTO SMS TO
FACULTY

Submitted in a partial fulfillment for the award of the degree

BACHELOR OF TECHNOLOGY

IN

ELECTRONICS AND COMMUNICATION ENGINEERING


Submitted by,
K. VENKATA RUCHITHA (21G21A0475)
P. PAVITHRA (21G21A04D4)
M. SANTHOSH KUMAR (21G21A04A3)

K. GAGAN CHANDRA (21G21A0494)

Under the esteemed Guidance of

Mr. S. SURENDRA BABU M.Tech.,

Associate Professor, Dept. of ECE

DEPARTMENT OF ELECTRONICS AND COMMUNICATION ENGINEERING

AUDISANKARA COLLEGE OF ENGINEERING & TECHNOLOGY(A)


Accredited by NAAC with ‘A+’ Grade | Accredited by NBA Approved by AICTE | Affiliated to JNTUA

NH16 Bypass Road, Gudur – 524101, Tirupati (DT.), Andhra Pradesh

www.audisankara.ac.in
2025
AUDISANKARA COLLEGE OF ENGINEERING & TECHNOLOGY
(AUTONOMOUS)
Accredited by NAAC with ‘A+’ Grade | Accredited by NBA Approved by AICTE | Affiliated to JNTUA

NH5 Bypass Road, Gudur – 524101, Tirupati (DT.), Andhra Pradesh

DEPARTMENT OF ELECTRONICS AND COMMUNICATION ENGINEERING

CERTIFICATE

This is to certify that the Capstone project report on entitled “COLLEGE TIME
TABLE AND NOTICE BOARD DISPLAY WITH AUTO SMS TO FACULTY” is the
Bonafide work done by the student K. VENKATA RUCHITHA (21G21A0475), P.
PAVITHRA (21G21A04D4), M. SANTHOSH KUMAR (21G21A04A3), K. GAGAN
CHANDRA (21G21A0494), in partial fulfillment of the requirements for the award of
the degree of Bachelor of Technology in Electronics and Communication Engineering,
from Jawaharlal Nehru Technological University Anantapur, Anantapuramu, during
the year 2024-2025.

Project Guide Head of the Department


Mr. S. Surendra Babu M. Tech., Mr. J. Amarendra M.Tech.,(Ph.D).,
Associate Professor, Associate Professor,
Department of ECE, Department of ECE,
ASCET, GUDUR - TIRUPATI(DT). ASCET, GUDUR - TIRUPATI(DT).

Submitted for the viva-voce Examination held on:

Internal Examiner External Examiner


AUDISANKARA COLLEGE OF ENGINEERING & TECHNOLOGY
(AUTONOMOUS)
Accredited by NAAC with ‘A+’ Grade | Accredited by NBA Approved by AICTE | Affiliated to JNTUA

NH5 Bypass Road, Gudur – 524101, Tirupati (DT.), Andhra Pradesh

DECLARATION

I, K. VENKATA RUCHITHA (21G21A0475), P. PAVITRA (21G21A04D4), M.


SANTHOSH KUMAR (21G21A04A3), K. GAGAN CHANDRA (21G21A0494), hereby
declare that the Project Work entitled – COLLEGE TIME TABLE AND NOTICE BOARD
DISPLAY WITH A AUTO SMS TO FACULTY done by us under the esteemed Guidance of
Mr. S. Surendra Babu M. Tech, Associate Professor, Dept. Of ECE. The Capstone Project
report is submitted in partial fulfillment of the requirements for the award of the Bachelor of
Technology in Electronics and Communication Engineering.

Date:

Place:

K. VENKATA RUCHITHA(21G21A0475)
P. PAVITRA(21G21A04D4)
M. SANTHOSH KUMAR(21G21A04A3)
K. GAGAN CHANDRA(21G21A0494)
ACKNOWLEDGEMENT
We express our deepest gratitude to Dr. Vanki Penchalaiah, Chairman of Audisankara
College of Engineering & Technology, for providing us with an excellent academic environment
and unwavering support throughout our project.

We sincerely appreciate the guidance and support of Dr. Raja Murugadoss Jeyaraju,
Director (Engg., & Principal), whose leadership and vision have inspired us to strive for
excellence.

We extend our heartfelt thanks to Mr. S. Surendra Babu, M.Tech., Associate


Professor, Dept. of ECE project guide, for his/her invaluable insights, encouragement, and
unwavering support, all of which played a significant role in the successful completion of our
project.

Our sincere gratitude goes to Mr J Amarendra M.Tech., (Ph.D)., Head of the


Department, for valuable insights, motivation, and support, which greatly contributed to the
successful completion of our project.

We also extend our appreciation to Dr. G. Chenchu krishnaiah, M.E., Ph.D., MISTE.,
Department Project Coordinator, for providing valuable feedback and ensuring the smooth
progress of our project.

We would like to extend our heartfelt appreciation to our parents and friends, whose
encouragement, patience, and moral support have been our driving force in completing this
capstone project successfully.

Finally, we acknowledge the collaborative efforts of our team members, whose dedication and
hard work made this project possible.

K. VENKATA RUCHITHA(21G21A0475)
P. PAVITHRA (21G21A04D4)
M. SANTHOSH KUMAR ( 21G21A04A3)
K. GAGAN CHANDRA (21G21A0494)
CONTENTS

ABSTRACT 1

CHAPTER 1: INTRODUCTION TO EMBEDDED SYSTEMS 2-7

1.1 Introduction to Embedded Systems 2


1.2 Brief History 3
1.3 Overview of Embedded System Architecture 3
1.3.1 Central Processing Unit(CPU) 4
1.3.2 Memory 4
1.3.3 Input Devices 4
1.3.4 Output Devices 5
1.3.5 Communication Interfaces 5
1.4 Peripherals 5
1.5 Processors 6
1.6 Reliability 6
CHAPTER 2: DESCRIPTION OF THE PROJECT 8-11
2.1 Overview 8
2.2 Block Diagram 9
2.3 Circuit Diagram 9
2.4 Steps of Working 10
2.5 Description of the Circuit 10
CHAPTER 3:HARDWARE DESCRIPTION 12-39
3.1 Node MCU 12
3.1.1 What is ESP8266 And Node MCU? 12
3.1.2 Pin Configuration 13
3.2 Switches 14
3.2.1 Introduction 14
3.2.2 Types of switches 14

3.3 Power supply 16


3.3.1 Description 16
3.3.2 Circuit Features 18
3.3.3 Block Diagram 19
3.3.4 Basic power Supply Circuit 19
3.4 Liquid crystal Display 20*4 20
3.4.1 What is a LCD? 20
3.4.2 How LCDs Work 21
3.4.3 20*4 LCD Display 21
3.4.4 Pin Functions 22
3.4.5 20*4 LCD Commands 23
3.5 GSM Module 25
3.5.1. Introduction 25
3.5.2 What Does GSM Offer 26
3.5.3 Frequency In GSM 26
3.5.4 Description 27
3.5.5 Features 28
3.6 I2C Protocol 29
3.6.1 Introduction Of I2C Protocol 29
3.6.2 What Is I2C 29
3.6.3 Features Of I2C Bus 30
3.6.4 Steps Of I2C data Transmitter 31
3.7 Voltage Regulator 34
3.7.1 Description 34
3.7.2 Types of Voltage Regulator 34
3.7.3 Step Up Voltage Regulator 37
3.7.4 Step Down Voltage Regulator 37
3.8 Real Time Clock DS1307 38
3.8.1 Breif About RTC 38
3.8.2 Pin Description Of RTC 39
3.8.3 Features 39
CHAPTER 4:SOFTWARE DESCRIPTION 41-47
4.1 Introduction to Arduino IDE 41
4.2 Steps of working 42
CHAPTER 5:SOFTWARE IMPLEMENTATION 48-82
CHAPTER 6:CONCLUSION AND FUTURE SCOPE 83
REFERENCES 84

LIST OF FIGURES
1.1 Connection between microprocessor and memory device 6

2.1 Block diagram of College time table and notice board display with auto SMS to faculty 9

2.2 Schematic diagram of College time table and notice board display with auto sms to faculty 9

3.1 Pin Diagram Of Node MCU 13

3.2 Types Of Switches 14

3.3.1 Block diagram of Power supply 19

3.3.2 Circuit diagram of power supply 19

3.4.1 LCD Display Diagram 21

3.4.2 Pin Functions Of Lcd 20*4 22

3.5 GSm module Diagram 26

3.6 I2C Protocol 29

3.7.1 Voltage Regulator Diagram 34

3.7.2 Types Of Volatage Regulator 35

3.8.1 Real Time Clock 38

3.8.2.Pin diagram of RTC 38


LIST OF TABLES

DESCRIPTION PAGE NO

Specifications of Node MCU 14

LCD PIN Functions 23

20*4 LCD Command 23


ABSTRACT

In academic institutions, managing and communicating schedules efficiently is vital for


smooth operations. This project introduces an automated system for displaying the college
timetable and notice board on a digital display, complemented by an automated SMS notification
system for faculty members. The goal is to streamline the process of informing faculty members
about their class schedules, changes in timings, and important announcements, reducing manual
errors and enhancing overall efficiency in managing academic and administrative information.

The system is built around a centralized database that stores the college timetable and notice
board data. This database is continuously updated, ensuring that any changes to the schedule or
new notices are instantly reflected on the digital display. The timetable is automatically retrieved
from the database and shown in real-time on large digital screens across the campus, ensuring
students and faculty can access up-to-date information without delay.

Along with the digital display, the system integrates an automated SMS service that sends
instant text messages to faculty members whenever there is a change in their scheduled classes, a
new notice is posted, or important events are approaching. The SMS system ensures that faculty
members are immediately informed, even if they are not in proximity to the digital display. This
helps in minimizing any disruptions caused by last-minute changes and promotes smooth
coordination between the faculty and administration.

Overall, this project aims to provide a more efficient, streamlined, and automated way to
handle timetable management and communication. The integration of real-time updates on
digital boards with the convenience of SMS notifications ensures better communication, reduces
administrative overhead, and helps faculty stay informed and organized, leading to a more
productive academic environment.

1
CHAPTER-1

INTRODUCTION TO EMBEDDED SYSTEMS

1.1. INTRODUCTION TO EMBEDDED SYSTEMS:

An embedded system can be defined as a computing device that does a specific focused
job. Appliances such as the air-conditioner, VCD player, DVD player, printer, fax machine,
mobile phone etc. are examples of embedded systems. Each of these appliances will have a
processor and special hardware to meet the specific requirement of the application along with the
embedded software that is executed by the processor for meeting that specific requirement. The
embedded software is also called “firm ware”. The desktop/laptop computer is a general purpose
computer. You can use it for a variety of applications such as playing games, word processing,
accounting, software development and so on.

Embedded systems do a very specific task, they cannot be programmed to do different


things. . Embedded systems have very limited resources, particularly the memory. Generally,
they do not have secondary storage devices such as the CDROM or the floppy disk. Embedded
systems have to work against some deadlines. A specific job has to be completed within a
specific time. In some embedded systems, called real-time systems, the deadlines are stringent.
Missing a deadline may cause a catastrophe-loss of life or damage to property. Embedded
systems are constrained for power. As many embedded systems operate through a battery, the
power consumption has to be very low.

Some embedded systems have to operate in extreme environmental conditions such as


very high temperatures and humidity.

1.2. BRIEF HISTORY:

The first recognizably modern embedded system was the Apollo Guidance Computer,

2
developed by Charles Stark Draper at the MIT instrumentation Laboratory. The first mass-
produced embedded system was the automatics D-17 guidance Computer for the Minuteman
(missile), released in 1961. It was built from transistor logic and had a hard disk for main
memory. Since these early applications in the 1960s, embedded systems have come down in
price. There has also be an enormous rise in processing power and functionality. For example the
first microprocessor was the Intel 4004, which found its way into calculators and other small
systems, but required external memory and support chips.

In 1978 National Engineering Manufacturers Association released the standard for a


programmable microcontroller. The definition was an almost any Computer –based controller.
They included single board Computers, numerical controllers and sequential controllers in order
to perform event-based instructions. By the mid-1980s, many of he previously external system
components had been integrated into the same chip as the processor, resulting in integrated
circuits called microcontrollers, and wide spread use of embedded systems became feasible.
Presently, a lot of varieties of embedded systems are available at very low costs.

1.3. OVERVIEW OF EMBEDDED SYSTEM ARCHITECTURE:

Every embedded system consists of custom-built hardware built around a Central


Processing Unit (CPU). This hardware also contains memory chips onto which the software is
loaded. The software residing on the memory chip is also called the ‘firmware’.

The operating system runs above the hardware, and the application software runs above
the operating system. The same architecture is applicable to any computer including a desktop
computer. However, there are significant differences. It is not compulsory to have an operating
system in every embedded system. For small appliances such as remote control units, air
conditioners, toys etc., there is no need for an operating system and you can write only the
software specific to that application. For applications involving complex processing, it is
advisable to have an operating system. In such a case, you need to integrate the application
software with the operating system and then transfer the entire software on to the memory chip.
Once the software is transferred to the memory chip, the software will continue to run for a long
time you don’t need to reload new software.

3
Now, let us see the details of the various building blocks of the hardware of an embedded
system. As shown in Fig. the building blocks are;

 Central Processing Unit (CPU)


 Memory (Read-only Memory and Random Access Memory)
 Input Devices
 Output devices
 Communication interfaces
 Application-specific circuitry

1.3.1. Central Processing Unit (CPU):

The Central Processing Unit (processor, in short) can be any of the following:
microcontroller, microprocessor or Digital Signal Processor (DSP). A micro-controller is a low-
cost processor. Its main attraction is that on the chip itself, there will be many other components
such as memory, serial communication interface, analog-to digital converter etc. So, for small
applications, a micro-controller is the best choice as the number of external components required
will be very less. On the other hand, microprocessors are more powerful, but you need to use
many external components with them. DSP is used mainly for applications in which signal
processing is involved such as audio and video processing.

1.3.2. Memory:

The memory is categorized as Random Access 11emory (RAM) and Read Only Memory
(ROM). The contents of the RAM will be erased if power is switched off to the chip, whereas
ROM retains the contents even if the power is switched off. So, the firmware is stored in the
ROM. When power is switched on, the processor reads the ROM; the program is program is
executed.

1.3.3. Input devices:

Unlike the desktops, the input devices to an embedded system have very limited
capability. There will be no keyboard or a mouse, and hence interacting with the embedded

4
system is no easy task. Many embedded systems will have a small keypad-you press one key to
give a specific command. A keypad may be used to input only the digits. Many embedded
systems used in process control do not have any input device for user interaction; they take
inputs from sensors or transducers 1’fnd produce electrical signals that are in turn fed to other
systems.
1.3.4. Output devices:

The output devices of the embedded systems also have very limited capability. Some
embedded systems will have a few Light Emitting Diodes (LEDs) to indicate the health status of
the system modules, or for visual indication of alarms. A small Liquid Crystal Display (LCD)
may also be used to display some important parameters.

1.3.5. Communication interfaces:

The embedded systems may need to, interact with other embedded systems at they may
have to transmit data to a desktop. To facilitate this, the embedded systems are provided with one
or a few communication interfaces such as RS232, RS422, RS485, Universal Serial Bus (USB),
IEEE 1394, Ethernet etc.

1.4. PERIPHERALS:

Peripherals are the various devices that are connected to the CPU, for performing various
functions. Embedded systems talk with the outside world via peripherals, such as:

 Serial communication interfaces (SCI): RS-232, RS-422, RS-458 etc.


 Synchronous Serial communication interfaces (SSCI): I2C, JTAG, SPI, SSC and ESSI
 Universal Serial Bus (USB)
 Networks: Controller Area Network, etc.
 Timers: PLL(s), Capture/Compare and Time Processing units.
 Discrete I/O: General Purpose Input / Output (GPIO).

5
1.5. PROCCESORS:

Processors are the key elements in any embedded system. They interact with the memory,
where the various instructions of useful functions into a single IC package.

These functions are:

 The ability to execute a stored set of instructions to carry out user defined tasks.
 The ability to be able to access external memory chips to both read and writes data from and
to the memory.

Fig.1.1.Connection between microprocessor and memory device

1.6 RELIABILITY:

Embedded systems often reside in machines that are expected to run continuously for years
without errors and in some cases recover by themselves if any error occurs. Therefore the
software is usually developed and tested more carefully than that for PC, and unreliable
mechanical moving parts such as Disk drives, switches or buttons are avoided.

Specific reliability issues may include:

 The system cannot safely be shut down for repair, or it is too inaccessible to repair.
Solutions may involve subsystems with redundant spares that can be switched over to, or
software “limp modes” that provide partial function. Examples include space systems,
undersea cables, navigational beacons, bore-hole systems and automobiles.
 The system must be kept running for safety reasons. “Limp modes” are less tolerable.
Often backups are selected by an operator. Examples include Aircraft, Navigation,
Reactor control systems, safety-critical Chemical factory controls, Train signals and
6
engines on single-engine Aircraft.
 The system will lose large amounts of money when shutdown: Telephone switches,
Factory controls, Bridge and elevator controls, funds transfer and market making,
automated sales and service.

7
CHAPTER-2

DESCRIPTION OF THE PROJECT

2.1 OVERVIEW:

The College Time Table and Notice Board Display with Auto SMS to Faculty system is
designed to automate and enhance the management of academic schedules and communication
within educational institutions. The project combines the display of real-time timetables and
notices on digital boards across the campus with an automatic SMS notification service, ensuring
seamless communication between the administration and faculty members. The core
functionality of the system revolves around a centralized database where the timetable and notice
board content are stored and maintained. Faculty and administrative staff can easily update the
timetable or post notices through a simple user interface. These updates are automatically
reflected on digital displays located in key areas of the campus, ensuring that students and
faculty have immediate access to the latest information. This minimizes the reliance on physical
notice boards and paper schedules, making the entire process more efficient and environmentally
friendly.

In addition to the digital display, the system features an automated SMS service that sends
timely notifications to faculty members. Whenever there is a change in the timetable, a new
notice is posted, or an important announcement is made, the relevant faculty members receive an
SMS alert. This ensures that faculty members are informed of any updates, even when they are
away from their offices or not in front of the notice board. The SMS service is designed to be
simple and reliable, with automatic updates triggered by changes in the database.

Overall, the system aims to simplify the communication process within the college by
offering an integrated solution for timetable management and faculty notifications. It ensures that
all stakeholders are well-informed and reduces the chances of miscommunication or missed
updates.

8
2.2 BLOCK DIAGRAM:

Fig 2.1:Block Diagram

2.3 CIRCUIT DIAGRAM:

Fig 2.2:Schematic Diagram

9
2.4 STEPS OF WORKING:
 Switch on the power supply.
 The system initializes, and all components (LCD, GSM module, Microcontroller) are
activated.
 The microcontroller retrieves the scheduled timetable from memory.
 The LCD/LED display updates in real-time to show the current and upcoming classes.
 Admins can update the notice board via a web or mobile interface.
 The latest notices are displayed dynamically on the digital board.
 Before a class starts, the system sends an SMS alert to the respective faculty.
 SMS contains details like subject, time, and classroom.
 Admins can send urgent messages that trigger SMS notifications to faculty and
students.
 These messages also appear on the display board.

2.4 DESCRIPTION OF THE CIRCUIT:

The circuit for the College Time Table and Notice Board Display with Auto SMS to Faculty
is designed to provide seamless integration between digital displays, a centralized database, and
an automated SMS notification system. The heart of the circuit is a microcontroller such as an
Arduino or Node MCU, which coordinates all functions of the system. The microcontroller is
connected to a Wi-Fi or Ethernet module to enable real-time communication with a server that
holds the timetable and notice data. This allows the system to fetch the latest updates from the
database and transmit them to the digital display. The display, typically an LED or LCD screen,
is interfaced with the microcontroller, and it continuously shows the updated timetable and
notices, ensuring that the information is accessible to students and faculty members across
campus.In addition to the real-time display functionality, the circuit incorporates an SMS
notification module, such as a GSM module or a Wi-Fi-based SMS service, to send automatic
updates to faculty members. When changes are made to the timetable or new notices are posted,
the microcontroller retrieves the relevant information from the database and sends it to the SMS
module. The SMS module then transmits the updatedirectly to the affected faculty member’s

10
mobile phone, ensuring they are promptly informed. This feature eliminates the need for manual
communication and enhances the speed and reliability of the notification process, ensuring that
faculty members never miss important updates.

The circuit also includes essential power management components, such as voltage
regulators, fuses, and capacitors, to ensure the stability and reliability of the system. The
microcontroller and connected modules operate efficiently at a consistent voltage, preventing
damage from power fluctuations. The entire system is designed to be low-power and cost-
effective while ensuring robust performance. The integration of a digital display for public
information dissemination, combined with the automatic SMS feature for personalized faculty
updates, creates an efficient and user-friendly solution for managing college timetables and
notices, enhancing overall communication and coordination within the institution.

11
CHAPTER-3

HARDWARE DESCRIPTION

3.1 NODE MCU:

3.1.1 What is ESP8266 and Node MCU?

Most people call ESP8266 as a WIFI module, but it is actually a microcontroller. ESP8266 is the
name of the microcontroller developed by Express if Systems which is a company based out of
shanghai. This microcontroller has the ability to perform WIFI related activities hence it is
widely used as a WIFI module.

There are many types of ESP8266 module available ranging from ESP8266-01 to ESP8266-12.
The one that we are using in the tutorial is the ESP8266-12. We already covered ESP8266-01 in
our previous article. However all the ESP modules have only one type of ESP processor, what
differs is only the type of breakout bard used. The breakout board of ESP8266-01 will have only
2 GPIO pins whereas ESP-12 has 16 GPIO Pins.

Many equipments around us cannot be connected to internet on its own. So, this chip enables
these equipment to connect with internet and make them IoT devices. Now, you can easily open
your doors for IoT Projects with the help of this module. This low cost, small size module could
do wonders and is really simple and easy to use, provided we follow the right steps.

12
3.1.2.PIN CONFIGURATION:

 GPIO Pins: NodeMCU has 16 GPIO pins as shown in above diagram which can be used
to control other peripheral devices like sensors, LEDs, switches etc. These pins can also
be used as PWM pins.
 ADC (Analog to Digital Converter) Pin: It has one ADC channel and can be accessed
through pin A0.
 SPI Pins: There are 4 pins (SCK, MISO, MOSI etc) available for SPI communication as
shown in green rectangle in diagram.
 I2C Pins: It has I2C functionality support but due to internal use of these pins, you have
to find which pin is I2C.
 UART Pins: It has two UART interfaces. Since, RXD0 and TXD0 is used to upload
codes to board, we cannot use them while programming this module. We can use RXD1
and TXD1 anytime.

Fig 3.1:Pin Diagram Of Node MCU

13
Operating Voltage 5V

Flash Memory 4Mb

Processor L106 32-bit

Processor speed 80-160MHz

RAM 32K + 80K

GPIOs 16

ADC 1, 10-bit

3.2.SWITCHES:
3.2.1.INTRODUCTION:
An electrical switch is any device used to interrupt the flow of electrons in a circuit. Switches
are essentially binary devices: they are either completely on (“closed”) or completely off
(“open”). There are many different types of switches, and we will explore some of these types in
this chapter.
Though it may seem strange to cover this elementary electrical topic at such a late stage in
this book series, I do so because the chapters that follow explore an older realm of digital
technology based on mechanical switch contacts rather than solid-state gate circuits, and a
thorough understanding of switch types is necessary for the undertaking. Learning the function
of switch-based circuits at the same time that you learn about solid-state logic gates makes both
topics easier to grasp, and sets the stage for an enhanced learning experience in Boolean algebra,
the mathematics behind digital logic circuits.
3.2.2.Types Of Switches:
Any switch designed to be operated by a person is generally called a hand switch, and they are
manufactured in several varieties:

Toggle switches are actuated by a lever angled in one of two or more positions. The
14
common light switch used in household wiring is an example of a toggle switch. Most toggle
switches will come to rest in any of their lever positions, while others have an internal spring
mechanism returning the lever to a certain normal position, allowing for what is called
“momentary” operation.

Pushbutton switches are two-position devices actuated with a button that is pressed and
released. Most pushbutton switches have an internal spring mechanism returning the button to its
“out,” or “unpressed,” position, for momentary operation. Some pushbutton switches will latch
alternately on or off with every push of the button. Other pushbutton switches will stay in their
“in,” or “pressed,” position until the button is pulled back out. This last type of pushbutton
switches usually have a mushroom-shaped button for easy push-pull action.

Selector switches are actuated with a rotary knob or lever of some sort to select one of two
or more positions. Like the toggle switch, selector switches can either rest in any of their
positions or contain spring-return mechanisms for momentary operation.

Proximity switches sense the approach of a metallic machine part either by a magnetic or
high-frequency electromagnetic field. Simple proximity switches use a permanent magnet to
actuate a sealed switch mechanism whenever the machine part gets close (typically 1 inch or less

15
Gas or liquid pressure can be used to actuate a switch mechanism if that pressure is applied
to a piston, diaphragm, or bellows, which converts pressure to mechanical force.
Electronic switches
A relay is an electrically operated switch. Many
relays use an electromagnet to operate a switching
mechanism mechanically, but other operating principles
are also used.
Solid-state relays control power circuits with no
moving parts, instead using a semiconductor device to
perform switching—often a silicon-controlled rectifier or triac.
The analogue switch uses two MOSFET transistors in a transmission gate arrangement as a
switch that works much like a relay, with some advantages and several limitations compared to
an electromechanical relay.
The power transistor(s) in a switching voltage regulator, such as a power supply unit, are used
like a switch to alternately let power flow and block power from flowing.
3.3.POWER SUPPLY:
3.3.1.DESCRIPTION:
A variable regulated power supply, also called a variable bench power supply, is one where
you can continuously adjust the output voltage to your requirements. Varying the output of the
power supply is the recommended way to test a project after having double checked parts
placement against circuit drawings and the parts placement guide.
This type of regulation is ideal for having a simple variable bench power supply. Actually
this is quite important because one of the first projects a hobbyist should undertake is the
construction of a variable regulated power supply. While a dedicated supply is quite handy e.g.
5V or 12V, it's much handier to have a variable supply on hand, especially for testing.

16
Most digital logic circuits and processors need a 5 volt power supply. To use these parts we
need to build a regulated 5 volt source. Usually you start with an unregulated power supply
ranging from 9 volts to 24 volts DC (A 12 volt power supply is included with the Beginner Kit
and the Microcontroller Beginner Kit.). To make a 5 volt power supply, we use a LM7805
voltage regulator IC (Integrated Circuit). The IC is shown below.

Transformer:
A bridge rectifier coupled with a step down transformer is used for our design. The voltage
rating of transformer used is 0-12V and the current rating is
500mA. When AC voltage of 230V is applied across the primary winding an output AC voltage
of 12V is obtained. One alteration of input causes the top of transformer to be positive and the
bottom negative. The next alteration will temporarily cause the reverse.
Rectifier:
In the power supply unit, rectification is normally achieved using a solid state diode. Diode
has the property that will let the electron flow easily at one direction at proper biasing condition.
Bridge rectifiers of 4 diodes are used to achieve full wave rectification. Two diodes will conduct
during the negative cycle and the other two will conduct during the positive half cycle.
Filtering unit:
Filter circuit which is usually a capacitor acts as a surge arrester always follows the rectifier

17
unit. This capacitor is also called as a decoupling capacitor or a bypass capacitor, is used not
only to short the ripple with frequency to ground but also leave the frequency of the DC to
appear at the output.
Regulators:
The voltage regulators play an important role in any power supply unit. The primary purpose
of a regulator is to aid the rectifier and filter circuit in providing a constant DC voltage to the
device. Power supplies without regulators haveinherent problem of changing DC voltage values
due to variations in the load or due to fluctuations in the AC line voltage. With a regulator
connected to DC output, the voltage can be maintained within a close tolerant region of the
desired output. IC 7805 and 7812 regulators are used in this project for providing a DC voltage
of +5V and +12V respectively.
3.3.2.CIRCUIT FEATURES:
• Brief description of operation: Gives out well regulated +5V output, output current capability
of 100 mA
• Circuit protection: Built-in overheating protection shuts down output when regulator IC gets
too hot
• Circuit complexity: Very simple and easy to build
• Circuit performance: Very stable +5V output voltage, reliable operation
• Availability of components: Easy to get, uses only very common basic components
• Design testing: Based on datasheet example circuit, I have used this circuit successfully as part
of many electronics projects
• Applications: Part of electronics devices, small laboratory power supply
• Power supply voltage: Unregulated DC 8-18V power supply
• Power supply current: Needed output current + 5 mA
• Component costs: Few dollars for the electronics components + the input transformer cost

18
3.3.3.BLOCK DIAGRAM:

Fig 3.3.1:Block Diagram of Power Supply

3.3.4.BASIC POWER SUPPLY CIRCUIT:

Fig 3.3.2:Circuit Diagram Of Power Supply


Above is the circuit of a basic unregulated dc power supply. A bridge rectifier D1 to D4
rectifies the ac from the transformer secondary, which may also be a block rectifier such as WO4
or even four individual diodes such as 1N4004 types. (See later re rectifier ratings).
The principal advantage of a bridge rectifier is you do not need a centre tap on the
secondary of the transformer. A further but significant advantage is that the ripple frequency at
19
the output is twice the line frequency (i.e. 50 Hz or 60 Hz) and makes filtering somewhat easier.
Now the RMS secondary voltage (primary is whatever is consistent with your area) for our
power transformer T1 must be our desired output Vo PLUS the voltage drops across D2 and D4 (
2 * 0.7V) divided by 1.414.
This means that Vsec = [13V + 1.4V] / 1.414 which equals about 10.2V. Depending on the VA
rating of your transformer, the secondary voltage will vary considerably in accordancewith the
applied load. The secondary voltage on a transformer advertised as say 20VA will be much
greater if the secondary is only lightly loaded.
If we accept the 2.5% ripple as adequate for our purposes then at 13V this becomes
13 * 0.025 = 0.325 Vrms. The peak to peak value is 2.828 times this value. Vrip = 0.325V X
2.828 = 0.92 V and this value is required to calculate the value of C1. Also required for this
calculation is the time interval for charging pulses. If you are on a 60Hz system it it 1/ (2 * 60 ) =
0.008333 which is 8.33 milliseconds. For a 50Hz system it is 0.01 sec or 10 milliseconds.
3.4.LCD 20X4:
3.4.1.What is a LCD(Liquid Crystal Display)?
A liquid crystal display or LCD draws its definition from its name itself. It is combination
of two states of matter, the solid and the liquid. LCD uses a liquid crystal to produce a visible
image. Liquid crystal displays are super-thin technology display screen that are generally used in
laptop computer screen, TVs, cell phones and portable video games. LCD’s technologies allow
displays to be much thinner when compared to cathode ray tube (CRT) technology.
Liquid crystal display is composed of several layers which include two polarized panel
filters and electrodes. LCD technology is used for displaying the image in notebook or some
other electronic devices like mini computers. Light is projected from a lens on a layer of liquid
crystal. This combination of colored light with the grayscale image of the crystal (formed as
electric current flows through the crystal) forms the colored image. This image is then displayed
on the screen.

20
An LCD is either made up of an active matrix display grid or a passive display grid. Most of the
Smartphone’s with LCD display technology uses active matrix display, but some of the older
displays still make use of the passive display grid designs. Most of the electronic devices mainly
depend on liquid crystal display technology for their display. The liquid has a unique advantage
of having low power consumption than the LED or cathode ray tube.
Liquid crystal display screen works on the principle of blocking light rather than emitting light.
LCD’s requires backlight as they do not emits light by them. We always use devices which are
made up of LCD’s displays which are replacing the use of cathode ray tube. Cathode ray tube
draws more power compared to LCD’s and are also heavier and bigger.
3.4.2.How LCDs Work?
The principle behind the LCD’s is that when an electrical current is applied to the liquid crystal
molecule, the molecule tends to untwist. This causes the angle of light which is passing through
the molecule of the polarized glass and also cause a change in the angle of the top polarizing
filter. As a result a little light is allowed to pass the polarized glass through a particular area of
the LCD. Thus that particular area will become dark compared to other. The LCD works on the
principle of blocking light. While constructing the LCD’s, a reflected mirror is arranged at the
back. An electrode plane is made of indium-tin oxide which is kept on top and a polarized glass
with a polarizing film is also added on the bottom of the device. The complete region of the LCD
has to be enclosed by a common electrode and above it should be the liquid crystal matter.
3.4.3.20X4 LCD Display Module:

Fig 3.4.1:LCD Display


20X4 LCD is named so because; it has 20 Columns and 4 Rows. There are a lot of combinations
available like, 8×1, 8×2, 10×2, 16×1, etc. But the most used one is the 20*4 LCD, hence we are
using it here.
21
A 20X4 LCD display is very basic module and is very commonly used in various devices and
circuits. These modules are preferred over seven segments and other multi segment LEDs. The
reasons being: LCDs are economical; easily programmable; have no limitation of displaying
special & even custom characters (unlike in seven segments), animations and so on.
A 20X4 LCD means it can display 20 characters per line and there are 4 such lines. In this LCD
each character is displayed in 5x7 pixel matrix. This LCD has two registers, namely, Command
and Data.
Specifications: 20×4
 Built-in controller (SPLC780D)
 4-bit or 8-bit MPU interfaces
 5×7 dot characters with cursor
 20 character x 4 line display
 Module Size: 98.0mm(L) * 60.0mm(W)* 13.5mm(H)
 Viewing Area: 76.0mm(L)* 25.5mm(W)
 5V / 3.3V input models available
3.4.4.PIN FUNCTIONS:
There are pins along one side of the small printed board used for connection to the
microcontroller. There are total of 14 pins marked with numbers (16 in case the background light
is built in). Their function is described in the table below:

Fig 3.4.2:Pin Functions of LCD Display


22
Logic
Function Pin Number Name Description
State

Ground 1 Vss - 0V

Power
2 Vdd - +5V
supply

Contrast 3 Vee - 0 – Vdd

0 D0 – D7 are interpreted as commands


4 RS
1 D0 – D7 are interpreted as data

Control of 0 Write data (from controller to LCD)


operating 5 R/W
1 Read data (from LCD to controller)
0 Access to LCD disabled
1 Normal operating
6 E
From 1 to Data/commands are transferred to
0 LCD
7 D0 0/1 Bit 0 LSB
8 D1 0/1 Bit 1
9 D2 0/1 Bit 2
Data / 10 D3 0/1 Bit 3
commands 11 D4 0/1 Bit 4
12 D5 0/1 Bit 5
13 D6 0/1 Bit 6
14 D7 0/1 Bit 7 MSB

3.4.5.20x4 LCD Commands:

Code (Hex) working of lcd commands

1 Clear display screen

2 Return home
4 Decrement cursor (shift cursor to left)

6 Increment cursor (shift cursor to right)

5 Shift display right

7 Shift display left

8 Display off, cursor off

A Display off, cursor on

C Display on, cursor off

E Display on, cursor blinking

F Display on, cursor blinking

10 Shift cursor position to left

14 Shift cursor position to right

18 Shift the entire display to the left

1C Shift the entire display to the right

80 Force cursor to beginning to 1st line

C0 Force cursor to beginning to 2nd line

90 Force cursor to beginning to 3rd line

D0 Force cursor to beginning to 4th line

38 2 lines and 5×7 matrix (8-bit mode)

28 2 lines and 5×7 matrix (4-bit mode)

94 characters on the 3rd line

D4 characters on the 4th line

24
Advantages of an LCD’s:
 LCD’s consumes less amount of power compared to CRT and LED
 LCD’s are consist of some microwatts for display in comparison to some mill watts for
LED’s
 LCDs are of low cost
 Provides excellent contrast
 LCD’s are thinner and lighter when compared to cathode ray tube and LED
Disadvantages of an LCD’s:
 Require additional light sources
 Range of temperature is limited for operation
 Low reliability
 Speed is very low
 LCD’s need an AC drive
Applications of Liquid Crystal Display
Liquid crystal technology has major applications in the field of science and engineering as well
on electronic devices.
 Liquid crystal thermometer
 Optical imaging
 The liquid crystal display technique is also applicable in visualization of the radio
frequency waves in the waveguide
 Used in the medical applications
3.5.GSM MODULE

3.5.1. INTRODUCTION:

GSM (Global System for Mobile communications) is an open, digital cellular technology used
for transmitting mobile voice and data services.

GSM (Global System for Mobile communication) is a digital mobile telephone system that is
widely used in Europe and other parts of the world. GSM uses a variation of Time Division

25
Multiple Access (TDMA) and is the most widely used of the three digital wireless telephone
technologies (TDMA, GSM, and CDMA). GSM digitizes and compresses data, then sends it
down a channel with two other streams of user data, each in its own time slot. It operates at
either the 900 MHz or 1,800 MHz frequency band.

3.5.2.What does GSM offer?

Fig 3.5:GSM Module

GSM supports voice calls and data transfer speeds of up to 9.6 kbit/s, together with the
transmission of SMS (Short Message Service).

GSM operates in the 900MHz and 1.8GHz bands in Europe and the 1.9GHz and 850MHz bands
in the US. The 850MHz band is also used for GSM and 3G in Australia, Canada and many South
American countries. By having harmonized spectrum across most of the globe, GSM’s
international roaming capability allows users to access the same services when travelling abroad
as at home. This gives consumers seamless and same number connectivity in more than 218
countries.

3.5.3. FREQUENCY IN GSM:

The network in the GSM operates at different frequencies based upon the location and
spectrum. The spectrums have been upgrading for every few years where the change of data rate
and network availability. These GSM networks have been divided as 2G, 3G, 4G and 5G (till
date).

26
More than 90% of the world’s population covers the frequency of terrestrial networks and made
them to extend, where coverage is unavailable. Today more than 225 countries are under the
same connectivity of GSM satellite.

3.5.4.DESCRIPTION:

As for the above information we have understood the network of GSM which is used to transfer
the data with the high speed and security by allocating the band width. To utilize the network
over a long distance between the devices MODEM is used. The word MODEM means the
process of Modulation and De-modulation. The device which acts as a GSM Modem uses a
wireless network which is similar to a dial-up modem. But the dial-up is the fixed lines which
transfers electronic signals over wire but whereas GSM Modem transfer the data via radio
waves.

GSM Modem is a device which requires a memory based card that contains the information of
the user and also its allocated frequencies, this card is known as SIM (Subscriber Interface
Module). By using this SIM in the GSM Modem we can connect to wireless network under the
globe. This SIM card has the information of

1. User mobile number.

2. User international number

3. Belonging state of user.

27
By the help of SIM in this project we take a GSM Modem of model number SIM-900 which
provides us with the frequency 900MHz connected to the global network. The following
functions can be done by using some AT commands like

1. AT+CMGD to delete message.

2. AT+CMGF to select message format.

3. AT+CMGL to list the message.

4. AT+CMGR to the message.

5. AT+CMGS to send message.

6. AT+CPIN to check that SIM is ready or not.

7. AT+CREG to network registration.

A brief description of the difference between SIM900 and SIM800 GSM modules. SIM800
modules are upgraded version of its previous successful GSM/GPRS/GPRS module series
SIM900. There are multiple sub versions of each series, each of which cater to a different set of
users and applications.

3.5.5.FEATURES:

 Quad-band 850/900/1800/1900MHz

 GPRS multi-slot class12 connectivity: max. 85.6kbps(down-load/up-load)

 Controlled by AT Command (3GPP TS 27.007, 27.005 and SIMCOM enhanced AT


Commands)

 Supports Real Time Clock

 Supply voltage range 3.4V ~ 4.4V

 Supports A-GPS

 Supports 3.0V to 5.0V logic level

 Low power consumption, 1mA in sleep mode

28
3.6. I2C PROTOCOL

3.6.1. INTRODUCTION OF I2C PROTOCOL:

An I2C protocol is one of the serial communication protocols that are used for the chip to
chip communication. Similar to the I2C protocol, SPI and UART also used for the chip to chip
communication.

The I2C is the short form of Inter-Integrated Circuit, is a type of bus, which designed and
developed by Philips in 1980 for inter-chip communication.I2C is adopted by a lot of vendor
companies for the chip to chip communication.

It is a multi-master and multi-slave serial communication protocol means that we have


the freedom to attach multiple IC at a time with the same bus. In I2C protocol, communication
always started by the master and in the case of multi-master, only one master has the ownership
of the bus.

Fig 3.6:I2C Protocol

3.6.2.WHAT IS I2C?

I2C is a serial communication protocol. It provides the good support to the slow devices,
for example, EEPROM, ADC, and RTC etc. I2c is not only used with the single board but also
used with the other external components which have connected with boards through the cables.

I2C is basically two-wire communication protocol. It uses only two wires for the
communication. In which one wire is used for the data (SDA) and other wire is used for the
clock (SCL).

29
SDA (Serial Data) – The line for the master and slave to send and receive data.

SCL (Serial Clock) – The line that carries the clock signal.

I2C is a serial communication protocol, so data is transferred bit by bit along a single
wire (the SDA line).

In I2C, both buses are bidirectional, which means master able to send and receive the
data from the slave. The clock bus is controlled by the master but in some situations slave is also
able to suppress the clock signal, but we will discuss it later.

Additionally, an I2C bus is used in the various control architecture, for example, SMBus
(System Management Bus), PMBus (Power Management Bus), IPMI (Intelligent Platform
Management Interface) etc.

3.6.3.FEATURE OF I2C BUS:

 In I2C only two buses are required for the communication, the serial data bus (SDA) and
serial clock bus (SCL).

 Each component in I2C bus is software addressable by a unique address, this unique
address is used by the master to communicate with a particular slave.

 Always a master and slave relationships exist at all times in I2C.

 The I2C bus provides the ability of the arbitration and collision detection.

 I2C is the 8-bit oriented serial bidirectional communication, there are following speed
mode in I2C

30
3.6.4.STEPS OF I2C DATA TRANSMISSION:

1. The master sends the start condition to every connected slave by switching the SDA
line from a high voltage level to a low voltage level before switching the SCL line from high to
low:

2. The master sends each slave the 7 or 10 bit address of the slave it wants to
communicate with, along with the read/write bit:

4. Each slave compares the address sent from the master to its own address. If the
address matches, the slave returns an ACK bit by pulling the SDA line low for one
bit. If the address from the master does not match the slave’s own address, the slave
leaves the SDA line high.

31
4. The master sends or receives the data frame:

5. After each data frame has been transferred, the receiving device returns another ACK bit to the
sender to acknowledge successful receipt of the frame:

32
6. To stop the data transmission, the master sends a stop condition to the slave by switching SCL
high before switching SDA high:

ADVANTAGES AND DISADVANTAGES OF I2C:

There is a lot to I2C that might make it sound complicated compared to other protocols,
but there are some good reasons why you may or may not want to use I2C to connect to a
particular device:

Advantages

 Only uses two wires

 Supports multiple masters and multiple slaves

 ACK/NACK bit gives confirmation that each frame is transferred successfully

 Hardware is less complicated than with UARTs

 Well known and widely used protocol

Disadvantages

 Slower data transfer rate than SPI

 The size of the data frame is limited to 8 bits

33
3.7.VOLTAGE REGULATOR:

3.7.1.DESCRIPTION:

A variable regulated power supply, also called a variable bench power supply, is one
where you can continuously adjust the output voltage to your requirements. Varying the output
of the power supply is the recommended way to test a project after having double checked parts
placement against circuit drawings and the parts placement guide.

Most digital logic circuits and processors need a 5 volt power supply. To use these parts
we need to build a regulated 5 volt source. Usually you start with an unregulated power supply
ranging from 9 volts to 24 volts DC (A 12 volt power supply is included with the Beginner Kit
and the Microcontroller Beginner Kit.). To make a 5 volt power supply, we use a LM7805
voltage regulator IC (Integrated Circuit). The IC is shown below.

Fig 3.7.1:Voltage Regulator

Definition

A voltage regulator is an electricity regulation device designed to automatically convert


voltage into a lower, usually direct current (DC), constant voltage.

3.7.2.Types of Voltage Regulators and Their Working Principle

Basically, there are two types of Voltage regulators: Linear voltage regulator and Switching
voltage regulator.

There are two types of Linear voltage regulators: Series and Shunt.

34
There are three types of Switching voltage regulators: Step up, Step down and Inverter voltage
regulators.

Series Voltage Regulator

A series voltage regulator uses a variable element placed in series with the load. By
changing the resistance of that series element, the voltage dropped across it can be changed. And,
the voltage across the load remains constant.

The amount of current drawn is effectively used by the load; this is the main advantage of the
series voltage regulator. Even when the load does not require any current, the series regulator
does not draw full current. Therefore, a series regulator is considerably more efficient than shunt
voltage regulator.

35
Shunt Voltage Regulator

A shunt voltage regulator works by providing a path from the supply voltage to ground
through a variable resistance. The current through the shunt regulator is diverted away from the
load and flows uselessly to the ground, making this form usually less efficient than the series
regulator. It is, however, simpler, sometimes consisting of just a voltage-reference diode, and is
used in very low-powered circuits wherein the wasted current is too small to be of concern. This
form is very common for voltage reference circuits. A shunt regulator can usually only sink
(absorb) current.

Switching Voltage Regulator

A switching regulator rapidly switches a series device on and off. The switch’s duty cycle
sets the amount of charge transferred to the load. This is controlled by a feedback mechanism
similar to that of a linear regulator. Switching regulators are efficient because the series element
is either fully conducting or switched off because it dissipates almost no power. Switching
regulators are able to generate output voltages that are higher than the input voltage or of
opposite polarity, unlike linear regulators.

36
3.7.3.Step Up Voltage Regulator

Step-up switching converters, also called boost switching regulators, provides a higher
voltage output by raising the input voltage. The output voltage is regulated, as long as the power
drawn is within the output power specification of the circuit. For driving strings of LEDS, Step
up Switching voltage regulator is used.

Assume Lossless circuit Pin= Pout (input and output powers are same)

Then Vin Iin = Vout Iout ,

Iout / Iin = (1-D)

From this, it is inferred that in this circuit

Powers remain same,Voltage increases,Current decreases,Equivalent to DC transformer

3.7.4Step Down (Buck) Voltage Regulator

It lowers the input voltage.

Step Down Voltage Regulator

If input power is equal to output


power, then

Pin = Pout; Vin Iin = Vout Iout,

Iout / Iin = Vin /Vout = 1/D

Step down converter is equivalent to DC transformer where in the turns ratio is in the
range of 0-1.

37
3.8.Real Time Clock DS1307

3.8.1.A Brief about Real Time Clock


The acronym of the term RTC is a real time clock, basically it is just like a watch. Because, it
works with a battery so that we can maintain time even there is no power and we can keep track
of long timelines, even if you reprogram your microcontroller. The RTC device is used to give
an accurate date and time in many applications. The mother board of an IBM PC uses an RTC
device, that includes a battery to maintain the date and time even there is no power. These
devices are used in some microcontrollers while other devices require interfacing. The most
widely used real time clock IC is DS 1307.

Fig 3.8.1:Real Time Clock


Real Time Clock DS1307 IC
The DS1307 IC is most widely used real time clock; it consists of a 3V external lithium battery
to keep functioning for over ten years maximum in the lack of external power supply. This IC
(Integrated Circuit) uses a CMOS technology to maintain low power consumption. This IC is
used to keep track of the date, month and year, hours, minutes and seconds and also day of week.
This IC provides a leap year facility that is valid up to 2100. The information about all these is
provided in the form of HEX or BCD.

Fig:3.8.2:Pin Diagram Of RTC


38
3.8.2.Pin Description of DS1307:
Pin 1, 2: Connections for standard 32.768 kHz quartz crystal. The internal oscillator circuitry is
intended for operation with a crystal having a specified load capacitance of 12.5pF. X1 is the
input to the oscillator and can alternatively be connected to an external 32.768 kHz oscillator.
The output of the internal oscillator, X2 is drifted if an external oscillator is connected to X1.
Pin 3: Battery input for any standard 3V lithium cell or other energy source. Battery voltage
should be between 2V and 3.5V for suitable operation. The nominal write protect trip point
voltage at which access to the RTC and user RAM is denied is set by the internal circuitry as
1.25 x VBAT nominal. A lithium battery with 48mAhr or greater will back up the DS1307 for
more than 10 years in the absence of power at 25ºC. UL recognized to ensure against reverse
charging current when utilized as a part of conjunction with a lithium battery.
Pin 4: Ground.
Pin 5: Serial data input/output. The input/output for the I2C serial interface is the SDA, which is
open drain and requires a pull up resistor, allowing a pull up voltage up to 5.5V.Regardless of the
voltage on VCC.
Pin 6: Serial clock input. It is the I2C interface clock input and is used in data synchronization.
Pin 7: Square wave/output driver. When enabled, the SQWE bit set to 1, the SQW/OUT pin
outputs one of four square-wave frequencies (1Hz, 4 kHz, 8 kHz, and 32 kHz). This is also open
drain and requires an external pull-up resistor. It requires application of either Vcc or Vb at to
operate SQW/OUT, with an allowable pull up voltage of 5.5V and can be left floating, if not
used.
Pin 8: Primary power supply. When voltage is applied within normal limits, the device is fully
accessible and data can be written and read. When a backup supply is connected to the device
and VCC is below VTP, read and writes are inhibited. However at low voltages, the timekeeping
function still functions.
3.8.3. Features:
 Programmable square wave output signal
 Automatic power-fail detect and switch circuitry
 Consumes less than 500nA in battery backup mode with oscillator running
 Available in 8-pin DIP or SOIC
39
Applications
 With the help of Arduino Real Time Clock interface, we can implement several project
related to data logging, alarms, clock, etc.
 Since the RTC Module DS1307 is backed with a battery, it will continue to maintain time
even in the event of power fail.

40
CHAPTER-4

SOFTWARE DESCRIPTION

4.1.Introduction to Arduino IDE:

The Arduino Integrated Development Environment (IDE) is an open-source software


platform used for writing, compiling, and uploading code to Arduino microcontrollers. It is a
primary tool for users who want to develop programs that interact with physical hardware, from
simple projects to more complex systems. Designed to be accessible, the Arduino IDE simplifies
the process of creating and deploying applications on a variety of Arduino boards. With its
straightforward user interface and powerful features, it has become one of the most widely used
development environments in the world of electronics and embedded systems.

The core function of the Arduino IDE is to allow users to write code in a high-level
programming language (typically C++) and upload it to an Arduino board for execution. The
software consists of a text editor where users write their programs, a compiler that converts the
written code into machine-readable instructions, and an uploading feature that sends the
compiled code to the Arduino microcontroller via a USB connection. This interaction between
the IDE and the hardware is crucial in making the Arduino ecosystem user-friendly, even for
those with little prior experience in electronics or coding.

One of the key features that sets the Arduino IDE apart is its simplicity. The IDE provides a
minimalist interface that is designed to minimize complexity and make the process of writing
and uploading code as easy as possible. It includes syntax highlighting, which helps users
identify different parts of their code, such as functions, variables, and loops. The IDE also has a
built-in error checker that highlights mistakes in the code and provides helpful feedback,
making it easier for users to debug their programs. For example, if a user forgets to close a
bracket or makes a typo, the IDE will underline the error and typically give a description of the
issue. This feature is particularly helpful for beginners, who are often still learning the syntax
and structure of the programming language.

41
4.2 Steps of working

How to Program An Arduino In Few Simple Steps:

STEP1:
Arduino microcontrollers come in a variety of types. The most common is the Arduino UNO, but
there are specialized variations. Before you begin building, do a little research to figure out
which version will be the most appropriate for your project.

STEP2:
To begin, you'll need to install the Arduino Programmer, Integrated development environment
(IDE).

To install the software, you will need to click on the link that corresponds with your computer’s
operating system.

Take some time to look around and get comfortable with it.

42
1. Menu Bar: Gives you access to the tools needed for creating and saving Arduino
sketches.

2. Verify Button: Compiles your code and checks for errors in spelling or syntax.

3. Upload Button: Sends the code to the board that’s connected such as Arduino Uno in this
case. Lights on the board will blink rapidly when uploading.

4. New Sketch: Opens up a new window containing a blank sketch.

5. Sketch Name: When the sketch is saved, the name of the sketch is displayed here.

6. Open Existing Sketch: Allows you to open a saved sketch or one from the stored
examples.

7. Save Sketch: This saves the sketch you currently have open.

8. Serial Monitor: When the board is connected, this will display the serial information of
your Arduino

9. Code Area: This area is where you compose the code of the sketch that tells the board
what to do.

10. Message Area: This area tells you the status on saving, code compiling, errors and more.

43
11. Text Console: Shows the details of an error messages, size of the program that was
compiled and additional info.

12. Board and Serial Port: Tells you what board is being used and what serial port it’s
connected to.

STEP3:
Connect your Arduino to the USB port of your computer. This may require a specific USB cable.
Every Arduino has a different virtual serial-port address, so you 'll need to reconfigure the port if
you're using different Arduinos.

STEP4:

44
Once the board is connected, you will need to go to Tools then Board then finally select Arduino
Uno.

Next, you have to tell the Arduino which port you are using on your computer.

To select the port, go to Tools then Port then select the port that says Arduino.

STEP5:
Test the microcontroller by using one of the preloaded programs, called sketches, in the Arduino
Programmer. Open one of the example sketches, and press the upload button to load it. The
Arduino should begin responding to the program: If you've set it to blink an LED light, for
example, the light should start blinking

The “void setup()” section is widely used to initialize variables, pin modes, set the serial baud
rate and related. The software only goes though the section once.The “void loop()” section is the
part of the code that loops back onto itself and is the main part of the code. In the Arduino
examples, this is called “Bare Minimum” under File-> Examples -> Basics. Note that you are
free to add subroutines using the same

45
syntax:

void subroutinename() {}

Almost every line of code needs to end with a semicolon ‘;’ (there are a few exceptions which
we will see later). To write single line comments in the code, type two back slashes followed by
the text:

//comments are overlooked when compiling your program

To write multi-line comments, start the comment with /* and end with */

/* This is a multi-line comment and saves you having to always use double slashes at the
beginning of every line. Comments are used used to explain the code textually. Good code
always has a lot of comments.*/

46
Step6:
To upload new code to the Arduino, either you'll need to have access to code you can paste into
the programmer, or you'll have to write it yourself, using the Arduino programming language to
create your own sketch. An Arduino sketch usually has five parts: a header describing the sketch
and its author; a section defining variables; a setup routine that sets the initial conditions of
variables and runs preliminary code; a loop routine, which is where you add the main code that
will execute repeatedly until you stop running the sketch; and a section where you can list other
functions that activate during the setup and loop routines. All sketches must include the setup

and loop routines.

STEP7:
Once you've uploaded the new sketch to your Arduino, disconnect it from your computer and
integrate it into your project as directed.

47
CHAPTER-5

SOFTWARE IMPLEMENTATION

PROGRAM:
//#include <RoninDMD.h>
//#include <fonts/Arial_Black_16.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);

#include <EEPROM.h>
#include "RTClib.h"
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
"Friday", "Saturday"};
#define mode_button D5
//#define FONT Arial_Black_16
//#define WIDTH 4
//#define HEIGHT 1
//RoninDMD P10(WIDTH, HEIGHT);
String Message = "Welcome to ASCET";

const int EEPROM_SIZE = 2048; // Size of EEPROM


const int PERIOD_SIZE = 50; // Size of each period data
const int NUM_PERIODS = 9; // Number of periods to store per year
const int START_ADDRESS_YEAR_2 = 0; // Starting address for 2nd year in EEPROM
const int START_ADDRESS_YEAR_3 = PERIOD_SIZE * NUM_PERIODS; // Starting
address for 3rd year
const int START_ADDRESS_YEAR_4 = PERIOD_SIZE * NUM_PERIODS * 2; // Starting
address for 4th year

48
// Struct to hold period data
struct Period {
char subject[20];
char faculty[20];

char mobile[15]; // New field for mobile number


}
int Index = 0;
void setup(){
Serial.begin(9600);
EEPROM.begin(EEPROM_SIZE);

pinMode(mode_button, INPUT_PULLUP);
lcd.begin();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(Message);

delay(2000);
if (! rtc.begin()) {
//Serial.println("Couldn't find RTC"); //Serial.flush();
// while (1) delay(10);
}
if (rtc.lostPower()) {

//Serial.println("RTC lost power, let's set the time!");


rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
//rtc.adjust(DateTime(2014, 1, 21, 9, 30, 0));
}
49
//rtc.adjust(DateTime(2024, 3, 25, 9, 35, 0));
//Serial.println("WELCOME");
lcd.clear();
lcd.setCursor(0, 0);

lcd.print("GSM Initializing...");
if (initializeGSM()) {
lcd.clear();
lcd.print("GSM ready");
// Serial.println("GSM module ready.");
delay(2000);

lcd.setCursor(0, 1);
lcd.print("Sending SMS");
//sendSMS("9704900473", "Device Activated");
}
else {
lcd.clear();

lcd.print("GSM failed.");
delay(2000);
}
}
String Sub;
String Name;

String Number;
int currentTime;
int startTime;
int endTime;
50
bool period_1 = true;
bool period_2 = true;
bool period_3 = true;
bool period_4 = true;

bool period_5 = true;


bool period_6 = true;
bool period_7 = true;
bool period_8 = true;
bool Lunch_time = true;
bool Scroll_status = false;

int Second_1st = 0; int Third_1st = 0; int Fourth_1st = 0;


int Second_2nd = 0; int Third_2nd = 0; int Fourth_2nd = 0;
int Second_3rd = 0; int Third_3rd = 0; int Fourth_3rd = 0;
int Second_4th = 0; int Third_4th = 0; int Fourth_4th = 0;
int Second_5th = 0; int Third_5th = 0; int Fourth_5th = 0;
int Second_6th = 0; int Third_6th = 0; int Fourth_6th = 0;

int Second_7th = 0; int Third_7th = 0; int Fourth_7th = 0;


String time_unit = "";
void loop(){
int year, period;
if (digitalRead(mode_button) == LOW) {
DateTime now = rtc.now();

//Serial.println("Date:" + String(now.day()) + "/" + String(now.month()) + "/" +


String(now.year()));
//Serial.println("Date:" + String(daysOfTheWeek[now.dayOfTheWeek()]));
int unit_hh = now.hour();

int unit_mm = now.minute();


51
char hh_buffer[3];
char mm_buffer[3];
sprintf(hh_buffer, "%02d", now.hour());
sprintf(mm_buffer, "%02d", now.minute());

if (unit_hh >= 12) {


time_unit = "PM";
}
else {
time_unit = "AM";
}

lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Time:" + String(hh_buffer) + ":" + String(mm_buffer) + " " + time_unit);
lcd.setCursor(0, 1);
lcd.print("Day :" + String(daysOfTheWeek[now.dayOfTheWeek()]));
delay(2000);

if (String(daysOfTheWeek[now.dayOfTheWeek()]) != "Sunday"){
convert_time(9, 30, 10, 20); //1st period
// Check if the current time falls within the specified range
if (currentTime >= startTime && currentTime <= endTime){
lcd.setCursor(14, 1);
lcd.print("1st-Pd");

//Serial.println("1st period");
readSchedule(2, Second_1st); //YEAR,PERIOD NUMBER
delay(100);
clear_lcd();
52
lcd.setCursor(0, 2);
lcd.print("2nd Year-Sub:" + Sub);
lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);

delay(2000);
//P10.loop();
//Scrolling_text(0 , 50 , "2nd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_1 == true)
sendSMS(Number, "Dear Sir/Madam\n You have a class to 2nd Year\nSubject:" + Sub +
"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "2nd year" + "," + "1st
Hour" + "@"); delay(1000);

readSchedule(3, Third_1st); //YEAR,PERIOD NUMBER


delay(100);
clear_lcd();
lcd.setCursor(0, 2);
lcd.print("3rd Year-Sub:" + Sub);
lcd.setCursor(0, 3);

lcd.print("Faculty:" + Name);
delay(2000);
//P10.loop();
//Scrolling_text(0 , 50 , "3rd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_1 == true)
sendSMS(Number, "Dear Sir/Madam\n You have a class to 3rd Year\nSubject:" + Sub +
"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "3rd year" + "," + "1st Hour"
+ "@"); delay(1000);
readSchedule(4, Fourth_1st); //YEAR,PERIOD NUMBER
53
delay(100);
clear_lcd();
lcd.setCursor(0, 2);
lcd.print("4th Year-Sub:" + Sub);

lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);
delay(2000);
//P10.loop();
//Scrolling_text(0 , 50 , "4th Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_1 == true)

sendSMS(Number, "Dear Sir/Madam\n You have a class to 4th Year\nSubject:" + Sub +


"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "4th year" + "," + "1st Hour"
+ "@"); delay(1000);
period_1 = false;
}
convert_time(10, 20, 11, 10); //2nd period
// Check if the current time falls within the specified range

if (currentTime >= startTime && currentTime <= endTime) {


lcd.setCursor(14, 1);
lcd.print("2nd-Pd"); //Serial.println("2nd period");
readSchedule(2, Second_2nd); //YEAR,PERIOD NUMBER
delay(100);
clear_lcd();

lcd.setCursor(0, 2);
lcd.print("2nd Year-Sub:" + Sub);
lcd.setCursor(0, 3);
54
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "2nd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_2 == true)

sendSMS(Number, "Dear Sir/Madam\n You have a class to 2nd Year\nSubject:" + Sub +


"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "2nd year" + "," + "2nd
Hour" + "@"); delay(1000);
readSchedule(3, Third_2nd); //YEAR,PERIOD NUMBER
delay(100);
clear_lcd();
lcd.setCursor(0, 2);

lcd.print("3rd Year-Sub:" + Sub);


lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "3rd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_2 == true)

sendSMS(Number, "Dear Sir/Madam\n You have a class to 3rd Year\nSubject:" + Sub +


"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "3rd year" + "," + "2nd
Hour" + "@"); delay(1000);
readSchedule(4, Fourth_2nd); //YEAR,PERIOD NUMBER
delay(100);
clear_lcd();
lcd.setCursor(0, 2);

lcd.print("4th Year-Sub:" + Sub);


lcd.setCursor(0, 3);
55
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "4th Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_2 == true)

sendSMS(Number, "Dear Sir/Madam\n You have a class to 4th Year\nSubject:" + Sub +


"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "4th year" + "," + "2nd
Hour" + "@"); delay(1000);
period_2 = false;
}
convert_time(11, 10, 11, 30); //Break
// Check if the current time falls within the specified range

if (currentTime >= startTime && currentTime <= endTime){


lcd.setCursor(14, 1);
lcd.print(" ");
clear_lcd();
//Serial.println("Break...");
lcd.setCursor(0, 2);

lcd.print(" Break ");


delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "Break"); delay(500);
}
convert_time(11, 30, 12, 20); //3rd period
// Check if the current time falls within the specified range

if (currentTime >= startTime && currentTime <= endTime) {


lcd.setCursor(14, 1);
lcd.print("3rd-Pd");//Serial.println("3rd period");
56
readSchedule(2, Second_3rd); //YEAR,PERIOD NUMBER
delay(100);
clear_lcd();
lcd.setCursor(0, 2);

lcd.print("2nd Year-Sub:" + Sub);


lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "2nd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_3 == true)

//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "2nd year" + "," + "3rd
Hour" + "@"); delay(1000);
readSchedule(3, Third_3rd); //YEAR,PERIOD NUMBER
delay(100);

clear_lcd();
lcd.setCursor(0, 2);
lcd.print("3rd Year-Sub:" + Sub);
lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();

//Scrolling_text(0 , 50 , "3rd Year - Sub:" + Sub + " " + "Faculty:" + Name );


if (period_3 == true)
sendSMS(Number, "Dear Sir/Madam\n You have a class to 3rd Year\nSubject:" + Sub +
"\nThank you!");

//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "3rd year" + "," + "3rd
Hour" + "@"); delay(1000);
readSchedule(4, Fourth_3rd); //YEAR,PERIOD NUMBER
57
delay(100);
clear_lcd();
lcd.setCursor(0, 2);
lcd.print("4th Year-Sub:" + Sub);

lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "4th Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_3 == true)
sendSMS(Number, "Dear Sir/Madam\n You have a class to 4th Year\nSubject:" + Sub +
"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "4th year" + "," + "3rd
Hour" + "@"); delay(1000);
period_3 = false;
}
convert_time(12, 20, 13, 10); //4th period
// Check if the current time falls within the specified range
if (currentTime >= startTime && currentTime <= endTime) {

lcd.setCursor(14, 1);
lcd.print("4th-Pd");
//Serial.println("The current time is between 9:30 AM and 10:20 AM");
readSchedule(2, Second_4th); //YEAR,PERIOD NUMBER
delay(100);
clear_lcd();

lcd.setCursor(0, 2);
lcd.print("2nd Year-Sub:" + Sub);
lcd.setCursor(0, 3);
58
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "2nd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_4 == true)

sendSMS(Number, "Dear Sir/Madam\n You have a class to 2nd Year\nSubject:" + Sub +


"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "2nd year" + "," + "4th
Hour" + "@"); delay(1000);
readSchedule(3, Third_4th); //YEAR,PERIOD NUMBER
delay(100);
clear_lcd();
lcd.setCursor(0, 2);

lcd.print("3rd Year-Sub:" + Sub);


lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "3rd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_4 == true)

sendSMS(Number, "Dear Sir/Madam\n You have a class to 3rd Year\nSubject:" + Sub +


"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "3rd year" + "," + "4th
Hour" + "@"); delay(1000);
readSchedule(4, Fourth_4th); //YEAR,PERIOD NUMBER
delay(100);
clear_lcd();
lcd.setCursor(0, 2);

lcd.print("4th Year-Sub:" + Sub);


lcd.setCursor(0, 3);
59
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "4th Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_4 == true)

sendSMS(Number, "Dear Sir/Madam\n You have a class to 4th Year\nSubject:" + Sub +


"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "4th year" + "," + "4th Hour"
+ "@"); delay(1000);
period_4 = false;
}
convert_time(13, 10, 14, 00); //Lunch
// Check if the current time falls within the specified range

if (currentTime >= startTime && currentTime <= endTime){


lcd.setCursor(14, 1);
lcd.print(" ");
//Serial.println("Lunch Break...");
clear_lcd();
lcd.setCursor(0, 2);

lcd.print(" Lunch Break ");


delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "Lunch Break..."); delay(500);
if (Lunch_time == true)
//Serial.println("$Lunch,Lunch, ,Lunch,Lunch@"); delay(1000);
Lunch_time = false;

}
convert_time(14, 00, 14, 50); //5th period
// Check if the current time falls within the specified range
60
if (currentTime >= startTime && currentTime <= endTime) {
lcd.setCursor(14, 1);
lcd.print("5th-Pd");
//Serial.println("5th period");

readSchedule(2, Second_5th); //YEAR,PERIOD NUMBER


delay(100);
clear_lcd();
lcd.setCursor(0, 2);
lcd.print("2nd Year-Sub:" + Sub);
lcd.setCursor(0, 3);

lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "2nd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_5 == true)
sendSMS(Number, "Dear Sir/Madam\n You have a class to 2nd Year\nSubject:" + Sub +
"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "2nd year" + "," + "5th
Hour" + "@"); delay(1000);

readSchedule(3, Third_5th); //YEAR,PERIOD NUMBER


delay(100);
clear_lcd();
lcd.setCursor(0, 2);
lcd.print("3rd Year-Sub:" + Sub);
lcd.setCursor(0, 3);

lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "3rd Year - Sub:" + Sub + " " + "Faculty:" + Name );
61
if (period_5 == true)
sendSMS(Number, "Dear Sir/Madam\n You have a class to 3rd Year\nSubject:" + Sub +
"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "3rd year" + "," + "5th
Hour" + "@"); delay(1000);
readSchedule(4, Fourth_5th); //YEAR,PERIOD NUMBER

delay(100);
clear_lcd();
lcd.setCursor(0, 2);
lcd.print("4th Year-Sub:" + Sub);
lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);

delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "4th Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_5 == true)
sendSMS(Number, "Dear Sir/Madam\n You have a class to 4th Year\nSubject:" + Sub +
"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "4th year" + "," + "5th Hour"
+ "@"); delay(1000);
period_5 = false;
}
convert_time(14, 50, 15, 40); //6th Period
// Check if the current time falls within the specified range
if (currentTime >= startTime && currentTime <= endTime) {
lcd.setCursor(14, 1);
lcd.print("6th-Pd");

//Serial.println("6th Period");
readSchedule(2, Second_6th); //YEAR,PERIOD NUMBER
62
delay(100);
clear_lcd();
lcd.setCursor(0, 2);
lcd.print("2nd Year-Sub:" + Sub);

lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "2nd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_6 == true)
sendSMS(Number, "Dear Sir/Madam\n You have a class to 2nd Year\nSubject:" + Sub +
"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "2nd year" + "," + "6th
Hour" + "@"); delay(1000);
readSchedule(3, Third_6th); //YEAR,PERIOD NUMBER
delay(100);
clear_lcd();
lcd.setCursor(0, 2);
lcd.print("3rd Year-Sub:" + Sub);

lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "3rd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_6 == true)
sendSMS(Number, "Dear Sir/Madam\n You have a class to 3rd Year\nSubject:" + Sub +
"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "3rd year" + "," + "6th
Hour" + "@"); delay(1000);
readSchedule(4, Fourth_6th); //YEAR,PERIOD NUMBER
63
delay(100);
clear_lcd();
lcd.setCursor(0, 2);
lcd.print("4th Year-Sub:" + Sub);

lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "4th Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_6 == true)
sendSMS(Number, "Dear Sir/Madam\n You have a class to 4th Year\nSubject:" + Sub +
"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "4th year" + "," + "6th Hour"
+ "@"); delay(1000);
period_6 = false;
}
convert_time(15, 40, 16, 30); //7th period
// Check if the current time falls within the specified range
if (currentTime >= startTime && currentTime <= endTime) {

lcd.setCursor(14, 1);
lcd.print("7th-Pd");
//Serial.println("7th period");
readSchedule(2, Second_7th); //YEAR,PERIOD NUMBER
delay(100);
clear_lcd();

lcd.setCursor(0, 2);
lcd.print("2nd Year-Sub:" + Sub);
lcd.setCursor(0, 3);
64
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "2nd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_7 == true)

sendSMS(Number, "Dear Sir/Madam\n You have a class to 2nd Year\nSubject:" + Sub +


"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "2nd year" + "," + "7th
Hour" + "@"); delay(1000);
readSchedule(3, Third_7th); //YEAR,PERIOD NUMBER
delay(100);
clear_lcd();
lcd.setCursor(0, 2);

lcd.print("3rd Year-Sub:" + Sub);


lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "3rd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_7 == true)

sendSMS(Number, "Dear Sir/Madam\n You have a class to 3rd Year\nSubject:" + Sub +


"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "3rd year" + "," + "7th
Hour" + "@"); delay(1000);
readSchedule(4, Fourth_7th); //YEAR,PERIOD NUMBER
delay(100);
clear_lcd();
lcd.setCursor(0, 2);

lcd.print("4th Year-Sub:" + Sub);


lcd.setCursor(0, 3);
65
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "4th Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_7 == true)

sendSMS(Number, "Dear Sir/Madam\n You have a class to 4th Year\nSubject:" + Sub +


"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "4th year" + "," + "7th Hour"
+ "@"); delay(1000);
period_7 = false;
}
convert_time(16, 30, 23, 59); //Thank you
// Check if the current time falls within the specified range

if (currentTime >= startTime && currentTime <= endTime) {


lcd.setCursor(14, 1);
lcd.print(" ");
period_1 = true;
period_2 = true;
period_3 = true;

period_4 = true;
period_5 = true;
period_6 = true;
period_7 = true; //Serial.println("Thank you!");
clear_lcd();
lcd.setCursor(0, 2);

lcd.print(" Thank you! ");


delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "Thank You!" ); delay(500);
66
}
convert_time(01, 00, 9, 30); //Welcome
// Check if the current time falls within the specified range
if (currentTime >= startTime && currentTime <= endTime){

lcd.setCursor(14, 1);
lcd.print(" "); //Serial.println("Welcome");
clear_lcd();
lcd.setCursor(0, 2);
lcd.print(" Welcome "); //P10.loop();
//Scrolling_text(0 , 50 , "WELCOME" ); delay(500);

}
}
else {
lcd.setCursor(14, 1);
lcd.print(" "); //Serial.println("Sunday");
clear_lcd();

lcd.setCursor(0, 2);
lcd.print(" Happy Sunday! "); //P10.loop();
//Scrolling_text(0 , 50 , "Happy Sunday" ); delay(500);
}
read_sms();
}

else {
Serial.println("Waiting For User Input");
lcd.clear();
lcd.setCursor(0, 0);
67
lcd.print("Open Serial monitor");
lcd.setCursor(0, 1);
lcd.print("U - Update shedule");
lcd.setCursor(0, 2);

lcd.print("T - Update Time/Date");


lcd.setCursor(0, 3);
lcd.print("E - Exit");
delay(250);
if (Serial.available() > 0) {
char cmd = Serial.read();

if (cmd == 'u' || cmd == 'U') {


while (1) {
ay:
Serial.readString();
Serial.println("Enter year (2, 3, or 4):");
while (!Serial.available()) {}

year = Serial.parseInt();
Serial.println(year);
if (year < 2 || year > 4) {
//return;
if (year == 0) {
break;

}
else {
Serial.println("Invalid year!");
goto ay;
68
}
}
ap:
Serial.readString();

Serial.println("Enter period number (1 to 9):");


while (!Serial.available()) {}
period = Serial.parseInt();
if (period < 1 || period > 9) {
if (period == 0) {
break;

}
else {
Serial.println("Invalid period number!"); //return;
goto ap;
}
}

// Check if the user wants to view or update the schedule


vu:
Serial.readString();
Serial.println("Do you want to view (v) or update (u) the schedule?");
while (!Serial.available()) {}
char choice = Serial.read();

if (choice == 'v' || choice == 'V') {


readSchedule(year, period);
}
else if (choice == 'u' || choice == 'U') {
69
updateSchedule(year, period);
}
else if (choice == 'E' || choice == 'e'){
break;

}
else{
Serial.println("Invalid choice!");
goto vu;
}
}

}
if (cmd == 'T' || cmd == 't'){
Serial.readString();
Serial.println("Enter hours");
while (!Serial.available()) {}
int hh = Serial.parseInt();

Serial.readString();
Serial.println("Enter minutes");
while (!Serial.available()) {}
int mm = Serial.parseInt();
Serial.readString();
Serial.println("Enter Date");

while (!Serial.available()) {}
int dd = Serial.parseInt();
Serial.readString();
Serial.println("Enter Month");
70
while (!Serial.available()) {}
int mn = Serial.parseInt();
Serial.readString();
Serial.println("Enter Year");

while (!Serial.available()) {}
int yy = Serial.parseInt();
rtc.adjust(DateTime(yy, mn, dd, hh, mm, 0)); delay(100);
Serial.println("Time and Date Updated");
}
}

}
}
void convert_time(int sh, int sm, int eh, int em){
DateTime now = rtc.now();
Serial.println("Time:" + String(now.hour()) + "/" + String(now.minute()) + "/" +
String(now.second()));
delay(500);
// Convert current time to minutes for easier comparison
currentTime = now.hour() * 60 + now.minute();
// Convert the boundary times (9:30 AM and 10:20 AM) to minutes

startTime = sh * 60 + sm; // 9:30 AM


endTime = eh * 60 + em; // 10:20 AM
if (String(daysOfTheWeek[now.dayOfTheWeek()]) == "Monday") {
Second_1st = 4; Third_1st = 4; Fourth_1st = 1;
Second_2nd = 3; Third_2nd = 7; Fourth_2nd = 1;
Second_3rd = 1; Third_3rd = 7; Fourth_3rd = 1;

Second_4th = 2; Third_4th = 7; Fourth_4th = 1;


71
Second_5th = 3; Third_5th = 2; Fourth_5th = 1;
Second_6th = 5; Third_6th = 3; Fourth_6th = 1;
Second_7th = 8; Third_7th = 6; Fourth_7th = 1;
}

if (String(daysOfTheWeek[now.dayOfTheWeek()]) == "Tuesday") {
Scroll_status = true;
Second_1st = 5; Third_1st = 3; Fourth_1st = 1;
Second_2nd = 1; Third_2nd = 2; Fourth_2nd = 1;
Second_3rd = 2; Third_3rd = 1; Fourth_3rd = 1;
Second_4th = 3; Third_4th = 5; Fourth_4th = 1;

Second_5th = 7; Third_5th = 4; Fourth_5th = 2;


Second_6th = 7; Third_6th = 2; Fourth_6th = 2;
Second_7th = 7; Third_7th = 1; Fourth_7th = 2;
}
if (String(daysOfTheWeek[now.dayOfTheWeek()]) == "Wednesday") {
Scroll_status = true;

Second_1st = 3; Third_1st = 1; Fourth_1st = 1;


Second_2nd = 7; Third_2nd = 5; Fourth_2nd = 1;
Second_3rd = 7; Third_3rd = 3; Fourth_3rd = 1;
Second_4th = 7; Third_4th = 2; Fourth_4th = 1;
Second_5th = 2; Third_5th = 7; Fourth_5th = 2;
Second_6th = 5; Third_6th = 7; Fourth_6th = 2;

Second_7th = 4; Third_7th = 7; Fourth_7th = 2;


}
if ((daysOfTheWeek[now.dayOfTheWeek()]) == "Thursday") {
Scroll_status = true;
72
Second_1st = 1; Third_1st = 4; Fourth_1st = 1;
Second_2nd = 3; Third_2nd = 3; Fourth_2nd = 1;
Second_3rd = 2; Third_3rd = 1; Fourth_3rd = 1;
Second_4th = 4; Third_4th = 2; Fourth_4th = 1;

Second_5th = 7; Third_5th = 5; Fourth_5th = 2;


Second_6th = 7; Third_6th = 9; Fourth_6th = 2;
Second_7th = 7; Third_7th = 8; Fourth_7th = 2;
}
if (String(daysOfTheWeek[now.dayOfTheWeek()]) == "Friday"){
Scroll_status = true;

Second_1st = 1; Third_1st = 5; Fourth_1st = 1;


Second_2nd = 7; Third_2nd = 4; Fourth_2nd = 1;
Second_3rd = 7; Third_3rd = 3; Fourth_3rd = 1;
Second_4th = 7; Third_4th = 1; Fourth_4th = 1;
Second_5th = 1; Third_5th = 7; Fourth_5th = 2;
Second_6th = 5; Third_6th = 7; Fourth_6th = 2;

Second_7th = 9; Third_7th = 7; Fourth_7th = 2;


}
if (String(daysOfTheWeek[now.dayOfTheWeek()]) == "Saturday") {
Scroll_status = true;
Second_1st = 2; Third_1st = 2; Fourth_1st = 1;
Second_2nd = 1; Third_2nd = 5; Fourth_2nd = 1;

Second_3rd = 3; Third_3rd = 4; Fourth_3rd = 1;


Second_4th = 4; Third_4th = 1; Fourth_4th = 1;
Second_5th = 8; Third_5th = 3; Fourth_5th = 2;
Second_6th = 5; Third_6th = 8; Fourth_6th = 2;
73
Second_7th = 6; Third_7th = 8; Fourth_7th = 2;
}
}
//void Scrolling_text(int text_height , int scroll_speed , String scroll_text ) {

// static uint32_t pM ;
// pM = millis();
// static uint32_t x = 0;
// scroll_text = scroll_text + " ";
// bool scrl_while = 1 ;
// int dsp_width = P10.width();

// int txt_width = P10.textWidth(scroll_text);


// while (scrl_while == 1) {
// P10.loop();
// delay(1);
// if (millis() - pM > scroll_speed) {
// P10.setFont(FONT);

// P10.drawText(dsp_width - x, text_height, scroll_text);


// x++;
// if (x > txt_width + dsp_width) {
// x=0;
// scrl_while = 0 ;
// }

// pM = millis();
// }
// }
//}
74
void readSchedule(int year, int period) {
int address;
switch (year) {
case 2:

address = START_ADDRESS_YEAR_2;
break;
case 3:
address = START_ADDRESS_YEAR_3;
break;
case 4:

address = START_ADDRESS_YEAR_4;
break;
default:
Serial.println("Invalid year!");
return;
}

// Calculate the EEPROM address for the specified period


address += (period - 1) * PERIOD_SIZE;
// Create a Period struct to hold the schedule data
Period currentPeriod;
// Read the schedule data from EEPROM
EEPROM.get(address, currentPeriod);

// Print the schedule data to Serial Monitor


//Serial.println("Schedule for Year " + String(year) + ", Period " + String(period) + ":");
// Print subject until null terminator
//Serial.print("Subject: ");
75
//Serial.println(currentPeriod.subject);
// Print faculty until null terminator
//Serial.print("Faculty: ");
//Serial.println(currentPeriod.faculty);

//Serial.print("Mobile: ");
//Serial.println(currentPeriod.mobile);
Sub = currentPeriod.subject;
Index = Sub.indexOf('$');
Sub = Sub.substring(0, Index);
Serial.println("Subject:" + Sub);

Name = currentPeriod.faculty;
Index = Name.indexOf('$');
Name = Name.substring(0, Index);
Serial.println("Name:" + Name);
Number = currentPeriod.mobile;
Number = Number.substring(0, 10);

Serial.println("Number:" + Number);
}
void updateSchedule(int year, int period) {
int address;
switch (year) {
case 2:

address = START_ADDRESS_YEAR_2;
break;
case 3:
address = START_ADDRESS_YEAR_3;
76
break;
case 4:
address = START_ADDRESS_YEAR_4;
break;

default:
Serial.println("Invalid year!");
return;
}
// Calculate the EEPROM address for the specified period
address += (period - 1) * PERIOD_SIZE;

// Clear the EEPROM location for the specified period


Period clearPeriod;
EEPROM.put(address, clearPeriod);
// Create a Period struct to hold the updated schedule data
Period updatedPeriod;
// Prompt user to enter subject and faculty

Serial.readString();
Serial.println("Enter subject name:");
while (!Serial.available()) {}
Serial.readBytesUntil('\n', updatedPeriod.subject, sizeof(updatedPeriod.subject) - 1); // Read
subject name
Serial.readString();
Serial.println("Enter faculty name:");
while (!Serial.available()) {}
Serial.readBytesUntil('\n', updatedPeriod.faculty, sizeof(updatedPeriod.faculty) - 1); // Read
faculty name
Serial.readString();
77
Serial.println("Enter faculty mobile number:"); // Prompt for mobile number
while (!Serial.available()) {}
Serial.readBytesUntil('\n', updatedPeriod.mobile, sizeof(updatedPeriod.mobile) - 1); // Read
mobile number
// Write the updated schedule data to EEPROM
EEPROM.put(address, updatedPeriod);
EEPROM.commit();
// Notify user that schedule has been updated

Serial.println("Schedule updated successfully!");


}
void clear_lcd(){
for (int l = 0; l < 20; l++){
lcd.setCursor(l, 2);
lcd.print(" ");

lcd.setCursor(l, 3);
lcd.print(" ");
}
}
/*GSM*/
bool initializeGSM(){

lcd.setCursor(0, 1);
lcd.print("ATE0-");
Serial.println("ATE0");
delay(1000);
if (Serial.find("OK")) {
lcd.setCursor(5, 1);

lcd.print("OK ");
78
}
else {
lcd.setCursor(5, 1);
lcd.print("Error");

}
lcd.setCursor(0, 1);
lcd.print("AT-");
Serial.println("AT");
delay(1000);
if (Serial.find("OK")){

lcd.setCursor(3, 1);
lcd.print("OK ");
}
else {
lcd.setCursor(3, 1);
lcd.print("Error");

}
lcd.setCursor(0, 1);
lcd.print("AT+CMGF-");
Serial.println("AT+CMGF=1");
delay(1000);
if (Serial.find("OK")) {

lcd.setCursor(8, 1);
lcd.print("OK ");
}
else {
79
lcd.setCursor(8, 1);
lcd.print("Error");
}
lcd.setCursor(0, 1);

lcd.print("AT+CREG?-");
Serial.println("AT+CREG?");
delay(1000);
if (Serial.find("+CREG: 0,1") || Serial.find("+CREG: 0,5")) {
lcd.setCursor(9, 1);
lcd.print("ok ");

return true;
}
else {
lcd.setCursor(9, 1);
lcd.print("Error ");
return false;

}
}
// Function to send SMS
void sendSMS(String num, String message){
lcd.clear();
lcd.setCursor(0, 0);

lcd.print("Sending SMS...");
lcd.setCursor(0, 1);
lcd.print(num);
Serial.println("AT+CMGF=1");
80
delay(1000);
Serial.println("AT+CMGS=\"" + num + "\"");
delay(1000);
Serial.print(message);

Serial.write(26); // CTRL+Z
delay(3000);
}
void read_sms(){
if (Serial.available()) {
String response = Serial.readString();

response.trim();
//Serial.println(response); // Print the raw response for debugging
// Check if the response contains the +CMT indicator
if (response.startsWith("+CMTI:")) {
Serial.println("AT+CMGR=1");
while (!Serial.available() > 0);

response = Serial.readString();
response.trim();
//Serial.println(response);
// Extract the phone number
int startIndex = response.indexOf(',') + 5;
int endIndex = response.indexOf('"', startIndex);

String incomingNumber = response.substring(startIndex, endIndex);


// Extract the message (second line)
int messageStartIndex = response.indexOf('\n') + 1;
int messageEndIndex = response.indexOf('$', messageStartIndex);
81
//messageStartIndex = response.indexOf('\n', messageStartIndex) + 1;
//endIndex = response.indexOf('\n', messageStartIndex);
String message = response.substring(messageStartIndex, messageEndIndex);
message.trim(); // Remove any extra whitespace or newlines

// Print the extracted phone number and message


//Serial.println("Phone Number: " + incomingNumber);
//Serial.println("Message: " + message);
// Display on LCD
lcd.clear();
lcd.setCursor(0, 0);

lcd.print("From:" + incomingNumber);
lcd.setCursor(0, 1);
lcd.print("Msg: " + message);
Serial.println("AT+CMGD=1"); delay(3000);
// if (message.startsWith("Track"))
// {

// sendSMS("9704900473", "Present Location:\nGPS: https://maps.google.com/?q=" +


String(latitude, 6) + "," + String(longitude, 6));
// }
}

}
}

82
CHAPTER-6

CONCLUSION AND FUTURE SCOPE

CONCLUSION:

The project is intended to present an overview of a College Timetable and Notice Board
Display with Auto SMS to Faculty, which automates timetable management and communication
within an institution. The system efficiently updates and displays timetables and important
notices while sending instant SMS alerts to faculty members.

1. Faculty members receive real-time SMS alerts regarding schedule changes, reducing
miscommunication.

2. The digital notice board ensures timely updates of announcements and event notifications.

3. It minimizes manual efforts and enhances efficiency in academic schedule management.

From all these, we can conclude that if we implement this system, it will improve coordination,
enhance communication, and streamline administrative tasks in an educational institution.

FUTURE SCOPE:

The College Timetable and Notice Board Display with Auto SMS to Faculty system can be
further enhanced by integrating cloud-based services for real-time updates and automated
scheduling. Implementing AI-driven scheduling can optimize faculty and classroom allocations,
reducing conflicts and improving efficiency. Additionally, a mobile application can be
introduced to provide instant notifications, ensuring seamless communication between faculty
and students.

Expanding the system with IoT-enabled smart displays and voice-assisted announcements will
improve accessibility and ensure timely dissemination of information. These advancements will
make academic schedule management more efficient and automated, reducing manual efforts
and enhancing the overall experience for faculty and students.

83
REFERENCES

[1]. “College Time Table and Notice Board Display With Auto SMS to Faculty" by [Author
names not available in search results] (Journal of Engineering Sciences): This paper directly
addresses the combination of a timetable display, notice board, and auto SMS to faculty using
GSM technology.

[2]. "E-Notice Board With Timetable Display in Class Room using GSM Technology" by
[Author names not available in search results] (International Journal of Engineering Research
and Technology): This paper focuses on using GSM to update both an electronic notice board
and potentially send SMS related to the timetable.

[3]. "Development Of IOT Based Smart Scheduler And Faculty Notification System" by
[Author names not available in search results] (Indian Institution of Industrial Engineering): This
project explores an IoT-based system for scheduling and notifying faculty, likely encompassing
timetable-related information.

[4]. Edumarshal's Dynamic Timetable Management: This resource highlights real-time


timetable adjustments and instant notifications for faculty absences and substitutions.
[5]. Genius Time Table Management System: This software offers automated scheduling and
mentions improved communication, which could include notifications.
[6]. EduSec ERP's Timetable Management System: This system emphasizes swift
scheduling, faculty switch management, and quick notifications (SMS/Email) for lecture updates
and faculty replacements.
[7]. Fedena's Timetable Management System: This system includes features for easy
scheduling, managing substitutions, and sending instant notifications to teachers.
[8]. "Digital Notice Boards for Schools and Corporate Environments" (Sparsa Digital):
This article discusses the advantages of digital notice boards for real-time updates and enhanced
communication in educational settings.
[9]. "Digital Signage Software for Schools & Universities" (Wilyer): This resource focuses
on digital signage for displaying various information, including schedules and announcements,
potentially integrated with notification systems.

84

You might also like