Anda di halaman 1dari 41

PETUNJUK PRAKTIKUM

KOMUNIKASI DIGITAL

Serial communication
Digital signal processing
Basic Internet of Thing

TIM KOMDIG

JURUSAN TEKNIK ELEKTROMEDIK


POLTEKKES KEMENKES SURABAYA
2018

1
DAFTAR ISI

Percobaan 1. Komunikasi Serial


Percobaan 2. Komunikasi Wireless
Percobaan 3. Dasar Pemrosesan Sinyal
Percobaan 4. Filter Digital dengan Finite Impulse Response
Percobaan 5. Filter Digital dengan Infinite Impulse Response
Percobaan 6. Pemrosesan Sinyal Biomedik

Percobaan 7. Filter Digital tertanam di Mikrokontroller


Percobaan 8. Pengantar ESP32 dan Percobaan LED/ SW
Percobaan 9. Antarmuka ESP32 dengan Sensor DHT11
Percobaan 10. ESP32 sebagai Webserver (menggunakan localhost)
Percobaan kendali LED/Servo
Percobaan 11. Koneksi ESP32 ke webserver online Thinkspeak/Ubidots
Percobaan monitoring data DHT11secara online
Percobaan 12. Koneksi ESP32 ke webserver online Thinkspeak/ Ubidots
Percobaan monitoring data Analog/Potensio online

Pertemuan 13. Student Project


Pertemuan 14. Student Project
Pertemuan 15. Ujian Final
Pertemuan 16. Ujian Perbaikan

2
PERCOBAAN 1. KOMUNIKASI SERIAL

1.1. Percobaan Komunikasi Serial dengan komputer


Percobaan ini adalah untuk berkomunikasi secara serial antara
mikrokontroller dan komputer. Pada percobaan ini LED dikendalikan melalui
karakter-karakter yang ada di keyboard komputer (misal: a, b, dan c) melalui
serial monitor
a. Setelah memprogram pada arduino, anda buka serial monitor TOOL,
dengan tahapan setting seperti yang ditunjukkan pada Gambar 1.1.
sampai dengan Gambar 1.3.

Gambar 1.1. Pemilihan serial monitor pada Arduino

Gambar 1.2. Pemilihan PORT serial (COM 2/3 dst).

Gambar 1.3. Tampilan serial monitor pada Arduino

3
Susun rangkaian elektronik yang menghubungkan antara mikrontroller dan
LED. Hubungkan masing-masing LED ke PIN 11, 12, dan 13 dari Arduino
seperti yang ditunjukkan pada Gambar 1.4. SESUAIKAN DENGAN ARDUINO
NANO.

Gambar 1.4. Koneksi rangkaian Arduino dan LED

Listing Program 1.1.


int lamp1 = 11;
int lamp2 = 12;
int lamp3 = 13;
int databaca;

void setup() {
pinMode(lamp1, OUTPUT);
pinMode(lamp2, OUTPUT);
pinMode(lamp3, OUTPUT);
Serial.begin(9600);
}

4
void loop()
{
if (Serial.available()>0)
{
int bacadata = Serial.read();
if (bacadata =='a') {databaca=1;}
if (bacadata =='b') {databaca=2;}
if (bacadata =='c') {databaca=3;}

if(databaca==1)
running: //LED akan berjalan pada mode running
{
digitalWrite(lamp1, HIGH);
delay(250);
digitalWrite(lamp1, LOW);
delay(250);
digitalWrite(lamp2, HIGH);
delay(250);
digitalWrite(lamp2, LOW);
delay(250);
digitalWrite(lamp3, HIGH);
delay(250);
digitalWrite(lamp3, LOW);
delay(250);
Serial.println("LED mode running");
loop();
goto running;
}

if(databaca==2)
flipflop: // LED akan berjalan pada mode flip flop
{
digitalWrite(lamp1, LOW);
digitalWrite(lamp2, LOW);
digitalWrite(lamp3, LOW);
delay(500);
digitalWrite(lamp1, HIGH);
digitalWrite(lamp2, HIGH);
digitalWrite(lamp3, HIGH);
delay(500);
Serial.println("LED mode flip flop");
loop();
goto flipflop;
}

if(databaca==3)
modeoff: // Semua LED akan off
{
digitalWrite(lamp1,LOW);

5
digitalWrite(lamp2,LOW);
digitalWrite(lamp3,LOW);
delay(1000);
Serial.println("LED mode off");
loop();
goto modeoff; }
}
}

Gambar 1.5. Tampilan serial monitor


1.2. Percobaan Komunikasi Serial dengan komputer
Pada percobaan ini data tegangan analog yang dihasilkan oleh sensor
Potensio dibaca oleh arduino nano melalui PIN ANALOG, selanjutnya data
hasil konversi dikirimkan ke monitor serial. Gunakan PIN A0 untuk masukan
tegangan analog. SESUAIKAN DENGAN ARDUINO NANO.

Gambar 1.6. Konfigurasi hubungan Pin A0 dengan potensio.

6
Listing Program 1.2. Display digital data 0000 to 1023
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
}

// the loop routine runs over and over again forever:


void loop() {
// read the input on analog pin 0:
int sensorValue = analogRead(A0);
// print out the value you read:
Serial.println(sensorValue);
delay(1); // delay in between reads for stability
}

Listing Program 1.3. Display voltage to Temperature


const int sensorPin = A0; // temperature sensor is connected to A0
int sensorVal = 0; // variable used to store the value coming from the
sensor
void setup()
{
Serial.begin(9600); // initialize the serial communication //
}

void loop() {
sensorVal = analogRead(sensorPin); // read the value from the sensor
float voltage = (sensorVal/1024.0) * 5.0; // convert the sensor reading to
voltage
float temperatureC = (voltage - .5) * 100; // convert the voltage to
temperature
float temperatureF = temperatureC * (9.0/5.0) + 32.0;
Serial.print("Sensor Value: "); // send the sensor value to the serial
Serial.print(sensorVal);
Serial.print(", Volts: ");
Serial.print(voltage);
Serial.print(", degrees C: ");
Serial.print(temperatureC);
Serial.print(", degrees F: ");
Serial.println(temperatureF);
delay(1000);
}

7
1.3. Percobaan komunikasi arduino to arduino
Pada percobaan ini anda akan berkomunikasi secara kabel menggunakan
komunikasi serial. Untuk melakukan percobaan ini anda harus
menggunakan dua buah board arduino, dapat menghubungkan arduino
anda dengan kelompok disebelah anda.
a. Hubungkan TX (Arduino 1) ke RX (Arduino 2) demikian pula sebaliknya,
hubungkan RX (Arduino 1) ke TX (Arduino 2), seperti yang ditunjukkan
pada Gambar 1.4. SESUAIKAN DENGAN ARDUINO NANO.

Gambar 1.7. Koneksi serial antar mikrokontroller

b. Ketik program sebagaimana yang ditunjukkan pada listing program


berikut.

Listing Program 1.4. Kirim teks “ Hello” pada mikrokontroller 1

char mystr[5] = "Hello"; //String data


void setup() {
// Begin the Serial at 9600 Baud
Serial.begin(9600);
}

void loop() {
Serial.write(mystr,5); //Write the serial data
delay(1000);
}

8
Listing Program 1.5. Menerima teks “ Hello” pada mikrokontroller 2

char mystr[10]; //Initialized variable to store recieved data


void setup() {
// Begin the Serial at 9600 Baud
Serial.begin(9600);
}

void loop() {
Serial.readBytes(mystr,5); //Read the serial data and store in var
Serial.println(mystr); //Print data on Serial Monitor
delay(1000);
}

1.4. Menghidupkan LED (MIKRO 2) melalui SW (MIKRO 1) secara Serial


Rencanakan program untuk menghidupkan LED yang terhubung pada PIN
13 (MIKRO2 ) dengan menggunakan SW (MIKRO1) PIN 2.

1.5. Kirim data tegangan (MIKRO 1) ke serial monitor (MIKRO 2)


Rencanakan program untuk mengukur tegangan analog dari sensor potensio
melalui MIKRO 1 dan dikirim via serial ke MIKRO 2, selanjutnya ditampilkan
ke serial monitor MIKRO2.

9
PERCOBAAN 2. KOMUNIKASI WIRELESS

2.1. Percobaan Kendali LED melalui mobile phone


Pada percobaan ini akan dibuat sebuah komunikasi wireless menggunakan
koneksi bluetooth, dengan menggunakan Arduino Nano dan Bluetooth HC05
atau HC06. Pada percobaan ini, sebuah LED (BUILTIN) yang terhubung ke
D13 pin Arduino akan dikendalikan (ON/ OFF) melalui komunikasi bluetooth
antara bluetooth mobile phone dan bluethooth HC05.
1. Lakukan instalasi bluetooth terminal (dari: electrotoolbox) melalui Google
Play Store. Sebelum menghubungkan Arduino dan bluetooth, perhatikan
pin-pin sebagaimana yang ditunjukkan pada Gambar 2.1.

(a) Arduino Nano (b) Bluetooth HC05

Gambar 2.1. (a) Arduino Nano dan (b) Bluetooth HC05

2. Pasang board Arduino nano dan bluetooth pada papan project board
(white board) dan hubungkan pin-pin yang digunakan menggunakan
kabel jumper, dengan hubungan antara arduino dan bluetooth module
ditunjukkan pada Table 2.1.

10
Table 2.1. Hubungan antara board Arduino dan Bluetooth module

Arduino Bluetooth Module


5V To Vcc
GND To GND
D10 To TX
D11 To RX

3. Ketik program berikut dengan menggunakan IDE Arduino. Program ini


bertujuan untuk mendeteksi character ‘1’ untuk menghidupkan LED dan
character ‘2’ untuk mematikan LED. Karakter ‘1’ dan ‘2’ diketik melalui
aplikasi BLUETOOTH TERMINAL pada smart phone melalui PLAYSTORE.

#include <SoftwareSerial.h>
SoftwareSerial BT(10, 11);
// creates a "virtual" serial port/UART
// connect BT module TX to D10
// connect BT module RX to D11
// connect BT Vcc to 5V, GND to GND
void setup()
{
// set digital pin to control as an output
pinMode(13, OUTPUT);
// set the data rate for the SoftwareSerial port
BT.begin(9600);
// Send test message to other device
BT.println("Hello, This is from Arduino");
BT.println("Press 1=ON; 2=OFF");
}
char a; // stores incoming character from other device
void loop()
{
if (BT.available())
// if text arrived in from BT serial...
{
a=(BT.read());
if (a=='1')
{
digitalWrite(13, HIGH);
BT.println ("LED on");
}
if (a=='2')
{
digitalWrite(13, LOW);
BT.println("LED off");
}

11
if (a=='?')
{
BT.println("Send '1' to turn LED on");
BT.println("Send '2' to turn LED on");
}
// you can add more "if" statements with other characters
}
}

4. Jalankan program bluetooth terminal pada smart phone anda (a), pilih
pada menu Bluetooth devices untuk memilih device HC05 yang sudah
terkoneksi ke Arduino untuk proses PAIRING (b). Tekan tombol reset pada
Arduino NANO,untuk memulai komunikasi sehingga akan muncul
tampilan seperti yang ditunjukkan pada Gambar 2.2 (c).

(a) Menu terminal (b) Pilihan devices (c) Cara kendali led

Gambar 2.2. Aplikasi bluetooth terminal pada smartphone

5. Rencanakan program pada arduino tetapi terlebih dahulu ganti koneksi


pin TX RX bluetooth ke Arduino dengan pin Arduino yang lain. Misal
Tx=D8 dan Rx=D9 atau Tx=D6 dan TX=D7.
6. Lakukan modifikasi pada program arduino sehingga kendali LED
dilakukan dengan character yang lain, misal character 8=ON dan
character 7=OFF.

12
2.2. Komunikasi dua arah Arduino dan Smart Phone
Pada percobaan ini akan dibuat sebuah komunikasi dua arah antara Arduino
dan Smartphone melalui komunikasi serial bluetooth dengan masing-masing
menggunakan serial monitor (Arduino) dan bluetooth monitor (smartphone).
Masih menggunakan koneksi yang sama seperti percobaan sebelumnya.
1. Rencanakan program pada Arduino, sehingga dapat menerima dan
mengirim informasi dari dan ke smartphone demikian pula sebaliknya.
#include <SoftwareSerial.h>
SoftwareSerial BTserial(10, 11); // RX | TX
// Connect the HC-05 TX to Arduino pin 2 RX.
// Connect the HC-05 RX to Arduino pin 3 TX through a voltage divider.
//
char c = ' ';

void setup()
{
Serial.begin(9600);
Serial.println("Arduino is ready");

// HC-05 default serial speed for commincation mode is 9600


BTserial.begin(9600);
BTserial.println("Mobile is ready");
}

void loop()
{
// Keep reading from HC-05 and send to Arduino Serial Monitor
if (BTserial.available())
{
c = BTserial.read();
Serial.write(c);
}

// Keep reading from Arduino Serial Monitor and send to HC-05


if (Serial.available())
{
c = Serial.read();
BTserial.write(c);
}
}

2. Buka serial monitor pada program Arduino dan pastikan pilihan BOTH
NL & SCROOL dipilih, seperti yang ditunjukkan pada Gambar 2.3.

13
Gambar 2.3. Tampilan monitor serial

3. Buka bluetooth monitor pada smartphone dan lakukan pemilihan


devices HC05 sehingga terjadi koneksi.
4. Tekan tombol reset pada Arduino NANO dan tutup dan buka kembali
serial monitor pada IDE Arduino.
5. Lakukan pengujian dengan mengetik sebuah text pada serial monitor
(IDE Arduino) atau dari bluetooth monitor (pada smartphone).

2.3. Percobaan Kendali LED antar Arduino menggunakan sebuah saklar


Pada percobaan ini sebuah LED yang terhubung pada Arduino 1 (KELOMPOK
X) akan dikendalikan dengan menggunakan saklar yang terhubung pada
Arduino 2 (KELOMPOK Y). Agar dapat menghasilkan sebuah komunikasi
maka Arduino 1 harus disetting sebagai MASTER dan Arduino 2 disetting
sebagai SLAVE. Hubungkan koneksi antar Arduino dan bluetooth seperti
yang ditunjukkan pada Tabel 2.2. dan Tabel 2.3.

Table 2.2. Hubungan antara board Arduino 1 dan Bluetooth module

Arduino (SLAVE) Bluetooth Module


5V To Vcc
GND To GND
D10 To TX
D11 To RX
BUILTIN LED (D13)

14
Table 2.3. Hubungan antara board Arduino 2 dan Bluetooth module

Arduino (MASTER) Bluetooth Module


5V To Vcc
GND To GND
D10 To TX
D11 To RX
SW PUSH BUTTON to (D8)

(a) Arduino Nano (b) Bluetooth HC05

Gambar 2.4. (a) board arduino NANO (b) board bluetooth HC05

1. Bluetooth (BT) yang terhubung ke Arduino 1 akan dikonfigurasikan


sebagai MASTER. Sebuah saklar SW 1 dihubungkan pada PIN D8 pada
Arduino 1 untuk mengendalikan BUILTIN LED pada Arduino 2.
Lakukan konfigurasi pada bluetooth sebagai MASTER pada arduino 1
(KELOMPOK X). Untuk mengkonfigurasikan bluetooth sebagai
MASTER maka terlebih dahulu BUTTON SW pada modul bluetooth
ditekan, selanjutnya hubungkan USB ke PC untuk mendapatkan
power supply. Apabila LED pada BT berkedip setiap dua detik maka BT
memasuki mode AT COMMAND. Pastikan BOTH NL & CR dipilih pada
serial monitor Arduino.

15
Gambar 2.5. Perintah setting MASTER pada arduino 1.

2. Ketik listing program berikut untuk Arduino MASTER

#include <SoftwareSerial.h>
#define button 8
int buttonState = 0;
SoftwareSerial BT(10, 11);

void setup() {
pinMode(button, INPUT);
BT.begin(9600);
}

void loop() {
// Reading the button
buttonState = digitalRead(button);
if (buttonState == LOW) {
BT.println ("0");
delay(1000);
}
else {
BT.println ("1");
delay(1000);
}
}

16
Program tersebut diatas adalah untuk mendeteksi kondisi logika pada
yang masuk pada D8. Pada saat SW ditekan maka akan mengirim logika
0 dan pada saat SW dilepas akan mengirim logika 1.

3. Bluetooth (BT) yang terhubung ke Arduino 2 akan dikonfigurasikan


sebagai SLAVE. Sebuah BUILTIN LED (PIN 13) telah terhubung pada
Arduino 2. Lakukan konfigurasi pada bluetooth sebagai SLAVE pada
arduino 1 (KELOMPOK Y). Untuk mengkonfigurasikan bluetooth sebagai
SLAVE maka terlebih dahulu BUTTON SW pada modul bluetooth ditekan,
selanjutnya hubungkan USB ke PC untuk mendapatkan power supply.
Apabila LED pada BT berkedip setiap dua detik maka BT memasuki mode
AT COMMAND. Pastikan BOTH NL & CR dipilih pada serial monitor
Arduino. Ketik perintah AT command ke BT sebagai SLAVE pada serial
monitor dengan perintah sebagai berikut: AT+ROLE=0.

#include <SoftwareSerial.h>
SoftwareSerial Bluetooth(10, 11); // RX, TX
int LED = 13; // the on-board LED
int Data; // the data received

void setup() {
Bluetooth.begin(9600);
Serial.begin(9600);
Serial.println("Waiting for command...");
Bluetooth.println("Send 1 to turn on the LED. Send 0 to turn Off");
pinMode(LED,OUTPUT);
}

void loop() {
if (Bluetooth.available()){ //wait for data received
Data=Bluetooth.read();
if(Data=='1'){
digitalWrite(LED,1);
Serial.println("LED On!");
Bluetooth.println("LED On!");
}
else if(Data=='0'){
digitalWrite(LED,0);
Serial.println("LED Off!");
Bluetooth.println("LED On D13 Off ! ");
}

17
else{;}
}
delay(100);
}

Program tersebut diatas adalah digunakan untuk mendeteksi apakah BT


menerima character “1” atau “0”. Pada saat menerima character “1” maka
BUILTIN LED D13 akan dihidupkan demikian pula sebaliknya.

18
PERCOBAAN 3. DASAR DIGITAL SIGNAL PROCESSING

3.1. Percobaan Membangkitkan Isyarat Sinus


Plot gabungan tiga buah isyarat SINUS pada layar komputer dengan
menggunakan pemrograman MATLAB. Isyarat SINUS dengan frekuensi 20,
100, dan 1000 Hz dengan frekuensi sampling sebesar 4000 Hz. Pada
percobaan ini lakukan pengamatan dan pencatatan, apa yang akan terjadi
apabila frekuensi sampling diatur menjadi lebih kecil, misal dimulai dari
4000, 3500, 3000, 2500, 2000, 1500, dan 1000.

Fsampling = 4000; % Sampling frequency


T = 1/Fsampling; % Sampling period
L = 1500; % Length of signal
t = (0:L-1)*T; % Time vector
x = sin(2*pi*20*t)+sin(2*pi*100*t)+sin(2*pi*1000*t); % First row wave
figure;
plot(t,x);
title ('Original Signal');

Gambar 3.1 Tampilan sinyal sinus

a. Lakukan percobaan dengan mengganti frekuensi dan jumlah sinyal


yang dicampurkan pada percobaan ini.
b. Lakukan percobaan dengan mengganti panjang sinyal (L). Lakukan
pengamatan, apa yang terjadi dengan keluaran grafik.

19
3.2. Percobaan display spectrum sinyal SINUS
Lakukan percobaan menampilkan power spektrum dari sinyal SINUS (tiga
buah sinyal SINUS: 20, 100, dan 1000) yang telah dicampur dengan langkah
pembuatan generator isyarat seperti yang ditunjukkan pada Percobaan 1.
Panggil fungsi FFT pada program MATLAB untuk menghitung spektrum
sinyal dan selanjutnya tampilkan hasil pada layar komputer

%---------------- Signal Generator ------------------------------------


Fsampling = 4000; % Sampling frequency
T = 1/Fsampling; % Sampling period
L = 1500; % Length of signal
t = (0:L-1)*T; % Time vector
x = sin(2*pi*20*t)+sin(2*pi*100*t)+sin(2*pi*1000*t); %
figure;
plot(t,x);
title ('Original Signal');
%-----------------Fast Fourier Transform (FFT) -------------------------
n = 2^nextpow2(L);
Yfft = fft(x,n);
P2 = abs(Yfft/L);
P1 = P2(1:n/2+1);
P1(1:end-1) = 2*P1(1:end-1);
figure;
plot(0:(Fsampling/n):(Fsampling/2-Fsampling/n),P1(1:n/2));
title ('Frequency of the signal');

Gambar 3.2. Tampilan isyarat sinus

20
Gambar 3.3. Tampilan spektrum isyarat sinus.

Pada Gambar 1.2. tampak bahwa isyarat tiga gelombang sinus yang telah
bercampur. Gambar 1.3 menunjukkan spektrum frekuensi yang terdiri dari
tiga frekuensi utama, yaitu frekuensi 20, 100 dan 1000 Hz.
1. Lakukan modifikasi pada program tersebut diatas untuk pemberian
frekuensi sampling, menjadi 1000, 2000, 3000, lakukan pencatatan
hasil, dan copy paste hasil (program dan grafik) ke WORD untuk
pembuatan laporan.
2. Lakukan modifikasi pada program tersebut diatas dengan merubah
isyarat SINUS menjadi 1000, 5000, 10.000 Hz. Tentukan panjang
isyarat (L) yang paling tepat dan lakukan percobaan untuk
menentukan frekuensi samping yang paling tepat. Lakukan pencatatan
hasil, dan lakukan copy paste hasil (program dan grafik) ke WORD
untuk pembuatan laporan.
3. Lakukan modifikasi pada program tersebut diatas dengan merubah
isyarat SINUS yang diproses menjadi 5, 20, 500, 2000 Hz. Tentukan
panjang isyarat (L) yang paling tepat dan lakukan percobaan untuk
menentukan frekuensi sampling yang paling tepat. Lakukan
pencatatan hasil, dan lakukan copy paste hasil (program dan grafik) ke
WORD untuk pembuatan laporan.

21
PERCOBAAN 4. DIGITAL FILTER FIR

4.1. Percobaan Disain Filter FIR orde 8

Tiga buah isyarat sinus dibangkitkan yang masing-masing mempunyai


frekuensi (20, 100, dan 1000 Hz). Rencanakan sebuah high pass filter FIR
orde 8 dengan frekuensi cutoff 500 Hz. Sehingga isyarat yang akan ditekan
adalah frekuensi 20 dan 100 Hz dan frekuensi yang akan dilewatkan adalah
1000 Hz.
a. Menghitung koefisien filter. Koefisien filter dihitung dengan
menggunakan instruksi: b=fir1(8,500/(Fs/2),'high'), yang diketik pada
command window MATLAB seperti yang ditunjukkan pada Gambar 4.1.

Gambar 4.1. Command window mentukan koefisien filter.

b. Ketik program MATLAB seperti yang ditunjukkan pada listing program


sebagai berikut

Listing program digital filter FIR orde 8


%---------------- Signal Generator ------------------------------------
Fsampling = 4000; % Sampling frequency
T = 1/Fsampling; % Sampling period
L = 1500; % Length of signal
t = (0:L-1)*T; % Time vector
x = sin(2*pi*20*t)+sin(2*pi*100*t)+sin(2*pi*1000*t);
figure;
plot(t,x);
title ('Original Signal');
%-----------------FIR Digital Filter (Fcutoff HPF 500 Hz)-------------
b0=-0.0000;b1=-0.0161;b2=-0.0860;b3=-0.1948;b4=0.7501;b5=-0.1948;
b6=-0.0860;b7=-0.0161;b8=-0.0000;

22
x7=0;x6=0;x5=0;x4=0;x3=0;x2=0;x1=0;x0=0;

for i=1:L
x8=x7;
x7=x6;
x6=x5;
x5=x4;
x4=x3;
x3=x2;
x2=x1;
x1=x0;
x0=x(i);
y=b0*x0 + b1*x1 + b2*x2 + b3*x3 + b4*x4 + b5*x5 + b6*x6...
+ b7*x7 + b8*x8;
yfilter(i)=y;
end
y = yfilter';
figure;
plot(t,y);
title ('Filtered Signal');

%-----------------Fast Fourier Transform (FFT) ----------------------


n = 2^nextpow2(L);
Yfft = fft(y,n);
P2 = abs(Yfft/L);
P1 = P2(1:n/2+1);
P1(1:end-1) = 2*P1(1:end-1);
figure;
plot(0:(Fsampling/n):(Fsampling/2-Fsampling/n),P1(1:n/2));
title ('Frequency of the signal');

c. Amati dan copy-paste plot (grafik sinyal, sinyal setelah penapisan, dan
spektrum sinyal) yang dihasilkan dari MATLAB ke WORD untuk
pembuatan laporan akhir.
d. Lakukan modifikasi pada variabel frekuensi sampling, yang sebelumnya
4000 Hz, ganti dengan frekuensi sampling 3000, 2000, dan 1000 Hz.
Lakukan pencatatan dan perekaman hasil plot (copy/paste) dari masing-
masing frekuensi sampling ke WORD. Beri ulasan pengaruh frekuensi
sampling terhadap hasil penapisan.
e. Pada percobaan diatas telah dibuat sebuah high pass filter FIR dengan
frekuensi cutoff 500 Hz orde 8 dan frekuensi sampling 4000 Hz.

23
Selanjutnya rencanakan low pass filter FIR dengan frekuensi cutoff 50
Hz orde 8. (b=fir1(8,50/(Fs/2),’low’));

f. Lakukan langkah (a) sampai dengan (d).


g. Lanjutkan percobaan merancang sebuah digital filter, yaitu band pass
filter FIR dengan frekuensi cutoff bawah 50 Hz dan cut off atas 200 Hz
orde 8 dengan frekuensi sampling 4000 Hz.

h. Lakukan langkah (a) sampai dengan (d).

4.2. Percobaan Disain Filter FIR orde 20


Tiga buah isyarat sinus dibangkitkan yang masing-masing mempunyai
frekuensi (20, 100, dan 1000 Hz). Rencanakan sebuah high pass filter FIR
orde 20 dengan frekuensi cutoff 500 Hz. Sehingga isyarat yang akan ditekan
adalah frekuensi 20 dan 100 Hz dan frekuensi yang akan dilewatkan adalah
1000 Hz.
a. Menghitung koefisien filter. Koefisien filter dihitung dengan
menggunakan instruksi: b=fir1(20,500/(Fs/2),'high'), yang diketik pada
command window MATLAB seperti yang ditunjukkan pada Gambar 4.1.

24
b. Lanjutkan percobaan merancang sebuah digital filter, yaitu band pass
filter FIR dengan frekuensi cutoff bawah 50 Hz dan cut off atas 200 Hz
orde 20 dengan frekuensi sampling 4000 Hz.
c. Pada percobaan diatas telah dibuat sebuah high pass filter FIR dengan
frekuensi cutoff 500 Hz orde 20 dan frekuensi sampling 4000 Hz.
d. Lakukan copy-paste plot untuk setiap percobaan (untuk pembuatan
laporan akhir).
e. Berikan ulasan pengaruh orde terhadap hasil atau keluaran dari filter.

25
PERCOBAAN 5. DIGITAL FILTER IIR

5.1. Percobaan Disain Filter IIR orde 2

Tiga buah isyarat sinus dibangkitkan yang masing-masing mempunyai


frekuensi (20, 100, dan 1000 Hz). Rencanakan sebuah high pass filter IIR
orde 2 dengan frekuensi cutoff 500 Hz. Sehingga isyarat yang akan ditekan
adalah frekuensi 20 dan 100 Hz dan frekuensi yang akan dilewatkan adalah
1000 Hz.
a. Menghitung koefisien filter. Koefisien filter dihitung dengan
menggunakan FDATOOL yang diketik pada command window MATLAB
(>> fdatool) dengan tampilan seperti yang ditunjukkan pada Gambar 6.1.

Gambar 5.1. Tampilan FDATOOL

26
b. Lakukan pengaturan pada Response Type, Design Method, Filter
Order, Frequency sampling dan frequency cuttoff. Pada FDATOOL.
c. Setelah pengaturan telah dilakukan, maka tekan BUTTON Design
Filter.
d. Pada menu EDIT FDATOOL pilih CONVERT TO SINGLE SECTION
untuk mendapatkan koefisien filter IIR. Tekan tombol pada icon [b,a]
untuk melihat hasil perhitungan koefisien filter IIR, seperti yang
ditunjukkan pada Gambar 6.2.

Gambar 5.2. Filter coefficients.


e. Pada menu FILE pilih submenu EXPORT untuk mendapatkan data
TXT koefisien.

Gambar 5.3. Export koefisien ke WORKSPACE


f. Ketik program berikut untuk membangun sebuah filter high pass IIR
orde 2.

27
%---------------- Signal Generator ------------------------------------
Fsampling = 4000; % Sampling frequency
T = 1/Fsampling; % Sampling period
L = 1500; % Length of signal
t = (0:L-1)*T; % Time vector
x = sin(2*pi*20*t)+sin(2*pi*100*t)+sin(2*pi*1000*t); % First row wave
figure;
plot(t,x);
title ('Original Signal');
%-----------------IIR Digital Filter (Fcutoff HPF 500 Hz)-------------
% Numerator
b0= 0.569035593728849; b1=-1.13807118745770; b2= 0.569035593728849;
% Denumerator
a1= -0.942809041582064; a2= 0.333333333333333;
x1=0;x0=0;
y1=0;y=0;
for i=1:L
y2=y1;
y1=y;
%
x2=x1;
x1=x0;
x0=x(i);
y=b0*x0 + b1*x1 + b2*x2 ...
-a1*y1 - a2*y2 ;
yfilter(i)=y;
end
y = yfilter';
figure;
plot(t,y);
title ('Filtered Signal');

%-----------------Fast Fourier Transform (FFT) -------------------------


n = 2^nextpow2(L);
Yfft = fft(y,n);
P2 = abs(Yfft/L);
P1 = P2(1:n/2+1);
P1(1:end-1) = 2*P1(1:end-1);
figure;
plot(0:(Fsampling/n):(Fsampling/2-Fsampling/n),P1(1:n/2));
title ('Frequency of the signal');

g. Amati dan copy-paste plot (grafik sinyal, sinyal setelah penapisan, dan
spektrum sinyal) yang dihasilkan dari MATLAB ke WORD untuk
pembuatan laporan akhir.
h. Lakukan modifikasi pada variabel frekuensi sampling, yang sebelumnya
4000 Hz, ganti dengan frekuensi sampling 3000, 2000, dan 1000 Hz.

28
Lakukan pencatatan dan perekaman hasil plot (copy/paste) dari masing-
masing frekuensi sampling ke WORD. Beri ulasan pengaruh frekuensi
sampling terhadap hasil penapisan.
i. Lakukan modifikasi pada desain digital filter tersebut untuk low pass
filter IIR orde 2 dengan frekuensi cutoff 50, untuk melewatkan frekuensi
20 Hz.
j. Lakukan modifikasi pada desain digital filter tersebut untuk band pass
filter IIR orde 2 dengan frekuensi dengan frekuensi cutoff bawah 50 Hz
dan cut off atas 200 Hz orde 2 dengan frekuensi sampling 4000 Hz.
Sehingga frekuensi 100 Hz akan dilewatkan.
k. Lakukan langkah (g) sampai dengan (h).

5.2. Percobaan Disain Filter IIR orde 8

Tiga buah isyarat sinus dibangkitkan yang masing-masing mempunyai


frekuensi (20, 100, dan 1000 Hz). Rencanakan sebuah high pass filter IIR
orde 8 dengan frekuensi cutoff 500 Hz. Sehingga isyarat yang akan ditekan
adalah frekuensi 20 dan 100 Hz dan frekuensi yang akan dilewatkan adalah
1000 Hz. Lakukan langkah-langkah seperti yang telah dilakukan pada
percobaan sebelumnya 1(a) sampai dengan 1(k) dengan menggunakan listing
program sebagai berikut:
Listing program IIR orde 8
%---------------- Signal Generator ------------------------------------
Fsampling = 4000; % Sampling frequency
T = 1/Fsampling; % Sampling period
L = 1500; % Length of signal
t = (0:L-1)*T; % Time vector
x = sin(2*pi*20*t)+sin(2*pi*100*t)+sin(2*pi*1000*t); % First row wave
figure;
plot(t,x);
title ('Original Signal');
%-----------------IIR Digital Filter (Fcutoff HPF 500 Hz)-------------
% Numerator
b0=0.12452952906897834; b1=-0.9962362325518267;
b2=3.486826813931393;
b3=-6.973653627862786;
b4=8.717067034828483; b5=-6.973653627862787; b6=3.486826813931393;
b7=-0.9962362325518267; b8=0.12452952906897834
% Denumerator
a1=-3.983784273174194; a2=7.5362341101208985;
a3=-8.5998150648014; a4=6.400154060347639;

29
a5=-3.1560252607305666; a6=1.0016965795512844;
a7=-0.1863424776774854; a8=0.015507615254986895;
%
x7=0;x6=0;x5=0;x4=0;x3=0;x2=0;x1=0;x0=0;
y7=0;y6=0;y5=0;y4=0;y3=0;y2=0;y1=0;y=0;
for i=1:L
y8=y7;
y7=y6;
y6=y5;
y5=y4;
y4=y3;
y3=y2;
y2=y1;
y1=y;
%

x8=x7;
x7=x6;
x6=x5;
x5=x4;
x4=x3;
x3=x2;
x2=x1;
x1=x0;
x0=x(i);
y=b0*x0 + b1*x1 + b2*x2 + b3*x3 + b4*x4 + b5*x5 + b6*x6 + b7*x7 + b8*x8...
-a1*y1 - a2*y2 - a3*y3 - a4*y4 - a5*y5 - a6*y6 - a7*y7 - a8*y8;
yfilter(i)=y;
end
y = yfilter';
figure;
plot(t,y);
title ('Filtered Signal');
%-----------------Fast Fourier Transform (FFT) -------------------------
n = 2^nextpow2(L);
Yfft = fft(y,n);
P2 = abs(Yfft/L);
P1 = P2(1:n/2+1);
P1(1:end-1) = 2*P1(1:end-1);
figure;
plot(0:(Fsampling/n):(Fsampling/2-Fsampling/n),P1(1:n/2));
title ('Frequency of the signal');

30
PERCOBAAN 6. PEMROSESAN SINYAL BIOMEDIK

Pada praktikum kali ini, kita akan melakukan percobaan pengolahan isyarat
ECG yang berasal dari ATM physionet.org (https://physionet.org/cgi-
bin/atm/ATM). Physionet.org merupakan salah satu sumber public dataset
yang berisi berbagai macam hasil rekaman sinyal biomedik yang telah
dihasilkan oleh beberapa peneliti-peneliti terdahulu. Submenu pada
physionet adalah Physiobank ATM (Gambar 6.1.) yang berisi berbagaimacam
sinyal biomedik dengan berbagai macam fasilitas baik berupa view maupun
rekaman dalam bentuk text, csv dan lain-lain.

Gambar 6.1. Tampilan PhysioBANK ATM

Gambar 6.2. Pilihan database sinyal biomedik

31
Gambar 6.3. Beberapa pilihan pada ATM physioBANK

Hasil rekaman sinyal ECG yang berasal dari ATM physioBANK adalah berupa
file CSV. File CSV dibuka menggunakan program Microsoft Excell dan
selanjutnya file disimpan dengan ekstension TXT.

6.1. Simulasi kontaminasi isyarat ECG dengan noise

Pada percobaan pertama ini, kita akan mengambil rekaman isyarat ECG yang
berasal dari ATM physioBANK. Berdasarkan informasi yang didapatkan dari
rekaman tersebut, sinyal ECG dan sinyal yang lainnya direkam dengan
menggunakan frekuensi sampling 5000 Hz dengan lama rekaman adalah 10
detik. Karakteristik frekuensi isyarat ECG adalah 0.05 sd. 100 Hz. Untuk
mengetahui pengaruh noise terhadap sinyal ECG maka pada percobaan ini,
sinyal ECG akan ditambahkan dengan noise buatan yang seolah-olah berasal
dari jala-jala listrik yaitu noise dengan frekuensi 50 Hz. Noise buatan, yaitu
noise yang dibangkitkan akibat gerakan dari anggota tubuh manusia (noise
artifact) juga dibangkitkan secara buatan dengan menambahkan sinyal sinus
frekuensi rendah (1 sd. 3 Hz).
a. Ketik program pengambilan data ECG seperti yang ditunjukkan pada
Listring program berikut, terlebih dahulu download di google drive dengan
link sebagai berikut:

32
https://drive.google.com/open?id=10DEp-A14y_oy4ObedksecP-Xouki-TF8

% https://physionet.org/cgi-bin/atm/ATM
% https://physionet.org/physiobank/database/cebsdb/
clear all;
clc;
StopTime=10;
dt=0.0002;
Fsampling=1/dt;
L=50000;
load datasetecg.txt;
LEADI=datasetecg(1:L,2);
LEADII=datasetecg(1:L,3);
RESP=datasetecg(1:L,4);
SCG=datasetecg(1:L,5);
t = (0:dt:StopTime-dt)';
noise50 = sin(2*pi*50*t);
artifact= sin(2*pi*1*t);
y=LEADI;
figure;
plot(t,y);

Gambar 6.4. Gambar sinyal ECG asal

b. Lakukan modifikasi pada program dengan menambahkan noise 50Hz


atau artifact pada sinyal ECG, seperti yang ditunjukkan pada potongan
listing program berikut.

33
y=LEADI;
y=LEDAI+noise50;
y=LEADI+artifact;

Gambar 6.5. Gambar sinyal ECG dan noise 50 Hz

Gambar 6.6. Gambar sinyal ECG dan noise artifact

34
c. Tambahkan fungsi FFT pada percobaan sinyal ECG dan noise 50 Hz
untuk melihat spektrum sinyal. Lakukan modifikasi pada program
sebelumnya dengan menambahkan instruksi untuk melihat spektrum
isyarat ECG dan noise.

Gambar 6.7. Gambar spektrum ECG dan noise 50 Hz

% https://physionet.org/cgi-bin/atm/ATM
% https://physionet.org/physiobank/database/cebsdb/
clear all;
clc;
StopTime=10;
dt=0.0002;
Fsampling=1/dt;
L=50000;
load datasetecg.txt;
LEADI=datasetecg(1:L,2);
LEADII=datasetecg(1:L,3);
RESP=datasetecg(1:L,4);
SCG=datasetecg(1:L,5);
t = (0:dt:StopTime-dt)';
noise50 = sin(2*pi*50*t);
artifact= sin(2*pi*1*t);
y=LEADI+noise50;

35
figure;
plot(t,y);
%-----------------Fast Fourier Transform (FFT) ----------------------
n = 2^nextpow2(L);
Yfft = fft(y,n);
P2 = abs(Yfft/L);
P1 = P2(1:n/2+1);
P1(1:end-1) = 2*P1(1:end-1);
figure;
plot(0:(Fsampling/n):(Fsampling/2-Fsampling/n),P1(1:n/2));
title ('Frequency of the signal');

Gambar 6.8. Gambar spektrum ECG dan artifact

d. Catat dan copy-paste untuk setiap plot yang dihasilkan oleh


program MATLAB dan setiap anda melakukan modifikasi untuk
pembuatan laporan.
e. Lakukan modifikasi pada program tersebut untuk mensimulasikan
apabila sinyal ECG mendapat noise dari frekuensi tinggi (1000 Hz)
dengan noise buatan sinus1000=0.1*sin(2*pi*1000*t).

36
6.2. Pembuatan tapis NOTCH IIR 50 Hz untuk sinyal ECG

Setelah memahami bagaimana membuat sinyal buatan dan mengambil


sinyal dari public dataset, selanjutnya adalah melakukan design band stop
filter 50 Hz dengan menggunakan pendekatan IIR. Karakteristik dari filter ini
adalah order 2, frekuensi sampling 5000 Hz, dan frekuensi cutoff bawah dan
atas masing-masing adalah 48 dan 52 Hz. Filter BAND STOP ini selanjutnya
digunakan untuk menekan frekuensi noise buatan sebesar 50 Hz yang
masuk pada sinyal ECG.
a. Lakukan perancangan BANDSTOP IIR filter dengan menggunakan tool
FDATOOL pada program MATLAB yang ditunjukkan pada Gambar 6.9.

Gambar 6.9. Konfigurasi rancangan filter IIR 50 Hz pada FDATOOL

Gambar 6.10. Response filter IIR 50 Hz pada FDATOOL

37
Untuk mendapatkan koefisien filter IIR 50 Hz order 2 maka lakukan konversi
ke single section melalui menu EDIT dan CONVERT SINGLE SECTION,
sebagaimana yang ditunjukkan pada Gambar 6.11.

Gambar 6.11. Convert to Single Section pada FDATOOL

Gambar 6.12. Koefisien filter, numerator dan denominator pada FDATOOL

b. Ketik program MATLAB sebagaimana yang ditunjukkan pada listing


program sebagai berikut.

%---------------- Signal Generator ------------------------------------


clear all;
clc;
StopTime=10;
dt=0.0002;
Fsampling=1/dt;
L=50000;
load datasetecg.txt;
LEADI=datasetecg(1:L,2);
LEADII=datasetecg(1:L,3);
RESP=datasetecg(1:L,4);
SCG=datasetecg(1:L,5);

38
t = (0:dt:StopTime-dt)';
noise50 = sin(2*pi*50*t);
artifact= sin(2*pi*1*t);
x=LEADI+noise50;
figure;
plot(t,x);
%-----------------IIR Digital Filter (Fcutoff HPF 500 Hz)-------------
% Numerator
b0= 0.997493021323277; b1=-1.99105568169751;
b2= 0.997493021323277;
% Denumerator
a1= -1.99105568169751; a2= 0.994986042646553;
x1=0;x0=0;
y1=0;y=0;
for i=1:L
y2=y1;
y1=y;
%
x2=x1;
x1=x0;
x0=x(i);
y=b0*x0 + b1*x1 + b2*x2 ...
-a1*y1 - a2*y2 ;
yfilter(i)=y;
end
y = yfilter';
figure;
plot(t,y);
title ('Filtered Signal');

%-----------------Fast Fourier Transform (FFT) -------------------------


n = 2^nextpow2(L);
Yfft = fft(y,n);
P2 = abs(Yfft/L);
P1 = P2(1:n/2+1);
P1(1:end-1) = 2*P1(1:end-1);
figure;
plot(0:(Fsampling/n):(Fsampling/2-Fsampling/n),P1(1:n/2));
title ('Frequency of the signal');

c. Catat dan lakukan copy-paste untuk setiap langkah percobaan yang


anda lakukan untuk pembuatan laporan.

39
Gambar 6.13. Sinyal ECG yang mendapat noise 50 Hz

Gambar 6.14. Sinyal ECG setelah melalui proses filter

d. Lakukan modifikasi pada program tersebut diatas, apabila ECG


tersebut mendapat kontaminasi sinyal dengan frekuensi tinggi sebesar
0.1*sin(2*pi*1000*t). Disain filter IIR orde 8 BPF 0.05 sd. 100 Hz.

40
NEXT (after UTS)
Percobaan Filter Digital tertanam di Mikrokontroller (ESP32)
dan IOT.

Gambar 5.1. Pemetaan Pin ESP32 ke Arduino


(http://forum.fritzing.org/uploads/default/original/2X/a/ae3dc4cc089ce3e73de2d367da5dbf22102bd7c3.jpg)

41

Anda mungkin juga menyukai