Kamis, 17 Desember 2020

Cara Memperbaiki Jam Waktu Sholat JWS Seven Segment [JWS 7 Segment Disambar Petir]

Pada artikel kali ini saya akan berbagi cara memperbaiki JWS 7 Segment yang rusak karena disambar petir. Setelah tersambar petir, JWS 7 Segment kondisinya:

  1. Display menampilkan karakter acak-acakan
  2. Buzzer tidak berhenti berbunyi / selalu berbunyi

Setelah saya cek, ternyata kerusakannya ada pada mikrokontroler nya. Mungkin mikrokontroler tersebut rusak secara hardware, atau hanya sekedar rusak programnya saja (harus di flashing / program ulang). Dikarenakan saya tidak mengetahui Jam Sholat JWS ini menggunakan vendor mana, sehingga saya tidak bisa sembarang membeli kontroler JWS 7 Segment yang dijual secara online, sebab jika salah beli maka saya bisa rugi lumayan besar, disebabkan harga kontrolernya yang tidak murah.

Oleh sebab itu, saya harus mempelajari hardware dari JWS 7 Segment itu sendiri, kemudian memrakit dan memprogram sendiri kontroler JWS yang sesuai dengan hardware yang sedang saya perbaiki. Setelah melakukan beberapa tahap identifikasi, observasi, dan beberapa pertimbangan, akhirnya saya memutuskan untuk menggunakan Arduino Uno R3, RTC DS3231, Buzzer 12A05 (bawaan dari vendornya) (krn Buzzer ini suaranya jernih dan nyaring, bukan abal-abal), Remote TV Universal, Kanibal IR Receiver Sensor dari MP3 Player bekas, Rangkaian Power Supply bawaan vendor, dan melakukan modifikasi JWS 7 Segement Simple dari Fans Electronic.

Alhamdulillah, hasilnya cukup memuaskan. Jam Sholat Digital / JWS 7 Segment bisa menyala kembali, menampilkan waktu dengan presisi, menampilkan jadwal sholat dengan baik, bisa disetting secara remote menggunakan remote tv universal, style tampilan yang lebih update karena menggunakan kode program lebih baru.

Untuk mengetahui step-step yang dilakukan dalam perbaikan ini bisa disaksikan pada video berikut ini:

Part 1: https://youtu.be/DI4PCLy1oSc Memperbaiki Jam Masjid JWS Seven Segment Part 1 : (Identifikasi Hardware, Modul & Tes Kode Program) Part 2: https://youtu.be/6G7ux164pw8 Memperbaiki Jam Masjid JWS Seven Segment Part 2 : (Modif Sketch & Menampilkan Jam Pada Display) Part 3: https://youtu.be/pQtUCkhciO4 Memperbaiki Jam Masjid JWS Seven Segment Part 3 : (Menampilkan Waktu Sholat & Jam Pada Display) Part 4: https://youtu.be/XC14J05yoUo Memperbaiki Jam Masjid JWS Seven Segment Part 4 : (Remote TV Untuk Setting JWS) Part 5: https://youtu.be/nKqjrZADUco Memperbaiki Jam Masjid JWS Seven Segment Part 5 : (Trik Dumping Data IR Remote Dengan Mudah & Cepat) Part 6: https://youtu.be/593fN5q_7ls Memperbaiki Jam Masjid JWS Seven Segment Part 6: (Setting Jam - JWS Digital 7 Segment)

SHORT VIDEO

Untuk kode program hasil modifikasi, belum terlalu rapi dan tidak begitu terstruktur, namun cukup untuk menjalankan hardware JWS 7 Segement yang rusak tersambar petir ini. Sebagaimana dari sumber aslinya, yaitu fanselectronics.com, digunakan 4 sketch yang disimpan dalam satu folder, yaitu "JWS_Ekonomis_Set_Remote", "Display", "Jadwal_Sholat", "Setting". Adapun kode programnya adalah sebagai berikut.

LCD Keypad Shield Tampilan Polos (Tidak Menampilkan Karakter) - [LCD Keypad Shield Not Displaying Words - ARDUINO UNO - D1 ROBOT]

Saya baru saja membeli Arduino Uno dan LCD Keypad Shield, yaitu modul LCD yang disertai dengan tombol-tombol (keypad). Setelah saya coba, saya upload beberapa sketch LCD Shield dari yang berisi kode program sederhana ("Hello World") hingga yang berisi kode program yang sedang dan kompleks, namun HASILNYA NIHIL, LCD NYA TETAP TIDAK BISA MENAMPILKAN KARAKTER. 

Setelah browsing ke beberapa sumber, akhirnya didapatkan bahwa permasalahannya adalah settingan brightness dari LCD nya. Jadi ada sebuah trimpot berwarna biru di pojok kiri atas dari LCD Keypad Shield tersebut yang harus kita putar pada arah kiri maupun kanan (sesuai dengan kebutuhan), defaultnya adalah diputar ke arah kiri / bawah / berlawanan arah jarum jam. Kita harus putar tersebut potensiometer biru tersebut sehingga pixel-pixel yang ada pada LCD Shield tersebut menjadi lebih terang dari pada cahaya latar modul LCD tersebut.

Kemudian untuk pengetesan kita bisa mengisi Arduino Uno dengan kode program yang sederhana (hello world) seperti berikut:

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  lcd.print("Hello World!");
}

void loop()
{
  
}

Atau bisa juga dengan kode program yang lebih panjang seperti ini (untuk menampilkan informasi tombol yang ditekan):

/*
Arduino 2x16 LCD - Detect Buttons
modified on 18 Feb 2019
by Saeed Hosseini @ Electropeak
https://electropeak.com/learn/
*/
#include <LiquidCrystal.h>
//LCD pin to Arduino
const int pin_RS = 8; 
const int pin_EN = 9; 
const int pin_d4 = 4; 
const int pin_d5 = 5; 
const int pin_d6 = 6; 
const int pin_d7 = 7; 
const int pin_BL = 10; 
LiquidCrystal lcd( pin_RS,  pin_EN,  pin_d4,  pin_d5,  pin_d6,  pin_d7);
void setup() {
 lcd.begin(16, 2);
 lcd.setCursor(0,0);
 lcd.print("AB Led");
 lcd.setCursor(0,1);
 lcd.print("Press Key:");
}
void loop() {
 int x;
 x = analogRead (0);
 lcd.setCursor(10,1);
 if (x < 60) {
   lcd.print ("Right ");
 }
 else if (x < 200) {
   lcd.print ("Up    ");
 }
 else if (x < 400){
   lcd.print ("Down  ");
 }
 else if (x < 600){
   lcd.print ("Left  ");
 }
 else if (x < 800){
   LCD.print ("Select");
 }
} 

Untuk mengetahui secara detail bagaimana proses troubleshooting nya, bisa dilihat pada video tutorial berikut ini:



Jangan lupa untuk Like, Subscribe, Share dan Comment pada channel tersebut ya..

Trims.

Sabtu, 12 Desember 2020

Program Arduino Untuk Komunikasi Dengan IR Remote Receiver (Dumping Data Remote TV Infra Red)

Sebelum menggunakan Remote Infra Red (semisal Remote TV) dengan mikokontroler atau arduino, kita membutuhkan kode-kode desimal dari setiap tombol-tombol yang ada pada remote tersebut. Untuk memudahkan dalam melakukan dumping file kode IR Remote ke dalam file text, kita dapat menggunakan bantuan software komunikasi serial yabg sudah saya buat sebelumnya (silahkan klik link ini). Sedangkan untuk arduino nya sendiri kita isikan kode program berikut:

#include <IRremote.h>
//int RECV_PIN = 11; // PIN 11
int RECV_PIN = 2; // PIN 2

IRrecv irrecv(RECV_PIN);
decode_results results;

int incomingByte;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn();
}
void loop()
{
  while(Serial.available())
  {
  }
  
  for (int i=0; i<23; i++)
  {
    if (i<10)
    {
      delay(1000);
      Serial.print("Tekan tombol ");
      Serial.print(i);
      Serial.println(" :");
      delay(700);
      while (!irrecv.decode(&results))
      {
      }
      Serial.println(results.value);
      delay(700);
      irrecv.resume(); 
    }
    else
    {
      switch (i)
      {
        case (10):
          Serial.println("Tekan tombol titik (.) :");
          break;
        case (11):
          Serial.println("Tekan tombol + :");
          break;
        case (12):
          Serial.println("Tekan tombol - :");
          break;
        case (13):
          Serial.println("Tekan tombol Power :");
          break;
        case (14):
          Serial.println("Tekan tombol OK :");
          break;
        case (15):
          Serial.println("Tekan tombol Panah Atas :");
          break;
        case (16):
          Serial.println("Tekan tombol Panah Bawah :");
          break;
        case (17):
          Serial.println("Tekan tombol Panah Kiri :");
          break;
        case (18):
          Serial.println("Tekan tombol Panah Kanan :");
          break;
        case (19):
          Serial.println("Tekan tombol Recall :");
          break;
        case (20):
          Serial.println("Tekan tombol Exit :");
          break;
        case (21):
          Serial.println("Tekan tombol CH+ :");
          break;
        case (22):
          Serial.println("Tekan tombol CH- :");
          break;
         default:
          break;
      }

      delay(700);
      while (!irrecv.decode(&results))
      {
      } 
      Serial.println(results.value);
      delay(700);
      irrecv.resume();
    }
  }
}

Untuk cara penggunaannya bisa cek pada video berikut: Cara Mudah Dumping Kode IR Remote Dengan Software Komunikasi Serial.
Untuk cara interfacing IR Receiver dengan arduino beserta teknik dasar dumping kode IR Remote ke dalam file text bisa cek di video ini: Interfacing IR Receiver dan Arduino.

Visual C# - Membuat Program Untuk Komunikasi Serial Dengan Mikrokontroler / Arduino

Disini saya menggunakan Ms. Visual C# 2019 Communitty Editions. Program ini berfungsi untuk melakukan komunikasi serial antara PC dengan Arduino atau mikrokontroler. Diantara kegunaannya adalah untuk menyinkronkan waktu modul RTC dengan waktu PC, melakukan Dump Data Remote IR, Debug Program yang telah dibuat, dan lain sebagainya.

Untuk membuat program ini, pertama kali buat desain UI seperti gambar berikut ini:




Adapun komponen yang harus ditambahkan disini adalah tentunya Main Form (Properti Text = komunikasi serial). Kemudian di dalamnya ditambahkan komponen Tab Control, Serial Port, Timer, Status Strip, dan Save File Dialog. Sedangkan di dalam Tab Control memuat komponen-komponen berikut:
  • Tab Page 1
    • Group Box 1 (Text : Waktu)
      • 2 Label
      • 2 Button
    • Groub Box 2 (Text: Kirim Data)
      • 1 Text Box
      • 1 Button
    • Group Box 3 (Text: Data Diterima)
      • 1 Rich Text Box
      • 3 Button
      • 1 Label
  • Tab Page 2
    • 6 Label
    • 6 Combo Box
    • 1 Button
Untuk kode program lengkapnya seperti dibawah ini:

Minggu, 18 Oktober 2020

Menampilkan Tulisan Di Panel Dot Matrix P10 Menggunakan Arduino - [Teknik Dasar "Arduino & Panel P10" Yang Pemula Harus Tahu]

Untuk menampilkan teks atau tulisan pada Dot Matrix Panel P10, atau yang biasa dikenal dengan Running text, membutuhkan beberapa komponen inti, yaitu:

  1. Panel P10 32x16
  2. Controller Running Text Panel P10
  3. Power Supply
  4. Frame (jika running text tersebut hendak dipasang)

Berkaitan dengan controller, sudah banyak tersedia di pasaran dengan harga yang sangat murah hingga harga yang cukup mahal. Varian dari controller tersebut juga bermacam-macam dengan kemampuan mengontrol jumlah Panel P10 yang berbeda-beda. 

Di lain sisi, terkadang kita membutuhkan sebuah controller yang bisa dikustom sesuai kehendak atau kebutuhan kita, misalnya untuk pembuatan Jam Waktu Sholat Running Text, Papan Score Running Text, dan berbagai perangkat kendali digital / elektronika lainnya yang berbasis Panel Dot Matrix (dalam pembahasan ini adalah tipe P10). Salah satu perangkat elektronika yang bisa, mudah dan banyak digunakan untuk mengendalikan Panel Dot Matrix adalah Arduino.

Dalam artikel ini saya akan menggunakan Arduino Uno untuk menampilkan tulisan pada Panel Dot Matrix P10. Ini adalah pengetahuan paling dasar yang harus diketahui oleh pemula yang sedang belajar mengendalikan tulisan pada Panel P10 menggunakan kontroler kustom, yaitu Arduino. Adapun Arduino IDE yang saya gunakan adalah versi 1.8.13 yang dapat di download di: https://www.arduino.cc/en/Main/software. Dan driver USB To Serial yang saya gunakan (agar Arduino terdeteksi oleh OS Windows 7) adalah CH430G sesuai dengan chip USB To Serial yang digunakan oleh Board Arduino saya, untuk cara penginstalannya bisa dilihat disini: https://electronics-project-hub.com/arduino-not-detected-and-driver-issues-solved/. Jika board Arduino anda menggunakan chip USB To Serial tipe FTDI, kemungkinan drivernya sudah tersedia bersamaan saat instalasi Arduino IDE pada komputer anda, dimana cara penginstalannya dapat dilihat disini: https://learn.sparkfun.com/tutorials/usb-serial-driver-quick-install-/all#:~:text=the%20appropriate%20device.-,In%20the%20Arduino%20IDE%2C%20click%20Tool%20%2D%3E%20Ports%20to%20ensure,the%20device%20has%20been%20recognized.&text=The%20Arduino%20Uno%20will%20appear%20as%20a%20ttyACMXX%20device.,install%20the%20drivers%20by%20hand.

Baiklah, selanjutnya yang diperlukan adalah konektor DMD untuk menghubungkan pin-pin Arduino yang dibutuhkan ke port input HUB12 dari Panel Dot Matrix P10. Konektor DMD ini selain bisa dibuat sendiri, juga sudah banyak tersedia di pasaran (online) dengan harga murah. Silahkan anda dapat membeli di beberapa toko online di Indonesia. Untuk membuat sendiri, anda bisa mengacu pada gambar dibawah ini:

Sumber: https://www.instructables.com/Display-Text-at-P10-LED-Display-Using-Arduino/

Baik, setelah anda memiliki Arduino IDE, Board Arduino dan konektor DMD, selanjutnya adalah menulis koding program arduino tersebut atau biasa disebut juga dengan Sketch. Jalankan Arduino IDE anda, kemudian tuliskan kode program (buat sketch) seperti berikut ini:

// Insert file Library
#include <SPI.h>
#include <DMD2.h>
#include <fonts/Arial_Black_16.h>

SoftDMD dmd(1,1);
// Number of P10 panels used X, Y

DMD_TextBox box(dmd, 2, 1, 32, 16); 
// Set Box (dmd, x, y, Height, Width) 

void setup() {
  dmd.setBrightness(30); // Set brightness 0 - 255 
  dmd.selectFont(Arial_Black_16); // Font used
  dmd.begin();     // Start DMD
  box.print("LED");
}

void loop() {
}

Coba kita lihat pada kode program diatas, pada bagian "DMD_TextBox box(dmd, 2, 1, 32, 16);", jadi angka 2 adalah koordinat X (kolom) dan angka 1 adalah koordinat Y (Baris). Berarti, tulisan akan ditampilkan pada panel P10 mulai dari kolom 2 baris 1. Ingat bahwa kolom pada panel ini ada 32, kolom 1 hingga 32, namun dalam kode program dikenal dengan nilai index 0 hingga 31. Dan baris pada panel P10 ini ada 16 baris yaitu baris ke 1 hingga ke 16, dan dalam kode program dikenal dengan nilai index -1 hingga 14. Jadi, untuk menentukan koordinat dot matrix Panel P10 dengan ukuran 32x16, dengan menggunakan library DMD2.h ini, koordinat tersebut dikenal dengan nilai index X = 0 hingga 31 dan nilai index Y = -1 hingga 14. Silahkan anda mengubah-ubah nilai X dan Y ini untuk mempelajari koordinat X dan Y dari library DMD2.h.

Kode program diatas adalah kode paling dasar untuk belajar mengendalikan Panel P10 menggunakan Arduino. Untuk tutorial lengkap, step by step, dapat dilihat pada video link youtube berikut:

https://youtu.be/aN8vh2eiLn4

Demikian artikel ini, semoga bermanfaat. Jangan lupa di Like, Subscribe, Share & Comment Video youtube nya ya... :D