Mạch ứng dụng RF

Một phần của tài liệu Ghép nối đầu đo áp suất cho nút mạng cảm nhận không dây với phần mềm nhúng (Trang 42)

Bộ thu phát RF đòi hỏi rất ít các thiết bị ngoại vi. Một mạch ứng dụng điển hình được thể hiện ở hình 2.2. Các giá trị cụ thể của các thành phần xin xem thêm Tài liệu tham khảo [4].

Hình 2.2: Mạch ứng dụng RF điển hình.

Tương ứng vào/ra: Cặp C31/L32 là đầu vào của bộ nhận, nội trở của L32 có tác dụng định thiên một chiều. C41, L41 và C42 được dùng để tương ứng với bộ truyền có trở kháng 50Ω. Bộ chuyển T/R làm cho nó có thể nối với lối vào và ra với nhau và tương thích với bộ truyền 50Ω ở cả hai chế độ RX và TX.

Nguồn: các tụ tách và lọc nguồn cung cấp cần được sử dụng (trong sơ đồ mạch ứng dụng không chỉ ra phần này). Các tụ này càng đặt gần chân nguồn càng tốt. Vị trí và kích thước của tụ tách và lọc nguồn cần được chú ý để đạt được độ nhạy tốt nhất.

2.2.2.6.3. Điều khiển bộ thu phát RF và quản lý năng lƣợng.

Thanh ghi RFMAIN điều khiển chế độ hoạt động (RX hay TX), sử dụng hai thanh ghi tần số và các chế độ tiết kiệm năng lượng. Theo cách này vi điều khiển CC1010 có được sự mềm dẻo để quản lý công suất RF nhằm đạt được chính xác năng lượng tiêu thụ đòi hỏi và các ứng dụng chỉ sử dụng pin. Các chế độ năng lượng khác nhau được điều khiển thông qua các bít riêng biệt trong thanh ghi RFMAIN. Các bít này điều khiển phần RX, TX, bộ tổ hợp tần số và bộ dao động thạch anh.. Sự điều khiển riêng biệt này có thể tối ưu hoá để làm cho dòng tiêu thụ thấp nhất có thể trong các ứng dụng nào đó. Một thứ tự bật nguồn điển hình để đạt được dòng tiêu thụ thấp nhất thể hiện ở hình 2.3. Trong hình vẽ này giả thiết tần số A dùng cho RX và tần số B dùng cho TX. Nếu không cần đến trường hợp này thì đảo lại thiết lập cho F_REG.

RX hay TX Bật RX: RFMAIN: RXTX=0, F_REG=0 RX_PD=0, FS_PD=0 CURRENT=”RX current” Chờ 250 s Bật TX: PA_POW=00h RFMAIN: RXTX=1, F_REG=1 TX_PD=0, FS_PD=0 CURRENT=”RX current” Chờ 250 s Chế độ RX Chế độ TX Tắt RX: RFMAIN: RX_PD=1, FS_PD=1 Tắt TX: RFMAIN: TX_PD=1, FS_PD=1 PA_POW=00h Tắt RF Tắt RF Hình 2.3. Tuần tự bật thu phát RF

2.2.2.6.4. Điều chế dữ liệu và các chế độ dữ liệu.

Có bốn chế độ dữ liệu khác nhau có thể lập trình được qua MODEM0.DATA_FORMAT. Các chế độ này khác nhau ở cách mã hoá dữ liệu, cách dữ liệu đến và đi và được chấp nhận, và liệu có sự đồng bộ hóa luồng bit hay không. Định dạng dữ liệu cần được chọn trước khi bộ thu phát RF hoạt động.

Hai trong số các chế độ, chế độ đồng bộ NRZ và chế độ đồng bộ Manchester, truyền hay nhận dữ liệu có tốc độ baud được thiết lập trong MODEM0.BAUDRATE. Modem thực hiện đồng bộ hoá trong suốt quá trình nhận. các chế độ NRZ và Manchester chấp nhận và truyền dữ liệu theo cả hai cách một bit hay một byte trong cùng một thời điểm, có thể lập trình được qua RFCON.BYTEMOD. Dữ liệu được truyền đi hay nhận về được đặt trong thanh ghi RFBUF. Tuỳ thuộc vào ngắt RF có được cho phép hay không (EIE.RFIE) mà việc truyền/nhận dữ liệu có thể được điều khiển bởi chương trình phục vụ ngắt hay có thể được thực hiện bằng cách hỏi (polling).

Hai chế độ khác, Transparent mode và UART mode, chỉ đơn giản là truyền dữ liệu FSK và thanh ghi RFBUF và UART0, cho phép lựa chọn tốc độ và mã hoá dữ liệu.

Chipcon khuyên dùng các chế độ đồng bộ, các chế độ dữ liệu khác bỏ qua mạch quyểt định dữ liệu của bộ thu phát RF và không hỗ trợ chế độ bytemode, chế độ Transparent mode chỉ dùng để kiểm thử.

2.2.2.6.5. Tốc độ Baud.

Bit điều khiển MODEM0.BAUDRATE thiết lập tốc độ từ 0.6kBaud đến 76.8kBaud. MODEM0.XOSC_FREQ cũng phải được thiết lập tuỳ vào tinh thể thạch anh đang sử dụng.

Tốc độ baud được tính theo công thức:

kbaud f XO BAUDRATE RF XO BAUDRATE 6 . 0 3.6864MHz SC_FREQ 2 _   SC 

Trong đó: RF_BAUDRATE là tốc độ tính theo Baud.

BAUDRATE và XOSC_FREQ là các bit điều khiển trong MODEM0. Sử dụng một trong các thạch anh chuẩn đặt trong MODEM0.XOSC_FREQ sẽ đặt ra các tốc độ chuẩn 0.6, 1.2, 2.4, 4.8, 9.6, 19.2, 38.4, hay 76.8 kbaud. Các tần số thạch anh khác nhau sẽ quy định các tốc độ khác nhau. Tốc độ nhỏ hơn 19.2kbaud có

thể được tạo ra bởi bất kì tần số thạch anh nào. Tốc độ lớn hơn 19.2kbaud cần có thêm các sự kết hợp như đưa ra trong bảng 2.2.

MODEM0. BAUDRAT E /XOSC fxosc (MHz) RF_BAUDRATE (kBaud) 3.6864 7.3728 11.0592 14.7456 18.4320 22.1184 0.6 0/0 0/1 0/2 0/3 0/4 0/5 1.2 1/0 1/1 1/2 1/3 1/4 1/5 2.4 2/0 2/1 2/2 2/3 2/4 2/5 4.8 3/0 3/1 3/2 3/3 3/4 3/5 9.6 4/0 4/1 4/2 4/3 4/4 4/5 19.2 5/0 5/1 5/2 5/3 5/4 5/5 38.4 NA 5/0 NA 5/1 NA 5/2 76.8 NA NA NA 5/0 NA NA

Bảng 2.2: Tốc độ Baud theo tần số thạch anh

2.2.2.6.6. Truyền và nhận dữ liệu.

Trong chế độ Transparent hay UART dữ liệu đi hay đến được đưa trực tiếp tới bộ điều chế trong chế độ truyền và được nhận trực tiếp trong chế độ nhận.

Trong các chế độ NRZ và Manchester dữ liệu được lưu tại RFBUF như được minh hoạ ở hình 2.4.

Quá trình truyền:

Khi đặt RFCON.BYTEMODE = 1 thì dữ liệu truyền theo bytemode, một thanh ghi 8 bit sẽ dịch từng bit tời bộ điều chế theo nguyên tắc bit cao nhất MSB truyền

trước tiên, chu kì phụ thuộc vào tốc độ được lựa chọn. Khi thanh ghi dịch này rỗng sẽ nạp một byte mới từ RFBUF và tiếp tục dịch bit. Nội dung của thanh ghi RFBUF không thay đổi sau khi thanh ghi dịch này lấy dữ liệu từ nó. Khi một ngắt được tạo ta (EICON.RFIF), RFBUF có thể được nạp vào byte dữ liệu mới. Nếu byte mới không được nạp trong chu kì 8 bit (chu kì 8bit trong chế độ NRZ và chu kì 16baud trong chế độ Manchester) thì thời điểm tiếp theo thanh ghi dịch rỗng sẽ lấy lại dữ liệu cũ của thanh ghi RFBUF.

Ở chế độ bitmode (khi RFCON.BYTEMODE = 0) cũng xảy ra hiện tượng tương tự như bytemode nhưng chỉ truyền một bít tại một thời điểm. Theo đó, thanh ghi dịch sẽ bạp bit mới từ RFBUF.0 sau khi truyền một bit đi, và ngắt RF được tạo ra để báo có bit mới được nạp. Để ghi bit tiếp theo vào RFBUF.0 trong một chu kì bit ở tốc độ cao nên sử dụng vòng quét nhanh (tight polling loop) thay vị thủ tục truyền dựa trên ngắt.

Để bắt đầu truyền dữ liệu ngay khi có thể, bit/byte đầu tiên được truyền được ghi vào RFBUF trước khi bộ điều chế hoạt động (RFMAIN.TX_PD = 0). Nó sẽ ngay lập tức được nạp vào thanh ghi dịch và một yêu cầu ngắt được tạo ra cho bit/byte thứ hai được truyền. Điều này đặc biệt quan trọng khi tính đến việc lưu trữ dữ liệu tại cuối một quá trình truyền.

Khi bit/byte cuối cùng của một frame hay một packet được nạp vào thanh ghi dịch nó vẫn không được truyền đi. Như vậy yêu cầu ngắt được tạo ra tại cùng thời điểm không bị dừng đối với cả phần tương tự hay số của một quá trình truyền. Quá (adsbygoogle = window.adsbygoogle || []).push({});

Thanh ghi dịch 8 bit

RFBUF Nhân 8051 Điều chế truyền không dây Giải điều chế nhận không dây LSB

trình truyền không thể kết thúc một cách an toàn cho tới chu kì 9bit cuối cùng của chế độ bytemode và chu kì 2bit trong chế độ bitmode, khi bit cuối cùng được dịch và được truyền tới anten.

Một giải pháp đơn giản là luôn luôn truyền 2byte mở rộng trong chế độ bytemode hay 2bit mở rộng trong chế độ bitmode ở cuối quá trình truyền dữ liệu. Điều này không gây ra vấn đề gì trong thực tế.

Quá trình nhận:

Khi nhận dữ liệu, lược đồ nhận sẽ hoạt động ngược với quá trình truyền. Từng bit từ bộ giải điều chế được dịch vào thanh ghi dịch 8bit với bit cao nhất MSB trước tiên. Khi thanh ghi dịch đầy nó được nạp vào RFBUF và một yêu cầu ngắt được sinh ra (EICON.RFIF). Byte cần được đọc trong chu kì 1byte (chu kì 8baud trong chế độ NRZ và chu kì 16baud trong chế độ Manchester). Nếu không nó sẽ bị ghi đè bởi byte nhận được tiếp theo và dữ liệu sẽ bị mất.

Trong chế độ bitmode quá trình đệm cũng xảy ra tương tự, nhưng mỗi bit tại một thời điểm. Theo đó khi một bit mới tới từ bộ giải điều chế, thanh ghi dịch sẽ lưu nó và lưu bit cuối cùng vào RFBUF.0, lần lượt tạo ra các yều cầu ngắt để có thể đọc được các bit mới. Để có thể đọc bit tiếp theo từ RFBUF.0 trong chu kì 1bit ở tốc độ cao nên sử dụng vòng quét nhanh thay vì dựa vào ngắt. Không có sự cân nhắc đặc biệt nào đối với thời điểm bắt đầu hay kết thúc quá trình nhận.

2.2.2.7. Module CC1010EM.

Để dễ dàng và thuận tiện cho việc phát triển các ứng dụng sử dụng vi điều khiển CC1010, hãng Chipcon cũng cung cấp module CC1010EM (Evaluation Module) trên đó có tích hợp hầu hết các linh kiện cần cho việc xây dựng một nút mạng như:

- Vi điều khiển CC1010. - Dao động thạch anh. - Antena.

- Một cảm biến nhiệt độ đưa vào chân AD1. - Các chân cổng.

Việc xây dựng thử nghiệm trong khuôn khổ khoá luận này chúng tôi cũng dùng module CC1010EM. Việc thử nghiệm sau này đã cho thấy rằng module này đã đáp ứng được các chức năng cơ bản của nút mạng đó là hai chức năng mạng và cảm nhận.

2.3. Ghép nối nút mạng CC1010 với đầu đo áp suất - mức nƣớc.

Trên đây chúng ta đã tìm hiểu về đầu đo áp suất cùng các đặc tính cơ bản của nó và chúng tôi cũng đã giới thiệu về nút mạng cảm nhận không dây sử dụng vi điều khiển CC1010. Ở phần này sẽ là cách thức ghép nối đầu đo với nút mạng.

Sơ đồ tổ chức tổng quát của việc ghép nối và truyền nhận dữ liệu như hình 2.6 và sơ đồ ghép nối giữa vi điều khiển với đầu đo ở hình 2.7.

Hình 2.5: Module CC1010EM Cảm biến VĐK có tích hợp thu phát RF (Slave) VĐK có tích hợp thu phát RF (Master) Máy tính RS232

Hình 2.6: Sơ đồ tổng quát của mạng có 2 nút mạng

Đầu đo áp suất - mức nước CC1010 VDD VDD GND GND ADCi

Trong đó: ADCi là các lối vào AD0, AD1 và AD2.

Các lối vào ADCi của CC1010 có điện áp tham chiếu chọn là 1.25V hoặc VDD, sử dụng chung một ADC trên cơ sở hợp kênh lối vào. Trong khoá luận này chúng tôi chọn tham chiếu cho ADC là VDD, tức là bằng 3.5V, như đã nói ở mục 1.3.3.

Thí dụ, trong hệ thống nói trên, lối ra của đầu đo sau khi được khuếch đại thì đưa tới AD0 và chương trình khởi tạo quá trình chuyển đổi tương tự - số qua ADC phải tiến hành bằng lệnh:

mov ADCON,#0Ch

Tức là chọn kênh AD0, điện áp tham chiếu 3.5V, bộ biến đổi ADC ở chế độ hoạt động. Lệnh bắt đầu chuyển đổi ADC:

setb ADCRUN

Khi ADC thực hiện xong việc chuyển đổi tương tự - số, bit ADCRUN tự động xoá. Thời gian đợi chuyển đổi được thể hiện qua việc quét bit ADCRUN:

jb ADCRUN,$

Giá trị chuyển đổi đọc ở hai thanh ghi ADDATL(7:0) và ADDATH(9:8). Giá trị đọc được từ 0 đến 1023 tương ứng với điện áp lối vào ADC từ 0 đến 3.5V.

Chương trình đọc giá trị ADC được thực hiện theo các bước sau: Bước 1: Khởi tạo ADC:

- Đặt bộ biến đổi ADC về chế độ single. - Đặt điện áp tham chiếu là 3.5V

Bước 2: Đọc giá trị ADC: (adsbygoogle = window.adsbygoogle || []).push({});

- Chọn kênh ADC. - Ra lệnh đọc ADC.

- Chờ cho ADC biến đổi xong. - Đọc giá trị chuyển đổi.

2.4. Kết luận.

Chương 2 đã giới thiệu khái quát các khái niệm, ứng dụng của mạng cảm nhận không dây. Hầu hết các ứng dụng của WSN đều thuộc ba một trong ba ứng dụng là: thu thập dữ liệu môi trường, giám sát an ninh và theo dõi đối tượng. Mỗi dạng ứng dụng đều có mục đích và nguyên tắc làm việc riêng, qua đó đòi hỏi phải có các hệ thống khác nhau, tuy nhiên chúng đều có chung các chỉ tiêu đánh giá hệ thống là giống nhau mà tuỳ ứng dụng cụ thể có cách đánh giá các chỉ tiêu đó là khác nhau.

Chương này cũng đã giới thiệu một số loại vi điều khiển có thể được dùng làm nút mạng cảm nhận trong hệ thống WSN theo các tiêu chí: năng lượng tiêu thụ thấp, tính mềm dẻo, sức mạnh, tính bảo mật, truyền thông, khả năng tính toán, kích thước của nút mạng. Từ đó đã chọn được loại vi điều khiển CC1010 của hãng Chipcon – Nauy để làm nút mạng. Đây là loại vi điều khiển tương thích họ 8051 thông dụng, sử dụng ngôn ngữ lập trình C và chương trình dịch Keil uVision2. Bên cạnh đó Chipcon cũng cung cấp các thư viện làm việc với CC1010 giúp cho việc viết chương trình trở nên dễ dàng và thuận tiện hơn.

Đồng thời chương này đã giới thiệu các bước để giao tiếp giữa vi điều khiển và vi cảm biến, cụ thể là với cảm biến đo áp suất - một loại cảm biến tương tự. Việc ghép nối giữa cảm biến tương tự và vi điều khiển CC1010 được thực hiện qua ba lối vào tương tự của CC1010 là AD0, AD1 và AD2. Từ đó cho thấy rằng CC1010 hoàn toàn có thể làm việc tốt với cảm biến tương tự.

Việc giao tiếp giữa vi điều khiển CC1010 và cảm biến tương tự sử dụng chương trình nhúng sẽ được giới thiệu trong chương tiếp theo – chương 3.

CHƢƠNG 3

CHƢƠNG TRÌNH NHÚNG TRUYỀN/NHẬN THÔNG QUA NÚT MẠNG CƠ SỞ.

3.1. Giới thiệu về chƣơng trình nhúng.

3.1.1. Tổng quan về phần mềm nhúng.

Phần mềm nhúng đang có những bước đột phá mới tạo ra những cuộc cách mạng triệt để trong tương lai. Sự phát triển này xuất phát từ những nhu cầu bức thiết của thực tế và những bước tiến mạnh mẽ trong công nghệ phần cứng. Một phần mềm nhúng phải kết hợp chặt chẽ với môi trường của nó bao gồm phần cứng và các hệ thống liên quan. Nó có những rang buộc vế tốc độ xử lý, dung lượng bộ nhớ và các mức tiêu thụ điện năng… Một phần mềm nhúng tốt là phải đảm bảo các yếu tố trên và đó cũng là hướng phát triển quan trọng của các phần mềm nhúng. Điểm mấu chốt của các phần mềm nhúng hiện nay là việc lựa chọn các phương pháp thực thi của một chức năng giống như một thành phần phần cứng nhưng theo một cách riêng. Vì vậy mà không thể bỏ đi các tính năng “cứng” của phần mềm như các phần mềm truyền thống khác. Một phần mềm nhúng ngày nay được phát triển theo các cách sau:

- Liên kết phần mềm nhúng từ dưới lên trên, từ các lơp trừu tượng đến các chức năng hệ thống.

- Liên kết phần mềm nhúng với các nền lập trình được – các nền hỗ trợ nó cung cấp các phương tiện cần thiết để đánh giá các rang buộc đưa ra có thoả mãn nữa hay không.

Để làm được như vậy thì cần phải phát triển các kĩ thuật hình thức ở mức trừu tượng để có những đánh giá sớm cùng các nhóm công cụ và phương pháp đúng đắn. Mặt khác cũng cần phải xem xét phần mềm nhúng và kiến trúc phần cứng của nó trong một tổng thể hoàn chỉnh. Do phải thoã mãn nhiều yếu tố khác nhau về phần cứng, môi trường, giá thành, hiệu năng nên tồn tại nhiều thách thức trong việc phát triển phần mềm nhúng hiện nay như:

- Tăng cường việc tái sử dụng.

- Đồng thiết kế phần cứng, phần mềm.

Một phần của tài liệu Ghép nối đầu đo áp suất cho nút mạng cảm nhận không dây với phần mềm nhúng (Trang 42)