ĐIỀU KHIỂN và GIÁM sát THIẾT bị TRONG NHÀ QUA điện THOẠI SMS dùng pic16f877a (có code và layout bên dưới) ĐIỀU KHIỂN và GIÁM sát THIẾT bị TRONG NHÀ QUA điện THOẠI SMS dùng pic16f877a (có code và layout bên dưới) ĐIỀU KHIỂN và GIÁM sát THIẾT bị TRONG NHÀ QUA điện THOẠI SMS dùng pic16f877a (có code và layout bên dưới) ĐIỀU KHIỂN và GIÁM sát THIẾT bị TRONG NHÀ QUA điện THOẠI SMS dùng pic16f877a (có code và layout bên dưới) ĐIỀU KHIỂN và GIÁM sát THIẾT bị TRONG NHÀ QUA điện THOẠI SMS dùng pic16f877a (có code và layout bên dưới)
Trang 2DANH MỤC CÁC BẢNG BIỂU VII DANH MỤC CÁC TỪ VIẾT TẮT VIII
CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI 1
1.1 ĐẶT VẤN ĐỀ 1
1.2 NHIỆM VỤ ĐỀ TÀI 1
1.3 ĐÃ THỰC HIỆN 1
1.4 CÁC ĐỐI TƯỢNG NGHIÊN CỨU 1
CHƯƠNG 2 THIẾT KẾ HỆ THỐNG 3
2.1 SƠ ĐỒ KHỐI HỆ THỐNG 3
2.2 TÌM HIỂU LINH KIỆN 4
2.2.1 PIC16F877A 4
2.2.1.1 Giới thiệu 4
2.2.1.2 Sơ đồ các chân 5
2.2.1.3 Sơ đồ khối của PIC16F877A 7
2.2.2 LCD 16x2 8
2.2.2.1 SIM900A 9
2.2.2.2 Sensor cảm biến ánh sáng 10
2.2.2.3 Module thời gian thực DS1307 11
CHƯƠNG 3 THIẾT KẾ CHI TIẾT 13
3.1 LƯU ĐỒ GIẢI THUẬT 13
3.2 MẠCH NGUYÊN LÝ 14
3.3 LAYOUT MẠCH 15
CHƯƠNG 4 THI CÔNG MẠCH VÀ ĐO ĐẠT ĐIỆN ÁP 16
4.1 YÊU CẦU MÔ PHỎNG 16
4.2 ĐO ĐẠT THỰC TẾ 16
Trang 3PHỤ LỤC 19
Trang 4HÌNH 2-2: SƠ ĐỒ KHỐI CỦA PIC16F877A[1] 7
HÌNH 2-3: SƠ ĐỒ CÁC CHÂN TRONG LCD 16X2[1] 8
HÌNH 2-4: SƠ ĐỒ CHÂN TRONG SIM900A[1] 9
HÌNH 2-5: SENSOR CẢM BIẾN ÁNH SÁNG[1] 11
HÌNH 2-6: MODULE THỜI GIAN THỰC DS1307[1] 11
HÌNH 3-: MẠCH NGUYÊN LÝ TRÊN PROTEUS 14
HÌNH 3-2: LAYOUT MẠCH TRÊN PROTEUS 15
Trang 5BẢNG 2-4: TẬP LỆNH AT TRONG SIM900A 10 BẢNG 2-5: CHỨC NĂNG CÁC CHÂN TRONG DS1307 12 BẢNG 2-6: BẢNG CHI TIẾT CÁC THANH GHI 12
Trang 6LCD Liquid Crystal Display
IC Integrated Circuit
EEPROM Electrically Erasable Programmable Read-Only Memory
SRAM Shadow Random Access Memory
ISP Internet Service Provider
RISC Reduced Instructions Set Computer
Trang 71.1 Đặt vấn đề
Ngày nay, yếu tố tự động là không thể thiếu để cuộc sống hiện đại, điều khiển cácthiết bị dân dụng hay trong nông nghiệp từ xa giúp người sử dụng thuận tiện bật tắt,hẹn giờ, hay đảm bảo độ chính xác trong quá trình hoạt động của thiết bị: thời giantưới nước, lượng nước, tự động tắt khi quên…
Vì vậy, với những nhu cầu đó, mạch điều khiển thiết bị qua SMS giúp rất nhiềutrong nông nghiệp, gia đình
1.2 Nhiệm vụ đề tài
- Dùng VDK PIC
- Bật tắt đèn, kết hợp sensor quang
- Cài đặt thời gian tưới cây qua SMS
- Giám sát trạng thái thiết bị
- Thiết kế và thi công hệ thống
- Hẹn thời gian bật tắt thiết bị, ứng dụng trong hệ thống tưới nước tự động,
có sử dụng module thời gian thực hiện thị thời gian lên LCD
1.4 Các đối tượng nghiên cứu
- Tìm hiểu về vi xử lý PIC16F877A.
- Module SIM900A
- Ngôn ngữ lập trình PIC
- Sensor cảm biến ánh sang
- Module thời gian thực DS1307
Trang 8CHƯƠNG 2 THIẾT KẾ HỆ THỐNG
1.5 Sơ đồ khối hệ thống
Khối truyền nhận lệnh (SIM900)
Trang 9Chức năng các khối:
- Khối điều khiển, đảm bảo mạch hoạt động bình thường, điều khiển, xử lý dữliệu từ các module, gửi nhận thông tin từ Sim900, module thời gian, cảmbiến ánh sang, thiết bị
- Khối hiển thị (LCD) hiển thị thời gian thực, trạng thái thiết bị
- SIM900A nhận lệnh điều khiển từ người dùng, gửi về khối điều khiển, sau
đó nhận lệnh từ khối điều khiển, thông báo cho người dùng
- Thiết bị hiển thị trạng thái bật tắt
1.6 Tìm hiểu linh kiện
Trang 10- 368 bytes RAM.
- 5 ports ra vào với tín hiệu được điều khiển độc lập
- 2 bộ định thời 8 bits ( Timer 0,2 )
- 1 bộ định thời 16 bits (Timer 1)
- 2 bộ CCP( Capture - Compare - PWM)
- 1 bộ biến đổi AD 10 bits, 8 ngõ vào
- 2 bộ so sánh tương tự
- 1 bộ định thời giám sát (WatchDog Timer)
- 1 cổng song song 8 bits với các tín hiệu điều khiển
- 1 cổng nối tiếp
- 15 nguồn ngắt
- Có chế độ tiết kiệm năng lượng
- Nạp chương trình bằng cổng nối tiếp ICSP(In-Circuit Serial Programming)
- Được chế tạo bằng công nghệ CMOS
- 35 tập lệnh có độ dài 14 bits
- Tần số hoạt động tối đa 20MHz
1.1.1.2Sơ đồ các chân
Trang 11HÌNH 2-1: SƠ ĐỒ CÁC CHÂN TRONG PIC16F877A[1].
OSC1/CLKIN Chân ngõ vào của mạch dao động thạch anh Định tần cho
xung nhịp và cũng là một chân ngõ vào của mạch tạo xungnhịp
OSC2/CLKOUT Chân ngõ ra của mạch dao động thạch anh và là ngõ ra của
Chân xuất nhập của Port A
RA4/TOCKI Chân đa nhiệm, vừa làm chân xuất nhập của Port A và lại là
chân lấy xung cho thanh đếm của đồng hồ Timer 0
Trang 12RB0/INT Chân đa nhiệm, vừa làm chân xuất nhập của Port B và lại là
chân phát động theo ngắt ngoài Các chân của Port B có thểđược lập trình để có trở kháng lớn dùng để làm ngả vào, nhậptrạng thái ngoài vào PIC
RB1, RB2, RB3 Chân xuất nhập Port B
RB4, RB5 Chân xuất nhập của Port B và phát động ngắt theo sự thay đổi
trên các chân này
RB6 Chân xuất nhập của Port B và phát động ngắt theo sự thay đổi
trên chân này Nó còn có thể lập trình để dùng chân này phátxung nhịp dùng cho công năng truyền dữ liệu nối tiếp
RB7 Chân xuất nhập của Port B và phát động ngắt theo sự thay đổi
trên chân này Nó còn có thể lập trình để dùng chân này traođổi dữ liệu dùng cho công năng truyền dữ liệu nối tiếp
VSS Chân nối đất để lấy dòng (ở đây là dòng điện tử)
VDD Chân nối vào nguồn dương (từ 2V đến 5.5V)
BẢNG 2.1: CHỨC NĂNG CÁC CHÂN TRONG PIC16F877A.
1.1.1.3Sơ đồ khối của PIC16F877A
Trang 13HÌNH 2-2: SƠ ĐỒ KHỐI CỦA PIC16F877A[1].
1.1.2 LCD 16x2
Trang 14-HÌNH 2-3: SƠ ĐỒ CHÂN LCD 16X2 [1].
VSS Chân nối đất cho LCD
VDD Chân cấp nguồn cho LCD (5 V)
VEE Điều chỉnh độ tưởng phản cho LCD
RS Điều chỉnh thanh ghi nào sẽ ghi dữ liệu
RW Chọn chế độ đọc và ghi, tùy thuộc vào người lập trình
E Cho phép ghi vào LCD
D0 - D7 8 đường bus để trao đổi thông tin
LEDA/
K
Nguồn dương và âm cho đèn nền
BẢNG 2-2: CHỨC NĂNG CÁC CHÂN TRONG LCD 16X2.
Trang 15HÌNH 2-4: SƠ ĐỒ CHÂN SIM900A[1].
Headphone Chân phát âm thanh
Microphone Chân nhận âm thanh
BẢNG 2-3: CHỨC NĂNG CÁC CHÂN TRONG SIM900A.
Tập lênh điều khiển
AT+CNMI Hiển thị nội dung tin nhắn gửi đến
ATE[x]<CR><LF>(lệnh)
OK<CR><LF>( trải lời)
Chế độ echo là chế độ phản hồi dữ liệu truyền đếncủa module Sim 900A, x = 1 bật chế độ echo , x =
0 tắt chế độ echo (bạn nên tắt chế độ này)
Trang 16Gồm 3 chân:
- VCC: chân cấp nguồn dương (3.3/5V)
- VSS: chân nối đất
- D0: chân dữ liệu, khi trời tối, điện trở tăng cao không cho dòng điện đi qua
và ngược lại Dữ liệu sẽ được thu lại và truyền về vi điều khiển
Trang 17HÌNH 2-5: SENSOR CẢM BIẾN ÁNH SÁNG [1].
1.1.1.6Module thời gian thực DS1307
DS1307 là module cho phép người dùng có thể hiển thị thời gian chính xác với thời gian trong thực tế bao gồm giờ, phút, giây
HÌNH 2-6: MODULE THỜI GIAN THỰC [1].
X1 Kết nối đến thạch anh 32.768Khz làm nguồn dao động cho chip
Trang 18VBat Kết nối đến cực dương của Pin dự phòng, có điện áp tiêu chuẩn khoảng
3V
GND Kết nối đến đất
SDA Chân dữ liệu khi kết nối đến bus I2C
SCL Chân nhận xung clock đồng bộ khi kết nối bus I2C
SQW/OUT Ngõ xuất xung vuông, tần số có thể lập trình để thay đổi từ 1Hz, 4Khz, 8Khz, 32 KhzVCC Nguồn cấp 5VDC
BẢNG 2-5: CHỨC NĂNG CÁC CHÂN TRONG DS1307.
BẢNG 2-6: CHI TIẾT CÁC THANH GHI.
CHƯƠNG 3 THIẾT KẾ CHI TIẾT
1.7 Lưu đồ giải thuật
Trang 19Bắt đầu khởi tạo hệ thống, thực hiện chạy chương trình, nếu chương trình sai, LCDtắt, điện thoại người dùng không nhận được cuộc gọi từ SIM900A Nếu đúng, điệnthoại nhận được cuộc gọi.
Lúc này LCD hiện thời gian thực cùng trạng thái của các thiết bị trong mạch
Xử lý
thái thiết bị
Kiểm tra lệnh
Đúng
Thực hiệnlệnh
Gửi tin điều
khiển
Kết thúc
Trang 20Bắt đầu điều khiển thiết bị, người dùng gửi tin sms để điều khiển thiết bị theo lệnh,tin nhắn được gửi về Sim900 và thông báo về khối điều khiển PIC sẽ bật tắt thiết bịtùy theo lệnh Đồng thời LCD hiện trạng thái hiện tại của thiết bị và báo ngược vềđiện thoại người dùng đã bật thiết bị thành công.
Kết thúc hoạt động
1.8 Mạch nguyên lý
HÌNH 3-1: MẠCH NGUYÊN LÝ TRÊN PROTEUS.
1.9 Layout mạch
Trang 21HÌNH 3-2: LAYOUT MẠCH TRÊN PROTEUS.
CHƯƠNG 4 THI CÔNG MẠCH VÀ ĐO
ĐẠT ĐIỆN ÁP
Trang 221.10 Yêu cầu mô phỏng
- Nguồn 5 V - 1A
- Điện áp ở các chân ra vào của PIC: 3.3 V
- Điều khiển qua SIM900A, thời gian phản hồi 30s
- Điện áp ra ở các đèn: 3.3V
1.11 Đo đạt thực tế
- Nguồn 4.9 V~ 5 V, sai số cho phép 0.1 V
- Áp ra ở các chân I/O: 3.3 V, sai sô cho phép 0.1 V
Khả năng lập trình còn hạn chế
1.13 Khả năng ứng dụng
Trang 23trong nhà Và qua đó đưa ra các lệnh điều khiển qua điện thoại.
Mạch hẹn giờ bật tắt thiết bị ứng dụng nhiều trong sử dụng bật tắt tưới nước tự độngtrong nhà mà không cần có mặt, có thể ở xa và giám sát trạng thái thiết bị đang bật
Có thể ứng dụng trong nông nghiệp
1.14 Hướng phát triển của đề tài
Nếu đề tài được đầu tư nhiều hơn về tài chinh, thời gian Thì có thể sẽ tiếp tục pháttriển thêm nhiều tính năng:
Điều khiển bằng cách gọi điện, thông qua giọng nói
Thay thế đèn LED bằng các thiết bị gia dụng, các hệ thống tưới nước
Tiếp tục nghiên cứu các tính năng qua giọng nói
Có thể giám sát qua máy tính, giảm chi phí qua đường dây điện thoại
Trang 24TÀI LIỆU THAM KHẢO
Trang 25//Khai bao bien toan cuc
char sms[90]; //Luu tin nhan nhan duoc vao mang
char c,c1,c2,c3,c4;//Kiem tra co tin nhan moi
unsigned int8 i=0,j=0,k=0;
unsigned int8 new_sms=0,hen;
unsigned int8 index=0;
Trang 26void send_sms(unsigned char n); //Ham gui tin nhan xac dinh sim900a khoi dongxong
void call();
void anh_sang();
void khoi_tao(); //Cau hinh SIM
void clear_buffer(unsigned int8 time); //Reset lai bo nho dem de tranh bi treo
void Turn_ON(char name); //Ham bat thiet bi
void Turn_OFF(char name); //Ham tat thiet bi
void All_ON(); //Ham tat ca bat thiet bi
void All_OFF(); //Ham tat ca tat thiet bi
//Khi gui tin nhan den SIM900A se xay ra ngat RDA
c= getc(); //Gan ki tu vua moi nhan dc vao bien tam
Trang 27lcd_init(); //Ham khoi tao LCD
lcd_putc('\f'); //Xoa trang man hinh
enable_interrupts(INT_RDA); //Cho phep ngat UART
Trang 29//Doc tin nhan da luu trong buffer
// printf("AT+CMGR=1"); putc(13); delay_ms(4000);
for(j=0;j<80;j++)
{
if((sms[j]=='b'||sms[j]=='B')&&(sms[j+1]=='a'||sms[j+1]=='A')&&(sms[j+2]=='t'||sms[j+2]=='T')&&(sms[j+3]=='
Trang 30{
Turn_ON(sms[j+3]);
Trang 33delay_ms(500);
switch(n)
{
case '0': printf("TB1: %c\nTB2: %c\nTB3: %c ",st[0],st[1],st[2]); break;
Trang 34printf("AT"); putc(13); delay_ms(500);
printf("ATE0"); putc(13); delay_ms(500);
// printf("AT&W"); putc(13); delay_ms(500);
//printf("AT+CSCS=\"CSM\""); putc(13); delay_ms(500); printf("AT+CMGF=1"); putc(13); delay_ms(500);