Professional Documents
Culture Documents
KELOMPOK 3 4
NAMA 1 Ainnur Rahayu Manal
Pratiwi
NAMA 2 Najwa Khaerunisa Nidya Suroyya
PROJEK Perintah Kendali secara Wireless
TUGAS I:
Rancang suatu program yang dapat digunakan untuk melakukan perintah
pengendalian dari Host ke Client. Pengendalian LED pada sisi Client
Note: Tiap pasangan harus bekerja pada kanal yang berbeda
PROGRAM HOST
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
struct payload
{
char Kata[20];
};
payload Data;
void setup()
{
Serial.begin(9600);
Radio.begin();
Radio.setChannel(105);
Data.Kata[0]=S;
Data.Kata[1]=i;
Data.Kata[2]=a;
Data.Kata[3]=p; Data.Kata[4]=.;
Data.Kata[5]=.;
Radio.openWritingPipe(pipeTx); delay(50);
Radio.write(&Data, sizeof(Data) ); delay(50);
Radio.openReadingPipe(1, pipeRx);delay(50);
Radio.startListening();
}
void loop()
{
if ( Radio.available() )
{
Radio.read(&Data, sizeof(Data) );
Serial.println(Data.Kata);
}
if (Flag == true)
{
Radio.stopListening(); delay(100);
Radio.openWritingPipe(pipeTx); delay(50);
Radio.write(&Data, sizeof(Data) ); delay(50);
Flag = false;
Radio.openReadingPipe(1, pipeRx); delay(50);
Radio.startListening();
delay(100);
}
void serialEvent()
{
while (Serial.available() )
{
char data = (char)Serial.read();
Data.Kata[n] = data; n++;
if (data == '_') { Flag = true; n=0; }
}
}
PROGRAM CLIENT
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
struct payload
{
char Kata[20];
};
payload Data;
void setup()
{
Serial.begin(9600);
Radio.begin();
Radio.setChannel(105);
Data.Kata[0]=S;
Data.Kata[1]=i;
Data.Kata[2]=a;
Data.Kata[3]=p;
Data.Kata[4]=.;
Data.Kata[5]=.;
pinMode(D5, OUTPUT);
pinMode(D6, OUTPUT);
pinMode(D7, OUTPUT);
pinMode(D8, OUTPUT);
Radio.openWritingPipe(pipeTx); delay(50);
Radio.write(&Data, sizeof(Data) ); delay(50);
Radio.openReadingPipe(1, pipeRx);delay(50);
Radio.startListening();
}
void loop()
{
if ( Radio.available() )
{
Radio.read(&Data, sizeof(Data) );
Serial.println(Data.Kata);
LANGKAH KERJA
a. UpLoad program diatas untuk HOST dan CLIENT dengan alamat Tx dan Rx
sesuai tabel alamat yang disepakati
b. Reset dengan menekan tombol reset. Amati apakah masing-masing
menerima pesan Siap...;
c. Ketikkan secara perintah OHLHL_ pada HOST
d. Amati perintah yang diterima oleh CLIENT dan akibat yang terjadi pada LED
D5, LED D6, LED D7 dan LED D8 ( Gunakan AVO meter untuk Uno)
Pembahasan
(Program Host)
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
struct payload
{
char Kata[20];
};
payload Data;
void setup()
{
Serial.begin(9600);
Radio.begin();
Radio.setChannel(109);
Data.Kata[0]='S';Data.Kata[1]='i'; Data.Kata[2]='a';
Data.Kata[3]='p';Data.Kata[4]='.'; Data.Kata[5]='.';
Radio.openWritingPipe(pipeTx); delay(50);
Radio.write(&Data, sizeof(Data) ); delay(50);
Radio.openReadingPipe(1, pipeRx);delay(50);
Radio.startListening();
}
void loop()
{
if ( Radio.available() )
{
Radio.read(&Data, sizeof(Data) );
Serial.println(Data.Kata);
for (int k=0 ; k <=19; k++)
{
Data.Kata[k]=' ';
}
}
if (Flag == true)
{
Radio.stopListening(); delay(100);
Radio.openWritingPipe(pipeTx); delay(50);
Radio.write(&Data, sizeof(Data) ); delay(50);
Flag = false;
Radio.openReadingPipe(1, pipeRx); delay(50);
Radio.startListening();
delay(100);
}
void serialEvent()
{
while (Serial.available() )
{
char data = (char)Serial.read();
Data.Kata[n] = data; n++;
if (data == '_') { Flag = true; n=0; }
}
}
void hapus ()
{
for (int k=0 ; k <=19; k++)
{Data.Kata[k]=' ';
}
}
(Program Client)
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
struct payload
{
char Kata[20];
};
payload Data;
void setup()
{
Serial.begin(9600);
Radio.begin();
Radio.setChannel(109);
Data.Kata[0]='S';
Data.Kata[1]='i';
Data.Kata[2]='a';
Data.Kata[3]='p';
Data.Kata[4]='.';
Data.Kata[5]='.';
pinMode(D5, OUTPUT);
pinMode(D6, OUTPUT);
pinMode(D7, OUTPUT);
pinMode(D8, OUTPUT);
Radio.openWritingPipe(pipeTx); delay(50);
Radio.write(&Data, sizeof(Data) ); delay(50);
Radio.openReadingPipe(1, pipeRx);delay(50);
Radio.startListening();
void loop()
{
if ( Radio.available() )
{
Radio.read(&Data, sizeof(Data) );
Serial.println(Data.Kata);
Data.Kata[0]='0';
if (digitalRead (D5)==HIGH)
Data.Kata[1]='1';
else Data.Kata[1]='0';
Data.Kata[0]='0';
if (digitalRead (D6)==HIGH)
Data.Kata[2]='1';
else Data.Kata[2]='0';
Data.Kata[0]='0';
if (digitalRead (D7)==HIGH)
Data.Kata[3]='1';
else Data.Kata[3]='0';
Data.Kata[0]='0';
if (digitalRead (D8)==HIGH)
Data.Kata[4]='1';
else Data.Kata[4]='0';
Data.Kata[5]='_';
Radio.openWritingPipe(pipeTx), delay(50);
Radio.write(&Data, sizeof(Data)); delay(50);
Flag = false;
Radio.openReadingPipe(1, pipeRx); delay(50);
Radio.startListening();
delay(100);
}
}
Hasil Praktikum
(Program Host)
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
struct payload
{
char Kata[20];
};
payload Data;
void setup()
{
Serial.begin(9600);
Radio.begin();
Radio.setChannel(109);
Data.Kata[0]='S';Data.Kata[1]='i'; Data.Kata[2]='a';
Data.Kata[3]='p';Data.Kata[4]='.'; Data.Kata[5]='.';
Radio.openWritingPipe(pipeTx); delay(50);
Radio.write(&Data, sizeof(Data) ); delay(50);
Radio.openReadingPipe(1, pipeRx);delay(50);
Radio.startListening();
}
void loop()
{
if ( Radio.available() )
{
Radio.read(&Data, sizeof(Data) );
Serial.println(Data.Kata);
for (int k=0 ; k <=19; k++)
{
Data.Kata[k]=' ';
}
}
if (Flag == true)
{
Radio.stopListening(); delay(100);
Radio.openWritingPipe(pipeTx); delay(50);
Radio.write(&Data, sizeof(Data) ); delay(50);
Flag = false;
Radio.openReadingPipe(1, pipeRx); delay(50);
Radio.startListening();
delay(100);
}
void serialEvent()
{
while (Serial.available() )
{
char data = (char)Serial.read();
Data.Kata[n] = data; n++;
if (data == '_') { Flag = true; n=0; }
}
}
void hapus ()
{
for (int k=0 ; k <=19; k++)
{Data.Kata[k]=' ';
}
}
(Program Client)
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
struct payload
{
char Kata[20];
};
payload Data;
void setup()
{
Serial.begin(9600);
Radio.begin();
Radio.setChannel(109);
Data.Kata[0]='S';
Data.Kata[1]='i';
Data.Kata[2]='a';
Data.Kata[3]='p';
Data.Kata[4]='.';
Data.Kata[5]='.';
pinMode(D5, OUTPUT);
pinMode(D6, OUTPUT);
pinMode(D7, OUTPUT);
pinMode(D8, OUTPUT);
Radio.openWritingPipe(pipeTx); delay(50);
Radio.write(&Data, sizeof(Data) ); delay(50);
Radio.openReadingPipe(1, pipeRx);delay(50);
Radio.startListening();
void loop()
{
if ( Radio.available() )
{
Radio.read(&Data, sizeof(Data) );
Serial.println(Data.Kata);
Data.Kata[0]='0';
if (digitalRead (D5)==HIGH)
Data.Kata[1]='1';
else Data.Kata[1]='0';
Data.Kata[0]='0';
if (digitalRead (D6)==HIGH)
Data.Kata[2]='1';
else Data.Kata[2]='0';
Data.Kata[0]='0';
if (digitalRead (D7)==HIGH)
Data.Kata[3]='1';
else Data.Kata[3]='0';
Data.Kata[0]='0';
if (digitalRead (D8)==HIGH)
Data.Kata[4]='1';
else Data.Kata[4]='0';
Data.Kata[5]='_';
Radio.openWritingPipe(pipeTx), delay(50);
Radio.write(&Data, sizeof(Data)); delay(50);
Flag = false;
Radio.openReadingPipe(1, pipeRx); delay(50);
Radio.startListening();
delay(100);
}
}
Tabel Data nyala lampu
No Data D5 D6 D7 D8 Balasan
1 OLLHH_ Mati Mati Hidup Hidup O0011
2 OLLLH_ Mati Mati Mati Hidup O0001
3 OLLLL_ Mati Mati Mati Mati O0000
4 OHHH_ Hidup Hidup Hidup Hidup O1111
5 OHHHL_ Hidup Hidup Hidup Mati O1110
Analisa Data :
Kelompok 3= host
Kelompok 4= client
Pada praktikum ini host mengirimkan perintah pada client, sebagai berikut:
- Command O yang berfungsi sebagai perintah untuk client
- Data H dan L , yang mana H=high yang berarti led menyala
(tegangan mendekati 5 untuk arduino UNO) dan L=low yang berarti
led mati(tegangan 0 untuk arduino UNO).
Pada client akan mengerjakan perintah yang dikirimkan oleh host, setelah
mengerjakan perintah dari host, client akan melalukan stop listening, open
writing, dan write.
-Stop listening= client akan berhenti untuk mengerjakan perintah dari host
-Open writing= client akan memulai untuk mengirim balasan kepada host,
berupa bilangan biner, konversi dari data yang dikirm oleh host.
-Write= client mengetik balasan untuk host.
Host dapat menerima data dari Client setelah data dari Host berhasil diterima
Client (handshaking). Data balasan yang diterima Host berupa 4 deret biner
yaitu 1 atau 0. 1 yang berarti tegangan yang dideteksi ~5V (H) dan 0 yang
berarti tegangan yang dideteksi 0V (L).