• Tidak ada hasil yang ditemukan

RANCANG BANGUN SISTEM TANAM DENGAN METODE AKUAPONIK BERBASIS MIKROKONTROLER DAN SMS (SHORT MESSAGE SERVICE) - POLSRI REPOSITORY

N/A
N/A
Protected

Academic year: 2019

Membagikan "RANCANG BANGUN SISTEM TANAM DENGAN METODE AKUAPONIK BERBASIS MIKROKONTROLER DAN SMS (SHORT MESSAGE SERVICE) - POLSRI REPOSITORY"

Copied!
17
0
0

Teks penuh

(1)

Listing Program Aquaponik

/*******************************************************

Chip type : ATmega16

Program type : Application

AVR Core Clock frequency : 12,000000 MHz

Memory model : Small

External RAM size : 0

Data Stack size : 256

*******************************************************/

#include <mega16.h> #include <stdio.h> #include <delay.h>

int detik,menit,jam,tunggu,hitung;

int detik_s,detik_p,menit_s,menit_p,jam_s,jam_p,tunggu_pbp,tunggu_sms;

bit prs_isi,prs_buang,sms_ml,tunggu_t_kran,tunggu_b_kran,tunggu_bp,beri_pakan; bit ubah_jam,ubah_menit,ubah_detik,siap_isi;

// Timer1 overflow interrupt service routine interrupt [TIM1_OVF] void timer1_ovf_isr(void) {

// Reinitialize Timer1 value 50ms TCNT1H=0xDE40 >> 8;

TCNT1L=0xDE40 & 0xff; hitung++;

tunggu++; tunggu_pbp++; tunggu_sms++; }

void to7seg(int angka) {

if (angka==0) {

PORTA.0=0; PORTA.1=0; PORTA.2=0; PORTA.3=0; }

(2)

PORTA.0=1; PORTA.1=0; PORTA.2=0; PORTA.3=0; } if (angka==2) {

PORTA.0=0; PORTA.1=1; PORTA.2=0; PORTA.3=0; } if (angka==3) {

PORTA.0=1; PORTA.1=1; PORTA.2=0; PORTA.3=0; } if (angka==4) {

PORTA.0=0; PORTA.1=0; PORTA.2=1; PORTA.3=0; } if (angka==5) {

PORTA.0=1; PORTA.1=0; PORTA.2=1; PORTA.3=0; } if (angka==6) {

PORTA.0=0; PORTA.1=1; PORTA.2=1; PORTA.3=0; } if (angka==7) {

(3)

PORTA.2=1; PORTA.3=0; }

if (angka==8) {

PORTA.0=0; PORTA.1=0; PORTA.2=0; PORTA.3=1; } if (angka==9) {

PORTA.0=1; PORTA.1=0; PORTA.2=0; PORTA.3=1; }

}

void prs_waktu(void) {

if (hitung>=20) {

hitung=0; detik++; if (detik>=60) {

detik=0; menit++; if (menit>=60) {

menit=0; jam++; if (jam>=24) jam=0; }

} }

(4)

}

void tampil_waktu(void) {

// tampilkan detik digit "2 to7seg(detik_s);

PORTC.0=0; PORTC.1=1; PORTC.2=1; PORTC.3=1; PORTC.4=1; PORTC.5=1; delay_ms(1);

// tampilkan detik digit "1 to7seg(detik_p);

PORTC.0=1; PORTC.1=0; PORTC.2=1; PORTC.3=1; PORTC.4=1; PORTC.5=1; delay_ms(1);

// tampilkan menit digit "2 to7seg(menit_s);

PORTC.0=1; PORTC.1=1; PORTC.2=0; PORTC.3=1; PORTC.4=1; PORTC.5=1; delay_ms(1);

// tampilkan menit digit "1 to7seg(menit_p);

PORTC.0=1; PORTC.1=1; PORTC.2=1; PORTC.3=0; PORTC.4=1; PORTC.5=1; delay_ms(1);

// tampilkan jam digit "2 to7seg(jam_s);

(5)

PORTC.2=1; PORTC.3=1; PORTC.4=0; PORTC.5=1; delay_ms(1);

// tampilkan jam digit "1 to7seg(jam_p);

PORTC.0=1; PORTC.1=1; PORTC.2=1; PORTC.3=1; PORTC.4=1; PORTC.5=0; delay_ms(1); }

void krm_sms1(void) {

PORTC.7=0;

printf("AT+CMGF=1"); putchar(13);

putchar(10); tunggu_sms=0;

while (tunggu_sms<10) {

prs_waktu(); tampil_waktu(); }

printf("AT+CMGS="); putchar('"');

printf("089611527601"); putchar('"');

putchar(13); putchar(10); tunggu_sms=0;

while (tunggu_sms<10) {

prs_waktu(); tampil_waktu(); }

printf("Perhatian !!!"); putchar(13);

putchar(10);

(6)

putchar(13); putchar(10); putchar(0x1A); tunggu_sms=0;

while (tunggu_sms<10) {

prs_waktu(); tampil_waktu(); }

PORTC.7=1; }

void krm_sms2(void) {

PORTC.7=0;

printf("AT+CMGF=1"); putchar(13);

putchar(10); tunggu_sms=0;

while (tunggu_sms<10) {

prs_waktu(); tampil_waktu(); }

printf("AT+CMGS="); putchar('"');

printf("089611527601"); putchar('"');

putchar(13); putchar(10); tunggu_sms=0;

while (tunggu_sms<10) {

prs_waktu(); tampil_waktu(); }

printf("Perhatian !!!"); putchar(13);

putchar(10);

printf("Aliran Listrik dari PLN MATI"); putchar(13);

(7)

while (tunggu_sms<10) {

prs_waktu(); tampil_waktu(); }

PORTC.7=1; }

void ctrl_beri_pkn(void) {

//baca sensor pakan if (PINB.1==0) { krm_sms1(); }

else {

PORTB.5=1; tunggu_pbp=0; tunggu_bp=1; }

beri_pakan=1; }

void main(void) {

DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (1<<DDA3) | (1<<DDA2) | (1<<DDA1) | (1<<DDA0);

PORTA=(1<<PORTA7) | (1<<PORTA6) | (1<<PORTA5) | (1<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

DDRB=(1<<DDB7) | (1<<DDB6) | (1<<DDB5) | (1<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);

PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (1<<PORTB3) | (1<<PORTB2) | (1<<PORTB1) | (1<<PORTB0);

DDRC=0xFF; PORTC=0x00;

// Timer/Counter 1 initialization // Timer Period: 50 ms

(8)

TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (1<<CS11) | (1<<CS10);

TCNT1H=0xDE; TCNT1L=0x40; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;

// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity // USART Baud Rate: 9600

UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);

UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);

UBRRH=0x00; UBRRL=0x47;

// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x04;

// Analog Comparator initialization ACSR=0x80;

SFIOR=0x00;

// Global enable interrupts #asm("sei")

prs_isi=0; //1:proses isi berlangsung prs_buang=0; //1:proses buang berlangsung

sms_ml=0; //0:sms mati lampu blm dilakukan : 1:sms sudah dilakukan tunggu_t_kran=0;

tunggu_b_kran=0; siap_isi=0;

beri_pakan=0;

//jika didalam pot masih ada air => buang if (PINB.3==0)

{

(9)

//buka kran air PORTB.6=0; PORTB.7=1; tunggu=0;

while (tunggu<20) {} PORTB.6=0;

PORTB.7=0;

while (PINB.3==0) {} }

PORTC.7=1; while (1) {

//jika air pot kering => Isi air pot if (PINB.3==1 && prs_isi==0) {

//tutup kran air PORTB.6=1; PORTB.7=0; tunggu=0;

while (tunggu<20) {

prs_waktu(); tampil_waktu(); }

PORTB.6=0; PORTB.7=0;

//hidupkan pompa air PORTB.4=1; prs_isi=1; prs_buang=0; }

//jika air dlm pot penuh => kosongkan air dlm pot if (PINB.2==0 && prs_buang==0)

{

//matikan pompa air PORTB.4=0;

//buka kran air pembuangan PORTB.6=0;

PORTB.7=1; tunggu=0;

while (tunggu<20) {

(10)

}

PORTB.6=0; PORTB.7=0; prs_buang=1; prs_isi=0; }

//cek sumber arus => PLN Mati if (PINB.0==1)

{

if (sms_ml==0) {

sms_ml=1; krm_sms2(); }

} else

sms_ml=0;

//baca waktu untuk pemberian pakan

if (jam==7 && menit==0 && beri_pakan==0) ctrl_beri_pkn();

if (jam==12 && menit==0 && beri_pakan==0) ctrl_beri_pkn();

if (jam==17 && menit==0 && beri_pakan==0) ctrl_beri_pkn();

if (jam==7 && menit==1) beri_pakan=0;

if (jam==12 && menit==1) beri_pakan=0;

if (jam==17 && menit==1) beri_pakan=0;

//hentikan proses pemberian pakan if (tunggu_bp==1)

{

if (tunggu_pbp>30) {

tunggu_bp=0; PORTB.5=0; }

}

//proses dan tampilkan waktu prs_waktu();

(11)

ubah_jam=1;

if (PINA.4==1 && ubah_jam==1) {

jam++; if (jam>23) jam=0; hitung=0; ubah_jam=0; } if (PINA.5==0) ubah_menit=1;

if (PINA.5==1 && ubah_menit==1) {

menit++; if (menit>59) menit=0; hitung=0; ubah_menit=0; } if (PINA.6==0) ubah_detik=1;

if (PINA.6==1 && ubah_detik==1) {

detik++; if (detik>59) detik=0;

hitung=0; ubah_detik=0; }

//proses dan tampilkan waktu prs_waktu();

tampil_waktu(); }

}

Listing Program TES SMS

/******************************************************* This program was created by the

CodeWizardAVR V3.12 Advanced Automatic Program Generator

(12)

Project : Version :

Date : 09/08/2015 Author :

Company : Comments:

Chip type : ATmega16 Program type : Application

AVR Core Clock frequency: 12,000000 MHz Memory model : Small

External RAM size : 0 Data Stack size : 256

*******************************************************/

#include <mega16.h> #include <delay.h> #include <stdio.h>

// Declare your global variables here bit krm_sms;

void main(void) {

DDRC=0xFF; PORTC=0x00; DDRD=0xFF; PORTD=0x00;

// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On || USART Transmitter: On

// USART Mode: Asynchronous || USART Baud Rate: 9600

UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);

UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);

(13)

ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);

SFIOR=(0<<ACME); krm_sms=0;

// Place your code here PORTC.7=1;

delay_ms(250); PORTC.7=0; delay_ms(250); PORTC.7=1; delay_ms(250); PORTC.7=0; delay_ms(250); while (1)

{

if (krm_sms==0) {

PORTC.7=1; krm_sms=1; printf("AT"); putchar(0x0D); putchar(0x0A);

//while (getchar()!='K') {} delay_ms(250);

PORTC.7=0;

printf("AT+CMGF=1"); putchar(0x0D);

putchar(0x0A);

//while (getchar()!='K') {} delay_ms(250);

PORTC.7=1;

printf("AT+CMGS="); putchar('"');

printf("081368024300"); putchar('"');

putchar(0x0D); putchar(0x0A);

printf("Test Kirim SMS dari Mikro Kontroler ...."); putchar(0x0D);

putchar(0x0A);

printf("[SUKSES !!!!!]"); putchar(0x0D);

(14)

delay_ms(250); PORTC.7=0; }

} }

Listing Program tes sms lain

#include <mega16.h> #include <delay.h> #include <stdio.h>

int test=0,krm_sms;

void main(void) {

DDRC=0xFF; PORTC=0x00; DDRD=0xFF; PORTD=0x00;

// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On || USART Transmitter: On

// USART Mode: Asynchronous || USART Baud Rate: 9600

UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);

UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);

UBRRH=0x00; UBRRL=0x4D;

ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);

SFIOR=(0<<ACME); krm_sms=0;

// Place your code here PORTC.7=1;

delay_ms(250); PORTC.7=0; delay_ms(250); PORTC.7=1; delay_ms(250); PORTC.7=0; delay_ms(250); while (1)

(15)

putchar(0xCC); delay_ms(100); PORTC.7=(test%2); test++; if (test>6000) test=0; }

}

Listing Program tes sms2

/******************************************************* This program was created by the

CodeWizardAVR V3.12 Advanced Automatic Program Generator

© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com

Project : Version :

Date : 03/09/2015 Author :

Company : Comments:

Chip type : ATmega16 Program type : Application

AVR Core Clock frequency: 11,059200 MHz Memory model : Small

External RAM size : 0 Data Stack size : 256

*******************************************************/

#include <mega16.h> #include <delay.h> #include <stdio.h>

bit krm_sms;

void main(void) {

DDRC=0xFF; PORTC=0x00; // Port D initialization

// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);

(16)

PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: Off

// USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600

UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);

UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);

UBRRH=0x00; UBRRL=0x47;

// Analog Comparator initialization // Analog Comparator: Off

// The Analog Comparator's positive input is // connected to the AIN0 pin

// The Analog Comparator's negative input is // connected to the AIN1 pin

ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);

SFIOR=(0<<ACME);

krm_sms=0;

// Place your code here PORTC.7=1;

delay_ms(250); PORTC.7=0; delay_ms(250); PORTC.7=1; delay_ms(250); PORTC.7=0; delay_ms(250);

while (1) {

if (krm_sms==0) {

PORTC.7=1; krm_sms=1; printf("AT"); putchar(0x0D); putchar(0x0A);

//while (getchar()!='K') {} delay_ms(250);

(17)

printf("AT+CMGF=1"); putchar(0x0D);

putchar(0x0A);

//while (getchar()!='K') {} delay_ms(250);

PORTC.7=1;

printf("AT+CMGS="); putchar('"');

printf("081368024300"); putchar('"');

putchar(0x0D); putchar(0x0A);

printf("Test Kirim SMS dari Mikro Kontroler ...."); putchar(0x0D);

putchar(0x0A);

printf("[SUKSES !!!!!]"); putchar(0x0D);

putchar(0x0A); putchar(0x1A); delay_ms(250); PORTC.7=0; }

}

Referensi

Dokumen terkait

Selain itu sistem yang dirancang dilengkapi dengan sensor magnet jenis UGN 3503 yang digunakan untuk mendeteksi perubahan posisi magnet yang dipasang pada sepeda motor,dan

Menyatakan dengan sesungguhnya bahwa Laporan Akhir yang telah saya buat ini dengan judul “Pengendalian Portal Meng gunaka Sistem Short Message Service (SMS) Berbasis

 Register perintah yaitu register yang berisi perintah-perintah dari mikrokontroler ke panel LCD ( Liquid Cristal Display ) pada saat proses penulisan data atau

RANCANG BANGUN PERANGKAT LUNAK ALAT PENGELOMPOKAN BUAH KOPI BERDASARKAN WARNA SECARA OTOMATIS VIA SHORT MESSAGE SERVICE (SMS) BERBASIS MIKROKONTROLER ATMEGA32.. (2015

Bahasa penyusun pemrograman yang digunakan adalah bahasa basic dan BASCOM - AVR yang dirilis oleh MCS - ELECTRONIC kemudian digunakan untuk mendownload program,

Selain itu, tak lupa pula penulis ucapkan terima kasih kepada semua pihak yang telah membantu dalam penyusunan laporan akhir ini, penulis banyak

Pada perancangan ini, Arduino Uno digunakan sebagai perangkat penghubung yang telah di program sehingga user atau operator dapat menggunakan running text sebagai

Alhamdulillah, puji syukur kehadirat Allah SWT, yang telah melimpahkan rahmat dan karunia-Nya, sehingga penulis dapat menyelesaikan tugas akhir yang menjadi salah satu syarat