có sơ đồ nguyên lý, sơ đồ khối và lưu đồ giải thuật, mạch in và code đầy đủ cho mạch CẢNH báo NHIỆT độ QUA SMS GSM 900 dùng PIC ...............................................................................................................................................................
CẢNH BÁO NHIỆT ĐỘ QUA SMS MỤC LỤC DANH MỤC CÁC BẢNG BIỂU Bảng Sơ đồ chân LCD…………………………………………… Bảng Sơ đồ chân kết nối Module sim với Simcard…………… 12 ĐỒ ÁN Trang 2/31 CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI 1.1 Khái quát đề tài: Kĩ thuật vi xử lí phát triển nhỏ gọn nhiều so với kĩ thuật số, tích hợp lập trình để điều khiển Vượt trội so với kĩ thuật số, kĩ thuật vi xử lí ứng dụng việc điều khiển khối chuyển đổi tương tự sang số khối hiển thị số Mạch hiển thị nhiệt độ sử dụng cho đời sống hàng ngày Với đề tài em sử dụng cảm biến nhiệt độ LM35, sử dụng PÍC6F877 hiển thị LCD gửi tin nhắn qua module sim900A 1.2 Sơ đồ khối: KHỐI MODULE KHỐI CẢM K BIẾN HỐI XỬ KHỐI HIỂN THỊ LÍ KHỐI NGUỒN CHƯƠNG CÁC LINH KIỆN CƠ BẢN 1.3 Các linh kiện bản: 1.1.1 Cảm biến LM35: Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 3/31 Cảm biến nhiệt độ LM35 loại cảm biến tương tự hay ứng dụng ứng dụng đo thời gian thực Vì hoạt động xác với sai số nhỏ, đồng thời kích thước nhỏ giá thành rẻ Cảm biến LM35 cảm biến nhiệt mạch tích hợp xác cao Cảm biến LM35 hoạt động cách cho già trị hiệu điện định chân Vout ứng với mức nhiệt độ Thông số kĩ thuật: • Điện áp đầu vào: 4V đến 30V • Điện áp đầu ra: -1V đến 6V • Công suất tiêu thụ 60uA • Độ phân giải điện áp đầu 10mV/oC • Độ xác cao 25 C 0.5 C • Trở kháng đầu thấp 0.1 cho 1mA tải Hình 2.1: Sơ đồ chân cảm biến LM35 1.1.2 LCD : Text LCD loại hình tinh thể lỏng nhỏ dùng để hiển thị dòng chữ số bảng mã ASCII Không giống loại LCD lớn, Text LCD chia sẵn thành ô ứng với ô hiển thị kí tự ASCII Cũng lí hiển thị kí tự ASCII nên laoi5 LCD gọi Text LCD (để phân biệt với Graphic LCD hiển thị hình ảnh) Mỗi ô Text LCD bao gồm “chấm” tinh thể lỏng, việc kết hợp ẩn tạo thành kí tự cần hiển thị Trong Text LCD, mẫu kí tự định nghĩa sẵn Kích thước LCD định nghĩa số kí tự hiển thị dòng tổng số dòng mà Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 4/31 LCD có.Ví dụ LCD 16x2 loại có dòng dòng hiển thị 16 kí tự Một số kích thước LCD thông thường gồm 16x1, 16x2, 16x4, 20x2, 20x4….Hình ví dụ text LCD 16x2 Hình 2.2: LCD Text LCD có cách giao tiếp nối tiếp (như I2C) song song Trong phạm vi em giới thiệu loại giao tiếp song song, cụ thể LCD 16x2 điều khiển chip HD44780U hãng Hitachi Sơ đồ chân: Các Text LCD theo chuẩn HD44780U thường có 16 chân 14 chân kết nối với điều khiển hai chân nguồn cho “ đèn LED nền” Thứ tự chân xếp sau: Bảng Sơ đồ chân LCD Chức Sô thứ tự thái Chân logic Ground Tên Vss Trạng Mô tả - 0V - +5V (GND) Nguồn cho LCD Cảnh Báo Nhiệt Độ Qua SMS Vdd(VC C) ĐỒ ÁN Trang 5/31 Tương Vee - – Vdd RS D0–D7: lệnh phản D0–D7: liệu R/W Điều khiển LCD Ghi ( từ AVR vào LCD ) Đọc ( từ LCD vào AVR ) E Vô hiệu hóa LCD Từ LCD hoạt xuống động Bắt đầu ghi/đọc LCD Dữ liệu lệnh D0 0/1 Bit LSB D1 0/1 Bit D2 0/1 Bit 10 D3 0/1 Bit 11 D4 0/1 Bit 12 D5 0/1 Bit 13 D6 0/1 Bit 14 D7 0/1 Bit MSB Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 6/31 Trong số LCD chân LED có đánh số 15 16 số trường hợp chân ghi (Anode) K (Cathode) Chân chân chân nguổn , nối với GND nguồn 5V Chân chân chỉnh độ tương phản (contrast), chân cần nối với biến trở chia áp hình Trong hoạt động, chỉnh để thay đổi giá trị biến trở để đạt độ tương phản cần thiết, sau giữ mức biến trở Các chân điều khiển RS, R/W, EN đường liệu nối trực tiếp với vi điều khiển Tuỳ theo chế độ hoạt động bit hay bit mà chân từ D0 đến D3 bỏ qua nối với vi điều khiển 1.1.3 Tụ điện, điện trở biến trở: Tụ điện: • Tụ điện linh kiện điện tử để ngăn dòng điện chiều 1.1.1.1 qua ngăn cản dòng điện xong chiều, có khả phóng nạp cần thiết • Điện dung đại lượng nói lên khả tích điện hai cực tụ điện, phụ thuộc vào diện tích hai cực, vật liệu làm chất điện môi khoảng cách hai cực C=ξ.S/d Trong đó: C : điện dung tụ điện , đơn vị Fara (F) ξ : số điện môi lớp cách diện d : chiều dày lớp cách điện S : diện tích cực tụ điện • Dung kháng đại lượng đặc trưng cho khả cản trở dòng điện xoay chiều Xc = 1/ωC = 1/2πfC Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 7/31 Điện trở: Điện trở linh kiện điện tử thụ động thiếu mạch điện tử, tác 1.1.1.1 dụng dùng để cản trở dòng điện, tạo sụt áp Nó phụ thuộc vào chất liệu, tiết diện độ dày dây dẫn tính theo công thức: R Trong đó: R điện trở, đơn vị Ω điện trở suất L chiều dài dây dẫn S tiết diện dây Hình dạng kí hiệu: thực tế điện trở loại linh kiện điện tử không phân cực, làm từ hợp chất cacbon kim loại Tỉ lệ pha chế tạo điện trở có trị số khác Hình 2.3:Hình dạng điện trở Kí hiệu điện trở sơ đồ mạch điện tử: Hình 2.4:Hình dạng điện trở sơ đồ mạch Biến trở: Biến trở dạng điện trở có công dụng điện trở thông thường, 1.1.1.2 thay giá trị điện trở 1.4 PIC 16F887: 1.1.4 Giới thiệu PIC 16F887: PIC 16F877 dòng PIC phổ biến Cấu trúc tổng quát: • Được chế tạo công nghệ CMOS • tần số hoạt động tối đa 20MHZ Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 8/31 • • • • cổng song song bits với tín hiệu điều khiển cổng nối tiếp 15 nguồn tắt Nạp chương trình cổng nối tiếp ICSP(In-Circuit Serial • • • • • Programming) Hai so sánh tương tự định thời giám sát Hai CCP (Capture/Compare/PWM) Một biến đổi AD 10 bits, ngõ vào Một định 16 bits (timer 1) hoạt động chế độ tiết kiệm • • • • • lượng với nguồn xung clock 368 bytes RAM 8K Flash ROM Hai định thời bits (timer timer 2) Năm port (A, B, C, D, E) vào với tín hiệu độc lập 256 bytes EEPROM 2.2.2 Sơ đồ chân PIC 16F887: Hình 2.8:Sơ đồ chân PIC16F887 Để PIC hoạt động ta cần cấp nguồn cho PIC.Ngoài thêm vào dao động thạch anh: Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 9/31 Hình 2.9:Sơ đồ PIC 16F887 hoạt động với thạch anh 1.5 Module Sim900A: 1.1.5 Giới thiệu Module Sim900A: Giao tiếp vật lí ứng dụng điện thoại Module Sim900A 60 chân, cung cấp tất giao diện vật lí: • Có Serial port Debug port giúp dễ dàng việc phát triển ứng dụng • Một kênh audio bao gồm Input Microphone Output Speaker • Có thể dễ dàng cấu hình lệnh AT qua cổng giao tiếp nối tiếp Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 10/31 Sim900A hỗ trợ giao thức TCP/IP, hữu ích cho việc truyền liệu internet Sim900A thiết kế với công nghệ tiết kiệm lượng mức tiêu thụ mức 1.5mA chế độ SLEEP Hình 2.10: Hình ảnh thực tế Module Sim900A 1.1.6 Phần cứng Module Sim900A: 1.1.1.3 Mạch nguồn: Cụ thể nguồn cung cấp cho sim900A nguồn DC 3,4V-4,5V Dòng điện đưa vào phải lớn 2A Nếu dòng cung cấp không đủ, điện áp bị xuống mức yêu cầu Sim900A không khởi động Nếu điện áp lớn 4.5V sim900A bị cháy 1.1.1.4 Giao tiếp với simcard: Module Sim900A hỗ trợ loại simcard: 1.8V 3V Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 15/31 1.1.10 Sơ đồ trạng thái đèn Module Sim900A: Hình 3.4 Sơ đồ trạng thái đèn Module Sim900A 1.7 Sơ đồ Layout: Hình 3.5 Sơ đồ Layout Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 16/31 1.8 Lưu đồ giải thuật: START Khởi tạo modul SIM 900A (Bật nguồn modul, khởi tạo tin nhắn SMS) Khởi tạo LCD Y Kiểm tra tin nhắn điều khiển Đọc tin nhắn, kiểm tra điều khiển N Đọc ADC Nhiệt độ > 40 END Cảnh Báo Nhiệt Độ Qua SMS Y Gửi tin nhắn báo động ĐỒ ÁN Trang 17/31 CHƯƠNG MÔ PHỎNG THỰC TẾ 1.9 Sơ đồ mạch chưa chạy: Hình 4.1 Sơ đồ mạch chưa chạy 4.2 Sơ đồ mạch sau chạy: Hình 4.2 Sơ đồ mạch sau chạy Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 18/31 CHƯƠNG KẾT LUẬN 1.10 Ưu điểm nhược điểm: 1.1.11 Ưu điểm: - Nhỏ gọn - Tính thực tế cao 1.1.12 Nhược điểm: - Đo cảnh báo nhiệt độ không còi chống trộm - Giá thành module sim cao 1.11 Khả ứng dụng phát triển: 1.1.13 Khả ứng dụng: - Ta sử dụng mạch đo nhiệt độ môi trường nhà kho, tủ lạnh, bệnh viện, trường học…và áp dụng hộ gia đình 1.1.14 Phát triển: - Trong tương lai, ta phát triển lên thành mạch báo cháy giúp tránh nhiều thiệt hại hoả hoạn gây TÀI LIỆU THAM KHẢO [1] TốngVănOn (2000) Vi mạch mạch tạo sóng, Nhà xuất giáo dục [2] Datasheet module Sim900A ,xem 03/03/2016 Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 19/31 Phụ lục #include #device ADC = 10 #use delay(clock=20000000) #include #include "LCD16x2.c" #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,DISABLE_INTS Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 20/31 #fuses HS,NOWDT,PROTECT,NOBROWNOUT,PUT,NOLVP,NOCPD,NOWRT,NOCP D,NOIESO,NOFCMEN,NOMCLR #define pin_pwgsm PIN_D4 #define buffer_size 80 unsigned buffer[buffer_size]; unsigned int8 c = 0, c1 = 0, counter_buffer = 0; int1 sms_mode = false; char *ptr1 = 0; char *ptr2 = 0; void read_sms(char index); void send_sms(unsigned int8 n); void doc_nhiet_do(); unsigned int8 nhiet_do = 0; int1 st_temp = 0; #define nhiet_do_max 40 char data[15]; char data_len; void init(); int1 get_ok(void); void erase_buffer(); char number[15]; char number_len; char pass[10]; char pass_len; char st_sms = 0xff; void main(){ init(); Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 21/31 while(TRUE){ if(sms_mode == true){ read_sms(1); }; if(st_sms != 0xff){ send_sms(st_sms); st_sms = 0xff; }; doc_nhiet_do(); } } void read_sms(char index){ unsigned int8 i,j; sms_mode = false; erase_buffer(); printf("AT+CMGR=%d\r",index); delay_ms(500); if(sms_mode == true){ strcpy(data,pass); data_len = strlen(data); ptr1 = strstr(buffer,data); if(strncmp(ptr1,data,data_len) == 0){ //Dat so dien thoai strcpy(data,"sdt"); data_len = strlen(data); ptr2 = strstr(buffer,data); if(strncmp(ptr2,data,data_len) == 0){ number_len = 0; Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 22/31 for(i = 0; i < 15; i ++){ number[i] = 0x00; }; for(i = 0; i < counter_buffer; i ++){ if(buffer[i] == 't') break; }; i ++; for(; i < counter_buffer; i ++){ if(buffer[i] != '.'){ number[number_len] = buffer[i]; number_len ++; if(number_len >= 15) break; } else{ break; }; } if(number_len < 15){ j = 0; for(i = 0; i < number_len; i ++){ j ++; write_eeprom(j,number[i]); }; write_eeprom(0,number_len); st_sms = 1; lcd_gotoxy(1,1); printf(lcd_putc," DK SDT TC! "); }; }; Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 23/31 strcpy(data,"mk"); data_len = strlen(data); ptr2 = strstr(buffer,data); if(strncmp(ptr2,data,data_len) == 0){ pass_len = 0; for(i = 0; i < 10; i ++){ pass[i] = 0x00; }; for(i = 0; i < counter_buffer; i ++){ if(buffer[i] == 'k') break; }; i ++; for(; i < counter_buffer; i ++){ if(buffer[i] != '.'){ pass[pass_len] = buffer[i]; pass_len ++; if(pass_len >= 10) break; } else{ break; }; } if(pass_len < 10){ j = 20; for(i = 0; i < pass_len; i ++){ j ++; write_eeprom(j,pass[i]); }; write_eeprom(20,pass_len); Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 24/31 st_sms = 2; lcd_gotoxy(1,1); printf(lcd_putc," Doi MK TC! "); }; }; }; }; sms_mode = false; erase_buffer(); delay_ms(1000); printf("AT+CMGD=%d\r",index); delay_ms(2000); } void doc_nhiet_do(){ nhiet_do = read_adc() / 5; lcd_gotoxy(1,2); printf(lcd_putc," Nhiet do:%3u%cC",nhiet_do,0xdf); if((nhiet_do >= nhiet_do_max) && (st_temp == 1)){ st_temp = 0; send_sms(0); }; if((nhiet_do < (nhiet_do_max - 2)) && (st_temp == 0)){ st_temp = 1; }; } void init(){ unsigned int8 i,j; //Khoi tao ADC Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 25/31 SETUP_ADC(ADC_CLOCK_DIV_32); SETUP_ADC_PORTS(sAN0 | VSS_VREF); SET_ADC_CHANNEL(0); lcd_init(); ENABLE_INTERRUPTS(INT_RDA); ENABLE_INTERRUPTS(GLOBAL); erase_buffer(); delay_ms(200); printf("AT\r"); delay_ms(200); if(get_ok() == 0){ lcd_gotoxy(1,1); printf(lcd_putc," Init SIM900A "); output_bit(pin_pwgsm,1); delay_ms(1000); output_bit(pin_pwgsm,0); printf("AT\r"); while(get_ok() == 0){ printf("AT\r"); delay_ms(200); }; lcd_gotoxy(1,1); printf(lcd_putc," Init Sucsess "); }; printf("AT+CNMI=2,1,0,0,0\r"); delay_ms(200); printf("AT+CMGF=1\r"); delay_ms(200); printf("AT+CLIP=1\r"); Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 26/31 delay_ms(200); printf("AT+CMGD=4\r"); delay_ms(200); lcd_gotoxy(1,1); printf(lcd_putc,"CB Nhiet Do SMS!"); lcd_gotoxy(1,2); printf(lcd_putc," Nhiet do:%3u%cC",nhiet_do,0xdf); //Doc sdt for(i = 0; i < 15; i ++){ number[i] = 0; } number_len = read_eeprom(0); if(number_len < 15){ j = 0; for(i = 0; i < number_len; i ++){ j ++; number[i] = read_eeprom(j); }; }; //Doc mat khau for(i = 0; i < 10; i ++){ pass[i] = 0; } pass_len = read_eeprom(20); if(pass_len < 10){ j = 20; for(i = 0; i < pass_len; i ++){ j ++; Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 27/31 pass[i] = read_eeprom(j); }; } else{ strcpy(pass,"123456"); }; } int1 get_ok(void){ char *ptr; char string_s1[]="OK"; ptr = strstr(buffer,string_s1); if(strncmp(ptr,string_s1,2) == 0){ return 1; } else{ return 0; } } void erase_buffer(){ unsigned int8 i; for(i = 0; i < buffer_size; i ++){ buffer[i] = 0x00; }; counter_buffer = 0; } void send_sms(unsigned int8 n){ delay_ms(2000); Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 28/31 printf("AT+CMGS=\""); printf(number); printf("\"\r\n"); delay_ms(1000); switch(n){ case 0: printf("Canh bao!\r"); printf("Nhiet lon hon %u C\r",nhiet_do_max); break; case 1: printf("Dang Ky Thanh Cong SDT: "); printf(number); break; case 2: printf("Doi Mat Khau Thanh Cong: "); printf(pass); break; }; delay_ms(1000); putc(26); delay_ms(5000); } #INT_RDA void rda_isr(){ c = getchar(); if(c == '#'){c1 = c; counter_buffer = 0;}; if(c == '.' && c1 == '#'){sms_mode = true; c1 = 0;}; if(counter_buffer > buffer_size){counter_buffer = 0;}; buffer[counter_buffer] = c; Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 29/31 counter_buffer ++; } Cảnh Báo Nhiệt Độ Qua SMS ... hiệu độc lập 256 bytes EEPROM 2.2.2 Sơ đồ chân PIC 16F887: Hình 2.8:Sơ đồ chân PIC1 6F887 Để PIC hoạt động ta cần cấp nguồn cho PIC. Ngoài thêm vào dao động thạch anh: Cảnh Báo Nhiệt Độ Qua SMS. .. nhiệt độ: Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 14/31 Hình 3.2 Sơ đồ vi điều khiển cảm biến nhiệt độ 1.1.9 Sơ đồ Module Sim với LCD: Hình 3.3 Sơ đồ Module Sim với LCD Cảnh Báo Nhiệt Độ Qua SMS ĐỒ... pass_len; char st _sms = 0xff; void main(){ init(); Cảnh Báo Nhiệt Độ Qua SMS ĐỒ ÁN Trang 21/31 while(TRUE){ if (sms_ mode == true){ read _sms( 1); }; if(st _sms != 0xff){ send _sms( st _sms) ; st _sms = 0xff;