Final Project Report
Final Project Report
(AUTONOMOUS)
A Capstone Project Report on
COLLEGE TIME TABLE AND NOTICE BOARD DISPLAY WITH AUTO SMS TO
FACULTY
BACHELOR OF TECHNOLOGY
IN
www.audisankara.ac.in
2025
AUDISANKARA COLLEGE OF ENGINEERING & TECHNOLOGY
(AUTONOMOUS)
Accredited by NAAC with ‘A+’ Grade | Accredited by NBA Approved by AICTE | Affiliated to JNTUA
CERTIFICATE
This is to certify that the Capstone project report on entitled “COLLEGE TIME
TABLE AND NOTICE BOARD DISPLAY WITH AUTO SMS TO FACULTY” is the
Bonafide work done by the student K. VENKATA RUCHITHA (21G21A0475), P.
PAVITHRA (21G21A04D4), M. SANTHOSH KUMAR (21G21A04A3), K. GAGAN
CHANDRA (21G21A0494), in partial fulfillment of the requirements for the award of
the degree of Bachelor of Technology in Electronics and Communication Engineering,
from Jawaharlal Nehru Technological University Anantapur, Anantapuramu, during
the year 2024-2025.
DECLARATION
Date:
Place:
K. VENKATA RUCHITHA(21G21A0475)
P. PAVITRA(21G21A04D4)
M. SANTHOSH KUMAR(21G21A04A3)
K. GAGAN CHANDRA(21G21A0494)
ACKNOWLEDGEMENT
We express our deepest gratitude to Dr. Vanki Penchalaiah, Chairman of Audisankara
College of Engineering & Technology, for providing us with an excellent academic environment
and unwavering support throughout our project.
We sincerely appreciate the guidance and support of Dr. Raja Murugadoss Jeyaraju,
Director (Engg., & Principal), whose leadership and vision have inspired us to strive for
excellence.
We also extend our appreciation to Dr. G. Chenchu krishnaiah, M.E., Ph.D., MISTE.,
Department Project Coordinator, for providing valuable feedback and ensuring the smooth
progress of our project.
We would like to extend our heartfelt appreciation to our parents and friends, whose
encouragement, patience, and moral support have been our driving force in completing this
capstone project successfully.
Finally, we acknowledge the collaborative efforts of our team members, whose dedication and
hard work made this project possible.
K. VENKATA RUCHITHA(21G21A0475)
P. PAVITHRA (21G21A04D4)
M. SANTHOSH KUMAR ( 21G21A04A3)
K. GAGAN CHANDRA (21G21A0494)
CONTENTS
ABSTRACT 1
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
DESCRIPTION PAGE NO
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
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.
The first recognizably modern embedded system was the Apollo Guidance Computer,
2
developed by Charles Stark Draper at the MIT instrumentation Laboratory. The first mass-
produced embedded system was the automatics D-17 guidance Computer for the Minuteman
(missile), released in 1961. It was built from transistor logic and had a hard disk for main
memory. Since these early applications in the 1960s, embedded systems have come down in
price. There has also be an enormous rise in processing power and functionality. For example the
first microprocessor was the Intel 4004, which found its way into calculators and other small
systems, but required external memory and support chips.
The operating system runs above the hardware, and the application software runs above
the operating system. The same architecture is applicable to any computer including a desktop
computer. However, there are significant differences. It is not compulsory to have an operating
system in every embedded system. For small appliances such as remote control units, air
conditioners, toys etc., there is no need for an operating system and you can write only the
software specific to that application. For applications involving complex processing, it is
advisable to have an operating system. In such a case, you need to integrate the application
software with the operating system and then transfer the entire software on to the memory chip.
Once the software is transferred to the memory chip, the software will continue to run for a long
time you don’t need to reload new software.
3
Now, let us see the details of the various building blocks of the hardware of an embedded
system. As shown in Fig. the building blocks are;
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.
Unlike the desktops, the input devices to an embedded system have very limited
capability. There will be no keyboard or a mouse, and hence interacting with the embedded
4
system is no easy task. Many embedded systems will have a small keypad-you press one key to
give a specific command. A keypad may be used to input only the digits. Many embedded
systems used in process control do not have any input device for user interaction; they take
inputs from sensors or transducers 1’fnd produce electrical signals that are in turn fed to other
systems.
1.3.4. Output devices:
The output devices of the embedded systems also have very limited capability. Some
embedded systems will have a few Light Emitting Diodes (LEDs) to indicate the health status of
the system modules, or for visual indication of alarms. A small Liquid Crystal Display (LCD)
may also be used to display some important parameters.
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:
5
1.5. PROCCESORS:
Processors are the key elements in any embedded system. They interact with the memory,
where the various instructions of useful functions into a single IC package.
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.
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.
The system cannot safely be shut down for repair, or it is too inaccessible to repair.
Solutions may involve subsystems with redundant spares that can be switched over to, or
software “limp modes” that provide partial function. Examples include space systems,
undersea cables, navigational beacons, bore-hole systems and automobiles.
The system must be kept running for safety reasons. “Limp modes” are less tolerable.
Often backups are selected by an operator. Examples include Aircraft, Navigation,
Reactor control systems, safety-critical Chemical factory controls, Train signals and
6
engines on single-engine Aircraft.
The system will lose large amounts of money when shutdown: Telephone switches,
Factory controls, Bridge and elevator controls, funds transfer and market making,
automated sales and service.
7
CHAPTER-2
2.1 OVERVIEW:
The College Time Table and Notice Board Display with Auto SMS to Faculty system is
designed to automate and enhance the management of academic schedules and communication
within educational institutions. The project combines the display of real-time timetables and
notices on digital boards across the campus with an automatic SMS notification service, ensuring
seamless communication between the administration and faculty members. The core
functionality of the system revolves around a centralized database where the timetable and notice
board content are stored and maintained. Faculty and administrative staff can easily update the
timetable or post notices through a simple user interface. These updates are automatically
reflected on digital displays located in key areas of the campus, ensuring that students and
faculty have immediate access to the latest information. This minimizes the reliance on physical
notice boards and paper schedules, making the entire process more efficient and environmentally
friendly.
In addition to the digital display, the system features an automated SMS service that sends
timely notifications to faculty members. Whenever there is a change in the timetable, a new
notice is posted, or an important announcement is made, the relevant faculty members receive an
SMS alert. This ensures that faculty members are informed of any updates, even when they are
away from their offices or not in front of the notice board. The SMS service is designed to be
simple and reliable, with automatic updates triggered by changes in the database.
Overall, the system aims to simplify the communication process within the college by
offering an integrated solution for timetable management and faculty notifications. It ensures that
all stakeholders are well-informed and reduces the chances of miscommunication or missed
updates.
8
2.2 BLOCK DIAGRAM:
9
2.4 STEPS OF WORKING:
Switch on the power supply.
The system initializes, and all components (LCD, GSM module, Microcontroller) are
activated.
The microcontroller retrieves the scheduled timetable from memory.
The LCD/LED display updates in real-time to show the current and upcoming classes.
Admins can update the notice board via a web or mobile interface.
The latest notices are displayed dynamically on the digital board.
Before a class starts, the system sends an SMS alert to the respective faculty.
SMS contains details like subject, time, and classroom.
Admins can send urgent messages that trigger SMS notifications to faculty and
students.
These messages also appear on the display board.
The circuit for the College Time Table and Notice Board Display with Auto SMS to Faculty
is designed to provide seamless integration between digital displays, a centralized database, and
an automated SMS notification system. The heart of the circuit is a microcontroller such as an
Arduino or Node MCU, which coordinates all functions of the system. The microcontroller is
connected to a Wi-Fi or Ethernet module to enable real-time communication with a server that
holds the timetable and notice data. This allows the system to fetch the latest updates from the
database and transmit them to the digital display. The display, typically an LED or LCD screen,
is interfaced with the microcontroller, and it continuously shows the updated timetable and
notices, ensuring that the information is accessible to students and faculty members across
campus.In addition to the real-time display functionality, the circuit incorporates an SMS
notification module, such as a GSM module or a Wi-Fi-based SMS service, to send automatic
updates to faculty members. When changes are made to the timetable or new notices are posted,
the microcontroller retrieves the relevant information from the database and sends it to the SMS
module. The SMS module then transmits the updatedirectly to the affected faculty member’s
10
mobile phone, ensuring they are promptly informed. This feature eliminates the need for manual
communication and enhances the speed and reliability of the notification process, ensuring that
faculty members never miss important updates.
The circuit also includes essential power management components, such as voltage
regulators, fuses, and capacitors, to ensure the stability and reliability of the system. The
microcontroller and connected modules operate efficiently at a consistent voltage, preventing
damage from power fluctuations. The entire system is designed to be low-power and cost-
effective while ensuring robust performance. The integration of a digital display for public
information dissemination, combined with the automatic SMS feature for personalized faculty
updates, creates an efficient and user-friendly solution for managing college timetables and
notices, enhancing overall communication and coordination within the institution.
11
CHAPTER-3
HARDWARE DESCRIPTION
Most people call ESP8266 as a WIFI module, but it is actually a microcontroller. ESP8266 is the
name of the microcontroller developed by Express if Systems which is a company based out of
shanghai. This microcontroller has the ability to perform WIFI related activities hence it is
widely used as a WIFI module.
There are many types of ESP8266 module available ranging from ESP8266-01 to ESP8266-12.
The one that we are using in the tutorial is the ESP8266-12. We already covered ESP8266-01 in
our previous article. However all the ESP modules have only one type of ESP processor, what
differs is only the type of breakout bard used. The breakout board of ESP8266-01 will have only
2 GPIO pins whereas ESP-12 has 16 GPIO Pins.
Many equipments around us cannot be connected to internet on its own. So, this chip enables
these equipment to connect with internet and make them IoT devices. Now, you can easily open
your doors for IoT Projects with the help of this module. This low cost, small size module could
do wonders and is really simple and easy to use, provided we follow the right steps.
12
3.1.2.PIN CONFIGURATION:
GPIO Pins: NodeMCU has 16 GPIO pins as shown in above diagram which can be used
to control other peripheral devices like sensors, LEDs, switches etc. These pins can also
be used as PWM pins.
ADC (Analog to Digital Converter) Pin: It has one ADC channel and can be accessed
through pin A0.
SPI Pins: There are 4 pins (SCK, MISO, MOSI etc) available for SPI communication as
shown in green rectangle in diagram.
I2C Pins: It has I2C functionality support but due to internal use of these pins, you have
to find which pin is I2C.
UART Pins: It has two UART interfaces. Since, RXD0 and TXD0 is used to upload
codes to board, we cannot use them while programming this module. We can use RXD1
and TXD1 anytime.
13
Operating Voltage 5V
GPIOs 16
ADC 1, 10-bit
3.2.SWITCHES:
3.2.1.INTRODUCTION:
An electrical switch is any device used to interrupt the flow of electrons in a circuit. Switches
are essentially binary devices: they are either completely on (“closed”) or completely off
(“open”). There are many different types of switches, and we will explore some of these types in
this chapter.
Though it may seem strange to cover this elementary electrical topic at such a late stage in
this book series, I do so because the chapters that follow explore an older realm of digital
technology based on mechanical switch contacts rather than solid-state gate circuits, and a
thorough understanding of switch types is necessary for the undertaking. Learning the function
of switch-based circuits at the same time that you learn about solid-state logic gates makes both
topics easier to grasp, and sets the stage for an enhanced learning experience in Boolean algebra,
the mathematics behind digital logic circuits.
3.2.2.Types Of Switches:
Any switch designed to be operated by a person is generally called a hand switch, and they are
manufactured in several varieties:
Toggle switches are actuated by a lever angled in one of two or more positions. The
14
common light switch used in household wiring is an example of a toggle switch. Most toggle
switches will come to rest in any of their lever positions, while others have an internal spring
mechanism returning the lever to a certain normal position, allowing for what is called
“momentary” operation.
Pushbutton switches are two-position devices actuated with a button that is pressed and
released. Most pushbutton switches have an internal spring mechanism returning the button to its
“out,” or “unpressed,” position, for momentary operation. Some pushbutton switches will latch
alternately on or off with every push of the button. Other pushbutton switches will stay in their
“in,” or “pressed,” position until the button is pulled back out. This last type of pushbutton
switches usually have a mushroom-shaped button for easy push-pull action.
Selector switches are actuated with a rotary knob or lever of some sort to select one of two
or more positions. Like the toggle switch, selector switches can either rest in any of their
positions or contain spring-return mechanisms for momentary operation.
Proximity switches sense the approach of a metallic machine part either by a magnetic or
high-frequency electromagnetic field. Simple proximity switches use a permanent magnet to
actuate a sealed switch mechanism whenever the machine part gets close (typically 1 inch or less
15
Gas or liquid pressure can be used to actuate a switch mechanism if that pressure is applied
to a piston, diaphragm, or bellows, which converts pressure to mechanical force.
Electronic switches
A relay is an electrically operated switch. Many
relays use an electromagnet to operate a switching
mechanism mechanically, but other operating principles
are also used.
Solid-state relays control power circuits with no
moving parts, instead using a semiconductor device to
perform switching—often a silicon-controlled rectifier or triac.
The analogue switch uses two MOSFET transistors in a transmission gate arrangement as a
switch that works much like a relay, with some advantages and several limitations compared to
an electromechanical relay.
The power transistor(s) in a switching voltage regulator, such as a power supply unit, are used
like a switch to alternately let power flow and block power from flowing.
3.3.POWER SUPPLY:
3.3.1.DESCRIPTION:
A variable regulated power supply, also called a variable bench power supply, is one where
you can continuously adjust the output voltage to your requirements. Varying the output of the
power supply is the recommended way to test a project after having double checked parts
placement against circuit drawings and the parts placement guide.
This type of regulation is ideal for having a simple variable bench power supply. Actually
this is quite important because one of the first projects a hobbyist should undertake is the
construction of a variable regulated power supply. While a dedicated supply is quite handy e.g.
5V or 12V, it's much handier to have a variable supply on hand, especially for testing.
16
Most digital logic circuits and processors need a 5 volt power supply. To use these parts we
need to build a regulated 5 volt source. Usually you start with an unregulated power supply
ranging from 9 volts to 24 volts DC (A 12 volt power supply is included with the Beginner Kit
and the Microcontroller Beginner Kit.). To make a 5 volt power supply, we use a LM7805
voltage regulator IC (Integrated Circuit). The IC is shown below.
Transformer:
A bridge rectifier coupled with a step down transformer is used for our design. The voltage
rating of transformer used is 0-12V and the current rating is
500mA. When AC voltage of 230V is applied across the primary winding an output AC voltage
of 12V is obtained. One alteration of input causes the top of transformer to be positive and the
bottom negative. The next alteration will temporarily cause the reverse.
Rectifier:
In the power supply unit, rectification is normally achieved using a solid state diode. Diode
has the property that will let the electron flow easily at one direction at proper biasing condition.
Bridge rectifiers of 4 diodes are used to achieve full wave rectification. Two diodes will conduct
during the negative cycle and the other two will conduct during the positive half cycle.
Filtering unit:
Filter circuit which is usually a capacitor acts as a surge arrester always follows the rectifier
17
unit. This capacitor is also called as a decoupling capacitor or a bypass capacitor, is used not
only to short the ripple with frequency to ground but also leave the frequency of the DC to
appear at the output.
Regulators:
The voltage regulators play an important role in any power supply unit. The primary purpose
of a regulator is to aid the rectifier and filter circuit in providing a constant DC voltage to the
device. Power supplies without regulators haveinherent problem of changing DC voltage values
due to variations in the load or due to fluctuations in the AC line voltage. With a regulator
connected to DC output, the voltage can be maintained within a close tolerant region of the
desired output. IC 7805 and 7812 regulators are used in this project for providing a DC voltage
of +5V and +12V respectively.
3.3.2.CIRCUIT FEATURES:
• Brief description of operation: Gives out well regulated +5V output, output current capability
of 100 mA
• Circuit protection: Built-in overheating protection shuts down output when regulator IC gets
too hot
• Circuit complexity: Very simple and easy to build
• Circuit performance: Very stable +5V output voltage, reliable operation
• Availability of components: Easy to get, uses only very common basic components
• Design testing: Based on datasheet example circuit, I have used this circuit successfully as part
of many electronics projects
• Applications: Part of electronics devices, small laboratory power supply
• Power supply voltage: Unregulated DC 8-18V power supply
• Power supply current: Needed output current + 5 mA
• Component costs: Few dollars for the electronics components + the input transformer cost
18
3.3.3.BLOCK DIAGRAM:
20
An LCD is either made up of an active matrix display grid or a passive display grid. Most of the
Smartphone’s with LCD display technology uses active matrix display, but some of the older
displays still make use of the passive display grid designs. Most of the electronic devices mainly
depend on liquid crystal display technology for their display. The liquid has a unique advantage
of having low power consumption than the LED or cathode ray tube.
Liquid crystal display screen works on the principle of blocking light rather than emitting light.
LCD’s requires backlight as they do not emits light by them. We always use devices which are
made up of LCD’s displays which are replacing the use of cathode ray tube. Cathode ray tube
draws more power compared to LCD’s and are also heavier and bigger.
3.4.2.How LCDs Work?
The principle behind the LCD’s is that when an electrical current is applied to the liquid crystal
molecule, the molecule tends to untwist. This causes the angle of light which is passing through
the molecule of the polarized glass and also cause a change in the angle of the top polarizing
filter. As a result a little light is allowed to pass the polarized glass through a particular area of
the LCD. Thus that particular area will become dark compared to other. The LCD works on the
principle of blocking light. While constructing the LCD’s, a reflected mirror is arranged at the
back. An electrode plane is made of indium-tin oxide which is kept on top and a polarized glass
with a polarizing film is also added on the bottom of the device. The complete region of the LCD
has to be enclosed by a common electrode and above it should be the liquid crystal matter.
3.4.3.20X4 LCD Display Module:
Ground 1 Vss - 0V
Power
2 Vdd - +5V
supply
2 Return home
4 Decrement cursor (shift cursor to left)
24
Advantages of an LCD’s:
LCD’s consumes less amount of power compared to CRT and LED
LCD’s are consist of some microwatts for display in comparison to some mill watts for
LED’s
LCDs are of low cost
Provides excellent contrast
LCD’s are thinner and lighter when compared to cathode ray tube and LED
Disadvantages of an LCD’s:
Require additional light sources
Range of temperature is limited for operation
Low reliability
Speed is very low
LCD’s need an AC drive
Applications of Liquid Crystal Display
Liquid crystal technology has major applications in the field of science and engineering as well
on electronic devices.
Liquid crystal thermometer
Optical imaging
The liquid crystal display technique is also applicable in visualization of the radio
frequency waves in the waveguide
Used in the medical applications
3.5.GSM MODULE
3.5.1. INTRODUCTION:
GSM (Global System for Mobile communications) is an open, digital cellular technology used
for transmitting mobile voice and data services.
GSM (Global System for Mobile communication) is a digital mobile telephone system that is
widely used in Europe and other parts of the world. GSM uses a variation of Time Division
25
Multiple Access (TDMA) and is the most widely used of the three digital wireless telephone
technologies (TDMA, GSM, and CDMA). GSM digitizes and compresses data, then sends it
down a channel with two other streams of user data, each in its own time slot. It operates at
either the 900 MHz or 1,800 MHz frequency band.
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.
The network in the GSM operates at different frequencies based upon the location and
spectrum. The spectrums have been upgrading for every few years where the change of data rate
and network availability. These GSM networks have been divided as 2G, 3G, 4G and 5G (till
date).
26
More than 90% of the world’s population covers the frequency of terrestrial networks and made
them to extend, where coverage is unavailable. Today more than 225 countries are under the
same connectivity of GSM satellite.
3.5.4.DESCRIPTION:
As for the above information we have understood the network of GSM which is used to transfer
the data with the high speed and security by allocating the band width. To utilize the network
over a long distance between the devices MODEM is used. The word MODEM means the
process of Modulation and De-modulation. The device which acts as a GSM Modem uses a
wireless network which is similar to a dial-up modem. But the dial-up is the fixed lines which
transfers electronic signals over wire but whereas GSM Modem transfer the data via radio
waves.
GSM Modem is a device which requires a memory based card that contains the information of
the user and also its allocated frequencies, this card is known as SIM (Subscriber Interface
Module). By using this SIM in the GSM Modem we can connect to wireless network under the
globe. This SIM card has the information of
27
By the help of SIM in this project we take a GSM Modem of model number SIM-900 which
provides us with the frequency 900MHz connected to the global network. The following
functions can be done by using some AT commands like
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
Supports A-GPS
28
3.6. 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.
3.6.2.WHAT IS I2C?
I2C is a serial communication protocol. It provides the good support to the slow devices,
for example, EEPROM, ADC, and RTC etc. I2c is not only used with the single board but also
used with the other external components which have connected with boards through the cables.
I2C is basically two-wire communication protocol. It uses only two wires for the
communication. In which one wire is used for the data (SDA) and other wire is used for the
clock (SCL).
29
SDA (Serial Data) – The line for the master and slave to send and receive data.
SCL (Serial Clock) – The line that carries the clock signal.
I2C is a serial communication protocol, so data is transferred bit by bit along a single
wire (the SDA line).
In I2C, both buses are bidirectional, which means master able to send and receive the
data from the slave. The clock bus is controlled by the master but in some situations slave is also
able to suppress the clock signal, but we will discuss it later.
Additionally, an I2C bus is used in the various control architecture, for example, SMBus
(System Management Bus), PMBus (Power Management Bus), IPMI (Intelligent Platform
Management Interface) etc.
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.
The I2C bus provides the ability of the arbitration and collision detection.
I2C is the 8-bit oriented serial bidirectional communication, there are following speed
mode in I2C
30
3.6.4.STEPS OF I2C DATA TRANSMISSION:
1. The master sends the start condition to every connected slave by switching the SDA
line from a high voltage level to a low voltage level before switching the SCL line from high to
low:
2. The master sends each slave the 7 or 10 bit address of the slave it wants to
communicate with, along with the read/write bit:
4. Each slave compares the address sent from the master to its own address. If the
address matches, the slave returns an ACK bit by pulling the SDA line low for one
bit. If the address from the master does not match the slave’s own address, the slave
leaves the SDA line high.
31
4. The master sends or receives the data frame:
5. After each data frame has been transferred, the receiving device returns another ACK bit to the
sender to acknowledge successful receipt of the frame:
32
6. To stop the data transmission, the master sends a stop condition to the slave by switching SCL
high before switching SDA high:
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
Disadvantages
33
3.7.VOLTAGE REGULATOR:
3.7.1.DESCRIPTION:
A variable regulated power supply, also called a variable bench power supply, is one
where you can continuously adjust the output voltage to your requirements. Varying the output
of the power supply is the recommended way to test a project after having double checked parts
placement against circuit drawings and the parts placement guide.
Most digital logic circuits and processors need a 5 volt power supply. To use these parts
we need to build a regulated 5 volt source. Usually you start with an unregulated power supply
ranging from 9 volts to 24 volts DC (A 12 volt power supply is included with the Beginner Kit
and the Microcontroller Beginner Kit.). To make a 5 volt power supply, we use a LM7805
voltage regulator IC (Integrated Circuit). The IC is shown below.
Definition
Basically, there are two types of Voltage regulators: Linear voltage regulator and Switching
voltage regulator.
There are two types of Linear voltage regulators: Series and Shunt.
34
There are three types of Switching voltage regulators: Step up, Step down and Inverter voltage
regulators.
A series voltage regulator uses a variable element placed in series with the load. By
changing the resistance of that series element, the voltage dropped across it can be changed. And,
the voltage across the load remains constant.
The amount of current drawn is effectively used by the load; this is the main advantage of the
series voltage regulator. Even when the load does not require any current, the series regulator
does not draw full current. Therefore, a series regulator is considerably more efficient than shunt
voltage regulator.
35
Shunt Voltage Regulator
A shunt voltage regulator works by providing a path from the supply voltage to ground
through a variable resistance. The current through the shunt regulator is diverted away from the
load and flows uselessly to the ground, making this form usually less efficient than the series
regulator. It is, however, simpler, sometimes consisting of just a voltage-reference diode, and is
used in very low-powered circuits wherein the wasted current is too small to be of concern. This
form is very common for voltage reference circuits. A shunt regulator can usually only sink
(absorb) current.
A switching regulator rapidly switches a series device on and off. The switch’s duty cycle
sets the amount of charge transferred to the load. This is controlled by a feedback mechanism
similar to that of a linear regulator. Switching regulators are efficient because the series element
is either fully conducting or switched off because it dissipates almost no power. Switching
regulators are able to generate output voltages that are higher than the input voltage or of
opposite polarity, unlike linear regulators.
36
3.7.3.Step Up Voltage Regulator
Step-up switching converters, also called boost switching regulators, provides a higher
voltage output by raising the input voltage. The output voltage is regulated, as long as the power
drawn is within the output power specification of the circuit. For driving strings of LEDS, Step
up Switching voltage regulator is used.
Assume Lossless circuit Pin= Pout (input and output powers are same)
Step down converter is equivalent to DC transformer where in the turns ratio is in the
range of 0-1.
37
3.8.Real Time Clock DS1307
40
CHAPTER-4
SOFTWARE DESCRIPTION
The core function of the Arduino IDE is to allow users to write code in a high-level
programming language (typically C++) and upload it to an Arduino board for execution. The
software consists of a text editor where users write their programs, a compiler that converts the
written code into machine-readable instructions, and an uploading feature that sends the
compiled code to the Arduino microcontroller via a USB connection. This interaction between
the IDE and the hardware is crucial in making the Arduino ecosystem user-friendly, even for
those with little prior experience in electronics or coding.
One of the key features that sets the Arduino IDE apart is its simplicity. The IDE provides a
minimalist interface that is designed to minimize complexity and make the process of writing
and uploading code as easy as possible. It includes syntax highlighting, which helps users
identify different parts of their code, such as functions, variables, and loops. The IDE also has a
built-in error checker that highlights mistakes in the code and provides helpful feedback,
making it easier for users to debug their programs. For example, if a user forgets to close a
bracket or makes a typo, the IDE will underline the error and typically give a description of the
issue. This feature is particularly helpful for beginners, who are often still learning the syntax
and structure of the programming language.
41
4.2 Steps of working
STEP1:
Arduino microcontrollers come in a variety of types. The most common is the Arduino UNO, but
there are specialized variations. Before you begin building, do a little research to figure out
which version will be the most appropriate for your project.
STEP2:
To begin, you'll need to install the Arduino Programmer, Integrated development environment
(IDE).
To install the software, you will need to click on the link that corresponds with your computer’s
operating system.
Take some time to look around and get comfortable with it.
42
1. Menu Bar: Gives you access to the tools needed for creating and saving Arduino
sketches.
2. Verify Button: Compiles your code and checks for errors in spelling or syntax.
3. Upload Button: Sends the code to the board that’s connected such as Arduino Uno in this
case. Lights on the board will blink rapidly when uploading.
5. Sketch Name: When the sketch is saved, the name of the sketch is displayed here.
6. Open Existing Sketch: Allows you to open a saved sketch or one from the stored
examples.
7. Save Sketch: This saves the sketch you currently have open.
8. Serial Monitor: When the board is connected, this will display the serial information of
your Arduino
9. Code Area: This area is where you compose the code of the sketch that tells the board
what to do.
10. Message Area: This area tells you the status on saving, code compiling, errors and more.
43
11. Text Console: Shows the details of an error messages, size of the program that was
compiled and additional info.
12. Board and Serial Port: Tells you what board is being used and what serial port it’s
connected to.
STEP3:
Connect your Arduino to the USB port of your computer. This may require a specific USB cable.
Every Arduino has a different virtual serial-port address, so you 'll need to reconfigure the port if
you're using different Arduinos.
STEP4:
44
Once the board is connected, you will need to go to Tools then Board then finally select Arduino
Uno.
Next, you have to tell the Arduino which port you are using on your computer.
To select the port, go to Tools then Port then select the port that says Arduino.
STEP5:
Test the microcontroller by using one of the preloaded programs, called sketches, in the Arduino
Programmer. Open one of the example sketches, and press the upload button to load it. The
Arduino should begin responding to the program: If you've set it to blink an LED light, for
example, the light should start blinking
The “void setup()” section is widely used to initialize variables, pin modes, set the serial baud
rate and related. The software only goes though the section once.The “void loop()” section is the
part of the code that loops back onto itself and is the main part of the code. In the Arduino
examples, this is called “Bare Minimum” under File-> Examples -> Basics. Note that you are
free to add subroutines using the same
45
syntax:
void subroutinename() {}
Almost every line of code needs to end with a semicolon ‘;’ (there are a few exceptions which
we will see later). To write single line comments in the code, type two back slashes followed by
the text:
To write multi-line comments, start the comment with /* and end with */
/* This is a multi-line comment and saves you having to always use double slashes at the
beginning of every line. Comments are used used to explain the code textually. Good code
always has a lot of comments.*/
46
Step6:
To upload new code to the Arduino, either you'll need to have access to code you can paste into
the programmer, or you'll have to write it yourself, using the Arduino programming language to
create your own sketch. An Arduino sketch usually has five parts: a header describing the sketch
and its author; a section defining variables; a setup routine that sets the initial conditions of
variables and runs preliminary code; a loop routine, which is where you add the main code that
will execute repeatedly until you stop running the sketch; and a section where you can list other
functions that activate during the setup and loop routines. All sketches must include the setup
STEP7:
Once you've uploaded the new sketch to your Arduino, disconnect it from your computer and
integrate it into your project as directed.
47
CHAPTER-5
SOFTWARE IMPLEMENTATION
PROGRAM:
//#include <RoninDMD.h>
//#include <fonts/Arial_Black_16.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#include <EEPROM.h>
#include "RTClib.h"
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
"Friday", "Saturday"};
#define mode_button D5
//#define FONT Arial_Black_16
//#define WIDTH 4
//#define HEIGHT 1
//RoninDMD P10(WIDTH, HEIGHT);
String Message = "Welcome to ASCET";
48
// Struct to hold period data
struct Period {
char subject[20];
char faculty[20];
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()) {
lcd.print("GSM Initializing...");
if (initializeGSM()) {
lcd.clear();
lcd.print("GSM ready");
// Serial.println("GSM module ready.");
delay(2000);
lcd.setCursor(0, 1);
lcd.print("Sending SMS");
//sendSMS("9704900473", "Device Activated");
}
else {
lcd.clear();
lcd.print("GSM failed.");
delay(2000);
}
}
String Sub;
String Name;
String Number;
int currentTime;
int startTime;
int endTime;
50
bool period_1 = true;
bool period_2 = true;
bool period_3 = true;
bool period_4 = true;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Time:" + String(hh_buffer) + ":" + String(mm_buffer) + " " + time_unit);
lcd.setCursor(0, 1);
lcd.print("Day :" + String(daysOfTheWeek[now.dayOfTheWeek()]));
delay(2000);
if (String(daysOfTheWeek[now.dayOfTheWeek()]) != "Sunday"){
convert_time(9, 30, 10, 20); //1st period
// Check if the current time falls within the specified range
if (currentTime >= startTime && currentTime <= endTime){
lcd.setCursor(14, 1);
lcd.print("1st-Pd");
//Serial.println("1st period");
readSchedule(2, Second_1st); //YEAR,PERIOD NUMBER
delay(100);
clear_lcd();
52
lcd.setCursor(0, 2);
lcd.print("2nd Year-Sub:" + Sub);
lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);
delay(2000);
//P10.loop();
//Scrolling_text(0 , 50 , "2nd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_1 == true)
sendSMS(Number, "Dear Sir/Madam\n You have a class to 2nd Year\nSubject:" + Sub +
"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "2nd year" + "," + "1st
Hour" + "@"); delay(1000);
lcd.print("Faculty:" + Name);
delay(2000);
//P10.loop();
//Scrolling_text(0 , 50 , "3rd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_1 == true)
sendSMS(Number, "Dear Sir/Madam\n You have a class to 3rd Year\nSubject:" + Sub +
"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "3rd year" + "," + "1st Hour"
+ "@"); delay(1000);
readSchedule(4, Fourth_1st); //YEAR,PERIOD NUMBER
53
delay(100);
clear_lcd();
lcd.setCursor(0, 2);
lcd.print("4th Year-Sub:" + Sub);
lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);
delay(2000);
//P10.loop();
//Scrolling_text(0 , 50 , "4th Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_1 == true)
lcd.setCursor(0, 2);
lcd.print("2nd Year-Sub:" + Sub);
lcd.setCursor(0, 3);
54
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "2nd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_2 == true)
//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();
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "3rd year" + "," + "3rd
Hour" + "@"); delay(1000);
readSchedule(4, Fourth_3rd); //YEAR,PERIOD NUMBER
57
delay(100);
clear_lcd();
lcd.setCursor(0, 2);
lcd.print("4th Year-Sub:" + Sub);
lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "4th Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_3 == true)
sendSMS(Number, "Dear Sir/Madam\n You have a class to 4th Year\nSubject:" + Sub +
"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "4th year" + "," + "3rd
Hour" + "@"); delay(1000);
period_3 = false;
}
convert_time(12, 20, 13, 10); //4th period
// Check if the current time falls within the specified range
if (currentTime >= startTime && currentTime <= endTime) {
lcd.setCursor(14, 1);
lcd.print("4th-Pd");
//Serial.println("The current time is between 9:30 AM and 10:20 AM");
readSchedule(2, Second_4th); //YEAR,PERIOD NUMBER
delay(100);
clear_lcd();
lcd.setCursor(0, 2);
lcd.print("2nd Year-Sub:" + Sub);
lcd.setCursor(0, 3);
58
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "2nd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_4 == true)
}
convert_time(14, 00, 14, 50); //5th period
// Check if the current time falls within the specified range
60
if (currentTime >= startTime && currentTime <= endTime) {
lcd.setCursor(14, 1);
lcd.print("5th-Pd");
//Serial.println("5th period");
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "2nd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_5 == true)
sendSMS(Number, "Dear Sir/Madam\n You have a class to 2nd Year\nSubject:" + Sub +
"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "2nd year" + "," + "5th
Hour" + "@"); delay(1000);
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "3rd Year - Sub:" + Sub + " " + "Faculty:" + Name );
61
if (period_5 == true)
sendSMS(Number, "Dear Sir/Madam\n You have a class to 3rd Year\nSubject:" + Sub +
"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "3rd year" + "," + "5th
Hour" + "@"); delay(1000);
readSchedule(4, Fourth_5th); //YEAR,PERIOD NUMBER
delay(100);
clear_lcd();
lcd.setCursor(0, 2);
lcd.print("4th Year-Sub:" + Sub);
lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "4th Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_5 == true)
sendSMS(Number, "Dear Sir/Madam\n You have a class to 4th Year\nSubject:" + Sub +
"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "4th year" + "," + "5th Hour"
+ "@"); delay(1000);
period_5 = false;
}
convert_time(14, 50, 15, 40); //6th Period
// Check if the current time falls within the specified range
if (currentTime >= startTime && currentTime <= endTime) {
lcd.setCursor(14, 1);
lcd.print("6th-Pd");
//Serial.println("6th Period");
readSchedule(2, Second_6th); //YEAR,PERIOD NUMBER
62
delay(100);
clear_lcd();
lcd.setCursor(0, 2);
lcd.print("2nd Year-Sub:" + Sub);
lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "2nd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_6 == true)
sendSMS(Number, "Dear Sir/Madam\n You have a class to 2nd Year\nSubject:" + Sub +
"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "2nd year" + "," + "6th
Hour" + "@"); delay(1000);
readSchedule(3, Third_6th); //YEAR,PERIOD NUMBER
delay(100);
clear_lcd();
lcd.setCursor(0, 2);
lcd.print("3rd Year-Sub:" + Sub);
lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "3rd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_6 == true)
sendSMS(Number, "Dear Sir/Madam\n You have a class to 3rd Year\nSubject:" + Sub +
"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "3rd year" + "," + "6th
Hour" + "@"); delay(1000);
readSchedule(4, Fourth_6th); //YEAR,PERIOD NUMBER
63
delay(100);
clear_lcd();
lcd.setCursor(0, 2);
lcd.print("4th Year-Sub:" + Sub);
lcd.setCursor(0, 3);
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "4th Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_6 == true)
sendSMS(Number, "Dear Sir/Madam\n You have a class to 4th Year\nSubject:" + Sub +
"\nThank you!");
//Serial.println("$" + Sub + "," + Name + "," + Number + "," + "4th year" + "," + "6th Hour"
+ "@"); delay(1000);
period_6 = false;
}
convert_time(15, 40, 16, 30); //7th period
// Check if the current time falls within the specified range
if (currentTime >= startTime && currentTime <= endTime) {
lcd.setCursor(14, 1);
lcd.print("7th-Pd");
//Serial.println("7th period");
readSchedule(2, Second_7th); //YEAR,PERIOD NUMBER
delay(100);
clear_lcd();
lcd.setCursor(0, 2);
lcd.print("2nd Year-Sub:" + Sub);
lcd.setCursor(0, 3);
64
lcd.print("Faculty:" + Name);
delay(2000); //P10.loop();
//Scrolling_text(0 , 50 , "2nd Year - Sub:" + Sub + " " + "Faculty:" + Name );
if (period_7 == true)
period_4 = true;
period_5 = true;
period_6 = true;
period_7 = true; //Serial.println("Thank you!");
clear_lcd();
lcd.setCursor(0, 2);
lcd.setCursor(14, 1);
lcd.print(" "); //Serial.println("Welcome");
clear_lcd();
lcd.setCursor(0, 2);
lcd.print(" Welcome "); //P10.loop();
//Scrolling_text(0 , 50 , "WELCOME" ); delay(500);
}
}
else {
lcd.setCursor(14, 1);
lcd.print(" "); //Serial.println("Sunday");
clear_lcd();
lcd.setCursor(0, 2);
lcd.print(" Happy Sunday! "); //P10.loop();
//Scrolling_text(0 , 50 , "Happy Sunday" ); delay(500);
}
read_sms();
}
else {
Serial.println("Waiting For User Input");
lcd.clear();
lcd.setCursor(0, 0);
67
lcd.print("Open Serial monitor");
lcd.setCursor(0, 1);
lcd.print("U - Update shedule");
lcd.setCursor(0, 2);
year = Serial.parseInt();
Serial.println(year);
if (year < 2 || year > 4) {
//return;
if (year == 0) {
break;
}
else {
Serial.println("Invalid year!");
goto ay;
68
}
}
ap:
Serial.readString();
}
else {
Serial.println("Invalid period number!"); //return;
goto ap;
}
}
}
else{
Serial.println("Invalid choice!");
goto vu;
}
}
}
if (cmd == 'T' || cmd == 't'){
Serial.readString();
Serial.println("Enter hours");
while (!Serial.available()) {}
int hh = Serial.parseInt();
Serial.readString();
Serial.println("Enter minutes");
while (!Serial.available()) {}
int mm = Serial.parseInt();
Serial.readString();
Serial.println("Enter Date");
while (!Serial.available()) {}
int dd = Serial.parseInt();
Serial.readString();
Serial.println("Enter Month");
70
while (!Serial.available()) {}
int mn = Serial.parseInt();
Serial.readString();
Serial.println("Enter Year");
while (!Serial.available()) {}
int yy = Serial.parseInt();
rtc.adjust(DateTime(yy, mn, dd, hh, mm, 0)); delay(100);
Serial.println("Time and Date Updated");
}
}
}
}
void convert_time(int sh, int sm, int eh, int em){
DateTime now = rtc.now();
Serial.println("Time:" + String(now.hour()) + "/" + String(now.minute()) + "/" +
String(now.second()));
delay(500);
// Convert current time to minutes for easier comparison
currentTime = now.hour() * 60 + now.minute();
// Convert the boundary times (9:30 AM and 10:20 AM) to minutes
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;
// static uint32_t pM ;
// pM = millis();
// static uint32_t x = 0;
// scroll_text = scroll_text + " ";
// bool scrl_while = 1 ;
// int dsp_width = P10.width();
// pM = millis();
// }
// }
//}
74
void readSchedule(int year, int period) {
int address;
switch (year) {
case 2:
address = START_ADDRESS_YEAR_2;
break;
case 3:
address = START_ADDRESS_YEAR_3;
break;
case 4:
address = START_ADDRESS_YEAR_4;
break;
default:
Serial.println("Invalid year!");
return;
}
//Serial.print("Mobile: ");
//Serial.println(currentPeriod.mobile);
Sub = currentPeriod.subject;
Index = Sub.indexOf('$');
Sub = Sub.substring(0, Index);
Serial.println("Subject:" + Sub);
Name = currentPeriod.faculty;
Index = Name.indexOf('$');
Name = Name.substring(0, Index);
Serial.println("Name:" + Name);
Number = currentPeriod.mobile;
Number = Number.substring(0, 10);
Serial.println("Number:" + Number);
}
void updateSchedule(int year, int period) {
int address;
switch (year) {
case 2:
address = START_ADDRESS_YEAR_2;
break;
case 3:
address = START_ADDRESS_YEAR_3;
76
break;
case 4:
address = START_ADDRESS_YEAR_4;
break;
default:
Serial.println("Invalid year!");
return;
}
// Calculate the EEPROM address for the specified period
address += (period - 1) * PERIOD_SIZE;
Serial.readString();
Serial.println("Enter subject name:");
while (!Serial.available()) {}
Serial.readBytesUntil('\n', updatedPeriod.subject, sizeof(updatedPeriod.subject) - 1); // Read
subject name
Serial.readString();
Serial.println("Enter faculty name:");
while (!Serial.available()) {}
Serial.readBytesUntil('\n', updatedPeriod.faculty, sizeof(updatedPeriod.faculty) - 1); // Read
faculty name
Serial.readString();
77
Serial.println("Enter faculty mobile number:"); // Prompt for mobile number
while (!Serial.available()) {}
Serial.readBytesUntil('\n', updatedPeriod.mobile, sizeof(updatedPeriod.mobile) - 1); // Read
mobile number
// Write the updated schedule data to EEPROM
EEPROM.put(address, updatedPeriod);
EEPROM.commit();
// Notify user that schedule has been updated
lcd.setCursor(l, 3);
lcd.print(" ");
}
}
/*GSM*/
bool initializeGSM(){
lcd.setCursor(0, 1);
lcd.print("ATE0-");
Serial.println("ATE0");
delay(1000);
if (Serial.find("OK")) {
lcd.setCursor(5, 1);
lcd.print("OK ");
78
}
else {
lcd.setCursor(5, 1);
lcd.print("Error");
}
lcd.setCursor(0, 1);
lcd.print("AT-");
Serial.println("AT");
delay(1000);
if (Serial.find("OK")){
lcd.setCursor(3, 1);
lcd.print("OK ");
}
else {
lcd.setCursor(3, 1);
lcd.print("Error");
}
lcd.setCursor(0, 1);
lcd.print("AT+CMGF-");
Serial.println("AT+CMGF=1");
delay(1000);
if (Serial.find("OK")) {
lcd.setCursor(8, 1);
lcd.print("OK ");
}
else {
79
lcd.setCursor(8, 1);
lcd.print("Error");
}
lcd.setCursor(0, 1);
lcd.print("AT+CREG?-");
Serial.println("AT+CREG?");
delay(1000);
if (Serial.find("+CREG: 0,1") || Serial.find("+CREG: 0,5")) {
lcd.setCursor(9, 1);
lcd.print("ok ");
return true;
}
else {
lcd.setCursor(9, 1);
lcd.print("Error ");
return false;
}
}
// Function to send SMS
void sendSMS(String num, String message){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sending SMS...");
lcd.setCursor(0, 1);
lcd.print(num);
Serial.println("AT+CMGF=1");
80
delay(1000);
Serial.println("AT+CMGS=\"" + num + "\"");
delay(1000);
Serial.print(message);
Serial.write(26); // CTRL+Z
delay(3000);
}
void read_sms(){
if (Serial.available()) {
String response = Serial.readString();
response.trim();
//Serial.println(response); // Print the raw response for debugging
// Check if the response contains the +CMT indicator
if (response.startsWith("+CMTI:")) {
Serial.println("AT+CMGR=1");
while (!Serial.available() > 0);
response = Serial.readString();
response.trim();
//Serial.println(response);
// Extract the phone number
int startIndex = response.indexOf(',') + 5;
int endIndex = response.indexOf('"', startIndex);
lcd.print("From:" + incomingNumber);
lcd.setCursor(0, 1);
lcd.print("Msg: " + message);
Serial.println("AT+CMGD=1"); delay(3000);
// if (message.startsWith("Track"))
// {
}
}
82
CHAPTER-6
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.
From all these, we can conclude that if we implement this system, it will improve coordination,
enhance communication, and streamline administrative tasks in an educational institution.
FUTURE SCOPE:
The College Timetable and Notice Board Display with Auto SMS to Faculty system can be
further enhanced by integrating cloud-based services for real-time updates and automated
scheduling. Implementing AI-driven scheduling can optimize faculty and classroom allocations,
reducing conflicts and improving efficiency. Additionally, a mobile application can be
introduced to provide instant notifications, ensuring seamless communication between faculty
and students.
Expanding the system with IoT-enabled smart displays and voice-assisted announcements will
improve accessibility and ensure timely dissemination of information. These advancements will
make academic schedule management more efficient and automated, reducing manual efforts
and enhancing the overall experience for faculty and students.
83
REFERENCES
[1]. “College Time Table and Notice Board Display With Auto SMS to Faculty" by [Author
names not available in search results] (Journal of Engineering Sciences): This paper directly
addresses the combination of a timetable display, notice board, and auto SMS to faculty using
GSM technology.
[2]. "E-Notice Board With Timetable Display in Class Room using GSM Technology" by
[Author names not available in search results] (International Journal of Engineering Research
and Technology): This paper focuses on using GSM to update both an electronic notice board
and potentially send SMS related to the timetable.
[3]. "Development Of IOT Based Smart Scheduler And Faculty Notification System" by
[Author names not available in search results] (Indian Institution of Industrial Engineering): This
project explores an IoT-based system for scheduling and notifying faculty, likely encompassing
timetable-related information.
84