1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

CẢNH báo NHIỆT độ và độ ẩm QUA SMS DÙNG PIC (có code và layout)

38 1,1K 17

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 38
Dung lượng 1,91 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

CẢNH báo NHIỆT độ và độ ẩm QUA SMS DÙNG PIC (có code và layout) CẢNH báo NHIỆT độ và độ ẩm QUA SMS DÙNG PIC (có code và layout) CẢNH báo NHIỆT độ và độ ẩm QUA SMS DÙNG PIC (có code và layout) CẢNH báo NHIỆT độ và độ ẩm QUA SMS DÙNG PIC (có code và layout) CẢNH báo NHIỆT độ và độ ẩm QUA SMS DÙNG PIC (có code và layout)

Trang 1

CẢNH BÁO NHIỆT ĐỘ VÀ ĐỘ ẨM

QUA SMS DÙNG PIC

Trang 2

DANH MỤC CÁC TỪ VIẾT TẮT VII

CHƯƠNG 1 GIỚI THIỆU 1

1.1 GIỚI THIỆU CHUNG 1

1.1.1 Mục đích thực hiện đề tài 1

1.1.2 Nhiệm vụ đề tài 1

1.1.3 Hướng thực hiện 1

1.2 CƠ SỞ LÝ THUYẾT 2

1.2.1 Tập lệnh RISC 2

1.2.2 Giao thức USART 3

CHƯƠNG 2 THIẾT KẾ PHẦN CỨNG 4

2.1 SƠ ĐỒ KHỐI 4

2.2 GIỚI THIỆU LINH KIỆN SỬ DỤNG 5

2.2.1 PIC 16F877A 5

2.2.2 LCD (Liquid crystal display) 16x2 9

2.2.3 Cảm biến DHT11 11

2.2.4 Module SIM 800A 14

2.3 THIẾT KẾ MẠCH 20

CHƯƠNG 3 PHẦN MỀN 21

3.1 SƠ ĐỒ GIẢI THUẬT 21

3.2 VIẾT CHƯƠNG TRÌNH 21

3.3 THI CÔNG 22

CHƯƠNG 4 KẾT QUẢ 23

4.1 KẾT QUẢ 23

CHƯƠNG 5 NHẬN XÉT 24

Trang 3

6.1 KẾT LUẬN 25 6.2 HƯỚNG PHÁT TRIỂN 25

TÀI LIỆU THAM KHẢO 26 PHỤ LỤC 27

Trang 4

Hình 1- 2: Sơ đồ khối của khối truyền dữ liệu USART

Hình 2- 1: Sơ đồ khối 4

Hình 2- 2: Cảm biến DHT11 5

Hình 2- 3: Sơ đồ kết nối vi xử lý 6

Hình 2- 4: Gửi tín hiệu Start 6

Hình 2- 5: PIC 16F877A 8

Hình 2- 6: Kiến trúc John von Neumann 9

Hình 2- 7: Kiến trúc Harvard và John von Neumann 9

Hình 2- 8: Chức năng cơ bản PIC 16F877A 10

Hình 2- 9: Sơ đồ khối PIC 16F877A 11

Hình 2- 10: Sơ đồ chân PIC 16F877A 12

Hình 2- 11: LCD KeyPad Shield 12

Hình 2- 12: Sơ đồ chây kết nối LCD và Arduino 13

Hình 2- 13: Module SIM800A 14

Hình 2- 14: Sơ đồ mạch điều khiển linh kiện 20

Hình 2- 15: Sơ đồ mạch in 20Y Hình 3- 1: Mạch in trên board đồng 2 Hình 4- 1: Mạch thực tế 23

Hình 4- 2: Kết quả tin nhắn trên điện thoại 24

Trang 5

LCD Liquid crystal display

PIC Programable Intelligent Computer

RISC Reduced Instruction Set Computer

SIM Subscriber Identity Module

SMS Short Message Services

UART universal asynchronous receiver-transmitter

USAR

T Universal Synchronous Asynchronous Receiver Transmitter

Trang 6

CHƯƠNG 1 GIỚI THIỆU

1.1 Giới thiệu chung

Với kĩ thuật hiện vi xử lý nay thì việc phát triển tích hợp và lập trình là tương đối dễdàng Để làm một mạch báo nhiệt độ là tương đối dễ đàng, nhưng điều đó chưa đủ.Chúng ta cần phải có những mạch chuẩn đoán với nhiều tính năng hơn và thôngminh hơn

1.1.1 Mục đích thực hiện đề tài

Sử dụng vi điều khiển Pic và các linh kiện, ta có thể dễ dàng làm ra một mạch cảnhbáo nhiệt độ, độ ẩm Và với ý tưởng đó chúng ta có thể áp dụng vào nhà kính đểcảnh báo nhiệt độ, độ ẩm cây trồng để tạo điều kiện thích phát triển hoặc một vài ví

dụ khác như: sư dụng cho vật nuôi, báo cáo nhiệt độ cho nhà, v.v…

số liệu được thông qua rồi xuất dữ liệu qua Module SIM

Mạch điều khiển thiết bị ta có thể sử dụng relay và kết hợp transitor dể điều khiểngiúp thiết bị hoạt động ổn định và hiệu quả

1.2 Cơ sở lý thuyết

1.1.4 Tập lệnh RISC

Tập lệnh rút gọn của RISC, bao gồm 35 lệnh, chia thành 3 nhóm cơ bản:

Thao tác trên bit

Thao tác trên byte

Trang 8

Đồng bộ _ Master mode.

Đồng bộ _ Slave mode

Hình 1- 2 : Sơ đồ khối của khối truyền dữ liệu USART

Trang 9

Khối xử lý đống vai trò chính trong hệ thống Thực hiện các chức năng trao đổi dựliệu thông qua khối nhận dữ liệu Từ đó đưa ra các yêu cầu đến khối gửi thông tin

và khối hiện thị Ở đây, PIC 16F877A đóng vai trò là khối xử lý

Khối xử lý phát lệnh tới khối hiển thị, nhằm thể hiện thông tin để người dùng dễtheo dõi trực quan, sử dụng LCD nhằm hiển thị đầy đủ thông tin cần thiết

Trang 10

Khối gửi thông tin là khối sau cùng của hệ thống Nhận thực hiện các yêu cầu củakhối xử lý để điều khiển phát tín hiệu như SMS Để có thể kiểm soát thông tin cácthiêt bị hiểu quả Ta có thể sử dụng Module SIM.

1.4 Khối cảm biến

Hình 2- 2 : Cảm biến DHT11

DHT11 là một con cảm biến nhiệt độ, độ ẩm Nó được ra đời để kiểm tra nhiệt độ,

độ ẩm khi cần độ chính xác ít cao hơn

Thông số kỹ thuật:

Đo độ ẩm: 20%-95%

Đo nhiệt độ: 0-50ºC

Sai số độ ẩm, nhiệt độ: ±5%,±2ºC

Trang 11

Bước 1: gửi tín hiệu Start

Hình 2- 4: Gửi tín hiệu Start

MCU sẽ thiết lập chân DATA là Output, kéo chân DATA xuống mức 0 trong khoảng thời gian lớn hơn 18ms Lúc đó cảm biến DHT11 sẽ hiểu MCU muốn đo giá trị nhiệt độ và độ ẩm

Trang 12

MCU đẩy chân DATA lên 1, rồi thiết lập lại là chân đầu vào.

Khoảng 20-40us sau đó, DHT11 sẽ kéo chân DATA xuống thấp Nếu lớn hơn 40us

mà chân DATA ko được kéo xuống thấp thì nghĩa là không thể giao tiếp được với DHT11

Khi chân DATA ở mức thấp 80us sau đó nó được DHT11 kéo lên cao trong 80us Bằng việc giám sát chân DATA, MCU có thể biết được có giao tiếp được với DHT11 ko Nếu tín hiệu đo được DHT11 lên cao, khi đó hoàn thiện quá trình giao tiếp của MCU với DHT

Bước 2: đọc giá trị trên DHT11

Cảm biến DHT11 sẽ trả giá trị nhiệt độ, độ ẩm trở về dưới dạng 5 byte Trong đó:Byte 1: value phần nguyên độ ẩm (RH%)

Byte 2: value phần thập phân độ ẩm (RH%)

Byte 3: value phần nguyên nhiệt độ (TC)

Byte 4 : value phần thập phân nhiệt độ (TC)

Byte 5 : kiểm tra tổng

Nếu Byte 5 = (8 bit) (Byte1 +Byte2 +Byte3 + Byte4) giá trị đưa ra chính xác, ngượclại kết quả không có ý nghĩa

Đọc dữ liệu:

Khi giao tiếp với DHT11, DHT11 sẽ gửi 40 bit 0 hoặc 1 về MCU, tương ứng chia thành 5 byte đó là kết quả của nhiệt độ và độ ẩm

Sau khi tín hiệu được đưa về 0, ta đợi chân DATA của MCU được DHT11 kéo lên

1 Chân DATA trong khoảng 26-28 us thì là 0, 70us là 1 Do đó trong lập trình ta bắt sườn lên của chân DATA, sau đó làm trễ 50us Giá trị đo 0 là bit 0, 1 là bit 1

Cứ như thế ta đọc các bit tiếp theo

1.5 Khối xử lý

PIC 16F877A được sử dụng cho khối xử lý

Trang 13

Hình 2- 5 : PIC 16F877A

PIC 16F877A là mạch vi xử lý, nhằm để điều khiển.Kiến trúc PIC gồm 2 dạng: John von Neumann và HavardJohn von Neumann:

Trang 14

Hình 2- 6 : Kiến trúc John von Neumann

Với John von Neumann thì gồm bộ nhớ dữ liệu và bộ nhớ chương trình nằm chungtrong một bộ nhớ, dễ cân đối bộ nhớ chương trình và bộ nhớ dữ liệu Tuy nhiên cầnđòi hỏi tốc độ xử lý CPU rất cao không thì vô nghĩa, cho nên kiến trúc John vonNeumann không thích hợp với kiến trúc một vi điều khiển

Havard:

Hình 2- 7 : Kiến trúc Harvard và John von Neumann

Nhìn vào kiến trúc của Havard và John von Neumann sự khác biệt là cấu trúc bộnhớ dữ liệu và bộ nhớ chương trình

Kiến trúc Harvard bộ nhớ dữ liệu và bộ nhớ chương trình tách làm hai phần riêngbiệt, nhờ vậy tốc độ xử lý sẽ được cải thiện đáng kể

Kiến trúc Havard là một khái niệm mới hơn John von Neumann Nhờ sự cải thiện

về tốc độ xử lý nên tạo ra khái niệm Việc tách rời bộ nhớ chương trình và bộ nhớ

Trang 15

dữ liệu, bus chương trình và bus dữ liệu, CPU có thể cùng lúc truy xuất dữ liệu giúptang tốc độ xử lý lên gấp đôi.

PIC16F877A là loại vi điều khiển 8bit tầm trung của hãng microchip

PIC16F877A có kiến trúc Havard, sử dụng tập lệnh kiểu RISC (Reduced InstructionSet Computer) với chỉ 35 lệnh cơ bản

Tất cả các lệnh được thực hiện trong một chu kì lệnh ngoại trừ các lệnh rẽ nhánh.Chức năng cơ bản:

Hình 2- 8 : Chức năng cơ bản PIC 16F877A

Sơ đồ khối:

Trang 16

Hình 2- 9 : Sơ đồ khối PIC 16F877A

Trang 17

Sơ đồ chân:

Hình 2- 10 : Sơ đồ chân PIC 16F877A

1.6 Khối hiển thị

Hình 2- 11 : LCD KeyPad Shield

Trang 18

Màn hình LCD (Liquid crystal display) là loại một loại thiết bị hiển thị cấu tạo bởicác tế bào,(các điểm ảnh) chứa tinh thể lỏng có khả năng thay đổi tính phân cực củaánh sáng cho nên thay đổi cường độ ánh sáng truyền qua khi kết hợp với các kínhlọc phân cực LCd 16x2 có 2 hàng và 16 cột.

Sơ đồ sử dụng các chân khi gắn shield

Hình 2- 12 : Sơ đồ chây kết nối LCD và Arduino

VSS: tương đương với GND - cực âm

VDD: tương đương với VCC - cực dương (5V)

Constrast Voltage (Vo): điều khiển độ tương phản màn hình

Register Select (RS): điều khiển địa chỉ ghi dữ liệu

Read/Write (RW): Đọc (read mode), ghi (write mode) dữ liệu

Enable pin: Chấp nhận cho phép ghi vào LCD

Trang 19

Hình 2- 13 : Module SIM800A

Module GSM SIM800 có khả năng nhắn tin SMS, nghe, gọi,… như một điện thoại

có kích thước nhỏ nhất trong các loại module SIM (25 mm x 22 mm) Để điều khiểnmodule sim ta sử dụng tập lệnh AT

Nguồn cấp: 3.7 - 4.2VDC, có thể sử dụng với nguồn dòng thấp từ 500mA trở lên (như cổng USB, nguồn từ board Arduino).Dùng nguồn 1A để mạch chạy ổn định.Khe cắm SIM: MicroSIM

Trang 20

cấp nguồn hoạt động cho module

Vmax= 4.5V Vmin=3.4V Vnorm=4.0 V

BACKUP I/O Ngõ vào nguồn cho bộ thời gian thực

của module khi không có nguồn chính Và cung cấp một dòng ra dành cho nguồn dự trữ khi có nguồn

chính,để tiết kiệm năng lượng của nguồn dự trữ.

Vmax=2.0V Vmin=1.2V Vnorm=1.8

V Inorm= 20uA CHG_IN I Nguồn cung cấp cho bộ sạc pin của

module Đồng thời giúp cho module nhận ra bộ sạc.

Vmax=5.25

V Vmin=1.1

*VBAT Vnorm=5.1 V

số.

PWRKEY I Ngõ vào dùng để mở và tắt nguồn

chính của module Chân này được nối với một nút nhấn Để mở và tắt nguồn của module,phải nhấn nút nhấn để giữ chân này ở mức thấp trong một

khoảng thời gian ngắn.

VILmax=0.3

*VBAT VIHmin=0.7

*VBAT VImax=VB AT

Trang 21

BUZZER O Ngõ ra dành cho còi báo.

tương tự.

DISP_D0 I/O Ngõ vào ra để kiểm tra đường truyền

dữ liệu.

VILmin=0V VILmax=0.9 VIHmin=2.0 VIHmax= 3.2

VOLmin=G

ND VOLmax=0 2V

VOHmin=2.

7 VOHmax=2 9

DISP_CLK O Ngõ ra kiểm tra xung Clock.

DISP_A0 O Ngõ ra kiểm tra dữ liệu và địa chỉ (có

VOLmin=G

ND VOLmax=0 2V

Trang 22

7 VOHmax=2 9

Các ngõ vào ra với mục đích chung.

NETLIGHT O Ngõ ra cho biết trạng thái hoạt động

của module GSM.

VILmin=0V VILmax=0.9 VIHmin=2.0 VIHmax= 3.2 VOLmin=GN

D VOLmax=0.2

V VOHmin=2.7 VOHmax=2.9

STATUS O Ngõ ra cho biết các trạng thái hoạt

động của các ứng dụng khác có trong module.

GPIO5

GPIO32

I/O Ngõ vào ra dùng chung cho các mục

đích khác.

Port nối tiếp 1

DTR I Ngõ vào cho biết giao tiếp đã sẵn

sàng.

VILmin=0V VILmax=0.9 VIHmin=2.0 VIHmax= 3.2 VOLmin=GN

D VOLmax=0.2

V VOHmin=2.7 VOHmax=2.9

RI O Ngõ ra cho biết trạng thái hoạt động.

DCD O Ngõ ra cho biết dữ liệu đã được gửi

đi.

Port nối tiếp 2

DEBUG_TX O Port dùng để sửa lỗi và giao tiếp

bằng tập lệnh AT.

DEBUG_R

X

I

Các chân dành cho SIM card

card

Có 2 loại nguồn cung cấp 1.8V và

Trang 23

2.85V.Được lựa chọn bởi phần mềm.

SIM_DATA I/O Chân truyền nhận dữ liệu với

SIM.

VILmin=0V VILmax=0.3* VSIM VIHmin=0.7* VSIM VIHmax= VSIM +0.3

VOLmin=GND VOLmax=0.2V VOHmin= VSIM - 0.2

0-TEMP_BAT I Ngõ vào cho biết nhiệt độ

của pin.

1.8 Thiết kế mạch

Trang 24

Hình 2- 14 : Sơ đồ mạch điều khiển linh kiện

Sử dụng khối nguồn với LM2596 để cấp điện áp vi điều khiển khi cấp nguồn vào khối điều khiển Khối điều khiển sẽ có transistor và thạch anh để thiết bị có thể cấp xung và an toàn

Hình 2- 15 : Sơ đồ mạch in

CHƯƠNG 3 SƠ ĐỒ VÀ THI CÔNG

1.9 Sơ đồ giải thuật

Trang 25

1.10 Viết chương trình

Sử dụng ngôn ngữ lập trình C và tập lệnh AT để viết code điều khiển cho PIC16F877A và Module SIM800A

Trang 28

Hình 4- 2 : Kết quả tin nhắn trên điện thoại

Kết quả tin nhắn khi Module SIM800A gửi qua số điện thoại Kết quả hiển thị đúngnhư kết quả đã hiện thị trên LCD

Trang 29

CHƯƠNG 5 NHẬN XÉT

1.13 Nhận xét 1

Hệ thống chạy rất ổn định, đạt đúng yêu cầu đề tài đưa ra tuy nhiên khi thay đổinhiệt độ và độ ẩm liền thì thời gian đọc có hơi chậm vài giây nhưng kết quả vẫn rấtchính xác

1.14 Nhận xét 2

Để mạch có thể cảnh báo nhiệt độ qua SMS ta phải thường xuyên kiểm tra SIM để

có thể biết được SIM còn tiền hay không nhằm mục đích gửi tin nhắn

Trang 30

Ngoài ra có thể nâng cấp lên khi thay DHT11 bằng SHT1x để có mức chính xác caohơn.

Trang 31

TÀI LIỆU THAM KHẢO

Tiếng Việt:

[1] Tài liệu tham khảo cho PIC 16F877A http://ebookbkmt.forumvi.com/t6-topic[2] Màn hình tinh thể lỏng https://vi.wikipedia.org/wiki/Màn_hình_tinh_thể_lỏng[3] 16F877 www.alldatasheet.com

Trang 32

PHỤ LỤC

#include <main.h>

#define LCD_ENABLE_PIN PIN_C0

#define LCD_RS_PIN PIN_E0

#define LCD_RW_PIN PIN_A5

#define LCD_DATA4 PIN_A3

#define LCD_DATA5 PIN_A2

#define LCD_DATA6 PIN_A1

#define LCD_DATA7 PIN_A0

#include <lcd.c>

#define DATA PIN_b0

void doc_cam_bien(unsigned int16 *nhiet_do, unsigned int16 *do_am);unsigned int16 nhiet=0,am=0;

Trang 34

case 1: fprintf(UART,"T = %f, H = %f",T,H);break;

case 2: fprintf(UART,"Canh bao nhiet do cao %f",T) ; W1 = 1; break; case 3: fprintf(UART,"Canh bao do am cao %f",H) ; W2 = 1; break; case 4: fprintf(UART,"Canh bao nhiet do cao %f, do am cao

Trang 38

fprintf(UART,"AT+CMGF=1\r\n") ;

delay_ms(200);

fprintf(UART,"AT+CMGDA=\"DEL ALL\"\r\n") ;}

Ngày đăng: 01/04/2018, 11:02

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w