Sistem Alarm SMS Berbasis NEO STARDUINO dan Wavecom Fastrack

Starduino_SMS_Alarm

Sistem Alarm SMS adalah sebuah sistem alarm yang akan mengirimkan pesan peringatan melalui SMS jika sistem mendeteksi adanya suatu kejadian yang tidak diinginkan, contohnya seperti adanya indikasi pencuri, kebakaran, power failure, system-overload, overheated, dan lain sebagainya – pokoknya kalau ada masalah sistem akan mengirimkan SMS peringatan. πŸ˜€

Gambar di samping adalah contoh Sistem Alarm SMS berbasis board mikrokontroler NEO STARDUINO dan modem GSM Wavecom Fastrack. Board NEO STARDUINO sangat cocok untuk aplikasi ini karena memiliki port komunikasi serial yang siap untuk digunakan dengan modem serial. Jadi tinggal tancap saja.

Sistem pada gambar di samping ini memiliki 1 buah input digital yang mewakili sensor yang akan mengaktifkan alarm. Jadi ketika sensor ini aktif, maka sistem akan secara otomatis mengirimkan SMS. Pada gambar di samping, sensor diwakili oleh sebuah push-button. Pada prakteknya, push-button ini bisa diganti dengan limit-switch, proximity-switch, sensor gerak PIR, temperature-switch, pressure-switch, dan lain sebagainya.

Sistem dapat dikembangkan untuk mendeteksi lebih dari 1 buah input sesuai dengan kebutuhan dan menggerakkan piranti output seperti relay atau buzzer.

Sistem pada eksperimen ini dapat mengirimkan SMS peringatan ke 5 nomor tujuan. Data kelima nomor tujuan disimpan dalam EEPROM mikrokontroler. Selain kelima nomor tujuan, sistem juga menyimpan pesan peringatan sepanjang 50 karakter di dalam EEPROM. Data nomor tujuan dan pesan peringatan dapat diedit secara mudah menggunakan program terminal serial seperti Hyperterminal, TeraTerm, atau DockLight.

PROGRAM MIKROKONTROLER
Kode program mikrokontroler dibuat menggunakan IDE Arduino dan telah diuji menggunakan Arduino versi 1.0.1 dan 1.05 dengan hasil yang baik.

Adapun skenario looping utama programnya mikrokontroler adalah sebagai berikut:

  1. Inisialisasi (setup)
  2. Cek apakah pin A0 terhubung ke GND, kalau iya lanjut ke langkah nomor 2, dan lanjut ke langkah nomor 3 jika tidak.
  3. Masuk setup parameter —> tampilkan menu melalui port serial (hyperterminal) dan lakukan interaksi dengan user sampai sistem dimatikan/direset.
  4. Masuk kondisi alarm aktif dan secara kontinyu mendeteksi apakah modem dalam keadaan siap dan secara kontinyu pula mendeteksi apakah sensor aktif.
  5. Jika sensor aktif maka kirim pesan peringatan melalui SMS ke 5 nomor tujuan. Jika nomor tujuan = β€œ00000”, maka berarti kosong. atau tidak dikirimi SMS.
  6. Setelah mengirim SMS, mikro akan masuk kondisi delay selama sekitar 5-10 menit. Jika setelah masa delay mikro mendeteksi sensor masih aktif, maka mikro akan kembali mengirimkan SMS.

Berikut adalah screenshot IDE Arduino yang menampilkan sebagian program sistem alarm SMS berbasis NEO STARDUINO.

kodearduinosmsalarm

kodearduinosmsalarm2

Untuk mengaktifkan menu setup parameter ini, pin A0 dari NEO STARDUINO harus terhubung ke GND ketika sistem diaktifkan (power on) atau ketika reset. Dan tentunya NEO STARDUINO harus terhubung ke port serial komputer.

neostarduinogsm

Dan berikut adalah screenshot Hyperterminal dan TeraTerm ketika berkomunikasi dengan NEO STARDUINO. Komunikasi dilakukan pada baudrate 115200.

hyperterminal_smsalarm

image

Spesifikasi selengkapnya dari sistem alarm SMS pada eksperimen ini adalah sebagai berikut:

  1. Board NEO Starduino (ATmega8)
  2. Modem GSM Serial Wavecom Fastrack Supreme
  3. Jumlah input sensor 1 (bisa ditambah sesuai dengan kebutuhan)
  4. Komunikasi serial baudrate 115200
  5. Jumlah nomor tujuan SMS adalah 5 nomor yang disimpan dalam EEPROM board NEO STARDUINO
  6. Pesan peringatan berupa string sepanjang 50 karakter yang disimpan dalam EEPROM board NEO STARDUINO
  7. Nomor tujuan dan pesan peringatan dapat diedit menggunakan program terminal seperti Hyperterminal, TeraTerm, atau DockLight.
  8. Pin A0 (PC0) berfungsi sebagai input pengaktif fungsi setup menu
  9. Pin A5 (PC5) berfungsi sebagai input sensor pengaktif pengiriman SMS

Video pengujian sistem ini dapat Anda saksikan melalui YouTube pada link berikut ini:

youtubesmaalarm
http://youtu.be/SbCH0k6hcm8

Jika Anda membutuhkan informasi lebih lanjut atau ingin melakukan pemesanan silakan kontak melalui email ke info@teknikelektrolinks.com.

Semoga bermanfaat, selamat belajar, dan selamat berkarya!

πŸ˜€

Mengendalikan Peralatan Listrik Via Internet/Web Dengan Starduino Board

starduino_webrelay

Mengontrol peralatan listrik melalui internet/web dapat dilakukan dengan beberapa cara baik yang sederhana ataupun yang sedikit lebih canggih. Pada tulisan ini akan saya sampaikan sekilas tentang bagaimana mengontrol relay melalui internet/web dengan menggunakan Starduino Board yang terhubung ke sebuah PC melalui port serial.

PC yang digunakan haruslah memiliki program web-server yang sedang running (online). Pada eksperimen ini saya menggunakan paket program WAMP (Windows-Apache-MySQL-PHP) versi 2.2 yang dapat didownload dari situsnya di: http://www.wampserver.com/en/.

Prinsip kerja teknik pengontrolan relay via internet/web ini dapat dijelaskan sebagai berikut. User melakukan pengontrolan (update status) peralatan listrik (relay) melalui perantaraan sebuah halaman web yang ditulis menggunakan bahasa scripting PHP. Melalui user-interface yang tersedia, user dapat memilih kondisi/status relay dengan meng-klik checkbox untuk masing-masing relay (Relay-1 s/d Relay-8). Selanjutnya, untuk meng-update kondisi/status Relay-1 s/d Relay-8, user harus meng-klik tombol Update Relay Status.

Setelah tombol Update Relay Status di-klik, maka scripting PHP akan membaca nilai checkbox untuk Relay-1 s/d Relay-8 dan menjalankan sebuah program aplikasi yang akan mengirimkan data kondisi/status relay kepada Starduino Board melalui port serial RS232. Jika perintah terkirim dengan baik dan dikenali oleh Starduino Board, maka kondisi/status Relay-1 s/d Relay-8 akan di-update sesuai dengan keingingan user. Adapun rogram aplikasi yang dieksekusi oleh scripting PHP adalah program RSerial.exe.

Program RSerial.exe
Program ini saya buat menggunakan kompiler FreePascal versi 2.6.0. Fungsi program ini adalah mengirimkan perintah melalui port serial kepada Starduino Board. Pada eksperimen ini, Starduino Board terhubung ke PC melalui port serial COM1 dengan nilai baudrate 9600.

Untuk mengaktifkan Relay-1 dan Relay-3, maka perintahnya adalah:

>RSerial.exe COM1 9600 R1 R3

dan untuk mematikan Relay-3 serta mengaktifkan Relay-7, maka perintahnya adalah:

>RSerial.exe r3 R7

Huruf R (kapital) menyatakan ON dan huruf r menyatakan OFF. Nomor yang mengikuti huruf R atau r adalah nomor relay.

Untuk mengeksekusi program RSerial.exe, digunakan perintah PHP exec(). Berikut adalah penggalan scripting PHPnya.

if (!empty($_POST[‘relay1’]))
    $R1 = $_POST[‘relay1’];
else
    $R1 = “off”;
if (!empty($_POST[‘relay2’]))
    $R2 = $_POST[‘relay2’];
else
    $R2 = “off”;
if (!empty($_POST[‘relay3’]))
    $R3 = $_POST[‘relay3’];
else
    $R3 = “off”;
if (!empty($_POST[‘relay4’]))
    $R4 = $_POST[‘relay4’];
else
    $R4 = “off”;
if (!empty($_POST[‘relay5’]))
    $R5 = $_POST[‘relay5’];
else
    $R5 = “off”
if (!empty($_POST[‘relay6’]))
    $R6 = $_POST[‘relay6’];
else
    $R6 = “off”;
if (!empty($_POST[‘relay7’]))
    $R7 = $_POST[‘relay7’];
else
    $R7 = “off”;
if (!empty($_POST[‘relay8’]))
    $R8 = $_POST[‘relay8’];
else
    $R8 = “off”;

$CMD = “”;
if ($R1==”on”) $CMD = $CMD . “R1”; else $CMD = $CMD . “r1”;
if ($R2==”on”) $CMD = $CMD . ” R2″; else $CMD = $CMD . ” r2″;
if ($R3==”on”) $CMD = $CMD . ” R3″; else $CMD = $CMD . ” r3″;
if ($R4==”on”) $CMD = $CMD . ” R4″; else $CMD = $CMD . ” r4″;
if ($R5==”on”) $CMD = $CMD . ” R5″; else $CMD = $CMD . ” r5″;
if ($R6==”on”) $CMD = $CMD . ” R6″; else $CMD = $CMD . ” r6″;
if ($R7==”on”) $CMD = $CMD . ” R7″; else $CMD = $CMD . ” r7″;
if ($R8==”on”) $CMD = $CMD . ” R8″; else $CMD = $CMD . ” r8″;

exec(“RSerial.exe COM1 9600” . $CMD, $Output);

starduino_drv08_webSebagai pelengkap, pada eksperimen ini saya juga menggunakan sebuah LCD 16×2 karakter untuk menampilkan kondisi Relay-1 s/d Relay-8. Gambar di samping adalah foto hardware yang saya gunakan dalam eksperimen yang terdiri dari Starduino Board, Modul Relay DRV08, dan Modul LCD 16×2.

Pada eksperimen ini yang ditunjukkan adalah sebatas tentang bagaimana melakukan pengontrolan relay via internet/web. Pada eksperimen ini tidak membahas tentang bagaimana melakukan monitoring input yang dapat berupa input logika dengan kondisi on/off ataupun input yang berupa sensor seperti sensor suhu, sensor cahaya, sensor jarak, dan lain sebagainya.

Setelah eksperimen ini, saya ingin melakukan eksperimen untuk monitoring input logika, input senor suhu, sensor jarak, atau yang lainnya. Lumayan sambil belajar pemrograman PHP. Dan tentunya saya juga ingin bereksperimen dengan menggunakan embedded web-server menggunakan Arduino atau Raspberry Pi. Semoga bisa segera terlaksana. πŸ™‚

Video Demo
Anda dapat menyaksikan video pengujian sistem ini melalui YouTube. Berikut adalah linknya:

http://youtu.be/-73vNnnLTrE

 

Bagi Anda yang berminat dengan sistem ini atau modul-modul yang digunakan dalam eksperimen ini, yakni Starduino Board, Modul Relay DRV08, dan Modul LCD 16×2, silakan menghubungi saya melalui email ke info@teknikelektrolinks.com. Untuk informasi harga dan pemesanan, silakan mengunjungi situsnya di: http://teknikelektrolinks.com.

Semoga bermanfaat dan selamat berkarya!

πŸ™‚

Tutorial Starduino: Membaca Data Dari GPS dan Menampilkannya di LCD

starduino_gps_573

Gambar di samping adalah foto eksperimen Starduino yang sedang membaca data dari GPS dan menampilkannya di layar LCD 16×2 karakter. Modul GPS yang digunakan adalah Parallax CIROCOMM PMB-648 GPS module.

Modul GPS tipe ini tergolong mudah untuk diantarmukakan dengan mikrokontroler (Starduino Board) karena memiliki output berupa data serial dengan level tegangan TTL dan RS232. Adapun baudrate yang digunakan adalah 4800 (default).

Jika menggunakan Starduino Board, pin TX/RX-TTL modul GPS bisa langsung dihubungkan dengan pin-1 (RX) dan pin-2 (TX) pada Starduino Board. Sedangkan pin TX/RX-RS232 modul GPS bisa dihubungkan ke pin-2 (RX) port DB9 Starduino Board dan pin-3 (TX) port DB9 Starduino Board. Pada eksperimen ini, saya menghubungkan pin TX modul GPS ke pin-1 Starduino Board.

Modul GPS PMB-648 dari Parallax ini mendukung protokol data NMEA0183 versi 2.2, untuk lebih detil tentang protokol data NMEA0183, silakan download datasheetnya melalui link berikut ini: http://www.tronico.fi/OH6NT/docs/NMEA0183.pdf.

Sesaat setelah modul GPS diberi catudaya, maka modul GPS akan mengirimkan data-data secara terus-menerus dengan format yang sesuai dengan protokol data NMEA0183. Berikut adalah tampilan data yang dikirimkan oleh modul GPS sesaat setelah modul GPS diberi catudaya yang saya β€˜tangkap’ menggunakan program DockLight V1.9.

docklight_gps

Pada tutorial singkat ini hanya akan ditampilkan data mengenai posisi pada derajad lintang dan bujur dan beberapa data tambahan seperti waktu/jam, ketinggian dari permukaan air laut, dan jumlah satelit yang terbaca. Adapun data yang harus diambil adalah data pada kalimat berawalan $GPGGA seperti yang ditunjukkan pada screenshot di atas.

GP adalah Global Positioning. Kalimat yang diawali dengan $GP berarti kalimat yang berhubungan dengan posisi global seperti derajad lintang dan bujur, ketinggian, dll.

GGA adalah Global Positioning System Fix Data. Time, Position and fix related data
for a GPS receiver
.

Berikut adalah keterangan selengkapnya mengenai format kalimat $GPGGA.

nmea0183_gga

Setelah mengetahui informasi-informasi di atas, maka tugas program kontroler adalah menerima dan menampung data yang diterima dari modul GPS dan mengidentifikasi kalimat $GPGGA yang selanjutnya data-data yang terkandung dalam kalimat $GPGGA tersebut kita ambil dengan memilah-milah string yang terpisahkan oleh tanda baca koma (,).

Berikut adalah penggalan-penggalan program yang terdiri dari deklarasi variabel-variabel yang digunakan, perintah pembacaan data serial dan penyimpanan pada buffer data serial, perintah pemilahan data-data string yang terpisahkan oleh tanda baca koma, dan perintah tampilan pada LCD 16×2.

Deklarasi Variabel

#include <LiquidCrystal.h>
#include <MsTimer2.h>

int i=0, j=0, n=0;
char ch;
char *char_ptr;
char inbuf[250];
char *gps[16];
int inbuf_len = 0;
boolean CRLF = false;
unsigned long XWAIT;

LiquidCrystal LCD(7,6,5,4,3,2);

Baca Data Serial – Simpan Dalam Buffer Data Serial

while (!CRLF && XWAIT>0)
{
  if (Serial.available())
  {
    inbuf[inbuf_len] = Serial.read();
    inbuf_len++;
    if (strstr(inbuf, “\r\n”))
      CRLF = true;
  }
  XWAITβ€”;
}

Pemilahan Data String

gps[0] = strtok(inbuf, “,”);
for (i=1; i<10; i++)
  gps[i] = strtok(NULL, “,”);

Menampilkan Data Pada LCD 16×2

LCD.clear();
LCD.print(“Jam Sekarang:”);
LCD.setCursor(0, 1);
LCD.print(gps[0]);
LCD.print(” UTC”);
delay(2000);

LCD.clear();
LCD.print(“Lintang:”);
LCD.setCursor(0, 1);
LCD.print(gps[1]);
LCD.print(” LS”);
delay(2000);

LCD.clear();
LCD.print(“Bujur:”);
LCD.setCursor(0, 1);
LCD.print(gps[3]);
LCD.print(” BT”);
delay(2000);

LCD.clear();
LCD.print(“Jumlah Satelit:”);
LCD.setCursor(0, 1);
LCD.print(gps[6]);
LCD.print(” Satelit”);
delay(2000);

LCD.clear();
LCD.print(“Ketinggian:”);
LCD.setCursor(0, 1);
LCD.print(gps[8]);
LCD.print(” Meter”);
delay(2000);

starduino_gps

Video Demo
Anda dapat menyaksikan video demo hasil eksperimen ini melalui link berikut ini:

http://youtu.be/qyZgNSsgGu4.

Demikianlah tutorial singkat pembacaan data dari modul GPS Parallax PMB-648 menggunakan Starduino Board dan menampilkan data jam, derajad lintang dan bujur, jumlah satelit terbaca, dan ketinggian pada LCD 16×2 karakter.

Untuk informasi harga dan pemesanan Starduino Board, silakan mengunjungi situsnya di: http://teknikelektrolinks.com dan http://teknikelektrolinks.com/pemesanan.htm.

Semoga bermanfaat.

Selamat belajar dan selamat berkarya!

πŸ™‚

Mengontrol 4 Relay via SMS Menggunakan Starduino + Modul DRV04 + Modem GSM Wavecom 1306B

starduino_drv04_modem

Starduino Board memiliki konektor port serial DB9/Male yang dapat dihubungkan secara langsung ke Modem Serial, oleh karenanya Starduino Board sangat cocok digunakan sebagai kontroler untuk aplikasi pengontrolan relay via SMS maupun aplikasi alarm peringatan via SMS.

Gambar di samping adalah foto sistem pengontrolan 4 buah relay via SMS menggunakan Starduino Board sebagai kontroler. Secara kontinyu Starduino mengecek adanya SMS yang diterima oleh Modem GSM Wavecom. Ketika modem menerima SMS baru, Starduino akan membaca data SMS tersebut dan mengambil informasi Nomor Pengirim dan Pesan SMS. Jika pesan sesuai dengan perintah yang dikenal, maka Starduino akan mengeksekusi aksi sesuai dengan perintah tersebut. Setelah selesai mengeksekusi perintah, Starduino akan mengirimkan SMS balasan kepada pengirim pesan perintah.

Adapun pesan perintah yang dikenali oleh sistem adalah sebagai berikut:

PESAN PERINTAH AKSI KONTROL SMS BALASAN
RL01LIVE RELAY-1 ON SMSCON: RELAY-1 ON
RL01DIE RELAY-1 OFF SMSCON: RELAY-1 OFF
RL02LIVE RELAY-2 ON SMSCON: RELAY-2 ON
RL02DIE RELAY-2 OFF SMSCON: RELAY-2 OFF
RL03LIVE RELAY-3 ON SMSCON: RELAY-3 ON
RL03DIE RELAY-3 OFF SMSCON: RELAY-3 OFF
RL04LIVE RELAY-4 ON SMSCON: RELAY-4 ON
RL04DIE RELAY-4 OFF SMSCON: RELAY-4 OFF

LED Status
Sebagai indikator status digunakan sebuah LED yang akan menyala dan mati dengan pola tertentu untuk menunjukkan status program kontroler Starduino. Berikut adalah tabel urutan kerja program yang ditunjukkan oleh pola kedip LED status.

Cek koneksi (AT) Sukses = LED berkedip 5 kali dengan durasi 50ms
Gagal = LED berkedip 3 kali dengan durasi 500ms
Delay 1 detik LED menyala 1 detik
Cek SMS (AT+CMGL) Ada SMS = LED berkedip 10 kali dengan durasi 50ms
No SMS = LED berkedip 5 kali dengan durasi 50ms
Gagal = LED berkedip 3 kali dengan durasi 500ms
Eksekusi perintah LED berkedip 5 kali 100ms
Delete SMS (AT+CMGD) Sukses = LED berkedip 20 kali dengan durasi 50ms
Gagal = LED berkedip 3 kali dengan durasi 500ms

Dengan mengamati pola LED, kita dapat mengetahui apakah sistem bekerja baik atau tidak. Contoh, jika setelah dinyalakan LED Status menyala 3 kali dengan durasi 500ms secara berulang-ulang, maka berarti komunikasi antara Starduino dan Modem terganggu. Salah satu solusinya adalah dengan mereset modem (off terus on lagi).

Modul Relay DRV04

telinks_drv04_400 Modul relay yang digunakan dalam pada aplikasi di atas adalah Modul DRV04. Modul ini memiliki 4 buah relay 5V atau 12V yang dikontrol menggunakan logika dengan level tegangan TTL. Sebagai driver digunakan komponen IC seri ULN2xxx dengan faktor penguatan tinggi sehingga dapat memicu relay dengan mantab.

Modul DRV04 juga cocok digunakan untuk tipe mikrokontroler lain seperti 89S51/52 dan PIC. Dan bagi Anda yang belum mengenal mikrokontroler, Anda dapat mengontrol modul relay ini menggunakan port paralel komputer (LPT).

Nah, jika Anda membutuhkan Starduino Board, Modul DRV04, ataupun sistem kontrol relay via SMS secara keseluruhan, silakan menghubungi melalui email ke info@teknikelektrolinks.com atau mengunjungi situs Teknik Elektro Links di : http://teknikelektrolinks.com.

Selamat berkarya!

πŸ™‚

Tutorial Starduino: Mengontrol 4 Relay Dari Komputer Via Komunikasi Serial RS232 Dengan Perantaraan Starduino Board

starduino_drv04_lcd

Pada tutorial Starduino kali ini, kita akan membahas tentang bagaimana mengontrol relay dari komputer melalui port komunikasi serial RS232 dengan menggunakan Starduino Board.

Gambar di samping adalah foto pengujian Starduino Board untuk mengontrol relay dan menampilkan statusnya di LCD 16×2.

Starduino Board, Modul Relay DRV04, dan Modul LCD 16×2 dapat dipesan melalui email ke info@teknikelektrolinks.com atau SMS ke 081231784018 atau BB ke 24B15B64.

Untuk pembelian paket Starduino + Modul DRV04 akan mendapatkan source code sketch Arduino pengontrolan relay melalui port serial + source code program VB.NET lengkap dengan Installer VB.NET 2005 Express Edition.

Untuk memudahkan eksperimen,  berikut adalah tabel perintah pengontrolan relay.

Perintah Aksi
β€˜A’ RELAY 1 ON
β€˜1’ RELAY 1 OFF
β€˜B’ RELAY 2 ON
β€˜2’ RELAY 2 OFF
β€˜C’ RELAY 3 ON
β€˜3’ RELAY 3 OFF
β€˜D’ RELAY 4 ON
β€˜4’ RELAY 5 OFF

Berikut adalah looping utama program yang berfungsi menerima data dari port serial dan mengeksekusi perintah sesuai data yang diterima dari komputer.

if (Serial.available())
{
  char inChar = Serial.read();
  if (inChar==’A’)
    digitalWrite(RL1, HIGH);
  else if (inChar==’1′)
    digitalWrite(RL1, LOW);
  else if (inChar==’B’)
    digitalWrite(RL2, HIGH);
  else if (inChar==’2′)
    digitalWrite(RL2, LOW);
  else if (inChar==’C’)
    digitalWrite(RL3, HIGH);
  else if (inChar==’3′)
    digitalWrite(RL3, LOW);
  else if (inChar==’D’)
    digitalWrite(RL4, HIGH);
  else if (inChar==’4′)
    digitalWrite(RL4, LOW);
}

Fungsi Serial.available() berfungsi mengembalikan jumlah karakter yang ada di dalam buffer port serial. Jika fungsi Serial.available() bernilai 0 (nol), maka tidak ada karakter dalam buffer. Jika fungsi Serial.available() > 0, maka ada karakter yang diterima dalam buffer port serial.

Fungsi Serial.read() berfungsi membaca/mengambil data karakter dari buffer port serial. Perintah char inChar = Serial.read() berfungsi mendeklarasikan variable inChar sebagai penampung data karakter hasil pembacaan fungsi Serial.read().

Selanjutnya, karakter dibandingkan dengan konstanta karakter sesuai dengan tabel perintah di atas untuk mengetahui perintah apa yang harus dieksekusi oleh kontroler.

Jika inChar==’A’, maka aktifkan RELAY-1 dan jika inChar==’1’, maka matikan RELAY-1. Pembandingan yang sama juga berlaku untuk perintah β€˜B’, β€˜2’, β€˜C’, β€˜3’, β€˜D’, dan β€˜4’.

Setelah program di upload ke Starduino, maka pengujian dapat dilakukan dengan mengirimkan karakter β€˜A’, β€˜1’, β€˜B’, dan seterusnya dari komputer.

Untuk mengirimkan data secara manual bisa menggunakan terminal bawaan IDE Arduino atau program terminal seperti Hyperterminal.

Dapat juga pengontrolan dilakukan dengan menggunakan program aplikasi yang dapat Anda peroleh jika membeli paket Starduino Board + Modul DRV04. Berikut adalah tampilan program aplikasi Starduino+DRV04 yang dibuat menggunakan VB.NET 2005 Express Edition.

starduino_drv04_vbnet

Demikian sekelumit penjelasan mengenai pengontrolan relay dari komputer melalui port serial RS232 dengan perantaraan Starduino Board.

Untuk informasi harga dan pemesanan Starduino Board, silakan cek di: http://teknikelektrolinks.com.

Selamat belajar dan selamat berkarya!

πŸ™‚

Tutorial Starduino: Mengubah STARDUINO Menjadi AVR ISP Programmer

starduino_isp1

STARDUINO BOARD tidak memerlukan rangkaian ISP Programmer/ Downloader untuk mengisi memori programnya. Mikrokontroler ATmega8 pada Starduino telah ditanami program bootloader Arduino sehingga kita dapat meng-upload program langsung dari port serial maupun port USB.

Tapi bagaimana jika kita ingin memrogram IC mikrokontroler AVR ATmega8 lain yang masih baru dan belum ditanami bootloader Arduino? Atau bagaimana jika kita ingin bereksperimen dengan ATtiny2313 misalnya? Apakah kita harus membeli lagi ISP Programmer? Jawabannya bisa iya, bisa juga tidak. Jika menurut Anda sebuah AVR ISP Programmer/Downloader merupakan investasi yang bagus, maka Anda bisa membeli sebuah AVR ISP Programmer/Downloader. Akan tetapi, Anda bisa saja membuat sendiri dengan memanfaatkan Starduino Board yang sudah Anda miliki.

Foto di atas adalah pengujian Starduino sebagai AVR ISP Programmer/Downloader. Untuk menjadikan Starduino Board menjadi AVR ISP Programmer/Downloader, berikut adalah langkah-langkah yang harus dilakukan.

1. Upload sketch ArduinoISP

arduinoisp

Pertama-tama, buka sketch ArduinoISP yang tersedia pada Examples bawaan software IDE Arduino. Selanjutnya, lakukan Upload dan Starduino pun telah berubah fungsi menjadi AVR ISP Programmer/Downloader.

Pin-pin yang digunakan untuk memrogram IC mikrokontroler AVR adalah:

Pin-10 RESET
Pin-11 MOSI
Pin-12 MISO
Pin-13 SCK

Pada foto di atas, Pin-10 Starduino dihubungkan dengan Pin-1 ATtiny2313 (RESET), Pin-11 Starduino dihubungkan dengan Pin-17 ATtiny2313 (MOSI), Pin-12 Starduino dihubungkan dengan Pin-18 ATtiny2313 (MISO), dan Pin-13 Starduino dihubungkan dengan Pin-19 ATtiny2313 (SCK).

2. Men-disable Auto-Reset Starduino

Starduino akan otomatis masuk ke kondisi reset setiap kali port serial diinisialisasi dan akibatnya bootloader akan running dan menunggu komunikasi dari PC selama kurang-lebih 7 detik. Jika kondisi ini tidak dinon-aktifkan (disabled), maka AVRDUDE akan gagal mengadakan komunikasi dengan Starduino dengan fungsi ISP Programmer/Downloader.

starduino_isp_c10ufCara menon-aktifkan fungsi Auto-Reset adalah dengan β€˜mengganjal’ kondisi kaki RESET pada kondisi logika HIGH dengan menambahkan sebuah kapasitor elektrolit 10uF seperti ditunjukkan pada foto di samping.

Kaki+ kapasitor 10uF dihubungkan dengan Pin-1 ATmega8 Starduino dan Kaki– kapasitor dihubungkan ke GND.

Kapasitor 10uF tersebut akan β€˜mengganjal’ kondisi logika di kaki RESET menjadi selalu HIGH. Dengan demikian, ketika port serial diinisialisasi oleh program downloader (dalam hal ini kita menggunakan AVRDUDE), maka Starduino tidak akan mengalami RESET, sehingga AVRDUDE bisa berkomunikasi dengan baik dengan program AVR ISP Programmer yang sudah di-upload ke Starduino.

3. Upload File .HEX Menggunakan AVRDUDE

Untuk menguji fungsi Starduino sebagai AVR ISP Programmer/Downloader, berikut adalah listing program LED berkedip-kedip menggunakan AVR-GCC.

/*
  BLINK.C
  ATtiny2313
*/

#define F_CPU 1000000UL      

#include <avr/io.h>
#include <util/delay.h>

#define ON 1
#define OFF 0

#define LED(n) ((n)==(OFF) ? (PORTD&=~_BV(PD0)) : (PORTD|=_BV(PD0)))

// Inisialisasi mikrokontroler
void setup(void)
{
   PORTD = 0b00000000;
   DDRD  = 0b01000001;
}

// Program Utama
int main(void)
{
  setup();

  while(1)
  {
      LED(ON); _delay_ms(100);
      LED(OFF); _delay_ms(100);
  }
}

Program di atas akan menyalakan sebuah LED yang terhubung pada Pin-2 ATtiny2313 (PD0). LED akan berkedip-kedip dengan selang 100 milidetik.

Program di-compile menggunakan AVR-GCC dan kemudian di-download menggunakan perintah:

avrdude -carduino -PCOM1 -b19200 -pt2313 -e Uflash:w:t2313.hex:i –q

Tipe programmer yang digunakan adalah arduino yang terhubung melalui port serial COM1 dengan baudrate 19200.

starduino_isp_avrdude

Dari pengujian dapat disimpulkan bahwa dengan meng-upload sketch ArduinoISP yang tersedia pada kumpulan contoh program Arduino, Starduino dapat berfungsi sebagai AVR ISP Programmer/Downloader. Oleh karenanya, dengan memiliki Starduino Board, Anda tidak perlu lagi membeli AVR ISP Programmer/Downloader.

Beli Starduino Board, GRATIS AVR ISP Programmer/Downloader!

Untuk informasi harga dan pemesanan Starduino Board, silakan mengunjungi situsnya di: http://teknikelektrolinks.com.

Selamat belajar dan selamat berkarya!

πŸ™‚

Kisah STARDUINO BOARD dan PING Berkiprah di Dunia Industri

pneumatic-rubber-bale-cutting-machinesBerawal dari telepon seorang rekan yang bekerja dibidang pemasaran produk-produk pneumatik tentang adanya permintaan dari salah satu pelanggannya tentang sistem pengaman untuk mesin potong pneumatik seperti pada gambar di samping.

Mesin potong tersebut mampu memotong lembaran karet dengan ketebalan beberapa sentimeter. Bisa dibayangkan jika jari operator berada di garis pemotongan ketika silinder (piston) bergerak turun dengan tekanan 5-8 bar… pasti akan terpotong!

Untuk mengantisipasi hal tersebut, maka perlu adanya sistem pengaman yang dapat memutus aliran angin jika operator masih berada dalam area pemotongan. Dan jika area pemotongan aman, dalam arti operator sudah berada pada zona aman, maka pemotong dapat digerakkan.

starduino_boardMenanggapi permintaan tersebut, saya pun secepat mungkin membuat prototipe sebagai alat presentasi yang dapat membuktikan konsep sistem pengaman yang akan kami tawarkan. Dengan menggunakan STARDUINO BOARD dan Sensor Jarak Ultrasonik PING))) dan LCD 16×2, prototipe pun selesai dalam beberapa jam dan siap kami presentasikan.

Walhasil, presentasi kami lancar dan proposal kami pun diterima, dan proyek pun mulai kami kerjakan.

Pengerjaan panel berlangsung lancar dan relatif cepat. Alhamdulillah, saya sudah berpengalaman selama 5 tahun lebih merancang dan membuat panel-panel distribusi dan panel kontrol, sedangkan rekan saya bahkan sudah berpengalaman lebih dari 10 tahun. Kami adalah tim yang sangat kompak selama bekerja di pabrik rol karet Usaha Teknik Grafika.

Berikut adalah beberapa foto panel kontrol sistem pengaman mesin potong pada proses pengerjaan/pengujian dan panel yang siap diinstalasikan.

panel_pengaman_mesin_potong

panel_pengaman_mesin_potong2

Panel ini merupakan tantangan bagi Starduino Board, ATmega8, IDE Arduino, dan PING))) di dunia industri. Dengan ketahanan mikrokontroler AVR yang sudah teruji untuk dioperasikan di lingkungan industri, PING))) Parallax yang hebat, dan library Arduino yang sudah digunakan dan diuji secara internasional, maka sistem berbasis ATmega8 dan Arduino layak digunakan untuk aplikasi di dunia industri.

UPDATE
telinks_starduinoapp1 Alhamdulillaah, panel sistem pengaman mesin potong pneumatik berbasis Starduino dan PING telah terinstalasi dan telah melewati tahap commissioning.

Catatan penting dalam proyek ini adalah: modul sensor PING buatan Parallax sangatlah mantab. Setelah membandingkan dengan modul sensor jarak ultrasonik yang lain (yang lebih ekonomis), kualitas PING Parallax lebih bagus, bahkan menurut saya hanya PING Parallax yang layak digunakan di lingkungan industri.

Catatan penting lainnya adalah: library siap pakai Arduino bekerja dengan baik selama didukung dengan modul-modul yang baik. Jadi jangan ragu-ragu menggunakan software Arduino untuk mengembangkan firmware sistem berbasis ATmega8/168/328. Dengan Arduino, pemrograman menjadi lebih efisien.

Sekilas Starduino Board
starduino_board Starduino Board adalah sistem minimum mikrokontroler berbasis ATmega8 yang siap digunakan sebagai teman bereksperimen maupun digunakan pada aplikasi sistem yang sesungguhnya. Informasi yang lebih lengkap dapat dilihat di blog: https://starduino.wordpress.com.

Untuk informasi harga dan pemesanan silakan berkunjung ke situs: http://teknikelektrolinks.com.

Selamat berkarya!

Smile

Starduino Board + LCD 16×2 + Contoh Program

starduino_lcd

Liquid Crystal Display atau LCD merupakan salah satu komponen output yang wajib diketahui dan dikuasai oleh pemrogram mikrokontroler.

LCD yang paling umum digunakan adalah LCD berukuran 2 baris x 16 kolom. Selain mudah diperoleh di pasaran, ukurannya sangat pas digunakan untuk aplikasi-aplikasi yang membutuhkan display, tidak terlalu kecil dan tidak terlalu besar, alias pas!

Seberapa mudahkah mengantarmukakan LCD dengan Starduino Board? Simak ulasan singkat berikut ini.

Skema Rangkaian LCD

LCD dapat diantarmukakan dengan Mode 8-Bit dan Mode 4-Bit. Gambar di bawah adalah skema dari rangkaian LCD Mode 4-Bit.

starduino_lcd_4bit

Kaki-kaki LCD nomor 1, 2, dan 3 adalah kaki VSS/GND, VCC, dan VEE/VO. VEE berfungsi untuk mengatur kecerahan tampilan karakter LCD. Untuk mengaturnya, digunakan VR 10K yang dapat diputar-putar untuk mendapatkan kecerahan tampilan yang diinginkan.

Kaki LCD nomor 4 (RS) adalah kaki Register Selector yang berfungsi untuk memilih Register Kontrol atau Register Data. Register kontrol digunakan untuk mengkonfigurasi LCD. Register Data digunakan untuk menulis data karakter ke memori display LCD.

Kaki LCD nomor 5 (R/W) digunakan untuk memilih aliran data apakah READ ataukah WRITE. Karena kita tidak memerlukan fungsi untuk membaca data dari LCD dan hanya perlu menulis data saja ke LCD, maka kaki ini dihubungkan ke GND (WRITE).

Kaki LCD nomor 6 (ENABLE) digunakan untuk mengaktifkan LCD pada proses penulisan data ke Register Kontrol dan Register Data LCD.

Contoh Program Arduino

Arduino memiliki pustaka khusus untuk LCD yakni LiquidCrystal.h. Dengan menggunakan pustaka ini, pemrograman LCD menjadi sangat mudah. Berikut adalah program Arduino untuk menampilkan tulisan β€œTEKNIK ELEKTRO LINKS” dengan konfigurasi pin seperti pada tabel di bawah ini.

Kaki LCD

Fungsi

Pin I/O Starduino

4

LCD_RS

12

6

LCD_EN

11

11

D4

5

12

D5

4

13

D6

3

14

D7

2

Kode Program Arduino

#include <LiquidCrystal.h>

LiquidCrystal LCD (12, 11, 5, 4, 3, 2);

void setup()
{
  LCD.begin (16, 2);  //inisialisasi LCD 16×2

  LCD.print (β€œ TEKNIK ELEKTRO ”);
  LCD.setCursor (0, 1);  //pindah kursor
  LCD.print (β€œ    L I N K S   ”);
}

void loop()
{
  while(1);
}

Penjelasan Program

Untuk menggunakan pustaka LiquidCrystal.h, digunakan perintah:

 #include <LiquidCrystal.h>;

Selanjutnya adalah deklarasi object LCD dengan parameter-parameter nomor pin I/O Starduino Board yang dihubungkan ke LCD dengan urutan RS, EN, D4, D5, D6, D7. Sesuai dengan tabel konfigurasi di atas, maka deklarasi object LCD adalah:

LiquidCrystal LCD (12, 11, 5, 4, 3, 2);

Setelah pendeklarasian object sudah benar, maka LCD perlu diinisialisasi untuk bekerja pada mode 4-bit. Inisialisasi dilakukan dengan memanggil fungsi begin sebagai beikut:

LCD.begin (16, 2);

Untuk menampilkan tulisan digunakan fungsi print. Fungsi setCursor digunakan untuk meletakkan kursor di posisi (kolom, baris) yang diinginkan.

Sangat mudah, bukan?

Untuk informasi harga dan pemesanan Starduino Board, silakan mengunjungi situs: http://teknikelektrolinks.com.

Selamat belajar!

Smile

Rangkaian Tombol Aktif-Low dan Contoh Program AVR-GCC dan Arduino

telinks_1keycircuit

Jika Rangkaian LED Aktif-Low dan LED Aktif-High merupakan rangkaian sederhana dalam eksperimen mikrokontroler yang mewakili rangkaian output, maka rangkaian tombol aktif-low di samping adalah rangkaian sederhana yang mewakili rangkaian input dengan dua-kondisi yakni kondisi logika high dan kondisi logika low.

Rangkaian terdiri dari sebuah resistor yang diseri dengan sebuah tombol normally-opened (NO). Resistor berfungsi sebagai beban yang mencegah terjadinya hubung-singkat ketika tombol ditekan. Nilai resistor yang umum digunakan dalam level tegangan TTL adalah 10K ohm.

Prinsip kerja rangkaian sangat sederhana. Ketika tombol tidak ditekan, maka output berlogika 1 (HIGH). Dan ketika tombol ditekan, maka output berlogika 0 (LOW). Dengan rangkaian sederhana ini, kita dapat memberikan input berupa perubahan logika ke mikrokontroler dari logika 1 ke logika 0 sebagai sinyal bahwa tombol ditekan. Program mikrokontroler bertugas mendeteksi perubahan logika tersebut dan menjalankan aksi sesuai fungsi tombol tersebut. Pada bagian akhir tulisan ini akan diberikan contoh program sederhana pendeteksian penekanan tombol dengan aksi sederhana yakni menyalakan LED ketika tombol ditekan.

Bouncing Pada Tombol

Sesaat ketika tombol ditekan, ada kondisi dimana kontak tombol belum stabil dan oleh karenanya menghasilkan output logika yang belum stabil pula. Untuk mengatasi hal itu, maka perlu diberikan delay sesaat setelah terdeteksi perubahan logika dari HIGH ke LOW, dan melakukan pengecekan lagi terhadap tombol. Jika setelah delay tombol masih LOW, maka dapat dikatakan tombol telah ditekan secara stabil.

Berikut adalah pseudo-code untuk pendeteksian penekanan tombol aktif-low.

Jika (TOMBOL=LOW)
{
  Delay_50_ms
  Selama (TOMBOL=LOW)
  {
    Lakukan_Aksi
  }
}

Resistor Pull-Up Internal Pada Mikrokontroler

telinks_1keycircuit2Port I/O pada mikrokontroler memiliki resistor pull-up yang dapat diaktifkan sehingga dapat digunakan untuk menggantikan resistor pull-up R1 pada rangkaian di atas. Dengan demikian rangkaian tombol aktif-low di atas dapat disederhanakan seperti gambar rangkaian di samping.

Pada mikrokontroler AVR, jika bit DDRx diset 1 (pin yg bersangkutan berfungsi sebagai output) dan bit PORTx diset 1 (pin yang bersangkutan berlogika 1), maka resistor pull-up internal pada pin tersebut akan aktif.

Contoh Program Pendeteksian Tombol Aktif-Low (AVR-GCC)

Pada contoh program ini, rangkaian tombol aktif-low terhubung ke PORTB.0 (PB0), dan rangkaian LED aktif-high terhubung ke PORTB.1 (PB1).

#define F_CPU 1000000UL

#include
#include 

#define ON 1
#define OFF 0

//macro LED ON/OFF untuk LED Aktif-High
#define LED_AH(x)((x)==(ON)?(PORTB|=_BV(PB1)):(PORTB&=~_BV(PB1)))

int main(void)
{
  PORTB = 0b00000001; //LED=OFF, Res Pull-up internal PB0 aktif
  DDRB  = 0b00000010; //PB1=OUTPUT, PB0=INPUT

  while(1)
  {
    if (bit_is_clear(PINB, PB0)) //jika PB0 = LOW (tombol ditekan)
    {
      _delay_ms(50);             //debouncing delay

      while (bit_is_clear(PINB, PB0)) //selama tombol ditekan
      {
        LED_AH(ON);                   //LED = ON
        //...
      }

      LED_AH(OFF); //LED = OFF
    }
  }
}

Contoh Program Pendeteksian Tombol Aktif-Low (Arduino)

Pada contoh program ini, rangkaian tombol aktif-low terhubung ke pin-11, dan rangkaian LED aktif-high terhubung ke pin-13.

int TOMBOL;

void setup()
{
  pinMode(13, OUTPUT);
  pinMode(11, INPUT);
  digitalWrite(11, HIGH); //aktifkan resistor pull-up internal
}

void loop()
{
  TOMBOL = digitalRead(11);
  if (TOMBOL==LOW)
  {
    delay(50);
    while(TOMBOL==LOW)
    {
      digitalWrite(13, HIGH);
      TOMBOL = digitalRead(11);
    }
    digitalWrite(13, LOW);
  }
}

Contoh-contoh program di atas dapat ditulis dengan lebih efisien jika tujuannya hanya menyalakan LED ketika tombol ditekan. Kedua contoh program di atas dapat langsung digunakan dan dikembangkan sesuai dengan aplikasi yang Anda buat. Program ditulis dengan lebih detail agar algoritma pendeteksian penekanan tombol aktif-low dapat lebih mudah dipahami.

Catatan: Nilai delay tidak harus 50ms. Nilai tersebut dapat diganti dengan 10ms, 20ms, 100ms, silakan bereksperimen sendiri.

Teknik pendeteksian penekanan tombol yang dibahas pada tulisan ini sangat boleh jadi bukanlah teknik yang terbaik, jadi tetaplah membaca, tetaplah browsing, dan tetaplah bereksperimen.

Jika ingin bereksperimen dengan Starduino Board, Anda dapat memesannya melalui situs berikut ini: http://teknikelektrolinks.com.

Selamat belajar!

Smile

Rangkaian LED Aktif-Low dan LED Aktif-High dan Contoh Program Kontrol LED Untuk AVR-GCC dan Arduino

led_hi_lo

Perhatikan gambar di samping. Gambar sebelah kiri adalah rangkaian LED Aktif-Low, dan gambar sebelah kanan adalah rangkaian LED Aktif-High. Rangkaian terdiri dari sebuah resistor yang diseri dengan sebuah LED.

Pada rangkaian LED Aktif-Low, LED akan menyala jika diberi logika 0 (LOW) dan akan mati jika diberi logika 1 (HIGH).

Ketika diberi logika 0, maka tegangan pada kaki anoda LED lebih positif dibandingkan dengan kaki katoda. Selisih tegangan pada kaki anoda dan katoda LED ini melebihi tegangan jatuh LED, sehingga LED pun menghantar (dialiri arus listrik) dan menyala. Sebaliknya, ketika diberi logika 1, maka kaki anoda LED tidak lebih positif daripada kaki katoda, oleh karenanya LED tidak menghantar (tidak dialiri arus listrik) sehingga LED pun tidak menyala.

Pada rangkaian LED Aktif-High, LED akan menyala jika diberi logika 1 (HIGH) dan akan mati jika diberi logika 0 (LOW).

Ketika diberi logika 1, maka tegangan pada kaki anoda LED lebih positif dibandingkan dengan kaki katoda LED. Selisih tegangan pada kaki anoda dan katoda LED ini melebihi tegangan jatuh LED, sehingga LED pun menghantar (dialiri arus listrik) dan menyala. Sebaliknya, ketika diberi logika 0, maka tegangan pada kaki anoda LED tidak lebih positif daripada kaki katoda LED, oleh karenanya LED tidak menghantar (tidak dialiri arus listrik) sehingga LED pun tidak menyala.

Fungsi resistor seri pada rangkaian diatas adalah sebagai pembatas arus. Anda bisa menggunakan resistor dengan nilai yang aman mulai 150 ohm, 180 ohm, 220 ohm, hingga 2K2 ohm tergantung dari tipe LED yang Anda gunakan dan seberapa tingkat kecerahan yang Anda inginkan.

Dengan asumsi bahwa rangkaian LED Aktif-Low terhubung ke PORTB.0 dan rangkaian LED Aktif-High terhubung ke PORTB.1, berikut adalah contoh program kontrol LED untuk AVR-GCC.

Contoh Program Kontrol LED (AVR-GCC)

#define F_CPU 1000000L

#include <avr/io.h>
#include <util/delay.h>

#define ON 1
#define OFF 0

//macro LED ON/OFF untuk LED Aktif-Low
#define LED_AL(x)((x)==(ON)?(PORTB&=~_BV(PB0)):(PORTB|=_BV(PB0)))

//macro LED ON/OFF untuk LED Aktif-High
#define LED_AH(x)((x)==(ON)?(PORTB|=_BV(PB1)):(PORTB&=~_BV(PB1)))

int main(void)
{
  PORTB = 0b00000001; //PB1=0, PB0=1 --> kedua LED OFF
  DDRB = 0b00000011;  //PB0 dan PB1 sebagai output

  while(1)
  {
    LED_AL(ON); LED_AH(ON);   //kedua LED ON
    _delay_ms(500);           //delay 1/2 detik
    LED_AL(OFF); LED_AH(OFF); //kedua LED OFF
    _delay_ms(500);           //delay 1/2 detik
  }
}

Contoh Program Kontrol LED (Arduino)

Dengan asumsi bahwa rangkaian LED Aktif-Low terhubung ke pin-11 dan rangkaian LED Aktif-High terhubung ke pin-12, berikut adalah contoh program pengendalian LED untuk Arduino.

void setup()
{
  pinMode(11, OUTPUT); //pin-11 sebagai output
  pinMode(12, OUTPUT); //pin-12 sebagai output
}

void loop()
{
  digitalWrite(11, LOW);  //LED Aktif-Low ON
  digitalWrite(12, HIGH); //LED Aktif-High ON
  delay(500);             //delay 1/2 detik
  digitalWrite(11, HIGH); //LED Aktif-Low OFF
  digitalWrite(12, LOW);  //LED Aktif-High OFF
  delay(500);             //delay 1/2 detik
}

Rangkaian LED Aktif-Low dan Aktif-High merupakan rangkaian yang sangat penting dalam bereksperimen mikrokontroler. Tak hanya karena murah dan mudah dirangkai, tapi kedua rangkaian tersebut dapat mewakili berbagai macam rangkaian output, baik yang aktif-low maupun yang aktif-high seperti relay, buzzer, motor, dan solenoid. Selanjutnya tinggal mempelajari dan memahami berbagai macam rangkaian driver output.

Ingin bereksperimen dengan Starduino Board? Silakan mengunjungi situs kami di: http://teknikelektrolinks.com.

Selamat belajar!

Smile