Oleh :
MELDIANSYAH
(3D4EA / 2120600015)
Dosen Pengampu :
Reesa Akbar ST., MT., Ph.D.
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.
TUGAS 2
1. Konversi program di hal 77-81 ke dalam bhs C arduino/esp
Jawaban :
Program Koordinator
#define Rx 15
#define TX 14
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;
}
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);
}