100 DATASHEET IC A. IC Atmega 328P
100
DATASHEET IC
A. IC Atmega 328P
101
102
103
104
105
106
B. IC FT232RL
107
108
109
110
111
112
C. IC Regulator L78XX
113
114
115
116
117
D. IC Regulator LM317
118
119
120
121
E. IC LM358
122
123
124
125
126
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <gprs.h>
#include <sim800.h>
#include <SoftwareSerial.h>
#define trigPin 7
#define echoPin 6
#define led1 8
#define led2 9
#define led3 10
#define led4 11
#define buzzer 12
LiquidCrystal_I2C lcd(0x3f,16,2);
int b;
int i;
long duration, distance;
GPRS gprs;
const int maxNoHp = 1;
char* hp[maxNoHp]={"087887968331"};
bool smsSiaga4 =true , smsSiaga3 =true, smsSiaga2 =true, smsSiaga1 =true, firstBoot = true;
void kirimSMS(char pesan[])
{
for(int i = 0; i <maxNoHp; i++)
{
gprs.sendSMS(hp[i],pesan);
127
}
}
void setup()
{
pinMode(buzzer,OUTPUT);
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
Serial.begin(9600);
while(!Serial);
Serial.println("Persiapan SIM800L untuk Sistem");
gprs.preInit();
delay(1000);
while(0 != gprs.init())
{
delay(200);
Serial.println("init error\r\n"); //pesan di Serial Monitor jika proses init module GPRS Gagal
}
Serial.println("Init succes..."); //pesan di Serial Monitor jika proses init module GPRS Sukses
delay(1000);
128
kirimSMS("SIM SMS dan Sistem Siap");//pemberitahuan SMS ke nomor HP bahwa SIM dan Sistem siap
delay(3000);
lcd.begin();
lcd.setCursor(0,0);
lcd.print("Bissmillah");
delay(1000);
lcd.begin();
lcd.setCursor(0,0);
lcd.print("SIM DAN SISTEM");//Tampilan di LCD bahwa SIM siap
lcd.setCursor(3,1);
lcd.print("TELAH SIAP");
delay(2000);
digitalWrite(12,HIGH);
delay(500);
digitalWrite(12,LOW);//Tes buzzer dan penanda sistem siap
delay(500);
lcd.begin();
lcd.setCursor(0,0);
lcd.print("Pengukuran Level");
lcd.setCursor(0,1);
lcd.print("Ketinggian Air");
delay(2000);
lcd.clear();
}
129
void buzz()//Void buzzer untuk alarm
{
pinMode(buzzer,OUTPUT);
digitalWrite(buzzer,HIGH);
pinMode(led4,OUTPUT);
digitalWrite(led4,HIGH);
for (b = 0; b < 10; b++)
{
digitalWrite(12, HIGH);
digitalWrite(led4,HIGH);
delay(500);
digitalWrite(12, LOW);
digitalWrite(led4,LOW);
delay(250);
}
}//akhir void buzzer
void Siaga4()//Void untuk level siaga4
{
kirimSMS("Ketinggian Air Siaga 4");
smsSiaga4 = false;
smsSiaga3 = true;
smsSiaga2 = true;
smsSiaga1 = true;
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
130
digitalWrite(led4, LOW);
}//Akhir void level siaga4
void Siaga3()//Void untuk level siaga3
{
kirimSMS("Ketinggian Air Siaga 3");
smsSiaga4 = true;
smsSiaga3 = false;
smsSiaga2 = true;
smsSiaga1 = true;
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
}//Akhir void level siaga3
void Siaga2()//Void untuk level siaga2
{
kirimSMS("Ketinggian Air Siaga 2");
smsSiaga4 = true;
smsSiaga3 = true;
smsSiaga2 = false;
smsSiaga1 = true;
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
131
digitalWrite(led4, LOW);
}//Akhir void level siaga2
void Siaga1()//Void untuk level Siaga1
{
kirimSMS("Ketinggian Air Siaga 1");
smsSiaga4 = true;
smsSiaga3 = true;
smsSiaga2 = true;
smsSiaga1 = false;
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}//Akhir void level Siaga1
void loop()//Perulangan program
{
digitalWrite(trigPin,LOW);//Sensor Ultrasonic mendeteksi permukaan air/benda
delayMicroseconds(10);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
delayMicroseconds(10);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;//Perhitungan untuk mendapatkan jarak sentimeter
132
lcd.begin();//Tampilan Ketinggian air di LCD 16x2 dalam satuan CM
lcd.setCursor(0,0);
lcd.print("Ketinggian Air");
lcd.setCursor(0,1);lcd.print("Saat Ini");
lcd.setCursor(14,1);lcd.print("CM");
lcd.setCursor(11,1);lcd.print(distance);
if (distance >=30 && smsSiaga4)//Pengontrolan level ketinggian air dan output lainya
{Siaga4();}
if (distance >=25 && distance <30 && smsSiaga3)
{Siaga3();}
if (distance >15 && distance <25 && smsSiaga2)
{Siaga2();}
if (distance <=15) {
if(!firstBoot){
if(smsSiaga1){
Siaga1();
}
buzz();
}
else{
lcd.clear();
lcd.print("Detecting....");
firstBoot = false;
}
}}
133
SKEMA RANGKAIAN KESELURUHAN
134
DAFTAR KOMPONEN DAN HARGA
No Nama Komponen Banyak Komponen
Harga satuan Total
1 Atmega 328P 1 Rp 30000 Rp 30000 2 FT232RL 1 Rp 30000 Rp 30000 3 Ultrasonic HC-SR04 1 Rp 11500 Rp 11500 4 Modul SIM800L 1 Rp 75500 Rp 75500 5 LCD/I2C 16x2 1 Rp 29600 Rp 29600 6 LED 5mm 5 Rp 1000 Rp 5000 7 Kabel Jumper 20 Rp 1000 Rp 20000 8 Pin Header Female 4 Rp 2000 Rp 8000 9 Box Alat 1 Rp 14000 Rp 14000 10 Soket IC 28 pin 1 Rp 4000 Rp 4000 11 PCB Double Layer 10x20 1 Rp 40000 Rp 40000 12 Kapasitor Elko 8 Rp 2000 Rp 16000 13 Kabel AC 220V 1 Rp 15000 Rp 15000 14 USB type B female 1 Rp 4000 Rp 4000 15 Resistor 5 Rp 500 Rp 2500 16 Dioda 3 Rp 500 Rp 1500 17 Crystal 16Mhz 1 Rp 2000 Rp 2000 18 Elco SMD 2 Rp 2300 Rp 4600 19 Saklar 1 Rp 2000 Rp 2000 20 IC L7812 1 Rp 2000 Rp 2000 22 IC L7805 1 Rp 2000 Rp 2000 23 IC LM317T 1 Rp 3000 Rp 3000 24 Trafo CT Step Down 1 Rp 25000 Rp 25000 25 Sekering Kaca 2A 1 Rp 1000 Rp 1000 26 LED SMD 5 Rp 300 Rp 1500 27 Push button 1 Rp 1000 Rp 1000 28 Resistor SMD 6 Rp 1000 Rp 6000
Total Rp 356700
135
PCB LAYOUT
A. PCB Layout Arduino
Layout PCB komponen Layout PCB Layer atas.
Layout PCB Layer Bawah
B. PCB Layout Shield
Layout PCB Layer Bawah Layout PCB komponen.
136
C. PCB Layout Power Supply
Layout PCB Layer Bawah Layout PCB Komponen
D. PCB Layout LED
Layout PCB Layer Bawah Layout PCB Komponen
137
FOTO ALAT
A. Foto alat lengkap
B. Foto alat kondisi Siaga 4
C. Foto alat kondisi Siaga 3
138
D. Foto alat kondisi Siaga 2
E. Foto alat kondisi Siaga 1
F. Contoh format SMS yang terkirim.