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

Capstone Project b8

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. It outlines the development of an automated system for displaying college timetables and notices, along with an SMS notification feature for faculty members to enhance communication and efficiency. 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

Capstone Project b8

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. It outlines the development of an automated system for displaying college timetables and notices, along with an SMS notification feature for faculty members to enhance communication and efficiency. 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/ 88

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

2
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 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

i
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 Capstone 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:

PROJECT ASSOCIATES

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

ii
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, PhD, 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)

iii
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

iv
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

v
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

vi
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

vii
LIST OF TABLES

DESCRIPTION PAGE NO

Specifications of Node MCU 14

LCD PIN Functions 23

20*4 LCD Command 23

viii
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, 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

2
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.

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

3
 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 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.

4
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).

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

5
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 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.

6
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.

7
2.2 BLOCK DIAGRAM:

Fig 2.1:Block Diagram

2.3 CIRCUIT DIAGRAM:

Fig 2.2:Schematic Diagram

8
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 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.

9
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.

10
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.

Fig 3.1.1:Node MCU Diagram

11
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.2:Pin Diagram Of Node MCU

12
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

13
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.
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

14
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.
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.3.1:Power Supply


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.

15
Filtering unit:
Filter circuit which is usually a capacitor acts as a surge arrester always follows the rectifier 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

16
3.3.3.BLOCK DIAGRAM:

Fig 3.3.2:Block Diagram of Power Supply

3.3.4.BASIC POWER SUPPLY CIRCUIT:

Fig 3.3.3: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).

17
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 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.
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.

18
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.
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.

19
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

Logic
Function Pin Number Name Description
State

Ground 1 Vss - 0V

Power
2 Vdd - +5V
supply

Contrast 3 Vee - 0 – Vdd

20
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
6 E Normal operating
From 1 to
Data/commands are transferred to LCD
0
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

3 Decrement cursor (shift cursor to left)

4 Increment cursor (shift cursor to right)

5 Shift display right

6 Shift display left

7 Display off, cursor off

21
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

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

22
 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 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

23
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).

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 usedBut 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

24
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

25
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).

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.

26
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

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:

27
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:

3. 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.

28
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:

29
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

30
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.

31
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.

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.

Fig 3.7.2:Shunt Voltage Regulator

32
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.

Fig 3.7.3:Switching Voltage Regulator

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

33
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

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

34
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


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

35
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
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.

36
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.

37
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.

38
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.

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.

39
STEP4:

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.

40
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

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

41
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.*/

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.

42
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

// Struct to hold period data

43
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));
}
//rtc.adjust(DateTime(2024, 3, 25, 9, 35, 0));
//Serial.println("WELCOME");

44
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;
bool period_1 = true;
bool period_2 = true;
bool period_3 = true;

45
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();
char hh_buffer[3];
char mm_buffer[3];

sprintf(hh_buffer, "%02d", now.hour());


sprintf(mm_buffer, "%02d", now.minute());

46
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();

lcd.setCursor(0, 2);
lcd.print("2nd Year-Sub:" + Sub);
lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);
delay(2000);

47
//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
delay(100);
clear_lcd();
lcd.setCursor(0, 2);

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


lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);

48
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);
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);

49
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);
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;

50
}
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");
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 );

51
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
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!");

52
//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);
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);

53
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);
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){

54
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
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 );

55
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 );
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)

56
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


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();

57
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

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

58
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);

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)

59
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);
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;

60
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);
}
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);

61
}
read_sms();
}
else {

Serial.println("Waiting For User Input");


lcd.clear();
lcd.setCursor(0, 0);
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;

62
if (year == 0) {
break;
}
else {

Serial.println("Invalid year!");
goto ay;
}
}
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()) {}

63
char choice = Serial.read();
if (choice == 'v' || choice == 'V') {
readSchedule(year, period);
}

else if (choice == 'u' || choice == 'U') {


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");

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

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;

65
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;
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;
}

66
if ((daysOfTheWeek[now.dayOfTheWeek()]) == "Thursday") {
Scroll_status = true;
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;

67
Second_6th = 5; Third_6th = 8; Fourth_6th = 2;
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();
// }
// }
//}

68
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: ");
//Serial.println(currentPeriod.subject);

69
// 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;
break;
case 4:

70
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();
Serial.println("Enter faculty mobile number:"); // Prompt for mobile number
while (!Serial.available()) {}

71
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 ");
}

else {
lcd.setCursor(5, 1);

72
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 {
lcd.setCursor(8, 1);
lcd.print("Error");
}
lcd.setCursor(0, 1);

73
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");

delay(1000);
Serial.println("AT+CMGS=\"" + num + "\"");
delay(1000);
Serial.print(message);
Serial.write(26); // CTRL+Z

74
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);
//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);

75
//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));
// }
}

}
}

76
CHAPTER-6

RESULT ANALYSIS

RESULT ANALYSIS

Fig.6.1:College Time table and notice board display with auto SMS to factly

The implementation of the College Time Table and Notice Board Display System with Auto SMS to
Faculty yields significant improvements in communication, organization, and administrative
efficiency within the institution. The digitalization of timetable and notice board management reduces
the reliance on physical mediums and manual coordination. The automatic SMS feature ensures that
faculty are immediately informed of any schedule changes or important announcements, leading to
improved punctuality, reduced confusion, and better preparedness for lectures and events. The real-
time update capability minimizes errors and ensures consistent dissemination of information.

From an analytical perspective, the system demonstrates a marked reduction in communication delays
and administrative workload. Faculty feedback often highlights increased satisfaction due to timely
updates and clarity in scheduling. The system’s performance metrics—such as message delivery rates,
update frequencies, and user engagement with digital boards—show a high degree of reliability and
efficiency. Furthermore, it lays a solid foundation for future enhancements, such as mobile app
integration, student notifications, and attendance tracking, thereby reinforcing its role as a scalable and
impactful solution in educational management.

77
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.

78
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.

79

You might also like