Anda di halaman 1dari 9

TUGAS 1

IOT DAN JARINGAN SENSOR


PROGRAM XBEE

Oleh :
MELDIANSYAH
(3D4EA / 2120600015)
Dosen Pengampu :
Reesa Akbar ST., MT., Ph.D.

Program Studi D4 Teknik Elektronika


Departemen Teknik Elektro

Politeknik Elektronika Negeri Surabaya


2022
TUGAS 1 : PROGRAM XBEE

TUGAS 1
1. Program ini bekerja utk apa dan terhubung dengan apa dan bagaimana memfungsi
kannya
Jawaban :

Di awal program Xbee di set sebagai manual polling base karena confiurasi Xbee
di set pada Fast AT command Mode. Disini user dapat mengatur LED, Buzzer, Servo
dan dapat membacar sensor secara remote atau wireless. Dengan mengset alamat node,
Xbee akan menerima data dan nilai acknowledgment. Disni Xbee membutuhkan juga
alamat Xbee(series 1) dengan alamat 802.15.4.

Di program pertama akan berinteraksi dengan program kedua, dimana program


kedua akan bekerja sebagai poling remote yang berate di program kedua akan
menerima data-data karakter dengan fungsi sebagai berikut:
 L & 0 atau 1 untuk melakukan control pada state LED
 B & nilai untuk mengontrol frekuensi dari buzzer
 S & nilai untuk mengontrol posisi dari servo
 R untuk melakukan return atau mengembalikan nilai light sensor
Selain itu program ini juga mengembalikan acknowledgments atau nilai ke base, dan
juga Alamat node dapat diatur dengan mengubah nilai MY_Addr, dan Membutuhkan
802.15.4 XBee (Seri 1).
Cara kerja program ini adalah dengan menggunakan system polling manual.
Polling manual memungkinkan pengguna untuk berinteraksi dengan node dasar untuk
mengontrol dan memantau node jarak jauh. Node dasar meminta informasi dari
pengguna untuk mengontrol LED, buzzer, servos, atau meminta pembaca sensor.
Langkah pertama adalah memasukkan alamat remote node yang ingin Anda
kendalikan, ini menggambarkan konfigurasi Xbee, kontrol flow, pengalamatan node
dan pengaplikasian acknowledgements.
Xbee dikonfigurasi pada mode Fast Command dengan mengatur waktu
penjagaan rendah (ATGT). Dengan ini, Xbee dapat dikonfigurasi ulang dalam milidetik.
Kode meminta dari alamat user node yang akan dikontrol, hal ini didasarkan pada
kontanta dalam kode node remote untuk alamatnya .Selanjutnya setelah menerima
alamat dari node remote, program node base akan meminta tindakan apa yang harus
dilakukan: apakah akan mengontrol LED, Buzzer, Servo atau untuk mendapatkan
pembacaan sensor. Untuk kontrol, nilai diminta dari User. Data dikirim sebagai Tanda
(L, B, S, atau R) ditambah a nilai desimal untuk item kontrol seperti kontrol
2. Program ini yg berfungsi sbg koordinator / node bisa dilihat ditunjukkan baris
mana saja
Jawaban :
Program yang berfungsi sebagai kordinator :
Program yang berfungsi sebagai Node:
3. Di program ini mengandung perintah untuk xbee apa saja ? tunjukan.
Jawaban :
4. Bagaimana alasan anda mengetahui bahwa model program ini untuk komunikasi
polling
Jawaban :
Dapat kita amati bahwa pada program diatas jenis komunikasi yang digunakan adalah
komunikasi poling, Sebab terdapat program yang bekerja pada kordinator untuk dapat
melakukan pengiriman data, melakuakn configurasi Xbee pada mode fast AT Command
Mode, user dapat melakukan control remote / jarak jauh pada Led, Buzzer, Servo ataupun
membaca remote sensor, mengatur alamat dan data untuk di pilih ke node adres, dan juga dapat
menerima acknowledgement value.
Setelah itu pada program 2 yaitu program remote Dimana dengan adanya program
remote dapat langsung kita simpulkan bahwa jenis komunikasi yang digunakan pada program
ini adalah program polling, pada program remote ini nantinya akan menerima karakter yang
dikirim dari kordinator dan akan menjalankan perintah tersebut sesuai dengan character yang
diterima, program ini juga nantinya akan mengenbalikan value acknowledgment atau nilai ke
kordinator.

TUGAS 2
1. Konversi program di hal 77-81 ke dalam bhs C arduino/esp
Jawaban :
Program Koordinator

#define Rx 15

#define TX 14

int DL_Addr, Light;


char DataIn,DataOut;

void config_Xbee(void);
void CheckAck(void);

void setup() {
Serial.begin(9600);
Serial.println("Configuring XBee...");
delay(3000);
Serial.write("+++");
Serial.write("ATGT 3,MY 0\n");
Serial.write("ATCN\n");
}

void loop() {
// put your main code here, to run repeatedly:
if(Serial.available()){

Serial.println("Choose Action:");
Serial.println("S - Set Servo Position");
Serial.println("L - Set LED State");
Serial.println("B - Set Buzzer Frequency");
Serial.println("R - Read Light Level\n ?");

DataIn = Serial.read();
switch (DataIn)
{
DataIn = Serial.read();
switch (DataIn)
{
case "S" || "s":
Serial.println("Enter Servo Position (500-1000):");
DataOut = Serial.read();
Serial.println("Sending Data!");
Serial.write("S");
Serial.write(DataOut);
break;

case "L" || "l":


Serial.println("Enter LED State (0/1):");
DataOut = Serial.read();
Serial.println("Sending Data!");
Serial.write("L");
Serial.write(DataOut);
break;

case "B" || "b":


Serial.println("Enter Buzzer Frequency:");
DataOut = Serial.read();
Serial.println("Sending Data!");
Serial.write("L");
Serial.write(DataOut);
break;

case "R" || "r":


Serial.println(,"Requesting reading...");
Serial.write("R");
Light = Serial.read();
Serial.println("Light level = %d",Light);
break;

}
delay(2000);
}

void config_Xbee()
{
delay(10);
Serial.write("+++");
Serial.write("ATDL " + DL_Addr);
Serial.write("ATCN");
}

void CheckAck()
{
DataIn = Serial.read();
if(DataIn == 1) Serial.println("OK - Ack Received!");
else Serial.println("Bad Ack!");
}
<
Program Node

#include <Servo.h>

#define LED 0
#define Buzzer 8
#define PhotoT 5
#define Servo 12
#define RX 15
#define TX 14
#define RTS 11
#define My_Addr 0xFFFE;

Servo Myservo;
int freq, state,Light, Position = 750;
char DataIn;

void AcceptData(void);
void Control(void);

void setup()
{
Myservo.attach(Servo);
Serial.begin(9600);
delay(500);
Serial.println("Configuring XBee...");
delay(3000);
Serial.write("+++");
delay(2000);
Serial.write("ATD6 1\n");
Serial.write("ATMY " + My_Addr + "\n");
Serial.write("ATDL\n");
}

void loop()
{
AcceptData();
Control();
}

void AcceptData()
{
DataIn = Serial.read();

switch (DataIn)
{
case "L":
state = serial.read();
delay(200);
Serial.write(1);
break;
case "B":
freq = Serial.read();
delay(200);
Serial.write(1);
break;
case "B":
freq = Serial.read();
delay(200);
Serial.write(1);
break;
case "S":
Position = Serial.read();
delay(200);
Serial.write(1);
break;
case "R":
Light = analogRead(PhotoT);
delay(100);
Serial.write(Light);
break;
}
}

void Control()
{
if(state == 1) digitalWrite(LED,HIGH);
else digitalWrite(LED,LOW);

if(freq > 0 )
{
analogWrite(Buzzer,freq);
delay(100);
}

Myservo.write(Position;
delay(20);
}

Anda mungkin juga menyukai