MASIGNALPHAS2101
6680671983845063762

Digital Text Board 8×8 LED Matrix MAX7219 with Scrolling Text & Android Control via Bluetooth

Digital Text Board 8×8 LED Matrix MAX7219 with Scrolling Text & Android Control via Bluetooth
Add Comments
12/22/2018
Digital Text Board merupakan salah satu media elektronik yang sering digunakan untuk memberikan informasi yang digunakan dalam dunia advertising, industri, lembaga pemerintahan, pendidikan dll.
Digital Text Board adalah Sebuah layanan informasi berbasis digital satu arah. Komponen sebuah Digital Text Board teridiri dari serangkaian rangkaian elektronik yang terintegrasi menjadi satu sehingga dapat menampilkan layanan informasi berupa data/text.

Pengontrolan Digital Text Board ini menggunakan koneksi Bluetooth untuk menghubungkan perangkat android ke arduino, kamu hanya perlu membuka Aplikasi Digital Text Board dan merubah text hanya dari aplikasi.

Pengontrolan otomatisasi alat ini menggunakan Arduino Uno R3 board mikrokontroller berbasis ATmega328 dengan 14 pin digital input/output sebagai pemrosesan data dan Modul Master Slave HC-05 Integrated Bluetooth sebagai interface perangkat Android dengan alat yang dibuat. 

HC-05 adalah sebuah modul Bluetooth SPP (Serial Port Protocol) yang mudah digunakan untuk komunikasi serial wireless (nirkabel) yang mengonversi port serial ke Bluetooth. HC-05 menggunakan modulasi Bluetooth V2.0+ EDR (Enchanced Data Rate) 3 Mbps dengan memanfaatkan gelombang radio berfrekuensi 2,4 GHz. Sedangkan data/text akan ditampilkan di LED berbasis DOT MATRIX yang banyak di pakai untuk media informasi berupa text.

Dalam perancangan Digital Text Board ini memiliki beberapa komponen yang harus dipersiapkan, diantaranya adalah:

HARDWARE
  1. LED MAX7219 Dot Matrix 8x8,
  2. HC-05 Bluetooth Module,
  3. Arduino Board.
SOFTWARE
  1. IDE Arduino, untuk membuat program
  2. App Inventor, untuk mendesain aplikasi
  3. Fritzing, untuk mendesain skematik
DIAGRAM
Berikut adalah diagram blok yang dipakai dalam pembuatan Digital Text Board:
Blok Diagram 
Diagram diatas menjelaskan bahwa teks berjalan dikendalikan dari jarak jauh dan dapat memperbarui informasi melalui aplikasi Android.

Arduino akan menjalankan fungsi loop yang menampilkan informasi berupa string char. Ketika ada interupsi yang berupa koneksi dan adanya informasi baru lewat bluetooth serial, maka informasi baru yang berasal dari perangkat Android akan dieksekusi terlebih dahulu, dan setelah selesai, Arduino akan menjalankan kembali menampilkan rutin program informasi karakter yang masuk. Interupsi Android dapat berupa update informasi teks berjalan yang ditampilkan, tetapi bisa juga perintah untuk mengubah laju kecepatan Digital Text Board, kecerahan dan perulangan menampilkan pesan.

DRIVER
Pada perancangan alat ini yang digunakan adalah driver MAX7219 untuk LED Dot Matrix. Driver MAX7219 ini menggunakan IC yang mampu mengontrol 64 LED sekaligus dengan hanya menggunakan 3 kabel data untuk komunikasi dengan Arduino, rangkaian Driver bisa dilihat seperti pada gambar dibawah ini:
Schematic Driver LED Dot Matrix 
Dari rangkaian diatas diketahui diketahui bahwa 64 LED dikontrol oleh 16 pin output dari IC. Sementara jumlah maksimum LED menyala pada saat yang sama sebenarnya adalah delapan. LED diatur sebagai 8×8 set baris dan kolom. Jadi, MAX7219 mengaktifkan setiap kolom untuk waktu yang sangat singkat dan pada saat yang sama juga mengontrol penyalaan LED setiap baris.
Dot Matrix Display 
Untuk lebih lengkapnya, baca artikel dibawah ini:
Baca:
SCHEMATIC
Sebelum merangkai rangkaian schematic, yang harus dipersiapkan adalah LED MAX7219 Dot Matrix 8x8 yang 4 chanel, seperti gambar berikut:
Dot Matrix4 Chanel 
Kemudian potonglah board komponen LED diatas menjadi 4 bagian, tentunya LED harus dilepas terlebih dahulu dari socket board-nya, lihat gambar berikut:
Bagian LED yang Dipotong 
Setelah dipotong, Hubungkanlah bagian Board dengan menggunakan kabel jumper, perhatikan gambar berikut:
Pin Socket 
Keseluruhan board yang sudah dihubungkan seperti berikut:
Rangkaian 
Selanjutnya, rangkailah seluruh komponen seperti gambar berikut:
Schematic
Ket:
No Pin Bluetooth Pin Arduino
1 VCC VCC
2 GND GND
3 TXD RXD
4 RXD TXD
No Pin LED MTX Pin Arduino
1 VCC VCC
2 GND GND
3 DIN 7
4 CLK 6
5 CS 5
Modul bluetooth yang digunakan adalah HC-05 Bluetooth Module, bisa juga menggunakan jenis bluetooth type HC-06. Untuk serial komunikasi bluetooth dengan Arduino bisa di lihat pada artikel dibawah ini:
Baca:
- Bluetooth HC-05 Interfacing with Arduino
SOURCE CODE
ssss
#include <MaxMatrix.h>
#include <SoftwareSerial.h>
#include <avr/pgmspace.h>

PROGMEM const unsigned char CH[] = {
  3, 8, B00000000, B00000000, B00000000, B00000000, B00000000, // space
  1, 8, B01011111, B00000000, B00000000, B00000000, B00000000, // !
  3, 8, B00000011, B00000000, B00000011, B00000000, B00000000, // "
  5, 8, B00010100, B00111110, B00010100, B00111110, B00010100, // #
  4, 8, B00100100, B01101010, B00101011, B00010010, B00000000, // $
  5, 8, B01100011, B00010011, B00001000, B01100100, B01100011, // %
  5, 8, B00110110, B01001001, B01010110, B00100000, B01010000, // &
  1, 8, B00000011, B00000000, B00000000, B00000000, B00000000, // '
  3, 8, B00011100, B00100010, B01000001, B00000000, B00000000, // (
  3, 8, B01000001, B00100010, B00011100, B00000000, B00000000, // )
  5, 8, B00101000, B00011000, B00001110, B00011000, B00101000, // *
  5, 8, B00001000, B00001000, B00111110, B00001000, B00001000, // +
  2, 8, B10110000, B01110000, B00000000, B00000000, B00000000, // ,
  4, 8, B00001000, B00001000, B00001000, B00001000, B00000000, // -
  2, 8, B01100000, B01100000, B00000000, B00000000, B00000000, // .
  4, 8, B01100000, B00011000, B00000110, B00000001, B00000000, // /
  4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // 0
  3, 8, B01000010, B01111111, B01000000, B00000000, B00000000, // 1
  4, 8, B01100010, B01010001, B01001001, B01000110, B00000000, // 2
  4, 8, B00100010, B01000001, B01001001, B00110110, B00000000, // 3
  4, 8, B00011000, B00010100, B00010010, B01111111, B00000000, // 4
  4, 8, B00100111, B01000101, B01000101, B00111001, B00000000, // 5
  4, 8, B00111110, B01001001, B01001001, B00110000, B00000000, // 6
  4, 8, B01100001, B00010001, B00001001, B00000111, B00000000, // 7
  4, 8, B00110110, B01001001, B01001001, B00110110, B00000000, // 8
  4, 8, B00000110, B01001001, B01001001, B00111110, B00000000, // 9
  2, 8, B01010000, B00000000, B00000000, B00000000, B00000000, // :
  2, 8, B10000000, B01010000, B00000000, B00000000, B00000000, // ;
  3, 8, B00010000, B00101000, B01000100, B00000000, B00000000, // <
  3, 8, B00010100, B00010100, B00010100, B00000000, B00000000, // =
  3, 8, B01000100, B00101000, B00010000, B00000000, B00000000, // >
  4, 8, B00000010, B01011001, B00001001, B00000110, B00000000, // ?
  5, 8, B00111110, B01001001, B01010101, B01011101, B00001110, // @
  4, 8, B01111110, B00010001, B00010001, B01111110, B00000000, // A
  4, 8, B01111111, B01001001, B01001001, B00110110, B00000000, // B
  4, 8, B00111110, B01000001, B01000001, B00100010, B00000000, // C
  4, 8, B01111111, B01000001, B01000001, B00111110, B00000000, // D
  4, 8, B01111111, B01001001, B01001001, B01000001, B00000000, // E
  4, 8, B01111111, B00001001, B00001001, B00000001, B00000000, // F
  4, 8, B00111110, B01000001, B01001001, B01111010, B00000000, // G
  4, 8, B01111111, B00001000, B00001000, B01111111, B00000000, // H
  3, 8, B01000001, B01111111, B01000001, B00000000, B00000000, // I
  4, 8, B00110000, B01000000, B01000001, B00111111, B00000000, // J
  4, 8, B01111111, B00001000, B00010100, B01100011, B00000000, // K
  4, 8, B01111111, B01000000, B01000000, B01000000, B00000000, // L
  5, 8, B01111111, B00000010, B00001100, B00000010, B01111111, // M
  5, 8, B01111111, B00000100, B00001000, B00010000, B01111111, // N
  4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // O
  4, 8, B01111111, B00001001, B00001001, B00000110, B00000000, // P
  4, 8, B00111110, B01000001, B01000001, B10111110, B00000000, // Q
  4, 8, B01111111, B00001001, B00001001, B01110110, B00000000, // R
  4, 8, B01000110, B01001001, B01001001, B00110010, B00000000, // S
  5, 8, B00000001, B00000001, B01111111, B00000001, B00000001, // T
  4, 8, B00111111, B01000000, B01000000, B00111111, B00000000, // U
  5, 8, B00001111, B00110000, B01000000, B00110000, B00001111, // V
  5, 8, B00111111, B01000000, B00111000, B01000000, B00111111, // W
  5, 8, B01100011, B00010100, B00001000, B00010100, B01100011, // X
  5, 8, B00000111, B00001000, B01110000, B00001000, B00000111, // Y
  4, 8, B01100001, B01010001, B01001001, B01000111, B00000000, // Z
  2, 8, B01111111, B01000001, B00000000, B00000000, B00000000, // [
  4, 8, B00000001, B00000110, B00011000, B01100000, B00000000, // \ backslash
  2, 8, B01000001, B01111111, B00000000, B00000000, B00000000, // ]
  3, 8, B00000010, B00000001, B00000010, B00000000, B00000000, // hat
  4, 8, B01000000, B01000000, B01000000, B01000000, B00000000, // _
  2, 8, B00000001, B00000010, B00000000, B00000000, B00000000, // `
  4, 8, B00100000, B01010100, B01010100, B01111000, B00000000, // a
  4, 8, B01111111, B01000100, B01000100, B00111000, B00000000, // b
  4, 8, B00111000, B01000100, B01000100, B00101000, B00000000, // c
  4, 8, B00111000, B01000100, B01000100, B01111111, B00000000, // d
  4, 8, B00111000, B01010100, B01010100, B00011000, B00000000, // e
  3, 8, B00000100, B01111110, B00000101, B00000000, B00000000, // f
  4, 8, B10011000, B10100100, B10100100, B01111000, B00000000, // g
  4, 8, B01111111, B00000100, B00000100, B01111000, B00000000, // h
  3, 8, B01000100, B01111101, B01000000, B00000000, B00000000, // i
  4, 8, B01000000, B10000000, B10000100, B01111101, B00000000, // j
  4, 8, B01111111, B00010000, B00101000, B01000100, B00000000, // k
  3, 8, B01000001, B01111111, B01000000, B00000000, B00000000, // l
  5, 8, B01111100, B00000100, B01111100, B00000100, B01111000, // m
  4, 8, B01111100, B00000100, B00000100, B01111000, B00000000, // n
  4, 8, B00111000, B01000100, B01000100, B00111000, B00000000, // o
  4, 8, B11111100, B00100100, B00100100, B00011000, B00000000, // p
  4, 8, B00011000, B00100100, B00100100, B11111100, B00000000, // q
  4, 8, B01111100, B00001000, B00000100, B00000100, B00000000, // r
  4, 8, B01001000, B01010100, B01010100, B00100100, B00000000, // s
  3, 8, B00000100, B00111111, B01000100, B00000000, B00000000, // t
  4, 8, B00111100, B01000000, B01000000, B01111100, B00000000, // u
  5, 8, B00011100, B00100000, B01000000, B00100000, B00011100, // v
  5, 8, B00111100, B01000000, B00111100, B01000000, B00111100, // w
  5, 8, B01000100, B00101000, B00010000, B00101000, B01000100, // x
  4, 8, B10011100, B10100000, B10100000, B01111100, B00000000, // y
  3, 8, B01100100, B01010100, B01001100, B00000000, B00000000, // z
  3, 8, B00001000, B00110110, B01000001, B00000000, B00000000, // {
  1, 8, B01111111, B00000000, B00000000, B00000000, B00000000, // |
  3, 8, B01000001, B00110110, B00001000, B00000000, B00000000, // }
  4, 8, B00001000, B00000100, B00001000, B00000100, B00000000, // ~
};

int dIn = 7;   // DIN pin of MAX7219 module
int clk = 6;   // CLK pin of MAX7219 module
int cs = 5;    // CS pin of MAX7219 module

int maxInUse = 4;    // Number of MAX7219's connected

MaxMatrix m(dIn, cs, clk, maxInUse);
SoftwareSerial Bluetooth(rx, tx); // Bluetooth

byte buffer[10];
char incomebyte;
int scrollSpeed = 100;
char text[100] = "ARI SEPTIAWAN  "; // Initial text message
int brightness = 15;
int count = 0;
char indicator;

void setup() {
  m.init(); // MAX7219 initialization
  m.setIntensity(brightness); // initial led matrix intensity, 0-15
  Bluetooth.begin(9600); // Default communication rate of the Bluetooth module
}

void loop() {
  // Printing the text
  printStringWithShift(text, scrollSpeed);
  
  if (Bluetooth.available()) {   // Checks whether data is comming from the serial port
    indicator = Bluetooth.read();   // Starts reading the serial port, the first byte from the incoming data
    // If we have pressed the "Send" button from the Android App, clear the previous text
    if (indicator == '1') {
      for (int i = 0; i < 100; i++) {
        text[i] = 0;
        m.clear();
      }
      // Read the whole data/string comming from the phone and put it into text[] array.
      while (Bluetooth.available()) {
        incomebyte = Bluetooth.read();
        text[count] = incomebyte;
        count++;
      }
      count = 0;
    }
    // Adjusting the Scrolling Speed
    else if (indicator == '2') {
      String sS = Bluetooth.readString();
      scrollSpeed = 150 - sS.toInt(); // Milliseconds, subtraction because lower value means higher scrolling speed
    }
    // Adjusting the brightness
    else if (indicator == '3') {
      String sB = Bluetooth.readString();
      brightness = sB.toInt();
      m.setIntensity(brightness);
    }
  }

}

void printCharWithShift(char c, int shift_speed) {
  if (c < 32) return;
  c -= 32;
  memcpy_P(buffer, CH + 7 * c, 7);
  m.writeSprite(32, 0, buffer);
  m.setColumn(32 + buffer[0], 0);

  for (int i = 0; i < buffer[0] + 1; i++)
  {
    delay(shift_speed);
    m.shiftLeft(false, false);
  }
}

void printStringWithShift(char* s, int shift_speed) {
  while (*s != 0) {
    printCharWithShift(*s, shift_speed);
    s++;
  }
}

void printString(char* s)
{
  int col = 0;
  while (*s != 0)
  {
    if (*s < 32) continue;
    char c = *s - 32;
    memcpy_P(buffer, CH + 7 * c, 7);
    m.writeSprite(col, 0, buffer);
    m.setColumn(col + buffer[0], 0);
    col += buffer[0] + 1;
    s++;
  }
}

Upload program ke Arduino dengan menggunakan IDE Arduino. Library Max Matrix nya jangan sampai lupa, download DISINI

Perhatikan Script berikut:
byte Buf7219[7]; // "width,height,data[5]" single character buffer.
int dIn = 7;   // DIN pin of MAX7219 module
int clk = 6;   // CLK pin of MAX7219 module
int cs = 5;    // CS pin of MAX7219 module
int maxDisplays = 4;    // Number of MAX7219's connected
char data = 0;
MaxDisplay disesuaikan dengan jumlah LED. Jika tidak, maka LED akan hidup sesuai dengan jumlah MaxDisplay yang digunakan.

Kamu juga bisa menambah LED Matrix berapapun, tinggal disesuaikan dengan MaxDisplay programnya.


Dibawah ini merupakan program text berjalan saat pertama kali Digital Text Board dihidupkan.
byte buffer[10];
char incomebyte;
int scrollSpeed = 100;
char text[100] = "ARI SEPTIAWAN   "; // Initial text message
int brightness = 15;
int count = 0;
char indicator;
Succes
APLIKASI
Perancangan algoritma pemrograman Android ini tidak perlu berhadapan dengan bahasa pemrograman yang rumit. Dengan memanfaatkan App Inventor, kamu bisa merancang sebuah aplikasi android yang nantinya akan digunakan untuk mengakses Digital Text Board. Aplikasi "Digital Text Board" yang digunakan untuk menulis update data ditampilkan seperti yang ditunjukkan dalam Gambar dibawah ini:
Jendela Components App Inventor
Download:
Arduino_8x8_LED_Matrix.apk (Download)
Arduino_8x8_LED_Matrix.aia (Download)
OPERATION
Nyalakan Digital Text Board. Maka, LCD Dot Matrix akan menyala dan akan menampilkan tampilan awal yang telah di program sebelumnya.
Sambungkan bluetooth handphone dangan modul bluetooth, pada aplikasi android pilih “CONNECT”. Seperti gambar dibawah ini:
Tampilan Awal Aplikasi 
3. Kemudian, pilih salah satu dari tipe bluetooth yang sesuai dengan modul bluetooth.
Koneksi Bluetooth 
4. Jika bluetooth sudah tersambung maka ada tulisan “Terhubung” pada aplikasi android yang akan memberi tahu bahwa bluetooth telah tersambung dan siap dikirimkan text.
Koneksi Bluetooth 
5. Setelah terhubung, selanjutnya ketik text pada aplikasi.
6. Pilih “Kirim” dan text akan tampil di LCD Dot Matrix.
HASIL 
DONE...!

VIDEONYA INSYA ALLAH MENYUSUL.
Semoga bermanfaat, Silahkan SHARE dan tinggalkan Komentar.
Hestech Indonesia

Innovasi di bidang Teknologi, Listrik, Teknik Komputer dan gaya Hidup. Info lainnya tentang praktik konservasi berbasis Sains, inovasi, dan kearifan lokal

  1. Mantab artikelnya.
    Dicoba dulu min, nanti kalau ada kesulitan mohon dibantu ya.

    ReplyDelete
  2. #include....
    #include....

    2library kosong diatas yang di masukkan library apa?....

    ReplyDelete
    Replies
    1. #include ...MaxMatrix.h
      #include ...avr/pgmspace.h...

      library dapat di download pada keterangan program.

      Delete