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);

Berikut adalah foto board STARDUINO + LCD 16×2 + Modul GPS.

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 detil produk Starduino, harga dan cara pemesanan, silakan mengunjungi http://teknikelektrolinks.com/starduino/neo-starduino.htm.

Semoga bermanfaat.

Selamat belajar dan selamat berkarya!

🙂

Sistem Minimum Mikrokontroler Dengan Bootloader – Praktis, Tak Perlu Lagi ISP Programmer/Downloader

Memiliki sistem minimum sebuah mikrokontroler dalam proses belajar mikrokontroler mutlak diperlukan. Meskipun kita bisa menggunakan software simulator yang sangat canggih untuk belajar mikrokontroler tanpa hardware, namun dengan praktek secara langsung menggunakan hardware yang sesungguhnya dapat memberikan pengalaman yang baik yang nantinya akan dapat membantu kita dalam pengaplikasian mikrokontroler secara riil.

Pada tulisan ini akan dibahas 3 buah sistem minimum yang dapat digunakan untuk teman belajar mikrokontroler maupun untuk aplikasi sistem berbasis mikrokontroler. Sistem minimum yang dimaksud adalah: Starduino Board, MinSys ATmega8535/16/32, dan MinSys MCS-51 berbasis mikrokontroler STC-51 tipe STC11F32XE.

Ketiganya adalah sistem minimum yang dilengkapi program bootloader sehingga tidak diperlukan lagi rangkaian ISP Downloader/Programmer.

telinks_starduino

STARDUINO BOARD
Starduino Board adalah sistem minimum AVR ATmega8 dengan bootloader Arduino sehingga board ini bisa diprogram langsung menggunakan program IDE Arduino melalui port serial RS232.

Starduino Board memiliki peta I/O yang sama dengan Arduino Duemilanove/UNO. Jadi untuk program-program Arduino bisa dijalankan menggunakan board ini. Akan tetapi tidak semua program yang berjalan di Arduino Duemilanove/UNO bisa berjalan di Starduino. Semata karena Starduino hanya menggunakan ATmega8 sedangkan Arduino Duemilanove/UNO menggunakan ATmega328. Namun demikian, ATmega8 bisa diganti dengan ATmega168 atau ATmega328, sehingga Starduino Board tidak lagi berbeda dengan Arduino Duemilanove/UNO.

Starduino Board memiliki konektor pin-pin I/O berupa deretan header tunggal (male) yang siap dihubungkan ke modul-modul antarmuka pendukung seperti sensor, keypad, LCD, seven-segment, dan lain-lain. Header tunggal (male) dipilih karena konektor ini dapat terhubung dengan sangat baik jika dipasangkan dengan black-housing.

Starduino Board membutuhkan tegangan suplai 7,5-12V DC. Konektor tegangan suplai adalah sebuah terminal-screw sehingga kuat dan tak mudah goyah. Starduino Board juga memiliki 5 buah power-port 5V yang dapat digunakan untuk mensuplai rangkaian-rangkaian pendukung maupun breadboard.

Berikut adalah screenshot program Arduino 1.0.1 ketika meng-upload program pengujian Starduino melalui port serial RS232 (COM1) dan screenshot terminal COM1.

starduino_tester_pde starduino_tester_pde_com1

Starduino Board merupakan pilihan tepat jika Anda membutuhkan sistem minimum dengan jumlah I/O memadai, memori program yang cukup dan tidak memerlukan ISP Programmer. Dengan IDE Arduino, Anda dapat mengubah Starduino Board menjadi prototipe sistem apapun dengan mudah dan handal. Handal, karena library Arduino telah teruji secara internasional!

Untuk informasi harga dan pemesanan Starduino Board, silakan berkunjung ke situs kami di: http://teknikelektrolinks.com.

telinks_msmega MSMEGA (ATmega8535/16/32)
Sistem minimum berikutnya adalah sistem minimum mikrokontroler AVR ATmega8535, ATmega16, atau ATmega32. Seperti terlihat pada foto di samping, sistem minimum ini dilengkapi dengan port serial RS232, 8 buah LED, 3 buah push-button, konektor header tunggal untuk antarmuka I/O, dan port ISP.

Sistem minimum ini juga memiliki bootloader sehingga tidak diperlukan lagi rangkaian ISP Programmer/Downloader. Program bootloader yang digunakan adalah buatan The chip45 GmbH & Co. KG (www.chip45.com). Untuk meng-upload file program mikrokontroler (.HEX) digunakan program chip45boot2 GUI.

Kelebihan bootloader buatan chip45 adalah program menggunakan algoritma autobaudrate sehingga bootloader ini dapat digunakan dengan clock sesuai kebutuhan kita. Pada board MSMEGA digunakan kristal 11.0592 MHz untuk mendapatkan kesempurnaan transfer data serial UART.

Berikut adalah screenshot program chip45boot2 GUI ketika meng-upload file program m16.hex dan screenshot program Hyperterminal pada port COM1 dengan baudrate 9600.

chip45boot2_gui

msmega_com1

Adapun program pengujian sistem minimum MSMEGA di atas adalah sebagai berikut:

m16_c

Program pengujian di atas di-compile menggunakan AVR-GCC dengan perintah-perintah sebagai berikut:

C:\WinAVR\bin>avr-gcc -g -Os -mmcu=atmega16 -c m16.c uart.c
C:\WinAVR\bin>avr-gcc -g -mmcu=atmega16 -o m16.elf m16.o uart.o
C:\WinAVR\bin>avr-objcopy -j .text -j .data -O ihex m16.elf m16.hex

FYI, program ditulis menggunakan editor teks Cream 0.43 (Vim 7.3.107). Program dapat Anda download dari: http://cream.sourceforge.net.

Untuk informasi harga dan pemesanan sistem minimum ATmega8535/16/32, silakan mengunjungi situs kami di: http://teknikelektrolinks.com.

telinks_stc51

MINSYS STC-51
STC-51 adalah produk mikrokontroler buatan Cina berarsitektur MCS-51 dengan berbagai macam pengembangan. STC-51 memiliki tipe mikrokontroler yang beraneka-ragam. Mikrokontroler STC-51 selain lebih cepat dibandingkan dengan mikrokontroler AT89S51/52, juga memiliki fitur-fitur seperti ADC Internal, PWM Generator, dan lain-lain seperti layaknya mikrokontroler PIC dan AVR.

Jadi, jika Anda pengguna mikrokontroler seri AT89S51/52, maka STC-51 merupakan pilihan tepat untuk pengembangan fitur sistem tanpa harus mempelajari lagi pemrograman mikrokontroler dari awal. Dan jika Anda seorang pemula yang ingin mempelajari mikrokontroler MCS-51, sistem minimum ini sangat cocok karena mikrokontroler yang digunakan (STC11F32XE) telah memiliki bootloader sehingga dapat diprogram melalui port serial RS232. Jadi tidak perlu lagi ISP Programmer/Downloader.

Untuk meng-upload file .HEX atau file .BIN, digunakan program STC-ISP sebagai berikut:

stc_isp

Berikut adalah program pengujian sistem minimum MCS-51 berbasis mikrokontroler STC11F32XE yang ditulis menggunakan M-IDE Studio for MCS-51 dengan kompiler SDCC.

mide51_stc51

Dan berikut ini adalah screenshot program Hyperterminal yang terhubung dengan sistem minimum STC11F32XE melalui port serial COM1.

hyperterminal_stc51

Tipe mikrokontroler STC-51 yang dapat digunakan selain tipe 11FxxXE adalah STC89C52RC, STC12C5AxxS2, dan tipe mikrokontroler 40-pin PDIP yang lain asalkan kompatibel dengan pin-pin AT89S51/52.

Dengan mikrokontroler STC-51, kemampuan sistem minimum menjadi semakin hebat. Tak hanya kaya fitur layaknya mikrokontroler PIC dan AVR, kecepatan mikrokontroler STC-51 mencapai 12 kali lipat dari mikrokontroler AT89C51.

Jika Anda berminat, silakan mengunjungi situs kami di: http://teknikelektrolinks.com untuk mengetahui informasi harga dan prosedur pemesanannya.

Selamat belajar dan selamat berkarya!

🙂

Tutorial Mikrokontroler 89S51: Mengenal MIDE-51 Development Tools MCS-51 GRATIS Dari OpCUBE

mide51

MIDE-51 adalah sebuah paket program IDE untuk mikrokontroler MCS-51 yang terintegrasi dengan kompiler C MCS-51, assembler MCS-51, dan juga simulator MCS-51.

Untuk kompiler C, MIDE-51 menggunakan program SDCC dan untuk assembler, MIDE-51 menggunakan ASEM51. Baik SDCC maupun ASEM51, keduanya termasuk program-program terbaik yang tersedia secara gratis (freeware). ASEM51 adalah assembler yang pernah digunakan untuk memprogram Mobot Mars!

Untuk simulator, MIDE-51 mengintegrasikan program TS Controls Emulator 8051 dan JSim51. Meskipun kedua simulator ini dibuat pada tahun 1998 dan 1999, namun masih layak kita gunakan dalam proses debugging. Software TS Controls Emulator 8051 adalah simulator yang dulu menemani saya bertahun-tahun dalam mempelajari pemrograman 8051, termasuk juga saya gunakan dalam pekerjaan secara profesional.

MIDE-51 menganut sistem single-file project, jadi dalam pembuatan program kita hanya perlu membuat sebuah file program saja, sehingga sangatlah cocok digunakan untuk pemula. Namun demikian, bukan berarti MIDE-51 tidak layak digunakan untuk membuat program 8051 yang kompleks.

Membuat Program BLINK.C

mide51_new

Sebagai contoh, mari kita membuat program BLINK.C. Program ini sederhana saja, hanya mengubah-ubah kondisi logika PORT1 dari logika HIGH ke logika LOW dan sebaliknya secara terus-menerus dengan interval tertentu. Atau biasa disebut sebagai blinking led kalau pada pin PORT1 kita berikan rangkaian LED.

Langkah pertama adalah memilih menu File –> New atau bisa juga dilakukan dengan menekan tombol shortcut Ctrl-N.

Selanjutnya, MIDE-51 akan membuka window editor baru yang belum bertitel apapun (Untitled).

Langkah selanjutnya adalah mengetik listing program berikut ini:

/* BLINK.C */

#include <at89x51.h>

void delay(int n)
{
  int i, j;
  for (i=1;i<=n;i++)
    for (j=1;j<=10;j++);
}

/* PROGRAM UTAMA */
int main(void)
{
  while(1)
  {
    P1 = 0;
    delay(5000);
    P1 = 0xff;
    delay(5000);
  }
}

Setelah selesai mengetik program di atas, simpan dengan nama blink.c dan kompilasi dengan memilih menu Build –> Build and Sim.

mide51_save      mide51_build

Selesai melakukan kompilasi, MIDE-51 akan mengeksekusi program TS Controls Emulator 8051 dan otomatis membuka file hexa hasil kompilasi SDCC sebagai berikut:

image

Untuk melakukan simulasi (debugging), terdapat beberapa perintah yang dapat kita gunakan yakni:

  • Step Into Next Instruction (F11)
  • Step Over CALL (F10)
  • Step Over CALL/DJNZ (Shift-F10)
  • Reset (Ctrl-Shift-F5)

Dengan perintah-perintah tersebut kita dapat mengikuti jalannya program dengan tujuan agar kita dapat lebih memahami bagaimana program mikrokontroler bekerja. TS Controls Emulator 8051 juga dapat mensimulasikan kerja TIMER dan juga INTERRUPT. Memang bukan software emulator yang ‘DAHSYAT’, tapi layak untuk digunakan.

Jika Anda mengikuti jalannya program assembler pada simulator, nantinya akan terlihat perubahan nilai pada register P1 (PORT1) yang berubah-ubah dari FF ke 00 dan sebaliknya. Nilai register ini dapat di lihat pada Window SF Registers.

Untuk simulator JSIM-51 dapat Anda coba dan bandingkan sendiri.

Btw, File hexa hasil kompilasi program dapat langsung diprogram ke memori mikrokontroler menggunakan rangkaian dan program downloader ISP untuk dilihat hasil kerjanya secara langsung menggunakan board mikrokontroler 89S51.

Sekian perkenalan singkat kita dengan MIDE-51. Anda dapat mengunduh paket program MIDE-51 menggunakan download link berikut ini.

Download MIDE-51
( ~4 MB )

Selamat belajar dan selamat berkarya!

🙂