Search

Wednesday, October 12, 2016

[MICROCONTROLLER][ARDUINO][TUTORIAL] Jumlah LED maksimal yang dapat dikontrol oleh ARDUINO (UNO) - Bonus KnightRider LED

Tutorial ini menunjukkan jumlah maksimal LED yang dapat dikontrol secara langsung menggunakan pin digital Arduino (UNO). Dan apakah semua LED dapat menyala bersamaan?

KEBUTUHAN PERANGKAT
  • Arduino (uno)
  • LED (12 buah)
  • Resistor 220 ohm maks 1 kilo-ohm (12 buah)
  • kabel jumper (warna-warni)
SIRKUIT
  • Untuk menghubungkan 1 buah LED ke arduino, silakan lihat tutorial Blinking LED. Silakan duplikat rangkaian LED tsb hingga berjumlah 12 buah rangkaian. Masing2 kaki positif-nya dihubungkan ke pin digital D2 hingga D13. Pin D0 dan D1 tidak dapat digunakan sebagai output dikarenakan sudah memiliki fungsi khusus sebagai RX dan TX.

SKEMATIK

Lihat rangkaian skematik di Blinking LED.

KODE

Setelah membuat rangkaian sirkuitnya:
  • sambungkan Arduino ke komputer
  • jalankan Arduino Software (IDE). Jika belum terinstal, silakan didownload disini.
  • masukkan kode berikut:
//#define _CDEBUG_ // uncomment for DEBUGGING
#define LED_NUM 12
int aLedPin[LED_NUM] = {13,12,11,10,9,8,7,6,5,4,3,2}; // PIN D0 & D1 can not be set as OUTPUT because of dedicated function as RX & TX
int i = 0, iPos = 0;
int iDir = 1;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  for (i=0; i<LED_NUM; i++) {
    pinMode(aLedPin[i], OUTPUT);
    digitalWrite(aLedPin[i], LOW);
  }
}

void loop() {
  // test all LEDs are blinking simulatenously?
  //LEDAllBlinks(); // uncomment to display blinking 12-LEDs
  
  // knight rider led
  LEDKnightRider(); // uncomment to display Knight Rider LED (using 12 LEDs)
}

void LEDKnightRider() {
#ifdef _CDEBUG_
  Serial.println(iPos);
#endif
  digitalWrite(aLedPin[iPos], HIGH);
  delay(50);
  digitalWrite(aLedPin[iPos], LOW);
  iPos = iPos + iDir;
  if ((iPos == LED_NUM - 1) || (iPos == 0)) {
    iDir = iDir * -1;
  }
}

void LEDAllBlinks() {
  for (i=0; i<LED_NUM; i++) {
    digitalWrite(aLedPin[i], HIGH);
  }
  delay(1000);
  for (i=0; i<LED_NUM; i++) {
    digitalWrite(aLedPin[i], LOW);
  }
  delay(1000);
}

VIDEO

Berikut adalah video hasil tutorial diatas:

12-LEDs are blinking simultaneously

Knight Rider LED (12-LEDs)

SUMBER
https://www.arduino.cc/en/Tutorial/Blink

Selamat mencoba!

Wednesday, October 5, 2016

[MICROCONTROLLER][ARDUINO][TUTORIAL] Kontrol Arduino menggunakan BLYNK (via USB serial)

Mengontrol arduino via handphone (android /iOS) sepertinya sih keren ya. Tapi susah gak sih? Mesti develop aplikasi di android/iOS secara khusus? Cara komunikasinya pake apa? Lama dong?
Pertanyaan-pertanyaan seperti itu pasti terlintas. Tak jarang, keraguan yang akhirnya juga dapat menjadi motif urungnya melanjutkan niatan diatas.
Dengan menggunakan BLYNK yang menyediakan dashboard berisi bermacam-macam widget, hal itu tidak lagi jadi masalah, bahkan tidak sampe 1 menit (seperti iklan video-nya), kita sudah dapat mengontrol Arduino via handphone (android/iOS).

Untuk kali ini, saya akan mencoba mengontrol arduino saya dengan rangkaian yang saya buat di artikel saya sebelumnya.

KEBUTUHAN PERANGKAT
  • Lihat kebutuhan perangkat di artikel ini
  • handphone (android/iOS). Saya menggunakan handphone android (Nexus 5).
  • koneksi internet dari laptop/komputer akan kita pakai
SIRKUIT
Menggunakan sirkuit yang ada di artikel ini.

LANGKAH-LANGKAH
  • Install BLYNK di handphone. Download BLYNK (android/iOS). Buat account di BLYNK atau login dengan account facebook.
  • Setelah berhasil login, buat proyek baru di BLYNK dan tambahkan widget Button dan Value. Silakan tambahkan widget lainnya sesuai kebutuhan. Yang perlu diingat adalah BLYNK free-version menyediakan sejumlah saldo nilai energi, dimana 1 widget seharga nilai energi tertentu. Klo saldo nilai energi ini, habis atau tidak mencukupi, maka kita tidak akan bisa menambahkan widget ke proyek. Jangan lupa mengirimkan AUTH TOKEN (yg ada di kotak merah) ke e-mail anda. AUTH TOKEN ini nantinya diperlukan untuk dimasukkan ke kode program ARDUINO-nya sebagai pengenal proyek ini.
BLYNK: Project Settings
BLYNK: Project Settings

BLYNK: Project view

BLYNK: Widgets

BLYNK: Widget Button Settings

BLYNK: Widget Value Display Settings

BLYNK juga sudah menyediakan in-app purchase untuk tambahan sejumlah nilai energi tertentu dengan harga tertentu.


  • Download BLYNK library. Saya menggunakan library yang ini.
  • Ekstrak file .zip dan copy-paste-kan semua folder ke folder {instalasi arduino}/libraries.
  • Masukkan AUTH TOKEN ke kode arduino (lihat di bagian kode di bawah)
  • Upload kode ke Arduino
  • Buka console windows, dan pindah ke folder {instalasi arduino}/libraries/Blynk/scripts
  • edit file blynk-ser.bat. Ubah nilai serial COM. Sesuaikan dengan nomor port serial Arduino Anda. Untuk kasus saya, COM8 adalah port serial Arduino saya.
  • Jalankan file blynk-ser.bat
  • Dan kini, Andapun sudah dapat mengontrol LED di Arduino dan menampilkan jarak yang dideteksi ULTRASONIC SENSOR secara online-realtime.
KODE
Berikut kode yang saya pakai:
#include <SoftwareSerial.h>
SoftwareSerial DebugSerial(2, 3); // RX, TX

#define BLYNK_PRINT DebugSerial
#include <BlynkSimpleStream.h>
#include <SimpleTimer.h>
#include <NewPing.h>

#define TRIGGER_PIN  12  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     11  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

int distance = 0;
SimpleTimer timer;

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "AUTH_TOKEN_PROYEK_ANDA";

void myTimerEvent()
{
  // You can send any value at any time.
  // Please don't send more that 10 values per second.
  distance = sonar.ping_cm();
  Blynk.virtualWrite(V1, distance);
  Blynk.virtualWrite(V2, distance);
  Blynk.virtualWrite(V3, distance);
}

void setup()
{
  // Debug console
  DebugSerial.begin(9600);

  // Blynk will work through Serial
  Serial.begin(9600);
  Blynk.begin(auth, Serial);
  
  // Setup a function to be called every second
  timer.setInterval(1000L, myTimerEvent);
}

void loop()
{
  Blynk.run();
  timer.run(); // Initiates SimpleTimer
}

TIPS: masukkan AUTH TOKEN proyek Anda menggantikan teks AUTH_TOKEN_PROYEK_ANDA.
VIDEO
Berikut video hasil tutorial ini.


REFERENSI

Selamat mencoba!

Tuesday, October 4, 2016

[MICROCONTROLLER][ARDUINO][TUTORIAL] Ultrasonic Sensor

Jika Anda pecinta mokit/gunpla maupun figure statue yang memiliki LED, mungkin proyek ini cocok bagi Anda yang menghendaki LED menyala secara otomatis jika ada orang yang mendekati mokit/gunpla maupun figure statue Anda, dan secara otomatis pula LED akan mati untuk periode waktu tertentu (dan tentunya LED akan tetap menyala jika orang tersebut tetap terdeteksi berada di sekitar objek tersebut). Nah, jika Anda menghendaki mekanisme deteksi yang akan digunakan adalah jarak orang dengan objek, maka kita dapat menggunakan sensor jarak berbasis ULTRASONIC.

KEBUTUHAN PERANGKAT
  • Arduino (uno)
  • sensor ultrasonic (HC-SR04)
  • kabel jumper (warna-warni)
  • mokit/gunpla/figure statue. Dalam tutorial ini, penulis menggunakan figure statue bust ironman yang memiliki LED di MATA dan ARC REACTOR-nya. Figure statue yang digunakan ini sudah memiliki rangkaian internal yang menggunakan tenaga batere yang secara terus-menerus akan menyala jika sudah di-ON-kan. Tapi kalo hanya seperti itu, kurang menarik kan? Selain itu juga tidak hemat energi.
SIRKUIT
  • TIPS: Untuk menghubungkan titik satu ke titik lainnya yang berjauhan, silakan gunakan kabel jumper dengan warna kesukaanmu. Akan tetapi, sebaiknya gunakan warna tertentu untuk membedakan arus positif dan negatif. 


SKEMATIK


KODE

Setelah membuat rangkaian sirkuitnya:
  • sambungkan Arduino ke komputer
  • jalankan Arduino Software (IDE). Jika belum terinstal, silakan didownload disini.
  • masukkan kode berikut:
// ---------------------------------------------------------------------------
// LED-ON using Sonar
// ---------------------------------------------------------------------------

#include <NewPing.h>

#define LED_PIN 13 // Arduino pin tied to trigger pin on LED.
#define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
#define REQUIRE_DISTANCE 20 // // cm - maximal required distance to triger LED
#define MAX_INTERVAL_ON 5000 // ms - change this value for LED interval

bool bON = false;
int distance = 0;
unsigned long ulFirstCT = 0;
unsigned long ulCT = 0;

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

void setup() {
  while (!Serial) delay(1);
  Serial.begin(9600);
  pinMode(LED_PIN, OUTPUT);
  DoLED(LOW);
}

void loop() {
  // sonar
  distance = sonar.ping_cm();
  //Serial.println("d = " + String(distance)); // uncomment for DEBUGGING
  if (distance > 0 && distance <= REQUIRE_DISTANCE) {
    if (!bON) {
      // light-UP
      DoLED(HIGH);
      ulFirstCT = millis();
    }
    bON = true;
  }
  else { // not in range
    bON = false;
  }

  // check ON-timer
  if (!bON) {
    ulCT = millis();
    if (ulCT - ulFirstCT >= MAX_INTERVAL_ON) {
      DoLED(LOW);
      bON = false;
    }
  }

  // breathe
  delay(5);
}

void DoLED(int state) {
  digitalWrite(LED_PIN, state);
}


  • TIPS: untuk NewPing library dapat didownload disini.


VIDEO

Video hasil tutorial ini dapat dilihat YouTube:




Selamat mencoba!

Thursday, September 1, 2016

[MICROCONTROLLER][ARDUINO][TUTORIAL] Blinking Led

Tutorial ini menunjukkan hal termudah yang dapat Anda lakukan dengan Arduino yaitu dengan blinking led (led berkedip-kedip).

KEBUTUHAN PERANGKAT
  • Arduino (uno)
  • LED
  • Resistor (220 ohm, maks 1 kilo-ohm)
  • kabel jumper (warna-warni)
SIRKUIT
  • hubungkan 1 kaki resistor yang lebih panjang/bengkok (kaki positif disebut anoda) ke Arduino pin 13. 
  • hubungkan kaki lainnya yang lebih pendek (kaki negatif disebut katoda) ke Arduino GND (ground)
  • untuk menjaga supaya arus stabil (tidak berlebih), tambahkan resistor (220 ohm, ato sampai 1 kilo-ohm) diantara kaki anoda dan kabel jumper yang terhubung dengan pin 13.
TIPS: Untuk menghubungkan titik satu ke titik lainnya yang berjauhan, silakan gunakan kabel jumper dengan warna kesukaanmu. Akan tetapi, sebaiknya gunakan warna tertentu untuk membedakan arus positif dan negatif. 


SKEMATIK


KODE

Setelah membuat rangkaian sirkuitnya:
  • sambungkan Arduino ke komputer
  • jalankan Arduino Software (IDE). Jika belum terinstal, silakan didownload disini.
  • masukkan kode berikut:
/*
  Blink
  Menyalakan LED 1 detik, kemudian padam 1 detik, berulang-ulang.

  modified 8 May 2014
  by Scott Fitzgerald
 */


// function setup hanya dijalankan sekali saja sejak reset atau menyalakan board

void setup() {
  // inisialisasi digital pin 13 sebagai output

  pinMode(13, OUTPUT);
}

// fungsi loop dijalankan berulang-ulang selama ada power
void loop() {
  digitalWrite(13, HIGH);   // nyalakan LED

  delay(1000);              // tunda 1 detik
  digitalWrite(13, LOW);    // padamkan LED dengan memberikan tegangan LOW
  delay(1000);              // tunda 1 detik
}
LATIHAN

Silakan tambahkan rangkaian beberapa led baru dan tulislah kode untuk menyalakan led secara bergantian!

SUMBER
https://www.arduino.cc/en/Tutorial/Blink

Selamat mencoba!

Tuesday, June 28, 2016

[SOFTWARE] QSOFT: Aplikasi Database Quran untuk Desktop yang luar biasa

Sebuah aplikasi QURAN berbasis desktop yang memuat database Al-Quran sehingga informasi yang dapat dicari makin bervariasi dan lengkap. Aplikasi ini GRATIS dan dapat diunduh langsung dari situsnya di elra.or.id.
Sayangnya, aplikasi ini baru bisa berjalan di sistem 32-bit termasuk paket MS Office-nya karena aplikasinya berbasis dasar aplikasi MS Access.
Bagi saya pengguna laptop dan OS 64-bit, hal tsb tetap dapat dilakukan dengan menggunakan emulator VMWare dan meng-install Windows XP 32-bit dan MS-Office 32-bit (jangan lupa install MS Access-nya juga, minimal MS Office 2002).
Tampilannya setelah di-run di VMWare kurang lebih seperti ini:


Semoga bermanfaat.

Tuesday, May 10, 2016

[VACATION] Wisata 'Offroad' Merapi 2016

Pada kesempatan liburan long weekend minggu kemaren (5-8 Juli), disempatkan mampir ke Yogya (nginep di Kaliurang) dan mengikuti wisata offroad merapi. Katanya sih bagusnya pas sunrise. Mengkondisikan anak-anak bwt berangkat sebelum subuh (rencana subuhan di lokasi starting point), alhamdulillah tidak berat karena malam sebelumnya sudah diwanti-wanti dan dibatasi waktu tidur malamnya (soale klo libur suka larut tidurnya).
Berangkat dari basecamp JWM (Jeep Wisata Merapi), pukul 05:15, dengan menumpang mobil offroad yang disediakan (disopirin koq), menikmati suasana pagi jalanan menuju merapi hingga menjelang matahari terbit. Suasana yang bisa dinikmati adalah excitement mengendari mobil offroad melewati jalan tanah dan batu (dulunya sih katanya beraspal tapi habis karena erupsi merapi) dalam kondisi masih cukup gelap (karena masih pagi), menikmati sunrise dalam perjalanan menuju lokasi bunker perlindungan erupsi merapi, dan wisata museum erupsi merapi (rumah warga yang dijadikan museum).
Supaya punya gambaran lebih lengkap, saksikan saja videonya berikut:





Monday, May 2, 2016

[GADGET][REMOTE] Akses remote itu bernama TeamViewer

Masih seputar bahasan.... semua karena INDIHOME!
Dengan ditutupnya berbagai macam fasilitas network management (port-forwarder, DMZ, dll) di router INDIHOME dari akses WAN yang sangat diperlukan untuk dapat mengakses secara remote dari internet ke jaringan rumah yang menggunakan akses internet INDIHOME, cukup merepotkan.
Setelah googling dan nany-nanya, ada yang memberikan solusi mengubah tipe akses router INDIHOME yang semula bertipe ROUTE, diubah menjadi BRIDGE. Tapi tentunya untuk setup hal ini mesti melibatkan technical support dari TELKOM yang juga masih untung-untungan apakah bisa atau mau mengubah default setting tersebut. Belum lagi kalo ntar kenapa2 dengan layanan lainnya spt USeeTV, sedikit banyak akan menjadikan perubahan tersebut sebagai kambing hitam atas terganggunya layanan.
Daripada ntar ribet dan ribut, diputuskan tidak mengubah tipe setting ROUTER INDIHOME-nya. Alternatif SOLUSInya adalah dengan mengaktifkan sebuah node/device yang terhubung ke HOME ROUTER sebagai HOST yang dapat membuat remote akses ke internet.
Berbekal sebuah NanoPC yang lama tidak dipake (dulu digunakan sebagai media-center), dan sebuah aplikasi gratisan bernama TeamViewer, kini saya pun dapat mengakses semua device yang terhubung di jaringan rumah saya secara remote.
Aplikasi TeamViewer tersebut diinstal di HOST yang akan diakses secara remote maupun di CLIENT yang akan mengakses REMOTE-HOST tersebut. Juga tersedia aplikasi client/server untuk mobile-device. Juga tersedia untuk versi linux-nya.

Berikut ilustrasi jaringan di rumah yang menggunakan TeamViewer untuk keperluan remote-access:


Berikut adalah contoh capture dari aplikasi TeamViewer:


Berikut adalah contoh capture hasil koneksi ke REMOTE-HOST (rumah) dari kantor:


REMOTE-ACCESS ke jaringan LAN dengan koneksi internet INDIHOME, kini dapat dilakukan!