Arduino based Wireless Notice board using P10 LED Display
The Digital notice boards where one has to update the displayed information by manually changing the message using a keyboard or some other tool.
But these notice boards can easily be converted into a wireless notice board, one such way is to use Bluetooth.
By integrating the Bluetooth, the information on the LED panel can be updated wirelessly through our smartphone. Here HC05 Bluetooth module is connected to Arduino Uno which receives the data sent from the smartphone application.
Then Arduino will process the data and display the information on the LED board.
Component List:-
1. 32*16 P10 LED module-1
2. Arduino UNO-1
3. HC05 Bluetooth module -1
4. 5V, 3 AMP SMPS -1
5. 16 Pin FRC connector -1
Pin Description of P10 LED Module:
1. Enable: This pin is used to control the brightness of the LED panel, by giving a PWM pulse to it.
2. A, B – These are called multiplex select pins. They take digital input to select any multiplex rows.
3. Shift clock (CLK), Store clock (SCLK) and Data: These are the normal shift register control pins. Here a shift register 74HC595 is used.
First Download and install the DMD.h and TimerOne.h library from the given links and then include all the required libraries in your code.
Also, include the “Arial Black font” library for the text font which will be displayed on the LED board.
1. Download DMD.h
2. Download TimerOne.h
Arduino Full Code:
#include <SPI.h>
#include <DMD.h>
#include <TimerOne.h>
#include <SystemFont5x7.h>
#include <Arial_black_16.h>
#define ROW_MODULE 1
#define COLUMN_MODULE 1
DMD p10(ROW_MODULE, COLUMN_MODULE);
char message[200];
char char_read;
byte pos_index = 0;
int i;
char welcome_screen[] = “Welcome to IoT Design”;
void p10scan()
{
p10.scanDisplayBySPI();
}
void setup()
{
Timer1.initialize(2000);
Timer1.attachInterrupt(p10scan);
p10.clearScreen( true );
Serial.begin(9600);
strcpy(message,welcome_screen);
}
void loop()
{
if(Serial.available())
{
for(i=0; i<199; i++)
{
message[i] = ‘\0’;
Serial.print(message[i]);
}
pos_index=0;
}
while(Serial.available() > 0)
{
p10.clearScreen( true );
if(pos_index < (199))
{
char_read = Serial.read();
message[pos_index] = char_read;
pos_index++;
}
}
p10.selectFont(Arial_Black_16);
p10.drawMarquee(message ,200,(32*ROW_MODULE)-1,0);
long start=millis();
long timer_start=start;
boolean flag=false;
while(!flag)
{
if ((timer_start+30) < millis())
{
flag=p10.stepMarquee(-1,0);
timer_start=millis();
}
}
}