Tải bản đầy đủ (.pdf) (58 trang)

Đồ án tốt nghiệp điều khiển thiết bị điện qua internet

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.46 MB, 58 trang )

Điều khiển thiết bị qua Internet

CHƯƠNG DẪN NHẬP
1.1 ĐẶT VẤN ĐỀ:
Ngày nay, với sự phát triển của xã hội ngày càng cao đặc biệt là trong lĩnh
vực công nghệ thông tin, cộng nghệ tự động, điều khiển giám sát các thiết bị từ xa
ngày càng được phát triển sâu rộng và ngày càng đươc ứng dụng rộng rãi.Trước
đây với những nghiên cứu tìm hiểu thì các nhà khoa học đã đưa ra những phát minh
trong lĩnh vực điều khiển từ xa như : điều khiển qua sóng RF(remote), điều khiển
tự động bằng các cảm biến sensor (hệ thống đóng mở của tự động), điều khiển cảnh
báo bằng điện thoại di động và điện thoại bàn, điều khiển bằng đường truyền cáp
quang qua sóng vệ tinh….Tuy nhiên với các giải pháp nêu trên thì điều có các ưu
nhược điểm riêng của từng giải pháp, cùng với nhu cầu không ngừng của con người
luôn mong muốn có một giải pháp hoàn thiện về mọi mặt để phục vụ cho mục đích
của mình, chính vì vậy mà nhóm chúng em chọn đề tài “điều khiển thiết bị qua
mạng Internet”.
Các giải pháp đưa ra trước đây điều có các ưu, khuyết điểm riêng biệt như
điều khiển qua sóng RF thì chỉ giới hạn trong cự ly gần và không có vật cản, điều
khiển bằng các cảm biến thì cũng giới hạn ở cự ly gần đồng thời phải cài sẵn chế độ
không thể thay đổi theo ý muốn. Điều khiển cảnh báo qua điện thoại di động bị giới
hạn bởi sóng điện thoại và tùy thuộc vào tốc độ truy cập của mạng điện thoại, truy
cập qua sóng vệ tinh thì kinh phí lớn. Trái lại với những khuyết điểm trên thì điều
khiển thiết bị qua mạng internet đã khắc phục được những khuyết điểm trên là truy
cập qua mạng internet tốc độ cao không bị giới hạn về khoảng cách có thể truy cập,
giám sát và điều khiển thiết bị mọi lúc mọi nơi có mạng internet bằng máy tính hay
điện thoại di động qua sóng GPRS, 3G. Ít tốn kém chi phí có thể đăng ký tên miền
tại các server miễn phí.
Để giải quyết được vấn đề trên, trên thế giới có rất nhiều hãng cung cấp vi
mạch hỗ trợ sẵn sàng cho các giao tiếp mạng theo giao thức TCP/IP, với các hãng
lớn như: Realtek, Conexant, MicroChip,... Tuy nhiên, nhóm em chọn sử dụng IC
giao tiếp mạng ENC28J60 và vi điều khiển PIC18f4580 để giao tiếp mạng, vì chúng


được sản xuất cùng hãng sản xuất là Microchip, nên chúng dễ dàng cho việc thực
hiện giao tiếp giữa hai chip, ngoài ra còn được hỗ đầy đủ về tài liệu và các thư viện
lập trình. Vi mạch giao tiếp mạng để điều khiển bao gồm các khối cơ bản : khối
giao tiếp mạng, khối xử lý điều khiển, khối thiết bị điều khiển thiết bị.
+ Khối giao tiếp mạng : bao gồm cổng RJ45 giao tiếp mạng (modem), IC
ENC28J60. Khối này có nhiệm vụ liên kết, xử lí với mạng thông qua cổng
RJ45 với 4 đường nối bao gồm: TPOUT+ (TX+), TPOUT- (TX-), TPIN+
(RX+), TPIN- (RX-), ngoài ra còn 2 đường nối led báo trang thái liên kết mạng.

Đoቹ á n toቷ t nghiệ p

9


Điều khiển thiết bị qua Internet

Nhiệm vụ thứ 2 là giao tiếp với MCU thông qua chuẩn SPI (Serial Peripheral
Interface), gồm 3 đường dữ liệu chính: SI, SO, SCK.
• SCK Serial Clock – Xung đồng bộ cho đường nối tiếp
• SI Serial Input – Tín hiệu nối tiếp vào (ghi)
• SO Serial Output – Tín hiệu nối tiếp ra (đọc)
+ Khối xử lý điều khiển : bao gồm vi điều khiển PIC18f4580, PIC18F4580
được xem là bộ xử lí dữ liệu của giao tiếp mạng nó có nhiệm vụ xử lí tất cả
những yêu cầu từ mini Web gửi đến.
+ Khối điều khiển thiết bị: Thực hiện nhận lệnh điều khiển từ PIC thực hiện
đóng, ngắt Relay để tắt mở thiết bị điện.
1.2 NỘI DUNG ĐỀ TÀI:
Với khoảng thời gian thực hiện đề tài 4 tuần, nhóm đã thảo luận và chọn nội
dung của đề tài như sau:
- Tìm hiểu cấu trúc mạng Internet.

- Tìn hiểu ngôn ngữ xây dựng Web bằng HTML, Javacript.
- Thiết kế và thi công mạch Internet.
- Điều khiển thiết bị qua mạng internet.
- Tìm hiểu cách giao tiếp mạng và truyền dữ liệu qua mạng internet.
1.3 MỤC ĐÍCH ĐỀ TÀI:
Trong quá trình thiết kế và thực hiện đề tài này nhằm giúp người học:
- Tăng khả năng tự tìm hiểu, thiết kế, cũng như tự học.
- Bước đầu tiếp xúc với thực tế.
- Vận dụng những kiến thức đã có đồng thời tìm tòi những kiến thức mới để
hiểu sâu sắc hơn trong lĩnh vực này.
Để thiết kế được một hệ thống như đã nêu ở trên thì người thiết kế phải nắm
vững kiến thức mạng, điện tử, tìm hiểu qua sách vở, tài liệu và dạng mạch thực tế
để thi công phần cứng.
1.4 ĐỐI TƯỢNG TÌM HIỂU.
- Tìm hiểu vi điều khiển PIC18f4580.
- Tìm hiểu phương pháp lập trình C cho PIC bằng MikroC.
- Tìm hiểu phương pháp nhúng trang web vào vi xử lý 18f4580.
- Tìm hiểu IC giao tiếp Ethetnet ENC28J60.

Đoቹ á n toቷ t nghiệ p

10


Điều khiển thiết bị qua Internet

CHƯƠNG II: CƠ SỞ LÝ THUYẾT
2.1 Vi điều khiển PIC18F4580.
2.1.1 Sơ lược về vi điều khiển PIC 18F4580:
-


32 K Flash ROM.

-

1536 Bytes SRAM.

-

256 Bytes EEPROM.

-

5 ports (A, B, C, D, E) vào ra với tín hiệu điều khiển độc lập.

-

1 bộ định thời 8 bits.

-

3 bộ định thời 16 bits, có thể hoạt động trong chế độ tiết kiệm năng lượng
(SLEEP MODE) với nguồn xung Clock ngoài.

-

1 bộ CCP( Capture / Compare/ PWM).

-


11 bộ biến đổi AD 10 bits, tốc độ lên tới 100Ksps.

-

2 bộ so sánh tương tự (Compartor).

-

1 bộ định thời giám sát (WatchDog Timer).

-

Một cổng truyền thông song song PSP.

-

Cổng truyền nối tiếp MSSP, Usart.

-

20 nguồn ngắt.

-

Có chế độ tiết kiệm năng lượng.

-

Nạp chương trình bằng cổng nối tiếp ICSP.


-

35 tập lệnh có độ dài 16 bits.

-

Tần số hoạt động tối đa 40MHz

Đoቹ á n toቷ t nghiệ p

11


Điều khiển thiết bị qua Internet

2.1.2 Hình dạng và sơ đồ chân.

Hình 2.1 PIC 18F4580

Đoቹ á n toቷ t nghiệ p

12


Điều khiển thiết bị qua Internet

2.1.3. Sơ đồ khối của PIC18F4580.

Hình 2.2: Sơ đồ khối PIC 18F4580


Đoቹ á n toቷ t nghiệ p

13


Điều khiển thiết bị qua Internet

2.1.4 Một số điểm đặc biệt của CPU:
2.1.4.1 Dao động:
PIC18F4580 có khả năng sử dụng một trong 4 loại oscillator, đó là:
- LP: (low power crystal).
- XT: thạch anh bình thường
- HS: (high-speed crystal).
- RC: (resistor/capacitor)
Trong các chế độ LP, XT và HS chúng ta sử dụng thạch anh dao động nối
vào các chân OSC1 và OSC2 để tạo dao động. Việc lựa chọn tụ trong dao động
thạch anh dựa vào bảng sau:
Lưu ý: Tụ có giá trị lớn sẽ tăng tính ổn định
của dao động nhưng cũng làm tăng thời gian
khởi động.
Chế độ dao động RC được sử dụng như một
giải pháp tiết kiệm trong các ứng dụng không
cần sự chính xác về thời gian.

Cách tính chu kì máy:
Ví dụ ta sử dụng thạch anh 10Mhz. Khi đó:
Tần số dao động của thạch anh là Fosc =
10Mhz
=> Chu kỳ dao đông của thạch anh là Tosc
= 1/Fosc= 1/10*106 (s)

Chu kỳ máy:
T_instruction = 4*Tosc = 4/10*106(s) = 0.4
µs = 400 ns
2.4.1.2 Interrupts:
PIC18F4580 có nhiều nguồn ngắt khác nhau. Đây là một số ngắt tiêu biểu:
- Ngắt ngoài xảy ra trên chân INT.
- Ngắt do Timer0.
- Ngắt do Timer1.
- Ngắt do Timer2.
- Ngắt do Timer3.
- Ngắt do thay đổi trạng thái trên các chân PortB.
- Ngắt so sánh điện thế.
- Ngắt do Port song song.
- Ngắt USART.

Đoቹ á n toቷ t nghiệ p

14


Điều khiển thiết bị qua Internet

-

Ngắt nhận dữ liệu.
Ngắt truyền dữ liệu .
Ngắt chuyển đổi ADC.
Ngắt màn hình LCD.
Ngắt hoàn tất ghi EEPROM.
Ngắt module CCP.

Ngắt Module SSP.

Các thanh ghi chức năng ngắt: INTCON, PIE1, PIR1, PIE2, PIR2 (các thanh ghi
này sẽ được nghiên cứu ở các phần sau).

Hình 2.3:Sơ đồ khối ngắt
2.1.5 Tổ chức bộ nhớ
Cấu trúc bộ nhớ của vi điều khiển PIC18F4580 bao gồm bộ nhớ chương trình
(Program Memory) và bộ nhớ dữ liệu (Data Memory).
* Bộ nhớ chương trình
Bộ nhớ chương trình của vi điều khiển PIC18F4580 là bộ nhớ flash, dung lượng bộ
nhớ 32K byte và được phân thành nhiều trang (từ page0 đến page 3) . Như vậy bộ
nhớ chương trình có khả năng chứa được 16*1024 = 16384 lệnh (vì một lệnh sau khi
mã hóa sẽ có dung lượng 1 word (14 bit). Khi vi điều khiển được reset, bộ đếm
chương trình sẽ chỉ đến địa chỉ 0000h (Reset vector). Khi có ngắt xảy ra, bộ đếm
chương trình sẽ chỉ đến địa chỉ 0008h với High priority Interrupt vector và 0018h
với ngắt Low priority Interrupt vector . Bộ nhớ chương trình không bao gồm bộ nhớ
stack và không được địa chỉ hóa bởi bộ đếm chương trình.

Đoቹ á n toቷ t nghiệ p

15


Điều khiển thiết bị qua Internet

Hình 2.4 Cấu trúc bộ nhớ chương trình
* Bộ nhớ dữ liệu
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiều bank. Đối
với PIC18F4580 bộ nhớ dữ liệu được chia ra làm 16 bank. Mỗi bank có dung lượng

256 byte, bao gồm các thanh ghi có chức năng đặc biệt SFR (Special Function
Register) nằm ở các vùng địa chỉ thấp và các thanh ghi mục đích chung GPR
(General Purpose Register) nằm ở vùng địa chỉ còn lại trong bank. Các thanh ghi
SFR thường xuyên được sử dụng (ví dụ như thanh ghi STATUS) sẽ được đặt ở tất cà
các bank của bộ nhớ dữ liệu giúp thuận tiện trong quá trình truy xuất và làm giảm
bớt lệnh của chương trình. Sơ đồ cụ thể của bộ nhớ dữ liệu PIC18F4580 như sau:

Đoቹ á n toቷ t nghiệ p

16


Điều khiển thiết bị qua Internet

Hình 2.5: Cấu trúc bộ nhớ dữ liệu
** THANH GHI CHỨC NĂNG ĐẶC BIỆT SFR:
Đây là các thanh ghi được sử dụng bởi CPU hoặc được dùng để thiết lập và điều
khiển các khối chức năng được tích hợp bên trong vi điều khiển. Có thể phân thanh
ghi SFR làm hai lọai: thanh ghi SFR liên quan đến các chức năng bên trong (CPU)
và thanh ghi SRF dùng để thiết lập và điều khiển các khối chức năng bên ngoài (ví
dụ như ADC, PWM …).
Thanh ghi STATUS (03h, 83h, 103h, 183h):thanh ghi chứa kết quả thực hiện
phép toán của khối ALU, trạng thái reset và các bit chọn bank cần truy xuất trong bộ
nhớ dữ liệu.

Đoቹ á n toቷ t nghiệ p

17



Điều khiển thiết bị qua Internet

Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đọc và ghi, cho
phép điều khiển chức năng pull-up của các chân trong PORTB, xác lập các tham số
về xung tác động, cạnh tác động của ngắt ngoại vi và bộ đếm Timer0.

Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh):thanh ghi cho phép đọc và ghi, chứa
các bit điều khiển và các bit cờ hiệu khi timer0 bị tràn, ngắt ngoại vi RB0/INT và
ngắt interrputon- change tại các chân của PORTB.

Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của các khối chức
năng ngoại vi.

Thanh ghi PIR1 (0Ch) chứa cờ ngắt của các khối chức năng ngoại vi, các ngắt
này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE1.

Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khối chức năng
CCP2, SSP bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ EEPROM.

Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của các khối chức năng ngoại vi, các
ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE2.

Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế độ reset của
vi điều khiển.

** THANH GHI MỤC ĐÍCH CHUNG GPR:
Các thanh ghi này có thể được truy xuất trực tiếp hoặc gián tiếp thông qua thanh
ghi FSG (File Select Register). Đây là các thanh ghi dữ liệu thông thường, người sử

Đoቹ á n toቷ t nghiệ p


18


Điều khiển thiết bị qua Internet

dụng có thể tùy theo mục đích chương trình mà có thể dùng các thanh ghi này để
chứa các biến số, hằng số, kết quả hoặc các tham số phục vụ cho chương trình.
* Stack
Stack không nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà là một vùng
nhớ đặc biệt không cho phép đọc hay ghi.
Khi lệnh CALL được thực hiện hay khi một ngắt xảy ra làm chương trình bị rẽ
nhánh, giá trị của bộ đếm chương trình PC tự động được vi điều khiển cất vào trong
stack. Khi một trong các lệnh RETURN, RETLW hat RETFIE được thực thi, giá trị
PC sẽ tự động được lấy ra từ trong stack, vi điều khiển sẽ thực hiện tiếp chương trình
theo đúng qui trình định trước.
Bộ nhớ Stack trong vi điều khiển PIC họ 18F4580 có khả năng chứa được 8 địa
chỉ và hoạt động theo cơ chế xoay vòng. Nghĩa là giá trị cất vào bộ nhớ Stack lần
thứ 9 sẽ ghi đè lên giá trị cất vào Stack lần đầu tiên và giá trị cất vào bộ nhớ Stack
lần thứ 10 sẽ ghi đè lên giá trị cất vào Stack lần thứ 2.
Cần chú ý là không có cờ hiệu nào cho biết trạng thái stack, do đó ta không biết
được khi nào stack tràn. Bên cạnh đó tập lệnh của vi điều khiển dòng PIC cũng
không có lệnh POP hay PUSH, các thao tác với bộ nhớ stack sẽ hoàn toàn được điều
khiển bởi CPU.
2.1.6 Các cổng xuất nhập của PIC18F4580
Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng để
tương tác với thế giới bên ngoài. Bên cạnh đó, do vi điều khiển được tích hợp sẵn
bên trong các đặc tính giao tiếp ngoại vi nên bên cạnh chức năng là cổng xuất nhập
thông thường, một số chân xuất nhập còn có thêm các chức năng khác để thể hiện sự
tác động của các đặc tính ngoại vi nêu trên đối với thế giới bên ngoài.

-Vi điều khiển PIC18F4580 có 5 cổng xuất nhập, bao gồm PORTA, PORTB,
PORTC, PORTD và PORTE.
2.1.6.1 PORT A:
PORTA (RPA) bao gồm 8 I/O pin. Đây là các chân “hai chiều” (bidirectional
pin), nghĩa là có thể xuất và nhập được. Chức năng I/O này được điều khiển bởi
thanh ghi TRISA (địa chỉ 85h). Muốn xác lập chức năng của một chân trong
PORTA là input, ta “set” bit điều khiển tương ứng với chân đó trong thanh ghi
TRISA và ngược lại, muốn xác lập chức năng của một chân trong PORTA là output,
ta “clear” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA. Thao tác này
hoàn toàn tương tự đối với các PORT và các thanh ghi điều khiển tương ứng TRIS
(đối với PORTA là TRISA, đối với PORTB là TRISB, đối với PORTC là TRISC,
đối với PORTD là TRISD vàđối với PORTE là TRISE). Bên cạnh đó PORTA còn là
ngõ ra của bộ ADC, bộ so sánh, ngõ vào analog ngõ vào xung clock của Timer0 và
ngõ vào của bộ giao tiếp MSSP (Master Synchronous Serial Port).
Các thanh ghi SFR liên quan đến PORTA bao gồm:
- PORTA (địa chỉ 05h) : chứa giá trị các pin trong PORTA.

Đoቹ á n toቷ t nghiệ p

19


Điều khiển thiết bị qua Internet

- TRISA (địa chỉ 85h) : điều khiển xuất nhập.
- CMCON (địa chỉ 9Ch) : thanh ghi điều khiển bộ so sánh.
- CVRCON (địa chỉ 9Dh) : thanh ghi điều khiển bộ so sánh điện áp.
- ADCON1 (địa chỉ 9Fh) : thanh ghi điều khiển bộ ADC.
2.1.6.2 PORT B:
PORTB (RPB) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng là

TRISB. Bên cạnh đó một số chân của PORTB còn được sử dụng trong quá trình nạp
chương trình cho vi điều khiển với các chế độ nạp khác nhau. PORTB còn liên quan
đến ngắt ngoại vi và bộ Timer0. PORTB còn được tích hợp chức năng điện trở kéo
lên được điều khiển bởi chương trình.
Các thanh ghi SFR liên quan đến PORTB bao gồm:
- PORTB (địa chỉ 06h,106h) : chứa giá trị các pin trong PORTB
- TRISB (địa chỉ 86h,186h) : điều khiển xuất nhập
- OPTION_REG (địa chỉ 81h,181h) : điều khiển ngắt ngoại vi và bộ
Timer0.
2.1.6.3 PORT C:
PORTC (RPC) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng là
TRISC. Bên cạnh đó PORTC còn chứa các chân chức năng của bộ so sánh, bộ
Timer1, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART.
Các thanh ghi điều khiển liên quan đến PORTC:
- PORTC (địa chỉ 07h) : chứa giá trị các pin trong PORTC
- TRISC (địa chỉ 87h) : điều khiển xuất nhập.
2.1.6.4 PORT D:
PORTD (RPD) gồm 8 chân I/O, thanh ghi điều khiển xuất nhập tương ứng là
TRISD. PORTD còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP (Parallel Slave
Port).
Các thanh ghi liên quan đến PORTD bao gồm:
- Thanh ghi PORTD : chứa giá trị các pin trong PORTD.
- Thanh ghi TRISD : điều khiển xuất nhập.
2.1.6.5 PORT E:
PORTE (RPE) gồm 4 chân I/O. Thanh ghi điều khiển xuất nhập tương ứng là
TRISE. Các chân của PORTE có ngõ vào analog. Bên cạnh đó PORTE còn là các
chân điều khiển của chuẩn giao tiếp PSP.
Các thanh ghi liên quan đến PORTE bao gồm:
- PORTE : chứa giá trị các chân trong PORTE.
- TRISE : điều khiển xuất nhập và xác lập các thông số cho chuẩn giao tiếp

PSP.
- ADCON1 : thanh ghi điều khiển khối ADC

Đoቹ á n toቷ t nghiệ p

20


Điều khiển thiết bị qua Internet

2.1.7 Giao Tiếp Nối Tiếp
USART (Universal Synchronous Asynchronous Receiver Transmitter) là một
trong hai chuẩn giao tiếp nối tiếp.USART còn được gọi là giao diện giao tiếp nối
tiếp SCI (Serial Communication Interface). Có thể sử dụng giao diện này cho các
giao tiếp với các thiết bị ngoại vi, với các vi điều khiển khác hay với máy tính. Các
dạng của giao diện USART ngoại vi bao gồm:
- Bất động bộ (Asynchronous).
- Đồng bộ_ Master mode.
- Đồng bộ_ Slave mode.
PIC18F4580 được tích hợp sẵn bộ tạo tốc độ baud BRG (Baud Rate Genetator) 8
bit hoặc 16bit dùng cho giao diện USART. BRG thực chất là một bộ đếm có thể
được sử dụng cho cả hai dạng đồng bộ và bất đồng bộ và được điều khiển bởi thanh
ghi PSBRG. Ở dạng bất đồng bộ, BRG còn được điều khiển bởi bit BRGH (
TXSTA<2>). Ở dạng đồng bộ tác động của bit BRGH được bỏ qua. Tốc độ baud do
BRG tạo ra được tính theo công thức sau:

Trong đó X là giá trị của thanh ghi RSBRG ( X là số nguyên và 0Các thanh ghi liên quan đến BRG bao gồm:
- TXSTA (địa chỉ 98h): chọn chế độ đòng bộ hay bất đồng bộ ( bit SYNC) và
chọn mức tốc độ baud (bit BRGH).

- RCSTA (địa chỉ 18h): cho phép hoạt động cổng nối tiếp (bit SPEN).
- RSBRG (địa chỉ 99h): quyết định tốc độ baud.
* USART bất đồng bộ: Ở chế độ truyền này USART hoạt động theo chuẩn NRZ
(None-Return-to-Zero), nghĩa là các bit truyền đi sẽ bao gồm 1 bit Start, 8 hay 9 bit
dữ liệu (thông thường là 8 bit) và 1 bit Stop. Bit LSB sẽ được truyền đi trước. Các
khối truyền và nhận data độc lập với nhau sẽ dùng chung tần số tương ứng với tốc
độ baud cho quá trình dịch dữ liệu (tốc độ baud gấp 16 hay 64 lần tốc độ dịch dữ
liệu tùy theo giá trị của bit BRGH), và để đảm bảo tính hiệu quả của dữ liệu thì hai
khối truyền và nhận phải dùng chung một định dạng dữ liệu.
Các thanh ghi liên quan đến quá trình truyền dữ liệu bằng giao diện USART bất
đồng bộ:
- Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép tất cả các ngắt.
- Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu TXIF.
- Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt truyền TXIE.
- Thanh ghi RCSTA (địa chỉ 18h): chứa bit cho phép cổng truyền dữ liệu (hai pin
RC6/TX/CK và RC7/RX/DT).
- Thanh ghi TXREG (địa chỉ 19h): thanh ghi chứa dữ liệu cần truyền.

Đoቹ á n toቷ t nghiệ p

21


Điều khiển thiết bị qua Internet

- Thanh ghi TXSTA (địa chỉ 98h): xác lập các thông số cho giao diện.
- Thanh ghi SPBRG (địa chỉ 99h): quyết định tốc độ baud.
* USART đồng bộ: Giao diện USART đồng bộ được kích hoạt bằng cách set bit
SYNC. Cổng giao tiếp nối tiếp vẫn là hai chân RC7/RX/DT, RC6/TX/CK và được
cho phép bằng cách set bit SPEN. USART cho phép hai chế độ truyền nhận dữ liệu

là Master mode và Slave mode. Master mode được kích hoạt bằng cách set bit CSRC
(TXSTA<7>), Slave mode được kích hoạt bằng cách clear bit CSRC. Điểm khác
biệt duy nhất giữa hai chế độ này là Master mode sẽ lấy xung clock đồng bộ từ bộ
tao xung baud BRG còn Slave mode lấy xung clock đồng bộ từ bên ngoài qua chân
RC6/TX/CK. Điều này cho phép Slave mode hoạt động ngay cả khi vi điều khiển
đang ở chế độ sleep.
Các thanh ghi liên quan đến quá trình truyền dữ liệu bằng giao diện USART đồng
bộ Master mode:
- Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép tất cả các ngắt.
- Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu TXIF.
- Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt truyền TXIE.
- Thanh ghi RCSTA (địa chỉ 18h): chứa bit cho phép cổng truyền dữ liệu (hai pin
RC6/TX/CK và RC7/RX/DT).
- Thanh ghi TXREG (địa chỉ 19h): thanh ghi chứa dữ liệu cần truyền.
- Thanh ghi TXSTA (địa chỉ 98h): xác lập các thông số cho giao diện.
- Thanh ghi SPBRG (địa chỉ 99h): quyết định tốc độ baud.
2.2 ENC28J60
ENC28J60 là 1 chíp do Microchip cung cấp có 28 chân, phù hợp với giao thức
chuẩn IEEE802.3

Hình 2.6: IC ENC28j60

Đoቹ á n toቷ t nghiệ p

22


Điều khiển thiết bị qua Internet

2.2.1 Cấu trúc và chức năng:

Giao tiếp với các thiết bị ngoại vi theo chuẩn SPI với tốc độ lên tới
10Mbps.
Giao thức chuẩn IEEE802.3.
Bộ lọc đặc biệt tự động đánh giá, chấp nhận hoặc từ chối MagicPackit,
unicast, muliticast.
Có bộ nhớ đệm SRam lên tới 8KB, có thể quản lý dữ liệu đáng tinh cậy và
linh hoạt.
2.2.2 Chức năng các chân của ENC28J60:
VDD, VDDOSC, VDDPLL, VDDRX, VDDTX
nuôi cho IC, nối với +3,3V .

: các chân này dùng để cấp nguồn

GND, GND OSC, GND PLL, GND RX, GND TX

: các

chân này được nối Mass.

RESET: chân Reset tích cực mức thấp để thiết lập lại chế độ cho chip.
OSC1,OSC2: 2 chân nhận giao động bên ngoài, ENC28J60 hoạt động với
thạch anh 25Mhz.
CLKOUT: xung clock khoảng 6,25MHz cho ra bên ngoài của ENC.
LedA, LedB: 2 chân báo trạng thái hoặt động mạng, LedA (Green LED)
báo trạng thái liên kết, LedB (Yellow LED) báo chỉ thị hoặt động mạng.
Vcap: 2.5V ra cho chức năng ổn định bên trong, sử dụng thông thường với
tụ 10uF và giá trị nhỏ nhất có thể sử dụng 1uF để nối xuống ground.
INT: chân ngõ ra cho chức năng ngắt.
SO, SI, SCK. CS: chân cho kết nối giao thức SPI.
RESET: ngõ vào reset ENC tác động tích cực mức thấp.

TPIN+, TPIN-, TPOUT+, TPOUT-: Ngõ vào, ra cho truyền tín hiệu mạng
trên cáp xoắn đôi.
RBIAS: chân cho khối mạch PHY, phải nối xuống đất thông qua điện trở
2,32K.

Đoቹ á n toቷ t nghiệ p

23


Điều khiển thiết bị qua Internet

Hình 2.7 Sơ đồ kết nối ngoại vi ENC28J60
2.2.3 Các khối cơ bản bên trong ENC28J60:

Hình 2.8:Các khối cơ bản bên trong ENC28J60

Đoቹ á n toቷ t nghiệ p

24


Điều khiển thiết bị qua Internet

Bao gồm 7 khối cơ bản sau:
1. Một giao diện SPI dùng để giao tiếp với vi điều khiển.
2. Khối giám sát và điều khiển ENC28J60.
3. Bộ nhớ đệm Sram cho viêc truyền và nhận gói tin.
4. Khối giám sát việc truy cập vào bộ nhớ đệm.
5. Khối Bus dữ liệu giải mã lệnh thông qua SPI.

6. Module Mac theo chuẩn IEEE802.3.
7. Module PHY mã hóa và giải mã tín hiệu điện.
2.2.4 Sơ đồ kết nối với các thiết bị ngoại vi:
Vi mạch ENC28J60 giao tiếp với các vi xử lý khác thông qua chuẩn truyền
dữ liệu nối tiếp SPI (Serial Peripheral Interface), đây là chuẩn giao tiếp rất phổ biến,
được dùng để nối các vi mạch trong cùng một hệ thống với ưu điểm là chạy nhanh
và tốn rất ít dây nối tín hiệu, chỉ cần 3 dây cho cả đường ghi và đọc, đó là:

Hình 2.9. Sơ đồ ghép nối ENC28J60 với vi xử lý
SCK Serial Clock – Xung đồng bộ cho đường nối tiếp.
SI Serial Input – Tín hiệu nối tiếp vào (ghi).
SO Serial Output – Tín hiệu nối tiếp ra (đọc).
Sau đây là bộ lệnh SPI dùng cho vi mạch ENC28J60 và các giản đồ xung thể hiện
các quá trình ghi, đọc dữ liệu, lệnh giữa vi xử lý và ENC28J60.

Hình 2.10. Quá trình đọc thanh ghi điều khiển Ethernet

Đoቹ á n toቷ t nghiệ p

25


Điều khiển thiết bị qua Internet

Hình 2.11. Quá trình đọc thanh ghi điều khiển MAC

Hình 2.12 Quá trình ghi vào thanh ghi lệnh

Hình 2.13. Quá trình ghi vào bộ đệm lệnh


Đoቹ á n toቷ t nghiệ p

26


Điều khiển thiết bị qua Internet

Hình 2.14 Quá trình ghi vào lệnh của hệ thống
Mặc dù đã được thiết kế theo cấu trúc “stand alone” (một chip làm hết các
việc) nhưng việc điều khiển để vi mạch này hoạt động được là rất phức tạp và đòi
hỏi có hiểu biết khá toàn diện về vi điều khiển, mạch điện tử và mạng Internet. Tuy
nhiên, rất may mắn cho người thiết kế và lập trình vì hãng MicroChip (hãng sản
xuất vi mạch ENC28J60) đã hỗ trợ tối đa, bằng cách đưa ra đầy đủ các thư viện
phục vụ cho việc lập trình, làm cho việc lập trình giao tiếp với vi mạch này trở nên
khá dễ dàng.

Đoቹ á n toቷ t nghiệ p

27


Điều khiển thiết bị qua Internet

2.2.5 Các thông số kĩ thuật

Hình 2.15. Sơ đồ vi mạch giao tiếp ethernet ENC28J60
Giới thiệu chung
Tương thích chuẩn IEEE 802.3 Ethernet Controller.
Tích hợp địa chỉ MAC và 10BASE-T PHY
Bộ đệm SRAM 8 Kbyte Transmit/Receive Packet Dual Port

Buffer.
Chế độ tự động gửi lại khi có xung đột
Chế độ tự động hủy bỏ các gói tin sai
.
Bộ đệm:
Kích thước bộ đệm transmit/receive có thể lập trình được
Giám sát quá trình nhận FIFO
PHY:
Bộ lọc tín hiệu ra
Có chế độ loopback
Mac(Media access Control):
Hỗ trợ Unicast, Multicast và Broadcast
Hỗ trợ nhiều dảng gói tin Magic Packet®, Unicast,
Multicast ,Broadcast

Đoቹ á n toቷ t nghiệ p

28


Điều khiển thiết bị qua Internet

2.3 Cổng mạng RJ45

Hình 2.16: Cổng RJ45
Cổng RJ45 là thành phần quan trọng trong kết nối internet, nó đóng vai trò là
cổng giao tiếp của thiết bị mạng này sang thiết bị mạng khác. Trong kết nối mạng
gồm có 2 kiểu kết nối cho chuẩn RJ45 đó là cáp chéo và cáp thẳng, cáp chéo dùng
để nối các thiết bị cùng nhóm, cáp thẳng để nối thiết bị khác nhóm.
Chẩn RJ45 gồm 8 dây được xoắn làm 4 cặp, gồm có 4 dây dữ liệu là TX+, TX-,

RX+, RX- , ngoài ra 4 dây còn lại có tác dụng đệm chống nhiễu khi truyền khoảng
cách lớn. Theo cổng thông thường thì chân theo thứ tự là 1,2,3,6.
Cổng RJ45 thực tế được sản xuất có 2 chuẩn chính là có biến áp và không có biến
áp, nếu là loại thông thường thì chân kết nối đúng thứ tự còn với loại có biến áp bên
trong thì các chân vào ra có thể khác nhau không theo thứ tự do cấu trúc của biến áp.
Trong cấu tạo có thể có led hoặc không có led. Với cấu trúc biến áp như sau:

Hình 2.17 Sơ đồ cổng RJ45

Đoቹ á n toቷ t nghiệ p

29


Điều khiển thiết bị qua Internet

2.4 IC cảm biến nhiệt độ độ LM35

Hình 2.18: IC đo nhiêt độ LM35
LM35 có đầu vào là nhiệt độ môi trường và đầu ra là giá trị điện áp với các chân
chức năng như sau:
Chân 1 nối nguồn 4V đến 20V.
Chân 2 là đầu ra điện áp cho chuyển đổi ADC.
Chân 3 nối ground cho IC.
LM35 là sensor đo theo nhiệt độ C, đầu ra thay đổi 10mV/ 0C, đo nhiệt độ
trong phạm vi từ -55 0C đến 150 0C.

2.5 Giới thiệu thư viện ethernet của Mikro_C
2.5.1 Giới thiệu:
Thư viện được thiết kế để đơn giản hóa việc xử lí phần cứng cơ bản

(RTL8019AS). Tuy nhiên người dùng cần có một mức độ hiểu biết nhất định về
Ethernet và các giao thức cơ sở của Ethernet (ARP, IP, TCP/IP, UDP/IP, ICMP/IP).
Ethernet là 1 giao thức tốc độ cao và linh hoạt, nhưng nó không hề đơn giản. khi bạn
đã quen với nó thì bạn sẽ thích thú với các ứng dụng mà nó đem lại, bạn có thể làm
được nhiều hơn những thứ bạn có thể với các chuẩn RS232/485 hoặc CAN.
2.5.2 Bộ thư viện:
• Eth_Init
• Eth_Set_Ip_Address
• Eth_Inport
• Eth_Scan_For_Event
• Eth_Get_Tp_Hdr_Len
• Eth_Load_Ip_Packet
• Eth_Get_Hdr_Chksum
• Eth_Get_Source_Ip_Address
• Eth_Arp_Response
• Eth_Get_Icmp_Info
• Eth_Ping_Response
• Eth_Get_Udp_Source_Port
• Eth_Get_Udp_Dest_Port
• Eth_Get_Udp_Port
• Eth_Set_Udp_Port
• Eth_Send_Udp

Đoቹ á n toቷ t nghiệ p

30


Điều khiển thiết bị qua Internet


• Eth_Load_Tcp_Header
• Eth_Get_Tcp_Hdr_Offset
• Eth_Get_Tcp_Flag
• Eth_Set_Tcp_Data
• Eth_Tcp_Response
Eth_Init:
Kiểu giao thức void Eth_Init(char * addrP, char * dataP, char * ctrlP,
char pinRetset, char pinIOW, char pinIOR);
Mô tả

Thực hiện việc khởi tạo card Ethernet và thư viện

Yêu cầu

Ghi chú cho toàn bộ thư viện

Ví dụ

Eth_Init (&PORTB, &PORTD, PORTE, 2,1,0);

Eth_Set_Ip_Address:
Kiểu giao thức void Eth_Set_Ip_Address(char ip1, char ip2, char ip3, char ip4);
Mô tả
Thiết lập địa chỉ ip của card mạng Ethernet đã được kết nối và
khởi tạo
Yêu cầu

Ví dụ

Chức năng này cần được gọi ngay sau khi khởi tạo NIC (xem

Eth_Init). Bạn có thể thay đổi địa chỉ IP bất cứ lúc nào, bất cứ ở
đâu trong code.
// set IP address 192.168.20.25
Eth_Set_Ip_Address(192u, 168u, 20u, 25u);

Eth_Set_Inport:
Kiểu giao thức unsigned short Eth_Inport(unsigned short address);
Trả về

1 byte từ địa chỉ đã được chỉ rõ

Mô tả

Nhận về 1 byte từ địa chỉ đã chỉ rõ của chip card Ethernet

Yêu cầu

Card (NIC) phải được khởi tạo đúng. Xem Eth_Init

Ví dụ

Udp_length |=Eth_Inport(NIC_DATA);

Eth_Scan_For_Event
Kiểu giao thức unsigned Eth_Scan_For_Event(unsigned short * next_ptr);
Trả về
Mô tả

Đoቹ á n toቷ t nghiệ p


Kiểu gói Ethernet đã nhận. có 2 kiểu phân biệt là: ARP và IP
Nhận về địa chỉ MAC của người gởi và kiểu gói tin Ethernet đã

31


Điều khiển thiết bị qua Internet

Yêu cầu

Ví dụ

nhận. argument chức năng là con trỏ bên trong chỉ tới gói dữ liệu
tiếp theo trong vùng đệm của RTL8019.
Card (NIC) phải được khởi tạo đúng. Xem Eth_Init. Chức năng
phải được gọi trong 1 chuỗi chính xác, VD như ở ngay sau card
init và IP address/UDP port init
Eth_Init (&PORTB, &PORTD, PORTE, 2,1,0);
Eth_Set_Ip_Address(192u, 168u, 20u, 25u);
Eth_Set_Udp-Port(10001);
do { // Main block of every Ethernet example
event_type = Eth_Scan_For_Evetn(&next_ptr);
if (event_type) {
switch (event_type) { case ARP: Arp_Event(); break;
case IP: Ip_Event();}
Eth_Outport(CR, 0x22);
Eth_Outport(BNDRY, next_ptr);
}
} while (1);


Eth_Get_Tp_Hdr_Len
Kiểu giao thức unsigned short Eth_Get_Tp_Hdr_Len(void);
Trả về

Chiều dài tiêu đề gói tin IP đã nhận

Mô tả

Trả về chiều dài tiêu đề gói tin IP đã nhận. trước khi dữ liệu khác
đặt trên giao thức IP (TCP,UDP.ICMP) có thể được phân tích, dữ
liệu giao thức con phải được tải chính xác từ gói tin IP đã nhận.
Card (NIC) phải được khởi tạo đúng. Xem Eth_Init. Chức năng
phải được gọi trong 1 chuỗi chính xác, vd ngay sau khi xác định
rằng gói tin đã nhận là gói tin IP.
// Receive IP Header
Opt_len= Eth_Get_Ip_Hdr_Len() -20;

Yêu cầu

Ví dụ

Eth_Load_Ip_Packet:
Kiểu giao thức void Eth_Load_Ip_Packet (void);
Mô tả

Tải dữ liệu của gói tin IP khác nhau vào các biến Ethernet của PIC

Yêu cầu

Card (NIC) phải được khởi tạo đúng. Xem Eth_Init. Một chuỗi

chính xác các việc gọi phải được tuân theo( xem Ip_Event)

Đoቹ á n toቷ t nghiệ p

32


Điều khiển thiết bị qua Internet

Ví dụ

Eth_Load_Ip_Packet();

Eth_Get_Hdr_Chksum
Kiểu giao thức void Eth_Get_Hdr_Chksum(void);
Mô tả

Tải và trả về giá trị kiểm tra tổng của tiêu đề của gói IP đã nhận

Yêu cầu

Card (NIC) phải được khởi tạo đúng. Xem Eth_Init. Một chuỗi
chính xác các việc gọi phải được tuân theo( xem Ip_Event)
Eth_Get_Hdr_Chksum();

Ví dụ

Eth_Get_Source_Ip_Address
Kiểu giao thức void Eth_Get_Source_Ip_Address(void);
Mô tả

Tải và trả về giá trị kiểm tra tổng của tiêu đề của gói IP đã nhận
Yêu cầu
Ví dụ

Card (NIC) phải được khởi tạo đúng. Xem Eth_Init. Một chuỗi
chính xác các việc gọi phải được tuân theo( xem Ip_Event)
Eth_Get_Source_Ip_Address();

Eth_Dest_Ip_Address:
Kiểu giao thức Void Eth_Dest_Ip_Address(void);
Mô tả
Tải địa chỉ IP của gói IP đã nhận cho gói mà đã được chỉ định
Yêu cầu
Ví dụ

Card (NIC) phải được khởi tạo đúng. Xem Eth_Init. Một chuỗi
chính xác các việc gọi phải được tuân theo( xem Ip_Event)
Eth_Dest_Ip_Address();

Eth_Arp_Response:
Kiểu giao thức void Eth_Arp_Response(void);
Mô tả
Một sự đáp ứng ARP tự động. người dùng nên gọi chức năng này
mỗi khi phát hiện sự kiện ARP trên NIC
Yêu cầu
Chỉ rõ cho toàn bộ thư viện
Ví dụ

Đoቹ á n toቷ t nghiệ p


Eth_Arp_Response();

33


×