By :
Supervisors :
i
PROYEK AKHIR
Oleh:
Dosen Pembimbing :
i
FINAL PROJECT
By :
Supervisors :
ii
PROYEK AKHIR
Oleh:
Dosen Pembimbing :
ii
IMPLEMENTASI WIRELESS SENSOR NETWORK
UNTUK MONITORING PARAMETER ENERGI
LISTRIK SEBAGAI PENINGKATAN LAYANAN
BAGI PENYEDIA ENERGI LISTRIK
Oleh :
Disetujui Oleh
Dosen Penguji Proyek Akhir : Dosen Pembimbing:
3. Rusiana, ST
NIP. 195701261990032001
Mengetahui :
Ketua Jurusan Teknik Elektro Industri
iv
ABSTRAK
v
ABSTRACT
vi
KATA PENGANTAR
Penulis
vii
UCAPAN TERIMA KASIH
Dengan penuh rasa syukur kehadirat Allah S.W.T dan tanpa
menghilangkan rasa hormat yang mendalam, saya selaku penyusun dan
penulis mengucapkan terima kasih yang sebesar-besarnya kepada pihak-
pihak yang telah membantu penulis untuk menyelesaikan proyek akhir
ini, penulis mengucapkan terima kasih kepada :
viii
DAFTAR ISI
BAB I. PENDAHULUAN
1.1 Latar Belakang ........................................................... 1
1.2 Tujuan Proyek Akhir .................................................. 1
1.3 Perumusan Masalah .................................................... 1
1.4 Batasan Masalah ........................................................ 2
1.5 Metodologi.................................................................. 2
1.6 Sistematika Pembahasan............................................. 3
ix
3.2 Perancangan dan Pembuatan Alat................................ 27
3.3 Perancangan dan Pembuatan Perangkat Lunak ........... 32
BAB V. PENUTUP
5.1 Kesimpulan ................................................................. 51
4.2 Saran ............................................................................ 51
DAFTAR PUSTAKA
LAMPIRAN
x
DAFTAR GAMBAR
Gambar 2.1 Komponen WSN ...................................................... 5
Gambar 2.2 Topologi untuk WSN ............................................... 6
Gambar 2.3 Komponen Pada setiap node pada WSN.................. 6
Gambar 2.4 Rangkaiang dasar trafo............................................. 7
Gambar 2.5 Rangkaian ekivalen trafo arus .................................. 8
Gambar 2.6 Rangkaian zerro crossing ..................................... 9
Gambar 2.7 Rangkaian zero crossing dan EXOR
untuk mendapatkan nilai beda phase .................. 10
Gambar 2.8 Blok diagram sistem mikrokontroller............... 10
Gambar 2.9 Pin konfigurasi XBee PRO ...................................... 12
Gambar 2.10 Pin konfigurasi DS1307 .......................................... 15
Gambar 2.11 Timing diagram perintah reset.................................. 16
Gambar 2.12 Timing diagram perintah init.................................... 16
Gambar 2.13 Timing diagram perintah read .................................. 17
Gambar 2.14 Timing diagram perintah write ................................. 17
Gambar 2.15 Memulai project baru pada CodeVision AVR.......... 18
Gambar 2.16 Memilih IC, clock dan kebutuhan program yang
akan dibuat pada wizard ........................................... 18
Gambar 2.17 Generate , save c file, project file dan wizard........... 19
Gambar 2.18 Mendownload program ke mikrokontroller.............. 19
Gambar 3.1 Konfigurasi sistem WSN.......................................... 25
Gambar 3.2 Blok diagram WSN untuk monitoring parameter listrik ... 26
Gambar 3.3 Blok diagram sensor node ........................................ 27
Gambar 3.4 Rangkaian minimum sistem ATMega 128............... 27
Gambar 3.5 Rangkaian konverter TTl to RS-232 ........................ 28
Gambar 3.6 Rangkaian modul radio frekuensi (XBee PRO) ....... 28
Gambar 3.7 Rangkaian real time clock (DS1307) ....................... 29
Gambar 3.8 Rangkaian penyimpan data (SD Card) ..................... 29
Gambar 3.9 Rangkaian sensor node............................................. 30
Gambar 3.10 Modem GPRS .......................................................... 30
Gambar 3.11 Rangkaiang dasar trafo............................................. 31
Gambar 3.12 Rangkaian zero crossing........................................... 32
Gambar 3.13 Rangkaian zero crossing dan EXOR
untuk mendapatkan nilai beda phase ..................... 32
Gambar 3.14 Flowchart sistem sensor node .................................. 33
Gambar 3.15 Flowchart komunikasi data sisi Gateway.......................... 36
xi
Gambar 4.1 Grafik tegangan output AC sisi sekunder terhadap
arus input AC sisi primer transformator arus ............. 38
Gambar 4.2 Gelombang tegangan (arus di parallel resistor) pada
sisi sekunder............................................................... 38
Gambar 4.3 Grafik tegangan output AC terhadap tegangan
input AC pada transformator tegangan ...................... 39
Gambar 4.4 Contoh gambar tegangan AC, f = 50Hz
pada sisi sekunder trafo tegangan .............................. 40
Gambar 4.5 Tegangan pada sisi sekunder trafo tegangan
dengan bentuk gelombang sinus ................................ 40
Gambar 4.6 Hasil zero crossing dari gelombang sinus
menjadi gelombang kotak .......................................... 41
Gambar 4.7 Grafik kualitas penerimaan data baud rate 9600........ 44
Gambar 4.8 Grafik kualitas penerimaan data baud rate 4800........ 45
Gambar 4.9 Grafik kualitas penerimaan data baud rate 19200...... 45
Gambar 4.10 Grafik kualitas penerimaan data baud rate 38400...... 46
Gambar 4.11 Grafik kualitas penerimaan data baud rate 57600...... 46
Gambar 4.12 Grafik kualitas penerimaan data baud rate 115200.... 47
Gambar 4.13 Tampilan web pada telepon gengam ......................... 49
Gambar 4.14 Tampilan input web pada telepon genggam............... 49
Gambar 4.15 Tampilan output web pada telepon genggam............. 50
xii
DAFTAR TABEL
Tabel 2.1 Keterangan pin konfigurasi XBee PRO .................... 13
Tabel 2.2 Data pada bahasa C................................................... 20
Tabel 2.3 Operator arimatika yang digunakan di bahasa C ...... 21
Tabel 2.4 Operator logika yang biasa digunakan di bahasa C .. 21
Tabel 4.1 Pengukuran sensivitas sensor arus ............................ 37
Tabel 4.2 Pengukuran sensivitas sensor tegangan .................... 39
Tabel 4.3 Pengukuran kualitas pengiriman data dari
XBee – Pro dengan baud rate 4800bps .................... 41
Tabel 4.4 Pengukuran kualitas pengiriman data dari
XBee – Pro dengan baud rate 9600 bps ................... 42
Tabel 4.5 Pengukuran kualitas pengiriman data dari
XBee – Pro dengan baud rate 19200bps .................. 42
Tabel 4.6 Pengukuran kualitas pengiriman data dari
XBee – Pro dengan baud rate 38400bps .................. 43
Tabel 4.7 Pengukuran kualitas pengiriman data dari
XBee – Pro dengan baud rate 157600bps ................ 43
Tabel 4.8 Pengukuran kualitas pengiriman data dari
XBee – Pro dengan baud rate 115200bps ................ 44
xiii
BAB I
PENDAHULUAN
1.1 LATAR BELAKANG
1
2. Bagaimana mengirim data – data parameter energi listrik tersebut
secara nirkabel ke gateway, dan gateway mengirimnya ke server
menggunakan koneksi GPRS.
3. Bagaimana mengakses database melalui WAP (dari telepon
genggam).
1.5 METODOLOGI
2
1.5.3 Uji Coba Sistem
Pada tahap ini dilakukan uji coba hardware dan program untuk
mengetahui hasil dari integrasi hardware dan program yang telah dibuat,
serta melakukan perbaikan apabila terjadi kesalahan pada hardware atau
program.
BAB I PENDAHULUAN
3
BAB IV ANALISA HASIL PENGUJIAN
DAFTAR PUSTAKA
4
BAB II
TEORI PENUNJANG
2.1 Wireless Sensor Network (WSN)
1
__,” What Is a Wireless Sensor Network?”. diakses tanggal 1 pebuari 2009 , NI
Developer Zone, National Instruments
http://zone.ni.com/devzone/cda/tut/p/id/8707, hal 3
5
komunikasi biasanya ada. jika satu hubungan komunikasi rusak,
pengiriman data tidak akan berhenti .
WSN secara umum mempunyai 3 buah topologi (star, tree dan
mesh) seperti ditunjukkan pada gambar 2.2.
1. Topologi Bintang (Star Topology), pada topologi ini setiap node dapat
terhubung langsung ke gateway.
2. Topologi Pohon (Tree Topology), pada topologi ini setiap node
terhubung ke node yang lebih tinggi pada tree (yang terdekat dengan
gateway) baru kemudian ke gateway.
3. Topologi Bertautan (Mesh Topology), dimana setiap node dapat
terhubung lebih dari satu node pada sistem dan mengirim data melalui
jalur yang paling memungkinkan.
2
Ibid, hal 5
3
Ibid, hal 6
6
Beberapa penggunaan WSN adalah otomasi industri, kontrol dan
managemen energi, monitoring mesin - mesin kesehatan, monitoring
lingkungan untuk keperluan kesehatan, monitoring arus lalu-lintas,
monitoring bencana alam (pencatatan gempa), monitoring polusi,
monitoring hewan liar, monitoring parameter energi listrik dan lain-lain.
Sensor – sensor tersebut akan mendeteksi obyek dan mengirim data
dengan nirkabel ke gateway. Sensor – sensor yang digunakan dapat
bermacam – macam, tergantung dari plan yang dikerjakan.
2.2 SENSOR
4
Setiawan,”Rumusan Dasar Trafo”, diakses pada tanggal 1 Agustus 2009, geocities
http://www.geocities.com/sap_tech_talk/Formula_Trafo.htm, hal 1
7
Dimana : Vp= tegangan sisi primer
Vs= tegangan sisi sekunder
Np= Belitan sisi primer
Ns= Belitan sisi sekunder
5
“Peralatan input relay” diakses pada tanggal 1 Agustus 2009, elista
elista.akprind.ac.id/upload/files/8357_Pertemuan_ke_4.ppt, hal 17
8
Keterangan : Tegangan terminal sekunder (V2 ) tergantung pada
impedansi peralatan (Z2 ) yang bisa berupa alat ukur / relay, sehingga
dapat ditulis persamaan :
V2 I 2 Z 2
Gambar 2.5 merupakan rangkaian ekivalen transformator arus. Jika
tahanan dan reaktansi bocor kumparan trafo dinyatakan (Z i ), maka ggl
pada kumparan sekunder harus lebih besar dari pada tegangan
sekunder agar rugi-rugi tegangan pada (Z i ) dapat dikompensasi, maka
persamaan yang harus dipenuhi adalah :
E 2 V2 E 2 I 2 Z 2 I 2 Z i
sehingga bila sinyal sinus berada di phase positif, maka output dari
zero crossing detector adalah high. Dan bila sinyal sinus berada di
phase negatif, maka outputnya adalah low. Untuk mendapatkan nilai
beda phase, digunakan gerbang EXOR yang mana keluarannya akan
6
B.Yoyok W.P, “Perancangan Watt Meter Digital 1 Fasa Dengan Mikrokontroller
AT89S51”, diakses pada tanggal 1 Agustus 2009, Unika Sogijapranata
http://joaldera.blogspot.com/2008/05/perancangan-watt-meter-digital-1-fasa.html, hal 1
9
high bila input sinyal kotak tegangan dan arus dimulai pada waktu
yang berbeda seperti ditunjukkan pada gambar 2.7.
2.3 MIKROKONTROLLER
2.3.1 Pengertian
7
Ibid, hal 1
8
Hermawan Sutanto ,“Konsep Mikrokontroler”, diakses pada tanggal 1 Agustus
2009, tripod
http://mikrokontroler.tripod.com/6805/bab1.htm, hal 1
10
2.3.2 ATmega128
ATmega128 merupakan salah satu jenis mikrokontroller buatan
ATMEL yang mana mempunyai beberapa kelebihan sebagai berikut :
Nonvolatile Program and Data Memories
– 128K Bytes of In-System Reprogrammable Flash
Daya Tahan: 10,000 Write/Erase Cycles.
– 4K Bytes EEPROM
Daya Tahan: 100,000 Write/Erase Cycles
– 4K Bytes Internal SRAM
Peripheral Features
– 8-channel, 10-bit ADC
8 Single-ended Channels
7 Differential Channels
2 Differential Channels with Programmable Gain at 1x, 10x, or
200x
– Byte-oriented Two-wire Serial Interface (I2C)
– Dual Programmable Serial USARTs
– Master/Slave SPI Serial Interface
• Operating Voltages
– 4.5 - 5.5V
• Speed Grades
– 0 - 16 MHz
11
2.5 XBee PRO RF Module
XBee PRO merupakan modul radio frekuensi yang beroperasi pada
frekuensi 2.4 GHz. Sesuai datasheet, Modul ini memerlukan tegangan
suplai 2.8 V sampai dengan 3.3 V saat mengirim data, modul ini akan
membebani dengan arus 270 mA, dan arus 55mA untuk penerimaan data
Pada XBee PRO terdapat 20 pin, namun yang sementara ini
digunakan adalah 6 pin, yaitu VCC dan GND untuk tegangan suplai,
DOUT merupakan pin Transmit (TX), DIN merupakan pin Receive (RX),
RESET merupakan pin reset XBee PRO dan yang terakhir adalah
PWMO/RSSI merupakan indikator bahwa ada penerimaan data yang
biasanya dihubungkan ke led yang didrive oleh transistor. Pada gambar 2.9
ditunjukkan bentuk fisik dari XBee PRO dan untuk keterangan dari setiap
kaki XBee PRO dijelaskan pada table 2.1.
9
Datasheet Xbee PRO.diakses 1 pebuari 2009, dari Stanford
http://ssdl.stanford.edu/ssdl/images/stories/AA236/0708A/Lab/Rover/Parts/xbeepr
oproductmanual.pdf, hal 5
12
8 [reserved] - Do not connect
9 DTR / SLEEP_RQ / DI8 Input Pin Sleep Control Line or Digital
Input 8
10 GND - Ground
11 RF_TX* / AD4* / DIO4* Either Transmission Indicator, Analog
Input 4 or Digital I/O 4
12 CTS* / DIO7* Either Clear-to-Send Flow Control or
Digital I/O 7
13 ON / SLEEP Output Module Status Indicator
14 VREF* Input Voltage Reference for A/D Inputs
15 Associate / AD5* / DIO5* Either Associated Indicator, Analog
Input 5 or Digital I/O 5
16 RTS* / AD6* / DIO6* Either Request-to-Send Flow Control,
Analog Input 6 or Digital I/O 6
17 COORD_SEL* / AD3* / Either Analog Input 3, Digital I/O 3 or
DIO3* Coordinator Select
18 AD2* / DIO2* Either Analog Input 2 or Digital I/O 2
19 AD1* / DIO1* Either Analog Input 1 or Digital I/O 1
20 AD0* / DIO0* Either Analog Input 0 or Digital I/O 0
*Untuk sementara ini, pin tersebut masih belum bisa digunakan.
Ada beberapa parameter XBee PRO yang perlu diatur agar modul ini
dapat berkomunikasi dengan modul yang lain, Sebenarnya ada 24 AT
Command yang bisa digunakan, namun yang sering di gunakan hanya 5
buah. Cara mengatur parameter XBee PRO adalah sebagai berikut :
request=+++
response=OK //membuka AT Command
13
response=OK
10
Datasheet DS1307.diakses 1 pebuari 2009, dari Datasheet catalog
http://www.datasheetcatalog.com/datasheets_pdf/D/S/1/3/DS1307.shtml, hal 1
14
2.7 Memory Card (SD Card)
15
Perintah reset diwakili oleh timing diagram pada gambar 2.11.
11
Tim IE ,” Application Note Mengenal SD Card & FAT16”, Inovative Electronic,
Surabaya, 2009, hal 1
12
Ibid, hal 2
16
Perintah read diwakili oleh timing diagram pada gambar 2.13.
13
Ibid, hal 3
14
Ibid, hal 4
17
Gambar 2.15. Memulai project baru pada CodeVision AVR
Gambar 2.16. Memilih IC, clock dan kebutuhan program yang akan dibuat
pada wizard
Setelah semua disetting, maka generate dan save c file, project file,
dan project wizard seperti pada gambar 2.17.
18
Gambar 2.17. Generate, save c file, project file dan project wizard
Bila program telah selesai dibuat, maka compile, make project dan
download ke mikrokontroller seperti pada gambar 2.18.
2.9 Bahasa C
19
yang disebut bahasa pemrograman. Instruksi-instruksi ini, kemudian
disebut sebagai perangkat lunak. Instruksi-instruksi yang dibuat untuk
mikrokontroller dapat ditulis dalam bahasa assembler, C, basic, dan pascal.
Mikrokontroler AVR dirancang dengan mempertimbangkan sifat-
sifat pengkodean bahasa C, sehingga bahasa inilah yang kemudian
cenderung digunakan daripada bahasa lainnya seperti bahasa basic atau
pascal. Bahasa C yang digunakan pada AVR ini adalah ANSI (American
National Standard Institute) C. Alasan utama pemilihan bahasa C ini karena
bahasa C merupakan gabungan dari bahasa tingkat tinggi dan juga bahasa
tingkat rendah yang menyediakan kemampuan operasi-operasi bit, byte,
alamat-alamat memori, dan register. Bahasa C yang digunakan untuk
memprogram mikrokontroler ini disebut sebagai embedded C, yang
selanjutnya oleh compiler listing program C ini diubah menjadi bahasa
tingkat rendah mikrokontroller yang bersangkutan yang kemudian
diterjemahkan menjadi kode-kode bahasa mesin yang selanjutnya
didownload ke dalam chip mikrokontroler.
20
2.9.2 Operator Arimatika
Simbol Arti
* Perkalian
/ Pembagian
% Sisa pembagian (MOD)
+ Penjumlahan
- Pengurangan
++ Penjumlahan dengan 1
-- Pengurangan dengan 1
Simbol Arti
>> geser bit ke kanan
<< geser bit ke kiri
^ XOR
~ NOT
| OR
& AND
2.10 Protokol
21
yang disampaikan. Salah satu alasan utamanya adalah ketidaksamaan
bahasa yang digunakan diantara mereka.
Agar keduanya dapat memahami informasi yang disampaikan,
maka diperlukan bahasa yang dapat dipahami oleh kedua belah pihak, atau
dengan kata lain harus ada aturan yang jelas dan disepakati untuk dapat
berkomunikasi.
Komunikasi antar mesin/komputer juga sama, apabila
komputer/mesin tersebut merupakan produk dari berbagai pabrik, oleh
karena itu diperlukan suatu aturan agar pengirim dan penerima mengerti
informasi yang dikirim, Protokol komunikasi (Communication Protocol)
adalah satu set aturan yang dibuat untuk mengontrol pertukaran data antar
node (misalkan komputer) termasuk proses inisialisasi, verifikasi, cara
berkomunikasi, dan cara memutuskan komunikasi.
Jadi dalam komunikasi data juga memerlukan sebuah peraturan
atau prosedur yang saling menterjemahkan bahasa yang dipakai
pengirim dan penerima. Aturan itu adalah protokol, yaitu suatu kumpulan
dari aturan - aturan yang berhubungan dengan komunikasi data agar
komunikasi data dapat dilakukan dengan benar. Protokol pada dasarnya,
adalah sebuah persetujuan semua pihak yang berkomunikasi tentang
bagaimana komunikasi tersebut harus dilakukan.
2.11 GPRS
22
multimedia ke komputer. Namun, dalam implementasinya, hal tersebut
sangat tergantung faktor-faktor sebagai berikut:
Konfigurasi dan alokasi time slot pada level BTS
Software yang dipergunakan
Dukungan fitur dan aplikasi ponsel yang digunakan
Dari segi biaya, pentarifan diharapkan hanya mengacu pada volume
penggunaan. Penggunanya ditarik biaya dalam kaitannya dengan
banyaknya byte yang dikirim atau diterima, tanpa memperdulikan
panggilan.
2.12 WAP
23
2.13 Database
Basis data (bahasa Inggris: database) adalah kumpulan informasi
yang disimpan di dalam komputer secara sistematik sehingga dapat
diperiksa menggunakan suatu program komputer untuk memperoleh
informasi dari basis data tersebut. Perangkat lunak yang digunakan untuk
mengelola dan memanggil kueri (query) basis data disebut sistem
manajemen basis data (database management system, DBMS).
Konsep dasar dari basis data adalah kumpulan dari catatan-catatan,
atau potongan dari pengetahuan. Sebuah basis data memiliki penjelasan
terstruktur dari jenis fakta yang tersimpan di dalamnya. Penjelasan ini
disebut skema, skema menggambarkan obyek yang diwakili suatu basis
data, dan hubungan di antara obyek tersebut. Ada banyak cara untuk
mengorganisasi skema, atau memodelkan struktur basis data, ini dikenal
sebagai model basis data atau model data. Model yang umum digunakan
sekarang adalah model relasional, yang mewakili semua informasi dalam
bentuk tabel-tabel yang saling berhubungan dimana setiap tabel terdiri dari
baris dan kolom (definisi yang sebenarnya menggunakan terminologi
matematika). Dalam model ini, hubungan antar tabel diwakili dengan
menggunakan nilai yang sama antar tabel. Model yang lain seperti hirarki
dan model jaringan menggunakan cara yang lebih eksplisit untuk mewakili
hubungan antar tabel.
24
BAB III
PERANCANGAN DAN PEMBUATAN HARDWARE
DAN SOFTWARE
25
Pada gambar 3.1 ditunjukkan konfigurasi dari sistem WSN.
Jaringan sensor nirkabel merupakan suatu jaringan yang mana terdapat
beberapa sensor diletakkan di beberapa tempat berbeda. Sensor – sensor
tersebut akan mensensor obyek dan mengirim data tersebut secara
nirkabel menuju gateway. Obyek yang disensor adalah tegangan, arus,
frekuensi dan beda phase pada beberapa titik jalur distribusi yang mana
setiap titik tersebut memberi energi listrik ke beberapa rumah.
Tegangan dan arus yang disensor akan dijadikan input pada ADC
internal dari mikrokontroller. Data – data dari ADC, frekuensi, beda
phase beserta waktu penyimpanannya (menggunakan RTC) akan
disimpan di SD Card. Setelah terkumpul beberapa data, data – data
tersebut akan dikirim secara nirkabel ke gateway menggunakan RF
modules. Di sisi gateway mengirim data – data dari beberapa node ke
web server menggunakan koneksi GPRS dengan modem GPRS. Pada
web server data tersebut akan disimpan dan dipublish agar konsumen
mengetahui kualitas energi listrik yang ada melalui telepon gengam. Dan
hal ini dapat dijadikan bahan evaluasi bagi penyedia energi listrik untuk
peningkatan pelayanan penyediaan energi listrik. Pada gambar 3.2
ditunjukkan blok diagram dari WSN untuk monitoring energi listrik dan
pada gambar 3.3 ditunjukkan blok diagram dari sensor node.
Sensor node 3
Komunikasi
wirelessNirkabel
Handphone
Sensor node 2 (customer)
Koneksi GPRS
Sensor node 1
Web Server
Koneksi GPRS
Database
Gateway Web Server
Gambar 3.2. Blok diagram WSN untuk monitoring energi listrik
26
Gambar 3.3. Blok diagram sensor node
1.2 Perancangan dan Pembuatan Alat
15
ak67 ,“ Atmega128”, diakses pada tanggal 1 Agustus 2009, wordpress
http://ak67.wordpress.com/2009/06/10/atmega128, hal 1
27
Agar gateway dapat terhubung ke web server, maka gateway
memerlukan koneksi GPRS, dimana secara hardware, gateway
berkomunikasi dengan modem GPRS (dial up, konek dan mengirim data
ke web server) menggunakan komunikasi serial kabel, dan
menggunakan IC MAX 232 untuk mengkonversi level tegangan TTL
menjadi level tegangan RS-232. Pada gambar 3.5 ditunjukkan
rangkaian konverter TTL ke RS-232. Nilai dari resistor pull up adalah
2k2 ohm, sehingga arus yang mengalir I=V/R=5/2k2=2.27mA.
16
Nate, “Lecture 4 - UART and Serial Communication”, diakses pada tanggal 1
Agustus 2009, sparkfun
http://www.sparkfun.com/commerce/tutorial_info.php?tutorials_id=104, hal 1
17
aaqilkhan, “Differential Drive Robotic Rover”, diakses pada tanggal 1
Agustus 2009, blogspot
http://aaqilkhan.blogspot.com/2007/08/autonomous-robotic-rover.html, hal 1
28
Pada saat sensor node membaca data (arus, tegangan, frekuensi,
dan beda phase), sensor node akan menyimpan data tersebut di SD Card
beserta waktu pembacaan data, sehingga diperlukan RTC. Jenis IC RTC
yang kami gunakan adalah DS1307. Pada gambar 3.7 ditunjukkan
rangkaian dari RTC (DS1307) dan pada gambar 3.8 ditunjukkan
rangkaian dari SD Card. Nilai dari resistor pull up adalah 2k2 ohm,
sehingga arus yang mengalir I=V/R=5/2k2=2.27mA.
18
“DS1307 64 X 8, Serial, I²C Real-Time Clock”, diakses pada tanggal 1
Agustus 2009, datasheetdir
http://www.datasheetdir.com/DS1307+Real-Time-Clocks-RTC, hal 1
19
“ BV410 SD Card Holder”, diakses pada tanggal 13 Agustus 2009 , byvac
http://www.byvac.com/bv/bv410.htm, hal 1
29
Microcontroller
ADC ATMEGA64
Power
(8 Channels)
Supply
Wireless Communication
(Xbee PRO)
SD Card
Serial Communication
RTC (DS1307) (MAX232)
(
Gambar 3.9. Rangkaian sensor node
30
Sensor tegangan
20
Setiawan,”Rumusan Dasar Trafo”, diakses pada tanggal 1 Agustus 2009, geocities
http://www.geocities.com/sap_tech_talk/Formula_Trafo.htm, hal 1
31
Gambar 3.12. Rangkaian Zerro Crossing21
21
B.Yoyok W.P, “Perancangan Watt Meter Digital 1 Fasa Dengan Mikrokontroller
AT89S51”, diakses pada tanggal 1 Agustus 2009, Unika Sogijapranata
http://joaldera.blogspot.com/2008/05/perancangan-watt-meter-digital-1-fasa.html,
hal 1
22
Ibid, hal 1
32
Gambar 3.14. Flowchart sistem sensor node
33
Pada Flowchart tersebut, sensor node perlu melakukan setting id
dan destination (pada parameter XBee - PRO). Setting destination-nya
adalah alamat sensor node terdekat atau gateway. Setelah itu sensor
node akan mulai membaca tegangan, arus, frekuensi dan beda phase dan
menyimpan data tersebut beserta waktu pembacaannya di SD Card. Pada
saat paket data sudah terkumpul banyak, maka sensor node akan
menghubungi sensor node terdekat atau gateway untuk memberitahu
akan mengirimkan paket data. Jika request tersebut direspon, maka
sensor node akan mengirim paket – paket data tersebut ke sensor node
terdekat atau gateway. Format dari paket data yang dikirim adalah
sebagai berikut :
Format untuk satu paket data
@node/tegangan/arus/frekuensi/beda phase/tanggal^
Contoh: @1/220.00/10.00/50.00/0.90/2009-07-06-01%2013:00:00^
Format untuk beberapa paket data
(@node/tegangan/arus/frekuensi/beda phase/tanggal^
@node/tegangan/arus/frekuensi/beda phase/tanggal^
@node/tegangan/arus/frekuensi/beda phase/tanggal^ ……….)
Contoh:
(@1/220.00/10.00/50.00/0.90/2009-07-06-
01%2013:00:00^@1/220.00/10.00/50.00/0.90/2009-07-06-
01%2014:00:00^@1/220.00/10.00/50.00/0.90/2009-07-06-
01%2015:00:00^)
Pada format diatas, terdapat keranjang kecil yang diawali dengan “@”
dan diakhiri “^”, isi dari keranjang ini adalah paket data yang
didalamnya ada node, tegangan, arus, frekuensi, beda phase beserta
tanggal nya. Untuk sekali pengiriman data dari sensor node ke
gateway,dapat dikirim beberapa paket data langsung, sehingga kita
memerlukan keranjang besar yang didalamnya ada keranjang –
keranjang kecil (paket – paket data). Keranjang besar ini diawali dengan
“(“ dan diakhiri dengan”)”.
Pada sisi gateway, akan menunggu request dari sensor node. Bila
ada request, maka gateway memberi respon ke pada sensor node yang
request. Dan kemudian gateway baru menerima paket – paket data dari
sensor node yang request dan menyimpannya sementara pada buffer.
Agar gateway dapat mengirim data ke web server, maka gateway perlu
melakukan dial up modem, membuat koneksi dengan server dan setelah
itu baru mengirim paket – paket data tersebut ke web server. Pada web
server dibuatkan program untuk memecah paket data, agar dapat
34
dimasukkan database. Pada data base terdapat beberapa kolom, yaitu
kolom id, kolom tegangan, kolom arus, kolom frekuensi, kolom beda
phase, kolom tanggal dan kolom node. Setelah gateway mengirim data
ke webserver, maka gateway akan menunggu request dari sensor node
untuk pengiriman data berikutnya. Untuk memperjelas sistem
komunikasi antara gateway dengan sensor node, pada gambar 3.15
ditunjukkan flowchart dari komunikasi data pada sisi gateway
Start
Setting Id
Ada request ?
Kirim respon ke
node yang request
Terima paket –
paket data dari node
35
Pada web yang diakses oleh ponsel, konsumen perlu
menginputkan tanggal, parameter dan wilayah (node) yang ingin dilihat
kualitas energi listriknya.
36
BAB IV
Dari data – data table 4.1, dapat dibuat grafik antara arus primer
dan arus skunder (yang sudah dijadikan tegangan dengan diparalel
resistor). Pada gambar 4.1 ditunjukkan grafik tegangan ac pada sisi
sekunder yang sebanding dengan arus pada sisi pimer. Sedangkan untuk
bentuk gelombang arus dari transformator arus ditunjukkan pada gambar
4.2.
37
Gambar 4.1 . Grafik tegangan output AC pada sisi sekunder terhadap
arus input AC pada sisi primer transformator arus
Time/Div=5ms, Volt/div=50mv x 10
Gambar 4.2. Gelombang tegangan (arus di parallel resistor) pada sisi
sekunder transformator arus
Data sensor tegangan
38
Tabel 4.2 . Pengukuran sensivitas sensor tegangan
Tegangan Tegangan
No. Primer Sekunder
1 220 3.768
2 210 3.6
3 200 3.425
4 190 3.26
5 180 3.087
6 170 2.912
7 160 2.745
8 150 2.582
9 140 2.405
10 120 2.228
11 110 2.055
Dari data – data table 4.2, kita dapat membuat grafik tegangan ac
pada sisi sekunder yang sebanding dengan perubahan pada tegangan ac
input sisi primer (220 V ac jala – jala PLN). Bentuk gelombang
tegangan transformator tegangan pada sisi sekunder ditunjukkan pada
gambar4.4.
39
Time/Div=5ms, Volt/div=0.2v x 10
Gambar 4.4. Contoh gambar tegangan AC, f = 50Hz pada sisi sekunder
transformator tegangan
Zero Crossing
Time/Div=5ms, Volt/div=0.2v x 10
Gambar 4.5. Tegangan pada sisi sekunder trafo tegangan dengan bentuk
gelombang sinus
40
Time/Div=5ms, Volt/div=0.5v x 10
Gambar 4.6. Hasil zero crossing detector dari gelombang sinus menjadi
gelombang kotak
Data xbee pro
41
Tabel 4.4. Pengukuran kualitas pengiriman data dari XBee – Pro
dengan baud rate 9600bps
Data Data
Jarak Data Yang Yang yang
No. Baudrate (m) Dikirim Diterima loses %loses
1 9600 3 1000 999 1 0.1
2 9600 6 1000 1000 0 0
3 9600 9 1000 997 3 0.3
4 9600 12 1000 998 2 0.2
5 9600 15 1000 999 1 0.1
6 9600 18 1000 997 3 0.3
7 9600 21 1000 997 3 0.3
8 9600 24 1000 1000 0 0
9 9600 27 1000 994 6 0.6
10 9600 30 1000 997 3 0.3
42
Tabel 4.6. Pengukuran kualitas pengiriman data dari XBee – Pro
dengan baud rate 38400bps
Data Data Data
Jarak Yang Yang yang
No. Baudrate (m) Dikirim Diterima loses %loses
1 38400 3 1000 1000 0 0
2 38400 6 1000 1000 0 0
3 38400 9 1000 997 3 0.3
4 38400 12 1000 1000 0 0
5 38400 15 1000 1000 0 0
6 38400 18 1000 1000 0 0
7 38400 21 1000 1000 0 0
8 38400 24 1000 997 3 0.3
9 38400 27 1000 997 3 0.3
10 38400 30 1000 997 3 0.3
43
Tabel 4.8. Pengukuran kualitas pengiriman data dari XBee – Pro
dengan baud rate 115200bps
Data Data Data
Jarak Yang Yang yang
No. Baudrate (m) Dikirim Diterima loses %loses
1 115200 3 1000 1000 0 0
2 115200 6 1000 995 5 0.5
3 115200 9 1000 1000 0 0
4 115200 12 1000 1000 0 0
5 115200 15 1000 1000 0 0
6 115200 18 1000 1000 0 0
7 115200 21 1000 998 2 0.2
8 115200 24 1000 997 3 0.3
9 115200 27 1000 997 3 0.3
10 115200 30 1000 997 3 0.3
Sehingga dari data – data table 4.3 hingga table 4.8 kita bisa
membuat grafik antara jarak terhadap data yang diterima, seperti
ditunjukkan pada gambar 4.7 hingga gambar 4.12.
Gambar 4.7. Grafik kualitas penerimaan data pada baud rate 9600
44
Gambar 4.8.Grafik kualitas penerimaan data pada baud rate 4800
Gambar 4.9. Grafik kualitas penerimaan data pada baud rate 19200
45
Gambar 4.10. Grafik kualitas penerimaan data pada baud rate 38400
Gambar 4.11. Grafik kualitas penerimaan data pada baud rate 57600
46
Gambar 4.12. Grafik kualitas penerimaan data pada baud rate 115200
47
NO CARRIER
//-------------------------------------------------------------------------------------
//Mengatur DNS (Domain Name Server)
AT+CDNSCFG="208.67.222.222","208.67.220.220"
OK
//-------------------------------------------------------------------------------------
//Mengatur APN (Access Point Name), User id dan Password
AT+CSTT="indosatgprs","Indosat",""
OK
//-------------------------------------------------------------------------------------
//Membuka koneksi nirkabel menggunakan GPRS
AT+CIICR
OK
//-------------------------------------------------------------------------------------
//Meminta IP local
AT+CIFSR
10.164.168.216
//-------------------------------------------------------------------------------------
//Menanyakan status koneksi
AT+CIPSTATUS
OK
STATE: IP STATUS
//-------------------------------------------------------------------------------------
//Memberitahu ke modem untuk menambahkan IP header untuk menerima data
AT+CIPHEAD=1
OK
//-------------------------------------------------------------------------------------
//Menunjukkan bahwa permintaannya berupa domain name
AT+CDNSORIP=1
OK
//-------------------------------------------------------------------------------------
//Konek ke server
AT+CIPSTART="tcp","student.eepis-its.edu","80"
OK
CONNECT OK
//-------------------------------------------------------------------------------------
//Kirim data ke server
AT+CIPSEND
> GET /~harun140688/monitorings.php?input=(@220/110/09-07-06%2009:00:00^)
HTTP/1.1
Host: student.eepis-its.edu
SEND OK
+IPD1460:HTTP/1.1 200 OK
Date: Tue, 07 Jul 2009 03:26:56 GMT
Server: Apache/2.2.3 (Debian) mod_jk/1.2.18 PHP/4.4.4-8+etch6 proxy_html/2.5
mod_ssl/2.2.3 OpenSSL/0.9.8c mod_chroot/0.5
X-Powered-By: PHP/4.4.4-8+etch6
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
48
Web pada ponsel
Pada bagian ponsel kita dapat mengakses data – data tersebut,
tampilan web pada ponsel seperti pada gambar 4.13.
49
Gambar 4.15 Tampilan output web pada telepon genggam
Analisa
Penggunaan sensor – sensor yang digunakan untuk membaca
parameter energi listrik cukup linier dengan perubahan yang terjadi pada
obyek yang disensor. Namun untuk sensor arus yang digunakan
memiliki kelemahan yang hanya dapat membaca arus yang besar, yaitu
diatas 1 A, bila untuk membaca arus dibawah 1 A, maka sinyalnya
terlalu kecil dan masih perlu di kuatkan, dan kemudian baru
disearahkan. Pada saat demo alat, hanya digunakan 1 buah node dan 1
buah gateway yang mana sensor node tersebut membaca sensor,
menyimpan data dan mengirimnya ke gateway secara nirkabel. Pada
sisi gateway menerima data tersebut dan mengirimnya ke database
server melalui koneksi GPRS.
50
BAB V
PENUTUP
5.1 KESIMPULAN
5.2 SARAN
51
DAFTAR PUSTAKA
52
Lampiran
Program Sensor Node
#include <mega128.h>
#include <delay.h>
#include <math.h>
#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7
#if RX_BUFFER_SIZE0<256
unsigned char rx_wr_index0,rx_rd_index0,rx_counter0;
#else
unsigned int rx_wr_index0,rx_rd_index0,rx_counter0;
#endif
#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART0 Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter0==0);
data=rx_buffer0[rx_rd_index0];
if (++rx_rd_index0 == RX_BUFFER_SIZE0) rx_rd_index0=0;
#asm("cli")
--rx_counter0;
#asm("sei")
return data;
}
#pragma used-
#endif
#if RX_BUFFER_SIZE1<256
unsigned char rx_wr_index1,rx_rd_index1,rx_counter1;
#else
unsigned int rx_wr_index1,rx_rd_index1,rx_counter1;
#endif
#define FIRST_ADC_INPUT 0
#define LAST_ADC_INPUT 7
unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
#define ADC_VREF_TYPE 0x60
// SPI functions
#include <spi.h>
TCNT1H=0xFC;
TCNT1L=0x00;
}
//_______________________________________________________________
//Xbee Pro
void atmy(unsigned char n);
void atdl(unsigned char n);
void resetxbee(void);
//SDcard
void SDwrite(unsigned long int sectoraddress);
void SDread(unsigned long int sectoraddress);
void SDFirstRead(void);
void SDFirstWrite1(void);
void SDFirstWrite2(void);
void parameter(void);
void tulis(char data);
void size(void);
void linefeed(void)
{
putchar(0x0D);
putchar(0x0A);
}
u=data/1000;
v=data-(u*1000);
w=v/100;
x=v-(w*100);
y=x/10;
z=x%10;
putchar1(u+48);
putchar1(w+48);
putchar1(y+48);
putchar1(z+48);
}
w=data/100;
x=data-(w*100);
y=x/10;
z=x%10;
tulis(w+48);
tulis(y+48);
tulis(z+48);
}
void tulis_bcd2(unsigned long int data)
{
unsigned long int y,z;
y=data/10;
z=data%10;
tulis(y+48);
tulis(z+48);
}
b=data/10;
buf2=data-(b*10);
c=(float)buf3/100;
d='.';
buf4=buf3-(c*100);
e=buf4/10;
f=buf4-(e*10);
putchar1(b+48);
putchar1(c+48);
putchar1(d);
putchar1(e+48);
putchar1(f+48);
}
void tulis_koma6(float data)
{
unsigned int a,b,c,d,e,f;
float buf1,buf2,buf3,buf4;
a=data/100;
buf1=data-(a*100
b=buf1/10;
buf2=buf1-(b*10);
buf3=buf2*100;
c=buf3/100;
d='.';
buf4=buf3-(c*100);
e=buf4/10;
f=buf4-(e*10);
tulis(a+48);
tulis(b+48);
tulis(c+48);
tulis(d);
tulis(e+48);
tulis(f+48);
clearbufsd()
{ unsigned int ulang;
for(i=xsdfirst;i<512;i++)
{
ee[i]='';
}
}
bacalast()
{ //unsigned int ind,bil[8],sizefile;
SDread(RootDir);
for(i=60;i<64;i++)
{
ind=i-60;
ind=ind+ind;
bil[ind]=ee[i]%16;
bil[ind+1]=ee[i]/16;
}
sizefile=bil[7]*268435456+bil[6]*16777216+bil[5]*1048576+bil[4]*65536+bil[3]*4096+
bil[2]*256+bil[1]*16+bil[0];
nsectorpoint=sizefile/512;
SectorPoint=sectorpointutama+nsectorpoint;
xsdfirst=sizefile%512;
//-----------------------------------------
//SDread(SectorPoint);
//clearbufsd();
}
void main(void)
{
unsigned char h,m,s,d,dd,mm,yy,sec;
unsigned int nilaiadc1,nilaiadc3,ulang,node,urut,start,bytedata,ulangsector;
float tegadc1,tegadc3,tegpln,arus,frek,radi,cosphie,tonf,tonc;
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x07;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
PORTE=0x08;
DDRE=0x00;
PORTF=0x00;
DDRF=0x00;
PORTG=0x00;
DDRG=0x00;
ASSR=0x00;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
EICRA=0x00;
EICRB=0x00;
EIMSK=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x04;
ETIMSK=0x00;
// USART0 initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART0 Receiver: On
// USART0 Transmitter: On
// USART0 Mode: Asynchronous
// USART0 Baud rate: 9600
UCSR0A=0x00;
UCSR0B=0x98;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x47;
// USART1 initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART1 Receiver: On
// USART1 Transmitter: On
// USART1 Mode: Asynchronous
// USART1 Baud rate: 9600
UCSR1A=0x00;
UCSR1B=0x98;
UCSR1C=0x06;
UBRR1H=0x00;
UBRR1L=0x47;
ACSR=0x80;
SFIOR=0x00;
i2c_init();
rtc_init(0,1,0);
rtc_set_time(23,20,00);
rtc_set_date(26,7,9);
// Global enable interrupts
#asm("sei")
//setting parameter xbee pro
start=0;
node='3';
atmy(node);
atdl('2');
SDFirstRead();
parameter();
sectorpointutama=SectorPoint;
lastsectorpoint=sectorpointutama;
xsdfirsttemp=0;
start=0;
putchar1('/');
kirim_bcd4(lastsectorpoint);
putchar1('/');
putchar1(13);
while (1)
{
for(urut=0;urut<=0;urut++)
{
//membaca data dan menyimpan disdcard
bacalast();
SDread(SectorPoint);
clearbufsd();
start=xsdfirst;
for (ulang=1;ulang<=1;ulang++)
{
tulis('@');
tulis(node);
tulis('/');
rtc_get_time(&h,&m,&s);
rtc_get_date(&dd,&mm,&yy);
//baca tegangan
nilaiadc1=adc_data[1];
//nilaiadc1=200;
//baca arus
//nilaiadc3=adc_data[3];
nilaiadc3=220;
//baca frekuensi
ton=0;
TCNT1H=0xFC;
TCNT1L=0x00;
while(!PINA.4);
while(PINA.4);
while(!PINA.4);
TCCR1B=0x01;
delay_us(20);
while(PINA.4);
while(!PINA.4);
TCCR1B=0x00;
//ton=200;
tonf=ton;
//baca cosphi
ton=0;
TCNT1H=0xFC;
TCNT1L=0x00;
n=5000;
lag=0;
for(i=0;i<=n;i++)
{
if (PINA.6==1)
{
lag=1;
n=i;
}
}
//putchar1('#');
//putchar1(lag+48);
//putchar1('#');
if(lag==1)
{
while(!PINA.6);
while(PINA.6);
while(!PINA.6);
TCCR1B=0x01;
delay_us(20);
while(PINA.6);
TCCR1B=0x00;
//putchar1('8');
}
else
{
ton=0;
//putchar1('9');
}
tonc=ton;
//menampilkan data sementara
kirim_bcd4(nilaiadc1);
putchar1('/');
kirim_bcd4(nilaiadc3);
putchar1('/');
kirim_bcd4(tonf);
putchar1('/');
kirim_bcd4(tonc);
putchar1('/');
//memproses data
//tegangan
tegadc1=(0.0206*nilaiadc1)-0.3822;
//tampil_koma6(tegadc1);
//putchar1('/');
tegpln=(1.2726*tegadc1)+214.78;
//tampil_koma6(tegpln);
//putchar1('/');
//arus
tegadc3=(0.0206*nilaiadc3)-0.3822;
//tampil_koma6(tegadc3);
//putchar1('/');
arus=(0.0127*tegadc3)+0.4423;
//tampil_koma6(arus);
//putchar1('/');
//frekuensi
frek=1/(tonf*0.0001);
//tampil_koma5(frek);
//putchar1('/');
//power factor
radi=(tonc*0.1/20)*6.282;
//tampil_koma5(radi);
//putchar1('/');
cosphie=cos(radi);
//tampil_koma5(cosphie);
//putchar1('/');
//putchar1(13);
//menyimpan di sdcard
tulis_koma6(tegpln);
tulis('/');
tulis_koma5(arus);
tulis('/');
tulis_koma5(frek);
tulis('/');
tulis_koma4(cosphie);
tulis('/');
tulis_bcd2(yy);
tulis('-');
tulis_bcd2(mm);
tulis('-');
tulis_bcd2(dd);
//tulis(' ');
tulis('%');
tulis('2');
tulis('0');
tulis_bcd2(h);
tulis(':');
tulis_bcd2(m);
tulis(':');
tulis_bcd2(s);
tulis('^');
//tulis(13);
//tulis(10);
delay_ms(10);
}
SDwrite(SectorPoint);
size();
//request ke node terdekat
delay_ms(5000);
right=0;
do
{
xtx=0;
clearbuffer();
right=0;
putsf("$n3#");
putchar1('$');
delay_ms(5000);
if (rx_buffer0[0]!='')
{
if (rx_buffer0[0]=='$')
{
delay_ms(1000);
for(i=0;i<5;i++)
{
if(rx_buffer0[i]==noderesp[i])
{
right++;
}
}
}
}
}while(right!=5);
//bacalast();
//sectorpointutama / sizefile / nsectorpoint / SectorPoint / xsdfirst
//putchar1('#');
for(ulangsector=lastsectorpoint;ulangsector<=SectorPoint;ulangsector++)
{
putchar1(13);
SDread(ulangsector);
putchar1('(');
putchar('(');
if(ulangsector == SectorPoint)
{
for(bytedata=start;bytedata<xsdfirst;bytedata++)
{
putchar1(ee[bytedata]);
putchar(ee[bytedata]);
delay_ms(100);
}
}
else
{
for(bytedata=start;bytedata<512;bytedata++)
{
putchar1(ee[bytedata]);
putchar(ee[bytedata]);
delay_ms(100);
}
}
putchar1(')');
putchar(')');
start=0;
}
lastsectorpoint=SectorPoint;
}
bacalast();
}
}
Program Gateway
#include <mega128.h>
#include <delay.h>
#include <math.h>
#asm
.equ __i2c_port=0x12 ;PORTD
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include <i2c.h>
#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7
#if RX_BUFFER_SIZE0<256
unsigned char rx_wr_index0,rx_rd_index0,rx_counter0;
#else
unsigned int rx_wr_index0,rx_rd_index0,rx_counter0;
#endif
#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART0 Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter0==0);
data=rx_buffer0[rx_rd_index0];
if (++rx_rd_index0 == RX_BUFFER_SIZE0) rx_rd_index0=0;
#asm("cli")
--rx_counter0;
#asm("sei")
return data;
}
#pragma used-
#endif
#define FIRST_ADC_INPUT 0
#define LAST_ADC_INPUT 7
unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
#define ADC_VREF_TYPE 0x60
#include <spi.h>
//_______________________________________________________
//Xbee Pro
void atmy(unsigned char n);
void atdl(unsigned char n);
void resetxbee(void);
//SDcard
//GPRS
void ate(void);
void at(void);
void cipdpdp(void);
void cgatt(void);
void cgdcont(void);
void atd(void);
void cdnscfg(void);
void cstt(void);
void ciicr(void);
void cifsr(void);
void cipstatus(void);
void ciphead(void);
void cdnsorip(void);
void cipstart(void);
void cipsend(void);
void get(void);
void host(void);
void cipshut(void);
void cipclose(void);
//_________________________________________________________
void gprs(void)
{
cipclose();
cipshut();
ate();
at();
cipdpdp();
cgatt();
cgdcont();
atd();
cdnscfg();
cstt();
ciicr();
cifsr();
cipstatus();
ciphead();
cdnsorip();
cipstart();
cipsend();
delay_ms(20000);
//cipshut();
}
void main(void)
{
unsigned char h,m,s,d,dd,mm,yy,sec;
unsigned int nilaiadc1,nilaiadc3,ulang,node,urut,start,bytedata,ulangsector,temp;
float tegadc1,tegadc3,tegpln,arus,frek,radi,cosphie,tonf,tonc;
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x07;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
PORTE=0x08;
DDRE=0x00;
PORTF=0x00;
DDRF=0x00;
PORTG=0x00;
DDRG=0x00;
ASSR=0x00;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
OCR1CH=0x00;
OCR1CL=0x00;
EICRA=0x00;
EICRB=0x00;
EIMSK=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x04;
ETIMSK=0x00;
// USART0 initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART0 Receiver: On
// USART0 Transmitter: On
// USART0 Mode: Asynchronous
// USART0 Baud rate: 9600
UCSR0A=0x00;
UCSR0B=0x98;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x47;
// USART1 initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART1 Receiver: On
// USART1 Transmitter: On
// USART1 Mode: Asynchronous
// USART1 Baud rate: 9600
UCSR1A=0x00;
UCSR1B=0x98;
UCSR1C=0x06;
UBRR1H=0x00;
UBRR1L=0x47;
ACSR=0x80;
SFIOR=0x00;
SPCR=0x53;
SPSR=0x01;
i2c_init();
rtc_init(0,1,0);
rtc_set_time(23,20,00);
rtc_set_date(26,7,9);
// Global enable interrupts
#asm("sei")
//setting parameter xbee pro
// putchar1('1');
start=0;
//urut=0;
node='1';
atmy(node);
atdl('2');
while (1)
{
right=0;
do
{
//xtx=0;
clearbuffer();
right=0;
//putsf("$n3#");
delay_ms(5000);
if (rx_buffer0[0]!='')
{
if (rx_buffer0[0]=='$')
{
delay_ms(1000);
for(i=0;i<5;i++)
{
if(rx_buffer0[i]==nodereq2[i])
{
right++;
}
}
}
}
}while(right!=4);
//========================================================
do
{
clearbuffer();
right=0;
putsf("$n21#");
delay_ms(5000);
if (rx_buffer0[0]!='')
{
if (rx_buffer0[0]=='(')
{ //xtx=1;
//putchar1('#');
temp=0;
ee[temp]=rx_buffer0[temp];
do
{
if(rx_buffer0[temp]!='')
{
ee[temp]=rx_buffer0[temp];
if (ee[temp]==')')
{
right=1;
}
temp++;
}
}while(right!=1);
}
}
} while(right!=1);
//putchar1('#');
atdl('4');
//temp=49;
total=temp;
gprs();
atdl('2');
putsf("$ok12");
while(1);
}
}
Program Web pada telepon gengam
index.wml
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.3//EN"
"http://www.wapforum.org/DTD/wml13.dtd" >
<wml>
<card id="halaman1" title=" .:: Welcome ::. " ontimer="#halaman2">
<timer value="10"/>
<p align="center">
<br/>
<b>Wireless Sensor Network </b> <br/>
Monitoring Electrical Parameters
<br/>
</p>
</card>
</p>
</card>
</wml>
show.php
<?php
header("Content-type: text/vnd.wap.wml");
echo("<?xml version=\"1.0\"?>");
echo("<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\"
\"http://www.wapforum.org/DTD/wml_1.1.xml\">");
?>
<wml>
<card title=".:: Monitoring ::." newcontext="true">
<p align="center">
<small>
<?php
switch ($in_node)
{
case 1:
$in_wilayah="Mulyosari";
break;
case 2:
$in_wilayah="Keputih";
break;
case 3:
$in_wilayah="Semolowaru";
break;
case 4:
$in_wilayah="Gebang";
break;
default:
$in_wilayah="Mulyosari";
}
while($row = mysql_fetch_array($result))
{
switch ($in_parameter)
{ case 1:
$tegangan = $row[$in_parameter];
if ($row[$in_parameter] > $standartv)
{
$over[$ov]=$row[$in_parameter];
$tglover[$ov]=$row[5];;
$ov++;
}
else if ($row[$in_parameter] < $standartv)
{
$under[$un]=$row[$in_parameter];
$tglunder[$un]=$row[5];;
$un++;
}
else
{
$normal[$nr]=$row[$in_parameter];
$tglnormal[$nr]=$row[5];;
$nr++;
}
$rata2t=$rata2t+$row[$in_parameter];
break;
case 2:
if($arusmax < $row[$in_parameter] )
{
$arusmax = $row[$in_parameter];
$tglarmax=$row[5];;
}
if($arusmin > $row[$in_parameter])
{
$arusmin = $row[$in_parameter];
$tglarmin=$row[5];;
}
$rata2a=$rata2a+$row[$in_parameter];
break;
case 3:
if ($row[$in_parameter] > 50)
{
$overf[$ovf]=$row[$in_parameter];
$tgloverf[$ovf]=$row[5];;
$ovf++;
}
else if ($row[$in_parameter] < 50)
{
$underf[$unf]=$row[$in_parameter];
$tglunderf[$unf]=$row[5];;
$unf++;
}
else
{
$normalf[$nrf]=$row[$in_parameter];
$tglnormalf[$nrf]=$row[5];;
$nrf++;
}
$rata2f=$rata2f+$row[$in_parameter];
break;
case 4:
if ($row[$in_parameter] > 1)
{
$overc[$ovc]=$row[$in_parameter];
$tgloverc[$ovc]=$row[5];;
$ovc++;
}
else if ($row[$in_parameter] < 1)
{
$underc[$unc]=$row[$in_parameter];
$tglunderc[$unc]=$row[5];;
$unc++;
}
else
{
$normalc[$nrc]=$row[$in_parameter];
$tglnormalc[$nrc]=$row[5];;
$nrc++;
}
$rata2c=$rata2c+$row[$in_parameter];
break;
default:
$rata2t=$rata2t+$row[1];
$rata2a=$rata2a+$row[2];
$rata2f=$rata2f+$row[3];
$rata2c=$rata2c+$row[4];
}
$i++;
}
$rata2t=$rata2t/$i;
$rata2a=$rata2a/$i;
$rata2f=$rata2f/$i;
$rata2c=$rata2c/$i;
switch ($in_parameter)
{ case 1:
echo "<b>This is voltage in $in_wilayah </b><br/><br/>";
if ($un >0)
{
echo "*************************<br/>";
echo "<b>Under Voltage:</b><br/>";
echo "*************************<br/>";
for($i=0;$i<$un;$i++)
{
echo "$under[$i] Volt<br/>";
echo "$tglunder[$i]<br/>";
echo "*************************<br/>";
}
}
if($nr>0)
{
echo "<b>Normal Voltage:</b><br/>";
echo "*************************<br/>";
//echo "$normal[0] Volt<br/>";
for($i=0;$i<$nr;$i++)
{
echo "$normal[$i] Volt<br/>";
echo "$tglnormal[$i]<br/>";
echo "*************************<br/>";
}
}
//echo "<big><b>Over Voltage:</b></big><br/>";
if($ov>0)
{
echo "<b>Over Voltage:</b><br/>";
echo "*************************<br/>";
for($i=0;$i<$ov;$i++)
{
echo "$over[$i] Volt<br/>";
echo "$tglover[$i]<br/>";
echo "*************************<br/>";
}
}
echo "<b>Average Voltage:</b><br/>";
echo "*************************<br/>";
echo "$rata2t Volt<br/>";
break;
case 2:
echo "<b>This is Current in $in_wilayah </b><br/><br/>";
echo "*************************<br/>";
echo "<b>Max Current:</b><br/>";
echo "*************************<br/>";
echo "$arusmax Ampere<br/>";
echo "*************************<br/>";
echo "<b>Min Current:</b><br/>";
echo "*************************<br/>";
echo "$arusmin Ampere<br/>";
echo "<b>Average Current:</b><br/>";
echo "*************************<br/>";
echo "$rata2a Ampere<br/>";
break;
case 3:
echo "<b>This is Frequency in $in_wilayah </b><br/><br/>";
if ($unf >0)
{
echo "*************************<br/>";
echo "<b>Under Frequency:</b><br/>";
echo "*************************<br/>";
//echo "$unf<br/>";
for($i=0;$i<$unf;$i++)
{
Program Web yang dihubungi modem gprs untuk menerima data dari
gateway
<html>
<body>
<?php
//@/node/tegangan/arus/frekuensi/bedaphase#
//(@1/220.00/10.00/50.00/0.90/2009-06-01%2007:55:00^)
$nilai = $_GET["input"];
$header = substr("$nilai", 0,1);
$tail = substr("$nilai", -1,1);
//$i = 0;
//$i = $i + 37;
echo $nilai;
echo $header;
echo $tail;
Riwayat Pendidikan :
SDI Wahid Hasyid Sidoarjo Tahun 1994 – 2000
MTs Negeri Sidoarjo Tahun 2000 – 2003
SMK Negeri 1 Sidorjo Tahun 2003 – 2006
Politeknik Elektronika Negeri Surabaya-ITS Tahun 2006 – 2009