CHƯƠNG 4. CHI TIẾT THIẾT KẾ
Tải bản đầy đủ - 0trang
Nghiên cứu thiết kế hệ thống cảnh báo lũ sớm
Hình 4.2 Nguyên lý đo khoảng cách [8]
Vậy để đo lượng nước ta sẽ làm thế nào, ví dụ nếu đo mực nước trong một cái
bình, thì ta sẽ đo chiều cao của bình là h, sau đó dùng cảm biến siêu âm SRF05 để
đo khoảng cách từ mặt nước trong bình lên đến đỉnh bình là h1, mực nước trong
bình sẽ là d = h –h1.
Thơng số cơ bản
Điện áp
5v
Dòng cấp
30mA, max 50mA
Tần số
40Khz
Khoảng cách đo
3cm – 4,5m
Kích thước
43mm x 20mm x17mm
Giá
50000đ
Bảng 4.1 Thơng số của SRF05 [8]
•
Cảm biến lưu lượng
32
Nghiên cứu thiết kế hệ thống cảnh báo lũ sớm
Hình 4.3 Cảm biến lưu lượng S201 [8]
Chất liệu bằng nhựa bên trong có cánh quạt nước và cảm biến hall. Khi nước
chảy qua van cảm biến làm động cơ quay dẫn đến sự thay đổi trạng thái đầu ra của
cảm biến Hall, đâu ra tín hiệu xung.
Hình 4.4 Ngun lý hoạt động của cảm biến [9]
Nguồn
5V-24V
Dòng tối đa
15 mA(DC 5V)
Khối lượng
43 g
Lưu lượng đo
1~40 L/min
Nhiệt
độ hoạt
động0°C~80°C
Nhiệt độ chất lỏng
<120°C
Độ ẩm hoạt động
35%~90%RH
Áp lực chịu đc
under 1.75Mpa
Nhiệt độ bảo quản
-25°C~+80°C
33
Nghiên cứu thiết kế hệ thống cảnh báo lũ sớm
Độ ẩm bảo quản
25%~90%RH
Giá
70.000đ
Bảng 4.2 Thông số của cảm biến lưu lượng S201 [8]
Tần số tín hiệu đầu ra: F=7.5xQ ( L/Phút)
(4.1)
Trong đó:
Q: Lưu lượng nước
F: Tần số tín hiệu đầu ra (Hz)
7.5: Hằng số
VD:
1L nước sẽ có cơng thức : 1x7.5x60 = 450 xung
4.1.2 Khối điều khiển
Mạch sử dụng Arduino Uno R3 làm trung tâm xử lý
34
Nghiên cứu thiết kế hệ thống cảnh báo lũ sớm
Hình 4.5 Arduino Uno R3 [10]
Thơng số của Uno R3
Vi điều khiển
Điện áp hoạt động
Tần số hoạt động
Dòng tiêu thụ
Điện áp vào khuyên dùng
Điện áp vào giới hạn
Số chân Digital I/O
Số chân Analog
Dòng tối đa trên mỗi chân I/O
Dòng ra tối đa (5V)
Dòng ra tối đa (3.3V)
Bộ nhớ flash
Atmega328 họ 8bit
5V DC (chỉ được cấp qua cổng USB)
16 MHz
khoảng 30mA
7-12V DC
6-20V DC
14 (6 chân hardware PWM)
6 (độ phân giải 10bit)
30 mA
500 mA
50 mA
32 KB (Atmega328) với 0.5KB dùng bởi
35
Nghiên cứu thiết kế hệ thống cảnh báo lũ sớm
bootloader
2 KB (Atmega328)
1 KB (Atmega328)
SRAM
EEPROM
Bảng 4.3 Thông số kỹ thuật Arduino Uno R3 [10]
Nguồn cho Arduino :
Arduino UNO R3 có thể được cấp nguồn 5VDC thông qua cổng USB hoặc cấp
nguồn ngồi thơng qua Adaptor với điện áp khun dùng là 7-9VDC, thường thì
nên cấp nguồn bằng pin 9V là hợp lý nhất nếu bạn khơng có sẵn nguồn từ cổng
USB.
Nếu cấp nguồn vượt quá ngưỡng giới hạn như trên sẽ làm hỏng Arduino UNO
R3.GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO. Khi bạn dùng
các thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối
với nhau.
5V: cấp điện áp 5V đầu ra. Dòng tối đa cho phép ở chân này là 500mA.
3.3V: cấp điện áp 3.3V đầu ra. Dòng tối đa cho phép ở chân này là 150mA.
Vin (Voltage Input): Để cấp nguồn ngoài cho Arduino UNO, bạn nối cực dương
của nguồn với chân này và cực âm của nguồn với chân GND.
RESET: Khi nhấn nút Reset trên board để Reset vi điều khiển tương đương với
việc chân Reset được nối với GND qua 1 điện trở 10KΩ.
Các chân vào ra của Arduino Uno R3:
Arduino UNO R3 có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ
có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA. Ở mỗi
36
Nghiên cứu thiết kế hệ thống cảnh báo lũ sớm
chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển
ATmega328 (mặc định thì các điện trở này khơng được kết nối).
Một số chân digital có các chức năng đặc biệt như sau:
2 chân Serial 0 (RX) và 1 (TX): dùng để gửi (Transmit – TX) và nhận (Receive –
RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2
chân này. Kết nối bluetooth có thể nói là kết nối Serial không dây. Nếu không cần
giao tiếp Serial bạn không nên sử dụng 2 chân này nếu không cần thiết
Chân PWM (~): 3, 5, 6, 9, 10, và 11: Cho phép bạn xuất ra xung PWM với độ
phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm
analogWrite(). Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở chân
này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác.
Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài các chức
năng thơng thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI
với các thiết bị khác.
LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi bấm nút
Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối với chân số 13. Khi
chân này được người dùng sử dụng, LED sẽ sáng.
Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit
để đọc giá trị điện áp trong khoảng 0V → 5V. Với chân AREF trên board, bạn có
thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog. Tức là nếu bạn cấp
điện áp 2.5V vào chân này thì bạn có thể dùng các chân analog để đo điện áp trong
khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit.
Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp
I2C/TWI với các thiết bị khác.
4.1.3 Khối truyền thông
37
Nghiên cứu thiết kế hệ thống cảnh báo lũ sớm
Việc truyền phát dữ liệu được thực hiện trên module SIM 900A. Module
Sim900A là module GSM, hoạt động ở 2 băng tần 900/1800 MHz, xây dựng dựa
trên Sim900A của hãng SIMCOM.
Hình 4.6 Sim 900A và module [8]
Ngoài chức năng gửi nhận tin nhắn SMS, cuộc gọi, SIM900 hỗ trợ giao thức
TCP/IP, hữu ích cho việc truyền dữ liệu trên Internet.
* Thông số kĩ thuật của module
•
•
•
•
Sử dụng nguồn ngồi: 9 - 12VDC/ 500mA trở lên (khuyên dùng 2A ),
Giao tiếp UART, dùng được với cả MCU 5V và 3.3V,
Tích hợp led báo trạng thái sim
Dòng khi hoạt động từ 100mA đến 2A.
* Chức năng của một số chân chính
•
•
•
•
•
•
•
GND: Chân mass.
Vcc: Chân cấp nguồn nuôi để module hoạt động.
TXD : Chân truyền UART.
RXD: Chân nhận UART.
PWR: Chân bật tắt modul sim900a.
SPK: Chân xuất âm thanh ra loa thoại.
MIC: Chân tạo mic để đàm thoại.
4.1.4 Khối nguồn
Mạch đặt ngồi trời những nơi khơng có điện lưới và trong một thời gian dài
nên cần nguồn có thể tự sạc, lựa chọn pin mặt trời làm nguồn là giải pháp tối ưu
38
Nghiên cứu thiết kế hệ thống cảnh báo lũ sớm
Hình 4.7 Pin mặt trời
4.1.5 Khối hiển thị
Hình 4.8 LCD 16x2 [11]
Các chức năng của từng chân
Bảng 4.4 Chi tiết LCD 16x2 [11]
Chân Ký hiệu Mô tả
1
Vss
Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với
GND
39
Nghiên cứu thiết kế hệ thống cảnh báo lũ sớm
2
VDD
Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với
VCC=5V của mạch điều khiển
3
VEE
Điều chỉnh độ tương phản của LCD.
Chân chọn thanh ghi (Register select). Nối chân RS với logic
“0”
(GND) hoặc logic “1” (VCC) để chọn thanh ghi.
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD
4
RS
(ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở
chế độ “đọc” - read)
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên
trong LCD.
Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic
5
R/W
“0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD
ở chế độ đọc.
Chân cho phép (Enable). Sau khi các tín hiệu được đặt lên bus
DB0- DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép
của chân E.
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp nhận)
thanh ghi bên trong nó khi phát hiện một xung
6
E
(high-to-low
transition) của tín hiệu chân E.
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát
hiện cạnh lên (low-to-high transition) ở chân E và được LCD
giữ ở bus đến khi nào chân E xuống mức thấp.
Tám đường của bus dữ liệu dùng để trao đổi thơng tin với MPU.
Có2 chế độ sử dụng 8 đường bus này :
+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit MSB
7-14 DB0
DB7
- là bit DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới DB7
bit MSB là DB7.
40
Nghiên cứu thiết kế hệ thống cảnh báo lũ sớm
15
LedA
Nguồn dương cho đèn nền.
16
LedK
GND cho đèn nền.
4.2 Chi tiết phần mềm
4.2.1 Lập trình Server
Server là trung tâm thu nhận và xử lý dữ liệu, kết hợp với database để quản lý
các dữ liệu nhận được. Server mà em sử dụng là máy tính cá nhân, được viết bằng
ngôn ngữ java, sử dụng lập trình socket
• Giới thiệu ngơn ngữ java
Java là một ngơn ngữ lập trình hướng đối tượng (OOP) và dựa trên các lớp
(class). Khác với phần lớn ngơn ngữ lập trình thơng thường, thay vì biên dịch mã
nguồn thành mã máy hoặc thông dịch mã nguồn khi chạy, Java được thiết kế để
biên dịch mã nguồn thành bytecode, bytecode sau đó sẽ được mơi trường thực thi
(runtime environment) chạy.
• Lập trình Socket
Trong lập trình, Socket là một API (Application Programming Interface) cung
cấp các phương thức để giao tiếp thông qua mạng.
Lập trình socket là cách lập trình cho phép chúng ta kết nối các máy tính truyền
tải và nhận dữ liệu từ máy tính thơng qua mạng, thơng thường là mơ hình clientserver sử dụng lập trình Socket sử dụng giao thức TCP/IP để truyền nhận dữ liệu
với nhau.
41
Nghiên cứu thiết kế hệ thống cảnh báo lũ sớm
Hình 4.9 Mơ hình truyền nhận client server lập trình socket [12]
Các bước lập trình Socket:
b1: Mở một ServerSocket tại 1 số hiệu cổng
Các client biết tên máy của máy tính mà trên đó chương trình chủ (server)
đang chạy và số cổng mà chương trình chủ lắng nghe. Để thực hiện một yêu
cầu kết nối, client cố gắng tạo ra cuộc gặp với máy chủ trên máy tính của
chương trình chủ và cổng. Các client cũng cần phải tự định danh chính nó với
server để gắn với một cổng địa phương cái sẽ được sử dụng trong suốt q
trình kết nối này, thơng thường nó được gán bởi hệ điều hành.
Hình 4.10 Hình ảnh minh họa client yêu cầu kết nối tới Server [13]
b2: Chấp nhận một yêu cầu kết nối từ phía client
Nếu khơng có vẫn đề gì xảy ra, server chấp nhận kết nối của client. Khi
chấp nhận, máy chủ có được một socket mới bị ràng buộc vào cùng "số hiệu
cổng". Server tạo ra một socket mới để giao tiếp với client vừa được chấp
nhận kết nối.
42