Posts tagged ‘Interfacing’

Membaca RTC DS1307 Dengan AVR


Pada tulisan ini akan diberikan contoh bagaimana membaca modul I2C RTC DS1307 dengan menggunakan modul AVR dan menampilkannya pada sebuah LCD 16×2. Semua produk dapat dibeli pada online shop Produk-Inovatif. Peralatan yang dibutuhkan adalah:

  1. Modul LCD 16×2

di-lcd16x2

  1. Modul AVR

OLYMPUS DIGITAL CAMERA

  1. Downloader

  1. Modul I2C RTC DS1307

rtc module

Selanjutnya, mari kita rangkai masing-masing modul seperti berikut:

Pertama, hubungkan modul LCD 16×2 dengan PORTA pada modul AVR, seperti gambar berikut:

LCD con 2LCD con

Kedua, hubungkan header AVR ISP USBasp pada konekto ISP PORT pada modul AVR, seperti gambar berikut:

ISP 3ISP

Ketiga, hubungkan konektor USB AVR ISP USBasp ke USB Laptop/PC, seperti gambar berikut:

USB ISP

Keempat, pasang modul RTC I2C DS1307 seperti gambar berikut:

Dengan catatan pin koneksi ada:

AVR  –> RTC

VCC  –> VCC

GND –> GND

PORTD.0 –> SDA

PORTD.1 –> SCL

rtc 3rtc 2

rtc 1rtc 4

 

Setelah semua siap, buatlah sebuah program dengan menggunakan Code Vision.

  1. Buat sebuah project

new

  1. Klik YES

YES

  1. Pilih ATmega, klik OK

ATmega

  1. Pilih Chip ATmega32A dan clock 11,059200 MHz, atau sesuai dengan yang ada pada modul AVR Anda.

Chip

  1. Pilih Alphanumeric LCD, dan atur sesuai setting berikut

LCD

  1. Samakan setting RTC seperti berikut:

RTC

  1. Simpan project dengan nama RTC

  2. Isikan code berikut:

a. Tambahkan delay

delay

b.Tambahkan deklarasi variabel berikut

declare

c. Tambahkan tulisan pembuka

pembuka

d. Tambahkan perintah membaca RTC

get time

e. Tambahkan perintah menampilkan waktu ke LCD

view

  1. Compile program yang telah dibuat, dengan CTRL+F9

  2. Selanjutnya, download ke mikrokontroller dan lihat hasilnya.

pembuka

jam

Demikian, semogar bermanfaat.

Mengatur Setting Port Serial Pada Visual Basic


Untuk menjawab beberapa pertanyaan yang sudah saya terima, disini saya akan mencoba menjelaskan langkah-langkah untuk mengatur setting antara hardware dan software.

Peralatan yang disiapkan=

a. Device USB to Serial dan driver

b. Visuak basic

Setelah siap, makal langkah berikutnya adalah:

1. Memastikan bahwa USB to Serial terpasang dan terdeteksi oleh komputer/laptop

untuk memastikan ini, maka Anda harus memasang driver sesuai dengan chip yang digunakan dengan benar. Selanjutnya untuk mengetahui apakah device sudah terpasang dengan benar dan dikenali oleh komputer/laptop, cek dengan langkah membuka pada Windows (disini dicontohkan pada Windows XP).

device manager awal

Start –> My Computer –> (klik kanan), pilih Manage –> Pilih Device Manager, selanjutnya jika device sudah dikenali maka akan muncul tampilan berikut:

deteksi serial port

2.Pada visual basic, kita tambahkan komponen serial dengan menekan Ctrl + T, kemudian pilih Microsoft Comm Control 6.0, klik Apply kemudian Close.

tambah komponen serial pada VB

3. Berikutnya akan muncul icon seperti berikut pada group komponen di sebelah kiri

komponen serial VB

4. Drag icon MSComm ke bagian desain form.

drag komponen serial vb

5. Cek nomer port serial yang terdeteksi pada hardware berikut

port number hardware

6. Isikan nomer serial pada CommPort Properties, sama dengan nomer port serial yang terdeteksi pada hardware, isikan angka 9 seperti port hardware

setting CommPort

7. Kemudian atur nilai Settings yang menunjukkan Baudrate, parity, panjang bit data dan stop/start bit

Setting VB

Demikian, sehingga setting port serial pada VB dapat dilakukan dan siap digunakan untuk komunikasi serial dengan perangkat lain.

Demian semoga bermanfaat.

Interfacing Visual Basic 2008 Dengan Modem Wavecom


modem GSM Wavecom Dengan menggunakan perangkat modem GSM Wavecom kita bisa membuat sebuah sistem SMS gateway. SMS gateway dapat digunakan untuk berbagai keperluan, misalnya sistem informasi akademik, sistem informasi pooling, dan sistem informasi lainnya. Selain sistem informasi, SMS gateway juga dapat digunakan untuk media telemetri, atau pengukuran jarak jauh dimana media  SMS sebagai penghubung komunikasi datanya.

Salah satu alternatif yang dapat digunakan adalah modem GSM serial yang saat ini dapat dibeli dengan harga yang terjangkau. Selain itu, kita cukup menyediakan sebuah PC untuk membuat sistem. Pada tulisan ini akan dijelaskan salah satu cara interfacing antara modem serial GSM dengan Visual Basic 2008.

Membuat Interface

1. Membuat desain form interface dengan Visual Basic 2008 seperti berikut

Kita masukkan beberapa item dari toolbox, diantaranya:

– PictureBox1 dan PictureBox2

– Label

– ComboBox

– Button1 dan Button2

– TextBox1, TextBox2, dan TextBox3

desain form interface

2. Masukkan komponen SerialPort1, seperti gambar berikut

menambahkan toolbox serial

Setelah selesai, hasil akhir dari desain Form Interface Modem adalah seperti berikut:

Hasil tampilan akhir

Penjelasan:

Dim WithEvents serialPort As New IO.Ports.SerialPort

perintah diatas berfungsi untuk mendeklarasikan variabel serialPort sebagai sebuah komponen SerialPort.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim a As Integer

‘cek available serial port pada komputer

‘termasuk serial modem

For i As Integer = 0 To _

My.Computer.Ports.SerialPortNames.Count – 1

‘tambahkan ke dalam list combo serial port

cbbCOMPorts.Items.Add( _

My.Computer.Ports.SerialPortNames(i))

a = i

Next

cbbCOMPorts.Text = cbbCOMPorts.Items(a)

End Sub

Coding di atas berfungsi untuk mendapatkan list serial port yang ada pada komputer. Sehingga secara otomatis akan diketahui port serial dan nomernya pada daftar ComboBox.

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Try

SerialPort1.PortName = cbbCOMPorts.Text

If SerialPort1.IsOpen = True Then

SerialPort1.Close()

End If

If SerialPort1.IsOpen = False Then

With SerialPort1

.Open()

.Handshake = IO.Ports.Handshake.RequestToSend

‘.RtsEnable = True

‘.DtrEnable = True

End With

End If

Fungsi coding di atas untuk mengatur properti serial port yang dipilih dan membuka koneksi untuk siap digunakan.

Dim Enter1, Enter2, Enter3 As Integer

Dim Echo, Echo1, Echo2, Echo3 As String

Dua baris berfungsi untuk deklarasi variabel yang akan digunakan berikutnya.

‘mengambil kode produk

SerialPort1.WriteLine(“AT+CGMI” & vbCrLf)

Threading.Thread.Sleep(500)

Echo = SerialPort1.ReadExisting

Enter1 = Strings.InStr(Echo, vbCrLf)

Echo1 = Strings.Right(Echo, Len(Echo) – Enter1)

Enter2 = Strings.InStr(Echo1, vbCrLf)

Echo2 = Strings.Right(Echo1, Len(Echo1) – Enter2 – 1)

Enter3 = Strings.InStr(Echo2, vbCrLf)

Echo3 = Strings.Left(Echo2, Enter3 – 1)

txtKodeProduksi.Text = Echo3

Karena setiap device/produk modem GSM memiliki tipe dan kode yang berbeda, maka kita bisa mengetahui kode produk dari device dengan menggunakan AT Command “AT+CGMI”. Setelah mendapatkan command di atas, modem akan memberikan kode yang menunjukkan kode produk yang selanjutnya ditampilkan pada TextBox txtKodeProduksi.

‘mengambil model produk

SerialPort1.WriteLine(“AT+CGMM” & vbCrLf)

Threading.Thread.Sleep(500)

Echo = SerialPort1.ReadExisting

Enter1 = Strings.InStr(Echo, vbCrLf)

Echo1 = Strings.Right(Echo, Len(Echo) – Enter1)

Enter2 = Strings.InStr(Echo1, vbCrLf)

Echo2 = Strings.Right(Echo1, Len(Echo1) – Enter2 – 1)

Enter3 = Strings.InStr(Echo2, vbCrLf)

Echo3 = Strings.Left(Echo2, Enter3 – 1)

txtModel.Text = Echo3

Kita juga bisa mengetahui model produk dari device yang digunakan dengan perintah “AT+CGMM”. Pada coding di atas, hasilnya akan ditampilkan pada TextBox txtModel.

‘mengambil nomer IMEI

SerialPort1.WriteLine(“AT+CGSN” & vbCrLf)

Threading.Thread.Sleep(500)

Echo = SerialPort1.ReadExisting

Enter1 = Strings.InStr(Echo, vbCrLf)

Echo1 = Strings.Right(Echo, Len(Echo) – Enter1)

Enter2 = Strings.InStr(Echo1, vbCrLf)

Echo2 = Strings.Right(Echo1, Len(Echo1) – Enter2 – 1)

Enter3 = Strings.InStr(Echo2, vbCrLf)

Echo3 = Strings.Left(Echo2, Enter3 – 1)

txtIMEI.Text = Echo3

Setiap modem/perangkat komunikasi memiliki nomer unik yang berbeda dari yang lain, yang disebut IMEI. Kita bisa mengetahui nomer IMEI dengan command “AT+CGSN”. Hasilnya ditampilkan pada TextBox txtIMEI.

‘menutup koneksi port

SerialPort1.Close()

Fungsi di atas untuk menutup koneksi port serial sehingga dapat digunakan kembali untuk proses yang lain.

Catch

MsgBox(“Gagal terhubung ke ‘ ” + cbbCOMPorts.Text + ” ‘. Mungkin port sedang digunakan.”, MsgBoxStyle.Exclamation, “Koneksi”)

End Try

End Sub

 

Demikian semoga bermanfaat.

Interfacing LCD Omnima NXP LPC21xx Solomon SSD192x


LCD Omnima jenis ini bisa untuk menampilkan tulisan dan bisa menampilkan grafik. Karakter ataupun grafik yang ditampilkan dapat merupakan komposisi warna dari RGB. Sehingga dapat menampilkan warna sejumlah 256 macam warna. Resolusi screen yang dimiliki adalah 320×240 piksel.

LCD ini dapat diakses melalui interface Serial, I2C, GPIO. Untuk melakukan perintah yang diinginkan disediakan library, ada yang menyediakan juga library open source sehingga bisa digunakan pada OS Open Source.

Gambar dari sebuah memori file juga dapat ditampilkan dengan perintah-perintah tertentu. Selain itu, juga bisa digunakan sebagai display mini PC.

Pada kesempatan ini, saya mencoba menggunakan interface protokol serial, baik melalui hyperterminal maupun melalui mikrokontroller. Dan kedua-duanya menampilkan hasil yang tidak berbeda. Pada bagian akhir, saya lampiran contoh code dengan Code Vision AVR untuk menampilkan beberapa kalimat pada LCD omnima. Berikut adalah hasil dari interfacing dengan LCD Omnima.

Foto-Foto

 

Video

 

Source

 

Source Code ATMega8535

Command Omnima, digunakan dengan hyperterminal.

Datasheet Omnima-QVGA-LCDoverview

5903

Interfacing GPS Garmin 60C Dengan ATMega162 (2)


Pada tulisan pertama, telah dijelaskan tentang GPS beserta data-data yang dapat diambil untuk dijadikan sebagai sumber informasi. Diantara data yang digunakan adalah data $GPGGA – Global Positioning System Fix Data. Pada blok data yang diawali dengan $GPGGA, kita bisa mengetahui waktu, latitude, longitude, altitude, dan yang lainnya. Pada tulisan ini, kita akan mencoba untuk membaca blok data yang diawali dengan identifier $GPGGA.

Pada GPS Garmin seri 60C, data dikirim dalam format NMEA dalam satu paket data. Pada tiap paket data yang dikirimkan, terdapat blok-blok data yang diawali dengan identifier. Sehingga kita bisa memilih kategori data yang akan diambil dengan mengabaikan blok data yang lainnya. Dalam satu blok data yang diawali dengan identifier yang sudah ditentukan formatnya, memberikan informasi yang terdiri dari beberapa bagian informasi. Misalnya, blok data yang diawali dengan identifier $GPZDA, memberikan data UTC, day, month, year, dan local time zone.

Data yang dikirimkan oleh GPS Garmin 60C, dikirim melalui format serial pada kecepatan 4200 dan terdapat jeda untuk tiap paket data yang dikirimkan. Karena data yang dikirimkan adalah berupa data serial, maka kita akan mengambil data yang diberikan dengan menggunakan port serial. Komunikasi yang digunakan adalah komunikasi satu arah dari GPS ke mikrokontroller.

Karena menggunakan komunikasi satu arah, maka pada mikrokontroller harus disetting sebagai Rx Interrupt. Yaitu, mikrokontroller diatur untuk melayani setiap data yang diterima setiap saat. Ini harus dilakukan, karena data yang diterima tanpa didahului oleh proses handshake. Untuk selanjutnya, mikrokontroller harus mampu menyimpan data yang diterima pada sebuah variable buffer. Jadi, data yang diterima disimpan pada variable buffer, kemudian baru difilter berdasarkan identifier yang diinginkan.

Untuk membaca blok data $GPGGA,061648,0619.9585,S,10639.9713,E,1,09,0.8,70.0,M,1.5,M,,*5E

Pada blok data di atas, terdapat blok data berikut:

  • Sentence Identifier : $GPGGA
  • Time : 061648
  • Latitude : 0619.9585
  • Longitude : 10639.9713
  • Fix Quality : 1
  • Number of Satellites : 09
  • Horizontal Dilution of Precision (HDOP)  : 0.8
  • Altitude : 70 M
  • Height of geoid above WGS84 ellipsoid  : 1.5 M
  • Time since last DGPS update : blank
  • DGPS reference station id : blank
  • Checksum : 5E

Maka dipembacaan data dilakukan dengan algoritma pembacaan data GPS digambarkan di bawah ini:

    1. Baca data serial yang diterima, kemudian simpan pada variable buffer.
    2. Stop pembacaan data serial, jika ditemukan 0x0D atau CR (Carriage Return)
    3. Cek, apakah karakter pertama adalah ‘$’: jika betul maka lanjutkan filtering; jika tidak, maka abaikan
    4. Cek, apakah karakter pertama sampai karakter ketujuh sama dengan “$GPGGA,” jika betul, lanjutkan filtering; jika tidak, maka abaikan
    5. Cek mulai karakter 15 sampai karakter terakhir: jika ditemukan karakter ‘S’ atau ‘N’, maka catat panjang data Lintang, kemudian lanjutkan filter; jika belum ditemukan, lanjutkan para karakter selanjutnya
    6. Cek mulai posisi setelah ditemukan karakter ‘S’ atau ‘N’ sampai karakter terakhir: Jika ditemukan karakter ‘E’ atau ‘W’, maka catat panjang data Bujur; Jika belum ditemukan, lanjutkan para karakter selanjutnya
    7. Copy data Lintang dari karakter 15 sampai posisi ditemukan karakter ‘S’ atau ‘N’
    8. Copy data Lintang dari karakter ditemukan posisi karakter ‘S’ atau ‘N’ sampai posisi ditemukan karakter ‘E’ atau ‘W’.

Demikian sedikit penjelasan salah satu cara membaca data dari GPS Garmin seri 60C. Semoga bermanfaat. Untuk pembuatan program pada mikrokontroller, insya Alloh akan dibahas pada tulisan selanjutnya

Interfacing GPS Garmin 60C Dengan ATMega162 (1)


Pada tulisan kali ini saya akan mencoba menuliskan hasil interfacing antara GPS Garmin 60C dengan AVR ATMega162. Interfacing yang saya maksud pada kesempatan ini adalah bagaimana membaca data output GPS Garmin 60C yang berupa protokol NMEA.

GPS merupakan suati device navigation  yang dapat digunakan untuk mengetahui posisi seseorang pada suatu tempat. GPS memberikan data diantaranya adalah: Global Positioning System, Geographic position (latitude/longitude), dan lain sebagainya.  Data output GPS Garmin mengikuti protokol NMEA yaitu suatu protokol komunikasi pada peralatan elektronik untuk aplikasi pada kapal laut.

Sedangkan untuk melakukan interfacing antara GPS Garmin 60C dengan ATMega162, kita perlu mengetahui data output dan koneksi antara GPS dan mikrokontroller.

Data Output

GPS Garmin 60 secara periodik akan mengirimkan data streaming melalui port serial atau koneksi USB tergantung setting yang dipilih. Contoh data yang dikeluarkan oleh GPS Garmin 60C dapat dilihat disini Data Output GPS.

Dari data output GPS di atas kita akan mengambil data $GPGGA – Global Positioning System Fix Data.

dari blok data ini, kita bisa mengambil data menjadi bagian berikut:

Global Positioning System Fix Data

Name Example Data Description
Sentence Identifier $GPGGA Global Positioning System Fix Data
Time 061646 06:16:46 Z
Latitude 0619.9586,S 06d 19.9586′ S
Longitude 10639.9710,E 106d 39.9710′ E
Fix Quality:
– 0 = Invalid
– 1 = GPS fix
– 2 = DGPS fix
1 Data is from a GPS fix
Number of Satellites 09 9 Satellites are in view
Horizontal Dilution of Precision (HDOP) 0.8 Relative accuracy of horizontal position
Altitude 70.2, M 70.2 meters above mean sea level
Height of geoid above WGS84 ellipsoid 1.5, M 1.5 meters
Time since last DGPS update blank No last update
DGPS reference station id blank No station id
Checksum *52 Used by program to check for transmission errors

Courtesy of Brian McClure, N8PQI.

Dari list data di atas, kita bisa mendapatkan data Lintang Selatan (S) dan Bujur Timur (E) 06d 19.9586′ S dan 106d 39.9710′ E .


Koneksi GPS – Mikrokontroller

Untuk membuat koneksi antara GPS Garmin 60C dan AVR ATMega162,  hubungkan Data Out dengan Pin Rx pada ATMega162 dengan terlebih dahulu melalui Max232 untuk menyesuaikan level tegangan. Kemudian hubungkan (-) Ground dengan Gnd pada ATMega162.

Pada tulisan kedua, akan dijelaskan cara membaca data output GPS Garmin 60C dengan ATMega162.

Interfacing GPS Garmin 60C Dengan ATMega162 (1)

%d blogger menyukai ini: