Download as pdf or txt
Download as pdf or txt
You are on page 1of 60

-1-

PHẦN MỞ ĐẦU

1. Lý do chọn đề tài

Thế kỷ 21 dường như chỉ giành riêng cho sự phát triển của lĩnh vực công
nghệ thông tin. Hàng loạt phát minh được ra đời và đã cho ra những sản phẩm
đáp ứng được mọi kỳ vọng và nhu cầu của con người. Đi kèm theo đó là sự
phát triển vượt bậc của ngành truyền thông đã góp phần đưa thế giới ngày càng
tiến bộ và văn minh hơn. Mạng lưới Internet gần như đã phủ sống toàn cầu và
nó đã mang lại làn gió mới cho nhân loại nói chung và Việt Nam nói riêng,
cộng với quyết tâm đưa xã hội Việt Nam trở thành một nước có ngành công
nghệ thông tin phát triển của chính phủ, tận dụng những yếu tố này, chúng tôi
đã chọn đề tài hệ thống điều khiển hệ thiết bị qua mạng TCP/IP. Với mong
muốn ứng dụng những gì chúng tôi đã học ở trường và nghiên cứu thêm để có
thể đưa ra những sản phẩm ứng dụng vào thực tế

Đề tài này có thể giúp mọi người quản lý tốt các thiết bị trong nhà, trong
công ty từ xa một cách dễ dàng. Điểm mạnh của đề tài này là điều khiển được
thiết bị qua mạng TCP/IP. Không bị giới hạn về khoảng cách, chỉ cần máy
Server và Client kết nối Internet là có thể điều khiển được thiết bị

Về phần chức năng, thì chương trình gồm 2 chức năng chính:

- Điều khiển thiết bị từ xa.

- Cho phép kiểm tra trạng thái thiết bị.

1.1. Điều khiển thiết bị.

Khi một máy tính được xuất xưởng hoặc bày bán ở cửa hàng thì
cả nhà sản xuất, người bán cũng như người tiêu dùng đều ngầm hiểu đây
chưa phải là một hệ thống hoàn chỉnh, càng không phải là một hệ thống
khép kín. Tùy theo yêu cầu sử dụng, người dùng có thể nâng cấp, mở
rộng cấu hình bằng cách ghép nối thêm các Card mở rộng hoặc các thiết
bị ngoại vi như modem, máy in… Các nhà sản xuất đã dự trữ sẵn các
rãnh cắm mở rộng trên bản mạch chính, các cổng ghép nối : song song
(LPT), nối tiếp (COM), cổng USB. Đây chính là những vị trí mà kỹ thuật
-2-

ghép nối máy tính có thể tác động vào. Để ghép nối với máy tính ta có
nhiều khả năng để lựa chọn, dưới đây là các lựa chọn phổ biến nhất :

- Ghép nối qua cổng máy in hay còn gọi là cổng song song.

- Ghép nối qua cổng mở rộng trên bản mạch chính.

- Ghép nối qua cổng nối tiếp.

- Ghép qua cổng USB.

Mỗi cổng đều có một ưu nhược điểm riêng biệt vẫn tồn tại cho
đến ngày nay, tuỳ theo hoàn cảnh mà ta chọn cổng nào cho thích hợp,
trong đề tài này chúng tôi nghiên cứu nhiều về cổng song song, và hướng
phát triển lên cổng USB vì cổng này phổ biến hơn tuy nhiên do các hạn
chế về mặt thời gian và kiến thức về điện tử, lập trình vi điều khiển nên
chưa phát triển được.

Phần điều khiển cổng song song nằm ở Client, Client sẽ nhận tín
hiệu từ Server và điều khiển thiết bị thông qua cổng LPT, cổng LPT này
sẽ kết nối với 8 thiết bị bên ngoài (bóng đèn, quạt máy, nồi cơm điện,
hoặc các thiết bị điện khác …)

Khi Server truyền tín hiệu bật hay tắt xuống Client, thì Client sẽ
tiếp tục gởi tín hiệu này đến các thiết bị trên, trong đề tài này chúng tôi
mô phỏng các thiết bị trên bằng 8 bóng đèn LED.

1.2. Cho phép kiểm tra trạng thái thiết bị.

Chức năng này cho phép Client thu được tín hiệu của các thiết bị
trên thông qua cổng LPT, về cách thức hoạt động của chức năng này có
thể tóm tắt như sau: từ Server ta gởi tín hiệu yêu cầu Client lấy trạng thái
của các thiết bị, sau đó Client bắt đầu thu thập trạng thái của các thiết bị
và trả ngược về Server, sau đó Server sẽ hiển thị lên cho người xem biết
được thiết bị đó đang bật hay đang tắt.

2. Lịch sử nghiên cứu

Trên thế có rất nhiều nhà nghiên cứu về việc điều khiển thiết bị qua
mạng và đã cho ra nhiều siêu phẩm . Điển hình nhất là ngôi nhà thông minh của
-3-

Bill Gate. Đó là một sản phẩm mang đầy tính “ công nghệ thông tin”. Một sự
kết hợp hoàn hảo giữa hai lĩnh vực công nghệ thông tin và điện tử. Tất cả các
thiết bị trong nhà được điều khiển tự động. Các thiết bị được kết nối với máy
tính, được điều khiển tự động thông qua thiết bị cầm tay hay máy tính. Đó là
một sản phẩm quá xa xỉ đối với chúng ta nhưng không phải là chúng ta không
dám nghĩ tới. Thiết nghĩ bạn đi làm ở công ty mà bạn có thể điều khiển tất cả
các thiết bị ở nhà như bật bật tắt bóng đèn, máy lạnh… bạn sẽ cảm thấy như thế
nào. Như vậy cũng là quá tuyệt vời rồi phải không?

3. Mục tiêu nghiên cứu.

Ở đề tài này nhóm chúng tôi nghiên cứu về việc điều khiển thiết bị thông
qua mạng TCP/IP. Client kết nối với mạch điện thông qua 2 cổng: cổng LPT và
cổng USB. Trên mạch điện ta gắn các thiết bị. Các thiết bị ở đây được tượng
trưng là đèn Led. Trên Client ta thiết kế giao diện điều khiển cho phép Client
kết nối và login vào Server. Trên Server ta có giao diện quản lý các Client và
trên mỗi Client ta quản lý bật tắt được từng thiết bị. Như vậy cũng còn nhiều
mặt hạn chế như: người điều khiển phải ngồi trực tiếp trên Server mới điều
khiển được thiết bị trên Client. Để khắc phục được chuyện đó nhóm chúng tôi
làm thêm chức năng Remote. Nghĩa là máy Client có chức năng truy cập vào
Server và điều khiển bật tắt các thiết bị trên một Client khác kết nối với thiết bị
bằng cổng LPT

Như vậy người dùng có thể điều khiển được các thiết bị, chỉ cần Server
và Client kết nối mạng với nhau

- Giao diện thân thiện với người dùng.

- Có khả năng quản lý User tốt

4. Đối tƣợng nghiên cứu và phạm vi nghiên cứu.

Trong đề tài này chủ yếu nghiên cứu về cổng LPT và cổng USB và cách
thức truyền tín hiệu qua mạng TCP/IP.

Phạm vi nghiên cứu là hệ thống mạng LAN, WAN.


-4-

5. Phƣơng pháp nghiên cứu

Tìm hiểu và nghiên cứu các tài liệu về cổng LPT, cổng USB, về lập trình
socket, tìm hiểu về ngôn ngữ JAVA

Tìm hiểu sơ lược về các kiến thức điện tử như đèn LED, điện trở, và
cách làm mạch điện giao tiếp

Xây dựng chương trình có giao diện đơn giản, phù hợp với người dùng,
người dùng có thể điều khiển thiết bị một cách dễ dàng

6. Những đóng góp mới của đề tài - những vấn đề mà đề tài chƣa thực hiện
đƣợc.

Xây dụng được chương trình điều khiển từ xa thông qua mạng TCP/IP,
giúp người dùng dễ dàng quản lý được các thiết bị của họ, chương trình có khả
năng kiểm tra được trạng thái của thiết bị và hiển thị lên cho người dùng, lợi
điểm của chương trình là do sử dụng mạng nên có thể điều khiển thiết bị ở mọi
nơi chỉ cần kết nối Internet, không bị giới hạn về khoảng cách. Có thể điều
khiển qua mạng không dây, hướng phát triển có thể tích hợp vào các thiết bị di
động hoặc các thiết bị cầm tay khác.

Tuy nhiên chương trình chỉ mới điều khiển được các thiết bị mô phỏng
(ở đây là bật tắt 8 bóng đèn LED) chưa thử nghiệm điều khiển trên các thiết bị
thật như: bóng đèn nhà, máy lạnh, máy giặt, tủ lạnh….Nếu có điều kiện nghiên
cứu thêm nhóm chúng tôi sẽ không dừng lại ở việc bật tắt các đèn Led mà phát
triển lên các thiết bị thật như các thiết bị gia đình, các máy móc trong công ty xí
nghiệp…

Do thời gian và kiến thức có hạn nên chúng tôi làm được phần điều
khiển thiết bị qua TCP/IP thông qua cổng LPT còn cổng USB đang trong giai
đoạn nghiên cứu và thử nghiệm. Do điều khiển thiết bị qua cổng USB rất phức
tạp đòi hỏi kiến thức rất nhiều về điện tử và lập trình vi điều khiển

7. Kết cấu của đề tài.

Luận văn này được trình bày thành ba phần chính: Phần mở đầu, phần
nội dung và phần kết luận.
-5-

Phần mở đầu:

Giới thiệu sơ lược về lý do chọn đề tài, lịch sử nghiên cứu, mục tiêu
nghiên cứu, đối tượng và phạm vi nghiên cứu, phương pháp nghiên cứu, những
đóng góp và những vấn đề tồn tại của đề tài để từ đó đem lại cho mọi người một
cái nhìn tổng quan nhất về đề tài.

Phần nội dung:

Nội dung báo cáo được chia làm 3 chương:

Chƣơng 1: Giới thiệu về cổng LPT, cổng USB và lập trình Socket

Chƣơng 2: Điều khiển thiết bị qua mạng

Trình bày cách thực hiện về lập trình Socket và điều khiển thiết bị
thông qua cổng LPT

Chƣơng 3: Chương trình điều khiển thiết bị qua mạng TCP/IP

Giới thiệu về chương trình và cách thức điều khiển thiết bị.

Phần kết luận:

Kết luận chung về toàn bộ đề tài.

Hướng phát triển nghiên cứu tiếp theo.


-6-

CHƢƠNG 1: GIỚI THIỆU VỀ CỔNG LPT, CỔNG USB VÀ LẬP TRÌNH


SOCKET

1.1 Giới thiệu tổng quan về điều khiển thiết bị

1.1.1 Điều khiển từ xa bằng tia hồng ngoại (IR)

Ngày nay, đây là loại điều khiển từ xa có vai trò “thống trị” trong
hầu hết các thiết bị gia đình. Một chiếc điều khiển IR sẽ gồm các bộ
phận cơ bản nằm trong một hộp nối cáp kỹ thuật số như sau: Các nút
bấm, một bảng mạch tích hợp, các núm tiếp điểm, đi- ốt phát quang (đèn
LED).

Nguyên lý cơ bản của loại điều khiển từ xa này là sử dụng ánh


sáng hồng ngoại của quang phổ điện từ mà mắt thường không thấy được
để chuyển tín hiệu đến thiết bị cần điều khiển. Nó đóng vai trò như một
bộ phát tín hiệu, sẽ phát ra các xung ánh sáng hồng ngoại mang một mã
số nhị phân cụ thể. Khi ta ấn một nút phía bên ngoài thì sẽ vận hành một
chuỗi các hoạt động khiến các thiết bị cần điều khiển sẽ thực hiện lệnh
của nút bấm đó.

Quy trình này cụ thể như sau: Đầu tiên, khi ta nhấn vào một nút
như “Tăng âm lượng” chẳng hạn, nó sẽ chạm vào núm tiếp điểm bên
dưới và nối kín một mạch tăng âm lượng trên bản mạch. Các mạch tích
hợp có thể tự dò tìm ra từng mạch cụ thể cho từng nút bấm. Tiếp đó các
mạch này sẽ gửi tín hiệu đến đèn LED nằm phía trước. Từ đây, đèn LED
sẽ phát ra một chuỗi các xung ánh sáng chứa các mã nhị phân (gồm
những dãy số 1 và 0) tương ứng với lệnh “tăng âm lượng”. Mã lệnh này
gồm nhiều mã con như khởi động, tăng âm lượng, mã địa chỉ thiết bị và
ngừng lại khi ta thả nút ra.
-7-

Hình 1.1: Sơ đồ bộ điều khiển từ xa.

Về phía bộ phận cần điều khiển, nó sẽ gồm một bộ thu tín hiệu
hồng ngoại nằm ở mặt trước để có thể dễ dàng nhận được tín hiệu từ
điều khiển từ xa. Sau khi đã xác minh mã địa chỉ này xuất phát đúng từ
chiếc điều khiển của mình, chúng sẽ giải mã các xung ánh sáng thành
các dữ liệu nhị phân để bộ vi xử lý của thiết bị có thể hiểu được và thực
hiện các lệnh tương ứng.

Hiện nay, ta sử dụng thiết bị điều khiển IR cho hầu hết các vật
dụng trong nhà như tivi, máy stereo, điều hòa nhiệt độ…. Chúng rất bền,
tuy nhiên lại có hạn chế liên quan đến bản chất chỉ truyền theo đường
thẳng của ánh sáng. Do đó, loại điều khiển IR có tầm hoạt động chỉ có
khoảng 10 mét và cũng không thể truyền qua các bức tường hoặc vòng
qua các góc. Chúng chỉ hoạt động tốt khi ta trỏ thẳng hay gần vị trí bộ
thu của vật dụng cần điều khiển.

Ngoài ra, nguồn ánh sáng hồng ngoại có ở khắp nơi như ánh sáng
mặt trời, bóng đèn huỳnh quang, từ cơ thể con người… nên có thể làm
cho điều khiển IR bị nhiễu sóng. Để tránh hiện tượng này, người ta phải
cài đặt cho bộ lọc của các bộ phận thu chỉ thu nhận những bước sóng đặc
-8-

biệt hoặc tần số riêng biệt của ánh sáng hồng ngoại phù hợp với nó và
chặn ánh sáng ở bước sóng khác để hạn chế sự nhiễu sóng một cách tối
đa.

1.1.2 Điều khiển từ xa bằng tần số vô tuyến (RF)

Là loại điều khiển từ xa xuất hiện đầu tiên và đến nay vẫn giữ một
vai trò quan trọng và phổ biến trong đời sống. Nếu điều khiển IR chỉ
dùng trong nhà thì điều khiển RF lại dùng cho nhiều vật dụng bên ngoài
như các thiết bị mở cửa gara xe, hệ thống báo hiệu cho xem các loại đồ
chơi điện tử từ xa thậm chí kiểm soát vệ tinh và các hệ thống máy tính
xách tay và điện thoại thông minh…

Hình 1.2: Một số điều khiển từ xa.

Với loại điều khiển này, nó cũng sử dụng nguyên lý tương tự như
điều khiển bằng tia hồng ngoại nhưng thay vì gửi đi các tín hiệu ánh
sáng, nó lại truyền sóng vô tuyến tương ứng với các lệnh nhị phân. Bộ
phận thu sóng vô tuyến trên thiết bị được điều khiển nhận tín hiệu và giải
mã nó. So với loại điều khiển IR, lợi thế lớn nhất của nó chính là phạm
-9-

vi truyền tải rộng, có thể sử dụng cách thiết bị cần điều khiển đến hơn 30
mét đồng thời có thể điều khiển xuyên tường, kính…

Tuy nhiên, nó cũng có hạn chế đó là tín hiệu vô tuyến cũng có


mặt khắp nơi trong không gian do hàng trăm loại máy móc thiết bị dùng
các tín hiệu vô tuyến tại các tần số khác nhau. Do đó, người ta tránh
nhiễu sóng bằng cách truyền ở các tần số đặc biệt và nhúng mã kỹ thuật
số địa chỉ của thiết bị nhận trong các tín hiệu vô tuyến. Điều này giúp bộ
thu vô tuyến trên thiết bị hồi đáp tín hiệu tương ứng một cách chính xác.

1.1.3 Điều khiển bằng máy tính.

Công ty Centronics, từng nổi tiếng thế giới với vị trí hàng đầu
trong số nhà sản xuất máy in kiểu ma trận, đã thiết kế ra cổng song song
(LPT) nhằm mục đích nối máy tính PC với máy in. Về sau, cổng song
song đã phát triển thành một tiêu chuẩn không chính thức. Tên gọi của
cổng song song bắt nguồn từ kiểu dữ liệu truyền qua cổng này: các bit
dữ liệu được truyền song song hay nói cụ thể hơn là Byte nối tiếp còn Bit
song song.

Hình 1.3: Cổng LPT trên máy tính.

Việc điều khiển thiết bị thông qua cổng này cũng được phát triển
rất nhiều nhưng chủ yếu là điều khiển thông qua một con IC.
- 10 -

Ngoài ra trong nước ta cũng có rất nhiều đề tài điều khiển thiết bị
nhưng chủ yếu thông qua cổng COM sử dụng IC của tác giả Cao Văn
Hưởng đến từ Long Hải, email: caovanhuong@webdien.com, em xin
giới thiệu về chương trình này:

Phần mềm dùng điều khiển các thiết bị điện bằng máy tính. Nó có
thể điều khiển tối đa 20 thiết bị điện qua chuẩn giao tiếp RS232 (giao
tiếp qua cổng COM), có thể sử dụng cáp chuyển USB sang cổng COM.

Hình 1.4: Giao diện chương trình điều khiển qua cổng COM.

Đây là mạch ngoại vi của nó, hình chỉ vẽ phần giao tiếp công suất
chỉ có 1 role. Nếu bạn muốn sử dụng bao nhiêu đèn thì vẽ thêm vào chừng
đó cái role, đèn số 1 nối với RB0, đèn số 2 nối với RB1 cứ thế thì nó lần
lượt cho đến RD .
- 11 -

Hình 1.5: Mạch ngoại vi


- 12 -

Kết luận: Qua những sản phẩm trên thì ta thấy nhu cầu điều
khiển thiết bị từ xa là cực kì cần thiết cho con người, các loại điều khiển
từ xa sử dụng hồng ngoại và vô tuyển có nhược điểm riêng của nó dẫn
đến không được linh hoạt khi sử dụng, ví dụ như ở trên lầu mà muốn
điều khiển một thiết bị dưới nhà thì rất khó khăn, và nó cũng không kiểm
tra được trạng thái của thiết bị, giải quyết các vấn đề trên thì chúng tôi sử
dụng mạng Internet điều khiển vì lợi thế mạng Internet rất dễ lắp đặt và
sử dụng, đặc biệt là Wireless hoặc 3G.

1.2 Cơ bản về cổng LPT

1.2.1 Giới thiệu.

LPT là viết tắt của chữ Line Print Terminal, giao tiếp của cổng
này là giao tiếp song song nhằm mục đích kết nối máy tính với máy in.

Cho đến nay cổng song song có mặt ở hầu hết các máy tính. Cổng
song song còn được gọi là cổng máy in hay cổng Centronisc. Cấu trúc
cổng song song rất đơn giản bao gồm 25 chân: với 8 đường truyền dữ
liệu, 8 đường dẫn mass chung, 4 đường để chuyển các tín hiệu điều
khiển, và 5 đường để thu ngược trạng thái dữ liệu lại.

Tên gọi là cổng song song được bắt nguồn từ cách truyền dữ liệu
của cổng này: 8 bit dữ liệu được truyền song song (ra 8 chân trên LPT)
cùng một lúc hay nói cách khác là cổng LPT truyền byte nối tiếp, còn
truyền bit thì song song.

Vì đây là cổng được thiết kế chuyên để điều khiển, nên khi sử


dụng cổng này để điều khiển các thiết bị thì có được nhiều thuận lợi hơn
so với sử dụng các cổng khác.

Khoảng cách cực đại giữa cổng song song trên máy tính và các
thiết bị ngoại vi bị hạn chế vì điện dung kí sinh và hiện tượng cảm ứng
giữa các đường dẫn có thể là biến dạng tín hiệu truyền đi, dẫn đến tín
hiệu bị sai lệch không còn chính xác nữa. Khoảng cách giới hạn tối đa là
8m, nhưng thông thường chỉ khoảng từ 1,5m – 2m. Khi khoảng cách
ghép nối trên 3m thì nên xoắn các đường dây dẫn tín hiệu với đường nối
- 13 -

đất theo kiểu cặp dây xoắn hoặc dùng loại cáp dẹt nhiều sợi trong đó
mỗi đường dẫn dữ liệu nằm giữa hai đường nối mass.

Tốc độ truyền dữ liệu qua cổng song song phụ thuộc rất nhiều vào
linh kiện phần cứng được sử dụng. Trên lý thuyết tốc độ truyền đạt dữ
liệu có giá trị khoảng 1Mbit/s, nhưng với khoảng cách truyền bị hạn chế
trong phạm vi 1m, ngoài khoảng cách này thì tốc độ truyền bị giảm đáng
kể, với nhiều mục đích sử dụng thì khoảng cách này hoàn toàn thoả
đáng, do đó một điểm cần lưu ý là: việc tăng khoảng cách truyền dữ liệu
qua cổng song song không chỉ làm tăng khả năng gây lỗi đối với đường
dữ liệu được truyền mà còn làm tăng chi phí của đường dẫn.

1.2.2 Cấu trúc cổng LPT:

Cổng song song có 2 loại:

- Cổng song song có 36 chân.

- Cổng song song có 25 chân.

Ngày nay, loại cổng song song có 36 chân đã không còn được sử
dụng, hầu như chỉ sử dụng cổng song song 25 chân, nên ta chỉ cần quan
tâm đến loại này.

Hình 1.6: Sơ đồ cổng LPT 25 chân.

Chân số Tên của tín hiệu

1 Strobe

2 D0

3 D1

4 D2

5 D3
- 14 -

6 D4

7 D5

8 D6

9 D7

10 Acknowledge

11 Busy

12 Paper Empty

13 Select

14 Auto Linefeed

15 Error

16 Reset

17 Select Input

18-25 Group

Bảng 1: Tín hiệu từ các chân

Sau đây chúng ta đi sâu vào tìm hiểu chức năng của từng chân:

- Strobe (1): Với một mức logic thấp ở chân này, máy tính thông
báo cho máy in biết có một byte đang sẵn sàng trên các đường
dẫn tín hiệu để được truyền.

- D0 đến D7: Các đường dẫn dữ liệu, 8 bit dữ liệu được truyền
song song ra tám chân này (mức điện áp 0-5V).

- Acknowledge: với một mức logic thấp ở chân này, máy in thông
báo cho máy tính biết là đã nhận được kí tự vừa gửi và có thể tiếp
tục nhận.

- Busy (bận – 11): máy in gửi đến chân này mức logic cao trong khi
đang đón nhận hoặc in ra dữ liệu để thông báo cho máy tính biết
là các bộ đệm trong máy tính biết là đã bị đầy hoặc máy in trong
trạng thái Off-line.
- 15 -

- Paper empty (hết giấy – 12): Mức cao ở chân này có nghĩa là giấy
đã dùng hết.

- Select (13): Một mức cao ở chân này, có nghĩa là máy in đang
trong trạng thái kích hoạt (On-line).

- Auto Linefeed (tự nạp dòng): Có khi còn gọi là Auto Feed. Bằng
một mức thấp ở chân này máy tính PC nhắc máy in tự động nạp
một dòng mới mỗi khi kết thúc một dòng.

- Error (báo lỗi): Bằng một mức thấp ở chân này, máy in thông báo
cho máy tính là đã xuất hiện một lỗi, chẳng hạn kẹt giấy hoặc máy
in đang trong trạng thái Off-Line.

- Reset (đặt lại): Bằng một mức thấp ở chân này, máy in được đặt
lại trạng thái được xác định lúc ban đầu.

- Select Input: bằng một mức thấp ở chân này, máy in được lựa
chọn bởi máy tính.

Như vậy cáp nối giữa máy in và máy tính bao gồm 25 sợi, nhưng
không phải tất cả điều được sử dụng mà trên thực tế chỉ có 18 sợi được
nối với các chân cụ thể. Còn lại là nhửng đường dây mass có thể dùng
chung.

Qua cách mô tả như trên thì ta có thể thấy các chân trên cổng
song song có thể chia thành 3 nhóm:

- Các đường truyền dữ liệu (8 đường) dùng để truyển các kí tự


riêng lẻ ra máy in.

- Các đường điều khiển dùng để xuất tín hiệu điều khiển từ PC ra
máy in.

- Các đường trạng thái dùng để PC lấy tín hiệu cập nhật trạng thái
từ máy in.

Từ cách mô tả các tín hiệu và mức tín hiệu ta có thể nhận thấy là:
các tín hiệu Acknowledge, Auto Linefeed, Error, Reset và Select Input
- 16 -

kích hoạt ở mức thấp. Thông qua chức năng của các chân này ta cũng
hình dung được cách điều khiển cổng song song.

Để có thể ghép nối các thiết bị ngoại vi, các mạch điện ứng dụng
trong điều khiển với cổng song song ta phải tìm hiểu cách trao đổi với
các thanh ghi thông qua cách sắp xếp và địa chỉ các thanh ghi cũng như
phần mềm.
Các đường dẫn của cổng song song được nối với ba thanh ghi 8
bit khác nhau:
- Thanh ghi dữ liệu (data).
- Thanh ghi trạng thái (status).
- Thanh ghi điều khiển (control).

Hình 1.7: Thanh ghi dữ liệu

Hình 1.8: Thanh ghi điều khiển


- 17 -

Hình 1.9: Thanh ghi trạng thái

Như sơ đồ trên đã trình bày 8 đường dữ liệu dẫn tới thanh ghi dữ liệu
còn 4 đường dẫn điều khiển Strobe, Auto Linefeed, Reset, Select Input dẫn
tới thanh ghi điều khiển.

Năm đường dẫn trạng thái Acknowledge, Busy, Paper Empty, Select,
Error tới thanh ghi trạng thái.

Thanh ghi dữ liệu hay 8 đường dẫn dữ liệu không phải là đường dẫn 2
hướng trong tất cả các loại máy tính nên dữ liệu chỉ có thể được xuất ra qua các
đường dẫn này cụ thể từ D0 đến D7.

Thanh ghi điều khiển hai hướng, hay nói chính xác hơn: Bốn bit có giá
trị thấp được sắp xếp ở các chân 1, 14, 16, 17. Thanh ghi trạng thái chỉ có thể
được đọc và vì vậy được gọi là một hướng.

Ta có thể trao đổi với 3 thanh ghi này như thế nào? Hệ điều hành DOS
dự tính đến bốn cổng song song và đặt tên là: LPT1, LPT2, LPT3 và LPT4. Tuy
vậy, hầu hết các máy tính PC đều chỉ có nhiều nhất hai cổng song song và cho
đến nay với lí do giảm giá thành, cổng song song chỉ còn lại một.

Về mặt phần cứng, các nhà sản xuất đã dự tính bốn nhóm, mỗi nhóm 3
địa chỉ, để trao đổi với từng ô nhớ trên thanh ghi của mỗi giao diện. Ta có thể
nhận thấy các địa chỉ thanh ghi nằm kế tiếp nhau. Khi bật máy tính, BIOS kiểm
tra kế tiếp nhau các địa chỉ được ghi trong bảng và khẳng định xem trên máy có
trang bị mấy cổng song song.
- 18 -

Các cổng song song được BIOS tìm thấy sẽ được sắp xếp theo các tên
mà DOS đã chỉ định là: LPT1, LPT2… Điều này giải thích vì sao trong các tài
liệu khác nhau các địa chỉ được ấn định cho LPT1, LPT2… lại khác nhau. Phần
lớn trong các phiên bản của BIOS chạy trong giai đoạn khởi động (boot phase)
của máy tính, trong đó phần cứng của máy tính được kiểm tra và cấu hình của
máy tính, cụ thể ở đây địa chỉ các giao diện song song, đang tồn tại được xuất
ra màn hình (trong một khung hình chữ nhật). Ta có thể làm dừng quá trình
khới động máy tính bằng phím <Pause> để quan sát kỹ các thông số được liệt
kê trong bảng.

Cổng LPT Địa chỉ thanh ghi Địa chỉ thanh ghi Địa chỉ thanh

dữ liệu trạng thái ghi điều khiển

LPT1 3BCh 3BDh 3BEh

LPT2 378h 379b 37Ah

LPT3 278h 279b 27Ah

LPT4 2BCh 2BDh 2BEh

Bảng 2: Địa chỉ tham khảo của các thanh ghi trên cổng LPT (tuỳ theo máy tính
các địa chỉ này có thể khác nhau).

Ngoài ra địa chỉ của cổng LPT còn có thể tính theo cách trình bày dưới đây:

Register LPT1 LPT2

Data register (Base Address + 0) 0x378 0x278

Status register (Base Address + 1) 0x379 0x279

Control register (Base Address + 2) 0x37a 0x27a

Bảng 3: Cách tính địa chỉ.

1.3 Cơ bản về cổng USB

Hiện nay khi chúng ta mua máy vi tính bao giờ cũng có kết nối USB
(Universal Serial Bus ) ở đằng trước và mặt sau của máy tính. Những kết nối
USB này cho phép chúng ta gắn mọi thiết bị từ chuột, bàn phím, máy in một
- 19 -

cách dễ dàng và nhanh chóng. Hệ điều hành cũng hỗ trợ rất tốt cổng USB, do
đó cài đặt Driver của thiết bị cũng rất nhanh chóng và dễ dàng. Khi so sánh
những cách khác để kết nối với máy tính như: cổng song song, cổng nối tiếp và
những Card riêng biệt khác mà chúng ta cắm bên trong máy vi tinh thì thiết bị
USB đơn giản đến rất nhiều

1.3.1 Giới thiệu

Máy in được nối với máy tính qua cổng song song trong khi hầu
hết các máy tính chỉ được trang bị một cổng này. Sẽ rất khó khăn nếu sử
dụng thêm ổ Zip, luôn đòi hỏi tốc độ kết nối cao với máy tính và cần
thiết phải dùng cổng song song.

Modem được nối với máy tính qua cổng nối tiếp giống như một
vài dạng thiết bị khác như Digital Camera, Palm Pilots trong khi mỗi
máy tính thường chỉ có hai cổng nối tiếp và chúng rất chậm.

Các thiết bị đòi hỏi các kết nối nhanh hơn như các Card đặc biệt
được cắm trực tiếp vào khe cắm (Slot) trên bo mạch. Thực tế số lượng
các khe cắm (Slot) là có hạn và cần phải cài đặt các phần mềm cho thiết
bị này.

Mục đích của USB là giải quyết các vấn đề của người sử dụng khi
các cổng kết nối trên không hiệu quả. USB cung cấp cho người sử dụng
khả năng kết nối chuẩn, dễ dàng với 127 thiết bị trên cùng một máy tính.
Mọi thiết bị ngoại vi hiện nay đều có thể kết nối trên cùng một phiên bản
USB chẳng hạn như: máy in, máy quét ảnh, chuột, Joystick, Digital
Camera, Webcam, Modem, loa, điện thoại, Network Connection, thiết bị
lưu trữ thông tin (ổ Zip)...

1.3.2 Các đặc tính của cổng USB

Các đặc điểm của USB bao gồm:

 Máy tính hoạt động như một Host.

 Có tới 127 thiết bị có thể kết nối vào máy tính bao gồm cả nối trực
tiếp hay qua USB Hub.
- 20 -

 Các cáp USB (USB Cable) của từng thiết bị có thể dài tới 5m hay
30m với Hub.

 Chuẩn USB 2.0 cho phép truyền dữ liệu trên Bus tới tốc độ 480
Mbps.

 Chuẩn USB 3.0 có tốc độ truyền nhanh gấp 10 lần so với chuẩn USB
2.0. Tốc độ có thể đạt 5Gbps

 Một cáp USB có hai dây cung cấp điện và một đôi dây xoắn truyền
dữ liệu.

 Trên dây cung cấp điện năng, điện áp có thể lên tới 500mA - 5V.

 Các thiết bị sử dụng ít điện năng được cung cấp điện năng trực tiếp từ
Bus. Các Hub có thể cung cấp điện năng cho các thiết bị nối với nó
từ nguồn điện riêng của chúng.

 Các thiết bị USB có khả năng hoán đổi nhanh, có thể cắm vào hay rút
ra khỏi Bus bất kỳ lúc nào.

 Các thiết bị USB có thể đặt ở chế độ “ngủ” (Sleep Mode) khi máy
tính chuyển sang chế độ Power-Saving.

 Các thiết bị nối với cổng USB dùng cáp USB để truyền tải dòng điện
hay dữ liệu. Khi máy tính hoạt động, nó truy vấn tới tất cả các thiết bị
nối vào Bus và gán cho mỗi thiết bị một địa chỉ. Quá trình này được
gọi là liệt kê các thiết bị. Máy tính cũng sẽ tìm ra cách truyền dữ liệu
của từng thiết bị:

 Interrupt: Các thiết bị như bàn phím gửi lượng dữ liệu rất nhỏ và ngắt
đoạn sẽ được chọn kiểu Interrupt Mode.

 Bulk: Các thiết bị như máy in thường nhận những gói dữ liệu lớn,
dùng kiểu Bulk Transfer Mode. Từng đoạn dữ liệu (64 Byte) được
gửi tới máy in và được kiểm tra tính chính xác.

 Isochronous: Các thiết bị truyền dữ liệu theo dạng Stream như loa sẽ
dùng Isochronous Mode. Dữ liệu tức thời được truyền giữa thiết bị và
máy tính và không có cơ chế sửa lỗi.
- 21 -

Máy tính cũng có thể gửi đi các lệnh hay truy vấn các thông số
với các gói Control Packet. Khi một thiết bị được máy tính liệt kê, máy
tính sẽ giành tới 90% băng thông (Bandwidth) phục vụ các yêu cầu của
các thiết bị kiểu Interrupt và Isochronous. Sau khi dùng 90% của 480
Mbps băng thông, máy tính sẽ từ chối các truy nhập của bất kỳ thiết bị
kiểu Interrupt hay Isochronous nào khác. Các Control Packet và thiết bị
kiểu Bulk Transfer sẽ sử dụng khoảng 10% băng thông còn lại.

USB phân chia băng thông thành các Frame và máy tính sẽ điều
khiển các Frame này. Mỗi Frame chứa 1.500 Byte và Frame mới được
sinh ra sau mỗi mili giây. Trong một Frame, các thiết bị kiểu
Isochronous và Interrupt phân chia thành các khe nên chúng đảm bảo
được băng thông cần thiết trong khi các thiết bị Bulk Transfer và Control
Packet sử dụng phần băng thông còn lại.

1.3.3 Các chuẩn USB

Trong lịch sử phát triển của mình, USB có 4 loại chuẩn đã được
nghiên cứu và phát triển là: USB 1.0 năm 1996, USB 1.1 năm 1998,
USB 2.0 năm 2000 và USB 3.0 năm 2008. Hai chuẩn đầu tiên không còn
được sử dụng nữa trong khi đó USB 2.0 đang được sử dụng khá rộng rãi
hiện nay. USB 3.0 còn rất mới mẻ nên chưa phổ biến. Mặc dù vậy, loại
chuẩn này hứa hẹn sẽ được sử dụng rộng rãi trong tương lai.

Hình 1.10: Sơ đồ chân của USB

Hình 1.11: USB 2.0


- 22 -

Hình 1.12: USB 3.0

1.3.4 Các đặc trƣng của cổng USB

USB cho phép trao đổi dữ liệu giữa máy tính và thiết bị một cách
nhanh chóng. Thiết bị có cổng USB tiêu tốn rất ít điện năng. USB được
áp dụng chủ yếu cho các thiết bị lưu trữ di động như ổ cứng ngoài, USB
Flash và chúng đều rất linh động. USB dùng chuẩn Plug-and-play nên
không phải khởi động lại máy tính mỗi lần cắm thiết bị USB (điều rất dễ
gặp khi sử dụng các thiết bị ngoại vi theo cổng PS/2).

Hình 1.13: Card USB

1.4 Lập trình Socket:

1.4.1 Giới thiệu:

Khái niệm Socket xuất hiện lần đầu tiên vào khoảng năm 1980 tại
trường đại học Berkeley Mỹ. Là một chương trình được thiết kế để giúp
- 23 -

máy tính nối mạng ở khắp mọi nơi có thể trao đổi thông tin với nhau. Sự
ra đời của Socket gắn liền với nhu cầu truyền thông của máy tính.

Socket là một giao diện lập trình ứng dụng (API-Application


Programming Interface). Nó được giới thiệu lần đầu tiên trong ấn bản
UNIX – BSD 4.2 dưới dạng các hàm hệ thống theo cú pháp ngôn ngữ C
(socket(), bind(), connect(), send(), receive(), read(), write(), close(), …).
Ngày nay, socket được hỗ trợ hầu hết trong các hệ điều hành như MS
Window, Linux và được sử dụng trong nhiều ngôn ngữ lập trình khác
nhau như: C, C++, Java, Visual Basic, Visual C++ …

Trong phần này chúng ta sẽ tìm hiểu về sự phát triển các ứng
dụng mạng. Ta đã biết lõi (core) của một ứng dụng mạng bao gồm một
cặp chương trình – một chương trình máy khách (Client program) và một
chương trình máy chủ (Server program). Khi cả hai chương trình được
thi hành, tiến trình (process) máy khách và máy chủ được tạo ra, và hai
tiến trình này liên lạc với nhau bằng cách đọc từ và ghi đến những
socket. Khi tạo ra một ứng dụng mạng, nhiệm vụ của chúng ta là viết mã
cho cả hai chương trình máy khách (Client) và máy chủ (Server).
Có hai loại ứng dụng Client-Server. Một loại là những ứng dụng
Client-Server mà nó được hiện thực trên những giao thức chuẩn đã được
định nghĩa trong các RFC (Request for Comments). Với những ứng dụng
kiểu này thì chương trình máy chủ và máy khách đều phải phù hợp với
những quy tắc đã được nêu ra trong RFC. Ví dụ, một chương trình máy
khách có thể hiện thực một chương trình FTP client, được định nghĩa
trong [RFC 959], và chương trình máy chủ thì hiện thực một FTP server,
cũng phải được định nghĩa trong [RFC 959]

Loại còn lại của một ứng dụng Client-Server là một ứng dụng
Server-Client giữ độc quyền (proprietary). Trong loại ứng dụng này thì
chương trình máy khách lẫn máy chủ đều không cần phải phù hợp với
bất cứ RFC nào. Một nhà phát triển đơn lẻ có thể tạo ra cả hai chương
trình Client và Server, và nhà phát triển này hoàn toàn điều khiển tất cả
những gì có trong mã lập trình. Nhưng bởi vì mã lập trình không được
- 24 -

hiện thực trên giao thức chuẩn, nên những nhà phát triển độc lập khác sẽ
không thể nào phát triển mã để có thể tương thích với ứng dụng này. Khi
phát triển một ứng dụng kiểu này, những nhà phát triển phải chú ý để
không sử dụng những cổng thông dụng đã được định nghĩa trong các
RFC.
Trong phần kế tiếp ta sẽ nghiên cứu những điểm mấu chốt để phát
triển một ứng dụng Client-Server giữ độc quyền. Trong quá trình phát
triển, một trong những quyết định quan trọng mà nhà phát triển cần phải
làm là ứng dụng sẽ chạy trên TCP hay trên UDP.

- TCP là từ viết tắt của "Transmission Control Protocol" tạm dịch


là Cách thức điều khiển truyền. TCP phụ trách việc truyền và
nhận dữ liệu, giao thức này có định hướng kết nối (connection-
oriented) , TCP giúp cho lớp ứng dụng (Application layer) sử
dụng lớp IP (Internet Protocol, tạm dịch Giao thức liên mạng)
một cách trong suốt. Điều này có nghĩa là lớp ứng dụng không
cần biết đến phần cứng sẽ làm việc gì, ra sao, mà chỉ cần quan
tâm đến việc xử lý dữ liệu của riêng mình.

 TCP cũng đảm trách việc nhận đúng dữ liệu và gửi dữ liệu
đó đến đúng chương trình cần nhận. TCP còn có chức năng
kiểm tra và sửa lỗi thông qua việc đồng bộ hoá
(synchronize) thông tin 2 đầu truyền dữ liệu và lời nhận
biết (acknowledgement) từ phía nhận dữ liệu, do đó dữ liệu
truyền trên giao thức này đảm bảo chính xác, nhược điểm
của giao thức này là chậm hơn UDP

Hình 1.14: Giao thức TCP/IP.


- 25 -

- UDP là chữ viết tắt của "User Datagram Protocol" đây là một
giao thức không đòi hỏi kết nối trước và gởi đi những gói dữ liệu
độc lập từ hệ thống này đến hệ thống kia, mà không hề bảo đảm
dữ liệu có được nhận đầy đủ hay không. Ưu điểm của giao thức
này là tốc độ truyền nhanh, nhưng dữ liệu thì không được đảm
bảo.

Hình 1.15: Giao thức UDP.

Trong nghiên cứu này thì ta chỉ nghiên cứu thực hiện một ứng dụng
điều khiển thiết bị qua mạng TCP/IP.

Ứng dụng này được viết bằng ngôn ngữ Java, ta chọn Java vì những
lý do sau đây:

 Thứ nhất, những ứng dụng mạng kiểu này sẽ gọn gàng hơn
khi viết bằng Java; với Java sẽ có ít dòng mã hơn, và mỗi
dòng có thể dễ dàng giải thích với cả những người lập trình
mới bắt đầu.

 Thứ hai, những chương trình Client-Server lập trình bằng


Java đã gia tăng ngày càng thông dụng, và nó có thể trở
thành tiêu chuẩn cho lập trình mạng trong vài năm tới. Java
có cơ chể bẫy lỗi rất linh hoạt mà có thể giải quyết hầu hết
các lỗi xảy ra trong quá trình xuất/nhập và những hoạt
động mạng, và khả năng phân luồng (thread) mạnh cung
cấp những phương pháp đơn giản để hiện thực những
Server mạnh mẽ.

 Thứ ba, JAVA là một ngôn ngữ độc lập có thể hỗ trợ và
thích hợp trên nhiều hệ điều hành khác nhau.
- 26 -

1.4.2 Lập trình Socket với TCP

Ta đã biết rằng những tiến trình chạy trên những máy khác nhau
có thể liên lạc với nhau bằng cách gởi những thông điệp đến socket.
Chúng ta có thể nói một cách đơn giản rằng mỗi một tiến trình thì tương
tự như một căn nhà và socket của tiến trình đó thì tương tự như là cánh
cửa nhà. Có thể nói socket là cánh cửa giữa tiến trình ứng dụng
(Application Process) và TCP. Những nhà phát triển ứng dụng có thể
kiểm soát mọi thứ bên phía lớp Application của Socket.

Bây giờ ta hãy xét kĩ hơn sự tương tác giữa chương trình Client
và chương trình Server. Máy khách Client phải có nhiệm vụ khởi tạo sự
giao tiếp với Server. Để Server có thể trả lời lại sự giao tiếp ban đầu này
thì Server cũng phải luôn luôn sẳn sàng. Điều này bao gồm 2 yếu tố. Đầu
tiên, chương trình bên Server phải đang hoạt động, nó phải đang chạy
như một tiến trình trước khi máy khách tiến hành sự giao tiếp đầu tiên.
Thứ hai, chương trình bên server phải có sẳn một số cổng (port) để có thể
tiếp đón (welcome) những giao tiếp khởi tạo từ bên phía client. Sử dụng
sự tương tự như căn nhà/cánh cửa đối với process/socket như đã nói ở
trên thì ta có thể xem như sự khởi tạo giao tiếp đầu tiên bên phía Client
như là một sự gõ cửa.

Khi một tiến trình (process) bên Server đang chạy, một tiến trình
bên Client có thể khởi tạo nên một TCP connection. Điều này được thực
thi bên chương trình máy client bằng cách tạo ra một đối tượng socket
(ta gọi nó là clientSocket). Khi một máy khách tạo ra một đối tượng
socket thì nó sẽ chỉ đến địa chỉ của tiến trình máy chủ, theo cách gọi tên,
thì đó là địa chỉ IP của máy Server. Và cùng lúc tạo ra đối tượng
clientSocket thì TCP ở client thiết lập kết nối qua Three-way handshake
và thiết lập một TCP connection với server. Three-way handshake này
thì hoàn toàn ẩn giấu với cả chương trình server lẫn chương trình client.

Trong suốt quá trình three-way handshake, tiến trình bên máy
khách sẽ “gõ vào cổng” của tiến trình máy chủ. Khi Server nhận được sự
gõ cửa này, nó sẽ tạo ra một cánh cửa mới (thật ra là một socket mới) để
- 27 -

mà phục vụ cho từng client chuyên biệt. Khi một máy khách gõ cửa,
chương trình sẽ viện dẫn phương thức accept() của welcomeSocket,
phương thức này sẽ tạo ra một socket khác cho client. Vào cuối quá trình
handshaking này thì một kết nối TCP sẽ được thiết lập giữa socket của
client và một socket mới của server. Từ đây trở về sau, ta sẽ gọi new
socket này bằng tên gọi là “connection socket”

TCP connection đuợc xem như là một ống dẫn ảo giữa client’s
socket và server's connection socket. Lúc này, tiến trình bên máy khách
có thể gửi những byte tuỳ ý đến socket của nó, TCP bảo đảm rằng tiến
trình bên server sẽ nhận (thông qua connection socket) mỗi byte theo
trình tự đã gửi. Hơn thế nữa, ngược lại tiến trình bên máy khách cũng có
thể nhận byte từ socket của nó và tiến trình bên server cũng có thể gửi
byte đến connection socket của nó.

Bởi vì socket đóng một vai trò quan trọng trong những ứng dụng
client-server, cho nên những ứng dụng client-server thường được gọi là
socket programming. Trước khi đi đến những vấn đề khác, ta sẽ nói về
khái niệm luồng (stream). Theo nghĩa đen luồng là một dòng lưu chuyển.
Theo nghĩa kỹ thuật, một luồng là một lộ trình qua đó dữ liệu di chuyển
đi vào hay đi ra một tiến trình (process). Mỗi một luồng thì có thể là một
luồng vào (input stream) hay là một luồng xuất (output stream) cho một
tiến trình. Nếu một luồng là luồng vào thì nó sẽ đính kèm với những
nguồn vào của một tiến trình, ví dụ như là một công cụ nhập chuẩn
(keyboard) hoặc một socket mà dữ liệu đi vào nó từ network. Nếu một
luồng là luồng xuất, thì nó sẽ được đính kèm với một vài nguồn xuất của
tiến trình, ví dụ như là một công cụ xuất chuẩn (màn hình) hoặc một
socket mà đi ra từ nó dữ liệu sẽ đi vào network.

1.5. Tiểu kết.

Trên đây chúng ta đã tìm hiểu sơ lược về lập trình socket bằng ngôn ngữ
JAVA và cấu trúc cũng như cách điều khiển cổng song song và cổng USB trên
máy tính.
- 28 -

Từ đó chúng ta có được sự hiểu biết về cổng song song, cổng USB và


cách thức giao tiếp của các socket với nhau. Dựa vào đó chúng ta tiếp tục xây
dựng công cụ điều khiển thiết bị từ xa qua mạng TCP/IP

Hình 1.16: Kết nối Server –Client.


- 29 -

CHƢƠNG 2: ĐIỀU KHIỂN THIẾT BỊ QUA MẠNG TCP/IP

2.1 Điều khiển cổng LPT.

2.1.1 Cách thức điều khiển cổng LPT

Sử dụng thư viện jnpout32pkg.dll

Đây là một thư viện để giao tiếp với cổng LPT trên máy tính
thông qua port của chính nó.

Trong thư viện này chứa hai function quan trọng dùng để sử dụng
trong công cụ này:

1) Inp32(),hàm dùng để đọc dữ liệu từ cổng LPT.


2) Out32(),hàm dùng để ghi dữ liệu ra cổng LPT.

*Sơ lƣợc về thƣ viện này:

Đây là một phiên bản sửa đổi từ phiên bản inpout32.dll, để phù
hợp hơn khi sử dụng JNI (Java Native Interface).

Bản thân ngôn ngữ Java không tự gọi được các hàm viết bằng các
ngôn ngữ lập trình khác. Vì thế, trong Java Platform có cung cấp Java
Native Interface (JNI) cho phép tích hợp chương trình viết bằng Java với
những services được tạo ra trên nền tảng khác. JNI định nghĩa các chuẩn
đặt tên và cách thức gọi hàm tích hợp trong JVM.

2.1.2 Thiết kế mạch giao tiếp cổng LPT với thiết bị.

Bƣớc 1: Chuẩn bị các linh kiện sau:


- 30 -

Hình 2.1: Đèn LED.

Hình 2.2: Bảng mạch.


- 31 -

Hình 2.3: Cáp LPT 25 sợi.

Hình 2.4: Cổng LPT đực.


- 32 -

Hình 2.5: Điện trở.

Bƣớc 2: Thiết kế mạch theo sơ đồ sau:

Hình 2.6: Sơ đồ mạch điện.


- 33 -

Lƣu ý: tuỳ theo hiệu điện thể của bóng đèn LED mà sử dụng điện
trở cho phù hợp, không nhất thiết phải là điện trở 470 Ohm.

2.1.3 Bật tắt thiết bị.

Ta có 8 bóng đèn được hàn vào hàn vào cổng D0 cho đến D7, như
vậy 8 bóng đèn này tương tự như 8 bit, để bật hay tắt 1 bóng đèn nào đó
ta chỉ cần thay đổi trạng thái của chân tương ứng với đèn đó, nghĩa là bit
có giá trị 0 là tắt, giá trị 1 là bật.

Tương ứng với bật hết 8 bóng đèn là một số nhị phân như sau:

11111111

Số nhị phân này tương đương với 255 hệ thập phân, có thể biểu
diễn trạng thái của bóng đèn qua bảng sau:

LED Nhị phân Thập phân

LED 1 00000001 1

LED 2 00000010 2

LED 3 00000100 4

LED 4 00001000 8

LED 5 00010000 16

LED 6 00100000 32

LED 7 01000000 64

LED 8 10000000 128

Bảng 4: Tín hiệu điều khiển.

Nhưng nếu truyền ra những tín hiệu như vậy, thì một lúc ta chỉ có
thể bật tắt được một bóng đèn duy nhất mà thôi, để bật tắt được nhiều
- 34 -

bóng đèn cùng lúc, ta phải lấy được giá trị đang hiện hành cộng với giá
trị mới rồi mới gởi ra cổng LPT.

Ví dụ : Ta có đèn hai đèn 1 và 2, giả sử đèn 1 đang sang, ta muốn


bật thêm đèn thứ hai, thì ta phải lấy giá trị của đèn 1 (ở đây là 1) cộng
với giá trị của đèn 2 (ở đây là 2) thì đèn 1 và 2 sẽ sáng.

LED Nhị phân Thập phân

+ LED 1 00000001 1

LED 2 00000010 2

LED 1 + 2 00000011 3

Bảng 5: Điều khiển kết hợp.

Sau đó, gởi số này ra cổng LPT với địa chỉ là 378h (địa chỉ này có
thể xem trong bios), hoặc xem trong computer manage

Hình 2.7: Địa chỉ cổng LPT.


- 35 -

2.1.4 Thu tín hiệu thì cổng LPT.

Để thu tín hiệu từ cổng LPT ta làm khác hơn so với cách đọc từ
cổng này, vì ta phải đọc dữ liệu từ 2 thanh ghi còn lại (năm chân trạng
thái và ba chân điều khiển để lấy đủ dữ liệu từ 8 thiết bị.)

2.1.4.1 Đọc từ thanh ghi trạng thái.

Thanh ghi trạng thái có địa chỉ bằng địa chỉ cơ sở ( hay còn
gọi là địa chỉ của thanh ghi dữ liệu) cộng với một: Địa chỉ thanh
ghi dữ liệu ở đây là : 378 => địa chỉ thanh ghi trạng thái là 379.
Thanh ghi trạng thái này cũng đọc vào 8bit nhưng lấy 5bit cao.

Hình 2.8: 5bit cao.

Cơ chế xác định trạng thái nào bật tắt cũng giống như lúc
ghi dữ liệu ra cổng LPT, trạng thái 5 chân đều bật này tương
đương với số thập phân 248.

2.1.4.2 Đọc từ thanh ghi điều khiển.

Thanh ghi điều khiển có địa chỉ bằng địa chỉ cơ sở ( hay
còn gọi là địa chỉ của thanh ghi dữ liệu ) cộng với hai. Vậy địa chỉ
thanh ghi điều khiển ở đây là : 37A (các địa chỉ này sử dụng hệ
thập lục phân). Thanh ghi điều khiển này cũng đọc vào 8bit
nhưng lấy 4 bit thấp để sử dụng.

Hình 2.9: 4bit thấp


- 36 -

Do thanh ghi điều khiển có 2 chiều, nghĩa là dữ liệu có thể


được truyền ra và thu vào tuỳ ý, nên để đọc được dữ liệu ở thanh
ghi này, ta bắt buộc phải truyền vào một hiệu điện thế khoảng 5V.

2.2 Điều khiển qua mạng.

Công cụ dùng để lập trình là NetBeans phiên bản 7.0.1 và sử dụng JDK
phiên bản 1.7 trên Window 32bit

Gói java.net là gói chứa tất cả các lớp hỗ trợ cho lập trình mạng. Dưới
đây là cấu trúc của gói java.net:

Hình 2.10: Cấu trúc gói java.net

2.2.1 Phần Server.

Khi server khỏi động sẽ dùng hàm go() kiểm tra xem port của
mình(4444) có bị chương trình nào sử dụng hay không nếu có sẽ hiện ra
thông báo lỗi “Máy chủ không khỏi động được” ngược lại hiện ra câu
thông báo: “Máy chủ sẵn sàng”, và bắt đầu lắng nghe các Client kết nối
đến

Khung Client là một List để quản lý người dùng, khi có một User
kết nối đến, Server sẽ dùng hàm getMSG() để đọc tín hiệu đó, sau đó
Server dùng tiếp hàm CheckName() để kiểm tra đăng nhập trùng, nếu bị
trùng thì gởi thông báo lại cho Client, ngược lại thì hiển thị Client đó lên
khung Client và gởi thông báo có Client mới đăng nhập cho tất cả các
- 37 -

Client đang kết nối bằng hàm SendAll(), tại khung này, ta có thể chọn
Client này và điều khiển.

Khi một Client nào đó đăng xuất thì hiển thị lên” Client đã đăng
xuất” đồng thời gởi thông báo này đến tất cả các Client đang kết nối
thông qua hàm Exit().

Để điều khiển được Client thì phải chọn một Client tồn tại trong
bảng Client và ấn nút sổ ra giao diện điều khiển, 8 checkbox tương tự
với 8 thiết bị, và nút update để thu lại tín hiệu khi cần thiết.

Khi nhấn vào checkbox thứ nhất thì Server sẽ gởi đến Client yêu
cầu bật thiết bị thứ nhất lên, khi Client nhận được yêu cầu này thì sẽ
dùng hàm output() gởi đến cổng LPT (địa chỉ thanh ghi dữ liệu: 378)
một số kiểu short có giá trị là 1, khi đó bit thứ nhất của cổng này sẽ
chuyển trạng thái từ 0 sang 1, đèn sẽ sáng lên, tương tự như vậy cho các
thiết bị còn lại, và hồi đáp lại Server thông qua hàm sendMSG() để biết
là Client đã nhận được tín hiệu, Server nhận được tín hiệu này xử lý và
hiện lên thông báo.

Khi nhấn nút Check để cập nhật trạng thái, thì Server tiến hành
gởi tín hiệu cập nhật đến Client, Client nhận được tín hiệu này thì tiến
hành đọc trạng thái từ thanh ghi trạng thái (379) và thanh ghi điều khiển
(37A) của cổng LPT qua hàm input() sau đó gởi lại tín hiệu trạng thái lên
Server, Server hiển thị cho người xem.

Khi Server đóng lại sẽ gởi tín hiệu yêu cầu các Client đang kết nối
đóng theo thông qua hàm sendAll(“exit”)

2.2.2 Phần Client

Client có chức năng nhận tín hiệu từ Server, xử lý tín hiệu này và
điều khiển cổng LPT nằm ở máy Client.
- 38 -

Khi kết nối thì Client sẽ gởi thông báo mở Socket bằng hàm go(),
sau đó đợi Server đồng ý thì sẽ hiện lên thông báo thành công, ngược lại
sẽ hiện ra thông báo “lỗi kết nối”, nếu Name đã tồn tại thì hiện
ra thông báo “Tên này đã tồn tại” và yêu cầu kết nối lại.

Client lắng nghe tín hiệu từ Server, nếu có yêu cầu từ Server thì nó
xử lý và gởi trả lời lại cho Server thông qua hàm getMSG()

Client dùng hàm setPin() để bật tắt từng thiết bị một, để đọc tín
hiệu từ cổng LPT thì Client dùng hàm input(), sau khi đọc xong thì gởi
lên cho Server xử lý bằng hàm sendMSG().

Khi Client thoát thì gởi tín hiệu đóng kết nối đến Server, và Server
hiện ra thông báo “Client đăng xuất”.

2.2.3 Phần Remote

Phần này có chức năng điều khiển các thiết bị từ xa thông qua
Server và có giao diện tương tự Server.

Khi đăng nhập sẽ dùng hàm go() để kết nối, sau đó sẽ kiểm tra
xem đã có Client nào đăng nhập trước chưa, nếu có thì hiện lên khung
Client của Remote, từ đây có thể chọn Client để điều khiển.

Khi điều khiển một thiết bị, Remote sẽ gởi đến Server tín hiệu
chứa thông tin người gửi, người nhận và yêu cầu, Server sẽ xử lý tín hiệu
này và gởi tiếp tục cho người nhận kèm theo thông tin người gửi ( lý do
phải gởi kèm thông tin người gửi là để người nhận có cơ sở trả lời), sau
khi Client nhận được tín hiệu sẽ xử lý và gởi lại thông tin hồi đáp lên
Server kèm theo người nhận, Server sẽ chuyển tiếp lại cho người nhận
(người gửi lúc ban đầu). Để cho dễ hiểu có thể xem hình dưới đây:
- 39 -

Hình 2.11: Mô hình điều khiển Remote-Server-Client.

Remote có chức năng phân quyền, ví dụ như Remote đăng nhập


với tên Admin sẽ được quyền điều khiển toàn bộ các Client đang đăng
nhập, còn User01 chỉ điều khiển được các Client: may01, may02, User02
thì điều khiển được các Client: may03, may04

Hình 2.12: Mô hình tổng quan Remote- Server- Client

2.3 Tiểu kết.

Như vậy chúng ta đã phần nào xây dựng xong chương trình với các tính
năng được yêu cầu. Qua chương sau chúng ta sẽ đi sâu vào phần giới thiệu
chương trình và các chức năng chính.
- 40 -

CHƢƠNG 3: CHƢƠNG TRÌNH ĐIỀU KHIỂN THIẾT BỊ QUA


MẠNG TCP/IP

3.1. Giới thiệu chung.

Chương trình này cho phép quản lý nhiều thiết bị đồng thời, ngoài ra
chương trình còn có khả năng kiểm soát nhiều Client kết nối đến.

Chương trình gồm ba phần: phần Remote, phần Client và phần Server.
Remote là phần điều khiển thiết bị thông qua Server, Client là phần điều khiển
cổng LPT, Server là phần điều khiển và xử lý tín hiệu

Các thiết bị đó kết nối với Client thông qua cổng LPT. Server kết nối với
Client qua mạng Internet. Người dùng có thể ngồi trên Server điều khiển Client
hoặc ngồi trên máy Client truy cập vào Server điều khiển Client khác. Có hai
mô hình điều khiển là : Server - Client, Remote - Server - Client

3.2 Cài đặt và sử dụng chƣơng trình.

Để sử dụng được chương trình thì yêu cầu máy tính phải cài đặt phần
mềm JDK phiên bản tối thiểu là 1.7.

Copy file jnpout32pkg.dll vào thực mục C:\Windows\System32

Máy tính cần có cổng máy in để kết nối với các thiết bị.

Để sử dụng được chương trình, cần tham khảo khác bước sau:

- Bƣớc 1: Khỏi động Server, đợi thông báo “Máy chủ sẵn sàng”,
lúc này Server mới được thiết lập đầy đủ và lắng nghe Client kết
nối, nếu có thông báo “Máy chủ không khởi động được” thì cần
kiểm tra lại xem có port nào đụng với port của máy chủ không
- 41 -

Hình 3.1: Server khởi động thành công.

- Bƣớc 2: Client kết nối đến Server, chạy chương trình Client, nhấn
nút Connetc điền IP và port của Server, sau đó nhấn Connect, khi
đã Connet được nhấn nút Login điền Username và Password,
Username ở đây có thể tuỳ chọn và Password là 123456. Khi kết
nối đến máy chủ được thiết lập hoàn chỉnh, thì sẽ có thông báo
“Thành công” ở máy Client

Hình 3.2: Khởi động Client.


- 42 -

Hình 3.3: Kết nối đến Server.

Hình 3.4: Thông báo khi kết nối thành công.


- 43 -

Khi đó bên Server sẽ hiện thông báo

Hình 3.5: Server hiện thông báo thành công khi Client kết nối

- Bƣớc 3: Điều khiển Client từ Server, Chọn một User nào đó trong
danh sách, rồi điều khiển cổng LPT trên User đó.
- 44 -

Hình 3.6: Server hiện bảng điều khiển Client


- 45 -

Hình 3.7: Chọn User để điều khiển


- 46 -

Hình 3.8: Bật bảng điều khiển.

Server muốn điều khiển được các máy Client thì phải mở bảng điều
khiển. Bảng điều khiển gồm 8 CheckBox. Muốn điều bóng đèn nào chỉ cần
click chuột vào CheckBox. Bên cạnh đó còn có 8 nút trạng thái tương ứng với
tám thiết bị. Muốn biết trạng thái thiết bị như thế nào ta nhấn vào nút Update thì
nó sẽ hiện lên các trạng thái của thiết bị, tương ứng với màu của thiết bị, màu
xanh là bật, màu đỏ là tắt
- 47 -

Hình 3.9: Bật tắt thiết bị.


- 48 -

Hình 3.10: Kiểm tra trạng thái.


- 49 -

Hình 3.11: Thông báo đăng xuất.

Hiển thị thông báo khi có 1 User đăng xuất khỏi hệ thống
- 50 -

Hình 3.12: Báo lỗi không có người nhận.

Khi nhấn nút bật tắt mà không chọn người nhận sẽ hiện
thông báo lỗi.

Khi tắt Server, thì tất cả các Client đang kết nối đều tắt theo.
- 51 -

Ngoài ra còn có các chức năng phụ như là Save Log hay Clear
Log để làm sạch cửa sổ thông báo của Server (Menu LogSave Log
hoặc Clear Log), giao diện hướng dẫn.

Hình 3.13: Giao diện Save File Log.


- 52 -

Hình 3.14: Giao diện hướng dẫn.

- Bƣớc 4: Khi Client kết nối với Server và Server bật tắt được
các thiết bị trên máy Client . Nhận thấy còn nhiều mặt hạn chế
nên đề tài bổ sung thêm chức năng Remote. Cho phép một Client
truy cập vào Server điều khiển bật tắt các thiết bị trên máy Client
có kết nối với các thiết bị. Như vậy mới đúng nghĩa là điều khiển
thiết bị qua mạng TCP/IP. Sau đây là một số giao diện trên máy
Remote.
- 53 -

Hình 3.15: Giao diện Remote

Hình 3.16: Remote đăng nhập vào Server điều khiển Client
- 54 -

Hình 3.17 : Giao diện Remote điều khiển máy 01


- 55 -

Hình 3.18: Remote bật tắt các thiết bị trên Client


- 56 -

Hình 3.19 : Tài khoản Admin trên Remote có thể điều khiển bật tắt tất cả các Client
trên Server
- 57 -

3.3 Tiểu kết:

Như vậy có thể nói hệ thống điều khiển thiết bị qua mạng TCP/IP dựa
trên thư viện jnpout32pkg đã đáp ứng được nhu cầu chức năng về điều khiển
thiết bị từ xa giống như đề tài đặt ra ban đầu. Tạo ra thành cổng sản phẩm dễ sử
dụng, có giao diện thân thiện với người dùng.
- 58 -

KẾT LUẬN

1. Kết luận toàn bộ đề tài

Đề tài này chúng tôi đã tập trung nghiên cứu về cách điều khiển thiết bị trên
cổng song song qua mạng TCP/IP

Với những yêu cầu mà đề tài đặt ra ban đầu là khả năng điều khiển và quản lý
thiết bị từ xa, chương trình này đã phần nào đáp ứng được yêu cầu đó. Điều này thấy
rõ khi chương trình có khả năng điều khiển từ xa và cho phép người dùng bật tắt cũng
như kiểm tra trạng thái của các thiết bị kết nối với Client. Ưu điểm của đề tài này là có
thể điều khiển thiết bị ở mọi lúc, mọi nơi chỉ cần các máy kết nối mạng Internet

Tuy nhiên với khả năng và lượng kiến thức chuyên môn về điện tử, về lập trình
điều khiển và thời gian có hạn, nên chương trình chưa thực sự hoàn thiện. Đề tài còn
hạn chế trong phạm vi chuẩn kết nối với máy tính là cổng LPT, hiện nay công nghệ
ngày các phát triển, các máy tính dần thay thế các cổng LPT bằng các cổng hiện đại có
tốc độ cao hơn như là cổng USB, nếu tận dụng được sự phổ biến của cổng này thì đề
tài sẽ có giá trị cao hơn, và việc không có cơ sở dữ liệu khiến việc phân quyền và quản
lý người dùng trở nên cứng nhắc.

Thông qua đề tài nghiên cứu đã cung cấp được cho bản thân rất nhiều kiến thức
mới về giao tiếp với máy tính thông qua các cổng và về lập trình mạng, lập trình vi
điều khiển. Để từ đây nếu có cơ hội sẽ tiếp tục nghiên cứu và gắn bó với ngành khoa
học này

2. Nội dung nghiên cứu tiếp theo

Tương lai sắp tới, cần mở rộng đề tài theo hướng triển khai thêm các chức năng
khác, như sử dụng cổng USB, có cơ sở dữ liệu nhỏ để dễ quản lý người dùng, khả
năng tự vận hành, tự kiểm tra trạng thái và tự đưa ra quyết định bật tắt thiết bị, ngoài ra
do sử dụng mạng để điều khiển nên có thể điều khiển qua mạng không dây, nếu tích
hợp Client vào robot và Remote vào một thiết bị di động khác, thì có thể sử dụng để
- 59 -

điều hướng hay kiểm tra tín hiệu từ robot, đồng thời thiết kế chương trình chạy trên
các hệ điều hành khác nhau nhằm tăng thêm tính khả dụng.

Nếu có điều kiện nhóm chúng tôi sẽ không dừng lại ở việc chỉ điều khiển bật tắt
các đèn Led mà ứng dụng vào các thiết bị thực tế như: thiết bị gia đình, thiết bị trong
công ty xí nghiệp.Từ việc mở rộng đề tài này, hy vọng chương trình sẽ góp phần nào
vào sự phát triển của việc nghiên cứu điều khiển thiết bị của nước ta.
- 60 -

You might also like