Perancangan Dan Implementasi Pengendali Pintu Pagar Otomatis Berbasis Arduino
LAMPIRAN A
GAMBAR RANGKAIAN KESELURUHAN
Perancangan dan implementasi pengendali pintu pagar otomatis berbasis
arduino
Universitas Sumatera Utara
LANJUTAN LAMPIRAN A
GAMBAR RANGKAIAN KESELURUHAN
Perancangan dan implementasi pengendali pintu pagar otomatis berbasis
arduino
Universitas Sumatera Utara
LAMPIRAN B
PROGRAM KESELURUHAN SISTEM
Program pada pagar
#include
#include
byte mac[] = { 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF };
byte ip[] = { 10,0,0,103 };
Server server(80);
char c = 0;
char command[2] = "\0";
String tampilan = "";
char incomingByte; // incoming data
int LED1 = 13; // LED pin
const int tombol_buka = 2;
const int tombol_tutup = 3;
const int motorbuka = 6;
const int motortutup = 7;
const int sensor = 5;
const int limitbuka = 9;
const int limittutup = 8;
String pesan = "N";
int sinyal_tombol_buka = 1;
int sinyal_tombol_tutup = 1;
int sinyal_sensor = 1;
int sinyal_limitbuka = 1;
int sinyal_limittutup = 1;
int status_pintu=0;
int indikator = 0;
void setup() {
Serial.begin(9600);
pinMode(LED1, OUTPUT);
pinMode(tombol_buka, INPUT);
pinMode(tombol_tutup, INPUT);
pinMode(sensor, INPUT);
pinMode(motorbuka, OUTPUT);
pinMode(motorbuka, OUTPUT);
digitalWrite(LED1, LOW);
Ethernet.begin(mac, ip);
server.begin();
}
void loop() {
Client client = server.available();
boolean current_line_is_first = true;
baca_serial();
if (client) {
boolean current_line_is_blank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (c == '\n' && current_line_is_blank) {
client.println("HTTP/1.1 200 OK");
Universitas Sumatera Utara
client.println("Content-Type: text/html");
client.println();
//client.println("");
client.println("Arduino + Gate Controller");
if(status_pintu==0){client.println("Gate Tertutup");}
if(status_pintu==1){client.println("Gate Terbuka");}
client.println("");
client.println("Gate
Open");
client.println("Gate
Close");
client.println("");
client.println("");
client.println("Klik Gate Open Untuk Membuka Gerbang");
client.println("Klik Gate Close Untuk Menutup Gerbang");
baca_serial();
break;
}
if (c == '\n') {
current_line_is_first = false;
current_line_is_blank = true;
}
else if (c != '\r') {
current_line_is_blank = false;
}
if (current_line_is_first && c == '=') {
for (int i = 0; i < 1; i++) {
c = client.read();
command[i] = c;
}
if (!strcmp(command, "1")) {
digitalWrite(LED1, LOW);
//tampilan = "B";
buka_pintu();
}
else if (!strcmp(command, "2")) {
digitalWrite(LED1, HIGH);
//tampilan = "T";
tutup_pintu();
}}} }
delay(1);
client.stop();
baca_serial();
}
baca_serial();
}
void baca_serial()
{
if (Serial.available() > 0) {
incomingByte = Serial.read();
// Serial.println(incomingByte);
if(incomingByte == 'A') {buka_pintu();}
if(incomingByte == 'T') {pesan = "N"; digitalWrite(LED1, HIGH); tutup_pintu(); }}
if(pesan == 'S') {Serial.println(pesan); delay(50); }
if(status_pintu==0 && pesan != 'S'){Serial.println("C"); delay(50); }
if(status_pintu==1 && pesan != 'S'){Serial.println("B"); delay(50); }
sinyal_tombol_buka = digitalRead(tombol_buka);
sinyal_tombol_tutup = digitalRead(tombol_tutup);
Universitas Sumatera Utara
sinyal_limitbuka = digitalRead(limitbuka);
sinyal_limittutup = digitalRead(limittutup);
sinyal_sensor = digitalRead(sensor);
if (sinyal_tombol_buka==LOW) {buka_pintu();}
if (sinyal_tombol_tutup==LOW) { tutup_pintu();}
if (sinyal_sensor==LOW) {pesan="S";}
if (sinyal_limitbuka==LOW && status_pintu==0) {stop_buka_pintu();}
if (sinyal_limittutup==LOW && status_pintu==1) {stop_tutup_pintu();}
}
void buka_pintu()
{
if(status_pintu==0){
digitalWrite(motorbuka, HIGH);
digitalWrite(motortutup, LOW);
digitalWrite(LED1, HIGH);
}}
void stop_buka_pintu()
{
digitalWrite(motorbuka, LOW);
digitalWrite(motortutup, LOW);
digitalWrite(LED1, LOW);
status_pintu=1; }
void tutup_pintu()
{
if(status_pintu==1){
digitalWrite(motorbuka, LOW);
digitalWrite(motortutup, HIGH);
digitalWrite(LED1, HIGH);
pesan = "N";
}}
void stop_tutup_pintu()
{
digitalWrite(motorbuka, LOW);
digitalWrite(motortutup, LOW);
digitalWrite(LED1, LOW);
status_pintu=0;
pesan = "N";
}
Program pada mobil
#include
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
char incomingByte;
String pesan = "A";
void setup() {
lcd.begin(16, 2);
lcd.print("Menunggu Sinyal");
Serial.begin(9600);
}
Universitas Sumatera Utara
void loop() {
if (Serial.available() > 0) {
incomingByte = Serial.read();
delay(100);
if(incomingByte == 'B') {lcd.begin(16, 2); lcd.print("Pintu Terbuka");}
if(incomingByte == 'C') {lcd.begin(16, 2); lcd.print("Pintu Tertutup");}
if(incomingByte == 'S') {lcd.begin(16, 2); lcd.print("Sinyal Tutup"); pesan="T";}
delay(500); }
Serial.println(pesan);
delay(500);
Serial.println(pesan);
delay(500);
}
Universitas Sumatera Utara
LAMPIRAN C
DATASHEET KOMPONEN
1. DATASHEET MIKROKONTROLER ATMEGA 328P-PU
2. DATASHEET ARDUINO UNO R3
3. DATASHEET LCD (LIQUID CRYSTAL DISPLAY) HD44780U
4. DATASHEET ADJUSTABLE INFRARED
5. DATASHEET DRIVER MOTOR L293D
6. DATASHEET 433MHZ YS-1020
7. DATASHEET DFRDUINO ETHERNET SHIELD
8. DATASHEET GWS MOTOR DC
Universitas Sumatera Utara
GAMBAR RANGKAIAN KESELURUHAN
Perancangan dan implementasi pengendali pintu pagar otomatis berbasis
arduino
Universitas Sumatera Utara
LANJUTAN LAMPIRAN A
GAMBAR RANGKAIAN KESELURUHAN
Perancangan dan implementasi pengendali pintu pagar otomatis berbasis
arduino
Universitas Sumatera Utara
LAMPIRAN B
PROGRAM KESELURUHAN SISTEM
Program pada pagar
#include
#include
byte mac[] = { 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF };
byte ip[] = { 10,0,0,103 };
Server server(80);
char c = 0;
char command[2] = "\0";
String tampilan = "";
char incomingByte; // incoming data
int LED1 = 13; // LED pin
const int tombol_buka = 2;
const int tombol_tutup = 3;
const int motorbuka = 6;
const int motortutup = 7;
const int sensor = 5;
const int limitbuka = 9;
const int limittutup = 8;
String pesan = "N";
int sinyal_tombol_buka = 1;
int sinyal_tombol_tutup = 1;
int sinyal_sensor = 1;
int sinyal_limitbuka = 1;
int sinyal_limittutup = 1;
int status_pintu=0;
int indikator = 0;
void setup() {
Serial.begin(9600);
pinMode(LED1, OUTPUT);
pinMode(tombol_buka, INPUT);
pinMode(tombol_tutup, INPUT);
pinMode(sensor, INPUT);
pinMode(motorbuka, OUTPUT);
pinMode(motorbuka, OUTPUT);
digitalWrite(LED1, LOW);
Ethernet.begin(mac, ip);
server.begin();
}
void loop() {
Client client = server.available();
boolean current_line_is_first = true;
baca_serial();
if (client) {
boolean current_line_is_blank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (c == '\n' && current_line_is_blank) {
client.println("HTTP/1.1 200 OK");
Universitas Sumatera Utara
client.println("Content-Type: text/html");
client.println();
//client.println("");
client.println("Arduino + Gate Controller");
if(status_pintu==0){client.println("Gate Tertutup");}
if(status_pintu==1){client.println("Gate Terbuka");}
client.println("");
client.println("Gate
Open");
client.println("Gate
Close");
client.println("");
client.println("");
client.println("Klik Gate Open Untuk Membuka Gerbang");
client.println("Klik Gate Close Untuk Menutup Gerbang");
baca_serial();
break;
}
if (c == '\n') {
current_line_is_first = false;
current_line_is_blank = true;
}
else if (c != '\r') {
current_line_is_blank = false;
}
if (current_line_is_first && c == '=') {
for (int i = 0; i < 1; i++) {
c = client.read();
command[i] = c;
}
if (!strcmp(command, "1")) {
digitalWrite(LED1, LOW);
//tampilan = "B";
buka_pintu();
}
else if (!strcmp(command, "2")) {
digitalWrite(LED1, HIGH);
//tampilan = "T";
tutup_pintu();
}}} }
delay(1);
client.stop();
baca_serial();
}
baca_serial();
}
void baca_serial()
{
if (Serial.available() > 0) {
incomingByte = Serial.read();
// Serial.println(incomingByte);
if(incomingByte == 'A') {buka_pintu();}
if(incomingByte == 'T') {pesan = "N"; digitalWrite(LED1, HIGH); tutup_pintu(); }}
if(pesan == 'S') {Serial.println(pesan); delay(50); }
if(status_pintu==0 && pesan != 'S'){Serial.println("C"); delay(50); }
if(status_pintu==1 && pesan != 'S'){Serial.println("B"); delay(50); }
sinyal_tombol_buka = digitalRead(tombol_buka);
sinyal_tombol_tutup = digitalRead(tombol_tutup);
Universitas Sumatera Utara
sinyal_limitbuka = digitalRead(limitbuka);
sinyal_limittutup = digitalRead(limittutup);
sinyal_sensor = digitalRead(sensor);
if (sinyal_tombol_buka==LOW) {buka_pintu();}
if (sinyal_tombol_tutup==LOW) { tutup_pintu();}
if (sinyal_sensor==LOW) {pesan="S";}
if (sinyal_limitbuka==LOW && status_pintu==0) {stop_buka_pintu();}
if (sinyal_limittutup==LOW && status_pintu==1) {stop_tutup_pintu();}
}
void buka_pintu()
{
if(status_pintu==0){
digitalWrite(motorbuka, HIGH);
digitalWrite(motortutup, LOW);
digitalWrite(LED1, HIGH);
}}
void stop_buka_pintu()
{
digitalWrite(motorbuka, LOW);
digitalWrite(motortutup, LOW);
digitalWrite(LED1, LOW);
status_pintu=1; }
void tutup_pintu()
{
if(status_pintu==1){
digitalWrite(motorbuka, LOW);
digitalWrite(motortutup, HIGH);
digitalWrite(LED1, HIGH);
pesan = "N";
}}
void stop_tutup_pintu()
{
digitalWrite(motorbuka, LOW);
digitalWrite(motortutup, LOW);
digitalWrite(LED1, LOW);
status_pintu=0;
pesan = "N";
}
Program pada mobil
#include
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
char incomingByte;
String pesan = "A";
void setup() {
lcd.begin(16, 2);
lcd.print("Menunggu Sinyal");
Serial.begin(9600);
}
Universitas Sumatera Utara
void loop() {
if (Serial.available() > 0) {
incomingByte = Serial.read();
delay(100);
if(incomingByte == 'B') {lcd.begin(16, 2); lcd.print("Pintu Terbuka");}
if(incomingByte == 'C') {lcd.begin(16, 2); lcd.print("Pintu Tertutup");}
if(incomingByte == 'S') {lcd.begin(16, 2); lcd.print("Sinyal Tutup"); pesan="T";}
delay(500); }
Serial.println(pesan);
delay(500);
Serial.println(pesan);
delay(500);
}
Universitas Sumatera Utara
LAMPIRAN C
DATASHEET KOMPONEN
1. DATASHEET MIKROKONTROLER ATMEGA 328P-PU
2. DATASHEET ARDUINO UNO R3
3. DATASHEET LCD (LIQUID CRYSTAL DISPLAY) HD44780U
4. DATASHEET ADJUSTABLE INFRARED
5. DATASHEET DRIVER MOTOR L293D
6. DATASHEET 433MHZ YS-1020
7. DATASHEET DFRDUINO ETHERNET SHIELD
8. DATASHEET GWS MOTOR DC
Universitas Sumatera Utara