CHƢƠNG 4 KẾT QUẢ ĐẠT ĐƢỢC CỦA HỆ THỐNG
4.2 QUÁ TRÌNH HOẠT ĐỘNG CỦA SẢN PHẨM
Hình 4.1 Mạch hồn thiện
Hình 4.2 Bật thiết bị 1
Hình 4.4 Tắt thiết bị 1
Hình 4.5 Thơng báo đã tắt thiết bị 1
Hình 4.6 Bật thiết bị 2
Hình 4.7 Thơng báo đã bật thiết bị 2
Hình 4.8 Tắt thiết bị 2
Hình 4.9 Thơng báo đã tắt thiết bị 2
Hình 4.10 Bật thiết bị 3
Hình 4.12 Tắt thiết bị 3
Hình 4.13 Thơng báo đã tắt thiết bị 3
Hình 4.14 Bật thiết bị 4
Hình 4.15 Thơng báo đã bật thiết bị 4
Hình 4.16 Tắt thiết bị 4
Hình 4.17 Thơng báo đã tắt thiết bị 4
Hình 4.18 Kiểm tra nhiệt độ phịng
KẾT LUẬN
Qua thời gian gần 2 tháng nghiên cứu thì đề tài cơ bản đã được hoàn thành, mạch đã được kiểm tra và chạy ổn định. Trong quá trình làm đề tài em xin gửi lời cảm ơn đến Cơ Trần Thị Trà Vinh đã tận tình giúp đỡ em để em có thể hồn thành để tài đúng tiến độ và đạt được mục tiêu đã đề ra.
Đề tài em thực hiện có một số ưu điểm và nhược điểm như sau: Ưu điểm:
Sử dụng mạng viễn thông GSM.
Hệ thống có thể điều khiển thiết bị chỉ cần một tin nhắn. Hệ thống có tính ứng dụng cao.
Nhược điểm:
Mạch chưa tự reset khi lỗi xảy ra.
Em sẽ tiếp tục cố gắng nghiên cứu phát triển hệ thống để nó có thể đáp ứng được nhu cầu thực tế hiện nay.
PHỤ LỤC
Code mạch cân bằng nhiệt:
#include <at89x52.h > #include <intrins.h >
// dinh nghia chan dieu khien led 7 doan
#define CS_ADC P3_0 #define RD_ADC P3_1 #define WR_ADC P3_2 #define LED_1 P2_4 #define LED_2 P2_5 #define LED_3 P2_6 #define LED_4 P2_7 #define RELAY1 P2_0 #define RELAY2 P2_1 #define KEY1 P3_3 #define KEY2 P3_4 #define KEY3 P3_5
// khai bao bien toan cuc
unsigned char code bang_ma[13] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90 , 0x9c, 0xc6, 0xFF};// CODE CHAN LED 7 DOAN
unsigned char dem = 0, time = 0, giay = 0, phut = 0, gio = 0 ; char n1, n2 ,n3 , n4 ;
unsigned char value, temp, nhiet_do; char nhietdocd = 30;
bit caidat = 0;
char chuong_trinh = 0;
/// Ham delay
void delay (unsigned int a) { unsigned int x ; unsigned char y ; for (x=0 ; x<=a ; x ++) {
for (y=0 ; y<=200 ; y ++ ) { } }
}
// ham khoi tao ADC0804 void ADC_0804(void){ CS_ADC=0; WR_ADC=0; _nop_(); WR_ADC=1; CS_ADC=1; delay(10); P1=0XFF; CS_ADC=0; RD_ADC=0; nhiet_do=P1; RD_ADC=1; CS_ADC=1; }
// HAM NGAT TIMER
void ngat_timer0() interrupt 1 { TR0 = 0; TF0 = 0; if(caidat == 1){ n1 = temp/10; n2 = temp%10; n3 = 10;
n4 = 11; } else { n1 = nhietdocd/10; n2 = nhietdocd%10; n3 = 12; n4 = 12; LED_1=LED_2=LED_3=LED_4=1; dem++; if(dem == 1){ P0 = bang_ma[n1]; LED_1 = 0; }; if(dem == 2){ P0 = bang_ma[n2]; LED_2 = 0; }; if(dem == 3){ P0 = bang_ma[n3]; LED_3 = 0; }; if(dem == 4){ dem = 0; P0 = bang_ma[n4]; LED_4 = 0; }; } TR0 = 1; } //Ham chinh void main (void) {
TMOD = 0x01; // timer 1 che do 1 16bit, timer 0 che do 2 8bit tu dong nap lai ET0 = 1; // ngat timer 0
TH0 = 0xEC; // 0xEC
TL0 = 0x77; // cu 100us thi xay ra ngat ET0 = 1;
EA = 1;
TR0 = 1; // khoi chay timer 0
ADC_0804();
while (1) {
} }
CODE DANH CHO SIM900A
#include <main.h> #include <string.h> #include "lcd.c" #include "1wire.c" #include "ds18b20.c"
void send_sms(char *sdt, char n);
unsigned char i, j=13, dau_nhay, str[16], rev, xbuffer; unsigned char *check1,*check2,*check3,*check4; unsigned char den1
unsigned char den2 unsigned char den3 unsigned char den4
unsigned char num1[]="+84984076453";
unsigned char rev_c0,rev_c1,rev_c2,rev_c3,rev_c4,rev_c5; unsigned char buffer[95], tach_so[16];
unsigned char eeprom; int1 new_sms; int1 tb; void Clear_buffer(void) { for(i = 0 ; i < 150 ; i++) { buffer[i] = ' '; delay_us(100); } } void clear_tachso(){ for(i=0;i<16;i++){ tach_so[i]=' '; delay_us(100); } } #int_rda void ISR_RDA(){ //Led_bao=!Led_bao;
rev=getch(); // lay du lieu khi nhan duoc if(rev=='+') rev_c1=rev; if(rev=='C') rev_c2=rev; if(rev=='M') rev_c3=rev; if(rev=='T') rev_c4=rev; if(rev=='I') rev_c5=rev; if(rev_c1=='+'&&rev_c2=='C'&&rev_c3=='M'&&rev_c4=='T'&&rev_c5=='I') {Led_bao=0; new_sms=1;}
if(rev != 13 && rev != 10) buffer[xbuffer++]=rev; if(xbuffer>149) xbuffer=0;
}
unsigned char wait_ok(){ ptr=strstr(buffer,ok);
return 0; }
void deleteall_sms(){
printf("AT+CMGDA=");//delete all message putc(34); printf("DEL ALL"); putc(34); putc(13); delay_ms(1000);
}
void delete_sms(){
printf("AT+CMGD=1");//delete all message putc(13); delay_ms(1000); } void reset_var(){ rev=rev_c0=rev_c1=rev_c2=rev_c3=rev_c4=rev_c5=new_sms=xbuffer=j=dau_nhay= tb=0; } void khoi_tao_GSM(){ Led_bao=0; // bat led PWU_KEY = 1;
delay_ms(1500); // kich 1 xung toi thieu la 1s PWU_KEY = 0;
delay_ms(8000); // cho SIM900A duoc khoi dong xong printf("ATE0"); putc(13); delay_ms(200); // tat che do ECHO printf("AT"); putc(13); delay_ms(2000); // gui lenh AT
printf("AT+CMGF=1"); putc(13); delay_ms(2000); // cau hinh nhan tin nhan dang text(mac dinh la PDU)
Clear_buffer(); reset_var();
printf("AT+CNMI=2,1,0,0,0"); putc(13); delay_ms(2000); // cau hinh khi sim co tin nhan moi
delete_sms(); delay_ms(2000); Clear_buffer(); reset_var(); j=12; // Tong so +84984076453 la 12 send_sms(num1,0); delay_ms(3000);
sprintf(str,"SIM900A San Sang"); LCD_Gotoxy(0,0);
LCD_Puts(str); Led_bao=1; // tat led }
// Goi tin nhan
void send_sms(char *sdt, char n){ Led_bao=0; printf("AT+CMGS="); putc(34); // dau " for(i=0;i<j;i++){putc(*sdt); sdt++;} putc(34); putc(13); delay_ms(2000); // delay 2s switch(n){
case 0: {printf("BAT DAU SAN SANG\n\r"); break;} case 1: {printf("DA BAT DEN SO ,1\n\r"); break;} case 2: {printf("DA TAT DEN SO ,1\n\r"); break;} case 3: {printf("DA BAT DEN SO ,2\n\r"); break;} case 4: {printf("DA TAT DEN SO ,2\n\r"); break;} case 5: {printf("DA BAT DEN SO ,3\n\r"); break;} case 6: {printf("DA TAT DEN SO ,3\n\r"); break;} case 7: {printf("DA BAT DEN SO ,4\n\r"); break;} case 8: {printf("DA TAT DEN SO ,4\n\r"); break;}
case 10: {printf("SAI CU PHAP,BAM “HELP” HOAC GOI DEN 0984076453 DE DUOC TRO GIUP!\n\r"); break;}
case 11: { for(i=0;i<150;i++){ putc(buffer[i]); } break; } delay_ms(100); putc(26); // ctr+z delay_ms(2000);
Led_bao=1; // tat led bao da hoan tat viec gui tin nhan } // Ham chinh void main() { set_tris_a(0b00000011); set_tris_b(0b00100001); set_tris_c(0b10000011); set_tris_d(0x00); set_tris_e(0x00); Coi_chip =1 ;
PWU_KEY = PORTD_0 = PORTD_1 = PORTD_2 = PORTD_3 = 0; Led_bao = 1; delay_ms(500);
eeprom=read_eeprom(0); PORTD_0 = eeprom & 0; PORTD_1 = (eeprom>>1) & 0; PORTD_2 = (eeprom>>2) & 0; PORTD_3 = (eeprom>>3) & 0; // Ham ngat
enable_interrupts(int_rda); enable_interrupts(global); LCD_Init();
delay_ms(200); sprintf(str,"DEMO SIM900A"); LCD_Gotoxy(2,0); LCD_Puts(str); khoi_tao_GSM(); Clear_buffer(); delay_ms(500); // Tat dong benh ngoai while(true){ // Nut reset if(!Reset_gsm){ delay_us(1000); while(!Reset_gsm); PWU_KEY = 1;
delay_ms(2000); // kich 1 xung toi thieu la 1s PWU_KEY = 0;
}
// Khi co tin nhan moi
if(new_sms == 1){ // khi co tin nhan moi den SIM900A new_sms = 0;
Clear_buffer(); // xoa buffer clear_tachso();
reset_var();
//delay_ms(3000);
printf("AT+CMGR=1");putc(13); delay_ms(4000);// cho 2s doc tin nhan moi j=0; for(i=15;i<50;i++){ // 10 if(buffer[i]=='+') dau_nhay=1; if(dau_nhay) { if(buffer[i]=='"') break; else {tach_so[j]=buffer[i]; j++; } }
} delete_sms(); delay_ms(100); //number=strlen(tach_so); LCD_Gotoxy(0,1); LCD_Puts(tach_so); sprintf(str,"%2d",j); LCD_Gotoxy(13,1); LCD_Puts(str); delay_ms(1000);
if(strncmp(tach_so,num1,12)==0){ // so sanh chuoi delay_ms(200);
LCD_Gotoxy(0,1); LCD_Puts(str);
// Dieu khien thiet bi
delay_ms(500); check2=0 ;
check2=strstr(buffer,den1 bat); // tim chuoi "den1 bat" trong chuoi buffer if(strncmp(check2,den1 bat,4)==0){
Bat_den1; // bat thiet bi 1
write_eeprom(0x00,eeprom|=0x01); // dien so 1 vao bit dau tien send_sms(tach_so,1); // phan hoi lai dien thoai la da bat
tb=1; } else{
delay_ms(500); check2=0 ;
check2=strstr(buffer,den1 tat); // tim chuoi "den1 tat" trong chuoi buffer if(strncmp(check2,den1 tat,4)==0){
Tat_den1; // tat thiet bi
write_eeprom(0x00,eeprom&=0x0e); // dien so 0 vao bit dau tien //0 send_sms(tach_so,2);
} }
delay_ms(500); check3=0 ;
check3=strstr(buffer, den2 bat); // tim chuoi " den2 bat" trong chuoi buffer if(strncmp(check3, den2 bat,4)==0){
Bat_den2; // bat thiet bi
write_eeprom(0x00,eeprom|=0x02); // dien so 1 vao bit thu 2 send_sms(tach_so,3); // phan hoi lai dien thoai la da bat tb=1;
} else{
delay_ms(500); check3=0 ;
check3=strstr(buffer, den2 tat); // tim chuoi "den2 tat" trong chuoi buffer if(strncmp(check3, den2 tat,4)==0){
Tat_ den2; // tat thiet bi
write_eeprom(0x00,eeprom&=0x0d); // dien so 0 vao bit dau tien send_sms(tach_so,4);
tb=1; } }
delay_ms(500); check4=0;
check4=strstr(buffer, den3 bat); // tim chuoi " den3 bat" trong chuoi buffer if(strncmp(check4, den3 bat,4)==0){
Bat_ den3; // bat thiet bi
write_eeprom(0x00,eeprom|=0x04); // dien so 0 vao bit dau tien send_sms(tach_so,5); // phan hoi lai dien thoai la da bat
tb=1; } else{
delay_ms(500); check4=0 ;
check4=strstr(buffer, den3 tat); // tim chuoi "den3 tat" trong chuoi buffer if(strncmp(check4, den3 tat,4)==0){
Tat_ den3; // tat thiet bi
write_eeprom(0x00,eeprom&=0x0b); // dien so 0 vao bit dau tien send_sms(tach_so,6);
tb=1; } }
delay_ms(500); check4=0 ;
check4=strstr(buffer, den 4 bat); // tim chuoi "den4 bat" trong chuoi buffer if(strncmp(check4, den4 bat,4)==0){
Bat_den4; // bat thiet bi
write_eeprom(0x00,eeprom|=0x08); // dien so 0 vao bit dau tien send_sms(tach_so,7); // phan hoi lai dien thoai la da bat
tb=1; } else{
delay_ms(500); check4=0 ;
check4=strstr(buffer, den4 tat); // tim chuoi "den4 tat" trong chuoi buffer if(strncmp(check4, den4 tat,4)==0){
Tat_ den4; // tat thiet bi
write_eeprom(0x00,eeprom&=0x07); // dien so 0 vao bit dau tien send_sms(tach_so,8);
tb=1; }
else{
delay_ms(500); check5=0 ;
check5=strstr(buffer, ktnd); // tim chuoi "ktnd" trong chuoi buffer if(strncmp(check4, ktnd,4)==0){
send_sms(tach_so,9); tb=1;
} }
//deleteall_sms(); }
else{
send_sms(tach_so,9); // phan hoi khi nham may chu delay_ms(500);
//deleteall_sms(); }
Clear_buffer(); // xoa buffer Clear_tachso();
reset_var(); deleteall_sms();
Clear_buffer(); // xoa buffer reset_var();
Led_bao = 1; delay_ms(200); Led_bao = 0; delay_ms(200); Led_bao = 1; delay_ms(200); Led_bao = 0; delay_ms(200); Led_bao = 1;
} } }