SlideShare a Scribd company logo
I
UỶ BAN NHÂN DÂN
THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC SÀI GÒN
BÁO CÁO TỔNG KẾT
ĐỀ TÀI NGHIÊN CỨU KHOA HỌC SINH VIÊN
THIẾT KẾ VÀ CHẾ TẠO MẠCH GIÁM SÁT GỒM CÁC TÍNH NĂNG CƠ BẢN
Mã số đề tài: SV2015 - 28
Thuộc nhóm ngành khoa học: Điện tử - Viễn thông
Chủ nhiệm đề tài: Phạm Ngọc Nam
Thành viên tham gia:
1. Phan Thị Ngọc Hà
Giáo viên hướng dẫn: ThS. Trần Minh Nhật
Tp. Hồ Chí Minh, tháng 4 năm 2016
II
UỶ BAN NHÂN DÂN
THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC SÀI GÒN
BÁO CÁO TỔNG KẾT
ĐỀ TÀI NGHIÊN CỨU KHOA HỌC SINH VIÊN
THIẾT KẾ VÀ CHẾ TẠO MẠCH GIÁM SÁT GỒM CÁC TÍNH NĂNG CƠ BẢN
Mã số đề tài: SV2015 - 28
Xác nhận của Khoa
(ký, họ tên)
Giáo viên hướng dẫn
(ký, họ tên)
Chủ nhiệm đề tài
(ký, họ tên)
Tp. Hồ Chí Minh, tháng 4 năm 2016
III
MỤC LỤC
BẢN TÓM TẮT .............................................................................................................V
DANH MỤC BẢNG BIỂU.........................................................................................VII
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT ................................................VIII
THÔNG TIN KẾT QUẢ NGHIÊN CỨU.......................................................................9
MỞ ĐẦU .......................................................................................................................10
1. Lý do chọn đề tài .......................................................................................................10
2. Tính cấp thiết của đề tài.............................................................................................11
3. Mục tiêu đề tài ...........................................................................................................11
4. Mục đích và nhiệm vụ nghiên cứu ............................................................................11
5. Đối tượng và phạm vị nghiên cứu .............................................................................12
6. Phương pháp nghiên cứu...........................................................................................12
7. Nội dung và bố cục của đề tài ...................................................................................12
8. Kết luận......................................................................................................................12
CHƯƠNG 1: MÔ HÌNH HOẠT ĐỘNG CỦA HỆ THỐNG GIÁM SÁT ...................13
1.1. Mô hình tổng quát của hệ thống.............................................................................13
1.2. Khối nhà trạm .........................................................................................................14
1.3. Khối quản lý nhà trạm ............................................................................................15
1.4. Khối quản lý trung tâm...........................................................................................19
1.5. Mô hình hệ thống....................................................................................................20
1.6. Kết luận...................................................................................................................20
CHƯƠNG 2: CÁC THIẾT BỊ CẢM BIẾN VÀ SƠ ĐỒ MẠCH GIÁM SÁT .............21
2.1. Các thiết bị chính của mạch: ..................................................................................21
2.1.1. Mạch phát triển STM32F4-DISCOVERY ......................................................21
2.1.2. Cảm biến nhiệt DS18B20 ................................................................................25
2.1.3. Module cảm biến chuyển động........................................................................26
2.1.4. Thiết bị báo cháy và chip LM393....................................................................27
2.1.5. Module cảm biến khí gas:................................................................................30
2.1.6. Module ethernet DP83848...............................................................................31
2.2. Sơ đồ mạch giám sát và báo động ..........................................................................32
IV
2.2.1. Sơ đồ mạch cảm biến nhiệt..............................................................................32
2.2.2. Sơ đồ module cảm biến chuyển động:.............................................................33
2.2.3. Sơ đồ mạch điều khiển camera ........................................................................34
2.2.4. Sơ đồ mạch điều khiển đèn..............................................................................35
2.2.5. Sơ đồ mạch cảm biến khói...............................................................................35
2.2.6. Sơ đồ module cảm biến khí gas:......................................................................37
2.2.7. Sơ đồ mạch báo động:......................................................................................37
2.3. Kết luận...................................................................................................................38
CHƯƠNG 3: HỆ THỐNG PHẦN MỀM QUẢN LÝ MẠCH GIÁM SÁT..................39
3.1. Bộ công cụ lập trình nhúng Keil C.........................................................................39
3.2. Công nghệ .NET.....................................................................................................42
3.2.1. Cấu trúc .NET FrameWork..............................................................................42
3.2.1.1. Common Language Runtime ....................................................................42
3.2.1.2. NET FRAMEWORK CLASS LIBRARY ...............................................45
3.2.1.3. Sơ lược về NAMESPACE ........................................................................45
3.2.2. Lập trình socket ...............................................................................................46
3.3. Kết luận...................................................................................................................48
CHƯƠNG 4: CÁC KẾT QUẢ NGHIÊN CỨU............................................................49
4.1. Khối nhà trạm .........................................................................................................49
4.2. Khối quản lý nhà trạm ............................................................................................50
4.3. Khối quản lý trung tâm...........................................................................................52
4.4. Kết luận...................................................................................................................54
CHƯƠNG 5: KẾT LUẬN VÀ KIẾN NGHỊ ................................................................55
5.1. Kết quả đạt được.....................................................................................................55
5.2. Kiến nghị ................................................................................................................56
5.2.1. Áp dụng thực tế................................................................................................56
5.2.2. Hướng phát triển ..............................................................................................56
TÀI LIỆU THAM KHẢO.............................................................................................57
PHỤ LỤC ......................................................................................................................58
V
BẢN TÓM TẮT
ĐỀ TÀI NGHIÊN CỨU KHOA HỌC SINH VIÊN
THIẾT KẾ VÀ CHẾ TẠO MẠCH GIÁM SÁT GỒM CÁC TÍNH NĂNG
CƠ BẢN
Mã số: SV2015 – 28
1. Vấn đề nghiên cứu (vấn đề, tính cấp thiết)
Điện tử - viễn thông là ngành kỹ thuật mũi nhọn, hiện đại, sử dụng những công
nghệ tiên tiến để thiết kế, chế tạo nên các hệ thống, thiết bị được ứng dụng rộng rãi
trong mọi lĩnh vực của sản xuất cũng như đời sống. Vì vậy việc áp dụng khoa học kỹ
thuật để xây dựng một hệ thống giám sát sẽ góp phần nâng cao tính bảo vệ và an toàn
cho cuộc sống con người.
2. Mục đích nghiên cứu/mục tiêu nghiên cứu
Mục đích nghiên cứu: Đề tài đặt ra và giải quyết những vấn đề về giám sát để
có thể áp dụng khoa học kỹ thuật vào việc nâng cao sự an toàn trong cuộc sống và làm
việc của con người.
Mục tiêu nghiên cứu: Làm ra được mạch giám sát cho phép giám sát nhiệt độ,
chuyển động, khí gas, khói. Xây dựng một phần mềm đơn giản cho phép giám sát tập
trung nhiều mạch giám sát cùng lúc.
3. Nhiệm vụ/nội dung nghiên cứu/câu hỏi nghiên cứu
Tìm hiểu các sơ đồ, thiết bị thích hợp đồng thời phân tích, đánh giá: Các nguy
cơ có thể xảy đến trong quá trình sinh sống và làm việc của con người? Những giải
pháp cụ thể, khả thi áp dụng lên trên mạch giám sát? Các công cụ để xây dựng nên
một hệ thống giám sát hoàn chỉnh, thiết thực?
4. Phương pháp nghiên cứu: Nghiên cứu các yêu cầu giám sát ngoài xã hội, nghiên
cứu các cảm biến phục vụ cho yêu cầu giám sát, nghiên cứu các công cụ lập trình.
VI
5. Kết quả nghiên cứu (ý nghĩa của các kết quả) và các sản phẩm (Bài báo khoa học,
phần mềm máy tính, quy trình công nghệ, mẫu, sáng chế…)(nếu có)
Góp vào danh mục tài liệu tham khảo phục vụ công tác nghiên cứu thực tiễn và
giảng dạy, học tập ở các cơ sở đào tạo của địa phương. Hệ thống này có thể được áp
dụng giám sát tại các hộ gia đình, xưởng sản xuất và các phòng học, phòng thí nghiệm
tại trường Đại Học Sài Gòn.
VII
DANH MỤC BẢNG BIỂU
Bảng 2.1 Các chân giao tiếp thiết bị của mạch STM32F4-DISCOVERY....................25
Bảng 2.2 Các tính năng của DP83848...........................................................................31
Bảng 3.1 Bảng ký tự đại diện của các lệnh trong các file script. ..................................41
Bảng 3.2 Các đối tượng dùng để lập trình socket trong C#. .........................................46
VIII
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
Từ viết tắt Cụm từ đầy đủ
API Application Programming Interface
CLR Common Language Runtime
FCL Framework Class Library
HTML Hypertext Mark-up Language
JIT Just-In-Time
JVM Java Virtual Machine
LAN Local Area Network
MSIL Microsoft Intermediate Language
TCP/IP Transmission Control Protocol / Internet Protocol
9
THÔNG TIN KẾT QUẢ NGHIÊN CỨU
Chương 1: Cho chúng ta cái nhìn tổng quát về cơ chế hoạt động của hệ thống
giám sát, hệ thống này gồm 3 khối chương trình chính, mỗi khối đảm nhiệm một số tính
năng riêng, tuy nhiên chúng có liên lạc mật thiết với nhau trên nền tảng là giao thức
TCP/IP để tạo nên một hệ thống giám sát thống nhất.
Chương 2: Mạch giám sát là một là một hệ thống thống nhất gồm nhiều module,
mỗi module giám sát một loại thiết bị riêng. Chương 2 mới chỉ giới thiệu về sơ đồ phần
cứng của các module, để hoạt động mỗi module cần phải tích hợp chương trình tương
ứng để điều khiển quá trình giám sát.
Chương 3: Giới thiệu chi tiết về các công cụ lập trình được sử dụng để xây dựng
nên hệ thống giám sát, các công cụ này bao gồm: cộng nghệ .NET(C#), Keil C. Mỗi công
cụ được sử dụng cho từng mục đích cụ thể sau:
 .Net(C#) được sử dụng để thiết kế chương trình cho server trung tâm nhằm quản
lý các dữ liệu báo cáo từ các mạch giám sát.
 Keil C dùng để viết các phần mềm nhúng cho các mạch giám sát.
Chương 4: Các kết quả mà nhóm đạt được trong quá trình nghiên cứu bao gồm
phần cứng mạch giám sát, trang web cài đặt các thông số của nhà trạm và chương trình
giám sát mạch trên máy tính người dùng.
10
MỞ ĐẦU
1. Lý do chọn đề tài
Điện tử - viễn thông là ngành kỹ thuật mũi nhọn, hiện đại, sử dụng những công
nghệ tiên tiến để thiết kế, chế tạo nên các hệ thống, thiết bị được ứng dụng rộng rãi trong
mọi lĩnh vực của sản xuất cũng như đời sống.
Trong thời đại bùng nổ thông tin hiện nay, các thiết bị và hệ thống điện tử viễn
thông là thành phần cơ bản của hệ thống cơ sở hạ tầng và hầu hết chúng ta ai cũng sử
dụng thiết bị hoặc hệ thống do ngành điện tử - viễn thông cung cấp. Chúng ta thấy rằng
một khi cơ sở hạ tầng này gặp sự cố thì nó sẽ ảnh hưởng tới cuộc sống của chúng ta như
thế nào. Ví dụ như sự cố cáp quang trên biển bị đứt thì lập tức việc truy cập các trang
Web có máy chủ ở nước ngoài sẽ bị chậm, ảnh hưởng đến nhiều ngành, nhiều lĩnh vực kể
cả về kinh tế, kĩ thuật và an ninh quốc phòng.
Đời sống công nghệ hiện đại của con người không thể nào thiếu các thiết bị điện
tử. Các thiết bị này phổ biến ở khắp các hộ gia đình, trong các thiết bị giải trí, trong nhà
máy sản xuất và có thể nói là tất cả mọi nơi có con nguời. Hãy thử nhìn vào các thiết bị
trong gia đình của chính bản thân mình, các thiết bị hiện đại nhất của gia đình đều đều bị
chi phối bởi kỹ thuật điện tử. Lấy một ví dụ đơn giản nhất, một chiếc quạt điện bình dân
thì chúng ta không thể hẹn giờ và tắt mở từ xa nhưng nếu có sự tham gia của kỹ thuật
điện tử thì việc điều khiển từ xa, hẹn giờ tắt mở sẽ thực hiện một cách dễ dàng. Có thể
nói kỹ thuật điện tử đã nâng các thiết bị phục vụ cho đời sống của con người lên một tầm
cao mới, hiện đại hơn và tinh vi hơn.
Nhưng ở đất nước vẫn còn đang phát triển như chúng ta, người dân vẫn chưa
được phục vụ, được bảo vệ đúng mức bởi các hệ thống thiết bị hiện đại ấy. Qua những
tin tức gần đây chúng ta thấy rằng rất nhiều vụ đột nhập, cướp của xảy ra và khi mà
cuộc sống ngày nay gas là nhiên liệu đốt không thể thiếu trong mỗi gia đình, các nguy
cơ cháy nổ luôn luôn thường trực, mối đe dọa về một thảm họa nào đó có thể xảy đến
11
bất cứ lúc nào. Những thảm họa ấy nếu không được cảnh báo và phát hiện kịp thời thì
sẽ nguy hiểm đến tài sản và đe dọa lớn đến tính mạng của con người.
Chính vì những lý do trên đồng thời cũng muốn áp dụng kiến thức kiến thức
chuyên ngành đã học vào thực tiễn. Do đó, nhóm chúng em chọn đề tài “Thiết kế và chế
tạo mạch giám sát gồm các tính năng cơ bản” với mục đích chính là tăng cường việc
kiểm soát an ninh, an toàn trong đời sống sinh hoạt và sản xuất của con người.
2. Tính cấp thiết của đề tài
Nghiên cứu những vấn đề khoa học trong nội dung nghiên cứu, áp dụng các kiến
thức đã học vào thực tiễn, giúp cũng cố kiến thức phục vụ cho quá trình phát triển đề tài
tốt nghiệp sau này.
3. Mục tiêu đề tài
Làm ra được mạch giám sát cho phép giám sát nhiệt độ, chuyển động, khí gas,
khói. Xây dựng một phần mềm đơn giản cho phép giám sát tập trung nhiều mạch giám
sát cùng lúc.
4. Mục đích và nhiệm vụ nghiên cứu
Mục đích: Đề tài đặt ra và giải quyết những vấn đề về giám sát để có thể áp dụng
khoa học kỹ thuật vào việc nâng cao sự an toàn trong cuộc sống và làm việc của con
người.
Nhiệm vụ:
Thứ nhất, tìm hiểu, đánh giá những nguy cơ mà con người có thể gặp phải trong
môi trường sống và làm việc để đưa ra các thành phần cần thiết trong mạch giám sát mà
nhóm sẽ thi công.
Thứ hai, tìm hiểu các linh kiện, phần mềm, cách thức để xây dựng bản thiết kế phù
hợp với kinh phí và tiêu chí đã được đặt ra ban đầu.
Thứ ba, tiến hành thi công và thử nghiệm hệ thống giám sát để đảm bảo hệ thống
hoạt động an toàn, hiệu quả khi đưa vào sử dụng.
12
5. Đối tượng và phạm vị nghiên cứu
Đối tượng nghiên cứu: Những thành phần cần phải có trong hệ thống của mạch
giám sát cơ bản phù hợp với thực tế.
Phạm vi nghiên cứu: Những linh kiện làm mạch giám sát và phần mềm cho phép
giám sát tập trung nhiều mạch giám sát cùng lúc.
6. Phương pháp nghiên cứu
5.1. Nghiên cứu các yêu cầu giám sát ngoài xã hội.
5.2. Nghiên cứu các cảm biến phục vụ cho yêu cầu giám sát.
5.3. Nghiên cứu các công cụ lập trình.
7. Nội dung và bố cục của đề tài
Nội dung đề tài được tổ chức thành các phần chính như sau:
- Phần mở đầu: Trình bày lý do và mục tiêu nghiên cứu xây dựng hệ thống giám sát.
- Chương 1: Mô hình hoạt động của hệ thống giám sát.
- Chương 2: Các thiết bị cảm biến và sơ đồ mạch giám sát.
- Chương 3: Hệ thống phần mềm quản lý mạch giám sát.
- Chương 4: Các kết quả nghiên cứu.
- Chương 5: Kết luận và kiến nghị.
8. Kết luận
Nghiên cứu xây dựng hệ thống giám sát có ý nghĩa rất quan trọng trong việc ứng
dụng khoa học kỹ thuật để tự động hóa quá trình giám sát, giúp nâng cao sự an toàn trong
đời sống sinh hoạt và làm việc của con người. Có cơ hội áp dụng kiến thức đã học vào
thực tiễn và chuẩn bị kinh nghiệm cho những đề tài sau này. Hơn nữa hoàn toàn có thể
ứng dụng hệ thống giám sát cho các phòng thực hành, phòng học cũng như các phòng thí
nghiệm của trường Đại học Sài Gòn.
13
CHƯƠNG 1: MÔ HÌNH HOẠT ĐỘNG CỦA HỆ THỐNG GIÁM SÁT
Chương này sẽ mô tả cụ thể các tính năng của các khối trong hệ thống và mối liện
hệ giữa các khối này để hình thành nên một hệ thống giám sát hoàn chỉnh.
1.1. Mô hình tổng quát của hệ thống
Hình 1.1 Mô hình tổng quát của hệ thống.
Hệ thống được thiết kế theo 3 khối chúc năng cơ bản:
 Khối nhà trạm.
 Khối quản lý nhà trạm.
 Khối quản lý trung tâm.
Nguyên lý hoạt động
 Khối nhà trạm liên tục cung cấp thông tin về hoạt động của mạch cho người dùng
quan sát và có thể tự hoạt động theo chương trình đã được lập ra từ trước.
14
 Theo định kỳ khối quản lý nhà trạm gởi các thông tin của nhà trạm về cho khối
trung tâm.
 Khối quản lý trung tâm sẽ tập hợp tất cả các thông tin của các nhà trạm để xử lý và
gởi thông tin về cho chương trình giám sát trên máy tính của người dùng.
1.2. Khối nhà trạm
Đây là mạch giám sát được thiết kế có nhiệm vụ tự thực hiện các chức năng đã
được định ra từ trước và cung cấp thông tin hoạt động của mạch cho người dùng quan sát.
Chức năng tự động điều khiển camera, đèn, báo động
Hình 1.2 Sơ đồ xử lý việc điều khiển thiết bị.
CODE: tham khảo tại phụ lục 1 (trang 58)
Bắt đầu
Lấy thông tin từ các cảm biến
chuyển động, khí gas, khói
Nếu có
chuyển động
Bật đèn và camera
Sai
Đúng
g
Nếu có khí
gas hoặc khói
Bật báo động
Đúng
g
Sai
Kết thúc
15
1.3. Khối quản lý nhà trạm
Thiết kế theo cấu trúc độc lập có thể tự chạy cục bộ khi mất kết nối với trung tâm,
khối này bao gồm chức năng cài đặt thông số, chức năng lấy thông tin trạng thái của các
trạm giám sát, chức năng điều khiển các thiết bị camera, đèn, báo động…
1. Chức năng cho phép cài đặt các thông số của trạm như:
 ID của trạm: là mã thiết bị giám sát dùng để phân biệt với các thiết bị giám
sát khác.
 Địa chỉ IP của máy tính trung tâm: là địa chỉ mạng của máy tính trung tâm
dùng để giám sát các trạm, trạm khi khởi động sẽ sử dụng địa chỉ này để kết
nối vào trung tâm và định kỳ gởi các thông số trạng thái của trạm về trung
tâm.
 Subnet mask: dùng để phân chia về mặc logic địa chỉ IP.
 Cổng truy cập của server trung tâm: là cổng kết nối của máy tính trung tâm.
 Địa chỉ máy trạm: là địa chỉ IP của máy trạm.
 Địa chỉ gateway: là địa chỉ máy tính để giao tiếp với mạng bên ngoài.
 Địa chỉ DNS server: là địa chỉ máy tính để phân giải tên miền.
 Password: mật khẩu để truy xuất vào các trang web hệ thống của mạch
giám sát.
 Retyped: mật khẩu nhập lại để đối sánh với mật khẩu khi thực hiện việc
thay đổi mật khẩu.
Đây là tính năng dạng trang web được nhúng trong bộ xử lý ARM.
16
Bắt đầu
Para= lấy thông số từ trang web
Nếu para là LocalIP Đúng Ghi vào hệ thống
Sai
Nếu para là Port Ghi vào hệ thốngĐúng
Sai
Nếu para là ServerIP Ghi vào hệ thốngĐúng
Sai
Nếu para là Subnet Mask Ghi vào hệ thốngĐúng
Nếu para là pass Lưu vào biến pass1Đúng
Sai
Nếu para là retyped Đúng So sánh với pass1 Đúng
Ghi vào
hệ thống
Sai
Nếu para là Gateway Ghi vào hệ thốngĐúng
Sai
Nếu para là DNSServer Ghi vào hệ thốngĐúng
Sai
Nếu para là ID Ghi vào hệ thốngĐúng
Kết thúc
Sai Sai
Lưu thông tin lỗi vào
file log
Hình 1.3 Sơ đồ xử lý việc cài đặt các thông số của trạm.
CODE: tham khảo tại phụ lục 2 (trang 58)
17
2. Chức năng lấy thông tin: cho phép lấy thông tin về nhiệt độ, báo khói, chuyển
động, khí gas,... Đây là chức năng được thực hiện định kỳ sau mỗi 5 giây.
Bắt đầu
Nhiệt= lấy thông tin nhiệt độ
từ cảm biến nhiệt
Chuyển đổi thông tin sang dạng mảng
Gán mã số tương ứng cho thiết bị
Đưa thông tin này vào mảng chung
Khói= lấy thông tin khói từ
cảm biến khói
Chuyển đổi thông tin sang dạng mảng
Gán mã số tương ứng cho thiết bị
Đưa thông tin này vào mảng chung
18
Hình 1.4 Sơ đồ xử lý việc lấy thông tin trạng thái của các cảm biến.
CODE: tham khảo tại phụ lục 3 (trang 60)
Chuyển động= lấy thông tin
từ cảm biến chuyển động
Chuyển đổi thông tin sang dạng mảng
Gán mã số tương ứng cho thiết bị
Đưa thông tin này vào mảng chung
Khí gas= lấy thông tin từ cảm
biến khí gas
Chuyển đổi thông tin sang dạng mảng
Gán mã số tương ứng cho thiết bị
Đưa thông tin này vào mảng chung
Tạo gói tin với phần data là mảng chung
và gởi tới máy tính trung tâm
Kết thúc
19
1.4. Khối quản lý trung tâm
Khối này quản lý tất cả các đối tượng cần giám sát trên máy tính với giao diện
thân thiện, dễ sử dụng, khối này gồm các chức năng sau:
Chức năng nhận trạng thái từ máy trạm và gởi thông tin về trang web người dùng.
Bắt đầu
Nếu giờ tronggói tin trùng
khớp với giờ của hệthống
Sai Lưu thôngtin lỗi vào file log
Đúng
Kết thúc
Ghi thôngtin vào CSDL
Gởi gói tin cập nhật trạngthái cho những
nút trạngthái trên giao diện web
Chuyển chuổi dữliệu sangdạngbiến cố
Nhận chuỗi dữ liệu
từtrạm
Phát sinh biến cố ControlStateEvent
Message=lấy gói tin từbiến cố
ControlStateEvent
Hình 1.5 Sơ đồ xử lý gói tin thông báo trạng thái thiết bị.
CODE: tham khảo tại phụ lục 4 (trang 62)
20
1.5. Mô hình hệ thống
Mô hình kết nối của hệ thống trên nền tảng TCP/IP:
Hình 1.6 Hệ thống có sử dụng camera giám sát.
1.6. Kết luận
Chương 1 cho chúng ta cái nhìn tổng quát về cơ chế hoạt động của hệ thống giám
sát, hệ thống này gồm 3 khối chương trình chính, mỗi khối đảm nhiệm một số tính năng
riêng, tuy nhiên chúng có liên lạc mật thiết với nhau trên nền tảng là giao thức TCP/IP để
tạo nên một hệ thống giám sát thống nhất.
21
CHƯƠNG 2: CÁC THIẾT BỊ CẢM BIẾN VÀ SƠ ĐỒ MẠCH GIÁM SÁT
Chương 2 sẽ mô tả các linh kiện của mạch phát triển chính cũng như chức năng và
thông số các cảm biến, từ đó thiết kế sơ đồ cho mạch giám sát.
2.1. Các thiết bị chính của mạch:
Các thiết bị được sử dụng để thiết lập mạch giám sát bao gồm: mạch phát triển
stm32f4-Discovery, cảm biến nhiệt DS18B20, module cảm biến chuyển động, thiết bị
báo khói HORING AH-0311-4 và chip LM393, module cảm biến khí ga MQ2, module
ethernet DP83848.
2.1.1. Mạch phát triển STM32F4-DISCOVERY
STM32F4 DISCOVERY được trang bị chip 32-bit ARM Cortex, đây là một bộ xử
lý thế hệ mới đưa ra một kiến trúc chuẩn cho nhu cầu đa dạng về công nghệ, kit giúp
khám phá các tính năng của chip ARM nhằm phát triển các ứng dụng một cách dễ dàng.
Nó bao gồm tất cả tính năng cần thiết cho người mới bắt đầu cũng như người dùng có
kinh nghiệm để có thể tiếp cận chip ARM một cách nhanh chóng.
Hình 2.1 Board mạch stm32F4-DISCOVERY.
22
STM32F4-DISCOVERY gồm các tính năng sau:
 Vi điều khiển STM32F407VGT6 với 1 MB bộ nhớ Flash, 192 KB bộ nhớ.
ST-LINK / V2 được sử dụng cho việc nạp và debug.
 Nguồn: được cung cấp thông qua cổng USB hoặc từ một nguồn cung cấp điện áp
5V bên ngoài.
 Nguồn cung cấp ra bên ngoài: 3V và 5V.
 CS43L22, DAC âm thanh với lớp tích hợp trình điều khiển loa D.
 LD1 (màu đỏ / màu xanh lá cây) để giao tiếp USB.
 LD2 (màu đỏ) cho điện 3.3V.
 Bốn đèn LED dành cho người dùng sử dụng, LD3 (màu cam), LD4 (màu xanh),
LD5 (màu đỏ) và LD6 (màu xanh).
 2 USB OTG LED LD7 (màu xanh) và VBus LD8 (màu đỏ) quá dòng.
 Hai nút bấm (USER và RESET).
 USB OTG với kết nối micro-AB.
Các chân của mạch giao tiếp được sử dụng trong đề tài
MCU pin Board function
STT
Main
function
Alternate functions USB
LIS302DL
LIS3DSH
CN5 CN2
Free
I/O
OSC SWD P1 P2
1 PA1
USART2_RTS/
USART4_RX/
ETH_RMII_REF_CLK/
ETH_MII_RX_CLK/
TIM5_CH2/
TIMM2_CH2/
ADC123_IN1
x 11
2 PA2
USART2_TX/
TIM5_CH3/
TIM9_CH1/
TIM2_CH3/
ETH_MDIO/
ADC123_IN2
x 14
23
3 PA3
USART2_RX/
TIM5_CH4/
TIM9_CH2/
TIM2_CH4/
OTG_HS_ULPI_D0/
ETH_MII_COL/
ADC123_IN3
x 13
4 PA7
SPI1_MOSI/
TIM8_CH1N/
ETH_MII_RX_DV/
TIM1_CH1N/
RMII_CRS_DV/
ADC12_IN7
SDA
/SDI
/SDO
17
5 PA8
MCO1/
USART1_CK/
TIM1_CH1/
I2C3_SCL/
OTG_FS_SOF
x 43
6 PB7
I2C1_SDA/
FSMC_NL/
DCMI_VSYNC/
USART1_RX/
TIM4_CH2
x 24
7 PB8
TIM4_CH3/
SDIO_D4/
TIM10_CH1/
OTG_FS_SCL/
I2C1_SCL/
CAN1_RX
x 19
8 PB11
I2C2_SDA/
USART3_RX/
OTG_HS_ULPI_D4/
ETH_RMII_TX_EN/
ETH_MII_TX_EN/
OTG_HS_SDA/
TIM2_CH4
x 35
24
9 PB12
SPI2_NSS/
I2C2_SMBA/
USART3_CK/
TIM1_BKIN/
CAN2_RX/
ETH_RMII_TXD0/
ETH_MII_TXD0/
OTG_HS_ID
x 36
10 PB13
SPI2_SCK/
I2S2_CK/
USART3_CTS/
TIM1_CH1N/
CAN2_TX/
ETH_RMII_TXD1/
ETH_MII_TXD1/
OTG_HS_VBUS
x 37
11 PC1
ETH_MDC/
ADC123_IN11
x 7
12 PC4
ETH_RMII_RX_D0/
ETH_MII_RX_D0/
ADC12_IN14
x 10
13 PC5
ETH_RMII_RX_D1/
ETH_MII_RX_D1/
ADC12_IN15
x 19
14 PB1
TIM3_CH4/
TIM8_CH3N/
OTG_HS_ULPI_D2/
OTG_HS_INTN/
TIM1_CH3N/
ADC12_IN9
x 21
15 PB4
NJTRST/
SPI3_MISO/
TIM3_CH1/
SPI1_MISO/
I2S3ext_SD
x 25
25
16 PB5
I2C1_SMBA/
CAN2_RX/
OTG_HS_ULPI_D7/
ETH_PPS_OUT/
TIM3_CH2/
SPI1_MOSI/
SPI3_MOSI/
DCMI_D10/
I2S3_SD
x 26
Bảng 2.1 Các chân giao tiếp thiết bị của mạch STM32F4-DISCOVERY.
Các chân trên được chia ra sử dụng như sau:
 Sử dụng cho thu thập thông tin loại Input nhiệt độ, khói, khí gas, chuyển động lần
lượt là các chân PA8, PA3, PB4, PB5.
 Sử dụng cho xuất tín hiệu loại Output camera, đèn, báo động lần lượt là các chân
PB8, PB7, PB1.
 Còn lại là các chân sử dụng giao tiếp với module Ethernet DP83848 ở hình 2.8.
2.1.2. Cảm biến nhiệt DS18B20
DS18B20 là IC cảm biến nhiệt độ, chỉ bao gồm 3 chân, nó được coi là một nhiệt
kế với giá trị được chứa trong vùng nhớ 12-bit. Các DS18B20 giao tiếp với mạch thông
qua giao thức 1-Wire nghĩa là chỉ cần dùng một đường truyền duy nhất để giao tiếp với
bộ vi xử lý trung tâm. Nhiệt độ hoạt động cho phép của nó trong phạm vi -55°C đến +
125°C và có sai số là ± 0,5°C trong khoảng từ -10°C đến + 85°C.
Mỗi DS18B20 được nhận dạng qua một mã ID có độ dài 64 bit, cho phép nhiều
DS18B20 có thể hoạt động trên cùng 1-Wire bus. Vì vậy, một bộ vi xử lý có thể kiểm
soát nhiều DS18B20 phân bố trên một khu vực rộng lớn. Các ứng dụng có thể sử dụng
tính năng này bao gồm kiểm soát môi trường, giám sát nhiệt độ các hệ thống bên trong
các tòa nhà, giám sát, điều khiển trạng thái các thiết bị và máy móc.
26
Hình 2.2 Mô hình các chân của DS18B20.
Tóm tắt các tính năng của DS18B20
 Giao tiếp 1-Wire yêu cầu chỉ một chân (Pin) cho truyền thông.
 Mỗi thiết bị có một mã 64-Bit duy nhất được lưu trữ trong ROM.
 Nguồn cung cấp từ 3.0V đến 5.5V.
 Khoảng nhiệt độ đo được giao động từ -55 ° C đến + 125 ° C.
 Sai số là ± 0.5 ° C nếu nhiệt độ trong khoảng -10 ° C đến + 85 ° C.
2.1.3. Module cảm biến chuyển động
Module cảm biến chuyển động PIR HC- SR501 phát hiện và báo có sự xuất hiện
của vật thể trong khu vực, phạm vi nhất định.
27
Hình 2.3 Module cảm biến chuyển động PIR.
Điều làm cho PIR HC-SR501 trở nên đặc biệt đó là khả năng điều chỉnh được độ
nhạy. Khả năng này rất có ý nghĩa khi trong nhà có con vật (chó, mèo...). Với cảm biến
PIR không có biến trở điều chỉnh độ nhạy, khi con vật đi ngang qua sẽ vẫn có tác dụng
với cảm biến và làm cảm biến đóng. Điều này thật sự không tốt. Hoặc khi dùng cảm biến
làm mạch báo trộm có thể gây ra báo động giả!
 Thông số kỹ thuật:
 Sử dụng điện áp: 4.5-20V
 Đầu ra: 0-3.3V
 Thứ tự chân: VCC OUT GND
 Chân ra OUT không bị kích hoạt ở mức 0V (LOW), khi kích hoạt ở mức 3.3V
(HIGH)
 Thời gian trễ : Điều chỉnh trong khoảng 0.5-200s.
 Kích thước PCB: 32mm x 24mm.
 Góc quét <100 độ.
 Sử dụng cảm biến: 500BP
 Khoảng cách phát hiện: 2- 4.5m.
2.1.4. Thiết bị báo cháy và chip LM393
2.1.4.1. Thiết bị báo cháy
Thiết bị dùng để phát hiện có khói hoặc các dấu hiệu co cháy xảy ra để phòng
chữa cháy kịp thời. Khi có dấu hiệu cháy thiết bị sẽ làm mạch báo động tại chỗ và truyền
tín hiệu về trung tâm.
28
Hình 2.4 Đầu dò khói HORING AH-0311-4.
Các tham số của HORING AH-0311-4
 Điện áp : 12- 30V DC.
 Cường độ dòng hiện thời: 35 µA.
 Cường độ dòng nhận được: 120mA.
 Cường độ báo động: 40mA.
 Nhiệt độ hoạt động: -10°C đến +55°C.
Nguyên lý hoạt động của HORING AH-0311-4
HORING AH-0311-4 có 8 chân, trong đó ta chỉ cần sử dụng 5 chân(2,4,5,6,7), các chân
này hoạt động như sau:
 Chân 2 nối nguồn.
 Chân 4 nối đất.
 Bình thường chân 7 nối với chân 5, nhưng khi có khói chân 7 hở với chân 5 nhưng
nối với chân 6.
2.1.4.2. Chip LM393
Chip LM393 là bộ vi mạch gồm 2 bộ so sánh độc lập với điện áp bù nhỏ cỡ
2.0mV, hoạt động với cả nguồn cấp đơn hoặc 2 nguồn cấp đối xứng.
Đặc điểm LM393
 Dãi nguồn nuôi rộng từ 2V đến 36V.
 Dãi nguồn nuôi kép từ +/-1V đến +/-18V.
 Dòng cực máng rất thấp độc lập với điện áp nguồn nuôi 0.4mA.
29
 Dòng lối vào thấp 25mA.
 Dòng offset lối vào thấp +/-5mA và điện áp offset cực đại là +/-3mA.
 Dãi điện áp lối vào chung thấp.
 Điện áp lối ra tương thích với các mức logic DTL, ECL, TTL, MOS, CMOS.
 Điện áp bão hòa lối ra thấp 250mV, 4mA.
Sơ đồ chân của LM393
Hình 2.5 Sơ đồ các chân của chip LM393.
Nguyên lý hoạt động của LM393
- Chân 4 nối đất.
- Chân 8 nối nguồn.
- So sánh điện áp chân 5(V5) và điện áp chân 6(V6).
 Nếu V5>V6 thì điện áp V7 khác 0.
 Ngược lại V7 bằng 0.
- So sánh điện áp chân 2(V2),điện áp chân 3(V3).
 Nếu V3>V2 thì điện áp V1 khác 0.
 Ngược lại V1 bằng 0.
30
Dùng phép AND nối 2 chân 1 và 7, nếu cả 2 có điện áp đều khác 0 thì điểm nối 2
chân có điện áp khác 0, ngược lại điện áp sẽ bằng 0.
2.1.5. Module cảm biến khí gas:
MQ2 là cảm biến khí, dùng để phát hiện các khí có thể gây cháy. Nó được cấu tạo
từ chất bán dẫn SnO2. Chất này có độ nhạy cảm thấp với không khí sạch. Nhưng khi
trong môi trường có chất gây cháy, độ dẫn của nó thay đổi ngay. Chính nhờ đặc điểm này
người ta thêm vào mạch đơn gian để biến đổi từ độ nhạy này sang điện áp.
Khi môi trường sạch điện áp đầu ra của cảm biến thấp, giá trị điện áp đầu ra càng
tăng khi nồng độ khí gây cháy xung quanh MQ2 càng cao. Nó được sử dụng rộng rãi
trong công nghiệp và dân dụng do mạch đơn giản và chi phí thấp.
Hình 2.6 Module cảm biến khí gas.
Trong mạch có hai chân đầu ra là Aout và Dout. Trong đó:
 Aout: Điện áp ra tương tự, nó chạy từ 0.3-4.5V, phụ thuộc vào nồng độ khí
xung quanh MQ2.
 Dout: Điện áp ra số, giá trị 0 1 phụ thuộc vào điện áp tham chiếu và nồng
độ khí ga mà MQ2 đo được.
 Việc có chân ra số Dout rất tiện cho ta mắc các ứng dụng đơn giản. Khi
nồng độ MQ2 đo được thấp hơn mức cho phép thì Dout=1, đèn led tắt. Khi
nồng độ khí đo được lớn hơn nồng độ khí cho phép thì Dout=0, đèn led
sáng.
31
2.1.6. Module ethernet DP83848
DP83848 được thiết kế để cho phép kết nối Ethernet trong các môi trường khắc
nghiệt nhất. Thiết bị đáp ứng các tiêu chuẩn IEEE 802.3u trên một phạm vi nhiệt độ cho
phép từ -55 ° C đến 125 ° C. Thiết bị này rất lý tưởng cho các môi trường khắc nghiệt
như trạm từ xa không dây, ô tô, giao thông vận tải và các ứng dụng điều khiển công
nghiệp.
Hình 2.7 Mạch Ethernet DP83848.
Các tham số của DP83848:
CHỨC NĂNG VẬT LÝ
Nguồn 3.3
Tốc độ (Mbps) 10/100
Giao tiếp
MII
RMII
SNI
Số đèn LED 3
Chiều dài cáp tối đa (m) 150
Nhiệt độ cho phép -55 to 125
Bảng 2.2 Các tính năng của DP83848.
32
Nguyên lý hoạt động của DP83848
Mạch DP83848 gồm 2 bộ giao tiếp nằm ở 2 đầu
 Một đầu là port ethernet nối theo chuẩn RJ45 để giao tiếp với mạng máy tính
thông qua giao thức TCP/IP.
 Đầu còn lại là bộ gồm 20 chân dùng để giao tiếp với mạch STM32F4-
DISCOVERY.
Sơ đồ giao tiếp giữa mạch ETHERNET và STM32F4-DISCOVERY
Hình 2.8 Sơ đồ giao tiếp DP83848 và STM32F4-DISCOVERY.
Sơ đồ đấu nối các chân của DP83848 và STM32F4-DISCOVERY giúp
STM32F4-DISCOVERY có thể giao tiếp với mạng máy tính qua giao tiếp RJ45 trên nền
giao thức IP của mạng máy tính.
2.2. Sơ đồ mạch giám sát và báo động
Mạch giám sát là một khối thống nhất gồm tập hợp các khối giám sát như cảm
biến nhiệt độ, báo khói, chuyển động, khí gas và đèn báo hiệu, điều khiển camera, khối
báo động gắn liền với mạch để thực hiện các chức năng đã được định ra từ trước.
2.2.1. Sơ đồ mạch cảm biến nhiệt
33
Hình 2.9 Sơ đồ mạch cảm biến nhiệt.
Mạch gồm 3 chân, chân một nối đất, chân 3 nối nguồn 5V và chân 2 là chân dữ
liệu nối với chân PA8 của mạch STM32F4-DISCOVERY. Dữ liệu nhiệt độ sẽ được
truyền qua chân 2 theo giao thức 1-wire.
2.2.2. Sơ đồ chân cắm cảm biến chuyển động:
Hình 2.10 Sơ đồ chân cắm cảm biến chuyển động.
34
Mạch gồm 3 chân, chân 1 nối đất, chân 3 nối nguồn và chân 2 là chân dữ liệu nối
với chân PB5 của kit STM32F4- DISCOVERY, khi có chuyển động sẽ báo mức 1 về
khối vi xử lý, sau đó làm bật camera và đèn theo chương trình đã được định trước.
2.2.3. Sơ đồ mạch điều khiển camera
Hình 2.11 Sơ đồ mạch điều khiển camera.
Khi nhận tín hiệu ở chân vi điều khiển PB8 là mức 1 thì khối khuếch đại
(transistor C1815) sẽ làm nhiệm vụ khuếch đại tín hiệu từ kích cuộn dây của Relay (Cuộn
dây quấn quanh một thanh sắt nhỏ. Có tác dụng như một nam châm điện khi có dòng điện
đủ lớn đi qua).
Khi có dòng điện kích thì sẽ hình thành nam châm điện và nam châm điện sẽ hút
thanh sắt ở bên trong từ đó hình thành tiếp điểm 3-4 và làm bật camera (sáng led hiển
thị).Ngược lại, khi chân PB8 là mức 0 thì khối khuyếch đại không hoạt động, không có
tiếp điểm nam châm điện (không có dòng kích) và sẽ có tiếp điểm 3-5. Từ đó làm tắt thiết
bị.
Tóm lại, khối relay như một công tắc điều khiển (đóng - mở, bật - tắt thiết bị) được
điều khiển bằng tín hiệu từ kit vi xử lý.
35
2.2.4. Sơ đồ mạch điều khiển đèn
Hình 2.12 Sơ đồ mạch điều khiển đèn.
Khi chân PB7 của mạch STM32F4-DISCOVERY bằng 0 (điệp áp bằng 0) thì
chân đất của transistor C945 rời chân nối với R9, nên mạch ngắt và đèn tắt, nếu chân PB7
bằng 1 (điện áp bằng 3V) thì chân đất của transistor C945 nối R9, nên mạch đóng và đèn
sáng. Vây muốn đèn sáng ta gán 1 cho chân PB7 và gán giá trị 0 cho chân PB7 thì tắt
đèn. Ở đây đèn chỉ là cách gán tên tượng trưng cho việc điều khiển thiết bị gia dụng vì
vậy chúng ta có thể gán tên của một thứ khác.
2.2.5. Sơ đồ mạch cảm biến khói
Hình 2.13 Sơ đồ mạch cảm biến khói.
36
Theo sơ đồ ta có các thông số sau:
 Điện áp của đường VHI gần bằng 2V nối chân 2 của LM393.
 Điện áp của đường VLO gần bằng 9V nối chân 5 của LM393.
Ở trạng thái bình thường ta có các thông số sau:
 Chân 5 và 7 của báo khói liền nhau nên chân 7 nối đất.
 Chân 7 của báo khói nối đất thì chân 3 của LM393 nối đất nên điện áp chân 3 này
bằng 0.
 Điện áp chân 3 của LM393 bằng 0 sẽ nhỏ hơn điện áp chân 2 của LM393(2v) nên
điện áp chân 1 của LM393 bằng 0.
 Khi điện áp chân 1 của LM393 bằng 0 thì điện áp tại tiếp điểm giữa chân 1 và 7
của LM393 phải bằng 0, lúc này nếu đọc chân PA3 của mạch STM32F4-
DISCOVERY nó sẽ cho giá trị 0.
Ở trạng thái có khói ta có một số thông số sau:
 Chân 5 và 7 của báo khói rời nhau nên chân 7 không còn giá trị.
 Lúc này tại chân 7 của báo khói có điện áp bằng 12V
/2 = 6V nên chân 3 và 6 của
LM393 có điện áp bằng 6V.
 Điện áp chân 3 của LM393 bằng 6V sẽ lớn hơn điện áp chân 2 của LM393(2V)
nên điện áp chân 1 của LM393 khác 0.
 Điện áp chân 6 của LM393 bằng 6v sẽ nhỏ hơn điện áp chân 5 của LM393(9V)
nên điện áp chân 7 của LM393 khác 0.
 Khi điện áp chân 1 và chân 7 của LM393 khác 0 thì điện áp tại tiếp điểm giữa
chân 1 và 7 của LM393 khác 0.
Tóm lại, khi ở trạng thái bình thường thì giá trị tại chân PA3 của mạch STM32F4-
DISCOVERY bằng 0, khi có khói giá trị sẽ bằng 1 và kích hoạt khối báo động đã được
định sẵn.
37
2.2.6. Sơ đồ chân cắm cảm biến khí gas:
Hình 2.14 Sơ đồ chân cắm cảm biến khí gas.
Mạch gồm 4 chân, chân 1 nối nguồn, chân 4 nối đất và chân 2 là chân dữ liệu
tương tự Aout, chân 3 là chân dữ liệu số Dout. Ở đây ta sử dụng chân dữ liệu số (chân 3)
nối với chân PB4 của mạch STM32F4 DISCOVERY.
Khi có khí gas vượt quá ngưỡng cho phép cảm biến sẽ báo về mức 0 làm kích hoạt
khối báo động theo chương trình đã được định sẵn.
2.2.7. Sơ đồ mạch báo động:
Hình 2.15 Sơ đồ mạch báo động.
38
Khi có khí ga, chân PB1 của vi điều khiển nhận mức 1 và tác động đến chân Reset
(số 4) của IC555. Ngõ ra output (chân 3) của IC555 sẽ cho ra xung vuông có tần số đủ
lớn để chuông báo động kêu liên hồi.
Để tính toán giá trị tần số phù hợp, từ sơ đồ trên ta chỉ cần áp dụng công thức:
f= 1,44 / [C4 x (R11+2R21)]
Để điều chỉnh tần số xung vuông, ta điều chỉnh giá trị biến trở 10k.
Tín hiệu ở ngõ ra sẽ được khuếch đại nhờ khối khuyếch đại sử dụng transistor
C1815 và sau đó đưa ra loa buzzer báo động.
2.3. Kết luận
Mạch giám sát là một là một hệ thống thống nhất gồm nhiều module, mỗi module
giám sát một loại thiết bị riêng. Chương 2 mới chỉ giới thiệu về sơ đồ phần cứng của các
module, để hoạt động mỗi module cần phải tích hợp chương trình tương ứng để điều
khiển quá trình giám sát.
39
CHƯƠNG 3: HỆ THỐNG PHẦN MỀM QUẢN LÝ MẠCH GIÁM SÁT
Chương này sẽ giới thiệu chi tiết về các công cụ lập trình được sử dụng để xây
dựng nên hệ thống giám sát, các công cụ này bao gồm: cộng nghệ .NET(C#), Keil C.
3.1. Bộ công cụ lập trình nhúng Keil C
Giới thiệu
Keil C là công cụ phần mềm hỗ trợ khá đầy đủ giúp người dùng soạn thảo và biên
dịch chương trình cho các vi điều khiển thuộc họ ARM và một số họ khác bằng ngôn ngữ
C/C++.
Giống như tất cả các phần mềm dựa trên μVision IDE Keil, Keil C cung cấp môi
trường lập trình mạnh mẽ, dễ sử dụng và dễ dàng tiếp cận giúp phát triển các ứng dụng
nhúng. Chúng bao gồm các thành phần cần thiết để tạo, debug và kết hợp vi điều khiển
với các thiết bị ngoại vi liên quan.
Các bước phát triển phần mềm
1. Tạo project và chọn vi xử lý đồng thời thiết lập các thông số tương ứng.
2. Viết Code cho project theo ngôn ngữ C/C++.
3. Biên dịch chương trình.
4. Debug và hoàn thiện chương trình.
5. Download chương trình xuống FLASH ROM hay SRAM của chip..
Cấu trúc chương trình đơn giản
Keil C hoạt động giống như các bộ lập trình C chuẩn, khi bắt đầu nó thực thi hàm
main. Đối với các chương trình nhúng hàm main thường là đoạn code lặp vô tận.
Ví dụ:
int counter;
main (void)
{
counter = 0;
while (1) // repeat forever
40
{
counter++; // increment counter
}
}
Luân chuyển công việc theo cấu trúc Round-Robin
Round-Robin cho phép thực hiện song song đồng thời một số nhiệm vụ. Mỗi công
việc được thực hiện trong một thời gian xác định trước. Sau khi hết thời gian thực hiện
tác vụ i nó sẽ bắt đầu thực hiện tác vụ i+1. Ví dụ minh họa hoạt động của cấu trúc round-
robin tham khảo tại phụ lục 5 (trang 64).
Các dạng hàm wait
Hàm wait dùng để tạm dừng một công việc và chờ biến cố để tiếp tục công việc
của mình. Suốt thời tạm dừng này, CPU sẽ thực thi những công việc khác. Ví dụ minh
họa tham khảo phụ lục 6 (trang 65).
Mailbox
Mailbox là hàng đợi FIFO dùng để chuyển dữ liệu giữa các công việc hay tiến
trình. Ví dụ minh họa tham khảo phụ lục 7 (trang 65).
Bộ nhớ
Công cụ phát triển Keil C cung cấp quyền truy cập vào tất cả khu vực bộ nhớ với
bất kỳ kiến trúc vi điều khiển nào. Các biến có thể được gán tường minh tại một không
gian vùng nhớ nào đó bằng các khai báo kiểu tường minh hoặc có thể được gán không
tường minh dựa vào kiểu vùng nhớ. Truy cập vào bộ nhớ dữ liệu nội bộ nhanh hơn so với
truy cập vào bộ nhớ dữ liệu bên ngoài, vì vậy nếu có thể ta nên khai các biến sử truy xuất
thường xuyên tại vùng nhớ nội bộ và các biến ít truy xuất ở vùng nhớ bên ngoài.
TCP Socket
Keil C cung cấp thành phần RL-TCPnet dùng để thực hiện việc truyền dữ liệu
qua giao thức TCP/IP. Ví dụ minh họa hoạt động của RL-TCPnet tham khảo phụ lục 8
(trang 66).
41
HTTP Server
Hypertext Mark-up Language (HTML) là ngôn ngữ chính để định dạng trang web.
Với HTML, bạn có thể mô tả những gì một trang cần được thể hiện như loại phông chữ,
màu sắc của văn bản, nơi đánh dấu đoạn và nhiều định dạng khác của tài liệu.
Có 2 dạng trang web trong HTTP server là trang tĩnh và trang động.
 Trang tĩnh có nội dung cố định.
 Trang động có nội dung thay đổi theo dữ liệu yêu cầu được nhập vào từ
người dùng.
RL-TCPnet hỗ trợ cả hai loại trang web trên. Các trang web tĩnh thường được lưu
trữ trong hệ thống tập tin ROM ảo. Các tập tin được chuyển đổi thành C-code bằng công
cụ chuyển đổi tập tin FCARM.
Ví dụ minh họa tham khảo phụ lục 9 (trang 69).
Các Web Server cung cấp một ngôn ngữ kịch bản nhỏ để xử lý các trang web
động. Các HTTP Server xử lý các dòng tập tin mã nguồn kịch bản và gọi các chức năng
CGI khi cần thiết. Các kết quả trả về của chức năng CGI được tích hợp vào trang web kết
quả và gởi đến các máy client.
Mỗi dòng lệnh bắt đầu với một ký tự xác định một lệnh cho các thông dịch kịch
bản. Các ngôn ngữ kịch bản thì đơn giản và hoạt động như sau:
Lệnh Mô tả
i Dùng để include nội dung của một tập tin .inc.
t Lệnh xuất dòng văn bản ra trình duyệt.
c
Gọi một hàm C từ file HTTP_CGI.c để xử lý dòng này. Kết quả trả về sẽ
được xuất ra trình duyệt.
# Đây là dòng chú thích và được bỏ qua bởi trình thông dịch.
. Biểu thị dòng lệnh cuối cùng.
Bảng 3.1 Bảng ký tự đại diện của các lệnh trong các file script.
Cấu trúc hàm thông dịch và ví dụ minh họa tham khảo phụ lục 10 (trang 71).
42
3.2. Công nghệ .NET
.NET Framework của Microsoft là một nền tảng lập trình tập hợp các thư viện lập
trình có thể được cài thêm hoặc đã có sẵn trong các hệ điều hành Windows. Nó cung cấp
những giải pháp thiết yếu cho những yêu cầu thông thường của các chương trình điện
toán như lập trình giao diện người dùng, truy cập dữ liệu, kết nối cơ sở dữ liệu, ứng dụng
web, các giải thuật số học và giao tiếp mạng. Ngoài ra, .NET Framework còn quản lý
việc thực thi các chương trình được viết dựa trên công nghệ .NET do đó người dùng cần
phải cài .NET Framework để có thể chạy các chương trình được viết trên nền .NET.
Về chức năng, .NET Framework có 3 khối chức năng là: Trình diễn
(Presentation), Dữ liệu (Data), Giao tiếp (Communication).
Về kỹ thuật, hiện tại Microsoft giới thiệu 4 kỹ thuật mới và nổi bật nhất là:
Windows CardSpace (InfoCard), Windows Presentation Foundation (Avalon), Windows
Communication Foundation (Indigo), Windows Workflow Foundation (Workflow).
3.2.1. Cấu trúc .NET FrameWork
.NET Framework bao gồm ba phần là bộ thực thi ngôn ngữ chung (Common
Language Runtime), các lớp lập trình hợp nhất hay còn gọi là các thư viện lớp cơ sở
(Base Class Libraries) và một phiên bản cấu thành của Microsoft Active Server Pages gọi
là Microsoft ASP.NET. Trên thực tế, ASP.NET và Windows Forms là hai thành phần
nằm trong Base Class Libraries, nên có thể xem .NET Framework bao gồm 2 phần chính
là Common Language Runtime (CLR) và .NET Framework Class Library (FCL). Một
trong các thành phần này đều có vai trò cực kỳ quan trọng trong việc phát triển các dịch
vụ và các ứng dụng .NET.
3.2.1.1. Common Language Runtime - Bộ thực thi ngôn ngữ chung
Common Language Runtime (gọi tắt là bộ thực thi – CLR) được xây dựng trên các
dịch vụ hệ điều hành. CLR là nền tảng của .NET Framework, nó đảm nhận các công việc
sau:
 Là công cụ thực thi mã trung gian (tựa JVM).
 Biên dịch (Just-in-time compiler).
43
 Thực thi mã nguồn.
 Quản lý bộ nhớ.
 Thực thi luồng (Thread execution).
 Xử lý lỗi (Error-handling).
 Xác nhận mã nguồn an toàn (managed code).
CLR đã được phát triển ở tầm cao hơn so với các runtime trước đây như VB-
runtime chẳng hạn, bởi nó đạt được những khả nǎng như tích hợp các ngôn ngữ, bảo mật
truy cập mã, quản lý thời gian sống của đối tượng và hỗ trợ gỡ lỗi.
Mã được biên dịch và hướng tới CLR có tên “managed code”. “Managed code”
cung cấp siêu dữ liệu (metadata) cần thiết cho CLR để cung cấp các dịch vụ hỗ trợ đa
ngôn ngữ, bảo mật mã, quản lý thời gian sống của đối tượng và quản lý bộ nhớ.
Nếu .NET Framework tồn tại (và đã được cài đặt) trên một hệ điều hành, thì hệ
điều hành đó có thể chạy bất kỳ chương trình .NET nào. Tính năng giúp một chương
trình có thể chạy (không có sửa đổi) trên nhiều hệ điều hành khác nhau được gọi là sự
độc lập về nền tảng. Code được viết một lần có thể được sử dụng trên mọi loại máy tính
mà không sửa đổi, giúp tiết kiệm cả thời gian và tiền bạc.
.NET Framework cũng cung cấp mức độ tương tác cao giữa các ngôn ngữ.
Chương trình viết bằng các ngôn ngữ khác nhau đều được biên dịch thành các phần
MSIL khác nhau có thể được kết hợp để tạo ra một chương trình thống nhất. MSIL cho
phép .NET Framework trở thành ngôn ngữ không phụ thuộc, bởi vì các chương trình
.NET không gắn với một ngôn ngữ lập trình cụ thể nào cả. Bất cứ ngôn ngữ nào có thể
được biên dịch sang MSIL được gọi là ngôn ngữ tương thích với .NET. Danh sách một số
ngôn ngữ lập trình khả dụng với .NET được liệt kê dưới đây:
.NET programming languages
 Visual C#.
 Visual J#.
 ….
44
Common Language Infrastructure (CLI)
Mục đích của Common Language Infrastructure (CLI) là cung cấp một nền tảng
ngôn ngữ trung lập để phát triển và thực thi ứng dụng, bao gồm cả chức năng để xử lý
các lỗi, thu gom rác thải (garbage collection), bảo mật và khả năng tương tác. Bằng cách
thực hiện những khía cạnh cốt lõi của .NET Framework trong phạm vi của mình, CLI sẽ
không được gắn với một ngôn ngữ duy nhất mà sẽ có mặt trên nhiều ngôn ngữ được hỗ
trợ bởi .NET framework.
Biên dịch trong .NET
Common Language Runtime (CLR) là một phần trung tâm của .NET Framework
thực hiện các chương trình .NET.
Chương trình được biên dịch vào các hướng dẫn-cụ thể (machine-specific) của
máy theo hai bước. Đầu tiên, chương trình được dịch thành Microsoft Intermediate
Language (MSIL), trong đó xác định các hướng dẫn cho các CLR. Code được chuyển đổi
thành MSIL từ các ngôn ngữ khác và các nguồn có thể được kết hợp với nhau bằng CLR.
Các MSIL cho các thành phần của một ứng dụng được đặt vào file thực thi của ứng dụng
(được gọi là assembly). Khi ứng dụng thực thi, trình biên dịch (được gọi là biên dịch just-
in-time hoặc biên dịch JIT) CLR phiên dịch MSIL trong file thực thi vào mã máy (đối với
một nền tảng cụ thể), sau đó mã máy được thực thi trên nền tảng đó. MSIL là ngôn ngữ
trung gian, là một giải pháp để giúp cho các lập trình viên không cần quan tâm đến việc
lập trình bằng ngôn ngữ nào trong bộ .NET.
Tại sao phải biên dịch 2 lần:
 Độc lập với phần cứng
 NET framewwork có thể cài đặt trên nhiều platform.
 Các chương trình .NET được thực hiện mà không có thay đổi code nào
 Độc lập về ngôn ngữ
 Các chương trình .NET không bị trói buộc vào một ngôn ngữ cụ thể nào cả.
 Các chương trình trong .NET có thể được viết bởi nhiều ngôn ngữ trong
.NET.
45
3.2.1.2. NET FRAMEWORK CLASS LIBRARY (FCL) – Thư viện lớp .NET
Framework
Microsoft Foundation Class (MFC) là bộ thư viện mà lập trình viên Visual C++ sử
dụng trong khi Java Foundation Class (JFC) là bộ thư viện dành cho các lập trình viên
Java. Bạn có thể xem .NET Framework Class Library (FCL) là bộ thư viện dành cho các
lập trình viên .NET.
Với hơn 80000 lớp đối tượng (với .NET 4.0) để gọi thực hiện đủ các loại dịch vụ
từ hệ điều hành, bạn có thể bắt đầu xây dựng ứng dụng bằng Notepad.exe. Nhiều người
lầm tưởng rằng các môi trường phát triển phần mềm như Visual Studio 98 hay Visual
Studio .NET là tất cả những gì cần để viết chương trình. Thực ra, chúng là những phần
mềm dùng làm vỏ bọc bên ngoài. Với chúng, bạn sẽ viết được các đoạn lệnh đủ các màu
xanh, đỏ, lỗi cú pháp được báo ngay khi đang gõ lệnh, thuộc tính của các đối tượng được
đặt ngay cửa sổ properties, giao diện được thiết kế theo phong cách trực quan…
Hầu hết các lớp được gom vào một namespace (không gian tên) gọi là system.
3.2.1.3. Sơ lược về NAMESPACE
.NET Framework được tạo bởi từ hàng trǎm lớp (class). Nhiều ứng dụng mà bạn
xây dựng trong .NET đang tận dụng các lớp này theo cách này hay cách khác. Vì số
lượng các lớp là quá lớn, .NET Framework tổ chức các lớp này vào một cấu trúc lớp
được gọi là một namespace. Một namespace có thể là con của một namespace lớn hơn.
Namespace lớn nhất trong .NET Framework là System. System là một Namespace cơ sở
trong .NET Framework. Tất cả các namespace được cung cấp trong .NET framework bắt
đầu với namespace cơ sở này. Ví dụ, những lớp phục vụ việc truy cập và thao tác dữ liệu
được tìm thấy trong namespace System.Data. Những ví dụ khác bao gồm System.IO,
System.XML, System.Collections, System.Drawing …
Lợi điểm của namespace là phân nhóm các lớp đối tượng, giúp người dùng dễ
nhận biết và sử dụng. Ngoài ra, namespace tránh việc các lớp đối tượng có tên trùng với
nhau không sử dụng được. .NET Framework cho phép bạn tạo ra các lớp đối tượng và
các namespace của riêng mình. Với hơn 80000 tên có sẵn, việc đặt trùng tên lớp của mình
46
với một lớp đối tượng đã có là điều khó tránh khỏi. Namespace cho phép việc này xảy ra
bằng cách sử dụng một tên đầy đủ để truy xuất đến một lớp đối tượng. Ví dụ, nếu muốn
dùng lớp WebControls, bạn có thể dùng tên tắt của nó là WebControls hay tên đầy đủ là
System.Web.UI.WebControls.
3.2.2. Lập trình socket
Trong lập trình mạng, Socket là một API cung cấp các phương thức để giao tiếp
thông qua mạng, các lớp sau đây hỗ trợ việc lập trình socket trên nền .net(C#)
Lớp Namespace Mô tả
IPAddress System.Net Địa chỉ của giao thức Internet Protocol (IP).
IPEndPoint System.Net Đại diện cho địa chỉ trên một cổng.
TcpListener System.Net.Sockets Chờ kết nối từ các máy trạm.
Socket System.Net.Sockets Quản lý kết nối với máy trạm.
TcpClient System.Net.Sockets Cung cấp các kết nối client trên nền TCP.
NetworkStream System.Net.Sockets Cung cấp cơ chế luồng cho việc truy cập dữ
liệu qua mạng.
Bảng 3.2 Các đối tượng dùng để lập trình socket trong C#.
Kết nối Server-Client thông qua TCP/IP
Khi thực thi, server cần được xác định rõ địa chỉ IP và sẽ tiếp nhận thông tin trên
một port cụ thể. Server sẽ nằm trong trạng thái này cho đến khi client gửi đến một yêu
cầu kết nối. Sau khi được server chấp nhận, một kết nối sẽ hình thành cho phép server và
client giao tiếp với nhau.
Để hiểu rõ hơn ta thực hiện các bước sau để kết nối server và client sử dụng giao
thức TCP/IP trong C# (có thể chạy server và client trên cùng một máy).
47
Server:
1. Tạo một đối tượng System.Net.Sockets.TcpListener để bắt đầu “lắng nghe” trên
một cổng cục bộ.
2. Đợi và chấp nhận kết nối từ client với phương thức AccepSocket(). Phương thức
này trả về một đối tượng System.Net.Sockets.Socket dùng để gửi và nhận dữ liệu.
3. Thực hiện giao tiếp với client.
4. Đóng Socket.
Thông thường quy trình này sẽ được đặt trong một vòng lặp (lặp lại bước 2) để
chấp nhận nhiều kết nối cùng lúc (sử dụng Thread) hoặc các kết nối lần lượt.
Client:
1. Tạo một đối tượng System.Net.Sockets.TcpClient.
2. Kết nối đến server với địa chỉ và port xác định với phương thức
TcpClient.Connect().
3. Lấy luồng (stream) giao tiếp bằng phương thức TcpClient.GetStream().
4. Thực hiện giao tiếp với server.
5. Đóng luồng và socket.
Hình 3.1 Mô hình truyền nhận Client-Server.
48
Ví dụ : Gửi nhận dữ liệu dạng mảng các byte
Lớp NetworkStream và Socket cung cấp các phương thức gửi và nhận dữ liệu
dạng mảng các byte. Vì vậy bạn cần phải thực hiện các bước chuyển đổi dữ liệu sang
dạng byte và ngược lại. Trong ví dụ sau tôi sử dụng dữ liệu dạng văn bản ASCII trong
console, và dùng các lớp trong namespace System.Text để chuyển đổi. Có hai cách bạn
có thể áp dụng:
 Dùng các static property của lớp abstract System.Text.Encoding với các phương
thức GetString() và GetBytes().
 Tạo đối tượng có kiểu XXXEncoding (thừa kế từ System.Text.Encoding). Ví dụ:
UTF8Encoding, ASCIIEncoding, …
Một ví dụ gửi nhận dữ liệu đơn giản nhất sử dụng TCPListener, Socket (phía
server) và TCPClient, NetworkStream (phía client) dạng mảng byte với địa chỉ loop-back
127.0.0.1 trên cùng một máy.
CODE Server và Client tham khảo tại phụ lục 11 (trang 79)
3.3. Kết luận
Chương này cho ta cách nhìn tổng thể về hệ thống giám sát được tạo ra bởi 2 công
cụ chính là C# và Keil C, mỗi công cụ được sử dụng cho từng mục đích cụ thể sau:
 .Net(C#) được sử dụng để thiết kế chương trình cho server trung tâm nhằm quản
lý các dữ liệu báo cáo từ các mạch giám sát.
 Keil C dùng để viết các phần mềm nhúng cho các mạch giám sát.
49
CHƯƠNG 4: CÁC KẾT QUẢ NGHIÊN CỨU
Những gì có trong chương 4 này chính là những kết quả nghiên cứu mà nhóm đã
đạt được trong quá trình tìm hiểu và thực hiện đề tài.
4.1. Khối nhà trạm
Khối này gồm các module hoạt động riêng biệt và được điều khiển bởi board xử lý
trung tâm stm32f4-Discovery.
Hình 4.1 Mạch giám sát gồm các tính năng cơ bản
50
Nguyên lý hoạt động của mạch như sau: các module cảm biến khói, khí gas,
chuyển động, nhiệt độ khi được cấp nguồn sẽ liên tục gởi thông tin về cho board xử lý
trung tâm. Thông tin ấy sẽ được xử lý và chia làm hai hướng:
 Tự động điều khiển các khối báo hiệu: nếu như có khói hoặc khí gas thì khối báo
động sẽ được kích hoạt và nếu như có chuyển động thì khối đèn, camera sẽ đồng
thời được kích hoạt.
 Gởi thông tin của các khối trên mạch giám sát về phần mềm giám sát để người
dùng quản lý thông qua module Ethernet DP83848.
4.2. Khối quản lý nhà trạm
Khối này gồm chương trình quản lý các thiết bị cảm biến của mạch giám sát,
chương trình giao tiếp với khối quản lý trung tâm cũng như chương trình web cho phép
cài đặt các thông số hệ thống.
Hình 4.4 Giao diện trang web chính của mạch giám sát.
Trang web này gồm 2 tính năng: cho phép cài đặt thông số và thay đổi mật khẩu.
51
Hình 4.5 Giao diện cài đặt thông số cho mạch giám sát.
 ID: là mã thiết bị giám sát dùng để phân biệt với các thiết bị giám sát khác, mã này
chính là mã trạm mà chương trình trung tâm quản lý, thiết bị giám sát muốn đăng
nhập vào hệ thống thì mã trạm này phải được khai báo ở chương trình trung tâm
và ID của thiết bị này được lưu trong bảng STATION (trường ID).
 Server IP Address : đây là địa chỉ mạng của máy tính trung tâm dùng để giám sát
các trạm, trạm khi khởi động sẽ sử dụng địa chỉ này để kết nối vào trung tâm và
định kỳ gởi các thông số trạng thái của trạm về trung tâm.
 Port: đây là cổng kết nối của máy tính trung tâm.
 Local IP Address: đây là địa chỉ của thiết bị giám sát, địa chỉ này phải cùng lớp
mạng với địa chỉ máy trung tâm bên trên.
 Subnet mask: dùng để phân chia về mặc logic địa chỉ IP.
 Default gateway: địa chỉ máy tính để giao tiếp với mạng bên ngoài.
 DNS server: địa chỉ máy tính để phân giải tên miền.
52
Hình 4.6 Giao diện đổi mật khẩu.
Mỗi mạch giám sát có một account duy nhất là Admin, vì vậy trang này chỉ đơn
giản là đổi mật khẩu cho Admin.
4.3. Khối quản lý trung tâm
Khối này có vai trò trung gian cho khối quản lý nhà trạm và khối giao diện người
sử dụng, khối này có vai trò tập hợp trạng thái của các mạch giám sát để gởi tới chương
trình web của người dùng, cũng như gởi các lệnh lấy thông tin. Giao diện chính của khối
này như hình sau:
Hình 4.7 Giao diện chính của khối trung tâm.
53
Giao diện chính gồm 4 phần
 Connected station: thể hiện thông tin của các trạm hiện đang kết nối vào trung
tâm.
 Connected browser: thể hiện thông tin các trang web giám sát đang kết nối vào
trung tâm để theo dõi các trạm giám sát.
 Command from browser: hiển thị các lệnh yêu cầu từ các trang web người dùng
gởi về các trạm giám sát.
 Data from stations: hiển thị các thông tin trạng thái của các trạm giám sát gởi về
cho trung tâm. Bao gồm 2 phần chính: thời gian và thông số của các khối trên
mạch giám sát: 1: nhiệt độ, 2: chuyển động, 3: camera, 4: đèn, 5: khói, 6: khí gas,
7: báo động. Ngoại trừ nhiệt độ hiển thị số liệu nhiệt độ của môi trường thì các
thông số từ 2 đến 7 sẽ thông báo trạng thái đang bật/tắt của các khối trên mạch
giám sát.
 Chức năng Tool-View Log: cho phép xem lại tất cả các biến cố của trung tâm,
phục vụ cho việc debug khi chương trình phát sinh kết quả ngoài ý muốn.
Hình 4.8 Giao diện View Log.
54
 Chức năng Tool-Analyse log: cho phép xem lại tất cả các biến cố của trung
tâm kèm thêm tính năng lọc các thông tin biến cố theo ý người dùng.
Hình 4.9 Giao diện Analyse Log.
4.4. Kết luận
Chương 4 đã trình bày các kết quả đạt được. Mạch và hệ thống giám sát đã hoạt
động hiệu quả, đảm bảo tính chính xác của từng phần. Chương 5 sẽ kết luận về các nội
dung nghiên cứu đã được thực hiện và kiến nghị về các lĩnh vực có thể ứng dụng kết quả
nghiên cứu cũng như đề xuất những định hướng nghiên cứu trong tương lai.
55
CHƯƠNG 5: KẾT LUẬN VÀ KIẾN NGHỊ
Chương 5 này sẽ tóm tắt lại các nội dung nghiên cứu đã thực hiện cũng như đưa ra
các kiến nghị cho tương lai.
5.1. Kết quả đạt được
Đề tài thiết kế và thi công mạch giám sát đã thực hiện được các công việc sau:
- Thiết kế và thi công hệ thống phần cứng mạch giám sát gồm các module sau:
 Module báo khói.
 Module giám sát nhiệt độ.
 Module cảm biến chuyển động.
 Module cảm biến khí gas.
 Module điều khiển camera.
 Module điều khiển đèn.
- Xây dựng hệ thống phần mềm giám sát mạch gồm các khối sau:
 Khối chương trình nhúng tại các mạch giám sát gồm:
 Chức năng cài đặt các thông số của mạch giám sát.
 Chức năng đổi mật khẩu.
 Chương trình nhúng để giám sát và gởi thông số về server trung tâm.
 Khối chương trình server trung tâm gồm:
 Chức năng liên kết với các trạm để nhận thông tin trạng thái.
 Chức năng liên kết với các người dùng đầu cuối (giao diện web) để
hiển thị thông tin nhận được cho người dùng quan sát từ xa được
mạch trên máy tính.
 Khối chương trình web cho phép người dùng giám sát các trạm từ xa, khối
này gồm:
 Chức năng cho phép cài đặt các thông số hệ thống.
 Chức năng cho phép khai báo tài khoản người truy cập.
 Chức năng cho phép khai báo thông tin các trạm.
Kết luận: đề tài đã hoàn thành tất cả các mục tiêu đã đề ra trong bản thuyết minh đề tài.
56
5.2. Kiến nghị
5.2.1. Áp dụng thực tế
Hệ thống giám sát là hệ thống cho phép người quản trị có thể giám sát các hoạt
động của từng thiết bị, điều khiển và quản lý một cách hiệu quả nhà trạm thông qua mạng
nội bộ. Hệ thống này có thể được áp dụng giám sát tại các hộ gia đình, xưởng sản xuất và
các phòng học, phòng thí nghiệm tại trường Đại Học Sài Gòn nhằm:
 Giám sát được trạng thái mọi lúc, mọi nơi.
 Tăng độ bền thiết bị.
 Tăng cường tính bảo vệ, an toàn cho con người.
 Tiết kiệm chi phí điện năng.
 Giảm thiểu chi phí nhân công.
5.2.2. Hướng phát triển
Hệ thống mạch giám sát là đề tài ứng dụng các dạng cảm biến để giám sát và điều
khiển các thiết bị liên quan, vì vậy đây là một dạng đề tài mở, ta có thể phát triển đề tài
này bằng cách nghiên cứu tích hợp thêm các dạng cảm biến như: cảm biến độ ẩm, cảm
biến vỡ kính, cảm biến điện lưới, cảm biến ngập nước,... Ngoài ra chúng ta có thể nâng
cấp hệ thống giám sát bằng việc xây dựng phần mềm quản lý và điều khiển mạch giám
sát từ xa, không dây. Nhằm phát triển đề tài thành những hệ thống giám sát trên nhiều
lĩnh vực khác nhau phục vụ cho nhu cầu thiết thực trong môi trường thực tiễn.
57
TÀI LIỆU THAM KHẢO
[1] Keil, ARM Product Manuals,
http://www.keil.com/support/man_arm.htm, 2015.
[2] TS.Văn Tấn Lượng, ThS.Lê Quốc Đán, Giáo trình Kĩ thuật vi xử lý.
[3] Microsoft, C# Programming Guide,
https://msdn.microsoft.com/en-us/library/67ef8sbd.aspx, 2013.
[4] Microsoft, Sockets,
https://msdn.microsoft.com/en-us/library/b6xa24z5(v=vs.110).aspx, 2015.
[5] ThS.Trần Minh Nhật, Đề tài hệ thống giám sát nhà trạm viễn thông BTS.
[6] ST, Discovery kit for STM32F407/417 lines,
http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252419, 2015.
[7] http://www.alldatasheet.com/
58
PHỤ LỤC
1. Code tự động điều khiển camera, đèn, báo động
while(1)
{
timer_tick();
//bat tat Bao dong
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_4)==0||GPIO_ReadInputDataBit(
GPIOA, GPIO_Pin_3)==1)
GPIO_WriteBit(GPIOB, GPIO_Pin_1,1);
else GPIO_WriteBit(GPIOB, GPIO_Pin_1,0);
//bat tat Camera, May lanh
if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_5)==1)
{
GPIO_WriteBit(GPIOB, GPIO_Pin_7,1);
GPIO_WriteBit(GPIOB, GPIO_Pin_8,1);
}
else
{
GPIO_WriteBit(GPIOB, GPIO_Pin_7,0);
GPIO_WriteBit(GPIOB, GPIO_Pin_8,0);
}
}
2. Code xử lý cài đặt thông số của trạm
do {
/* Parse all returned parameters. */
dat = http_get_var (dat, var, 40);
if (var[0] != 0) {
/* Parameter found, returned string is non 0-length. */
59
if (str_scomp (var, (unsigned char *)"pw=") == __TRUE) {
/* Change password. */
str_copy (passw, var+3);
stpassw |= 1;
}
else if (str_scomp (var, (unsigned char *)"pw2=") == __TRUE) {
/* Retyped password. */
str_copy (retyped, var+4);
stpassw |= 2;
}
else if (str_scomp (var, (unsigned char *)"LocalIp=") == __TRUE) {
p=var+8;
GanIP(m_pNetCfg->IP_Addr,(char*)p);
}
else if (str_scomp (var, (unsigned char *)"Port=") == __TRUE) {
p=var+5;
m_pNetCfg->port=atoi((char*)p);
}
else if (str_scomp (var, (unsigned char *)"ServerIp=") == __TRUE) {
p=var+9;
GanIP(m_pNetCfg->SERVERIP_Addr,(char*)p);
}
else if (str_scomp (var, (unsigned char *)"gateway=") == __TRUE) {
p=var+8;
GanIP(m_pNetCfg->IP_Gateway,(char*)p);
}
else if (str_scomp (var, (unsigned char *)"DNSServer=") == __TRUE) {
p=var+10;
60
GanIP(m_pNetCfg->IP_Dns1,(char*)p);
}
else if (str_scomp (var, (unsigned char *)"ID=") == __TRUE) {
p=var+3;
m_pNetCfg->StationID=atoi((char*)p);
}
}
}
} while (dat);
3. Code xử lý việc lấy thông tin các cảm biến
while(1)
{
temp =DS18B20_Get_Temp(GPIOA, GPIO_Pin_8);
p=(char*)&temp;
data[0]=1;//kieu float
data[1]=0;//VisibleIndex=Nhiet do
data[2]=0;//nguong
data[3]=p[0];
data[4]=p[1];
pb5=GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_5); //Chuyen dong
temp=pb5*10;
p=(char*)&temp;
data[5]=1;//kieu float
data[6]=1;//VisibleIndex=Chuyen dong
data[7]=0;//nguong
data[8]=p[0];
data[9]=p[1];
61
pb8=GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_8);
temp =pb8*10;
p=(char*)&temp;
data[10]=1;//kieu float
data[11]=2;//VisibleIndex=Camera
data[12]=0;//nguong
data[13]=p[0];
data[14]=p[1];
pb7=GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_7);
temp =pb7*10;
p=(char*)&temp;
data[15]=1;//kieu float
data[16]=3;//VisibleIndex=May Lanh
data[17]=0;//nguong
data[18]=p[0];
data[19]=p[1];
pa3=GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3); //Khoi
temp=pa3*10;
p=(char*)&temp;
data[20]=1;//kieu float
data[21]=4;//VisibleIndex=Khoi
data[22]=0;//nguong
data[23]=p[0];
data[24]=p[1];
62
pb4=GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_4); //Khi gas
temp=pb4*10;
p=(char*)&temp;
data[25]=1;//kieu float
data[26]=5;//VisibleIndex=Khi gas
data[27]=0;//nguong
data[28]=p[0];
data[29]=p[1];
pb1=GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_1);
temp =pb1*10;
p=(char*)&temp;
data[30]=1;//kieu float
data[31]=6;//VisibleIndex=Bao dong
data[32]=0;//nguong
data[33]=p[0];
data[34]=p[1];
AddDataPacketToQueue(Data_List_V2, data, 35, 0);
}
4. Code xử lý gói tin thông báo trạng thái
private void Manager_ControlStateEvent(object sender, ControlStateEvent e)
{
VTracDataContext db;
try
{
if (string.IsNullOrEmpty(connectionString))
{
63
return;
}
// Kiểm tra giờ từ thiết bị gởi lên với giờ tại Server
DateTime now = DateTime.Now;
if ((e.Date - now).TotalDays > 30)
{
// Xuất ra file log
log.WarnFormat("Giờ tại trạm {0} là '{1}' sai lệch với giờ tại Server
là '{2}'", e.StationID, e.Date.ToString(), now.ToString());
}
db = new VTracDataContext(connectionString);
Config_Station_Control
stationControl = db.Config_Station_Controls.Where(sC => sC.StationID ==
e.StationID && sC.VisibleIndex == e.VisibleIndex).FirstOrDefault();
if (stationControl != null)
{
// Lưu trạng thái điều khiển vào Database
DataControl dataControl = new DataControl { StationID =
e.StationID, Value = e.State, Time = e.Date, ControlName =
stationControl.ControlLabel, ControlID = stationControl.ControlID };
db.DataControls.InsertOnSubmit(dataControl);
db.SubmitChanges();
// Cập nhật trạng thái cho những nút trạng thái trên web
UpdateWebFormControl(e.StationID.ToString(), "Control",
e.State.ToString(), e.VisibleIndex);
}
else
64
{
// Xuất ra file log
log.ErrorFormat("Không tìm thấy dòng có VisibleIndex={0} và
StationID={1} trong bảng Config_Station_Control", e.VisibleIndex, e.StationID);
}
}
catch (Exception ex)
{
// Xuất ra file log
log.Error("Hàm Manager_ControlStateEvent đã phát ra Exception ",
ex.Message);
}
}
5. Ví dụ minh họa hoạt động của cấu trúc round-robin.
int counter0;
int counter1;
__task1 void job0 (void) {
os_tsk_create (job1, 1); // start job 1
while (1) { // endless loop
counter0++; // Increment counter 0
}
}
__task void job1 (void) {
while (1) { // Endless loop
counter1++; // Increment counter 1
}
}
main (void) { // the main function
65
os_sys_init (job0); // starts only job 0
}
Chương trình bắt đầu với job0, hàm os_tsk_create tạo công việc, các chức năng nhiệm vụ
job0 và job1 là vòng lặp đếm đơn giản. Sau khi hết thời gian thực hiện job0 thì job1 sẽ
được thực thi. Ngay khi thời gian thực thi job1 hết hệ thống tiếp tục với job0.
6. Chờ một khoảng thời gian xác định (Wait for Time Delay)
int counter0;
int counter1;
__task void job0 (void) {
os_tsk_create (job1, 1); // start job 1
while (1) {
counter0++; // Increment counter 0
os_dly_wait (3); // Wait 3 timer ticks
}
}
__task void job1 (void) {
while (1) {
counter1++; // Increment counter 1
os_dly_wait (5); // Wait 5 timer ticks
}
}
7. MAILBOX
os_mbx_declare(v_mail, 20); // mailbox with 20 entries
__task void job0 (void) {
int i, res;
os_mbx_init (v_mail, sizeof (v_mail)); // create mailbox first
os_tsk_create (job1, 2); // before waiting tasks
66
for (i = 0; i < 30; ) { // send 30 mail
res = os_mbx_send (v_mail, (void *) i, 1000);
if (res == OS_R_OK) i++; // check that mail send OK
}
os_tsk_delete_self (); // when done delete own task
}
__task void job1 (void) {
int v, res;
while (1) {
res = os_mbx_wait (v_mail, (void **) &v, 0xFFFF); // receive mail
if (res == OS_R_OK || s == OS_R_MBX) { // check status
printf ("nReceived v=%d res=%d", v, res); // use when correct
}
}
}
8. Hoạt động của RL-TCPnet
#include <rtl.h>
U8 tcp_soc;
U8 soc_state;
BOOL wait_ack;
void main (void) {
init_ ();
tcp_soc = tcp_get_socket (TCP_TYPE_CLIENT, 0, 120, tcp_callback);
soc_state = 0;
while (1) {
timer_poll ();
67
main_TcpNet ();
send_data ();
}
}
void send_data (void) {
static const U8 rem_IP[4] = {192,168,0,100};
static int bcount;
U32 max;
U8 *sendbuf;
switch (soc_state) {
case 0:
tcp_connect (tcp_soc, rem_IP, 1000, 0);
bcount = 0;
wait_ack = __FALSE;
soc_state = 1;
return;
case 2:
if (wait_ack == __TRUE) {
return;
}
max = tcp_max_dsize (tcp_soc);
sendbuf = tcp_get_buf (max);
for (i = 0; i < max; i += 2) {
sendbuf[i] = bcount >> 8;
sendbuf[i+1] = bcount & 0xFF;
if (bcount >= 32768) {
soc_state = 3;
68
break;
}
}
tcp_send (tcp_soc, sendbuf, i);
wait_ack = __TRUE;
return;
case 3:
if (wait_ack == __TRUE) {
return;
}
tcp_close (tcp_soc);
soc_state = 4;
return;
}
}
U16 tcp_callback (U8 soc, U8 event, U8 *ptr, U16 par) {
/* This function is called on TCP event */
switch (event) {
..
case TCP_EVT_CONNECT:
/* Socket is now connected and ready to send data. */
soc_state = 2;
break;
case TCP_EVT_ACK:
/* Our sent data has been acknowledged by remote peer */
wait_ack = __FALSE;
break;
69
..
}
return (0);
}
9. Ví dụ minh họa hoạt động web server
Ví dụ : ta có file system.cgi có nội dung như sau:
t <HTML>
t <BODY TEXT=#000000 BGCOLOR=#ccddff LINK=#0000FF
VLINK=#0000FF ALINK=#FF0000>
t <FORM ACTION=finish.cgi METHOD=POST NAME=CGI>
t <TABLE BORDER=0 WIDTH=400>
c s1<TR><TD WIDTH=200>Authentication</TD> <TD WIDTH=200>
<b>%s</b></TD></TR>
t <TR><TD>Password for user 'Admin'</TD>
c s2<TD><INPUT TYPE=password NAME=pw SIZE=10 MAXLENGTH=10
VALUE="%s"> </TD> </TR>
t <TR><TD>Retype your password</TD>
c s3<TD><INPUT TYPE=password NAME=pw2 SIZE=10 MAXLENGTH=10
VALUE="%s"> </TD> </TR>
t <TR><TD colspan="2" align="center"><INPUT TYPE=SUBMIT NAME=set
VALUE="Change" id="sbm"> </TD> </TR>
t </TABLE>
t </FORM>
t </BODY>
t </HTML>
.
Để nhúng trang web này vào ARM ta phải chuyển trang này sang dạng C-Code
bằng lệnh sau :
FCARM system.cgi
70
Sau khi dịch code trang web có dạng như sau:
/*-- File: system.cgi, 587 bytes --*/
0x01,0x3C,0x48,0x54,0x4D,0x4C,0x3E,0x3C,0x42,0x4F,0x44,0x59,0x20,0x54,0x45,
0x58,0x54,0x3D,0x23,0x30,0x30,0x30,0x30,0x30,0x30,0x20,0x42,0x47,0x43,0x4F,
0x4C,0x4F,0x52,0x3D,0x23,0x63,0x63,0x64,0x64,0x66,0x66,0x20,0x4C,0x49,0x4E,
0x4B,0x3D,0x23,0x30,0x30,0x30,0x30,0x46,0x46,0x20,0x56,0x4C,0x49,0x4E,0x4B,
0x3D,0x23,0x30,0x30,0x30,0x30,0x46,0x46,0x20,0x41,0x4C,0x49,0x4E,0x4B,0x3D,
0x23,0x46,0x46,0x30,0x30,0x30,0x30,0x3E,0x01,0x3C,0x46,0x4F,0x52,0x4D,0x20,
0x41,0x43,0x54,0x49,0x4F,0x4E,0x3D,0x66,0x69,0x6E,0x69,0x73,0x68,0x2E,0x63,
0x67,0x69,0x20,0x4D,0x45,0x54,0x48,0x4F,0x44,0x3D,0x50,0x4F,0x53,0x54,0x20,
0x4E,0x41,0x4D,0x45,0x3D,0x43,0x47,0x49,0x3E,0x3C,0x54,0x41,0x42,0x4C,0x45,
0x20,0x42,0x4F,0x52,0x44,0x45,0x52,0x3D,0x30,0x20,0x57,0x49,0x44,0x54,0x48,
0x3D,0x34,0x30,0x30,0x3E,0x02,0x73,0x31,0x3C,0x54,0x52,0x3E,0x3C,0x54,0x44,
0x20,0x57,0x49,0x44,0x54,0x48,0x3D,0x32,0x30,0x30,0x3E,0x41,0x75,0x74,0x68,
0x65,0x6E,0x74,0x69,0x63,0x61,0x74,0x69,0x6F,0x6E,0x3C,0x2F,0x54,0x44,0x3E,
0x3C,0x54,0x44,0x20,0x57,0x49,0x44,0x54,0x48,0x3D,0x32,0x30,0x30,0x3E,0x3C,
0x62,0x3E,0x25,0x73,0x3C,0x2F,0x62,0x3E,0x3C,0x2F,0x54,0x44,0x3E,0x3C,0x2F,
0x54,0x52,0x3E,0x01,0x3C,0x54,0x52,0x3E,0x3C,0x54,0x44,0x3E,0x50,0x61,0x73,
0x73,0x77,0x6F,0x72,0x64,0x20,0x66,0x6F,0x72,0x20,0x75,0x73,0x65,0x72,0x20,
0x27,0x41,0x64,0x6D,0x69,0x6E,0x27,0x3C,0x2F,0x54,0x44,0x3E,0x02,0x73,0x32,
0x3C,0x54,0x44,0x3E,0x3C,0x49,0x4E,0x50,0x55,0x54,0x20,0x54,0x59,0x50,0x45,
0x3D,0x70,0x61,0x73,0x73,0x77,0x6F,0x72,0x64,0x20,0x4E,0x41,0x4D,0x45,0x3D,
0x70,0x77,0x20,0x53,0x49,0x5A,0x45,0x3D,0x31,0x30,0x20,0x4D,0x41,0x58,0x4C,
0x45,0x4E,0x47,0x54,0x48,0x3D,0x31,0x30,0x20,0x56,0x41,0x4C,0x55,0x45,0x3D,
0x22,0x25,0x73,0x22,0x3E,0x3C,0x2F,0x54,0x44,0x3E,0x3C,0x2F,0x54,0x52,0x3E,
0x01,0x3C,0x54,0x52,0x3E,0x3C,0x54,0x44,0x3E,0x52,0x65,0x74,0x79,0x70,0x65,
0x20,0x79,0x6F,0x75,0x72,0x20,0x70,0x61,0x73,0x73,0x77,0x6F,0x72,0x64,0x3C,
0x2F,0x54,0x44,0x3E,0x02,0x73,0x33,0x3C,0x54,0x44,0x3E,0x3C,0x49,0x4E,0x50,
71
0x55,0x54,0x20,0x54,0x59,0x50,0x45,0x3D,0x70,0x61,0x73,0x73,0x77,0x6F,0x72,
0x64,0x20,0x4E,0x41,0x4D,0x45,0x3D,0x70,0x77,0x32,0x20,0x53,0x49,0x5A,0x45,
0x3D,0x31,0x30,0x20,0x4D,0x41,0x58,0x4C,0x45,0x4E,0x47,0x54,0x48,0x3D,0x31,
0x30,0x20,0x56,0x41,0x4C,0x55,0x45,0x3D,0x22,0x25,0x73,0x22,0x3E,0x3C,0x2F,
0x54,0x44,0x3E,0x3C,0x2F,0x54,0x52,0x3E,0x01,0x3C,0x54,0x52,0x3E,0x3C,0x54,
0x44,0x20,0x63,0x6F,0x6C,0x73,0x70,0x61,0x6E,0x3D,0x22,0x32,0x22,0x20,0x61,
0x6C,0x69,0x67,0x6E,0x3D,0x22,0x63,0x65,0x6E,0x74,0x65,0x72,0x22,0x3E,0x3C,
0x49,0x4E,0x50,0x55,0x54,0x20,0x54,0x59,0x50,0x45,0x3D,0x53,0x55,0x42,0x4D,
0x49,0x54,0x20,0x4E,0x41,0x4D,0x45,0x3D,0x73,0x65,0x74,0x20,0x56,0x41,0x4C,
0x55,0x45,0x3D,0x22,0x43,0x68,0x61,0x6E,0x67,0x65,0x22,0x20,0x69,0x64,0x3D,
0x22,0x73,0x62,0x6D,0x22,0x3E,0x3C,0x2F,0x54,0x44,0x3E,0x3C,0x2F,0x54,0x52,
0x3E,0x3C,0x2F,0x54,0x41,0x42,0x4C,0x45,0x3E,0x3C,0x2F,0x46,0x4F,0x52,0x4D,
0x3E,0x01,0x3C,0x2F,0x42,0x4F,0x44,0x59,0x3E,0x3C,0x2F,0x48,0x54,0x4D,0x4C,0x
3E,0x00,
10. Hàm thông dịch web động
CODE:
U16 cgi_func (U8 *env, U8 *buf, U16 buflen, U32 *pcgi) {
U16 len = 0;
switch (env[0]) {
/* Analyze the environment string. It is the script 'c' line starting */
/* at position 2. What you write to the script file is returned here. */
case 'a' :
/* Network parameters - file 'network.cgi' */
..
break;
case 'b':
/* LED control - file 'led.cgi' */
..
72
break;
case 'c':
/* TCP status - file 'tcp.cgi' */
..
break;
case 'd':
/* System password - file 'system.cgi' */
switch (env[2]) {
case '1':
len = sprintf(buf,&env[4],http_EnAuth ? "Enabled" : "Disabled");
break;
case '2':
len = sprintf(buf,&env[4],http_auth_passw);
break;
}
break;
}
return (len);
}
Ví dụ minh họa quá trình hoạt động trong khi thực thi trang web CGI:
Tập tin password_h.inc
<HTML>
<HEAD>
<TITLE>System Settings</TITLE>
</HEAD>
<BODY TEXT=#000000 BGCOLOR=#ccddff LINK=#0000FF VLINK=#0000FF
ALINK=#FF0000>
<H2 ALIGN=CENTER>System Settings</H2>
<FORM ACTION=index.htm METHOD=POST NAME=CGI>
73
<TABLE BORDER=0 WIDTH=99%>
<TR BGCOLOR=#aaccff>
<TH WIDTH=40%>Item</TH>
<TH WIDTH=60%>Setting</TH>
</TR>
Tập tin password_f.inc
<TR>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
</TR>
<TR>
<TD></TD>
<TD align="right">
<INPUT TYPE=SUBMIT NAME=set VALUE="Change" id="sbm">
<INPUT TYPE=RESET VALUE="Undo">
<INPUT TYPE=BUTTON VALUE="Home" OnClick="location='/index.htm'">
</TD>
</TR>
</FORM>
<p>
This page allows you to change the system <b>Password</b>, for the username
<b>admin</b>. Default <b>realm</b>, <b>user</b> and <b>password</b> can
be set in configuration file. This Form uses a <b>POST</b> method to send
data back to a Web server. You need to click on <b>Change</b> button to ctivate
the changes.
</p>
</BODY>
</HTML>
Tập tin system.cgi
i password_h.inc
c d 1 <TR><TD><IMG SRC=pabb.gif> Authentication</TD> <TD> <b>%s</b> </TD></TR>
74
t <TR><TD><IMG SRC=pabb.gif>Password for user 'admin'</TD>
c d 2 <TD><INPUT TYPE=TEXT NAME=pw SIZE=10 MAXLENGTH=10 VALUE="%s"></TD></TR>
t <TR><TD><IMG SRC=pabb.gif>Retype your password</TD>
c d 2 <TD><INPUT TYPE=TEXT NAME=pw2 SIZE=10 MAXLENGTH=10 VALUE="%s"></TD></TR>
i password_f.inc
.
Giải thích: Khi biên dịch, từ 3 file trên sẽ chỉ tạo ra một file duy nhất theo nguyên
tắc sau: lấy code của file password_h.inc, kế đến lấy code của file system.cgi, sau cùng là
code của file password_f.inc. Khi đó đoạn code tổng hợp có dạng.
CODE:
<HTML>
<HEAD>
<TITLE>System Settings</TITLE>
</HEAD>
<BODY TEXT=#000000 BGCOLOR=#ccddff LINK=#0000FF VLINK=#0000FF
ALINK=#FF0000>
<H2 ALIGN=CENTER>System Settings</H2>
<FORM ACTION=index.htm METHOD=POST NAME=CGI>
<TABLE BORDER=0 WIDTH=99%>
<TR BGCOLOR=#aaccff>
<TH WIDTH=40%>Item</TH>
<TH WIDTH=60%>Setting</TH>
</TR>
c d 1 <TR><TD><IMG SRC=pabb.gif>Authentication</TD><TD><b>%s</b></TD></TR>
t <TR><TD><IMG SRC=pabb.gif>Password for user 'admin'</TD>
c d 2 <TD><INPUT TYPE=TEXT NAME=pw SIZE=10 MAXLENGTH=10
VALUE="%s"></TD></TR>
t <TR><TD><IMG SRC=pabb.gif>Retype your password</TD>
c d 2 <TD><INPUT TYPE=TEXT NAME=pw2 SIZE=10 MAXLENGTH=10
VALUE="%s"></TD></TR>
<TR>
<TD>&nbsp;</TD>
75
<TD>&nbsp;</TD>
</TR>
<TR>
<TD></TD>
<TD align="right">
<INPUT TYPE=SUBMIT NAME=set VALUE="Change" id="sbm">
<INPUT TYPE=RESET VALUE="Undo">
<INPUT TYPE=BUTTON VALUE="Home" OnClick="location='/index.htm'">
</TD>
</TR>
</FORM>
<p>
This page allows you to change the system <b>Password</b>, for the username
<b>admin</b>. Default <b>realm</b>, <b>user</b> and <b>password</b> can
be set in configuration file. This Form uses a <b>POST</b> method to send
data back to a Web server. You need to click on <b>Change</b> button to activate
the changes.
</p>
</BODY>
</HTML>
Đoạn code này có dạng .CGI, do đó nó sẽ được thực thi động. Đối với các lệnh không
phải dạng c (có ký tự đứng đầu khác "c") thì chương trình giữ nguyên, đối với lệnh dạng
c thì chương trình này sẽ chuyển cho đoạn code sau thực thi.
Đoạn code xử lý các file .CGI có dạng như sau
CODE:
void cgi_process_data (U8 code, U8 *dat, U16 len) {
/* This function is called by HTTP server to process the returned Data */
/* for the CGI Form POST method. It is called on SUBMIT from the browser. */
if (len == 0) {
76
/* No data or all items (radio, checkbox) are off. */
return;
}
var = (U8 *)alloc_mem (50);
stpassw = 0;
str_copy ((U8*)m_pNetCfg->lng, (U8*)"0");
str_copy ((U8*)m_pNetCfg->lat, (U8*)"0");
do {
/* Parse all returned parameters. */
dat = http_get_var (dat, var, 40);
if (var[0] != 0) {
/* Parameter found, returned string is non 0-length. */
if (str_scomp (var, (unsigned char *)"pw=") == __TRUE) {
/* Change password. */
str_copy (passw, var+3);
stpassw |= 1;
}
else if (str_scomp (var, (unsigned char *)"pw2=") == __TRUE) {
/* Retyped password. */
str_copy (retyped, var+4);
stpassw |= 2;
}
else if (str_scomp (var, (unsigned char *)"LocalIp=") == __TRUE) {
p=var+8;
GanIP(m_pNetCfg->IP_Addr,(char*)p);
}
else if (str_scomp (var, (unsigned char *)"Port=") == __TRUE) {
p=var+5;
77
m_pNetCfg->port=atoi((char*)p);
}
else if (str_scomp (var, (unsigned char *)"ServerIp=") == __TRUE) {
p=var+9;
GanIP(m_pNetCfg->SERVERIP_Addr,(char*)p);
}
else if (str_scomp (var, (unsigned char *)"gateway=") == __TRUE) {
p=var+8;
GanIP(m_pNetCfg->IP_Gateway,(char*)p);
}
else if (str_scomp (var, (unsigned char *)"DNSServer=") ==
__TRUE) {
p=var+10;
GanIP(m_pNetCfg->IP_Dns1,(char*)p);
}
else if (str_scomp (var, (unsigned char *)"ID=") == __TRUE)
{
p=var+3;
m_pNetCfg->StationID=atoi((char*)p);
}
else if (str_scomp (var, (unsigned char *)"Lat=") ==
__TRUE) {
str_copy ((U8*)m_pNetCfg->lat, var+4);
}
else if (str_scomp (var, (unsigned char *)"Lng=") ==
__TRUE) {
str_copy ((U8*)m_pNetCfg->lng, var+4);
}
78
}
} while (dat);
if (stpassw == 0x03) {
len = strlen ((char*)passw);
if (mem_comp (passw, retyped, len) == __TRUE) {
/* OK, both entered passwords the same, change it. */
str_copy ((U8*)m_pNetCfg->Password, passw);
}
}
}
Giải thích: các dạng lệnh c thường có chuổi điều khiển %s, đây là chuổi dùng để
chèn các dữ liệu người dùng. Còn thông tin nhận được từ người dùng sẽ được chứa trong
con trỏ dat với chiều dài được lưu trong tham số len.
Tập tin system.cgi sau khi thông dịch
<HTML>
<HEAD>
<TITLE>System Settings</TITLE>
</HEAD>
<BODY TEXT=#000000 BGCOLOR=#ccddff LINK=#0000FF VLINK=#0000FF
ALINK=#FF0000>
<H2 ALIGN=CENTER>System Settings</H2>
<FORM ACTION=index.htm METHOD=POST NAME=CGI>
<TABLE BORDER=0 WIDTH=99%>
<TR BGCOLOR=#aaccff>
<TH WIDTH=40%>Item</TH>
<TH WIDTH=60%>Setting</TH>
</TR>
<TR><TD><IMG SRC=pabb.gif>Authentication</TD><TD><b>Enabled</b></TD></TR>
<TR><TD><IMG SRC=pabb.gif>Password for user 'admin'</TD>
<TD><INPUT TYPE=TEXT NAME=pw SIZE=10 MAXLENGTH=10
VALUE="test"></TD></TR>
79
<TR><TD><IMG SRC=pabb.gif>Retype your password</TD>
<TD><INPUT TYPE=TEXT NAME=pw2 SIZE=10 MAXLENGTH=10
VALUE="test"></TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
</TR>
<TR>
<TD></TD>
<TD align="right">
<INPUT TYPE=SUBMIT NAME=set VALUE="Change" id="sbm">
<INPUT TYPE=RESET VALUE="Undo">
<INPUT TYPE=BUTTON VALUE="Home" OnClick="location='/index.htm'">
</TD>
</TR>
</FORM>
<p>This page allows you to change the system <b>Password</b>, for the
username <b>admin</b>. Default <b>realm</b>, <b>user</b> and <b> password
</b> can be set in configuration file. This Form uses a <b>POST</b> method to
send data back to a Web server. You need to click on <b>Change</b> button to
activate the changes.
</p>
</BODY>
</HTML>
11. Code Server và Client (C#)
Server:
using System;
using System.Text;
using System.Net;
80
using System.Net.Sockets;
public class Y2Server {
private const int BUFFER_SIZE=1024;
private const int PORT_NUMBER=9999;
static ASCIIEncoding encoding=new ASCIIEncoding();
public static void Main() {
try {
IPAddress address = IPAddress.Parse("127.0.0.1");
TcpListener listener=new TcpListener(address,PORT_NUMBER);
// 1. listen
listener.Start();
Console.WriteLine("Server started on "+listener.LocalEndpoint);
Console.WriteLine("Waiting for a connection...");
Socket socket=listener.AcceptSocket();
Console.WriteLine("Connection received from " +
socket.RemoteEndPoint);
// 2. receive
byte[] data=new byte[BUFFER_SIZE];
81
socket.Receive(data);
string str=encoding.GetString(data);
// 3. send
socket.Send(encoding.GetBytes("Hello "+str));
// 4. close
socket.Close();
listener.Stop();
}
catch (Exception ex) {
Console.WriteLine("Error: " + ex);
}
Console.Read();
}
}
Client:
using System;
using System.IO;
82
using System.Net;
using System.Text;
using System.Net.Sockets;
public class Y2Client{
private const int BUFFER_SIZE=1024;
private const int PORT_NUMBER=9999;
static ASCIIEncoding encoding= new ASCIIEncoding();
public static void Main() {
try {
TcpClient client = new TcpClient();
// 1. connect
client.Connect("127.0.0.1",PORT_NUMBER);
Stream stream = client.GetStream();
Console.WriteLine("Connected to Y2Server.");
Console.Write("Enter your name: ");
string str = Console.ReadLine();
83
// 2. send
byte[] data=encoding.GetBytes(str);
stream.Write(data,0,data.Length);
// 3. receive
data =new byte[BUFFER_SIZE];
stream.Read(data,0,BUFFER_SIZE);
Console.WriteLine(encoding.GetString(data));
// 4. Close
stream.Close();
client.Close();
}
catch (Exception ex) {
Console.WriteLine("Error: " + ex);
}
Console.Read();
}
}

More Related Content

Similar to Đề tài: Chế tạo mạch giám sát gồm các tính năng cơ bản, HAY

Quy trinh lap dat bts
Quy trinh lap dat btsQuy trinh lap dat bts
Quy trinh lap dat bts
Dinh Dan
 
Đề tài: Ứng dụng Iot giám sát mức tiêu thụ điện – nước, HAY
Đề tài: Ứng dụng Iot giám sát mức tiêu thụ điện – nước, HAYĐề tài: Ứng dụng Iot giám sát mức tiêu thụ điện – nước, HAY
Đề tài: Ứng dụng Iot giám sát mức tiêu thụ điện – nước, HAY
Dịch vụ viết bài trọn gói ZALO 0917193864
 
Đề tài: Thiết kế và thi công khung ảnh điện tử, HAY, 9đ
Đề tài: Thiết kế và thi công khung ảnh điện tử, HAY, 9đĐề tài: Thiết kế và thi công khung ảnh điện tử, HAY, 9đ
Đề tài: Thiết kế và thi công khung ảnh điện tử, HAY, 9đ
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
542215777-Tham-Khảo-Đề-Tai-Điều-Khiển-Động-Cơ-Bằng-STM32F4.pdf
542215777-Tham-Khảo-Đề-Tai-Điều-Khiển-Động-Cơ-Bằng-STM32F4.pdf542215777-Tham-Khảo-Đề-Tai-Điều-Khiển-Động-Cơ-Bằng-STM32F4.pdf
542215777-Tham-Khảo-Đề-Tai-Điều-Khiển-Động-Cơ-Bằng-STM32F4.pdf
DngThnht8
 
Thuật toán PID - thích nghi dùng mạng nơ ron điều khiển hệ con lắc ngược đơn.pdf
Thuật toán PID - thích nghi dùng mạng nơ ron điều khiển hệ con lắc ngược đơn.pdfThuật toán PID - thích nghi dùng mạng nơ ron điều khiển hệ con lắc ngược đơn.pdf
Thuật toán PID - thích nghi dùng mạng nơ ron điều khiển hệ con lắc ngược đơn.pdf
Man_Ebook
 
Đề tài: Hệ thống điều khiển tín hiệu đèn giao thông qua xử lý ảnh
Đề tài: Hệ thống điều khiển tín hiệu đèn giao thông qua xử lý ảnhĐề tài: Hệ thống điều khiển tín hiệu đèn giao thông qua xử lý ảnh
Đề tài: Hệ thống điều khiển tín hiệu đèn giao thông qua xử lý ảnh
Dịch vụ viết bài trọn gói ZALO 0917193864
 
Thiết kế thi công hệ thống điều khiển tín hiệu đèn giao thông thông qua xử l...
 Thiết kế thi công hệ thống điều khiển tín hiệu đèn giao thông thông qua xử l... Thiết kế thi công hệ thống điều khiển tín hiệu đèn giao thông thông qua xử l...
Thiết kế thi công hệ thống điều khiển tín hiệu đèn giao thông thông qua xử l...
anh hieu
 
Đề tài: Hệ thống tính cước phí đường sắt metro sử dụng Rfid
Đề tài: Hệ thống tính cước phí đường sắt metro sử dụng RfidĐề tài: Hệ thống tính cước phí đường sắt metro sử dụng Rfid
Đề tài: Hệ thống tính cước phí đường sắt metro sử dụng Rfid
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Thiết kế và thi công thiết bị đo nhịp tim, nồng độ oxy trong máu và nhiệt độ.pdf
Thiết kế và thi công thiết bị đo nhịp tim, nồng độ oxy trong máu và nhiệt độ.pdfThiết kế và thi công thiết bị đo nhịp tim, nồng độ oxy trong máu và nhiệt độ.pdf
Thiết kế và thi công thiết bị đo nhịp tim, nồng độ oxy trong máu và nhiệt độ.pdf
Man_Ebook
 
Đề tài: Xây dựng hệ thống đếm đối tượng trong ảnh, HAY, 9đ
Đề tài: Xây dựng hệ thống đếm đối tượng trong ảnh, HAY, 9đĐề tài: Xây dựng hệ thống đếm đối tượng trong ảnh, HAY, 9đ
Đề tài: Xây dựng hệ thống đếm đối tượng trong ảnh, HAY, 9đ
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Xây dựng khung kiến trúc bảo đảm an toàn thông tin cho doanh nghiệp
Xây dựng khung kiến trúc bảo đảm an toàn thông tin cho doanh nghiệpXây dựng khung kiến trúc bảo đảm an toàn thông tin cho doanh nghiệp
Xây dựng khung kiến trúc bảo đảm an toàn thông tin cho doanh nghiệp
Dịch vụ viết bài trọn gói ZALO 0917193864
 
Nghiên cứu thiết kế hệ thống scada cho hệ thống cung cấp nước sạch tại xí ngh...
Nghiên cứu thiết kế hệ thống scada cho hệ thống cung cấp nước sạch tại xí ngh...Nghiên cứu thiết kế hệ thống scada cho hệ thống cung cấp nước sạch tại xí ngh...
Nghiên cứu thiết kế hệ thống scada cho hệ thống cung cấp nước sạch tại xí ngh...
Man_Ebook
 
Đề tài: Thiết kế bộ thí nghiệm vi xử lý giao tiếp Kit Intel Galileo
Đề tài: Thiết kế bộ thí nghiệm vi xử lý giao tiếp Kit Intel GalileoĐề tài: Thiết kế bộ thí nghiệm vi xử lý giao tiếp Kit Intel Galileo
Đề tài: Thiết kế bộ thí nghiệm vi xử lý giao tiếp Kit Intel Galileo
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Thiết kế chế tạo hệ thống MPS phục vụ giảng dạy
Thiết kế chế tạo hệ thống MPS phục vụ giảng dạyThiết kế chế tạo hệ thống MPS phục vụ giảng dạy
Thiết kế chế tạo hệ thống MPS phục vụ giảng dạy
Domenick Feest
 
Kỹ thuật mô hình hóa luồng tương tác IFML trong ứng dụng di động
Kỹ thuật mô hình hóa luồng tương tác IFML trong ứng dụng di độngKỹ thuật mô hình hóa luồng tương tác IFML trong ứng dụng di động
Kỹ thuật mô hình hóa luồng tương tác IFML trong ứng dụng di động
Dịch vụ viết bài trọn gói ZALO 0917193864
 
Đề tài: Xây dựng phần mềm diệt virus Ictuav, HAY
Đề tài: Xây dựng phần mềm diệt virus Ictuav, HAYĐề tài: Xây dựng phần mềm diệt virus Ictuav, HAY
Đề tài: Xây dựng phần mềm diệt virus Ictuav, HAY
Dịch vụ viết bài trọn gói ZALO: 0909232620
 
Hệ thống giám sát chỉ số môi trường và hiển thị thông tin trên Web
Hệ thống giám sát chỉ số môi trường và hiển thị thông tin trên WebHệ thống giám sát chỉ số môi trường và hiển thị thông tin trên Web
Hệ thống giám sát chỉ số môi trường và hiển thị thông tin trên Web
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Đề tài: Hệ thống điều khiển và giám sát thiết bị qua Webserver
Đề tài: Hệ thống điều khiển và giám sát thiết bị qua WebserverĐề tài: Hệ thống điều khiển và giám sát thiết bị qua Webserver
Đề tài: Hệ thống điều khiển và giám sát thiết bị qua Webserver
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Thiết kế và chế tạo mô hình phân loại sản phẩm sử dụng cánh tay robot.pdf
Thiết kế và chế tạo mô hình phân loại sản phẩm sử dụng cánh tay robot.pdfThiết kế và chế tạo mô hình phân loại sản phẩm sử dụng cánh tay robot.pdf
Thiết kế và chế tạo mô hình phân loại sản phẩm sử dụng cánh tay robot.pdf
Man_Ebook
 
Nghiên cứu phát triển cấu trúc EBG ứng dụng cho các hệ thống thông tin vô tuy...
Nghiên cứu phát triển cấu trúc EBG ứng dụng cho các hệ thống thông tin vô tuy...Nghiên cứu phát triển cấu trúc EBG ứng dụng cho các hệ thống thông tin vô tuy...
Nghiên cứu phát triển cấu trúc EBG ứng dụng cho các hệ thống thông tin vô tuy...
Man_Ebook
 

Similar to Đề tài: Chế tạo mạch giám sát gồm các tính năng cơ bản, HAY (20)

Quy trinh lap dat bts
Quy trinh lap dat btsQuy trinh lap dat bts
Quy trinh lap dat bts
 
Đề tài: Ứng dụng Iot giám sát mức tiêu thụ điện – nước, HAY
Đề tài: Ứng dụng Iot giám sát mức tiêu thụ điện – nước, HAYĐề tài: Ứng dụng Iot giám sát mức tiêu thụ điện – nước, HAY
Đề tài: Ứng dụng Iot giám sát mức tiêu thụ điện – nước, HAY
 
Đề tài: Thiết kế và thi công khung ảnh điện tử, HAY, 9đ
Đề tài: Thiết kế và thi công khung ảnh điện tử, HAY, 9đĐề tài: Thiết kế và thi công khung ảnh điện tử, HAY, 9đ
Đề tài: Thiết kế và thi công khung ảnh điện tử, HAY, 9đ
 
542215777-Tham-Khảo-Đề-Tai-Điều-Khiển-Động-Cơ-Bằng-STM32F4.pdf
542215777-Tham-Khảo-Đề-Tai-Điều-Khiển-Động-Cơ-Bằng-STM32F4.pdf542215777-Tham-Khảo-Đề-Tai-Điều-Khiển-Động-Cơ-Bằng-STM32F4.pdf
542215777-Tham-Khảo-Đề-Tai-Điều-Khiển-Động-Cơ-Bằng-STM32F4.pdf
 
Thuật toán PID - thích nghi dùng mạng nơ ron điều khiển hệ con lắc ngược đơn.pdf
Thuật toán PID - thích nghi dùng mạng nơ ron điều khiển hệ con lắc ngược đơn.pdfThuật toán PID - thích nghi dùng mạng nơ ron điều khiển hệ con lắc ngược đơn.pdf
Thuật toán PID - thích nghi dùng mạng nơ ron điều khiển hệ con lắc ngược đơn.pdf
 
Đề tài: Hệ thống điều khiển tín hiệu đèn giao thông qua xử lý ảnh
Đề tài: Hệ thống điều khiển tín hiệu đèn giao thông qua xử lý ảnhĐề tài: Hệ thống điều khiển tín hiệu đèn giao thông qua xử lý ảnh
Đề tài: Hệ thống điều khiển tín hiệu đèn giao thông qua xử lý ảnh
 
Thiết kế thi công hệ thống điều khiển tín hiệu đèn giao thông thông qua xử l...
 Thiết kế thi công hệ thống điều khiển tín hiệu đèn giao thông thông qua xử l... Thiết kế thi công hệ thống điều khiển tín hiệu đèn giao thông thông qua xử l...
Thiết kế thi công hệ thống điều khiển tín hiệu đèn giao thông thông qua xử l...
 
Đề tài: Hệ thống tính cước phí đường sắt metro sử dụng Rfid
Đề tài: Hệ thống tính cước phí đường sắt metro sử dụng RfidĐề tài: Hệ thống tính cước phí đường sắt metro sử dụng Rfid
Đề tài: Hệ thống tính cước phí đường sắt metro sử dụng Rfid
 
Thiết kế và thi công thiết bị đo nhịp tim, nồng độ oxy trong máu và nhiệt độ.pdf
Thiết kế và thi công thiết bị đo nhịp tim, nồng độ oxy trong máu và nhiệt độ.pdfThiết kế và thi công thiết bị đo nhịp tim, nồng độ oxy trong máu và nhiệt độ.pdf
Thiết kế và thi công thiết bị đo nhịp tim, nồng độ oxy trong máu và nhiệt độ.pdf
 
Đề tài: Xây dựng hệ thống đếm đối tượng trong ảnh, HAY, 9đ
Đề tài: Xây dựng hệ thống đếm đối tượng trong ảnh, HAY, 9đĐề tài: Xây dựng hệ thống đếm đối tượng trong ảnh, HAY, 9đ
Đề tài: Xây dựng hệ thống đếm đối tượng trong ảnh, HAY, 9đ
 
Xây dựng khung kiến trúc bảo đảm an toàn thông tin cho doanh nghiệp
Xây dựng khung kiến trúc bảo đảm an toàn thông tin cho doanh nghiệpXây dựng khung kiến trúc bảo đảm an toàn thông tin cho doanh nghiệp
Xây dựng khung kiến trúc bảo đảm an toàn thông tin cho doanh nghiệp
 
Nghiên cứu thiết kế hệ thống scada cho hệ thống cung cấp nước sạch tại xí ngh...
Nghiên cứu thiết kế hệ thống scada cho hệ thống cung cấp nước sạch tại xí ngh...Nghiên cứu thiết kế hệ thống scada cho hệ thống cung cấp nước sạch tại xí ngh...
Nghiên cứu thiết kế hệ thống scada cho hệ thống cung cấp nước sạch tại xí ngh...
 
Đề tài: Thiết kế bộ thí nghiệm vi xử lý giao tiếp Kit Intel Galileo
Đề tài: Thiết kế bộ thí nghiệm vi xử lý giao tiếp Kit Intel GalileoĐề tài: Thiết kế bộ thí nghiệm vi xử lý giao tiếp Kit Intel Galileo
Đề tài: Thiết kế bộ thí nghiệm vi xử lý giao tiếp Kit Intel Galileo
 
Thiết kế chế tạo hệ thống MPS phục vụ giảng dạy
Thiết kế chế tạo hệ thống MPS phục vụ giảng dạyThiết kế chế tạo hệ thống MPS phục vụ giảng dạy
Thiết kế chế tạo hệ thống MPS phục vụ giảng dạy
 
Kỹ thuật mô hình hóa luồng tương tác IFML trong ứng dụng di động
Kỹ thuật mô hình hóa luồng tương tác IFML trong ứng dụng di độngKỹ thuật mô hình hóa luồng tương tác IFML trong ứng dụng di động
Kỹ thuật mô hình hóa luồng tương tác IFML trong ứng dụng di động
 
Đề tài: Xây dựng phần mềm diệt virus Ictuav, HAY
Đề tài: Xây dựng phần mềm diệt virus Ictuav, HAYĐề tài: Xây dựng phần mềm diệt virus Ictuav, HAY
Đề tài: Xây dựng phần mềm diệt virus Ictuav, HAY
 
Hệ thống giám sát chỉ số môi trường và hiển thị thông tin trên Web
Hệ thống giám sát chỉ số môi trường và hiển thị thông tin trên WebHệ thống giám sát chỉ số môi trường và hiển thị thông tin trên Web
Hệ thống giám sát chỉ số môi trường và hiển thị thông tin trên Web
 
Đề tài: Hệ thống điều khiển và giám sát thiết bị qua Webserver
Đề tài: Hệ thống điều khiển và giám sát thiết bị qua WebserverĐề tài: Hệ thống điều khiển và giám sát thiết bị qua Webserver
Đề tài: Hệ thống điều khiển và giám sát thiết bị qua Webserver
 
Thiết kế và chế tạo mô hình phân loại sản phẩm sử dụng cánh tay robot.pdf
Thiết kế và chế tạo mô hình phân loại sản phẩm sử dụng cánh tay robot.pdfThiết kế và chế tạo mô hình phân loại sản phẩm sử dụng cánh tay robot.pdf
Thiết kế và chế tạo mô hình phân loại sản phẩm sử dụng cánh tay robot.pdf
 
Nghiên cứu phát triển cấu trúc EBG ứng dụng cho các hệ thống thông tin vô tuy...
Nghiên cứu phát triển cấu trúc EBG ứng dụng cho các hệ thống thông tin vô tuy...Nghiên cứu phát triển cấu trúc EBG ứng dụng cho các hệ thống thông tin vô tuy...
Nghiên cứu phát triển cấu trúc EBG ứng dụng cho các hệ thống thông tin vô tuy...
 

More from Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864

Yếu Tố Tự Truyện Trong Truyện Ngắn Thạch Lam Và Thanh Tịnh.doc
Yếu Tố Tự Truyện Trong Truyện Ngắn Thạch Lam Và Thanh Tịnh.docYếu Tố Tự Truyện Trong Truyện Ngắn Thạch Lam Và Thanh Tịnh.doc
Yếu Tố Tự Truyện Trong Truyện Ngắn Thạch Lam Và Thanh Tịnh.doc
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Từ Ngữ Biểu Thị Tâm Lí – Tình Cảm Trong Ca Dao Người Việt.doc
Từ Ngữ Biểu Thị Tâm Lí – Tình Cảm Trong Ca Dao Người Việt.docTừ Ngữ Biểu Thị Tâm Lí – Tình Cảm Trong Ca Dao Người Việt.doc
Từ Ngữ Biểu Thị Tâm Lí – Tình Cảm Trong Ca Dao Người Việt.doc
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Quản Lý Hoạt Động Dạy Học Các Môn Khoa Học Tự Nhiên Theo Chuẩn Kiến Thức Và K...
Quản Lý Hoạt Động Dạy Học Các Môn Khoa Học Tự Nhiên Theo Chuẩn Kiến Thức Và K...Quản Lý Hoạt Động Dạy Học Các Môn Khoa Học Tự Nhiên Theo Chuẩn Kiến Thức Và K...
Quản Lý Hoạt Động Dạy Học Các Môn Khoa Học Tự Nhiên Theo Chuẩn Kiến Thức Và K...
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Quản Lý Thu Thuế Giá Trị Gia Tăng Đối Với Doanh Nghiệp Ngoài Quốc Doanh Trên ...
Quản Lý Thu Thuế Giá Trị Gia Tăng Đối Với Doanh Nghiệp Ngoài Quốc Doanh Trên ...Quản Lý Thu Thuế Giá Trị Gia Tăng Đối Với Doanh Nghiệp Ngoài Quốc Doanh Trên ...
Quản Lý Thu Thuế Giá Trị Gia Tăng Đối Với Doanh Nghiệp Ngoài Quốc Doanh Trên ...
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Thu Hút Nguồn Nhân Lực Trình Độ Cao Vào Các Cơ Quan Hành Chính Nhà Nước Tỉnh ...
Thu Hút Nguồn Nhân Lực Trình Độ Cao Vào Các Cơ Quan Hành Chính Nhà Nước Tỉnh ...Thu Hút Nguồn Nhân Lực Trình Độ Cao Vào Các Cơ Quan Hành Chính Nhà Nước Tỉnh ...
Thu Hút Nguồn Nhân Lực Trình Độ Cao Vào Các Cơ Quan Hành Chính Nhà Nước Tỉnh ...
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thương Mại ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thương Mại ...Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thương Mại ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thương Mại ...
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Vaporisation Of Single And Binary Component Droplets In Heated Flowing Gas St...
Vaporisation Of Single And Binary Component Droplets In Heated Flowing Gas St...Vaporisation Of Single And Binary Component Droplets In Heated Flowing Gas St...
Vaporisation Of Single And Binary Component Droplets In Heated Flowing Gas St...
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Quản Lý Hoạt Động Dạy Học Các Trường Thpt Trên Địa Bàn Huyện Sơn Hà Tỉnh Quản...
Quản Lý Hoạt Động Dạy Học Các Trường Thpt Trên Địa Bàn Huyện Sơn Hà Tỉnh Quản...Quản Lý Hoạt Động Dạy Học Các Trường Thpt Trên Địa Bàn Huyện Sơn Hà Tỉnh Quản...
Quản Lý Hoạt Động Dạy Học Các Trường Thpt Trên Địa Bàn Huyện Sơn Hà Tỉnh Quản...
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Tác Giả Hàm Ẩn Trong Tiểu Thuyết Nguyễn Việt Hà.doc
Tác Giả Hàm Ẩn Trong Tiểu Thuyết Nguyễn Việt Hà.docTác Giả Hàm Ẩn Trong Tiểu Thuyết Nguyễn Việt Hà.doc
Tác Giả Hàm Ẩn Trong Tiểu Thuyết Nguyễn Việt Hà.doc
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Ngắn Hạn Tại Ngân Hàng Công Thƣơng Chi...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Ngắn Hạn Tại Ngân Hàng Công Thƣơng Chi...Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Ngắn Hạn Tại Ngân Hàng Công Thƣơng Chi...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Ngắn Hạn Tại Ngân Hàng Công Thƣơng Chi...
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Quản Lý Nhà Nước Về Nuôi Trồng Thủy Sản Nước Ngọt Trên Địa Bàn Thành Phố Hải ...
Quản Lý Nhà Nước Về Nuôi Trồng Thủy Sản Nước Ngọt Trên Địa Bàn Thành Phố Hải ...Quản Lý Nhà Nước Về Nuôi Trồng Thủy Sản Nước Ngọt Trên Địa Bàn Thành Phố Hải ...
Quản Lý Nhà Nước Về Nuôi Trồng Thủy Sản Nước Ngọt Trên Địa Bàn Thành Phố Hải ...
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Song Song Hóa Các Thuật Toán Trên Mạng Đồ Thị.doc
Song Song Hóa Các Thuật Toán Trên Mạng Đồ Thị.docSong Song Hóa Các Thuật Toán Trên Mạng Đồ Thị.doc
Song Song Hóa Các Thuật Toán Trên Mạng Đồ Thị.doc
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Ứng Dụng Số Phức Trong Các Bài Toán Sơ Cấp.doc
Ứng Dụng Số Phức Trong Các Bài Toán Sơ Cấp.docỨng Dụng Số Phức Trong Các Bài Toán Sơ Cấp.doc
Ứng Dụng Số Phức Trong Các Bài Toán Sơ Cấp.doc
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Vai Trò Của Cái Bi Trong Giáo Dục Thẩm Mỹ.doc
Vai Trò Của Cái Bi Trong Giáo Dục Thẩm Mỹ.docVai Trò Của Cái Bi Trong Giáo Dục Thẩm Mỹ.doc
Vai Trò Của Cái Bi Trong Giáo Dục Thẩm Mỹ.doc
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Quản Lý Hoạt Động Giáo Dục Ngoài Giờ Lên Lớp Ở Các Trường Thcs Huyện Chư Păh ...
Quản Lý Hoạt Động Giáo Dục Ngoài Giờ Lên Lớp Ở Các Trường Thcs Huyện Chư Păh ...Quản Lý Hoạt Động Giáo Dục Ngoài Giờ Lên Lớp Ở Các Trường Thcs Huyện Chư Păh ...
Quản Lý Hoạt Động Giáo Dục Ngoài Giờ Lên Lớp Ở Các Trường Thcs Huyện Chư Păh ...
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Thu Hút Vốn Đầu Tư Vào Lĩnh Vực Nông Nghiệp Trên Địa Bàn Tỉnh Gia Lai.doc
Thu Hút Vốn Đầu Tư Vào Lĩnh Vực Nông Nghiệp Trên Địa Bàn Tỉnh Gia Lai.docThu Hút Vốn Đầu Tư Vào Lĩnh Vực Nông Nghiệp Trên Địa Bàn Tỉnh Gia Lai.doc
Thu Hút Vốn Đầu Tư Vào Lĩnh Vực Nông Nghiệp Trên Địa Bàn Tỉnh Gia Lai.doc
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Quản Lý Hoạt Động Dạy Học Ngoại Ngữ Tại Các Trung Tâm Ngoại Ngữ - Tin Học Trê...
Quản Lý Hoạt Động Dạy Học Ngoại Ngữ Tại Các Trung Tâm Ngoại Ngữ - Tin Học Trê...Quản Lý Hoạt Động Dạy Học Ngoại Ngữ Tại Các Trung Tâm Ngoại Ngữ - Tin Học Trê...
Quản Lý Hoạt Động Dạy Học Ngoại Ngữ Tại Các Trung Tâm Ngoại Ngữ - Tin Học Trê...
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thƣơng Mại ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thƣơng Mại ...Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thƣơng Mại ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thƣơng Mại ...
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Tạo Việc Làm Cho Thanh Niên Trên Địa Bàn Quận Thanh Khê, Thành Phố Đà Nẵng.doc
Tạo Việc Làm Cho Thanh Niên Trên Địa Bàn Quận Thanh Khê, Thành Phố Đà Nẵng.docTạo Việc Làm Cho Thanh Niên Trên Địa Bàn Quận Thanh Khê, Thành Phố Đà Nẵng.doc
Tạo Việc Làm Cho Thanh Niên Trên Địa Bàn Quận Thanh Khê, Thành Phố Đà Nẵng.doc
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Trung Và Dài Hạn Tại Ngân Hàng Thương ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Trung Và Dài Hạn Tại Ngân Hàng Thương ...Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Trung Và Dài Hạn Tại Ngân Hàng Thương ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Trung Và Dài Hạn Tại Ngân Hàng Thương ...
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 

More from Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864 (20)

Yếu Tố Tự Truyện Trong Truyện Ngắn Thạch Lam Và Thanh Tịnh.doc
Yếu Tố Tự Truyện Trong Truyện Ngắn Thạch Lam Và Thanh Tịnh.docYếu Tố Tự Truyện Trong Truyện Ngắn Thạch Lam Và Thanh Tịnh.doc
Yếu Tố Tự Truyện Trong Truyện Ngắn Thạch Lam Và Thanh Tịnh.doc
 
Từ Ngữ Biểu Thị Tâm Lí – Tình Cảm Trong Ca Dao Người Việt.doc
Từ Ngữ Biểu Thị Tâm Lí – Tình Cảm Trong Ca Dao Người Việt.docTừ Ngữ Biểu Thị Tâm Lí – Tình Cảm Trong Ca Dao Người Việt.doc
Từ Ngữ Biểu Thị Tâm Lí – Tình Cảm Trong Ca Dao Người Việt.doc
 
Quản Lý Hoạt Động Dạy Học Các Môn Khoa Học Tự Nhiên Theo Chuẩn Kiến Thức Và K...
Quản Lý Hoạt Động Dạy Học Các Môn Khoa Học Tự Nhiên Theo Chuẩn Kiến Thức Và K...Quản Lý Hoạt Động Dạy Học Các Môn Khoa Học Tự Nhiên Theo Chuẩn Kiến Thức Và K...
Quản Lý Hoạt Động Dạy Học Các Môn Khoa Học Tự Nhiên Theo Chuẩn Kiến Thức Và K...
 
Quản Lý Thu Thuế Giá Trị Gia Tăng Đối Với Doanh Nghiệp Ngoài Quốc Doanh Trên ...
Quản Lý Thu Thuế Giá Trị Gia Tăng Đối Với Doanh Nghiệp Ngoài Quốc Doanh Trên ...Quản Lý Thu Thuế Giá Trị Gia Tăng Đối Với Doanh Nghiệp Ngoài Quốc Doanh Trên ...
Quản Lý Thu Thuế Giá Trị Gia Tăng Đối Với Doanh Nghiệp Ngoài Quốc Doanh Trên ...
 
Thu Hút Nguồn Nhân Lực Trình Độ Cao Vào Các Cơ Quan Hành Chính Nhà Nước Tỉnh ...
Thu Hút Nguồn Nhân Lực Trình Độ Cao Vào Các Cơ Quan Hành Chính Nhà Nước Tỉnh ...Thu Hút Nguồn Nhân Lực Trình Độ Cao Vào Các Cơ Quan Hành Chính Nhà Nước Tỉnh ...
Thu Hút Nguồn Nhân Lực Trình Độ Cao Vào Các Cơ Quan Hành Chính Nhà Nước Tỉnh ...
 
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thương Mại ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thương Mại ...Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thương Mại ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thương Mại ...
 
Vaporisation Of Single And Binary Component Droplets In Heated Flowing Gas St...
Vaporisation Of Single And Binary Component Droplets In Heated Flowing Gas St...Vaporisation Of Single And Binary Component Droplets In Heated Flowing Gas St...
Vaporisation Of Single And Binary Component Droplets In Heated Flowing Gas St...
 
Quản Lý Hoạt Động Dạy Học Các Trường Thpt Trên Địa Bàn Huyện Sơn Hà Tỉnh Quản...
Quản Lý Hoạt Động Dạy Học Các Trường Thpt Trên Địa Bàn Huyện Sơn Hà Tỉnh Quản...Quản Lý Hoạt Động Dạy Học Các Trường Thpt Trên Địa Bàn Huyện Sơn Hà Tỉnh Quản...
Quản Lý Hoạt Động Dạy Học Các Trường Thpt Trên Địa Bàn Huyện Sơn Hà Tỉnh Quản...
 
Tác Giả Hàm Ẩn Trong Tiểu Thuyết Nguyễn Việt Hà.doc
Tác Giả Hàm Ẩn Trong Tiểu Thuyết Nguyễn Việt Hà.docTác Giả Hàm Ẩn Trong Tiểu Thuyết Nguyễn Việt Hà.doc
Tác Giả Hàm Ẩn Trong Tiểu Thuyết Nguyễn Việt Hà.doc
 
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Ngắn Hạn Tại Ngân Hàng Công Thƣơng Chi...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Ngắn Hạn Tại Ngân Hàng Công Thƣơng Chi...Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Ngắn Hạn Tại Ngân Hàng Công Thƣơng Chi...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Ngắn Hạn Tại Ngân Hàng Công Thƣơng Chi...
 
Quản Lý Nhà Nước Về Nuôi Trồng Thủy Sản Nước Ngọt Trên Địa Bàn Thành Phố Hải ...
Quản Lý Nhà Nước Về Nuôi Trồng Thủy Sản Nước Ngọt Trên Địa Bàn Thành Phố Hải ...Quản Lý Nhà Nước Về Nuôi Trồng Thủy Sản Nước Ngọt Trên Địa Bàn Thành Phố Hải ...
Quản Lý Nhà Nước Về Nuôi Trồng Thủy Sản Nước Ngọt Trên Địa Bàn Thành Phố Hải ...
 
Song Song Hóa Các Thuật Toán Trên Mạng Đồ Thị.doc
Song Song Hóa Các Thuật Toán Trên Mạng Đồ Thị.docSong Song Hóa Các Thuật Toán Trên Mạng Đồ Thị.doc
Song Song Hóa Các Thuật Toán Trên Mạng Đồ Thị.doc
 
Ứng Dụng Số Phức Trong Các Bài Toán Sơ Cấp.doc
Ứng Dụng Số Phức Trong Các Bài Toán Sơ Cấp.docỨng Dụng Số Phức Trong Các Bài Toán Sơ Cấp.doc
Ứng Dụng Số Phức Trong Các Bài Toán Sơ Cấp.doc
 
Vai Trò Của Cái Bi Trong Giáo Dục Thẩm Mỹ.doc
Vai Trò Của Cái Bi Trong Giáo Dục Thẩm Mỹ.docVai Trò Của Cái Bi Trong Giáo Dục Thẩm Mỹ.doc
Vai Trò Của Cái Bi Trong Giáo Dục Thẩm Mỹ.doc
 
Quản Lý Hoạt Động Giáo Dục Ngoài Giờ Lên Lớp Ở Các Trường Thcs Huyện Chư Păh ...
Quản Lý Hoạt Động Giáo Dục Ngoài Giờ Lên Lớp Ở Các Trường Thcs Huyện Chư Păh ...Quản Lý Hoạt Động Giáo Dục Ngoài Giờ Lên Lớp Ở Các Trường Thcs Huyện Chư Păh ...
Quản Lý Hoạt Động Giáo Dục Ngoài Giờ Lên Lớp Ở Các Trường Thcs Huyện Chư Păh ...
 
Thu Hút Vốn Đầu Tư Vào Lĩnh Vực Nông Nghiệp Trên Địa Bàn Tỉnh Gia Lai.doc
Thu Hút Vốn Đầu Tư Vào Lĩnh Vực Nông Nghiệp Trên Địa Bàn Tỉnh Gia Lai.docThu Hút Vốn Đầu Tư Vào Lĩnh Vực Nông Nghiệp Trên Địa Bàn Tỉnh Gia Lai.doc
Thu Hút Vốn Đầu Tư Vào Lĩnh Vực Nông Nghiệp Trên Địa Bàn Tỉnh Gia Lai.doc
 
Quản Lý Hoạt Động Dạy Học Ngoại Ngữ Tại Các Trung Tâm Ngoại Ngữ - Tin Học Trê...
Quản Lý Hoạt Động Dạy Học Ngoại Ngữ Tại Các Trung Tâm Ngoại Ngữ - Tin Học Trê...Quản Lý Hoạt Động Dạy Học Ngoại Ngữ Tại Các Trung Tâm Ngoại Ngữ - Tin Học Trê...
Quản Lý Hoạt Động Dạy Học Ngoại Ngữ Tại Các Trung Tâm Ngoại Ngữ - Tin Học Trê...
 
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thƣơng Mại ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thƣơng Mại ...Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thƣơng Mại ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Doanh Nghiệp Tại Ngân Hàng Thƣơng Mại ...
 
Tạo Việc Làm Cho Thanh Niên Trên Địa Bàn Quận Thanh Khê, Thành Phố Đà Nẵng.doc
Tạo Việc Làm Cho Thanh Niên Trên Địa Bàn Quận Thanh Khê, Thành Phố Đà Nẵng.docTạo Việc Làm Cho Thanh Niên Trên Địa Bàn Quận Thanh Khê, Thành Phố Đà Nẵng.doc
Tạo Việc Làm Cho Thanh Niên Trên Địa Bàn Quận Thanh Khê, Thành Phố Đà Nẵng.doc
 
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Trung Và Dài Hạn Tại Ngân Hàng Thương ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Trung Và Dài Hạn Tại Ngân Hàng Thương ...Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Trung Và Dài Hạn Tại Ngân Hàng Thương ...
Quản Trị Rủi Ro Tín Dụng Trong Cho Vay Trung Và Dài Hạn Tại Ngân Hàng Thương ...
 

Recently uploaded

Giải phẫu tim sau đại học- LÊ QUANG TUYỀN
Giải phẫu tim sau đại học- LÊ QUANG TUYỀNGiải phẫu tim sau đại học- LÊ QUANG TUYỀN
Giải phẫu tim sau đại học- LÊ QUANG TUYỀN
linh miu
 
Quan Tri Doi Moi Sang Tao_ Innovation Management
Quan Tri Doi Moi Sang Tao_ Innovation ManagementQuan Tri Doi Moi Sang Tao_ Innovation Management
Quan Tri Doi Moi Sang Tao_ Innovation Management
ChuPhan32
 
Chương 3 Linh kien ban dan và KD dien tu - Copy.ppt
Chương 3 Linh kien ban dan và KD dien tu - Copy.pptChương 3 Linh kien ban dan và KD dien tu - Copy.ppt
Chương 3 Linh kien ban dan và KD dien tu - Copy.ppt
PhiTrnHngRui
 
FSSC 22000 version 6_Seminar_FINAL end.pptx
FSSC 22000 version 6_Seminar_FINAL end.pptxFSSC 22000 version 6_Seminar_FINAL end.pptx
FSSC 22000 version 6_Seminar_FINAL end.pptx
deviv80273
 
100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx
100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx
100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx
khanhthy3000
 
Biểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang Thiều
Biểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang ThiềuBiểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang Thiều
Biểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang Thiều
lamluanvan.net Viết thuê luận văn
 
PLĐC-chương 1 (1).ppt của trường ĐH Ngoại thương
PLĐC-chương 1 (1).ppt của trường  ĐH Ngoại thươngPLĐC-chương 1 (1).ppt của trường  ĐH Ngoại thương
PLĐC-chương 1 (1).ppt của trường ĐH Ngoại thương
hieutrinhvan27052005
 
insulin cho benh nhan nam vien co tang duong huyet
insulin cho benh nhan nam vien co tang duong huyetinsulin cho benh nhan nam vien co tang duong huyet
insulin cho benh nhan nam vien co tang duong huyet
lmhong80
 
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
Nguyen Thanh Tu Collection
 
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...
Nguyen Thanh Tu Collection
 
Halloween vocabulary for kids in primary school
Halloween vocabulary for kids in primary schoolHalloween vocabulary for kids in primary school
Halloween vocabulary for kids in primary school
AnhPhm265031
 
Smartbiz_He thong MES nganh may mac_2024june
Smartbiz_He thong MES nganh may mac_2024juneSmartbiz_He thong MES nganh may mac_2024june
Smartbiz_He thong MES nganh may mac_2024june
SmartBiz
 
THONG BAO nop ho so xet tuyen TS6 24-25.pdf
THONG BAO nop ho so xet tuyen TS6 24-25.pdfTHONG BAO nop ho so xet tuyen TS6 24-25.pdf
THONG BAO nop ho so xet tuyen TS6 24-25.pdf
QucHHunhnh
 
Sinh-12-Chuyên-2022-2023.dành cho ôn thi hsg
Sinh-12-Chuyên-2022-2023.dành cho ôn thi hsgSinh-12-Chuyên-2022-2023.dành cho ôn thi hsg
Sinh-12-Chuyên-2022-2023.dành cho ôn thi hsg
vivan030207
 
Ngân hàng điện tử số ptit - giảng viên cô Hà
Ngân hàng điện tử số ptit - giảng viên cô HàNgân hàng điện tử số ptit - giảng viên cô Hà
Ngân hàng điện tử số ptit - giảng viên cô Hà
onLongV
 
40 câu hỏi - đáp Bộ luật dân sự năm 2015 (1).doc
40 câu hỏi - đáp Bộ  luật dân sự năm  2015 (1).doc40 câu hỏi - đáp Bộ  luật dân sự năm  2015 (1).doc
40 câu hỏi - đáp Bộ luật dân sự năm 2015 (1).doc
NguynDimQunh33
 
Văn 7. Truyện ngụ ngôn Rùa và thỏ+ Viết PT nhân vật.docx
Văn 7. Truyện ngụ ngôn Rùa và thỏ+ Viết PT nhân vật.docxVăn 7. Truyện ngụ ngôn Rùa và thỏ+ Viết PT nhân vật.docx
Văn 7. Truyện ngụ ngôn Rùa và thỏ+ Viết PT nhân vật.docx
metamngoc123
 
LỊCH SỬ 12 - CHUYÊN ĐỀ 10 - TRẮC NGHIỆM.pptx
LỊCH SỬ 12 - CHUYÊN ĐỀ 10 - TRẮC NGHIỆM.pptxLỊCH SỬ 12 - CHUYÊN ĐỀ 10 - TRẮC NGHIỆM.pptx
LỊCH SỬ 12 - CHUYÊN ĐỀ 10 - TRẮC NGHIỆM.pptx
12D241NguynPhmMaiTra
 

Recently uploaded (18)

Giải phẫu tim sau đại học- LÊ QUANG TUYỀN
Giải phẫu tim sau đại học- LÊ QUANG TUYỀNGiải phẫu tim sau đại học- LÊ QUANG TUYỀN
Giải phẫu tim sau đại học- LÊ QUANG TUYỀN
 
Quan Tri Doi Moi Sang Tao_ Innovation Management
Quan Tri Doi Moi Sang Tao_ Innovation ManagementQuan Tri Doi Moi Sang Tao_ Innovation Management
Quan Tri Doi Moi Sang Tao_ Innovation Management
 
Chương 3 Linh kien ban dan và KD dien tu - Copy.ppt
Chương 3 Linh kien ban dan và KD dien tu - Copy.pptChương 3 Linh kien ban dan và KD dien tu - Copy.ppt
Chương 3 Linh kien ban dan và KD dien tu - Copy.ppt
 
FSSC 22000 version 6_Seminar_FINAL end.pptx
FSSC 22000 version 6_Seminar_FINAL end.pptxFSSC 22000 version 6_Seminar_FINAL end.pptx
FSSC 22000 version 6_Seminar_FINAL end.pptx
 
100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx
100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx
100 DẪN CHỨNG NGHỊ LUẬN XÃ HỘiI HAY.docx
 
Biểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang Thiều
Biểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang ThiềuBiểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang Thiều
Biểu tượng trăng và bầu trời trong tác phẩm của Nguyễn Quang Thiều
 
PLĐC-chương 1 (1).ppt của trường ĐH Ngoại thương
PLĐC-chương 1 (1).ppt của trường  ĐH Ngoại thươngPLĐC-chương 1 (1).ppt của trường  ĐH Ngoại thương
PLĐC-chương 1 (1).ppt của trường ĐH Ngoại thương
 
insulin cho benh nhan nam vien co tang duong huyet
insulin cho benh nhan nam vien co tang duong huyetinsulin cho benh nhan nam vien co tang duong huyet
insulin cho benh nhan nam vien co tang duong huyet
 
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
 
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD 9 CẢ NĂM CÓ TEST THEO UNIT NĂM H...
 
Halloween vocabulary for kids in primary school
Halloween vocabulary for kids in primary schoolHalloween vocabulary for kids in primary school
Halloween vocabulary for kids in primary school
 
Smartbiz_He thong MES nganh may mac_2024june
Smartbiz_He thong MES nganh may mac_2024juneSmartbiz_He thong MES nganh may mac_2024june
Smartbiz_He thong MES nganh may mac_2024june
 
THONG BAO nop ho so xet tuyen TS6 24-25.pdf
THONG BAO nop ho so xet tuyen TS6 24-25.pdfTHONG BAO nop ho so xet tuyen TS6 24-25.pdf
THONG BAO nop ho so xet tuyen TS6 24-25.pdf
 
Sinh-12-Chuyên-2022-2023.dành cho ôn thi hsg
Sinh-12-Chuyên-2022-2023.dành cho ôn thi hsgSinh-12-Chuyên-2022-2023.dành cho ôn thi hsg
Sinh-12-Chuyên-2022-2023.dành cho ôn thi hsg
 
Ngân hàng điện tử số ptit - giảng viên cô Hà
Ngân hàng điện tử số ptit - giảng viên cô HàNgân hàng điện tử số ptit - giảng viên cô Hà
Ngân hàng điện tử số ptit - giảng viên cô Hà
 
40 câu hỏi - đáp Bộ luật dân sự năm 2015 (1).doc
40 câu hỏi - đáp Bộ  luật dân sự năm  2015 (1).doc40 câu hỏi - đáp Bộ  luật dân sự năm  2015 (1).doc
40 câu hỏi - đáp Bộ luật dân sự năm 2015 (1).doc
 
Văn 7. Truyện ngụ ngôn Rùa và thỏ+ Viết PT nhân vật.docx
Văn 7. Truyện ngụ ngôn Rùa và thỏ+ Viết PT nhân vật.docxVăn 7. Truyện ngụ ngôn Rùa và thỏ+ Viết PT nhân vật.docx
Văn 7. Truyện ngụ ngôn Rùa và thỏ+ Viết PT nhân vật.docx
 
LỊCH SỬ 12 - CHUYÊN ĐỀ 10 - TRẮC NGHIỆM.pptx
LỊCH SỬ 12 - CHUYÊN ĐỀ 10 - TRẮC NGHIỆM.pptxLỊCH SỬ 12 - CHUYÊN ĐỀ 10 - TRẮC NGHIỆM.pptx
LỊCH SỬ 12 - CHUYÊN ĐỀ 10 - TRẮC NGHIỆM.pptx
 

Đề tài: Chế tạo mạch giám sát gồm các tính năng cơ bản, HAY

  • 1. I UỶ BAN NHÂN DÂN THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC SÀI GÒN BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC SINH VIÊN THIẾT KẾ VÀ CHẾ TẠO MẠCH GIÁM SÁT GỒM CÁC TÍNH NĂNG CƠ BẢN Mã số đề tài: SV2015 - 28 Thuộc nhóm ngành khoa học: Điện tử - Viễn thông Chủ nhiệm đề tài: Phạm Ngọc Nam Thành viên tham gia: 1. Phan Thị Ngọc Hà Giáo viên hướng dẫn: ThS. Trần Minh Nhật Tp. Hồ Chí Minh, tháng 4 năm 2016
  • 2. II UỶ BAN NHÂN DÂN THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC SÀI GÒN BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC SINH VIÊN THIẾT KẾ VÀ CHẾ TẠO MẠCH GIÁM SÁT GỒM CÁC TÍNH NĂNG CƠ BẢN Mã số đề tài: SV2015 - 28 Xác nhận của Khoa (ký, họ tên) Giáo viên hướng dẫn (ký, họ tên) Chủ nhiệm đề tài (ký, họ tên) Tp. Hồ Chí Minh, tháng 4 năm 2016
  • 3. III MỤC LỤC BẢN TÓM TẮT .............................................................................................................V DANH MỤC BẢNG BIỂU.........................................................................................VII DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT ................................................VIII THÔNG TIN KẾT QUẢ NGHIÊN CỨU.......................................................................9 MỞ ĐẦU .......................................................................................................................10 1. Lý do chọn đề tài .......................................................................................................10 2. Tính cấp thiết của đề tài.............................................................................................11 3. Mục tiêu đề tài ...........................................................................................................11 4. Mục đích và nhiệm vụ nghiên cứu ............................................................................11 5. Đối tượng và phạm vị nghiên cứu .............................................................................12 6. Phương pháp nghiên cứu...........................................................................................12 7. Nội dung và bố cục của đề tài ...................................................................................12 8. Kết luận......................................................................................................................12 CHƯƠNG 1: MÔ HÌNH HOẠT ĐỘNG CỦA HỆ THỐNG GIÁM SÁT ...................13 1.1. Mô hình tổng quát của hệ thống.............................................................................13 1.2. Khối nhà trạm .........................................................................................................14 1.3. Khối quản lý nhà trạm ............................................................................................15 1.4. Khối quản lý trung tâm...........................................................................................19 1.5. Mô hình hệ thống....................................................................................................20 1.6. Kết luận...................................................................................................................20 CHƯƠNG 2: CÁC THIẾT BỊ CẢM BIẾN VÀ SƠ ĐỒ MẠCH GIÁM SÁT .............21 2.1. Các thiết bị chính của mạch: ..................................................................................21 2.1.1. Mạch phát triển STM32F4-DISCOVERY ......................................................21 2.1.2. Cảm biến nhiệt DS18B20 ................................................................................25 2.1.3. Module cảm biến chuyển động........................................................................26 2.1.4. Thiết bị báo cháy và chip LM393....................................................................27 2.1.5. Module cảm biến khí gas:................................................................................30 2.1.6. Module ethernet DP83848...............................................................................31 2.2. Sơ đồ mạch giám sát và báo động ..........................................................................32
  • 4. IV 2.2.1. Sơ đồ mạch cảm biến nhiệt..............................................................................32 2.2.2. Sơ đồ module cảm biến chuyển động:.............................................................33 2.2.3. Sơ đồ mạch điều khiển camera ........................................................................34 2.2.4. Sơ đồ mạch điều khiển đèn..............................................................................35 2.2.5. Sơ đồ mạch cảm biến khói...............................................................................35 2.2.6. Sơ đồ module cảm biến khí gas:......................................................................37 2.2.7. Sơ đồ mạch báo động:......................................................................................37 2.3. Kết luận...................................................................................................................38 CHƯƠNG 3: HỆ THỐNG PHẦN MỀM QUẢN LÝ MẠCH GIÁM SÁT..................39 3.1. Bộ công cụ lập trình nhúng Keil C.........................................................................39 3.2. Công nghệ .NET.....................................................................................................42 3.2.1. Cấu trúc .NET FrameWork..............................................................................42 3.2.1.1. Common Language Runtime ....................................................................42 3.2.1.2. NET FRAMEWORK CLASS LIBRARY ...............................................45 3.2.1.3. Sơ lược về NAMESPACE ........................................................................45 3.2.2. Lập trình socket ...............................................................................................46 3.3. Kết luận...................................................................................................................48 CHƯƠNG 4: CÁC KẾT QUẢ NGHIÊN CỨU............................................................49 4.1. Khối nhà trạm .........................................................................................................49 4.2. Khối quản lý nhà trạm ............................................................................................50 4.3. Khối quản lý trung tâm...........................................................................................52 4.4. Kết luận...................................................................................................................54 CHƯƠNG 5: KẾT LUẬN VÀ KIẾN NGHỊ ................................................................55 5.1. Kết quả đạt được.....................................................................................................55 5.2. Kiến nghị ................................................................................................................56 5.2.1. Áp dụng thực tế................................................................................................56 5.2.2. Hướng phát triển ..............................................................................................56 TÀI LIỆU THAM KHẢO.............................................................................................57 PHỤ LỤC ......................................................................................................................58
  • 5. V BẢN TÓM TẮT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC SINH VIÊN THIẾT KẾ VÀ CHẾ TẠO MẠCH GIÁM SÁT GỒM CÁC TÍNH NĂNG CƠ BẢN Mã số: SV2015 – 28 1. Vấn đề nghiên cứu (vấn đề, tính cấp thiết) Điện tử - viễn thông là ngành kỹ thuật mũi nhọn, hiện đại, sử dụng những công nghệ tiên tiến để thiết kế, chế tạo nên các hệ thống, thiết bị được ứng dụng rộng rãi trong mọi lĩnh vực của sản xuất cũng như đời sống. Vì vậy việc áp dụng khoa học kỹ thuật để xây dựng một hệ thống giám sát sẽ góp phần nâng cao tính bảo vệ và an toàn cho cuộc sống con người. 2. Mục đích nghiên cứu/mục tiêu nghiên cứu Mục đích nghiên cứu: Đề tài đặt ra và giải quyết những vấn đề về giám sát để có thể áp dụng khoa học kỹ thuật vào việc nâng cao sự an toàn trong cuộc sống và làm việc của con người. Mục tiêu nghiên cứu: Làm ra được mạch giám sát cho phép giám sát nhiệt độ, chuyển động, khí gas, khói. Xây dựng một phần mềm đơn giản cho phép giám sát tập trung nhiều mạch giám sát cùng lúc. 3. Nhiệm vụ/nội dung nghiên cứu/câu hỏi nghiên cứu Tìm hiểu các sơ đồ, thiết bị thích hợp đồng thời phân tích, đánh giá: Các nguy cơ có thể xảy đến trong quá trình sinh sống và làm việc của con người? Những giải pháp cụ thể, khả thi áp dụng lên trên mạch giám sát? Các công cụ để xây dựng nên một hệ thống giám sát hoàn chỉnh, thiết thực? 4. Phương pháp nghiên cứu: Nghiên cứu các yêu cầu giám sát ngoài xã hội, nghiên cứu các cảm biến phục vụ cho yêu cầu giám sát, nghiên cứu các công cụ lập trình.
  • 6. VI 5. Kết quả nghiên cứu (ý nghĩa của các kết quả) và các sản phẩm (Bài báo khoa học, phần mềm máy tính, quy trình công nghệ, mẫu, sáng chế…)(nếu có) Góp vào danh mục tài liệu tham khảo phục vụ công tác nghiên cứu thực tiễn và giảng dạy, học tập ở các cơ sở đào tạo của địa phương. Hệ thống này có thể được áp dụng giám sát tại các hộ gia đình, xưởng sản xuất và các phòng học, phòng thí nghiệm tại trường Đại Học Sài Gòn.
  • 7. VII DANH MỤC BẢNG BIỂU Bảng 2.1 Các chân giao tiếp thiết bị của mạch STM32F4-DISCOVERY....................25 Bảng 2.2 Các tính năng của DP83848...........................................................................31 Bảng 3.1 Bảng ký tự đại diện của các lệnh trong các file script. ..................................41 Bảng 3.2 Các đối tượng dùng để lập trình socket trong C#. .........................................46
  • 8. VIII DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT Từ viết tắt Cụm từ đầy đủ API Application Programming Interface CLR Common Language Runtime FCL Framework Class Library HTML Hypertext Mark-up Language JIT Just-In-Time JVM Java Virtual Machine LAN Local Area Network MSIL Microsoft Intermediate Language TCP/IP Transmission Control Protocol / Internet Protocol
  • 9. 9 THÔNG TIN KẾT QUẢ NGHIÊN CỨU Chương 1: Cho chúng ta cái nhìn tổng quát về cơ chế hoạt động của hệ thống giám sát, hệ thống này gồm 3 khối chương trình chính, mỗi khối đảm nhiệm một số tính năng riêng, tuy nhiên chúng có liên lạc mật thiết với nhau trên nền tảng là giao thức TCP/IP để tạo nên một hệ thống giám sát thống nhất. Chương 2: Mạch giám sát là một là một hệ thống thống nhất gồm nhiều module, mỗi module giám sát một loại thiết bị riêng. Chương 2 mới chỉ giới thiệu về sơ đồ phần cứng của các module, để hoạt động mỗi module cần phải tích hợp chương trình tương ứng để điều khiển quá trình giám sát. Chương 3: Giới thiệu chi tiết về các công cụ lập trình được sử dụng để xây dựng nên hệ thống giám sát, các công cụ này bao gồm: cộng nghệ .NET(C#), Keil C. Mỗi công cụ được sử dụng cho từng mục đích cụ thể sau:  .Net(C#) được sử dụng để thiết kế chương trình cho server trung tâm nhằm quản lý các dữ liệu báo cáo từ các mạch giám sát.  Keil C dùng để viết các phần mềm nhúng cho các mạch giám sát. Chương 4: Các kết quả mà nhóm đạt được trong quá trình nghiên cứu bao gồm phần cứng mạch giám sát, trang web cài đặt các thông số của nhà trạm và chương trình giám sát mạch trên máy tính người dùng.
  • 10. 10 MỞ ĐẦU 1. Lý do chọn đề tài Điện tử - viễn thông là ngành kỹ thuật mũi nhọn, hiện đại, sử dụng những công nghệ tiên tiến để thiết kế, chế tạo nên các hệ thống, thiết bị được ứng dụng rộng rãi trong mọi lĩnh vực của sản xuất cũng như đời sống. Trong thời đại bùng nổ thông tin hiện nay, các thiết bị và hệ thống điện tử viễn thông là thành phần cơ bản của hệ thống cơ sở hạ tầng và hầu hết chúng ta ai cũng sử dụng thiết bị hoặc hệ thống do ngành điện tử - viễn thông cung cấp. Chúng ta thấy rằng một khi cơ sở hạ tầng này gặp sự cố thì nó sẽ ảnh hưởng tới cuộc sống của chúng ta như thế nào. Ví dụ như sự cố cáp quang trên biển bị đứt thì lập tức việc truy cập các trang Web có máy chủ ở nước ngoài sẽ bị chậm, ảnh hưởng đến nhiều ngành, nhiều lĩnh vực kể cả về kinh tế, kĩ thuật và an ninh quốc phòng. Đời sống công nghệ hiện đại của con người không thể nào thiếu các thiết bị điện tử. Các thiết bị này phổ biến ở khắp các hộ gia đình, trong các thiết bị giải trí, trong nhà máy sản xuất và có thể nói là tất cả mọi nơi có con nguời. Hãy thử nhìn vào các thiết bị trong gia đình của chính bản thân mình, các thiết bị hiện đại nhất của gia đình đều đều bị chi phối bởi kỹ thuật điện tử. Lấy một ví dụ đơn giản nhất, một chiếc quạt điện bình dân thì chúng ta không thể hẹn giờ và tắt mở từ xa nhưng nếu có sự tham gia của kỹ thuật điện tử thì việc điều khiển từ xa, hẹn giờ tắt mở sẽ thực hiện một cách dễ dàng. Có thể nói kỹ thuật điện tử đã nâng các thiết bị phục vụ cho đời sống của con người lên một tầm cao mới, hiện đại hơn và tinh vi hơn. Nhưng ở đất nước vẫn còn đang phát triển như chúng ta, người dân vẫn chưa được phục vụ, được bảo vệ đúng mức bởi các hệ thống thiết bị hiện đại ấy. Qua những tin tức gần đây chúng ta thấy rằng rất nhiều vụ đột nhập, cướp của xảy ra và khi mà cuộc sống ngày nay gas là nhiên liệu đốt không thể thiếu trong mỗi gia đình, các nguy cơ cháy nổ luôn luôn thường trực, mối đe dọa về một thảm họa nào đó có thể xảy đến
  • 11. 11 bất cứ lúc nào. Những thảm họa ấy nếu không được cảnh báo và phát hiện kịp thời thì sẽ nguy hiểm đến tài sản và đe dọa lớn đến tính mạng của con người. Chính vì những lý do trên đồng thời cũng muốn áp dụng kiến thức kiến thức chuyên ngành đã học vào thực tiễn. Do đó, nhóm chúng em chọn đề tài “Thiết kế và chế tạo mạch giám sát gồm các tính năng cơ bản” với mục đích chính là tăng cường việc kiểm soát an ninh, an toàn trong đời sống sinh hoạt và sản xuất của con người. 2. Tính cấp thiết của đề tài Nghiên cứu những vấn đề khoa học trong nội dung nghiên cứu, áp dụng các kiến thức đã học vào thực tiễn, giúp cũng cố kiến thức phục vụ cho quá trình phát triển đề tài tốt nghiệp sau này. 3. Mục tiêu đề tài Làm ra được mạch giám sát cho phép giám sát nhiệt độ, chuyển động, khí gas, khói. Xây dựng một phần mềm đơn giản cho phép giám sát tập trung nhiều mạch giám sát cùng lúc. 4. Mục đích và nhiệm vụ nghiên cứu Mục đích: Đề tài đặt ra và giải quyết những vấn đề về giám sát để có thể áp dụng khoa học kỹ thuật vào việc nâng cao sự an toàn trong cuộc sống và làm việc của con người. Nhiệm vụ: Thứ nhất, tìm hiểu, đánh giá những nguy cơ mà con người có thể gặp phải trong môi trường sống và làm việc để đưa ra các thành phần cần thiết trong mạch giám sát mà nhóm sẽ thi công. Thứ hai, tìm hiểu các linh kiện, phần mềm, cách thức để xây dựng bản thiết kế phù hợp với kinh phí và tiêu chí đã được đặt ra ban đầu. Thứ ba, tiến hành thi công và thử nghiệm hệ thống giám sát để đảm bảo hệ thống hoạt động an toàn, hiệu quả khi đưa vào sử dụng.
  • 12. 12 5. Đối tượng và phạm vị nghiên cứu Đối tượng nghiên cứu: Những thành phần cần phải có trong hệ thống của mạch giám sát cơ bản phù hợp với thực tế. Phạm vi nghiên cứu: Những linh kiện làm mạch giám sát và phần mềm cho phép giám sát tập trung nhiều mạch giám sát cùng lúc. 6. Phương pháp nghiên cứu 5.1. Nghiên cứu các yêu cầu giám sát ngoài xã hội. 5.2. Nghiên cứu các cảm biến phục vụ cho yêu cầu giám sát. 5.3. Nghiên cứu các công cụ lập trình. 7. Nội dung và bố cục của đề tài Nội dung đề tài được tổ chức thành các phần chính như sau: - Phần mở đầu: Trình bày lý do và mục tiêu nghiên cứu xây dựng hệ thống giám sát. - Chương 1: Mô hình hoạt động của hệ thống giám sát. - Chương 2: Các thiết bị cảm biến và sơ đồ mạch giám sát. - Chương 3: Hệ thống phần mềm quản lý mạch giám sát. - Chương 4: Các kết quả nghiên cứu. - Chương 5: Kết luận và kiến nghị. 8. Kết luận Nghiên cứu xây dựng hệ thống giám sát có ý nghĩa rất quan trọng trong việc ứng dụng khoa học kỹ thuật để tự động hóa quá trình giám sát, giúp nâng cao sự an toàn trong đời sống sinh hoạt và làm việc của con người. Có cơ hội áp dụng kiến thức đã học vào thực tiễn và chuẩn bị kinh nghiệm cho những đề tài sau này. Hơn nữa hoàn toàn có thể ứng dụng hệ thống giám sát cho các phòng thực hành, phòng học cũng như các phòng thí nghiệm của trường Đại học Sài Gòn.
  • 13. 13 CHƯƠNG 1: MÔ HÌNH HOẠT ĐỘNG CỦA HỆ THỐNG GIÁM SÁT Chương này sẽ mô tả cụ thể các tính năng của các khối trong hệ thống và mối liện hệ giữa các khối này để hình thành nên một hệ thống giám sát hoàn chỉnh. 1.1. Mô hình tổng quát của hệ thống Hình 1.1 Mô hình tổng quát của hệ thống. Hệ thống được thiết kế theo 3 khối chúc năng cơ bản:  Khối nhà trạm.  Khối quản lý nhà trạm.  Khối quản lý trung tâm. Nguyên lý hoạt động  Khối nhà trạm liên tục cung cấp thông tin về hoạt động của mạch cho người dùng quan sát và có thể tự hoạt động theo chương trình đã được lập ra từ trước.
  • 14. 14  Theo định kỳ khối quản lý nhà trạm gởi các thông tin của nhà trạm về cho khối trung tâm.  Khối quản lý trung tâm sẽ tập hợp tất cả các thông tin của các nhà trạm để xử lý và gởi thông tin về cho chương trình giám sát trên máy tính của người dùng. 1.2. Khối nhà trạm Đây là mạch giám sát được thiết kế có nhiệm vụ tự thực hiện các chức năng đã được định ra từ trước và cung cấp thông tin hoạt động của mạch cho người dùng quan sát. Chức năng tự động điều khiển camera, đèn, báo động Hình 1.2 Sơ đồ xử lý việc điều khiển thiết bị. CODE: tham khảo tại phụ lục 1 (trang 58) Bắt đầu Lấy thông tin từ các cảm biến chuyển động, khí gas, khói Nếu có chuyển động Bật đèn và camera Sai Đúng g Nếu có khí gas hoặc khói Bật báo động Đúng g Sai Kết thúc
  • 15. 15 1.3. Khối quản lý nhà trạm Thiết kế theo cấu trúc độc lập có thể tự chạy cục bộ khi mất kết nối với trung tâm, khối này bao gồm chức năng cài đặt thông số, chức năng lấy thông tin trạng thái của các trạm giám sát, chức năng điều khiển các thiết bị camera, đèn, báo động… 1. Chức năng cho phép cài đặt các thông số của trạm như:  ID của trạm: là mã thiết bị giám sát dùng để phân biệt với các thiết bị giám sát khác.  Địa chỉ IP của máy tính trung tâm: là địa chỉ mạng của máy tính trung tâm dùng để giám sát các trạm, trạm khi khởi động sẽ sử dụng địa chỉ này để kết nối vào trung tâm và định kỳ gởi các thông số trạng thái của trạm về trung tâm.  Subnet mask: dùng để phân chia về mặc logic địa chỉ IP.  Cổng truy cập của server trung tâm: là cổng kết nối của máy tính trung tâm.  Địa chỉ máy trạm: là địa chỉ IP của máy trạm.  Địa chỉ gateway: là địa chỉ máy tính để giao tiếp với mạng bên ngoài.  Địa chỉ DNS server: là địa chỉ máy tính để phân giải tên miền.  Password: mật khẩu để truy xuất vào các trang web hệ thống của mạch giám sát.  Retyped: mật khẩu nhập lại để đối sánh với mật khẩu khi thực hiện việc thay đổi mật khẩu. Đây là tính năng dạng trang web được nhúng trong bộ xử lý ARM.
  • 16. 16 Bắt đầu Para= lấy thông số từ trang web Nếu para là LocalIP Đúng Ghi vào hệ thống Sai Nếu para là Port Ghi vào hệ thốngĐúng Sai Nếu para là ServerIP Ghi vào hệ thốngĐúng Sai Nếu para là Subnet Mask Ghi vào hệ thốngĐúng Nếu para là pass Lưu vào biến pass1Đúng Sai Nếu para là retyped Đúng So sánh với pass1 Đúng Ghi vào hệ thống Sai Nếu para là Gateway Ghi vào hệ thốngĐúng Sai Nếu para là DNSServer Ghi vào hệ thốngĐúng Sai Nếu para là ID Ghi vào hệ thốngĐúng Kết thúc Sai Sai Lưu thông tin lỗi vào file log Hình 1.3 Sơ đồ xử lý việc cài đặt các thông số của trạm. CODE: tham khảo tại phụ lục 2 (trang 58)
  • 17. 17 2. Chức năng lấy thông tin: cho phép lấy thông tin về nhiệt độ, báo khói, chuyển động, khí gas,... Đây là chức năng được thực hiện định kỳ sau mỗi 5 giây. Bắt đầu Nhiệt= lấy thông tin nhiệt độ từ cảm biến nhiệt Chuyển đổi thông tin sang dạng mảng Gán mã số tương ứng cho thiết bị Đưa thông tin này vào mảng chung Khói= lấy thông tin khói từ cảm biến khói Chuyển đổi thông tin sang dạng mảng Gán mã số tương ứng cho thiết bị Đưa thông tin này vào mảng chung
  • 18. 18 Hình 1.4 Sơ đồ xử lý việc lấy thông tin trạng thái của các cảm biến. CODE: tham khảo tại phụ lục 3 (trang 60) Chuyển động= lấy thông tin từ cảm biến chuyển động Chuyển đổi thông tin sang dạng mảng Gán mã số tương ứng cho thiết bị Đưa thông tin này vào mảng chung Khí gas= lấy thông tin từ cảm biến khí gas Chuyển đổi thông tin sang dạng mảng Gán mã số tương ứng cho thiết bị Đưa thông tin này vào mảng chung Tạo gói tin với phần data là mảng chung và gởi tới máy tính trung tâm Kết thúc
  • 19. 19 1.4. Khối quản lý trung tâm Khối này quản lý tất cả các đối tượng cần giám sát trên máy tính với giao diện thân thiện, dễ sử dụng, khối này gồm các chức năng sau: Chức năng nhận trạng thái từ máy trạm và gởi thông tin về trang web người dùng. Bắt đầu Nếu giờ tronggói tin trùng khớp với giờ của hệthống Sai Lưu thôngtin lỗi vào file log Đúng Kết thúc Ghi thôngtin vào CSDL Gởi gói tin cập nhật trạngthái cho những nút trạngthái trên giao diện web Chuyển chuổi dữliệu sangdạngbiến cố Nhận chuỗi dữ liệu từtrạm Phát sinh biến cố ControlStateEvent Message=lấy gói tin từbiến cố ControlStateEvent Hình 1.5 Sơ đồ xử lý gói tin thông báo trạng thái thiết bị. CODE: tham khảo tại phụ lục 4 (trang 62)
  • 20. 20 1.5. Mô hình hệ thống Mô hình kết nối của hệ thống trên nền tảng TCP/IP: Hình 1.6 Hệ thống có sử dụng camera giám sát. 1.6. Kết luận Chương 1 cho chúng ta cái nhìn tổng quát về cơ chế hoạt động của hệ thống giám sát, hệ thống này gồm 3 khối chương trình chính, mỗi khối đảm nhiệm một số tính năng riêng, tuy nhiên chúng có liên lạc mật thiết với nhau trên nền tảng là giao thức TCP/IP để tạo nên một hệ thống giám sát thống nhất.
  • 21. 21 CHƯƠNG 2: CÁC THIẾT BỊ CẢM BIẾN VÀ SƠ ĐỒ MẠCH GIÁM SÁT Chương 2 sẽ mô tả các linh kiện của mạch phát triển chính cũng như chức năng và thông số các cảm biến, từ đó thiết kế sơ đồ cho mạch giám sát. 2.1. Các thiết bị chính của mạch: Các thiết bị được sử dụng để thiết lập mạch giám sát bao gồm: mạch phát triển stm32f4-Discovery, cảm biến nhiệt DS18B20, module cảm biến chuyển động, thiết bị báo khói HORING AH-0311-4 và chip LM393, module cảm biến khí ga MQ2, module ethernet DP83848. 2.1.1. Mạch phát triển STM32F4-DISCOVERY STM32F4 DISCOVERY được trang bị chip 32-bit ARM Cortex, đây là một bộ xử lý thế hệ mới đưa ra một kiến trúc chuẩn cho nhu cầu đa dạng về công nghệ, kit giúp khám phá các tính năng của chip ARM nhằm phát triển các ứng dụng một cách dễ dàng. Nó bao gồm tất cả tính năng cần thiết cho người mới bắt đầu cũng như người dùng có kinh nghiệm để có thể tiếp cận chip ARM một cách nhanh chóng. Hình 2.1 Board mạch stm32F4-DISCOVERY.
  • 22. 22 STM32F4-DISCOVERY gồm các tính năng sau:  Vi điều khiển STM32F407VGT6 với 1 MB bộ nhớ Flash, 192 KB bộ nhớ. ST-LINK / V2 được sử dụng cho việc nạp và debug.  Nguồn: được cung cấp thông qua cổng USB hoặc từ một nguồn cung cấp điện áp 5V bên ngoài.  Nguồn cung cấp ra bên ngoài: 3V và 5V.  CS43L22, DAC âm thanh với lớp tích hợp trình điều khiển loa D.  LD1 (màu đỏ / màu xanh lá cây) để giao tiếp USB.  LD2 (màu đỏ) cho điện 3.3V.  Bốn đèn LED dành cho người dùng sử dụng, LD3 (màu cam), LD4 (màu xanh), LD5 (màu đỏ) và LD6 (màu xanh).  2 USB OTG LED LD7 (màu xanh) và VBus LD8 (màu đỏ) quá dòng.  Hai nút bấm (USER và RESET).  USB OTG với kết nối micro-AB. Các chân của mạch giao tiếp được sử dụng trong đề tài MCU pin Board function STT Main function Alternate functions USB LIS302DL LIS3DSH CN5 CN2 Free I/O OSC SWD P1 P2 1 PA1 USART2_RTS/ USART4_RX/ ETH_RMII_REF_CLK/ ETH_MII_RX_CLK/ TIM5_CH2/ TIMM2_CH2/ ADC123_IN1 x 11 2 PA2 USART2_TX/ TIM5_CH3/ TIM9_CH1/ TIM2_CH3/ ETH_MDIO/ ADC123_IN2 x 14
  • 23. 23 3 PA3 USART2_RX/ TIM5_CH4/ TIM9_CH2/ TIM2_CH4/ OTG_HS_ULPI_D0/ ETH_MII_COL/ ADC123_IN3 x 13 4 PA7 SPI1_MOSI/ TIM8_CH1N/ ETH_MII_RX_DV/ TIM1_CH1N/ RMII_CRS_DV/ ADC12_IN7 SDA /SDI /SDO 17 5 PA8 MCO1/ USART1_CK/ TIM1_CH1/ I2C3_SCL/ OTG_FS_SOF x 43 6 PB7 I2C1_SDA/ FSMC_NL/ DCMI_VSYNC/ USART1_RX/ TIM4_CH2 x 24 7 PB8 TIM4_CH3/ SDIO_D4/ TIM10_CH1/ OTG_FS_SCL/ I2C1_SCL/ CAN1_RX x 19 8 PB11 I2C2_SDA/ USART3_RX/ OTG_HS_ULPI_D4/ ETH_RMII_TX_EN/ ETH_MII_TX_EN/ OTG_HS_SDA/ TIM2_CH4 x 35
  • 24. 24 9 PB12 SPI2_NSS/ I2C2_SMBA/ USART3_CK/ TIM1_BKIN/ CAN2_RX/ ETH_RMII_TXD0/ ETH_MII_TXD0/ OTG_HS_ID x 36 10 PB13 SPI2_SCK/ I2S2_CK/ USART3_CTS/ TIM1_CH1N/ CAN2_TX/ ETH_RMII_TXD1/ ETH_MII_TXD1/ OTG_HS_VBUS x 37 11 PC1 ETH_MDC/ ADC123_IN11 x 7 12 PC4 ETH_RMII_RX_D0/ ETH_MII_RX_D0/ ADC12_IN14 x 10 13 PC5 ETH_RMII_RX_D1/ ETH_MII_RX_D1/ ADC12_IN15 x 19 14 PB1 TIM3_CH4/ TIM8_CH3N/ OTG_HS_ULPI_D2/ OTG_HS_INTN/ TIM1_CH3N/ ADC12_IN9 x 21 15 PB4 NJTRST/ SPI3_MISO/ TIM3_CH1/ SPI1_MISO/ I2S3ext_SD x 25
  • 25. 25 16 PB5 I2C1_SMBA/ CAN2_RX/ OTG_HS_ULPI_D7/ ETH_PPS_OUT/ TIM3_CH2/ SPI1_MOSI/ SPI3_MOSI/ DCMI_D10/ I2S3_SD x 26 Bảng 2.1 Các chân giao tiếp thiết bị của mạch STM32F4-DISCOVERY. Các chân trên được chia ra sử dụng như sau:  Sử dụng cho thu thập thông tin loại Input nhiệt độ, khói, khí gas, chuyển động lần lượt là các chân PA8, PA3, PB4, PB5.  Sử dụng cho xuất tín hiệu loại Output camera, đèn, báo động lần lượt là các chân PB8, PB7, PB1.  Còn lại là các chân sử dụng giao tiếp với module Ethernet DP83848 ở hình 2.8. 2.1.2. Cảm biến nhiệt DS18B20 DS18B20 là IC cảm biến nhiệt độ, chỉ bao gồm 3 chân, nó được coi là một nhiệt kế với giá trị được chứa trong vùng nhớ 12-bit. Các DS18B20 giao tiếp với mạch thông qua giao thức 1-Wire nghĩa là chỉ cần dùng một đường truyền duy nhất để giao tiếp với bộ vi xử lý trung tâm. Nhiệt độ hoạt động cho phép của nó trong phạm vi -55°C đến + 125°C và có sai số là ± 0,5°C trong khoảng từ -10°C đến + 85°C. Mỗi DS18B20 được nhận dạng qua một mã ID có độ dài 64 bit, cho phép nhiều DS18B20 có thể hoạt động trên cùng 1-Wire bus. Vì vậy, một bộ vi xử lý có thể kiểm soát nhiều DS18B20 phân bố trên một khu vực rộng lớn. Các ứng dụng có thể sử dụng tính năng này bao gồm kiểm soát môi trường, giám sát nhiệt độ các hệ thống bên trong các tòa nhà, giám sát, điều khiển trạng thái các thiết bị và máy móc.
  • 26. 26 Hình 2.2 Mô hình các chân của DS18B20. Tóm tắt các tính năng của DS18B20  Giao tiếp 1-Wire yêu cầu chỉ một chân (Pin) cho truyền thông.  Mỗi thiết bị có một mã 64-Bit duy nhất được lưu trữ trong ROM.  Nguồn cung cấp từ 3.0V đến 5.5V.  Khoảng nhiệt độ đo được giao động từ -55 ° C đến + 125 ° C.  Sai số là ± 0.5 ° C nếu nhiệt độ trong khoảng -10 ° C đến + 85 ° C. 2.1.3. Module cảm biến chuyển động Module cảm biến chuyển động PIR HC- SR501 phát hiện và báo có sự xuất hiện của vật thể trong khu vực, phạm vi nhất định.
  • 27. 27 Hình 2.3 Module cảm biến chuyển động PIR. Điều làm cho PIR HC-SR501 trở nên đặc biệt đó là khả năng điều chỉnh được độ nhạy. Khả năng này rất có ý nghĩa khi trong nhà có con vật (chó, mèo...). Với cảm biến PIR không có biến trở điều chỉnh độ nhạy, khi con vật đi ngang qua sẽ vẫn có tác dụng với cảm biến và làm cảm biến đóng. Điều này thật sự không tốt. Hoặc khi dùng cảm biến làm mạch báo trộm có thể gây ra báo động giả!  Thông số kỹ thuật:  Sử dụng điện áp: 4.5-20V  Đầu ra: 0-3.3V  Thứ tự chân: VCC OUT GND  Chân ra OUT không bị kích hoạt ở mức 0V (LOW), khi kích hoạt ở mức 3.3V (HIGH)  Thời gian trễ : Điều chỉnh trong khoảng 0.5-200s.  Kích thước PCB: 32mm x 24mm.  Góc quét <100 độ.  Sử dụng cảm biến: 500BP  Khoảng cách phát hiện: 2- 4.5m. 2.1.4. Thiết bị báo cháy và chip LM393 2.1.4.1. Thiết bị báo cháy Thiết bị dùng để phát hiện có khói hoặc các dấu hiệu co cháy xảy ra để phòng chữa cháy kịp thời. Khi có dấu hiệu cháy thiết bị sẽ làm mạch báo động tại chỗ và truyền tín hiệu về trung tâm.
  • 28. 28 Hình 2.4 Đầu dò khói HORING AH-0311-4. Các tham số của HORING AH-0311-4  Điện áp : 12- 30V DC.  Cường độ dòng hiện thời: 35 µA.  Cường độ dòng nhận được: 120mA.  Cường độ báo động: 40mA.  Nhiệt độ hoạt động: -10°C đến +55°C. Nguyên lý hoạt động của HORING AH-0311-4 HORING AH-0311-4 có 8 chân, trong đó ta chỉ cần sử dụng 5 chân(2,4,5,6,7), các chân này hoạt động như sau:  Chân 2 nối nguồn.  Chân 4 nối đất.  Bình thường chân 7 nối với chân 5, nhưng khi có khói chân 7 hở với chân 5 nhưng nối với chân 6. 2.1.4.2. Chip LM393 Chip LM393 là bộ vi mạch gồm 2 bộ so sánh độc lập với điện áp bù nhỏ cỡ 2.0mV, hoạt động với cả nguồn cấp đơn hoặc 2 nguồn cấp đối xứng. Đặc điểm LM393  Dãi nguồn nuôi rộng từ 2V đến 36V.  Dãi nguồn nuôi kép từ +/-1V đến +/-18V.  Dòng cực máng rất thấp độc lập với điện áp nguồn nuôi 0.4mA.
  • 29. 29  Dòng lối vào thấp 25mA.  Dòng offset lối vào thấp +/-5mA và điện áp offset cực đại là +/-3mA.  Dãi điện áp lối vào chung thấp.  Điện áp lối ra tương thích với các mức logic DTL, ECL, TTL, MOS, CMOS.  Điện áp bão hòa lối ra thấp 250mV, 4mA. Sơ đồ chân của LM393 Hình 2.5 Sơ đồ các chân của chip LM393. Nguyên lý hoạt động của LM393 - Chân 4 nối đất. - Chân 8 nối nguồn. - So sánh điện áp chân 5(V5) và điện áp chân 6(V6).  Nếu V5>V6 thì điện áp V7 khác 0.  Ngược lại V7 bằng 0. - So sánh điện áp chân 2(V2),điện áp chân 3(V3).  Nếu V3>V2 thì điện áp V1 khác 0.  Ngược lại V1 bằng 0.
  • 30. 30 Dùng phép AND nối 2 chân 1 và 7, nếu cả 2 có điện áp đều khác 0 thì điểm nối 2 chân có điện áp khác 0, ngược lại điện áp sẽ bằng 0. 2.1.5. Module cảm biến khí gas: MQ2 là cảm biến khí, dùng để phát hiện các khí có thể gây cháy. Nó được cấu tạo từ chất bán dẫn SnO2. Chất này có độ nhạy cảm thấp với không khí sạch. Nhưng khi trong môi trường có chất gây cháy, độ dẫn của nó thay đổi ngay. Chính nhờ đặc điểm này người ta thêm vào mạch đơn gian để biến đổi từ độ nhạy này sang điện áp. Khi môi trường sạch điện áp đầu ra của cảm biến thấp, giá trị điện áp đầu ra càng tăng khi nồng độ khí gây cháy xung quanh MQ2 càng cao. Nó được sử dụng rộng rãi trong công nghiệp và dân dụng do mạch đơn giản và chi phí thấp. Hình 2.6 Module cảm biến khí gas. Trong mạch có hai chân đầu ra là Aout và Dout. Trong đó:  Aout: Điện áp ra tương tự, nó chạy từ 0.3-4.5V, phụ thuộc vào nồng độ khí xung quanh MQ2.  Dout: Điện áp ra số, giá trị 0 1 phụ thuộc vào điện áp tham chiếu và nồng độ khí ga mà MQ2 đo được.  Việc có chân ra số Dout rất tiện cho ta mắc các ứng dụng đơn giản. Khi nồng độ MQ2 đo được thấp hơn mức cho phép thì Dout=1, đèn led tắt. Khi nồng độ khí đo được lớn hơn nồng độ khí cho phép thì Dout=0, đèn led sáng.
  • 31. 31 2.1.6. Module ethernet DP83848 DP83848 được thiết kế để cho phép kết nối Ethernet trong các môi trường khắc nghiệt nhất. Thiết bị đáp ứng các tiêu chuẩn IEEE 802.3u trên một phạm vi nhiệt độ cho phép từ -55 ° C đến 125 ° C. Thiết bị này rất lý tưởng cho các môi trường khắc nghiệt như trạm từ xa không dây, ô tô, giao thông vận tải và các ứng dụng điều khiển công nghiệp. Hình 2.7 Mạch Ethernet DP83848. Các tham số của DP83848: CHỨC NĂNG VẬT LÝ Nguồn 3.3 Tốc độ (Mbps) 10/100 Giao tiếp MII RMII SNI Số đèn LED 3 Chiều dài cáp tối đa (m) 150 Nhiệt độ cho phép -55 to 125 Bảng 2.2 Các tính năng của DP83848.
  • 32. 32 Nguyên lý hoạt động của DP83848 Mạch DP83848 gồm 2 bộ giao tiếp nằm ở 2 đầu  Một đầu là port ethernet nối theo chuẩn RJ45 để giao tiếp với mạng máy tính thông qua giao thức TCP/IP.  Đầu còn lại là bộ gồm 20 chân dùng để giao tiếp với mạch STM32F4- DISCOVERY. Sơ đồ giao tiếp giữa mạch ETHERNET và STM32F4-DISCOVERY Hình 2.8 Sơ đồ giao tiếp DP83848 và STM32F4-DISCOVERY. Sơ đồ đấu nối các chân của DP83848 và STM32F4-DISCOVERY giúp STM32F4-DISCOVERY có thể giao tiếp với mạng máy tính qua giao tiếp RJ45 trên nền giao thức IP của mạng máy tính. 2.2. Sơ đồ mạch giám sát và báo động Mạch giám sát là một khối thống nhất gồm tập hợp các khối giám sát như cảm biến nhiệt độ, báo khói, chuyển động, khí gas và đèn báo hiệu, điều khiển camera, khối báo động gắn liền với mạch để thực hiện các chức năng đã được định ra từ trước. 2.2.1. Sơ đồ mạch cảm biến nhiệt
  • 33. 33 Hình 2.9 Sơ đồ mạch cảm biến nhiệt. Mạch gồm 3 chân, chân một nối đất, chân 3 nối nguồn 5V và chân 2 là chân dữ liệu nối với chân PA8 của mạch STM32F4-DISCOVERY. Dữ liệu nhiệt độ sẽ được truyền qua chân 2 theo giao thức 1-wire. 2.2.2. Sơ đồ chân cắm cảm biến chuyển động: Hình 2.10 Sơ đồ chân cắm cảm biến chuyển động.
  • 34. 34 Mạch gồm 3 chân, chân 1 nối đất, chân 3 nối nguồn và chân 2 là chân dữ liệu nối với chân PB5 của kit STM32F4- DISCOVERY, khi có chuyển động sẽ báo mức 1 về khối vi xử lý, sau đó làm bật camera và đèn theo chương trình đã được định trước. 2.2.3. Sơ đồ mạch điều khiển camera Hình 2.11 Sơ đồ mạch điều khiển camera. Khi nhận tín hiệu ở chân vi điều khiển PB8 là mức 1 thì khối khuếch đại (transistor C1815) sẽ làm nhiệm vụ khuếch đại tín hiệu từ kích cuộn dây của Relay (Cuộn dây quấn quanh một thanh sắt nhỏ. Có tác dụng như một nam châm điện khi có dòng điện đủ lớn đi qua). Khi có dòng điện kích thì sẽ hình thành nam châm điện và nam châm điện sẽ hút thanh sắt ở bên trong từ đó hình thành tiếp điểm 3-4 và làm bật camera (sáng led hiển thị).Ngược lại, khi chân PB8 là mức 0 thì khối khuyếch đại không hoạt động, không có tiếp điểm nam châm điện (không có dòng kích) và sẽ có tiếp điểm 3-5. Từ đó làm tắt thiết bị. Tóm lại, khối relay như một công tắc điều khiển (đóng - mở, bật - tắt thiết bị) được điều khiển bằng tín hiệu từ kit vi xử lý.
  • 35. 35 2.2.4. Sơ đồ mạch điều khiển đèn Hình 2.12 Sơ đồ mạch điều khiển đèn. Khi chân PB7 của mạch STM32F4-DISCOVERY bằng 0 (điệp áp bằng 0) thì chân đất của transistor C945 rời chân nối với R9, nên mạch ngắt và đèn tắt, nếu chân PB7 bằng 1 (điện áp bằng 3V) thì chân đất của transistor C945 nối R9, nên mạch đóng và đèn sáng. Vây muốn đèn sáng ta gán 1 cho chân PB7 và gán giá trị 0 cho chân PB7 thì tắt đèn. Ở đây đèn chỉ là cách gán tên tượng trưng cho việc điều khiển thiết bị gia dụng vì vậy chúng ta có thể gán tên của một thứ khác. 2.2.5. Sơ đồ mạch cảm biến khói Hình 2.13 Sơ đồ mạch cảm biến khói.
  • 36. 36 Theo sơ đồ ta có các thông số sau:  Điện áp của đường VHI gần bằng 2V nối chân 2 của LM393.  Điện áp của đường VLO gần bằng 9V nối chân 5 của LM393. Ở trạng thái bình thường ta có các thông số sau:  Chân 5 và 7 của báo khói liền nhau nên chân 7 nối đất.  Chân 7 của báo khói nối đất thì chân 3 của LM393 nối đất nên điện áp chân 3 này bằng 0.  Điện áp chân 3 của LM393 bằng 0 sẽ nhỏ hơn điện áp chân 2 của LM393(2v) nên điện áp chân 1 của LM393 bằng 0.  Khi điện áp chân 1 của LM393 bằng 0 thì điện áp tại tiếp điểm giữa chân 1 và 7 của LM393 phải bằng 0, lúc này nếu đọc chân PA3 của mạch STM32F4- DISCOVERY nó sẽ cho giá trị 0. Ở trạng thái có khói ta có một số thông số sau:  Chân 5 và 7 của báo khói rời nhau nên chân 7 không còn giá trị.  Lúc này tại chân 7 của báo khói có điện áp bằng 12V /2 = 6V nên chân 3 và 6 của LM393 có điện áp bằng 6V.  Điện áp chân 3 của LM393 bằng 6V sẽ lớn hơn điện áp chân 2 của LM393(2V) nên điện áp chân 1 của LM393 khác 0.  Điện áp chân 6 của LM393 bằng 6v sẽ nhỏ hơn điện áp chân 5 của LM393(9V) nên điện áp chân 7 của LM393 khác 0.  Khi điện áp chân 1 và chân 7 của LM393 khác 0 thì điện áp tại tiếp điểm giữa chân 1 và 7 của LM393 khác 0. Tóm lại, khi ở trạng thái bình thường thì giá trị tại chân PA3 của mạch STM32F4- DISCOVERY bằng 0, khi có khói giá trị sẽ bằng 1 và kích hoạt khối báo động đã được định sẵn.
  • 37. 37 2.2.6. Sơ đồ chân cắm cảm biến khí gas: Hình 2.14 Sơ đồ chân cắm cảm biến khí gas. Mạch gồm 4 chân, chân 1 nối nguồn, chân 4 nối đất và chân 2 là chân dữ liệu tương tự Aout, chân 3 là chân dữ liệu số Dout. Ở đây ta sử dụng chân dữ liệu số (chân 3) nối với chân PB4 của mạch STM32F4 DISCOVERY. Khi có khí gas vượt quá ngưỡng cho phép cảm biến sẽ báo về mức 0 làm kích hoạt khối báo động theo chương trình đã được định sẵn. 2.2.7. Sơ đồ mạch báo động: Hình 2.15 Sơ đồ mạch báo động.
  • 38. 38 Khi có khí ga, chân PB1 của vi điều khiển nhận mức 1 và tác động đến chân Reset (số 4) của IC555. Ngõ ra output (chân 3) của IC555 sẽ cho ra xung vuông có tần số đủ lớn để chuông báo động kêu liên hồi. Để tính toán giá trị tần số phù hợp, từ sơ đồ trên ta chỉ cần áp dụng công thức: f= 1,44 / [C4 x (R11+2R21)] Để điều chỉnh tần số xung vuông, ta điều chỉnh giá trị biến trở 10k. Tín hiệu ở ngõ ra sẽ được khuếch đại nhờ khối khuyếch đại sử dụng transistor C1815 và sau đó đưa ra loa buzzer báo động. 2.3. Kết luận Mạch giám sát là một là một hệ thống thống nhất gồm nhiều module, mỗi module giám sát một loại thiết bị riêng. Chương 2 mới chỉ giới thiệu về sơ đồ phần cứng của các module, để hoạt động mỗi module cần phải tích hợp chương trình tương ứng để điều khiển quá trình giám sát.
  • 39. 39 CHƯƠNG 3: HỆ THỐNG PHẦN MỀM QUẢN LÝ MẠCH GIÁM SÁT Chương này sẽ giới thiệu chi tiết về các công cụ lập trình được sử dụng để xây dựng nên hệ thống giám sát, các công cụ này bao gồm: cộng nghệ .NET(C#), Keil C. 3.1. Bộ công cụ lập trình nhúng Keil C Giới thiệu Keil C là công cụ phần mềm hỗ trợ khá đầy đủ giúp người dùng soạn thảo và biên dịch chương trình cho các vi điều khiển thuộc họ ARM và một số họ khác bằng ngôn ngữ C/C++. Giống như tất cả các phần mềm dựa trên μVision IDE Keil, Keil C cung cấp môi trường lập trình mạnh mẽ, dễ sử dụng và dễ dàng tiếp cận giúp phát triển các ứng dụng nhúng. Chúng bao gồm các thành phần cần thiết để tạo, debug và kết hợp vi điều khiển với các thiết bị ngoại vi liên quan. Các bước phát triển phần mềm 1. Tạo project và chọn vi xử lý đồng thời thiết lập các thông số tương ứng. 2. Viết Code cho project theo ngôn ngữ C/C++. 3. Biên dịch chương trình. 4. Debug và hoàn thiện chương trình. 5. Download chương trình xuống FLASH ROM hay SRAM của chip.. Cấu trúc chương trình đơn giản Keil C hoạt động giống như các bộ lập trình C chuẩn, khi bắt đầu nó thực thi hàm main. Đối với các chương trình nhúng hàm main thường là đoạn code lặp vô tận. Ví dụ: int counter; main (void) { counter = 0; while (1) // repeat forever
  • 40. 40 { counter++; // increment counter } } Luân chuyển công việc theo cấu trúc Round-Robin Round-Robin cho phép thực hiện song song đồng thời một số nhiệm vụ. Mỗi công việc được thực hiện trong một thời gian xác định trước. Sau khi hết thời gian thực hiện tác vụ i nó sẽ bắt đầu thực hiện tác vụ i+1. Ví dụ minh họa hoạt động của cấu trúc round- robin tham khảo tại phụ lục 5 (trang 64). Các dạng hàm wait Hàm wait dùng để tạm dừng một công việc và chờ biến cố để tiếp tục công việc của mình. Suốt thời tạm dừng này, CPU sẽ thực thi những công việc khác. Ví dụ minh họa tham khảo phụ lục 6 (trang 65). Mailbox Mailbox là hàng đợi FIFO dùng để chuyển dữ liệu giữa các công việc hay tiến trình. Ví dụ minh họa tham khảo phụ lục 7 (trang 65). Bộ nhớ Công cụ phát triển Keil C cung cấp quyền truy cập vào tất cả khu vực bộ nhớ với bất kỳ kiến trúc vi điều khiển nào. Các biến có thể được gán tường minh tại một không gian vùng nhớ nào đó bằng các khai báo kiểu tường minh hoặc có thể được gán không tường minh dựa vào kiểu vùng nhớ. Truy cập vào bộ nhớ dữ liệu nội bộ nhanh hơn so với truy cập vào bộ nhớ dữ liệu bên ngoài, vì vậy nếu có thể ta nên khai các biến sử truy xuất thường xuyên tại vùng nhớ nội bộ và các biến ít truy xuất ở vùng nhớ bên ngoài. TCP Socket Keil C cung cấp thành phần RL-TCPnet dùng để thực hiện việc truyền dữ liệu qua giao thức TCP/IP. Ví dụ minh họa hoạt động của RL-TCPnet tham khảo phụ lục 8 (trang 66).
  • 41. 41 HTTP Server Hypertext Mark-up Language (HTML) là ngôn ngữ chính để định dạng trang web. Với HTML, bạn có thể mô tả những gì một trang cần được thể hiện như loại phông chữ, màu sắc của văn bản, nơi đánh dấu đoạn và nhiều định dạng khác của tài liệu. Có 2 dạng trang web trong HTTP server là trang tĩnh và trang động.  Trang tĩnh có nội dung cố định.  Trang động có nội dung thay đổi theo dữ liệu yêu cầu được nhập vào từ người dùng. RL-TCPnet hỗ trợ cả hai loại trang web trên. Các trang web tĩnh thường được lưu trữ trong hệ thống tập tin ROM ảo. Các tập tin được chuyển đổi thành C-code bằng công cụ chuyển đổi tập tin FCARM. Ví dụ minh họa tham khảo phụ lục 9 (trang 69). Các Web Server cung cấp một ngôn ngữ kịch bản nhỏ để xử lý các trang web động. Các HTTP Server xử lý các dòng tập tin mã nguồn kịch bản và gọi các chức năng CGI khi cần thiết. Các kết quả trả về của chức năng CGI được tích hợp vào trang web kết quả và gởi đến các máy client. Mỗi dòng lệnh bắt đầu với một ký tự xác định một lệnh cho các thông dịch kịch bản. Các ngôn ngữ kịch bản thì đơn giản và hoạt động như sau: Lệnh Mô tả i Dùng để include nội dung của một tập tin .inc. t Lệnh xuất dòng văn bản ra trình duyệt. c Gọi một hàm C từ file HTTP_CGI.c để xử lý dòng này. Kết quả trả về sẽ được xuất ra trình duyệt. # Đây là dòng chú thích và được bỏ qua bởi trình thông dịch. . Biểu thị dòng lệnh cuối cùng. Bảng 3.1 Bảng ký tự đại diện của các lệnh trong các file script. Cấu trúc hàm thông dịch và ví dụ minh họa tham khảo phụ lục 10 (trang 71).
  • 42. 42 3.2. Công nghệ .NET .NET Framework của Microsoft là một nền tảng lập trình tập hợp các thư viện lập trình có thể được cài thêm hoặc đã có sẵn trong các hệ điều hành Windows. Nó cung cấp những giải pháp thiết yếu cho những yêu cầu thông thường của các chương trình điện toán như lập trình giao diện người dùng, truy cập dữ liệu, kết nối cơ sở dữ liệu, ứng dụng web, các giải thuật số học và giao tiếp mạng. Ngoài ra, .NET Framework còn quản lý việc thực thi các chương trình được viết dựa trên công nghệ .NET do đó người dùng cần phải cài .NET Framework để có thể chạy các chương trình được viết trên nền .NET. Về chức năng, .NET Framework có 3 khối chức năng là: Trình diễn (Presentation), Dữ liệu (Data), Giao tiếp (Communication). Về kỹ thuật, hiện tại Microsoft giới thiệu 4 kỹ thuật mới và nổi bật nhất là: Windows CardSpace (InfoCard), Windows Presentation Foundation (Avalon), Windows Communication Foundation (Indigo), Windows Workflow Foundation (Workflow). 3.2.1. Cấu trúc .NET FrameWork .NET Framework bao gồm ba phần là bộ thực thi ngôn ngữ chung (Common Language Runtime), các lớp lập trình hợp nhất hay còn gọi là các thư viện lớp cơ sở (Base Class Libraries) và một phiên bản cấu thành của Microsoft Active Server Pages gọi là Microsoft ASP.NET. Trên thực tế, ASP.NET và Windows Forms là hai thành phần nằm trong Base Class Libraries, nên có thể xem .NET Framework bao gồm 2 phần chính là Common Language Runtime (CLR) và .NET Framework Class Library (FCL). Một trong các thành phần này đều có vai trò cực kỳ quan trọng trong việc phát triển các dịch vụ và các ứng dụng .NET. 3.2.1.1. Common Language Runtime - Bộ thực thi ngôn ngữ chung Common Language Runtime (gọi tắt là bộ thực thi – CLR) được xây dựng trên các dịch vụ hệ điều hành. CLR là nền tảng của .NET Framework, nó đảm nhận các công việc sau:  Là công cụ thực thi mã trung gian (tựa JVM).  Biên dịch (Just-in-time compiler).
  • 43. 43  Thực thi mã nguồn.  Quản lý bộ nhớ.  Thực thi luồng (Thread execution).  Xử lý lỗi (Error-handling).  Xác nhận mã nguồn an toàn (managed code). CLR đã được phát triển ở tầm cao hơn so với các runtime trước đây như VB- runtime chẳng hạn, bởi nó đạt được những khả nǎng như tích hợp các ngôn ngữ, bảo mật truy cập mã, quản lý thời gian sống của đối tượng và hỗ trợ gỡ lỗi. Mã được biên dịch và hướng tới CLR có tên “managed code”. “Managed code” cung cấp siêu dữ liệu (metadata) cần thiết cho CLR để cung cấp các dịch vụ hỗ trợ đa ngôn ngữ, bảo mật mã, quản lý thời gian sống của đối tượng và quản lý bộ nhớ. Nếu .NET Framework tồn tại (và đã được cài đặt) trên một hệ điều hành, thì hệ điều hành đó có thể chạy bất kỳ chương trình .NET nào. Tính năng giúp một chương trình có thể chạy (không có sửa đổi) trên nhiều hệ điều hành khác nhau được gọi là sự độc lập về nền tảng. Code được viết một lần có thể được sử dụng trên mọi loại máy tính mà không sửa đổi, giúp tiết kiệm cả thời gian và tiền bạc. .NET Framework cũng cung cấp mức độ tương tác cao giữa các ngôn ngữ. Chương trình viết bằng các ngôn ngữ khác nhau đều được biên dịch thành các phần MSIL khác nhau có thể được kết hợp để tạo ra một chương trình thống nhất. MSIL cho phép .NET Framework trở thành ngôn ngữ không phụ thuộc, bởi vì các chương trình .NET không gắn với một ngôn ngữ lập trình cụ thể nào cả. Bất cứ ngôn ngữ nào có thể được biên dịch sang MSIL được gọi là ngôn ngữ tương thích với .NET. Danh sách một số ngôn ngữ lập trình khả dụng với .NET được liệt kê dưới đây: .NET programming languages  Visual C#.  Visual J#.  ….
  • 44. 44 Common Language Infrastructure (CLI) Mục đích của Common Language Infrastructure (CLI) là cung cấp một nền tảng ngôn ngữ trung lập để phát triển và thực thi ứng dụng, bao gồm cả chức năng để xử lý các lỗi, thu gom rác thải (garbage collection), bảo mật và khả năng tương tác. Bằng cách thực hiện những khía cạnh cốt lõi của .NET Framework trong phạm vi của mình, CLI sẽ không được gắn với một ngôn ngữ duy nhất mà sẽ có mặt trên nhiều ngôn ngữ được hỗ trợ bởi .NET framework. Biên dịch trong .NET Common Language Runtime (CLR) là một phần trung tâm của .NET Framework thực hiện các chương trình .NET. Chương trình được biên dịch vào các hướng dẫn-cụ thể (machine-specific) của máy theo hai bước. Đầu tiên, chương trình được dịch thành Microsoft Intermediate Language (MSIL), trong đó xác định các hướng dẫn cho các CLR. Code được chuyển đổi thành MSIL từ các ngôn ngữ khác và các nguồn có thể được kết hợp với nhau bằng CLR. Các MSIL cho các thành phần của một ứng dụng được đặt vào file thực thi của ứng dụng (được gọi là assembly). Khi ứng dụng thực thi, trình biên dịch (được gọi là biên dịch just- in-time hoặc biên dịch JIT) CLR phiên dịch MSIL trong file thực thi vào mã máy (đối với một nền tảng cụ thể), sau đó mã máy được thực thi trên nền tảng đó. MSIL là ngôn ngữ trung gian, là một giải pháp để giúp cho các lập trình viên không cần quan tâm đến việc lập trình bằng ngôn ngữ nào trong bộ .NET. Tại sao phải biên dịch 2 lần:  Độc lập với phần cứng  NET framewwork có thể cài đặt trên nhiều platform.  Các chương trình .NET được thực hiện mà không có thay đổi code nào  Độc lập về ngôn ngữ  Các chương trình .NET không bị trói buộc vào một ngôn ngữ cụ thể nào cả.  Các chương trình trong .NET có thể được viết bởi nhiều ngôn ngữ trong .NET.
  • 45. 45 3.2.1.2. NET FRAMEWORK CLASS LIBRARY (FCL) – Thư viện lớp .NET Framework Microsoft Foundation Class (MFC) là bộ thư viện mà lập trình viên Visual C++ sử dụng trong khi Java Foundation Class (JFC) là bộ thư viện dành cho các lập trình viên Java. Bạn có thể xem .NET Framework Class Library (FCL) là bộ thư viện dành cho các lập trình viên .NET. Với hơn 80000 lớp đối tượng (với .NET 4.0) để gọi thực hiện đủ các loại dịch vụ từ hệ điều hành, bạn có thể bắt đầu xây dựng ứng dụng bằng Notepad.exe. Nhiều người lầm tưởng rằng các môi trường phát triển phần mềm như Visual Studio 98 hay Visual Studio .NET là tất cả những gì cần để viết chương trình. Thực ra, chúng là những phần mềm dùng làm vỏ bọc bên ngoài. Với chúng, bạn sẽ viết được các đoạn lệnh đủ các màu xanh, đỏ, lỗi cú pháp được báo ngay khi đang gõ lệnh, thuộc tính của các đối tượng được đặt ngay cửa sổ properties, giao diện được thiết kế theo phong cách trực quan… Hầu hết các lớp được gom vào một namespace (không gian tên) gọi là system. 3.2.1.3. Sơ lược về NAMESPACE .NET Framework được tạo bởi từ hàng trǎm lớp (class). Nhiều ứng dụng mà bạn xây dựng trong .NET đang tận dụng các lớp này theo cách này hay cách khác. Vì số lượng các lớp là quá lớn, .NET Framework tổ chức các lớp này vào một cấu trúc lớp được gọi là một namespace. Một namespace có thể là con của một namespace lớn hơn. Namespace lớn nhất trong .NET Framework là System. System là một Namespace cơ sở trong .NET Framework. Tất cả các namespace được cung cấp trong .NET framework bắt đầu với namespace cơ sở này. Ví dụ, những lớp phục vụ việc truy cập và thao tác dữ liệu được tìm thấy trong namespace System.Data. Những ví dụ khác bao gồm System.IO, System.XML, System.Collections, System.Drawing … Lợi điểm của namespace là phân nhóm các lớp đối tượng, giúp người dùng dễ nhận biết và sử dụng. Ngoài ra, namespace tránh việc các lớp đối tượng có tên trùng với nhau không sử dụng được. .NET Framework cho phép bạn tạo ra các lớp đối tượng và các namespace của riêng mình. Với hơn 80000 tên có sẵn, việc đặt trùng tên lớp của mình
  • 46. 46 với một lớp đối tượng đã có là điều khó tránh khỏi. Namespace cho phép việc này xảy ra bằng cách sử dụng một tên đầy đủ để truy xuất đến một lớp đối tượng. Ví dụ, nếu muốn dùng lớp WebControls, bạn có thể dùng tên tắt của nó là WebControls hay tên đầy đủ là System.Web.UI.WebControls. 3.2.2. Lập trình socket Trong lập trình mạng, Socket là một API cung cấp các phương thức để giao tiếp thông qua mạng, các lớp sau đây hỗ trợ việc lập trình socket trên nền .net(C#) Lớp Namespace Mô tả IPAddress System.Net Địa chỉ của giao thức Internet Protocol (IP). IPEndPoint System.Net Đại diện cho địa chỉ trên một cổng. TcpListener System.Net.Sockets Chờ kết nối từ các máy trạm. Socket System.Net.Sockets Quản lý kết nối với máy trạm. TcpClient System.Net.Sockets Cung cấp các kết nối client trên nền TCP. NetworkStream System.Net.Sockets Cung cấp cơ chế luồng cho việc truy cập dữ liệu qua mạng. Bảng 3.2 Các đối tượng dùng để lập trình socket trong C#. Kết nối Server-Client thông qua TCP/IP Khi thực thi, server cần được xác định rõ địa chỉ IP và sẽ tiếp nhận thông tin trên một port cụ thể. Server sẽ nằm trong trạng thái này cho đến khi client gửi đến một yêu cầu kết nối. Sau khi được server chấp nhận, một kết nối sẽ hình thành cho phép server và client giao tiếp với nhau. Để hiểu rõ hơn ta thực hiện các bước sau để kết nối server và client sử dụng giao thức TCP/IP trong C# (có thể chạy server và client trên cùng một máy).
  • 47. 47 Server: 1. Tạo một đối tượng System.Net.Sockets.TcpListener để bắt đầu “lắng nghe” trên một cổng cục bộ. 2. Đợi và chấp nhận kết nối từ client với phương thức AccepSocket(). Phương thức này trả về một đối tượng System.Net.Sockets.Socket dùng để gửi và nhận dữ liệu. 3. Thực hiện giao tiếp với client. 4. Đóng Socket. Thông thường quy trình này sẽ được đặt trong một vòng lặp (lặp lại bước 2) để chấp nhận nhiều kết nối cùng lúc (sử dụng Thread) hoặc các kết nối lần lượt. Client: 1. Tạo một đối tượng System.Net.Sockets.TcpClient. 2. Kết nối đến server với địa chỉ và port xác định với phương thức TcpClient.Connect(). 3. Lấy luồng (stream) giao tiếp bằng phương thức TcpClient.GetStream(). 4. Thực hiện giao tiếp với server. 5. Đóng luồng và socket. Hình 3.1 Mô hình truyền nhận Client-Server.
  • 48. 48 Ví dụ : Gửi nhận dữ liệu dạng mảng các byte Lớp NetworkStream và Socket cung cấp các phương thức gửi và nhận dữ liệu dạng mảng các byte. Vì vậy bạn cần phải thực hiện các bước chuyển đổi dữ liệu sang dạng byte và ngược lại. Trong ví dụ sau tôi sử dụng dữ liệu dạng văn bản ASCII trong console, và dùng các lớp trong namespace System.Text để chuyển đổi. Có hai cách bạn có thể áp dụng:  Dùng các static property của lớp abstract System.Text.Encoding với các phương thức GetString() và GetBytes().  Tạo đối tượng có kiểu XXXEncoding (thừa kế từ System.Text.Encoding). Ví dụ: UTF8Encoding, ASCIIEncoding, … Một ví dụ gửi nhận dữ liệu đơn giản nhất sử dụng TCPListener, Socket (phía server) và TCPClient, NetworkStream (phía client) dạng mảng byte với địa chỉ loop-back 127.0.0.1 trên cùng một máy. CODE Server và Client tham khảo tại phụ lục 11 (trang 79) 3.3. Kết luận Chương này cho ta cách nhìn tổng thể về hệ thống giám sát được tạo ra bởi 2 công cụ chính là C# và Keil C, mỗi công cụ được sử dụng cho từng mục đích cụ thể sau:  .Net(C#) được sử dụng để thiết kế chương trình cho server trung tâm nhằm quản lý các dữ liệu báo cáo từ các mạch giám sát.  Keil C dùng để viết các phần mềm nhúng cho các mạch giám sát.
  • 49. 49 CHƯƠNG 4: CÁC KẾT QUẢ NGHIÊN CỨU Những gì có trong chương 4 này chính là những kết quả nghiên cứu mà nhóm đã đạt được trong quá trình tìm hiểu và thực hiện đề tài. 4.1. Khối nhà trạm Khối này gồm các module hoạt động riêng biệt và được điều khiển bởi board xử lý trung tâm stm32f4-Discovery. Hình 4.1 Mạch giám sát gồm các tính năng cơ bản
  • 50. 50 Nguyên lý hoạt động của mạch như sau: các module cảm biến khói, khí gas, chuyển động, nhiệt độ khi được cấp nguồn sẽ liên tục gởi thông tin về cho board xử lý trung tâm. Thông tin ấy sẽ được xử lý và chia làm hai hướng:  Tự động điều khiển các khối báo hiệu: nếu như có khói hoặc khí gas thì khối báo động sẽ được kích hoạt và nếu như có chuyển động thì khối đèn, camera sẽ đồng thời được kích hoạt.  Gởi thông tin của các khối trên mạch giám sát về phần mềm giám sát để người dùng quản lý thông qua module Ethernet DP83848. 4.2. Khối quản lý nhà trạm Khối này gồm chương trình quản lý các thiết bị cảm biến của mạch giám sát, chương trình giao tiếp với khối quản lý trung tâm cũng như chương trình web cho phép cài đặt các thông số hệ thống. Hình 4.4 Giao diện trang web chính của mạch giám sát. Trang web này gồm 2 tính năng: cho phép cài đặt thông số và thay đổi mật khẩu.
  • 51. 51 Hình 4.5 Giao diện cài đặt thông số cho mạch giám sát.  ID: là mã thiết bị giám sát dùng để phân biệt với các thiết bị giám sát khác, mã này chính là mã trạm mà chương trình trung tâm quản lý, thiết bị giám sát muốn đăng nhập vào hệ thống thì mã trạm này phải được khai báo ở chương trình trung tâm và ID của thiết bị này được lưu trong bảng STATION (trường ID).  Server IP Address : đây là địa chỉ mạng của máy tính trung tâm dùng để giám sát các trạm, trạm khi khởi động sẽ sử dụng địa chỉ này để kết nối vào trung tâm và định kỳ gởi các thông số trạng thái của trạm về trung tâm.  Port: đây là cổng kết nối của máy tính trung tâm.  Local IP Address: đây là địa chỉ của thiết bị giám sát, địa chỉ này phải cùng lớp mạng với địa chỉ máy trung tâm bên trên.  Subnet mask: dùng để phân chia về mặc logic địa chỉ IP.  Default gateway: địa chỉ máy tính để giao tiếp với mạng bên ngoài.  DNS server: địa chỉ máy tính để phân giải tên miền.
  • 52. 52 Hình 4.6 Giao diện đổi mật khẩu. Mỗi mạch giám sát có một account duy nhất là Admin, vì vậy trang này chỉ đơn giản là đổi mật khẩu cho Admin. 4.3. Khối quản lý trung tâm Khối này có vai trò trung gian cho khối quản lý nhà trạm và khối giao diện người sử dụng, khối này có vai trò tập hợp trạng thái của các mạch giám sát để gởi tới chương trình web của người dùng, cũng như gởi các lệnh lấy thông tin. Giao diện chính của khối này như hình sau: Hình 4.7 Giao diện chính của khối trung tâm.
  • 53. 53 Giao diện chính gồm 4 phần  Connected station: thể hiện thông tin của các trạm hiện đang kết nối vào trung tâm.  Connected browser: thể hiện thông tin các trang web giám sát đang kết nối vào trung tâm để theo dõi các trạm giám sát.  Command from browser: hiển thị các lệnh yêu cầu từ các trang web người dùng gởi về các trạm giám sát.  Data from stations: hiển thị các thông tin trạng thái của các trạm giám sát gởi về cho trung tâm. Bao gồm 2 phần chính: thời gian và thông số của các khối trên mạch giám sát: 1: nhiệt độ, 2: chuyển động, 3: camera, 4: đèn, 5: khói, 6: khí gas, 7: báo động. Ngoại trừ nhiệt độ hiển thị số liệu nhiệt độ của môi trường thì các thông số từ 2 đến 7 sẽ thông báo trạng thái đang bật/tắt của các khối trên mạch giám sát.  Chức năng Tool-View Log: cho phép xem lại tất cả các biến cố của trung tâm, phục vụ cho việc debug khi chương trình phát sinh kết quả ngoài ý muốn. Hình 4.8 Giao diện View Log.
  • 54. 54  Chức năng Tool-Analyse log: cho phép xem lại tất cả các biến cố của trung tâm kèm thêm tính năng lọc các thông tin biến cố theo ý người dùng. Hình 4.9 Giao diện Analyse Log. 4.4. Kết luận Chương 4 đã trình bày các kết quả đạt được. Mạch và hệ thống giám sát đã hoạt động hiệu quả, đảm bảo tính chính xác của từng phần. Chương 5 sẽ kết luận về các nội dung nghiên cứu đã được thực hiện và kiến nghị về các lĩnh vực có thể ứng dụng kết quả nghiên cứu cũng như đề xuất những định hướng nghiên cứu trong tương lai.
  • 55. 55 CHƯƠNG 5: KẾT LUẬN VÀ KIẾN NGHỊ Chương 5 này sẽ tóm tắt lại các nội dung nghiên cứu đã thực hiện cũng như đưa ra các kiến nghị cho tương lai. 5.1. Kết quả đạt được Đề tài thiết kế và thi công mạch giám sát đã thực hiện được các công việc sau: - Thiết kế và thi công hệ thống phần cứng mạch giám sát gồm các module sau:  Module báo khói.  Module giám sát nhiệt độ.  Module cảm biến chuyển động.  Module cảm biến khí gas.  Module điều khiển camera.  Module điều khiển đèn. - Xây dựng hệ thống phần mềm giám sát mạch gồm các khối sau:  Khối chương trình nhúng tại các mạch giám sát gồm:  Chức năng cài đặt các thông số của mạch giám sát.  Chức năng đổi mật khẩu.  Chương trình nhúng để giám sát và gởi thông số về server trung tâm.  Khối chương trình server trung tâm gồm:  Chức năng liên kết với các trạm để nhận thông tin trạng thái.  Chức năng liên kết với các người dùng đầu cuối (giao diện web) để hiển thị thông tin nhận được cho người dùng quan sát từ xa được mạch trên máy tính.  Khối chương trình web cho phép người dùng giám sát các trạm từ xa, khối này gồm:  Chức năng cho phép cài đặt các thông số hệ thống.  Chức năng cho phép khai báo tài khoản người truy cập.  Chức năng cho phép khai báo thông tin các trạm. Kết luận: đề tài đã hoàn thành tất cả các mục tiêu đã đề ra trong bản thuyết minh đề tài.
  • 56. 56 5.2. Kiến nghị 5.2.1. Áp dụng thực tế Hệ thống giám sát là hệ thống cho phép người quản trị có thể giám sát các hoạt động của từng thiết bị, điều khiển và quản lý một cách hiệu quả nhà trạm thông qua mạng nội bộ. Hệ thống này có thể được áp dụng giám sát tại các hộ gia đình, xưởng sản xuất và các phòng học, phòng thí nghiệm tại trường Đại Học Sài Gòn nhằm:  Giám sát được trạng thái mọi lúc, mọi nơi.  Tăng độ bền thiết bị.  Tăng cường tính bảo vệ, an toàn cho con người.  Tiết kiệm chi phí điện năng.  Giảm thiểu chi phí nhân công. 5.2.2. Hướng phát triển Hệ thống mạch giám sát là đề tài ứng dụng các dạng cảm biến để giám sát và điều khiển các thiết bị liên quan, vì vậy đây là một dạng đề tài mở, ta có thể phát triển đề tài này bằng cách nghiên cứu tích hợp thêm các dạng cảm biến như: cảm biến độ ẩm, cảm biến vỡ kính, cảm biến điện lưới, cảm biến ngập nước,... Ngoài ra chúng ta có thể nâng cấp hệ thống giám sát bằng việc xây dựng phần mềm quản lý và điều khiển mạch giám sát từ xa, không dây. Nhằm phát triển đề tài thành những hệ thống giám sát trên nhiều lĩnh vực khác nhau phục vụ cho nhu cầu thiết thực trong môi trường thực tiễn.
  • 57. 57 TÀI LIỆU THAM KHẢO [1] Keil, ARM Product Manuals, http://www.keil.com/support/man_arm.htm, 2015. [2] TS.Văn Tấn Lượng, ThS.Lê Quốc Đán, Giáo trình Kĩ thuật vi xử lý. [3] Microsoft, C# Programming Guide, https://msdn.microsoft.com/en-us/library/67ef8sbd.aspx, 2013. [4] Microsoft, Sockets, https://msdn.microsoft.com/en-us/library/b6xa24z5(v=vs.110).aspx, 2015. [5] ThS.Trần Minh Nhật, Đề tài hệ thống giám sát nhà trạm viễn thông BTS. [6] ST, Discovery kit for STM32F407/417 lines, http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252419, 2015. [7] http://www.alldatasheet.com/
  • 58. 58 PHỤ LỤC 1. Code tự động điều khiển camera, đèn, báo động while(1) { timer_tick(); //bat tat Bao dong if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_4)==0||GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_3)==1) GPIO_WriteBit(GPIOB, GPIO_Pin_1,1); else GPIO_WriteBit(GPIOB, GPIO_Pin_1,0); //bat tat Camera, May lanh if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_5)==1) { GPIO_WriteBit(GPIOB, GPIO_Pin_7,1); GPIO_WriteBit(GPIOB, GPIO_Pin_8,1); } else { GPIO_WriteBit(GPIOB, GPIO_Pin_7,0); GPIO_WriteBit(GPIOB, GPIO_Pin_8,0); } } 2. Code xử lý cài đặt thông số của trạm do { /* Parse all returned parameters. */ dat = http_get_var (dat, var, 40); if (var[0] != 0) { /* Parameter found, returned string is non 0-length. */
  • 59. 59 if (str_scomp (var, (unsigned char *)"pw=") == __TRUE) { /* Change password. */ str_copy (passw, var+3); stpassw |= 1; } else if (str_scomp (var, (unsigned char *)"pw2=") == __TRUE) { /* Retyped password. */ str_copy (retyped, var+4); stpassw |= 2; } else if (str_scomp (var, (unsigned char *)"LocalIp=") == __TRUE) { p=var+8; GanIP(m_pNetCfg->IP_Addr,(char*)p); } else if (str_scomp (var, (unsigned char *)"Port=") == __TRUE) { p=var+5; m_pNetCfg->port=atoi((char*)p); } else if (str_scomp (var, (unsigned char *)"ServerIp=") == __TRUE) { p=var+9; GanIP(m_pNetCfg->SERVERIP_Addr,(char*)p); } else if (str_scomp (var, (unsigned char *)"gateway=") == __TRUE) { p=var+8; GanIP(m_pNetCfg->IP_Gateway,(char*)p); } else if (str_scomp (var, (unsigned char *)"DNSServer=") == __TRUE) { p=var+10;
  • 60. 60 GanIP(m_pNetCfg->IP_Dns1,(char*)p); } else if (str_scomp (var, (unsigned char *)"ID=") == __TRUE) { p=var+3; m_pNetCfg->StationID=atoi((char*)p); } } } } while (dat); 3. Code xử lý việc lấy thông tin các cảm biến while(1) { temp =DS18B20_Get_Temp(GPIOA, GPIO_Pin_8); p=(char*)&temp; data[0]=1;//kieu float data[1]=0;//VisibleIndex=Nhiet do data[2]=0;//nguong data[3]=p[0]; data[4]=p[1]; pb5=GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_5); //Chuyen dong temp=pb5*10; p=(char*)&temp; data[5]=1;//kieu float data[6]=1;//VisibleIndex=Chuyen dong data[7]=0;//nguong data[8]=p[0]; data[9]=p[1];
  • 61. 61 pb8=GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_8); temp =pb8*10; p=(char*)&temp; data[10]=1;//kieu float data[11]=2;//VisibleIndex=Camera data[12]=0;//nguong data[13]=p[0]; data[14]=p[1]; pb7=GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_7); temp =pb7*10; p=(char*)&temp; data[15]=1;//kieu float data[16]=3;//VisibleIndex=May Lanh data[17]=0;//nguong data[18]=p[0]; data[19]=p[1]; pa3=GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3); //Khoi temp=pa3*10; p=(char*)&temp; data[20]=1;//kieu float data[21]=4;//VisibleIndex=Khoi data[22]=0;//nguong data[23]=p[0]; data[24]=p[1];
  • 62. 62 pb4=GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_4); //Khi gas temp=pb4*10; p=(char*)&temp; data[25]=1;//kieu float data[26]=5;//VisibleIndex=Khi gas data[27]=0;//nguong data[28]=p[0]; data[29]=p[1]; pb1=GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_1); temp =pb1*10; p=(char*)&temp; data[30]=1;//kieu float data[31]=6;//VisibleIndex=Bao dong data[32]=0;//nguong data[33]=p[0]; data[34]=p[1]; AddDataPacketToQueue(Data_List_V2, data, 35, 0); } 4. Code xử lý gói tin thông báo trạng thái private void Manager_ControlStateEvent(object sender, ControlStateEvent e) { VTracDataContext db; try { if (string.IsNullOrEmpty(connectionString)) {
  • 63. 63 return; } // Kiểm tra giờ từ thiết bị gởi lên với giờ tại Server DateTime now = DateTime.Now; if ((e.Date - now).TotalDays > 30) { // Xuất ra file log log.WarnFormat("Giờ tại trạm {0} là '{1}' sai lệch với giờ tại Server là '{2}'", e.StationID, e.Date.ToString(), now.ToString()); } db = new VTracDataContext(connectionString); Config_Station_Control stationControl = db.Config_Station_Controls.Where(sC => sC.StationID == e.StationID && sC.VisibleIndex == e.VisibleIndex).FirstOrDefault(); if (stationControl != null) { // Lưu trạng thái điều khiển vào Database DataControl dataControl = new DataControl { StationID = e.StationID, Value = e.State, Time = e.Date, ControlName = stationControl.ControlLabel, ControlID = stationControl.ControlID }; db.DataControls.InsertOnSubmit(dataControl); db.SubmitChanges(); // Cập nhật trạng thái cho những nút trạng thái trên web UpdateWebFormControl(e.StationID.ToString(), "Control", e.State.ToString(), e.VisibleIndex); } else
  • 64. 64 { // Xuất ra file log log.ErrorFormat("Không tìm thấy dòng có VisibleIndex={0} và StationID={1} trong bảng Config_Station_Control", e.VisibleIndex, e.StationID); } } catch (Exception ex) { // Xuất ra file log log.Error("Hàm Manager_ControlStateEvent đã phát ra Exception ", ex.Message); } } 5. Ví dụ minh họa hoạt động của cấu trúc round-robin. int counter0; int counter1; __task1 void job0 (void) { os_tsk_create (job1, 1); // start job 1 while (1) { // endless loop counter0++; // Increment counter 0 } } __task void job1 (void) { while (1) { // Endless loop counter1++; // Increment counter 1 } } main (void) { // the main function
  • 65. 65 os_sys_init (job0); // starts only job 0 } Chương trình bắt đầu với job0, hàm os_tsk_create tạo công việc, các chức năng nhiệm vụ job0 và job1 là vòng lặp đếm đơn giản. Sau khi hết thời gian thực hiện job0 thì job1 sẽ được thực thi. Ngay khi thời gian thực thi job1 hết hệ thống tiếp tục với job0. 6. Chờ một khoảng thời gian xác định (Wait for Time Delay) int counter0; int counter1; __task void job0 (void) { os_tsk_create (job1, 1); // start job 1 while (1) { counter0++; // Increment counter 0 os_dly_wait (3); // Wait 3 timer ticks } } __task void job1 (void) { while (1) { counter1++; // Increment counter 1 os_dly_wait (5); // Wait 5 timer ticks } } 7. MAILBOX os_mbx_declare(v_mail, 20); // mailbox with 20 entries __task void job0 (void) { int i, res; os_mbx_init (v_mail, sizeof (v_mail)); // create mailbox first os_tsk_create (job1, 2); // before waiting tasks
  • 66. 66 for (i = 0; i < 30; ) { // send 30 mail res = os_mbx_send (v_mail, (void *) i, 1000); if (res == OS_R_OK) i++; // check that mail send OK } os_tsk_delete_self (); // when done delete own task } __task void job1 (void) { int v, res; while (1) { res = os_mbx_wait (v_mail, (void **) &v, 0xFFFF); // receive mail if (res == OS_R_OK || s == OS_R_MBX) { // check status printf ("nReceived v=%d res=%d", v, res); // use when correct } } } 8. Hoạt động của RL-TCPnet #include <rtl.h> U8 tcp_soc; U8 soc_state; BOOL wait_ack; void main (void) { init_ (); tcp_soc = tcp_get_socket (TCP_TYPE_CLIENT, 0, 120, tcp_callback); soc_state = 0; while (1) { timer_poll ();
  • 67. 67 main_TcpNet (); send_data (); } } void send_data (void) { static const U8 rem_IP[4] = {192,168,0,100}; static int bcount; U32 max; U8 *sendbuf; switch (soc_state) { case 0: tcp_connect (tcp_soc, rem_IP, 1000, 0); bcount = 0; wait_ack = __FALSE; soc_state = 1; return; case 2: if (wait_ack == __TRUE) { return; } max = tcp_max_dsize (tcp_soc); sendbuf = tcp_get_buf (max); for (i = 0; i < max; i += 2) { sendbuf[i] = bcount >> 8; sendbuf[i+1] = bcount & 0xFF; if (bcount >= 32768) { soc_state = 3;
  • 68. 68 break; } } tcp_send (tcp_soc, sendbuf, i); wait_ack = __TRUE; return; case 3: if (wait_ack == __TRUE) { return; } tcp_close (tcp_soc); soc_state = 4; return; } } U16 tcp_callback (U8 soc, U8 event, U8 *ptr, U16 par) { /* This function is called on TCP event */ switch (event) { .. case TCP_EVT_CONNECT: /* Socket is now connected and ready to send data. */ soc_state = 2; break; case TCP_EVT_ACK: /* Our sent data has been acknowledged by remote peer */ wait_ack = __FALSE; break;
  • 69. 69 .. } return (0); } 9. Ví dụ minh họa hoạt động web server Ví dụ : ta có file system.cgi có nội dung như sau: t <HTML> t <BODY TEXT=#000000 BGCOLOR=#ccddff LINK=#0000FF VLINK=#0000FF ALINK=#FF0000> t <FORM ACTION=finish.cgi METHOD=POST NAME=CGI> t <TABLE BORDER=0 WIDTH=400> c s1<TR><TD WIDTH=200>Authentication</TD> <TD WIDTH=200> <b>%s</b></TD></TR> t <TR><TD>Password for user 'Admin'</TD> c s2<TD><INPUT TYPE=password NAME=pw SIZE=10 MAXLENGTH=10 VALUE="%s"> </TD> </TR> t <TR><TD>Retype your password</TD> c s3<TD><INPUT TYPE=password NAME=pw2 SIZE=10 MAXLENGTH=10 VALUE="%s"> </TD> </TR> t <TR><TD colspan="2" align="center"><INPUT TYPE=SUBMIT NAME=set VALUE="Change" id="sbm"> </TD> </TR> t </TABLE> t </FORM> t </BODY> t </HTML> . Để nhúng trang web này vào ARM ta phải chuyển trang này sang dạng C-Code bằng lệnh sau : FCARM system.cgi
  • 70. 70 Sau khi dịch code trang web có dạng như sau: /*-- File: system.cgi, 587 bytes --*/ 0x01,0x3C,0x48,0x54,0x4D,0x4C,0x3E,0x3C,0x42,0x4F,0x44,0x59,0x20,0x54,0x45, 0x58,0x54,0x3D,0x23,0x30,0x30,0x30,0x30,0x30,0x30,0x20,0x42,0x47,0x43,0x4F, 0x4C,0x4F,0x52,0x3D,0x23,0x63,0x63,0x64,0x64,0x66,0x66,0x20,0x4C,0x49,0x4E, 0x4B,0x3D,0x23,0x30,0x30,0x30,0x30,0x46,0x46,0x20,0x56,0x4C,0x49,0x4E,0x4B, 0x3D,0x23,0x30,0x30,0x30,0x30,0x46,0x46,0x20,0x41,0x4C,0x49,0x4E,0x4B,0x3D, 0x23,0x46,0x46,0x30,0x30,0x30,0x30,0x3E,0x01,0x3C,0x46,0x4F,0x52,0x4D,0x20, 0x41,0x43,0x54,0x49,0x4F,0x4E,0x3D,0x66,0x69,0x6E,0x69,0x73,0x68,0x2E,0x63, 0x67,0x69,0x20,0x4D,0x45,0x54,0x48,0x4F,0x44,0x3D,0x50,0x4F,0x53,0x54,0x20, 0x4E,0x41,0x4D,0x45,0x3D,0x43,0x47,0x49,0x3E,0x3C,0x54,0x41,0x42,0x4C,0x45, 0x20,0x42,0x4F,0x52,0x44,0x45,0x52,0x3D,0x30,0x20,0x57,0x49,0x44,0x54,0x48, 0x3D,0x34,0x30,0x30,0x3E,0x02,0x73,0x31,0x3C,0x54,0x52,0x3E,0x3C,0x54,0x44, 0x20,0x57,0x49,0x44,0x54,0x48,0x3D,0x32,0x30,0x30,0x3E,0x41,0x75,0x74,0x68, 0x65,0x6E,0x74,0x69,0x63,0x61,0x74,0x69,0x6F,0x6E,0x3C,0x2F,0x54,0x44,0x3E, 0x3C,0x54,0x44,0x20,0x57,0x49,0x44,0x54,0x48,0x3D,0x32,0x30,0x30,0x3E,0x3C, 0x62,0x3E,0x25,0x73,0x3C,0x2F,0x62,0x3E,0x3C,0x2F,0x54,0x44,0x3E,0x3C,0x2F, 0x54,0x52,0x3E,0x01,0x3C,0x54,0x52,0x3E,0x3C,0x54,0x44,0x3E,0x50,0x61,0x73, 0x73,0x77,0x6F,0x72,0x64,0x20,0x66,0x6F,0x72,0x20,0x75,0x73,0x65,0x72,0x20, 0x27,0x41,0x64,0x6D,0x69,0x6E,0x27,0x3C,0x2F,0x54,0x44,0x3E,0x02,0x73,0x32, 0x3C,0x54,0x44,0x3E,0x3C,0x49,0x4E,0x50,0x55,0x54,0x20,0x54,0x59,0x50,0x45, 0x3D,0x70,0x61,0x73,0x73,0x77,0x6F,0x72,0x64,0x20,0x4E,0x41,0x4D,0x45,0x3D, 0x70,0x77,0x20,0x53,0x49,0x5A,0x45,0x3D,0x31,0x30,0x20,0x4D,0x41,0x58,0x4C, 0x45,0x4E,0x47,0x54,0x48,0x3D,0x31,0x30,0x20,0x56,0x41,0x4C,0x55,0x45,0x3D, 0x22,0x25,0x73,0x22,0x3E,0x3C,0x2F,0x54,0x44,0x3E,0x3C,0x2F,0x54,0x52,0x3E, 0x01,0x3C,0x54,0x52,0x3E,0x3C,0x54,0x44,0x3E,0x52,0x65,0x74,0x79,0x70,0x65, 0x20,0x79,0x6F,0x75,0x72,0x20,0x70,0x61,0x73,0x73,0x77,0x6F,0x72,0x64,0x3C, 0x2F,0x54,0x44,0x3E,0x02,0x73,0x33,0x3C,0x54,0x44,0x3E,0x3C,0x49,0x4E,0x50,
  • 71. 71 0x55,0x54,0x20,0x54,0x59,0x50,0x45,0x3D,0x70,0x61,0x73,0x73,0x77,0x6F,0x72, 0x64,0x20,0x4E,0x41,0x4D,0x45,0x3D,0x70,0x77,0x32,0x20,0x53,0x49,0x5A,0x45, 0x3D,0x31,0x30,0x20,0x4D,0x41,0x58,0x4C,0x45,0x4E,0x47,0x54,0x48,0x3D,0x31, 0x30,0x20,0x56,0x41,0x4C,0x55,0x45,0x3D,0x22,0x25,0x73,0x22,0x3E,0x3C,0x2F, 0x54,0x44,0x3E,0x3C,0x2F,0x54,0x52,0x3E,0x01,0x3C,0x54,0x52,0x3E,0x3C,0x54, 0x44,0x20,0x63,0x6F,0x6C,0x73,0x70,0x61,0x6E,0x3D,0x22,0x32,0x22,0x20,0x61, 0x6C,0x69,0x67,0x6E,0x3D,0x22,0x63,0x65,0x6E,0x74,0x65,0x72,0x22,0x3E,0x3C, 0x49,0x4E,0x50,0x55,0x54,0x20,0x54,0x59,0x50,0x45,0x3D,0x53,0x55,0x42,0x4D, 0x49,0x54,0x20,0x4E,0x41,0x4D,0x45,0x3D,0x73,0x65,0x74,0x20,0x56,0x41,0x4C, 0x55,0x45,0x3D,0x22,0x43,0x68,0x61,0x6E,0x67,0x65,0x22,0x20,0x69,0x64,0x3D, 0x22,0x73,0x62,0x6D,0x22,0x3E,0x3C,0x2F,0x54,0x44,0x3E,0x3C,0x2F,0x54,0x52, 0x3E,0x3C,0x2F,0x54,0x41,0x42,0x4C,0x45,0x3E,0x3C,0x2F,0x46,0x4F,0x52,0x4D, 0x3E,0x01,0x3C,0x2F,0x42,0x4F,0x44,0x59,0x3E,0x3C,0x2F,0x48,0x54,0x4D,0x4C,0x 3E,0x00, 10. Hàm thông dịch web động CODE: U16 cgi_func (U8 *env, U8 *buf, U16 buflen, U32 *pcgi) { U16 len = 0; switch (env[0]) { /* Analyze the environment string. It is the script 'c' line starting */ /* at position 2. What you write to the script file is returned here. */ case 'a' : /* Network parameters - file 'network.cgi' */ .. break; case 'b': /* LED control - file 'led.cgi' */ ..
  • 72. 72 break; case 'c': /* TCP status - file 'tcp.cgi' */ .. break; case 'd': /* System password - file 'system.cgi' */ switch (env[2]) { case '1': len = sprintf(buf,&env[4],http_EnAuth ? "Enabled" : "Disabled"); break; case '2': len = sprintf(buf,&env[4],http_auth_passw); break; } break; } return (len); } Ví dụ minh họa quá trình hoạt động trong khi thực thi trang web CGI: Tập tin password_h.inc <HTML> <HEAD> <TITLE>System Settings</TITLE> </HEAD> <BODY TEXT=#000000 BGCOLOR=#ccddff LINK=#0000FF VLINK=#0000FF ALINK=#FF0000> <H2 ALIGN=CENTER>System Settings</H2> <FORM ACTION=index.htm METHOD=POST NAME=CGI>
  • 73. 73 <TABLE BORDER=0 WIDTH=99%> <TR BGCOLOR=#aaccff> <TH WIDTH=40%>Item</TH> <TH WIDTH=60%>Setting</TH> </TR> Tập tin password_f.inc <TR> <TD>&nbsp;</TD> <TD>&nbsp;</TD> </TR> <TR> <TD></TD> <TD align="right"> <INPUT TYPE=SUBMIT NAME=set VALUE="Change" id="sbm"> <INPUT TYPE=RESET VALUE="Undo"> <INPUT TYPE=BUTTON VALUE="Home" OnClick="location='/index.htm'"> </TD> </TR> </FORM> <p> This page allows you to change the system <b>Password</b>, for the username <b>admin</b>. Default <b>realm</b>, <b>user</b> and <b>password</b> can be set in configuration file. This Form uses a <b>POST</b> method to send data back to a Web server. You need to click on <b>Change</b> button to ctivate the changes. </p> </BODY> </HTML> Tập tin system.cgi i password_h.inc c d 1 <TR><TD><IMG SRC=pabb.gif> Authentication</TD> <TD> <b>%s</b> </TD></TR>
  • 74. 74 t <TR><TD><IMG SRC=pabb.gif>Password for user 'admin'</TD> c d 2 <TD><INPUT TYPE=TEXT NAME=pw SIZE=10 MAXLENGTH=10 VALUE="%s"></TD></TR> t <TR><TD><IMG SRC=pabb.gif>Retype your password</TD> c d 2 <TD><INPUT TYPE=TEXT NAME=pw2 SIZE=10 MAXLENGTH=10 VALUE="%s"></TD></TR> i password_f.inc . Giải thích: Khi biên dịch, từ 3 file trên sẽ chỉ tạo ra một file duy nhất theo nguyên tắc sau: lấy code của file password_h.inc, kế đến lấy code của file system.cgi, sau cùng là code của file password_f.inc. Khi đó đoạn code tổng hợp có dạng. CODE: <HTML> <HEAD> <TITLE>System Settings</TITLE> </HEAD> <BODY TEXT=#000000 BGCOLOR=#ccddff LINK=#0000FF VLINK=#0000FF ALINK=#FF0000> <H2 ALIGN=CENTER>System Settings</H2> <FORM ACTION=index.htm METHOD=POST NAME=CGI> <TABLE BORDER=0 WIDTH=99%> <TR BGCOLOR=#aaccff> <TH WIDTH=40%>Item</TH> <TH WIDTH=60%>Setting</TH> </TR> c d 1 <TR><TD><IMG SRC=pabb.gif>Authentication</TD><TD><b>%s</b></TD></TR> t <TR><TD><IMG SRC=pabb.gif>Password for user 'admin'</TD> c d 2 <TD><INPUT TYPE=TEXT NAME=pw SIZE=10 MAXLENGTH=10 VALUE="%s"></TD></TR> t <TR><TD><IMG SRC=pabb.gif>Retype your password</TD> c d 2 <TD><INPUT TYPE=TEXT NAME=pw2 SIZE=10 MAXLENGTH=10 VALUE="%s"></TD></TR> <TR> <TD>&nbsp;</TD>
  • 75. 75 <TD>&nbsp;</TD> </TR> <TR> <TD></TD> <TD align="right"> <INPUT TYPE=SUBMIT NAME=set VALUE="Change" id="sbm"> <INPUT TYPE=RESET VALUE="Undo"> <INPUT TYPE=BUTTON VALUE="Home" OnClick="location='/index.htm'"> </TD> </TR> </FORM> <p> This page allows you to change the system <b>Password</b>, for the username <b>admin</b>. Default <b>realm</b>, <b>user</b> and <b>password</b> can be set in configuration file. This Form uses a <b>POST</b> method to send data back to a Web server. You need to click on <b>Change</b> button to activate the changes. </p> </BODY> </HTML> Đoạn code này có dạng .CGI, do đó nó sẽ được thực thi động. Đối với các lệnh không phải dạng c (có ký tự đứng đầu khác "c") thì chương trình giữ nguyên, đối với lệnh dạng c thì chương trình này sẽ chuyển cho đoạn code sau thực thi. Đoạn code xử lý các file .CGI có dạng như sau CODE: void cgi_process_data (U8 code, U8 *dat, U16 len) { /* This function is called by HTTP server to process the returned Data */ /* for the CGI Form POST method. It is called on SUBMIT from the browser. */ if (len == 0) {
  • 76. 76 /* No data or all items (radio, checkbox) are off. */ return; } var = (U8 *)alloc_mem (50); stpassw = 0; str_copy ((U8*)m_pNetCfg->lng, (U8*)"0"); str_copy ((U8*)m_pNetCfg->lat, (U8*)"0"); do { /* Parse all returned parameters. */ dat = http_get_var (dat, var, 40); if (var[0] != 0) { /* Parameter found, returned string is non 0-length. */ if (str_scomp (var, (unsigned char *)"pw=") == __TRUE) { /* Change password. */ str_copy (passw, var+3); stpassw |= 1; } else if (str_scomp (var, (unsigned char *)"pw2=") == __TRUE) { /* Retyped password. */ str_copy (retyped, var+4); stpassw |= 2; } else if (str_scomp (var, (unsigned char *)"LocalIp=") == __TRUE) { p=var+8; GanIP(m_pNetCfg->IP_Addr,(char*)p); } else if (str_scomp (var, (unsigned char *)"Port=") == __TRUE) { p=var+5;
  • 77. 77 m_pNetCfg->port=atoi((char*)p); } else if (str_scomp (var, (unsigned char *)"ServerIp=") == __TRUE) { p=var+9; GanIP(m_pNetCfg->SERVERIP_Addr,(char*)p); } else if (str_scomp (var, (unsigned char *)"gateway=") == __TRUE) { p=var+8; GanIP(m_pNetCfg->IP_Gateway,(char*)p); } else if (str_scomp (var, (unsigned char *)"DNSServer=") == __TRUE) { p=var+10; GanIP(m_pNetCfg->IP_Dns1,(char*)p); } else if (str_scomp (var, (unsigned char *)"ID=") == __TRUE) { p=var+3; m_pNetCfg->StationID=atoi((char*)p); } else if (str_scomp (var, (unsigned char *)"Lat=") == __TRUE) { str_copy ((U8*)m_pNetCfg->lat, var+4); } else if (str_scomp (var, (unsigned char *)"Lng=") == __TRUE) { str_copy ((U8*)m_pNetCfg->lng, var+4); }
  • 78. 78 } } while (dat); if (stpassw == 0x03) { len = strlen ((char*)passw); if (mem_comp (passw, retyped, len) == __TRUE) { /* OK, both entered passwords the same, change it. */ str_copy ((U8*)m_pNetCfg->Password, passw); } } } Giải thích: các dạng lệnh c thường có chuổi điều khiển %s, đây là chuổi dùng để chèn các dữ liệu người dùng. Còn thông tin nhận được từ người dùng sẽ được chứa trong con trỏ dat với chiều dài được lưu trong tham số len. Tập tin system.cgi sau khi thông dịch <HTML> <HEAD> <TITLE>System Settings</TITLE> </HEAD> <BODY TEXT=#000000 BGCOLOR=#ccddff LINK=#0000FF VLINK=#0000FF ALINK=#FF0000> <H2 ALIGN=CENTER>System Settings</H2> <FORM ACTION=index.htm METHOD=POST NAME=CGI> <TABLE BORDER=0 WIDTH=99%> <TR BGCOLOR=#aaccff> <TH WIDTH=40%>Item</TH> <TH WIDTH=60%>Setting</TH> </TR> <TR><TD><IMG SRC=pabb.gif>Authentication</TD><TD><b>Enabled</b></TD></TR> <TR><TD><IMG SRC=pabb.gif>Password for user 'admin'</TD> <TD><INPUT TYPE=TEXT NAME=pw SIZE=10 MAXLENGTH=10 VALUE="test"></TD></TR>
  • 79. 79 <TR><TD><IMG SRC=pabb.gif>Retype your password</TD> <TD><INPUT TYPE=TEXT NAME=pw2 SIZE=10 MAXLENGTH=10 VALUE="test"></TD></TR> <TR> <TD>&nbsp;</TD> <TD>&nbsp;</TD> </TR> <TR> <TD></TD> <TD align="right"> <INPUT TYPE=SUBMIT NAME=set VALUE="Change" id="sbm"> <INPUT TYPE=RESET VALUE="Undo"> <INPUT TYPE=BUTTON VALUE="Home" OnClick="location='/index.htm'"> </TD> </TR> </FORM> <p>This page allows you to change the system <b>Password</b>, for the username <b>admin</b>. Default <b>realm</b>, <b>user</b> and <b> password </b> can be set in configuration file. This Form uses a <b>POST</b> method to send data back to a Web server. You need to click on <b>Change</b> button to activate the changes. </p> </BODY> </HTML> 11. Code Server và Client (C#) Server: using System; using System.Text; using System.Net;
  • 80. 80 using System.Net.Sockets; public class Y2Server { private const int BUFFER_SIZE=1024; private const int PORT_NUMBER=9999; static ASCIIEncoding encoding=new ASCIIEncoding(); public static void Main() { try { IPAddress address = IPAddress.Parse("127.0.0.1"); TcpListener listener=new TcpListener(address,PORT_NUMBER); // 1. listen listener.Start(); Console.WriteLine("Server started on "+listener.LocalEndpoint); Console.WriteLine("Waiting for a connection..."); Socket socket=listener.AcceptSocket(); Console.WriteLine("Connection received from " + socket.RemoteEndPoint); // 2. receive byte[] data=new byte[BUFFER_SIZE];
  • 81. 81 socket.Receive(data); string str=encoding.GetString(data); // 3. send socket.Send(encoding.GetBytes("Hello "+str)); // 4. close socket.Close(); listener.Stop(); } catch (Exception ex) { Console.WriteLine("Error: " + ex); } Console.Read(); } } Client: using System; using System.IO;
  • 82. 82 using System.Net; using System.Text; using System.Net.Sockets; public class Y2Client{ private const int BUFFER_SIZE=1024; private const int PORT_NUMBER=9999; static ASCIIEncoding encoding= new ASCIIEncoding(); public static void Main() { try { TcpClient client = new TcpClient(); // 1. connect client.Connect("127.0.0.1",PORT_NUMBER); Stream stream = client.GetStream(); Console.WriteLine("Connected to Y2Server."); Console.Write("Enter your name: "); string str = Console.ReadLine();
  • 83. 83 // 2. send byte[] data=encoding.GetBytes(str); stream.Write(data,0,data.Length); // 3. receive data =new byte[BUFFER_SIZE]; stream.Read(data,0,BUFFER_SIZE); Console.WriteLine(encoding.GetString(data)); // 4. Close stream.Close(); client.Close(); } catch (Exception ex) { Console.WriteLine("Error: " + ex); } Console.Read(); } }