Produk Inovatif

Catatan Ringan Programming, Interfacing dan Elektronik
  • About
  • Polling
  • Project
  • Info
  • Download
  • Beranda
  • Referensi
  • Shopping
  • Pustaka Kuliah
  • Datasheet

Latest Post

  • MODEL DAN STRATEGI PEMBELAJARAN ANAK ADHD( Attention Deficit Hyperactivity Disorder)
  • Estimasi Kecepatan Kendaraan Menggunakan YOLO (Speed Estimation using Ultralytics YOLO)
  • PASCA OPERASI DAN RADIASI KANKER OTAK MENYEBAR MEMENUHI SEBAGIAN BESAR OTAK SEBELAH KANANNYA, BERSIH MELEWATI 10 TAHUN DENGAN ECCT
  • Machine Learning: Membuat Prediksi Dengan Linear Regression
  • Belajar Python: Menuliskan Statement & Variabel

Latest Comments

  1. itankjs on Program Absensi Karyawan Dengan Visual Basic 6.0 dan BarcodeFebruary 28, 2014

    kalo pake finger print (mesin absen sidik jari ) bisa bos ?

  2. ridho on Membuat Empat Grafik Pada GUI Matlab – bagian 1February 26, 2014

    saya mau tanya , saya kesulitan untuk menaruh code yang sudah jadi di salah satu axis yang ada , semisal…

  3. rosmaiti on Source: Program Absensi Karyawan Dengan Visual Basic 6.0 dan BarcodeFebruary 17, 2014

    kapan dong mas diuploadnya?lagi butuh pencerahan banget ni mas.sy butuh bantuan mas ni.maf klo kedengaran sprt memaksa.makasih y mas. sy…

  4. roohmadi on Mengirim dan menerima SMS menggunakan HyperTerminal melalui Modem GSM SerialFebruary 15, 2014

    Sangat mungkin dilakukan. Dan secara sistem hanya membutuhkan sebuah mikrokontroller dan tambahan modem beserta interface dengan mikrokontroller. Ini kebutuhan selain…

  5. budi Ar-royyan wibowo on Membuat Grafik Data Logger ADC 8 Channel Dengan Visual Basic 6February 14, 2014

    source code mikrokontrolernya dong mas, sangat butuh ini sudah berminggu - minggu saya monitor koq belum di upload juga.....

  • MODEL DAN STRATEGI PEMBELAJARAN ANAK ADHD( Attention Deficit Hyperactivity Disorder)
  • Estimasi Kecepatan Kendaraan Menggunakan YOLO (Speed Estimation using Ultralytics YOLO)
  • PASCA OPERASI DAN RADIASI KANKER OTAK MENYEBAR MEMENUHI SEBAGIAN BESAR OTAK SEBELAH KANANNYA, BERSIH MELEWATI 10 TAHUN DENGAN ECCT
  • Machine Learning: Membuat Prediksi Dengan Linear Regression
  • Belajar Python: Menuliskan Statement & Variabel

Absensi Karyawan Arduino Arduino Uno ATMega8535 ATmel AVR Barcode Billing CPNS Database database tabungan elektronika employee Grafik GUI GUI matlab Image install Interfacing Matlab Melamar Kerja mikrokontroller Modem GSM Programming python serial port simulasi Sistem Penggajian SMS SMS Gateway software tabungan sourcecode source code tabungan Timer tutorial USB to Serial vb VB 6 VB 6.0 video visual basic Visual Basic 6 warsito Wavecom

  • Arduino (8)
  • Artikel Umum (10)
  • Berita (3)
  • Dokumentasi Produk (4)
  • Elektronik (4)
  • FPGA (2)
  • Google Maps (1)
  • Image Processing (1)
  • Interfacing (19)
  • Jualan (11)
  • Machine Learning (1)
  • Matlab (9)
  • Memori (7)
  • Mikrokontroller (6)
  • OS (Operating System Linux) (1)
  • Pengetahuan (2)
  • Posting Berikutnya (1)
  • Python (7)
  • Sistem Informasi (3)
  • Testing (3)
  • Tutorial Video (3)
  • Ultrasound (2)
  • Uncategorized (12)
  • VB .Net (2)
  • VB 6.0 (36)
  • Website (1)
  1. itankjs on Program Absensi Karyawan Dengan Visual Basic 6.0 dan BarcodeFebruary 28, 2014

    kalo pake finger print (mesin absen sidik jari ) bisa bos ?

  2. ridho on Membuat Empat Grafik Pada GUI Matlab – bagian 1February 26, 2014

    saya mau tanya , saya kesulitan untuk menaruh code yang sudah jadi di salah satu axis yang ada , semisal…

  3. rosmaiti on Source: Program Absensi Karyawan Dengan Visual Basic 6.0 dan BarcodeFebruary 17, 2014

    kapan dong mas diuploadnya?lagi butuh pencerahan banget ni mas.sy butuh bantuan mas ni.maf klo kedengaran sprt memaksa.makasih y mas. sy…

  4. roohmadi on Mengirim dan menerima SMS menggunakan HyperTerminal melalui Modem GSM SerialFebruary 15, 2014

    Sangat mungkin dilakukan. Dan secara sistem hanya membutuhkan sebuah mikrokontroller dan tambahan modem beserta interface dengan mikrokontroller. Ini kebutuhan selain…

  5. budi Ar-royyan wibowo on Membuat Grafik Data Logger ADC 8 Channel Dengan Visual Basic 6February 14, 2014

    source code mikrokontrolernya dong mas, sangat butuh ini sudah berminggu - minggu saya monitor koq belum di upload juga.....

Menampilkan Webcam Pada Visual Basic 6.0

Sep14
by rohmadi on September 14, 2012 at 9:11 PM
Posted In: VB 6.0

webcamWebcam merupakan salah satu fitur multimedia yang sangat mudah ditemui pada sebuah komputer khususnya sebuah laptop. Selain termasuk device bawaan dari sebuah laptop, webcam juga dapat dijual secara terpisah. Jika sebuah komputer dipasang sebuah webcam, maka sebuah komputer juga dapat menampilkan video dari webcam.

Sebagai salah satu device pendukung aplikasi web, biasanya webcam cenderung memiliki resolusi lebih rendah dibandingkan device camera yang tidak diperuntukkan untuk aplikasi web. Hal ini menjadi salah satu pertimbangan untuk mendapatkan layanan camera berbasis web yang tidak mengurangi kecepatan dan membutuhkan bandwidth yang besar.

Pada tulisan ini akan diberikan sebuah contoh program menggunakan Visual Basic 6 untuk menampilkan webcam pada program. Pertama kali untuk dapat menampilkan webcam pada VB, Anda harus menginstall software driver dari device webcam yang akan digunakan. Setelah proses installasi sukses, maka baru dapat digunakan untuk menampilkan webcam pada VB.

Anda dapat menggunakan template VB yang sudah kami sertakan disini.

tampilan form webcam

Langkah untuk membuat program Menampilkan Webcam pada VB adalah sebagai berikut, dengan menggunakan template di atas.

1. Mendeklarasikan variabel pada awal program

[sourcecode]

‘DEKLARASI WEBCAM
‘========================================================================
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal nID As Long) As Long

Private mCapHwnd As Long

Private Const HUBUNG As Long = 1034
Private Const PUTUS As Long = 1035
Private Const AMBIL_FRAME As Long = 1084
Private Const COPY As Long = 1054

[/sourcecode]

2. Membuat fungsi untuk menghubungkan VB dengan driver webcam

[sourcecode]
Sub Kamera_Mulai()
mCapHwnd = capCreateCaptureWindow("WebcamCapture", 0, 0, 0, 640, 480, Me.hwnd, 0)
DoEvents
SendMessage mCapHwnd, HUBUNG, 0, 0
End Sub
[/sourcecode]

3. Membuat fungsi untuk memutus koneksi VB dengan driver webcam

[sourcecode]
Sub Kamera_Berhenti()
DoEvents: SendMessage mCapHwnd, PUTUS, 0, 0</p>
End Sub

[/sourcecode]

4. Memulai menampilkan video webcam pada program

[sourcecode]
Private Sub Timer1_Timer()
SendMessage mCapHwnd, AMBIL_FRAME, 0, 0
SendMessage mCapHwnd, COPY, 0, 0
Picture1.Picture = Clipboard.GetData
Clipboard.Clear
End Sub
Private Sub btnMulai_Click()
Kamera_Mulai
Label3.Visible = False
End Sub
[/sourcecode]

5. Memutus video

[sourcecode]
Private Sub cmdStop_Click()
Kamera_Berhenti
Label3.Visible = True
End Sub
[/sourcecode]

6. Menutup Aplikasi

[sourcecode]
Private Sub cmdClose_Click()
Unload Me
End Sub
[/sourcecode]

untuk mendapatkan contoh lengkap silakan unduh disini.

Demikian semoga bermanfaat.

— Rohmadi —

└ Tags: device camera, laptop webcam, menampilkan webcam, VB 6, video, Video di VB, visual basic, Visual Basic 6, webcam
1,372 Comments

Interfacing Visual Basic 2008 Dengan Modem Wavecom

Sep13
by rohmadi on September 13, 2012 at 9:09 AM
Posted In: Interfacing, VB 6.0

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.

└ Tags: Interfacing, Modem, Modem GSM, serial modem, serialport, VB .NET, Visual Basic 2008, Wavecom
5 Comments

Power Supply Sederhana Dengan Regulator

Sep11
by rohmadi on September 11, 2012 at 10:51 AM
Posted In: Elektronik

schematic 12V(Gambar rangkaian +12V dan -12V)

 

untuk membuat power supply +12V/-12V dapat menggunakan sebuah trafo yang memiliki output CT (Center Tap) dan menggunakan sebuah diode bridge. Untuk mendapatkan output negatif, maka dua buah capasitor dihubungkan antara kutup + dan – antara yang satu dan yang lain menjadi output ground. Sehingga dari capasitor tersebut didapatkan 3 titik output positif (+), negatif (-) dan ground.

 

positive, negative, ground

(Gambar rangkaian untuk mendapatkan output positif, negatif dan ground)

 

untuk mendapatkan output +5V dapat digunakan rangkaian seperti berikut:

schematic 5V

(Gambar rangkaian +5V)

untuk hasil lay out yang akan dibuat adalah sebagai berikut:

 

lay out powe supply

(Gambar lay out)

Demikian semoga bermanfaat.

└ Tags: +12/-12V, +5V, Power Supply, Regulated, Regulator, Sederhana
 Comment 

Membaca Suhu DS1820 dengan ATMega16

Aug16
by rohmadi on August 16, 2012 at 7:00 AM
Posted In: Interfacing

DS1ds1820820 adalah sensor suhu yang dikeluarkan oleh Dallas Semiconductor. Untuk membacanya menggunakan protokol 1 wire communication. Dimana hanya ada tiga kabel yang terdiri dari +5V, GND dan DQ (Data Input/Output). Datasheet DS1820 dapat diunduh DS18S20.

Keunggulan dari DS1820 adalah, output berupa data digital dengan nilai ketelitian 0,5 derajat Celcius sehingga mempermudah pembacaan oleh mikrokontroller.

Pada tulisan ini akan digunakan compiler CodeVision untuk membuat programnya. Pada CodeVision sudah tersedia fasilitas wizard untuk mempermudah pengguna dalam membuat program. Termasuk salah satunya adalah device DS1820. Sehingga kita tidak perlu susah payah membuat coding untuk membaca DS1820.

Rangkaian yang digunakan adalah berikut:

schematic

Penjelasan:

[sourcecode]

// DS1820 Temperature Sensor functions
#include <ds1820.h>
#include <stdio.h>
#include <math.h>

[/sourcecode]

fungsi untuk mendeklarasikan library yang akan digunakan.

[sourcecode]

// maximum number of DS1820 devices
// connected to the 1 Wire bus
#define MAX_DS1820 8
// number of DS1820 devices
// connected to the 1 Wire bus
unsigned char ds1820_devices;
// DS1820 devices ROM code storage area,
// 9 bytes are used for each device
// (see the w1_search function description in the help)
unsigned char ds1820_rom_codes[MAX_DS1820][9];
char lcd_buffer1[33],lcd_buffer2[33];
unsigned char rom_codes[8][9];
unsigned char temp, Suhu;

[/sourcecode]

fungsi coding di atas adalah mendeklarasikan variabel yang akan digunakan.

[sourcecode]

ds1820_devices=w1_search(0xf0,ds1820_rom_codes);

[/sourcecode]

baris dia tas berfungsi untuk mendeteksi jumlah device DS1820 yang terhubung.

[sourcecode]

sprintf (lcd_buffer1,"%-u DEVICE(S) DETECTED",ds1820_devices);
lcd_clear();
lcd_gotoxy(0,0);lcd_puts(lcd_buffer1);
delay_ms(1500);

[/sourcecode]

fungsi di atas untuk menampilkan jumlah device yang dideteksi.

[sourcecode]
for (i=0;i<ds1820_devices;)
{        temp=ds1820_temperature_10(&rom_codes[i][0]);
sprintf (lcd_buffer1,"t%-u=%-i.%-u\xf8C\n\r",++i,temp/10,abs(temp%10));
};
sprintf (lcd_buffer2,"Status: Low");

lcd_clear();
lcd_gotoxy(0,0);lcd_puts(lcd_buffer1);
lcd_gotoxy(0,1);lcd_puts(lcd_buffer2);
delay_ms(500);

[/sourcecode]

fungsi: untuk membaca sensor DS1820 dan menampilkan hasil pada LCD 16×2

Untuk source code unduh disini.

Demikian semoga bermanfaat.

└ Tags: 1 Wire bus, ATMega16, AVR, DS1820, Sensor suhu
5,003 Comments

Simulasi Rangkaian Elektronik Dengan Altium

Aug15
by rohmadi on August 15, 2012 at 7:00 AM
Posted In: Elektronik

altiumlogoSebelum membuat sebuah rangkaian elektronik, harus dilakukan sebuah simulasi dengan software untuk mendapatkan nilai yang optimal dari perhitungan/desain yang telah dilakukan sebelumnya. Sebuah simulasi rangkaian merupakan tahap yang dapat menghemat waktu dan biaya dalam sebuah project elektronik. Karena dengan melakukan simulasi terlebih dahulu, kita bisa mendapatkan nilai yang dibutuhkan tanpa mengeluarkan biaya untuk membeli komponen yang dibutuhkan. Salah satu simulator rangkaian elektronik yang dapat digunakan adalah Altium Desainer. Altium menyediakan library komponen dari berbagai vendor, sehingga akan mempermudah pekerjaan.

Dari hukum Ohm, kita bisa mendapat nilai tegangan yang berbeda dengan menentukan nilai resistansi.

Untuk mensimulasikan sebuah rangkaian pembagi tegangan, ikuti tutorial berikut ini:

1. Buka program Altium Desainer, disini digunakan Altium Desainer Release 10

tampilan altium awal

2. Tempatkan symbol Voltage Source melalui icon berikut

input voltage source

3. Berikutnya tambahkan VCC dan GND menjadi rangkaian power supply berikut

power supply

4. Double click pada simbol Voltage Source, akan muncul dialog box berikut

setting voltage valueMasukkan nilai tegangan 48 V pada baris Value.

5. Masukkan komponen resistor R1 dan R2 dengan masing-masing nilai 1K dan 4K, selanjutnya pada masing-masing ujung resistor ditambahkan VCC dan GND, bagian lain dihubungkan antar resistor.

rangkaian awal

6. Tambahkan Net dengan label VO sebagai titik ukur tegangan antara R1 dan R2

adding Net

7. Pilih menu Design –> Simulate –> Mixed Sim

simulate

8. Pilih signal VO sebagai active signal yang akan dilihat nilainya. Disini kita akan melihat hasil pembagian tegangan antara R1 dan R2.

measure Voltage output

9. Hasil simulasi secara grafik ditunjukkkan sebagai berikut

result voltage

dari grafik didapatkan nilai tegangan sebesar 38,4 Volt. Jika dibandingkan dengan hasil perhitungan menggunakan hukum Ohm, maka:

VR2 = R2/(R1+R2) * V

VR2 = 4/(1+4) * 48

VR2 = 38,4 Volt

dari sini kita bisa melihat bahwa nilai antara perhitungan hukum Ohm dan hasil simulasi menunjukkan kesamaan.

10. Untuk melihat besar arus yang melewati R1 dan R2, maka pilih R1[i] dan R2[i] sebagai active signal.

current measurement

11. Hasil yang didapatkan dari grafik adalah R1[i]= 9,6 mA dan R2[i]=9,6 mA

Jika dihitung menggunakan hukum Ohm:

I = V/(R1+R2)

   = 48/(1000+4000)

   = 9,6 mA

didapatkan nilai yang sama antara perhitungan dan simulasi.

Untuk mencoba dari rangkaian di atas klik disini.

Demikian Semoga bermanfaat.

└ Tags: Altium, rangkaian elektronik, simulasi
 Comment 
  • Page 17 of 28
  • « First
  • «
  • 15
  • 16
  • 17
  • 18
  • 19
  • »
  • Last »

Tags

Absensi Karyawan Arduino Arduino Uno ATMega8535 ATmel AVR Barcode Billing CPNS Database database tabungan elektronika employee Grafik GUI GUI matlab Image install Interfacing Matlab Melamar Kerja mikrokontroller Modem GSM Programming python serial port simulasi Sistem Penggajian SMS SMS Gateway software tabungan sourcecode source code tabungan Timer tutorial USB to Serial vb VB 6 VB 6.0 video visual basic Visual Basic 6 warsito Wavecom

Categories

  • Arduino (8)
  • Artikel Umum (10)
  • Berita (3)
  • Dokumentasi Produk (4)
  • Elektronik (4)
  • FPGA (2)
  • Google Maps (1)
  • Image Processing (1)
  • Interfacing (19)
  • Jualan (11)
  • Machine Learning (1)
  • Matlab (9)
  • Memori (7)
  • Mikrokontroller (6)
  • OS (Operating System Linux) (1)
  • Pengetahuan (2)
  • Posting Berikutnya (1)
  • Python (7)
  • Sistem Informasi (3)
  • Testing (3)
  • Tutorial Video (3)
  • Ultrasound (2)
  • Uncategorized (12)
  • VB .Net (2)
  • VB 6.0 (36)
  • Website (1)
Home » Page 17

©2008-2026 Produk Inovatif | Powered by WordPress with Easel | Subscribe: RSS | Back to Top ↑