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

Project Implementation and Coding: 6.1 Overview of Project Modules

The document summarizes the implementation and coding of a digital signage system project divided into three modules: 1) interfacing a display with a Raspberry Pi using HDMI, 2) configuring a cloud database to store notices accessible from anywhere, and 3) developing a dashboard using HTML, CSS, Javascript and Bootstrap to post, update and delete notices from any location. It describes the tools and technologies used including MicroPython, MQTT, Google Firebase, HTML, CSS, Javascript, and the Bulma CSS framework. It includes example code for the main notice user interface.

Uploaded by

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

Project Implementation and Coding: 6.1 Overview of Project Modules

The document summarizes the implementation and coding of a digital signage system project divided into three modules: 1) interfacing a display with a Raspberry Pi using HDMI, 2) configuring a cloud database to store notices accessible from anywhere, and 3) developing a dashboard using HTML, CSS, Javascript and Bootstrap to post, update and delete notices from any location. It describes the tools and technologies used including MicroPython, MQTT, Google Firebase, HTML, CSS, Javascript, and the Bulma CSS framework. It includes example code for the main notice user interface.

Uploaded by

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

Chapter 6

Project Implementation and Coding


6.1 Overview of Project Modules
Digital signage system has advantages like reduced costs, integrating citizens with up-to-date
technologies, being easy to reach huge number of people, dynamic and effective advertisements,
ability to deliver relevant information at proper time for proper mass. The system will replace
microcontroller-based systems with raspberry pi which will drastically improve the performance
and will consume less amount of power for operation. Project is divided into the three Parts:
 Interfacing Display with Raspberry pi: In the first module, we are interfaced a LCD
display with Raspberry pi using HDMI port.

Raspberry Pi Display

 Fetching notice from cloud: In second module, we are configured a cloud and real-time
database to store the real-time notices that can be accessible from anywhere and anytime.
We are using google cloud (firebase) to store the notices on cloud.

Cloud Raspberry Pi Display

 Dashboard: The dashboard is developed using the HTML, CSS, Javascript and
bootstrap. Using dashboard user can post new notice or ads, update notice and delete
notice. User can view logs, statistics, time scheduling with the help of dashboard from
any location and anytime.

Dashboard Cloud Notice Board


6.2 Tools and Technologies Used
 Micro- Python - MicroPython is a software implementation of a programming language
largely compatible with Python 3, written in C, that is optimized to run on a
microcontroller. MicroPython is a full Python compiler and runtime that runs on the
micro-controller hardware. The user is presented with an interactive prompt (the REPL)
to execute supported commands immediately. Included are a selection of core Python
libraries; MicroPython includes modules which give the programmer access to low-level
hardware. The source code for the project is available on GitHub under the MIT License.
MicroPython was originally created by the Australian programmer and physicist Damien
George, after a successful Kickstarter backed campaign in 2013. While the original
Kickstarter campaign released MicroPython with an STM32F4-powered development
board "pyboard", MicroPython supports a number of ARM based architectures. The ports
supported in the mainline are ARM Cortex-M (many STM32 boards, TI CC3200/WiPy,
Teensy boards, Nordic nRF series, SAMD21 and SAMD51), ESP8266, ESP32, 16bit
PIC, Unix, Windows, Zephyr, and JavaScript. Also, there are many forks for a variety of
systems and hardware platforms not supported in the mainline.

 MQTT:

MQTT (Message Queuing Telemetry Transport) is a publish/subscribe messaging protocol that


works on top of the TCP/IP protocol. The first version of the protocol was developed by Andy
Stanford-Clark of IBM and Arlen Nipper of Cirrus Link in 1999. What makes MQTT faster than
say sending HTTP requests with your IoT device is MQTT messages can be as small as 2 bytes,
whereas HTTP requires headers which contains a lot of information that other devices might not
care about. Also, if you have multiple devices waiting for a request with HTTP, you'll need to
send a POST action to each client. With MQTT, when a server receives information from one
client, it will automatically distribute that information to each of the interested clients.

Why MQTT?
MQTT has unique features you can hardly find in other protocols, like:
 It’s a lightweight protocol. So, it’s easy to implement in software and fast in data
transmission.
 It’s based on a messaging technique. Of course, you know how fast your
messenger/WhatsApp message delivery is. Likewise, the MQTT protocol.
 Minimized data packets. Hence, low network usage.
 Low power usage. As a result, it saves the connected device’s battery.
 It’s real time! That’s is specifically what makes it perfect for IoT applications.

Why not HTTP


 Slower: because it uses bigger data packets to communicate with the server.
 Overhead: HTTP request opens and closes the connection at each request, while MQTT
stays online to make the channel always open between the broker “server” and clients.
 Power consuming: since it takes a longer time and more data packets, therefore it uses
much power.
 Google Firebase:
Firebase is a Backend-as-a-Service(BaaS) which started as a YC11 startup. It grew up
into a next-generation app-development platform on Google Cloud Platform. Firebase (a
NoSQL, jSON database) is a real-time database that allows storing a list of objects in the
form of a tree. We can synchronize data between different devices. Google Firebase is
Google-backed application development software which allows developers to develop
Android, IOS, and Web apps. For reporting and fixing app crashes, tracking analytics,
creating marketing and product experiments, firebase provides several tools.

o HTML
Hypertext Markup Language (HTML) is the standard markup language used to
create web pages. A markup language is your way of making notes in a digital
document that can be distinguished from regular text. It’s the most basic building
block you’ll need for developing websites.
o CSS
CSS (Cascading Style Sheets) is the language used to present the document you
create with HTML. Where HTML comes first and creates the foundation for your
page, CSS comes along next and is used to create the page’s layout, color, fonts,
and…well, the style!
o JavaScript
Another MAJOR tool in your front-end developer toolbox is going to be
JavaScript (JS). Where HTML is a markup language and CSS is a style sheet
language, JS is the first language I’ve mentioned that’s a Bonafede programming
language. What’s the difference? Where HTML and CSS determine the
presentation of a page, JS determines the function.

 Bulma CSS
Bulma CSS frameworks take some of the hassles out of CSS, by providing standardized
criteria, concepts, and practices for dealing with common issues found in frontend web
development. There are multiple CSS framework options out there to choose from like
Bootstrap, Semantic UI, and Foundation. You might wonder, which CSS framework is
best? As a new player recenThe Bulma framework is a free CSS solution based on the
Flexbox layout. With Bulma, the extensive range of built-in features means faster
turnaround and less CSS code writing. Bulma is also fully open-source, which means that
Bulma’s original source code is freely available for download — there’s no limit to how
far you (and the growing Bulma community) can extend its functionality.tly entering the
game, we think Bulma CSS has a lot to offer application and website developers.
6.3 Project Code
Main Notice / Signage UI
<!DOCTYPE HTML>
<html>
<head>
<title>Smart Notice Board</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1,
user-scalable=no" />
<link rel="stylesheet" href="assets/css/main.css" />
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css
">
<style>
.carousel-item {
height: 370px;
}

.carousel-item img {
position: absolute;
top: 0;
left: 0;
min-height: 370px;
}
</style>
</head>
<body>
<div class="container">
<header id="header">
<a href="index.html" class="logo"><strong>Smart </strong>Notice
Board<strong> MVP’s KBTCOE, Nashikstrong> </a>
<ul class="icons">
<img src="logo.png" height="80px">&nbsp;&nbsp;&nbsp;
<img src="naac.jpg" height="80px">
</ul>
</header>
<section>
<div class="row" style="margin-top:2%;">
<div class="col-4">
<div class="content">
<header>
<h5>Important Notice</h5>
<div>
<ul id="head_notice"></ul>
</div>

</header>
</div>
</div>
<div class="col-8">
<div id="carouselExampleCaptions" class="carousel slide"
data-ride="carousel">
<div class="carousel-inner">
</div>
</div>
</div>
</div>
</section>
<section>
<hr>
<marquee>
<h5 id="marquee_msg">WELCOME- </h5>
</marquee>
</section>
</div>

<script src="assets/js/jquery.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js
"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"><
/script>
<script src="assets/js/skel.min.js"></script>
<script src="assets/js/util.js"></script>
<script src="assets/js/main.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.10.0/firebase-
app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.10.0/firebase-
storage.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.10.0/firebase-
database.js"></script>

<script>
let outputDate;
$(document).ready(function(){
let dateObj = new Date();
let month = String(dateObj.getMonth() + 1).padStart(2, '0');
let day = String(dateObj.getDate()).padStart(2, '0');
let year = dateObj.getFullYear();
outputDate = year + '-' + month + '-' + day;
});
var config = {
apiKey: "AIzaSyBhe6buAjQleakFU-wfMsGp2C7WAjLh93o",
authDomain: "crud-95d6b.firebaseapp.com",
databaseURL: "https://crud-95d6b.firebaseio.com",
projectId: "crud-95d6b",
storageBucket: "crud-95d6b.appspot.com",
messagingSenderId: "499306463820",
appId: "1:499306463820:web:6d1128eadbc1b2e3872ae9",
measurementId: "G-8RKXJRNENM"
};
firebase.initializeApp(config);
var database = firebase.database();
var storageRef = firebase.storage().ref();

database.ref('notice').on('child_added', function(data) {
add_data(data.val().date, data.val().head_notice,
data.val().notice_body, data.key);
return;
});

function add_data(date, head_notice, notice_body, key){


if(date == outputDate){
$('#head_notice').append('<li>'+head_notice+'</li>');
}
$('#marquee_msg').append(' | ' + notice_body);
return;
}

database.ref('notice').on('child_removed', function(data){
location.reload();
return;
//console.log(data.val());
});

database.ref('notice').on('child_changed', function(data){
location.reload();
return;
});

storageRef.child('images/').listAll().then(function(result){
var i=0;
result.items.forEach(function(imageRef){
imageRef.getDownloadURL().then(function(url){
//console.log(url);
if(i==0){
item = '<div class="carousel-item active"><img class="d-
block w-100" src="'+url+'" alt="Slide"/></div>';
i++; console.log(i);
}else{
item = '<div class="carousel-item"><img class="d-block w-
100" src="'+url+'" alt="Slide"/></div>';
}
$('.carousel-inner').append(item);
});
});
});

</script>
</body>
</html>

Image Upload panel UI


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Digital Signage</title>
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.6.2/css/bulma.min.css">
<script defer
src="https://use.fontawesome.com/releases/v5.0.0/js/all.js"></script>
</head>
<body>

<section class="hero is-primary">


<div class="hero-body">
<p class="title">
Smart Notice Baord
</p>
<p class="subtitle">
Thinking about a college campus digital display? <strong>Here are some
rich content ideas you can use!</strong> With Digital Notice Board.<br><a
href="notice.html"> click Here for upload Notice</a>
</p>
</div>
</section>
<section class="section">

<div class="container">
<h1 class="title">
Gallary Images
</h1>

<div class="content">
<input class="button" type="file" id="files" name="files[]"
multiple />
<input class="button" type="date" id="datePicker" />
<button class="button" id="btn" onclick="uploadFile()">Upload
</button>
</div>
<div id="card-list" class="columns is-mobile">

</div>

<table class="table is-bordered is-striped is-fullwidth"


id="List">
<thead>
<tr>
<th>SRNo</th>
<th>Name</th>
<th>Image</th>
<th>Delete</th>
</tr>
</thead>
<tbody>

</tbody>
</table>
</div>

</section>
<script src="https://code.jquery.com/jquery-2.2.4.min.js"
integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
crossorigin="anonymous"></script>

<script src="https://www.gstatic.com/firebasejs/7.10.0/firebase-
app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.10.0/firebase-
storage.js"></script>

<script>
var config = {
apiKey: "AIzaSyBhe6buAjQleakFU-wfMsGp2C7WAjLh93o",
authDomain: "crud-95d6b.firebaseapp.com",
databaseURL: "https://crud-95d6b.firebaseio.com",
projectId: "crud-95d6b",
storageBucket: "crud-95d6b.appspot.com",
messagingSenderId: "499306463820",
appId: "1:499306463820:web:6d1128eadbc1b2e3872ae9",
measurementId: "G-8RKXJRNENM"
};
firebase.initializeApp(config);
var storageRef = firebase.storage().ref();

var date = new Date();


var day = date.getDate();
var month = date.getMonth() + 1;
var year = date.getFullYear();
if (month < 10) month = "0" + month;
if (day < 10) day = "0" + day;
var today = year + "-" + month + "-" + day;
$("#datePicker").attr("value", today);
var i=1;
storageRef.child('images/').listAll().then(function(result){
//console.log(result.items);
result.items.forEach(function(imageRef){
console.log(imageRef.name);
var tr;
imageRef.getDownloadURL().then(function(url){
tr = "<tr><td>"+i+"</td><td
class='imgName'>"+imageRef.name+"</td><td><img src = '"+url+"'
width='5%'></td><td><a onclick='dele(this)'; class='delete is-large
'></a></td></tr>";
$('#List tbody').append(tr);
i++;
});

});
});
function dele(a){
var name = $(a).closest('tr').find('.imgName').text();
console.log(name);
var desertRef = storageRef.child('images/'+name);
desertRef.delete().then(function() {
alert('File deleted successfully');
location.reload();
}).catch(function(error) {
alert('Uh-oh, an error occurred!');
});
}

//function to save file


function uploadFile(){

var t = $("#datePicker").val();
// Created a Storage Reference with root dir
var storageRef = firebase.storage().ref();
// Get the file from DOM
var file = document.getElementById("files").files[0];
console.log(file);

//dynamically set reference to the file name


var thisRef = storageRef.child('images/'+ t +'_'+file.name);

//put request upload file to firebase storage


thisRef.put(file).then(function(snapshot) {
alert("File Uploaded")
location.reload();
});

</script>

</body>
</html>
Notice Upload Dashboard UI

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Digital Signage</title>
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.6.2/css/bulma.min.css">
<script defer
src="https://use.fontawesome.com/releases/v5.0.0/js/all.js"></script>
</head>
<body>

<section class="hero is-primary">


<div class="hero-body">
<p class="title">
Smart Notice Baord
</p>
<p class="subtitle">
Thinking about a college campus digital display? <strong>Here are some
rich content ideas you can use!</strong> With Digital Notice Board.<br><a
href="images.html"> click Here for upload images</a>
</p>

</div>
</section>
<section class="section">

<div class="container">
<h1 class="title">
Scheduled Notice
</h1>

<div class="content">
<button id="btnAdd" class="button"><i class="fa fa-plus"></i>
Add Notice</button>
</div>
<div id="card-list" class="columns is-mobile">

</div>
</div>
<div id="modal" class="modal">
<div class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">New Notice</p>
<button class="btnClose delete" aria-
label="close"></button>
</header>
<section class="modal-card-body">
<div class="field">
<label class="label">Notice</label>
<div class="control">
<input type="hidden" id="txtType">
<input type="hidden" id="txtKey">
<input class="input" id="txtName" type="text"
placeholder="Name">
</div>
<p class="help"> </p>
</div>
<div class="field">
<label class="label">Scrolling</label>
<div class="control">
<input class="input" id="txtnotice_body"
type="text" placeholder="notice_body">
</div>
<p class="help"> </p>
</div>
<div class="field">
<label class="label">Date</label>
<div class="control">
<input class="input" id="txtPic" type="date"
placeholder="Choose Date">
</div>
<p class="help"></p>
</div>
</section>
<footer class="modal-card-foot">
<button id="btnSave" class="button is-success">Save
changes</button>
<button id="btnClose" class="button">Cancel</button>
</footer>
</div>
</div>
</section>
<script src="https://code.jquery.com/jquery-2.2.4.min.js"
integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
crossorigin="anonymous"></script>
<script
src="https://www.gstatic.com/firebasejs/4.10.0/firebase.js"></script>
<script>
var nextkey =0;
var config = {
apiKey: "AIzaSyBhe6buAjQleakFU-wfMsGp2C7WAjLh93o",
authDomain: "crud-95d6b.firebaseapp.com",
databaseURL: "https://crud-95d6b.firebaseio.com",
projectId: "crud-95d6b",
storageBucket: "crud-95d6b.appspot.com",
messagingSenderId: "499306463820",
appId: "1:499306463820:web:6d1128eadbc1b2e3872ae9",
measurementId: "G-8RKXJRNENM"
};
firebase.initializeApp(config);
var database = firebase.database();

database.ref('notice').on('child_added', function(data) {

add_data_table(data.val().head_notice,data.val().date,data.val().notice_body,d
ata.key);
var lastkey = data.key;
nextkey = parseInt(lastkey)+1;
});
database.ref('notice').on('child_changed', function(data) {

update_data_table(data.val().head_notice,data.val().date,data.val().notice_bod
y,data.key)
});
database.ref('notice').on('child_removed', function(data) {
remove_data_table(data.key)
});

function add_data_table(name,pic,notice_body,key){
$("#card-list").append('<div class="column is-3" id="'+key+'"><div
class="card"><div class="card-image"><figure class="image is-4by3"><img
src="'+'https://encrypted-tbn0.gstatic.com/images?q=tbn
%3AANd9GcRp_1fR1FUAG31dHTucqszte3DpUhSN5lR1CRxDq3bTCRcFMN6O'+'"></figure></div
><div class="card-content"><div class="media"><div class="media-content"><p
class="title is-4">'+name+'</p><p class="subtitle is-
6">@'+notice_body+'</p></div></div></div><footer class="card-footer"><a
href="#" data-key="'+key+'" class="card-footer-item btnEdit">Edit</a><a
href="#" class="card-footer-item btnRemove" data-
key="'+key+'">Remove</a></footer></div></div>');
}
function update_data_table(name,pic,notice_body,key){
$("#card-list #"+key).html('<div class="card"><div class="card-
image"><figure class="image is-4by3"><img src="'+pic+'"></figure></div><div
class="card-content"><div class="media"><div class="media-content"><p
class="title is-4">'+name+'</p><p class="subtitle is-
6">@'+notice_body+'</p></div></div></div><footer class="card-footer"><a
href="#" class="card-footer-item btnEdit" data-key="'+key+'">Edit</a><a
data-key="'+key+'" href="#" class="card-footer-item
btnRemove">Remove</a></footer></div>');
}
function remove_data_table(key){
$("#card-list #"+key).remove();
}
function new_data(name,notice_body,pic,key){
database.ref('notice/' + key).set({
head_notice: name,
notice_body: notice_body,
date : pic
});
}
function update_data(name,notice_body,pic,key){
database.ref('notice/' + key).update({
head_notice: name,
notice_body: notice_body,
date : pic
});
}
$( "#btnAdd" ).click(function() {
$("#txtName").val("");
$("#txtnotice_body").val("");
$("#txtPic").val("");
$("#txtType").val("N");
$("#txtKey").val("0");
$( "#modal" ).addClass( "is-active" );

});
$("#btnSave" ).click(function() {
if($("#txtType").val() == 'N'){
database.ref('notice').once("value").then(function(snapshot) {
if(snapshot.numChildren()==0){
nextkey = 1;
}
new_data($("#txtName").val(),$("#txtnotice_body").val(),$
("#txtPic").val(),nextkey);
});
}else{
update_data($("#txtName").val(),$("#txtnotice_body").val(),$
("#txtPic").val(),$("#txtKey").val());
}
$("#btnClose").click();
});
$(document).on("click",".btnEdit",function(event){
event.preventDefault();
key = $(this).attr("data-key");
database.ref('notice/'+key).once("value").then(function(snapshot){
$("#txtName").val(snapshot.val().head_notice);
$("#txtnotice_body").val(snapshot.val().notice_body);
$("#txtPic").val(snapshot.val().date);
$("#txtType").val("E");
$("#txtKey").val(key);
});
$( "#modal" ).addClass( "is-active" );
});
$(document).on("click",".btnRemove",function(event){
event.preventDefault();
key = $(this).attr("data-key");
database.ref('notice/' + key).remove();
})

$( "#btnClose,.btnClose" ).click(function() {
$( "#modal" ).removeClass( "is-active" );
});
</script>
</body>
</html>

Chapter 7
Software Testing
6.1 Types of Testing
Testing is the process of evaluating a system or its component(s) with the intent to find whether
it satisfies the specified requirements or not. Testing is executing a system in order to identify
any gaps, errors, or missing requirements in contrary to the actual requirements.

6.1.1 Manual Testing


Manual testing includes testing a software manually, i.e., without using any automated tool or
any script. In this type, the tester takes over the role of an end-user and tests the software to
identify any unexpected behavior or bug. There are different stages for manual testing such as
unit testing, integration testing, system testing, and user acceptance testing. Testers use test
plans, test cases, or test scenarios to test a software to ensure the completeness of testing. Manual
testing also includes exploratory testing, as testers explore the software to identify errors in it.

6.1.2 Automation Testing


Automation testing, which is also known as Test Automation, is when the tester writes scripts
and uses another software to test the product. This process involves automation of a manual
process. Automation Testing is used to re-run the test scenarios that were performed manually,
quickly, and repeatedly.
6.2 Methods of Software Testing
There are different methods that can be used for software testing. This chapter briefly describes
the methods available.
6.2.1 Black-Box Testing
The technique of testing without having any knowledge of the interior workings of the
application is called black-box testing. The tester is oblivious to the system architecture and does
not have access to the source code. Typically, while performing a black-box test, a tester will
interact with the system's user interface by providing inputs and examining outputs without
knowing how and where the inputs are worked upon.

6.2.2 White-Box Testing


White-box testing is the detailed investigation of internal logic and structure of the code. White-
box testing is also called glass testing or open-box testing. In order to perform white box testing
on an application, a tester needs to know the internal workings of the code. The tester needs to
have a look inside the source code and find out which unit/chunk of the code is behaving
inappropriately.

6.2.3 Grey-Box Testing


Grey-box testing is a technique to test the application with having a limited knowledge of the
internal workings of an application. In software testing, the phrase the more you know, the better
carries a lot of weight while testing an application.

Mastering the domain of a system always gives the tester an edge over someone with limited
domain knowledge. Unlike black-box testing, where the tester only tests the application's user
interface; in grey-box testing, the tester has access to design documents and the database. Having
this knowledge, a tester can prepare better test data and test scenarios while making a test plan.

6.3 Test Cases


6.3.1 Test Cases for Hardware
No. Module Expected Result Actual Result Status
1. Display Notice The System should System is showing Success
show the current data as per
scheduled notice on requirement.
display.
2. Connectivity The raspberry pi The raspberry pi is Success
should connect to connecting to access
access point and cloud point and cloud
automatically on boot. automatically.
3. Raspberry Pi The System should The project code is Success
execute project code running automatically
automatically on boot. on startup.

6.3.2 Test Cases for Software


No. Module Expected Result Actual Result Status
1. Signup After entering correct User can create an Success
details user can create account.
an account
2. Login User should login an User can login an Success
account after entering account using
username and username and
password. password.
3. Dashboard All notice data should User can view data Success
be shown on dashboard after login.
4. Add, Update & Edit Logged in User should This module is Success
notice able to add, update and working as per
edit the notice. requirements.
5. Upload images for Logged in User should This module is Success
gallery. able to upload new working as per
images and delete requirements.
notice.
6. Alert After any fault activity Alert section can show Success
alert section should alerts
show an alert.
7. Graph All data should be All sensor data can be Success
shown on dashboard in shown on dashboard in
the form of graph and the form of graph and
chart. chart.
8. Logs All logs should be Log Section is Success
shown in logs section. showing all logs.
Chapter 8
Result
8.1 Outcomes and Results
Chapter 9
Conclusion
9.1 Conclusion
As the technology is advancing every passing day the display board systems are moving from
static boards display to digital signage display. An efficient, effective, fast and cheap remotely
managed embedded Digital Signage System architecture is designed, implemented, developed
using raspberry pi 3 and web application. The strength of our work lies not only in developing a
compact size embedded digital signage system, but also in implementing it within the reach of
current hardware and software engineering technology. There are large number of applications
for the system developed which can transform the advertising and marketing industry. Digital
signage boards are an economical and advanced solution for today's static advertisement boards.
The modern digital signage boards can be accessed and controlled remotely using internet.
Digital signage system has advantages like reduced costs, integrating citizens with up-to-date
technologies, being easy to reach huge number of people, dynamic and effective advertisements,
ability to deliver relevant information at proper time for proper mass.
9.2 Future enhancement
 We will use 64*64 RGB LED Panel so that system can be used in outdoor advertising.
 We will also add camera to stream live events on digital signage system.
 We will add various machine learning algorithms to improve viewers engagement.

9.3 Applications and advantages


 School, college and university notice board.
 Menu display for restaurants, shopping mall, grocery stores and showrooms.
 Product count, machine status in manufacturing companies.
 Token display, sign boards in bank and other financial institutes.
 Sign boards, maps for big campus institutes.

You might also like