5.1.1 ưu đồ thuật toán gởi và nhận tin nhắn
Hình 5.1a: Lưu đồ gởi tin nhắn Hình 5.1b: Lưu đồ nhận tin nhắn
Begin
AT CMGS =”0974634547” (lệnh gởi tn)
> nội dung tin nhắn (lệnh gởi tn) End T F Begin AT + CMGR =1 (lệnh đ c tn) Ch=<10> (khi kết thúc chuỗi) End Str[index]=ch
SVTH: Phạm Tiến Duẫn Trang 79 5.1.2 ưu đồ chương trình chính F 2 RI = DCDUNG Cho dừng DC Gởi tin nhắn 1 F F RI = DCNGICH Kích DC quay nghịch Gởi tin nhắn RI = DCTHUAN Kích DC quay thuận Gởi tin nhắn Hiển thị LCD Kiemtra()==1 Puts(atd=”0974634547”) Delay(30000) RI = CMTI Begin Khởi tạo (LCD) Gởi (AT) Gởi AT+CMGF=1 Gởi AT+CMGD=1 RI = OK F T F T F T T T T
SVTH: Phạm Tiến Duẫn Trang 80 Hình 5.2: Lưu đồ chương trình chính T T F T T F RI = TAT1 Tắt thiết bị 1 Gởi tn thông báo tb1 đ
ngắt RI = BAT1 RI = TATHET 1 2 RI = BATHET Bật tất cả 3 tb Gởi 3 tn thông báo 3 tb
hoạt động
Tắt tất cả 3 tb Gởi 3 tn thông báo 3 tb đ
ngắt
Bật thiết bị 1 Gởi tn thông báo tb1 đ
hoạt động
F
T
RI = BAT2
Bật thiết bị 2 Gởi tn thông báo tb2 đ
hoạt động
F
RI = TAT2
RI = BAT3
Tắt thiết bị 2 Gởi tn thông báo tb2 đ
ngắt
Bật thiết bị 3 Gởi tn thông báo tb3 đ
hoạt động F F T T Gởi tn (SAICUPHAP) End RI = TAT3 Tắt thiết bị 3 Gởi tn thông báo tb3 đ
ngắt
F
F
SVTH: Phạm Tiến Duẫn Trang 81
5.2 hƣơng t nh c de hần ề
chi tiết chương trình c thể em tại phụ ục 2
5.3 ết u ch y thử nghiệ
SVTH: Phạm Tiến Duẫn Trang 82 Hình 5.4: Khi c trộm hệ thống tự động gọi về điện thoại ngư i điều khiển
SVTH: Phạm Tiến Duẫn Trang 83 Hình 5.6: Thiết bị 1 b ng đèn 1 đ hoạt động
Hình 5.7: Khi đ bật thiết bị 1 thì hệ thống tự động nhắn tin thông báo về cho ngư i điều khiển biết thiết bị 1 đ hoạt động
SVTH: Phạm Tiến Duẫn Trang 84
Hệ thống c thể điều khiển được thiết bị điện từ xa thông qua tin nhắn SMS:
Sau khi gửi tin nhắn thì với nội dụng tin nhắn đ Hình 5.5 , bộ xử lý sẽ thực thi quá trình xử lý, sau đ là điều khiển thiết bị một cách tự động Hình 5.6 .
Tin nhắn được gửi đi từ ngư i điều khiển để điều khiển thiết bị điện và ngư i điều khiển cũng nhận được tin nhắn trả ngược lại với nội dụng tin nhắn là đ điều khiển được các thiết bị hay chưa Hình 5.7 .
Hệ thống c chức năng cảnh báo sự cố:
Khối thu phát hồng ngoại được thiết kế, lập trình kết hợp với trung tâm xử lý có khả năng gửi thông tin dữ liệu tới trung tâm xử lý. Có khả năng g i về cho ngư i điều khiển khi c báo động xảy ra Hình 5.4 .
5.4 ết uận chƣơng 5
Chương 5 đ xây dựng thuật toán điều khiển các thiết bị điện tự động và cảnh báo từ xa.
Cài đặt chương trình và chạy thử nghiệm.
SVTH: Phạm Tiến Duẫn Trang 85
Đồ án đ thiết kế được:
Mạch vi xử l gh p nối với module SIM300CZ.
Mạch công suất.
Mạch thu phát hồng ngoại.
Xây dựng thuật toán điều khiển các thiết bị điện tự động và cảnh báo từ xa.
Cài đặt chương trình và chạy thử nghiệm.
Mạch điện với các module nhỏ trên mạch được thiết kế, thi công hoàn chỉnh và kết quả chạy thử nghiệm trên mô hình cho thấy hệ thống hoạt động tốt.
Mặc d đ hết sức cố gắng và thực hiện bằng sự nhiệt tâm và niềm hy v ng của tác giả nhưng chắc hẳn rằng với kiến thức còn khá hạn hẹp và non trẻ thì trong khi thực hiện đề tài tác giả sẽ không tránh được những thiếu sót. Tác giả rất mong muốn nhận được sự chỉ bảo dạy dỗ của Quý Thầy Cô Giáo để đề tài được hoàn thiện hơn. Tác giả xin chân thành kính gởi đến Quý Thầy Cô Giáo l i cảm ơn và l i chào trân tr ng!!!
SVTH: Phạm Tiến Duẫn Trang 86
ƢỚ P Ể ĐỀ À
Do đề tài còn khá mới mẻ ở nước ta và lượng kiến thức của tác giả là nhất định nên đề tài thực hiện xong chỉ đáp ứng được một phần nhỏ của một hệ thống hoàn chỉnh. Vì vậy, để đề tài này thêm phong phú hơn, mang nhiều tính thực tế hơn nữa, có khả năng ứng dụng cao hơn thì đề tài cần đưa thêm vào những yêu cầu như sau:
Ngoài việc điều khiển giám sát bằng tin nhắn SMS, ta cũng c thể điều khiển Camera để chụp hình rồi sau đ gửi tin nhắn đa phương tiện đến điện thoại.
Sử dụng thêm nhiều loại cảm biến khác, chẳng hạn như cảm biến nhiệt độ để đo nhiệt độ, cảm biến độ ẩm không khí để đo độ ẩm không khí, hệ thống báo cháy tự động,… để ứng dụng vào đề tài. Như thế ngư i dùng có thể hình dung ra được toàn bộ không gian trong ngồi nhà.
Phần cứng cho mỗi module cần được tách r i nhằm dễ dàng cho việc chỉnh sửa, thay đổi.
Hy v ng với những hướng phát triển nêu trên cùng với những tưởng khác của ngư i đ c, những ngư i đi sau sẽ phát triển hơn nữa đề tài này, khắc phục những hạn chế, làm cho đề tài trở nên phong phú hơn, mang tính ứng dụng cao vào thực tế cuộc sống, phục vụ cho những lợi ích cá nhân, cộng đồng và xã hội.
SVTH: Phạm Tiến Duẫn Trang 87
TÀI LIỆU THAM KH O
[1] Văn Đình Nhân, Luận văn tốt nghiệp, “Hệ thống SCADA qua GPRS” – ĐH BK TPHCM tháng 01/2011.
[2] Hardware design, SIM300CZ_HD_V1.01, SIM co., ltd
[3] Microchip, PIC16F87XA Data Sheet, 28/40/44-Pin Enhanced Flash Microcontrollers
[4] Hội quán điện tử viễn thông, – 555 nguy n tắc ứng d ng, http://hoiquandtvt.net
[5] Dual full-bridge drive, L298,
http://www.st.com/stonline/books/pdf/docs/1773.pdf ột số we sites th h : http://www.spkt.net/diendan/ http://4tech.com.vn www.dientuvietnam.net www.picvietnam.com http://www.microchip.com
SVTH: Phạm Tiến Duẫn Trang 88
P
P 1: P Ệ P 16 877
ADDLW
Cú pháp: ADDLW k 0 ≤ k≤255
Tác dụng: cộng giá trị k vào thanh ghi W, kết quả được chứa trong thanh ghi W. Bit trạng thái: C, DC, Z.
ADDWF
Cú pháp: ADDWF f,d 0≤f≤255, d thuộc [0,1]).
Tác dụng: cộng giá trị hai thanh ghi W và thanh ghi f. Kết quả được chứa trong thanh ghi W nếu d = 0 hoặc thanh ghi f nếu d =1.
Bit trạng thái: C, DC, Z.
ANDLW
Cú pháp: ANDLW k 0≤k≤255
Tác dụng: thực hiện phép toán AND giữa thanh ghi và giá trị k, kết quả được chứa trong thanh ghi W.
Bit trạng thái: Z.
ANDWF
Cú pháp: ANDWF f,d 0 ≤ f ≤ 127, d thuộc [0,1]).
Tác dụng: thực hiện phép toán AND giữa các giá trị chứa trong hai thanh ghi W và f.
Kết quả được đưa vào thanh ghi W nếu d=0 hoặc thanh ghi f nếu d = 1. Bit trạng thái: Z.
BCF
SVTH: Phạm Tiến Duẫn Trang 89 Tác dụng: xóa bit b trong thanh ghi f về giá trị 0.
Bit trạng thái: không có.
BSF
Cú pháp: BSF f,b 0≤f≤127, 0≤b≤7 Tác dụng: set bit b trong trnh ghi f. Bit trạng thái: không có.
BTFSS
Cú pháp: BTFSS f,b 0≤f≤127, 0≤b≤7
Tác dụng: kiểm tra bit b trong thanh ghi f. Nếu bit b bằng 0, lệnh tiếp theo được thực thi. Nếu bit b bằng 1, lệnh tiếp theo được bỏ qua và thay vào đ là lệnh NOP.
Bit trạng thái: không có.
BTFSC
Cú pháp: BTFSC f,b 0≤f≤127, 0≤b≤7
Tác dụng: kiểm tra bit b trong thanh ghi f. Nếu bit b bằng 1, lệnh tiếp theo được thực thi. Nếu bit b bằng 0, lệnh tiếp theo được bỏ qua và thay vào đ là lệnh NOP.
Bit trạng thái: không có
CALL
Cú pháp: CALL k 0≤k≤2047
Tác dụng: g i một chương trình con. Trước hết địa chỉ quay trở về từ chương trình con (PC 1 được cất vào trong Stack, giá trị địa chỉ mới được đưa vào bộ đếm gồm 11 bit của biến k và 2 bit PCLATH<4:3>.
Bit trạng thái: không có.
CLRF
Cú pháp: CLRF f 0≤f≤127
Tác dụng: x a thanh ghi f và bit Z được set. Bit trạng thái: Z
SVTH: Phạm Tiến Duẫn Trang 90
CLRW Cú pháp: CLRW
Tác dụng: x a thanh ghi W và bit Z được set. Bit trạng thái: Z.
CLRWDT Cú pháp: CLRWDT
Tác dụng: reset Watchdog Timer, đồng th i prescaler cũng được reset, các bit PD và TO được set lên 1.
Bit trạng thái: PD và TO
COMF
Cú pháp: COMF f,d 0≤f≤127, d thuộc [0,1]).
Tác dụng: đảo các bit trong thanh ghi f. Kết quả được đưa vào thanh ghi W nếu d=0 hoặc thanh ghi f nếu d=1.
Bit trạng thái: Z
DECF
Cú pháp: DECF f,d 0≤f≤127, d thuộc [0,1]).
Tác dụng: giá trị thanh ghi f được giảm đi 1 đơn vị. Kết quả được đưa vào thanh ghi W nếu d = 0 hoặc thanh ghi f nếu d = 1.
Bit trạng thái: Z
DECFSZ
Cú pháp: DECFSZ f,d 0≤f≤127, d thuộc [0,1])
Tác dụng: giá trị thanh ghi f được giảm 1 đơn vị. Nếu kết quả sau khi giảm khác 0, lệnh tiếp theo được thực thi, nếu kết quả bằng 0, lệnh tiếp theo không được thực thi và thay vào đ là lệnh NOP. Kết quả được đưa vào thanh ghi W nếu d = 0 hoặc thanh ghi f nếu d = 1.
Bit trạng thái: không có.
SVTH: Phạm Tiến Duẫn Trang 91 Cú pháp: GOTO k 0≤k≤2047
Tác dụng: nhảy tới một label được định nghĩa bởi tham số k và 2 bit PCLATH<4:3>.
Bit trạng thái: không có.
Lệnh INCF
Cú pháp: INCF f,d 0≤f≤127, d thuộc [0,1])
Tác dụng: tăng giá trị thanh ghi f lên 1 đơn vị. Kết quả được đưa vào thanh ghi W nếu d=0 hoặc thanh ghi f nếu d = 1.
Bit trạng thái: Z.
INCFSZ
C php: INCFSZ f,d 0≤f≤127, d thuộc [0,1])
Tác dụng: tăng gi trị thanh ghi f ln 1 đơn vị. Nếu kết quả khác 0, lệnh tiếp theo được thực thi, nếu kết quả bằng 0, lệnh tiếp theo được thay bằng lệnh NOP. Kết quả sẽ được đưa vào thanh ghi f nếu d=1 hoặc thanh ghi W nếu d = 0.
Bit trạng thái: không có.
IORLW
Cú pháp: IORLW k 0 ≤ k ≤ 255
Tác dụng: thực hiện phép toán OR giữa thanh ghi W và giá trị k. Kết quả được chứa trong thanh ghi W.
Bit trạng thái: Z.
IORWF
Cú pháp: IORWF f,d 0≤f≤127, d thuộc [0,1])
Tác dụng: thực hiện phép toán OR giữa hai thanh ghi W và f. Kết quả được đưa vào thanh ghi W nếu d=0 hoặc thanh ghi f nếu d=1.
Bit trạng thái: Z.
RLF
SVTH: Phạm Tiến Duẫn Trang 92 Tác dụng: dịch trái các bit trong thanh ghi f qua c carry. Kết quả được lưu trong thanh ghi W nếu d=0 hoặc thanh ghi f nếu d=1.
Bit trạng thái: C.
RETURN Cú pháp: RETURN
Tác dụng: quay trở về chương trình chính từ một chương trình con Bit trạng thái: không có.
RRF
Cú pháp: RRF f,d 0≤f≤127, d thuộc [0,1])
Tác dụng: dịch phải các bit trong thanh ghi f qua c carry. Kết quả được lưu trong thanh ghi W nếu d=0 hoặc thanh ghi f nếu d=1.
Bit trạng thái: C.
Sleep Cú pháp: SLEEP
Tác dụng: đưa vi điều khiển về chế độ Sleep. Khi đ WDT bị xóa về 0, bit PD được xóa về 0 bit TO được set lên 1 và Oscillator không được cho phép h at động.
Bit trạng thái: TO, PD.
SUBLW Cú pháp: SUBLW k
Tác dụng: lấy giá trị k trừ giá trị trong thanh ghi W. Kết quả được chứa trong thanh ghiW.
Bit trạng thái: C, DC, Z.
SUBWF
Cú pháp: SUBWF f,d 0≤f≤127, d thuộc [0,1])
Tác dụng: lấy giá trị trong thanh ghi f đem trừ cho thanh ghi W. Kết quả được lưu trong thanh ghiaW nếu d=0 hoặc thanh ghi f nếu d=1.
SVTH: Phạm Tiến Duẫn Trang 93 Bit trạng thái: C, DC, Z.
SWAP
Cú pháp: SWAP f,d 0 ≤ f ≤ 127, d thuộc [0,1])
Tác dụng: đảo 4 bit thấp với 4 bit cao trong thanh ghi f. Kết quả được chứa trong thanh ghiaW nếu d=0 hoặc thanh ghi f nếu d=1.
Bit trạng thái: không có.
XORLW
Cú pháp: XORLW k 0≤k≤255
Tác dụng: thực hiện phép toán XOR giữa giá trị k và giá trị trong thanh ghi W. Kết quả được lưu trong thanh ghi W.
Bit trạng thái: Z.
XORWF
Cú pháp: XORWF f,d
Tác dụng: thực hiện phép toán XOR giữa hai giá trị chứa trong thanh ghi W và thanh ghi f. Kết quả được lưu vào trong thanh ghi W nếu d=0 hoặc thanh ghi f nếu d=1.
Bit trạng thái: Z.
ệnh trên còn có một số lệnh khác như: #DEFINE
Cú pháp: #DEFINE <text1> <text2>
Tác dụng: thay thế một chuỗi kí tự này bằng một chuỗi kí tự khác, c nghĩa là mỗi khi chuỗi kí tự text1 xuất hiện trong chương trình, trình biên dịch sẽ tự động thay thế chuỗi kí tự đ bằng chuỗi kí tự <text2>.
#INCLUDE
Cú pháp: #INCLUDE <filename> hoặc #INCLUDE “filename”
Tác dụng: đính k m một file khác vào chương trình, tương tự như việc ta copy file đ vào vị trí xuất hiện lệnh INCLUDE. Nếu dùng cú pháp <filename> thì
SVTH: Phạm Tiến Duẫn Trang 94 file đình k m là file hệ thống (system file), nếu d ng cú pháp “filename” thì file đính k m là file của ngư i sử dụng. Thông thư ng chương trình được đính k m theo một “header file” chứa các thông tin định nghịa các biến (thanh ghi W, thanh ghi F,.. và các địa chỉ cảu các thanh ghi chức năng đặc biệt trong bộ nhớ dữ liệu. Nếu không c header file, chương trình sẽ kh đ c và khó hiểu hơn. #CONSTANT
Cú pháp: CONSTANT <name>=<value>
Tác dụng: khai báo một hằng số, c nghĩa là khi phát hiện chuỗi kí tự “name” trong chương trình, trình biên dịch sẽ tự động thay bằng chuỗi kí tự bằng giá trị “value” đ được định nghĩa trước đ .
#VARIABLE
Cú pháp: VARIABLE <name>=<value>
Tác dụng: tương tự như lệnh CONSTANT, chỉ c điểm khác biệt duy nhất là giá trị “value” khi d ng lệnh VARIABLE có thể thay đổi được trong quá trình thưc thi chương trình còn lệnh CONSTANT thì không.
#SET
Cú pháp: <name variable> SET <value>
Tác dụng: gán giá trị cho một tên biến. Tên của biến có thể thay đổi được trong quá trình thực thi chương trình.
#EQU
Cú pháp: <name constant> EQU <value>
Tác dụng: gán giá trị cho tên của tên của hằng số. Tên của hằng số không thay đổi trong quá trình thực thi chương trình.
#ORG
Cú pháp: ORG <value>
Tác dụng: định nghĩa một địa chỉ chứa chương trình trong bộ nhớ chương trình của vi điều khiển.
SVTH: Phạm Tiến Duẫn Trang 95 Cú pháp: END
Tác dụng: đánh dấu kết thúc chương trình. #PROCESSOR
Cú pháp: PROCESSOR <processor type>
SVTH: Phạm Tiến Duẫn Trang 96
P 2: ƢƠ O E P Ầ Ề
#include <16F877A.h> #include <def_877a.h> #include <string.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) #include <lcd_lib_4bit1.c> // file giao tiep LCD
#define tb1 RB7 #define tb2 RB6 #define tb3 RB5 #define td RB1 #define chieu RB3 #define bt RE0 unsigned char str[60],str1[20],str2[20],str3[10]; char ch; int is1=0,is2=0,is3=0;
int kt,is,isti,ngat,idex,idex1,index,index1;
SVTH: Phạm Tiến Duẫn Trang 97 #INT_RDA
Receive_isr() {
ch = getc();
if(isti==1) //cho phep nhan khi
da khoi tao thanh cong
{
if(ch==10 && index ==0) is=1; //bat dau cho phep nhan chuoi
if(ch==10 && index>0) {idex=index; ngat=1; isti = 2; } //KHI KET THUC MOT CHUOI
if(ch!=10 && ch!=13 && is == 1) { str[index] = ch; index++; }
}
if(isti==2)
//cho phep nhan khi da khoi tao thanh cong
{
if(ch==10 && index1 ==0) is=1; //bat dau cho phep nhan chuoi
SVTH: Phạm Tiến Duẫn Trang 98 if(ch==10 && index1>0) {idex1=index1; ngat=2; isti = 0; } //KHI KET THUC MOT CHUOI
if(ch!=10 && ch!=13 && is == 1) { str1[index1] = ch; index1++; }