Tải bản đầy đủ (.docx) (29 trang)

CẢNH báo NHIỆT độ QUA SMS GSM 900 dùng PIC (có code và mạch in)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (531.98 KB, 29 trang )

CẢNH BÁO NHIỆT ĐỘ QUA SMS
MỤC LỤC

DANH MỤC CÁC BẢNG BIỂU

Bảng 1 Sơ đồ chân của LCD……………………………………………..4
Bảng 2 Sơ đồ chân kết nối giữa Module sim với Simcard……………..12

1


ĐỒ ÁN 2
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í hiện nay rất phát triển và nhỏ gọn hơn rất nhiều so với kĩ thuật số,
nó được tích hợp và 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í được ứng dụng trong việc điều khiển khối chuyển đổi tương tự sang số và khối
hiển thị số. Mạch hiển thị nhiệt độ được sử dụng cho đời sống hàng ngày. Với đề tài
này em sẽ sử dụng cảm biến nhiệt độ LM35, sử dụng PÍC6F877 hiển thị LCD và
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Ị



KHỐI NGUỒN

CHƯƠNG 1. CÁC LINH KIỆN CƠ BẢN

1.3 Các linh kiện cơ bản:
1.1.1

Cảm biến LM35:

Cảnh Báo Nhiệt Độ Qua SMS


ĐỒ ÁN 2
Trang 3/31

Cảm biến nhiệt độ LM35 là một loại cảm biến tương tự rất hay được ứng dụng
trong các ứng dụng đo thời gian thực. Vì nó hoạt động khá chính xác với sai số
nhỏ, đồng thời kích thước nhỏ và giá thành rẻ. Cảm biến LM35 là bộ cảm biến nhiệt
mạch tích hợp chính xác cao. Cảm biến LM35 hoạt động bằng cách cho ra một già
trị hiệu điện thế nhất định tại chân Vout ứng với mỗ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ụ là 60uA
• Độ phân giải điện áp đầu ra là 10mV/oC
• Độ chính xác cao ở 25 C là 0.5 C
• Trở kháng đầu ra 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 là các loại màn hình tinh thể lỏng nhỏ dùng để hiển thị các dòng chữ
hoặc số trong bảng mã ASCII. Không giống các loại LCD lớn, Text LCD được chia
sẵn thành từng ô và ứng với mỗi ô chỉ có thể hiển thị một kí tự ASCII. Cũng vì lí do
chỉ hiển thị được kí tự ASCII nên laoi5 LCD này được gọi là Text LCD (để phân
biệt với Graphic LCD có thể hiển thị hình ảnh). Mỗi ô của Text LCD bao gồm các
“chấm” tinh thể lỏng, việc kết hợp ẩn và hiện sẽ tạo thành một kí tự cần hiển thị.
Trong các Text LCD, các mẫu kí tự được định nghĩa sẵn . Kích thước của các LCD
được định nghĩa bằng số kí tự có thể hiển thị trên một dòng và tổng số dòng mà

Cảnh Báo Nhiệt Độ Qua SMS


ĐỒ ÁN 2
Trang 4/31

LCD có.Ví dụ LCD 16x2 là loại có 2 dòng và mỗi dòng có thể 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 1
là một ví dụ text LCD 16x2

Hình 2.2: LCD
Text LCD có 2 cách giao tiếp cơ bản là nối tiếp (như I2C) và song song. Trong

phạm vi bài này em chỉ giới thiệu loại giao tiếp song song, cụ thể là LCD 16x2 điều
khiển bởi chip HD44780U của hãng Hitachi.
 Sơ đồ chân:
Các Text LCD theo chuẩn HD44780U thường có 16 chân trong đó 14 chân kết nối
với bộ điều khiển và hai chân nguồn cho “ đèn LED nền”. Thứ tự các chân được sắp
xếp như sau:

Bảng 1. Sơ đồ chân của LCD
Chức

Sô thứ

năng

tự

thái

Chân

logic

Ground

1

Tên

Vss


Trạng

Mô tả

-

0V

-

+5V

(GND)
Nguồn

2

cho
LCD

Cảnh Báo Nhiệt Độ Qua SMS

Vdd(VC
C)


ĐỒ ÁN 2
Trang 5/31

Tương


3

Vee

-

0 – Vdd

RS

0

D0–D7:

1

lệnh

phản

4

D0–D7:
dữ liệu

R/W

Điều khiển LCD


0

Ghi ( từ

1

AVR vào
LCD )

5

Đọc ( từ
LCD vào
AVR )
6

E

0

Vô hiệu

1

hóa LCD

Từ 1

LCD hoạt


xuống 0

động
Bắt đầu
ghi/đọc
LCD

Dữ liệu lệnh

7

D0

0/1

Bit 0 LSB

8

D1

0/1

Bit 1

9

D2

0/1


Bit 2

10

D3

0/1

Bit 3

11

D4

0/1

Bit 4

12

D5

0/1

Bit 5

13

D6


0/1

Bit 6

14

D7

0/1

Bit 7 MSB

Cảnh Báo Nhiệt Độ Qua SMS


ĐỒ ÁN 2
Trang 6/31

Trong một số LCD 2 chân LED nền có đánh số 15 và 16 nhưng trong một số trường
hợp 2 chân này được ghi là (Anode) và K (Cathode). Chân 1 và chân 2 là các chân
nguổn , được nối với GND và nguồn 5V. Chân 3 là chân chỉnh độ tương phản
(contrast), chân này cần được nối với một biến trở chia áp như trong hình 2. Trong
khi hoạt động, chỉnh để thay đổi giá trị biến trở để đạt được độ tương phản cần thiết,
sau đó giữ mức biến trở này. Các chân điều khiển RS, R/W, EN và các đường dữ
liệu được nối trực tiếp với vi điều khiển. Tuỳ theo chế độ hoạt động 4 bit hay 8 bit
mà các chân từ D0 đến D3 có thể bỏ qua hoặc nối với vi điều khiển.
1.1.3 Tụ điện, điện trở và biến trở:
Tụ điện:
• Tụ điện là linh kiện điện tử để ngăn dòng điện một chiều đi


1.1.1.1

qua và ngăn cản dòng điện xong chiều, còn có khả năng
phóng nạp khi cần thiết.
• Điện dung là đại lượng nói lên khả năng tích điện trên hai bản cực
của tụ điện, nó phụ thuộc vào diện tích hai bản cực, vật liệu làm
chất điện môi và khoảng cách giữa hai bản cực.
C=ξ.S/d
Trong đó:
C : là điện dung tụ điện , đơn vị là Fara (F)
ξ : là hằng số điện môi của lớp cách diện.
d : là chiều dày của lớp cách điện.
S : là diện tích bản cực của tụ điện.


Dung kháng là đại lượng đặc trưng cho khả năng 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 2
Trang 7/31

Điện trở:
Điện trở là linh kiện điện tử thụ động không thể thiếu trong các mạch điện tử, tác
1.1.1.1


dụng là 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 và độ dày của dây dẫn và được tính theo công thức:
R
Trong đó: R là điện trở, đơn vị là Ω
là điện trở suất
L là chiều dài dây dẫn
S là tiết diện của dây
Hình dạng và kí hiệu: trong thực tế điện trở là loại linh kiện điện tử không
phân cực, được làm từ hợp chất cacbon và kim loại. Tỉ lệ pha chế sẽ tạo ra
các điện trở có trị số khác nhau

Hình 2.3:Hình dạng của điện trở
Kí hiệu điện trở trong các sơ đồ mạch điện tử:

Hình 2.4:Hình dạng điện trở trong các sơ đồ mạch
Biến trở:
Biến trở là một dạng của điện trở có công dụng như điện trở thông thường,
1.1.1.2

nhưng có thể thay thế giá trị điện trở được.

1.4 PIC 16F887:
1.1.4 Giới thiệu về PIC 16F887:
PIC 16F877 là dòng PIC phổ biến nhất hiện nay. Cấu trúc tổng quát:
• Được chế tạo bằng công nghệ CMOS.
• tần số hoạt động tối đa 20MHZ.

Cảnh Báo Nhiệt Độ Qua SMS



ĐỒ ÁN 2
Trang 8/31






một cổng song song 8 bits với các tín hiệu điều khiển.
một cổng nối tiếp.
15 nguồn tắt.
Nạp chương trình bằng cổng nối tiếp ICSP(In-Circuit Serial







Programming)
Hai bộ so sánh tương tự.
một bộ định thời giám sát.
Hai bộ CCP (Capture/Compare/PWM).
Một bộ biến đổi AD 10 bits, 8 ngõ vào
Một bộ định 16 bits (timer 1) có thể hoạt động trong chế độ tiết kiệm








năng lượng với nguồn xung clock ngoài.
368 bytes RAM.
8K Flash ROM.
Hai bộ định thời 8 bits (timer 0 và timer 2).
Năm port (A, B, C, D, E) vào ra với tín hiệu độc lập.
256 bytes EEPROM.

2.2.2 Sơ đồ chân của 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 ra có thể thêm vào bộ
dao động thạch anh:

Cảnh Báo Nhiệt Độ Qua SMS


ĐỒ ÁN 2
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 về Module Sim900A:
Giao tiếp vật lí trong ứng dụng điện thoại của Module Sim900A là 60 chân,
nó cung cấp tất cả các giao diện vật lí:
• Có Serial port và Debug port giúp dễ dàng hơn trong việc phát triển
ứng dụng
• Một kênh audio bao gồm Input của Microphone và Output của
Speaker

• Có thể dễ dàng được cấu hình bằng lệnh AT qua cổng giao tiếp nối
tiếp

Cảnh Báo Nhiệt Độ Qua SMS


ĐỒ ÁN 2
Trang 10/31

Sim900A hỗ trợ giao thức TCP/IP, rất hữu ích cho việc truyền dữ liệu trên
internet. Sim900A được thiết kế với công nghệ tiết kiệm năng lượng vì vậy
mức tiêu thụ chỉ ở 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 của Module Sim900A:
1.1.1.3
Mạch nguồn:
Cụ thể nguồn cung cấp cho sim900A là nguồn DC 3,4V-4,5V. Dòng điện đưa
vào phải lớn hơn hoặc bằng 2A. Nếu dòng cung cấp không đủ, điện áp sẽ bị
xuống dưới mức yêu cầu và Sim900A không được khởi động. Nếu điện áp lớn
hơn 4.5V thì sim900A sẽ bị cháy.
1.1.1.4
Giao tiếp với simcard:
Module Sim900A hỗ trợ 2 loại simcard: 1.8V và 3V.

Cảnh Báo Nhiệt Độ Qua SMS



ĐỒ ÁN 2
Trang 11/31

Hình 2.11: Module sim kết nối với Simcard

Bảng 2:Sơ đồ chân kết nối giữa Module sim với Simcard
Pin Name

Signal

Description

C1

SIM_VDD

SIM card power supply

C2

SIM_RST

SIM card reset

C3

SIM_CLK

SIM card clock


C5

GND

Connect to GND

C6

VPP

Not connect

C7

SIM_DATA

SIM card data I/0

1.1.1.5

Kết nối với vi điều khiển:

Cảnh Báo Nhiệt Độ Qua SMS


ĐỒ ÁN 2
Trang 12/31

Hình 2.12: Kết nối module Sim với Vi điều khiển
Có bảy đường truyền kết nối, em chỉ sử dụng hai đường là RXD và TXD.


Giao tiếp với sim900A qua AT conmand:
Việc điều khiển SIM900A được thực hiện thông qua việc truyền các lệnh

1.1.1.6

AT(các lệnh này thường bắt đầu bằng “AT”) dùng để điều khiển các thiết bị
tương tác với mạng
Ví dụ:
Lệnh AT để gửi một tin nhắn:
AT+CMGS=”+841289853131”
>Test <Ctrl+Z>
Lệnh AT để lấy danh sách tin nhắn:
AT+CMGL=”ALL”
Lệnh AT để đọc tin nhắn:
AT+GMGR=1
Lệnh AT để xóa tin nhắn:
AT+CMGD=1

Cảnh Báo Nhiệt Độ Qua SMS


ĐỒ ÁN 2
Trang 13/31

CHƯƠNG 2. SƠ ĐỒ NGUYÊN LÍ VÀ LAYOUT
1.6 Sơ đồ nguyên lí:
1.1.7

Sơ đồ mạch nguồn::


Hỉnh 3.1 Sơ đồ mạch nguồn
1.1.8

Sơ đồ vi điều khiển và cảm biến nhiệt độ:

Cảnh Báo Nhiệt Độ Qua SMS


ĐỒ ÁN 2
Trang 14/31

Hình 3.2 Sơ đồ vi điều khiển và 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


ĐỒ ÁN 2
Trang 15/31

1.1.10 Sơ đồ trạng thái đèn của Module Sim900A:

Hình 3.4 Sơ đồ trạng thái đèn của Module Sim900A

1.7 Sơ đồ Layout:


Hình 3.5 Sơ đồ Layout

Cảnh Báo Nhiệt Độ Qua SMS


ĐỒ ÁN 2
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 và đ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 2
Trang 17/31

CHƯƠNG 3. MÔ PHỎNG THỰC TẾ
1.9 Sơ đồ mạch khi chưa chạy:

Hình 4.1 Sơ đồ mạch khi chưa chạy.
4.2 Sơ đồ mạch sau khi chạy:

Hình 4.2 Sơ đồ mạch sau khi chạy

Cảnh Báo Nhiệt Độ Qua SMS


ĐỒ ÁN 2
Trang 18/31

CHƯƠNG 4. KẾT LUẬN
1.10

Ưu điểm và 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 và cảnh báo nhiệt độ nhưng không còi như chống trộm.
- Giá thành module sim cao.
1.11 Khả năng ứng dụng và phát triển:
1.1.13 Khả năng ứng dụng:
- Ta có thể sử dụng mạch đo nhiệt độ trong các môi trường như nhà kho, tủ
lạnh, bệnh viện, trường học…và có thể áp dụng trong hộ gia đình
1.1.14 Phát triển:
- Trong tương lai, ta có thể phát triển lên thành mạch báo cháy giúp chúng ta
tránh được nhiều thiệt hại do hoả hoạn gây ra.

TÀI LIỆU THAM KHẢO
[1] TốngVănOn (2000). Vi mạch và mạch tạo sóng, Nhà xuất bản giáo dục
[2] Datasheet module Sim900A
< />03/03/2016

Cảnh Báo Nhiệt Độ Qua SMS


ĐỒ ÁN 2
Trang 19/31

Phụ lục
#include <16f887.H>
#device ADC = 10
#use delay(clock=20000000)

#include <string.h>
#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 2
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 2
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 2
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 2
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 2
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 2
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


×