Ghép nối giữa CC1010 với các loại cảm biến

Một phần của tài liệu Thiết kế chế tạo vận hành và đo thử nghiệm mạng cảm nhận không dây (Trang 56)

3.2.1 Ghép nối với cảm biến áp suất MS5535:

Cảm biến áp suất MS5535 cũng là cảm biến số nối tiếp. Nó cũng có cùng nguyên tắc làm việc nhƣ cảm biến số nối tiếp đã giới thiệu ở trên. Tuy nhiên nó cũng có sự khác biệt. Đó là chân dữ liệu DATA có 2 chân là DIN và DOUT, đồng thời có thêm 1 chân Master Clock (MCLK) để làm xung nhịp cho MS5535. Sơ đồ giao tiếp giữa vi điều khiển CC1010 và MS5535 nhƣ sau:

Trong đó:

MCLK: Master Clock của MS5535 DIN: chân dữ liệu vào cho MS5535 DOUT: chân dữ liệu ra cho MS5535

MS-5535 MCLK DIN DOUT SCLK GND VDD VDD P3.4 GND P1.1 P0.3 P1.0 CC1010EM

Hình 3.5. Sơ đồ giao tiếp giữa MS-5535 và CC1010

SCLK: Serial Clock, đồng bộ quá trình đọc ghi dữ liệu cho MS5535

Trong sơ đồ trên hình 3.5, các cổng P0.3 đƣợc định nghĩa làm cổng vào dữ liệu, P1.0, P1.1, và P3.4 làm cổng ra dữ liệu. Để xử lý tình huống này, sử dụng các lệnh chƣơng trình nhƣ sau:

clr P1DIR.0 ;for SCLK MS5535

clr P1DIR.0 ;for DIN MS553

setb P0DIR.3 ;for DOUT MS553

clr P2DIR.3 ;for MSCLK MS5535

Trong đó ghi mức “1” ra cổng P0.0 các lệnh đƣợc hiểu nhƣ sau: clr P0DIR.0 ; đặt bit hƣớng là ghi ra

setb P0.0 ; xuất dữ liệu

Giá trị dữ liệu và tín hiệu trên các cổng vào ra này đƣợc xác định nhờ sử dụng các bộ định thời/đếm và chế độ ngắt của vi mạch CC1010.

Các bộ định thời, các ngắt, tín hiệu SCLK, MCLK và đầu đo MS-5535.

CC1010 có 4 timer/counter trong đó có 2 timer/counter theo chuẩn 8051, 2 Timer còn lại là timer 3 và timer 4, hoạt động ở chế độ timer hoặc chế độ điều chế độ rộng xung PWM (Pulse Width Modultion). Timer 2 /Timer 3 làm việc ở chế độ PWM khi thiết lập bit TCON2.M2/TCON2.M3. Các cổng P3.4 / P3.5 lúc này là các lối ra, thông qua việc lập các bit hƣớng P3DIR.4 / P3DIR.5. Chu kỳ PWM

TnPWM đối với timer n đƣợc tính là:

fsystem e Tn

TnPWM 255.( Pr 1)

Trong đó thời gian ở trạng thái cao Tnh là:

fsystem e Tn Tn

TnhPWM .( Pr 1)

Điều này có nghĩa là trong chế độ PWM, nếu Tn = 0 thì có mức thấp ở đầu ra và nếu Tn = 255 thì có mức cao. Trong sơ đồ hình 3.6, Timer2 ở chế độ PWM tạo

xung Master clock. cho MS-5535, tần số 29kHz. Tần số này phát trên cổng P3.4 bằng các lệnh:

orl TCON2,#0x01 ;đặt Timer 2 ở chế độ PWM mov T2Pre,#1 ;đặt chu kỳ PWM bằng 29kHz

mov T2,#128 ;xung vuông đối xứng setb TR2 ;bắt đầu phát xung

Làm tƣơng tự nhƣ vậy cũng thu đƣợc chuỗi xung SCLK phát trên cổng P1.0.

Chƣơng trình thực hiện

Chƣơng trình làm việc với MS5535 theo các bƣớc sau:

Bƣớc 1: Khởi tạo MS5535.

- Đặt bit hƣớng P3.4, P1.1, P1.0 là hƣớng xuất dữ liệu ra (output) tƣơng ứng là các chân MCLK, DIN và SCLK của MS5535.

- Đặt bit hƣớng P0.3 là hƣớng đọc dữ liệu vào tƣơng ứng (input) là chân DOUT của MS5535.

- Phát xung tần số 29 kHz ra cổng P3.4 để làm Master Clock cho MS5535. - Đọc các hệ số bù nhiệt của MS5535.

Bƣớc 2: Đọc các tham số áp suất và nhiệt độ của MS5535. - Reset MS5535.

- Phát lệnh cho MS5535. Lệnh ở đây có thể là đọc nhiệt độ hay áp suất. - Đọc giá trị trả về từ MS5535.

- Dựa trên giá trị trả về và các hệ số đọc đƣợc ở bƣớc 1, tính giá trị nhiệt độ và áp suất tƣơng ứng.

Chi tiết về làm việc với đầu đo áp suất MS5535 xin xem thêm phần tham khảo [13] và chƣơng trình ở phần phụ lục.

3.2.2 Ghép nối với cảm biến nhiệt độ dạng tƣơng tự

ADCi: ADC0, ADC1, ADC2

Các lối vào AD0, AD1, AD2 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. Thí dụ, trong hệ thống nói trên, lối ra của đầu đo nhiệt độ đƣợc đƣa tới AD0 và chƣơng trình khởi tạo qúa 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 1,25V internal, bộ biến đổi ADC ở chế độ hoạt động (active ADC). 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 đƣợc xóa tự động. Thời gian đợi chuyển đổi thể hiện qua việc quét bit ADCRUN:

jb ADCRUN,$

Giá trị chuyển đổi đọc ở 2 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 từ 0 vôn đến 1,25 vôn.

Chƣơng trình thực hiện

Chƣơng trình đọc giá trị ADC thực hiện theo các bƣớc sau:

Cảm biến CC1010

VDD VDD

GND GND

ADCi

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à 1,25V

Bƣớc 2: Đọc giá trị ADC - Chọn kênh ADC - Ra lệnh đọc ADC

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

3.3 Kết luận:

Chức năng cảm nhận là một trong những chức năng chính của một nút mạng trong WSN. Do đó nút mạng cần phải có khả năng ghép nối đƣợc với nhiều loại cảm biến khác nhau.

Chƣơng III đã giới thiệu tổng quan về cảm biến nói chung và các bƣớc cụ thể để giao tiếp giữa vi điều khiển và cảm biến số nối tiếp. Đồng thời đã xây dựng đƣợc cách làm việc cụ thể với cảm biến áp suất MS5535 cũng là loại cảm biến số nối tiếp. Việc giao tiếp giữa cảm biến số nối tiếp đƣợc thực hiện qua các chân cổng của CC1010. Còn việc giao tiếp giữa cảm biến tƣơng tự với vi điều khiển đƣợc thực hiện qua 3 lối vào tƣơng tự của CC1010, đó là các chân AD0, AD1, AD2. Qua đó cho thấy rằng CC1010 hoàn toàn có thể làm việc đƣợc với nhiều loại cảm biến khác nhau, bao gồm cả cảm biến tƣơng tự và cảm biến số.

CHƢƠNG 4 PHẦN MỀM NHÚNG

4.1 Phần mềm nhúng

4.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. Lý do của 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 ràng buộc về tốc độ xử lý, dung lƣợng bộ nhớ và mức tiêu thụ điện năng... Một phần mềm nhúng tốt là phần mềm 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 ngày 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ách sau:

o 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.

o 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á xem các ràng buộc đƣa ra có thỏa mãn hay không.

Để làm đƣợc nhƣ vậy thì thực chất 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 với 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ể cân đối. Do phải thỏa 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 phát triển phần mềm nhúng ngày nay, nhƣ:

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

o Xây dựng mô hình các thuộc tính phi chức năng.

o Chuyển đổi các phần mềm thành các dịch vụ thông qua các thành phần phần mềm.

o Kiến trúc hệ thống và kiến trúc phần mềm.

o Đánh giá và kiểm định mức hệ thống.

o Tƣơng thích phần cứng và phần mềm nhờ các cấu trúc có thể định cấu hình lại và các thành phần Plug and Play.

o Xây dựng các hệ thống có khả năng tổ hợp đƣợc nhờ các thành phần phần mềm có thể tái sử dụng.

4.1.2 Các bƣớc cơ bản xây dựng một phần mềm nhúng

Phần mềm nhúng viết cho các họ vi xử lý có thể sử dụng các ngôn ngữ khác nhau nhƣ C/C++ hoặc Assembler. Tuỳ theo tiêu chí xây dựng hệ thống mà lựa chọn ngôn ngữ thích hợp. Từ đó cũng chọn chƣơng trình dịch thích hợp. Ngày nay, do nhu cầu phát triển hệ thống nhanh, bảo trì dễ dàng nên ngôn ngữ đƣợc lựa chọn thƣờng là ngôn ngữ cấp cao nhƣ C/C++.

Quy trình xây dựng một phần mềm bất kỳ thƣờng trải qua các bƣớc sau: - Tìm hiểu bài toán

- Phân tích

- Thiết kế

- Viết chƣơng trình - Kiểm thử

Việc xây dựng phần mềm nhúng cũng tuân theo trình tự các bƣớc nhƣ trên. Ngoài ra, phần mềm nhúng còn có đặc trƣng là làm việc trực tiếp với phần cứng. Do đó để kiểm soát quá trình làm việc với các thành phần chấp hành có đúng đắn hay không là điều đặc biệt quan trọng.

4.1.3 Phần mềm nhúng viết cho CC1010

Phần mềm nhúng viết cho CC1010 đƣợc viết bằng ngôn ngữ C, sử dụng các thƣ viện cho CC1010 do hãng Chipcon cung cấp, chƣơng trình biên dịch Keil uVision 2.0

Chƣơng trình dịch Keil uVision 2.0 do hãng Keil Elektronik GmbH xây dựng là một môi trƣờng phát triển tích hợp (IDE) dùng để xây dựng các chƣơng trình cho các họ VĐK tƣơng thích 8051 của Intel. Đây là bộ chƣơng trình dịch cho phép ngƣời viết chƣơng trình soạn thảo chƣơng trình, dịch chƣơng trình và gỡ lỗi trên cùng một môi trƣờng. Chƣơng trình dịch hỗ trợ cho cả ngôn ngữ C và Assembly.

Hãng Chipcon cũng cung cấp bộ thƣ viện CC1010IDE hỗ trợ cho việc xây dựng phần mềm cho VĐK CC1010. Đây là bộ thƣ viện giúp cho việc xây dựng chƣơng trình cho CC1010 đƣợc dễ dàng và nhanh chóng.

CC1010IDE dựa trên công cụ phát triển “uVision2” của hãng Keil ™ Elektronik GmbH. Công cụ này cung cấp một khung (framework) cho hầu hết các đặc điểm của CC1010IDE và cũng hỗ trợ hầu hết cho các VĐK họ 8051. Trình soạn thảo là một công cụ chủ yếu để soạn thảo các file nguồn và file hợp ngữ. Nó cũng cung cấp các chức năng trợ giúp khác nhƣ giao diện đồ hoạ (Graphic User Interface - GUI), cần cho mô phỏng/gỡ lỗi (mã lệnh dạng hợp ngữ, thanh ghi, bộ nhớ, các cửa sổ theo dõi, bƣớc lệnh, …). Thêm vào đó, IDE cũng cung cấp các giao diện với thƣ viện liên kết động (Dynamic Linking Library – DLL) đƣợc sử dụng để mô phỏng và gỡ lỗi trên mạch. Một điểm đặc biệt của bộ dịch là có thể chuyển các file nguồn đƣợc viết bằng C sang dạng hợp ngữ, để sau đó có thể tối ƣu hoá mã lệnh. Dạng hợp ngữ sau đó đƣợc chuyển thành các file đối tƣợng (mã máy hoặc dữ liệu nhị phân). Cuối cùng, bộ liên kết đƣa ra dạng file thực thi dạng Intel HEX và có thể nạp vào bộ nhớ Flash của VĐK.

Các file định nghĩa phần cứng - Hardware Definition Files (HDF)

Các file định nghĩa phần cứng định nghĩa địa chỉ các thanh ghi, ánh xạ vectơ ngắt và các hằng số phần cứng khác. Chúng cũng thƣờng dùng các macro cho CC1010EB, và các định nghĩa hỗ trợ hợp ngữ và ngôn ngữ C.

Thƣ viện phần cứng - Hardware Abstraction Library (HAL)

Để hỗ trợ việc phát triển chƣơng trình nhanh chóng và dễ dàng, Chipcon cung cấp thƣ viện các macro và các hàm truy cập phần cứng C1010 dễ dàng. Những thƣ viện này nằm trong Thƣ Viện Phần Cứng (HAL) và thi hành một giao tiếp phần cứng trừu tƣợng đối với chƣơng trình ngƣời dùng. Nhờ đó chƣơng trình ngƣời dùng có thể truy cập ngoại vi của vi điều khiển, thông qua các lời gọi hàm/macro, mà không cần hiểu chi tiết về phần cứng.

Thƣ viện HAL hỗ trợ các chức năng sau: - Truyền nhận không dây

- Đo cường độ RSSI

- Truyền nhận RS232

- Làm việc với ADC

- Xử lý thời gian thực - Mã hoá DES - Thiết lập các bộ định thời - Làm việc với các cổng Chƣơng trình ứng dụng Các file định nghĩa phần cứng (Hardware definition file - HDF) Thƣ viện phần cứng

(Hardware abstraction library – HAL) Thƣ viện tiện ích Chipcon

(Chipcon utility library-CUL) Thƣ viện C

Thƣ viện tiện ích Chipcon - Chipcon Utility Library (CUL)

Bên cạnh module HAL CC1010IDE cũng cung cấp một thƣ viện cho truyền thông RF đặt trong Thƣ Viện Tiện Ích (CUL). Thƣ viện này thƣờng dùng cho các ứng dụng RF điển hình, và cung cấp một giao thức RF đầy đủ.

Thƣ viện CUL hỗ trợ các chức năng sau: - Truyền nhận không dây

- Tính toán Mã dư vòng (CRC)

- Xử lý Thời gian thực (Realtime Clock)

Cả hai thƣ viện HAL và CUL đều hỗ trợ Truyền nhận không dây và xử lý thời gian thực. Tuy nhiên, các hàm ở thƣ viện CUL làm việc ở mức cao hơn, ngƣời viết chƣơng trình cũng dễ dàng và tiện lợi hơn, nhƣng bù lại cũng kém mềm dẻo hơn so với sử dụng các hàm ở thƣ viện HAL. Do vậy, đối với những ứng dụng đòi hỏi sự phức tạp thì thƣờng dùng thƣ viện HAL.

Phần mềm WSN viết cho CC1010

Phần mềm viết cho nút mạng cho WSN cần thực hiện những chức năng cơ bản sau:

o Cảm nhận

o Tính toán

o Truyền thông

Một thách thức là phải thực hiện tất cả những công việc trên vào một VĐK bị ràng buộc về mặt tài nguyên. Điều đó đòi hỏi chƣơng trình viết càng ngắn và càng tốn ít bộ nhớ càng tốt, trong khi vẫn đảm bảo việc viết chƣơng trình nhanh, bảo trì và nâng cấp dễ dàng.

Việc thực hiện cảm nhận và tính toán đã đƣợc đề cập chi tiết tại chƣơng III. Còn thực hiện việc truyền thông, chƣơng trình sử dụng các hàm trong bộ thƣ viện HAL của Chipcon.

o Khởi tạo RF: thiết lập tần số RF, tốc độ truyền, cách điều chế tín hiệu, công suất phát. Trong chƣơng trình cụ thể, các thông số trên lần lƣợt có giá trị là: 868MHz, 2.4kb/s, mã hoá Manchester, 4 dBm. Các khai báo này đƣợc đặt trong một cấu trúc RF_SETTINGS đƣợc khai báo nhƣ sau:

RF_RXTXPAIR_SETTINGS code RF_SETTINGS = {

0x4B, 0x2F, 0x15, // Modem 0, 1 and 2: Manchester, 2.4 kBaud 0x75, 0xA0, 0x00, // Freq A

0x58, 0x32, 0x8D, // Freq B 0x01, 0xAB, // FSEP 1 and 0 0x40, // PLL_RX 0x30, // PLL_TX 0x6C, // CURRENT_RX 0xF3, // CURRENT_TX 0x32, // FREND 0xFF, // PA_POW 4dBm 0x00, // MATCH 0x00, // PRESCALER };

Việc khởi tạo RF theo các bƣớc trình tự sau:

halRFCalib(&RF_SETTINGS, &RF_CALDATA); //chuẩn hoá RF

INT_GLOBAL_ENABLE (INT_OFF); //cấm ngắt toàn cục

INT_SETFLAG (INUM_RF, INT_CLR); //xoá ngắt RF

INT_PRIORITY (INUM_RF, INT_HIGH); //mức ƣu tiên ngắt RF là cao

RF_SET_BYTEMODE(); //RF hoạt động ở chế độ byte

RF_SET_PREAMBLE_COUNT(PREAMBLE_BYTE_COUNT); //thiết lập số

RF_SET_SYNC_BYTE(RF_SUITABLE_SYNC_BYTE);//thiết lập byte đồng bộ MODEM1=(MODEM1&0x03)|0x24; //lọc trung bình

// Reset preamble detection PDET &= ~0x80;

PDET |= 0x80;

INT_ENABLE (INUM_RF, INT_OFF); //cấm ngắt ngắt RF INT_GLOBAL_ENABLE (INT_ON); //cho phép ngắt toàn cục

o Nhận dữ liệu RF: việc nhận dữ liệu RF thông qua ngắt. Mỗi khi nhận đƣợc một byte, VĐK sinh ra một ngắt. Chƣơng trình xử lý ngắt có nhiệm vụ đƣa byte này vào một bộ đệm. Khi toàn bộ gói tin đã nhận xong, ngắt này bị cấm để chờ xử lý xong bộ đệm.

Một phần của tài liệu Thiết kế chế tạo vận hành và đo thử nghiệm mạng cảm nhận không dây (Trang 56)

Tải bản đầy đủ (PDF)

(137 trang)