Nội Dung Chính
(Trang 133)
Sau khi học xong bài này, em sẽ:
• Mô tả được cấu trúc, ứng dụng của một bo mạch lập trình vi điều khiển.
• Mô tả được công cụ lập trình của một bo mạch lập trình vi điều khiển.
Hình 25.1
Các thao tác lập trình trên máy tính truyền thống được thực hiện thông qua các thiết bị vào/ra tiêu chuẩn như bàn phím, chuột, màn hình (Hình 25.1). Vi điều khiển không có các thiết bị này, bằng cách nào ta có thể viết và nạp chương trình cho chúng?
I. GIỚI THIỆU VỀ BO MẠCH LẬP TRÌNH VI ĐIỀU KHIỂN
Vi điều khiển thường có tài nguyên phần cứng tối giản nên có thể không kết nối trực tiếp được với các thiết bị tiêu chuẩn trên máy tính cá nhân như bàn phím, con chuột hay màn hình. Vì vậy, trong đa số trường hợp, việc lập trình cho vi điều khiển thường được thực hiện trên máy tính, sau đó mới nạp vào vi điều khiển thông qua một thiết bị gọi là bo mạch lập trình.
Nhiệm vụ của một bo mạch lập trình là cung cấp các giao diện kết nối về điện và cơ khí nhằm đảm bảo tính tương thích và thuận tiện khi kết nối vì điều khiển với các thiết bị khác. Ngoài kết nối với máy tính, thông qua các giao diện này, ta có thể dễ dàng kết nối vi điều khiển với các cảm biến hay cơ cấu chấp hành bên ngoài, tạo ra nhiều giải pháp đo lường và điều khiển hữu ích trong cuộc sống.
(Trang 134)
i+ Thông tin bổ sung
Một số nhà sản xuất thường đóng gói luôn các phụ kiện cần thiết (dây nối, đầu chuyển đổi, cảm biến,...) đi cùng bo mạch lập trình để tạo thành bộ công cụ phát triển (development kit) cho vi điều khiển Hình 25.2. Người dùng có thể sử dụng các bộ công cụ phát triển này để tạo mẫu nhanh các hệ thống nhúng, rút ngắn thời gian kiểm chứng ý tưởng.
Hình 25.2. Một bộ công cụ phát triển cho vi điều khiển
II. CẤU TRÚC CỦA BO MẠCH LẬP TRÌNH VI ĐIỀU KHIỂN
Hình 25.3. Sơ đồ khối của một bo mạch lập trình vi điều khiển
Hiện nay, có rất nhiều bo mạch lập trình vi điều khiển; một bo mạch điển hình thường được tổ chức theo sơ đồ trên Hình 25.5 với các thành phần chính sau đây:
- Khối nguồn bao gồm giao diện với nguồn cấp điện ngoài và các mạch ổn áp, có nhiệm vụ cung cấp nguồn nuôi ổn định cho các khối chức năng khác trên bo mạch.
- Vi điều khiển là thành phần chính của bo mạch lập trình, nơi lưu trữ và thực thi các chương trình phần mềm được nạp từ máy tính vào bo mạch.
- Khối dao động phát ra chuỗi xung tuần hoàn để đồng bộ hoạt động của các khối chức năng bên trong vi điều khiển.
(Trang 135)
- Khối truyền thông: đa số vi điều khiển hiện nay chủ yếu sử dụng giao thức UART, trong khi các thiết bị bên ngoài thường sử dụng các chuẩn kết nối khác, ví dụ USB hay wifi. Do đó, khối truyền thông cung cấp giao diện chuyển đổi giữa các chuẩn truyền thông, giúp trao đổi dữ liệu giữa vi điều khiển và các thiết bị ngoài trở nên thuận lợi.
- Khối tín hiệu vào/ra cung cấp giao diện thuận tiện để kết nối các cổng vào/ra của vi điều khiển với cảm biến hay thiết bị chấp hành.
Ví dụ sơ đồ bố trí linh kiện thực tế của một bo mạch điều khiển Arduino Uno được cho trên Hình 25.4. Bên cạnh linh kiện của các khối chức năng cơ bản, còn có một số LED chỉ thị hay phiếm bấm reset dùng để hổ trợ quá trình kiểm thử và sửa lỗi phần mềm trên vi điều khiển.
Hình 25.4. Sơ đồ bố trí linh kiện trên bo mạch Arduino Uno
III. ỨNG DỤNG BO MẠCH LẬP TRÌNH VI ĐIỀU KHIỂN
Bo mạch lập trình vi điều khiển được sử dụng rộng rãi trong các thiết bị đo lường và điều khiển.
- Trong đo lường, bo mạch lập trình vi điều khiển được kết nối với cảm biến cho phép đọc dữ liệu từ cảm biến thông qua lệnh đọc cổng vào tương ứng phục vụ cho các ứng dụng giám sát thông số như giám sát nhiệt độ, độ ẩm, ánh sáng môi trường,... Hình 25.5 là ví dụ sử dụng bo mạch Arduino Uno kết nối với cảm biến để đo và giám sát độ ẩm đất.
Hình 25.5. Thu thập số liệu về độ ẩm đất sử dụng bo mạch Arduino Uno
(Trang 136)
- Trong điều khiển, bo mạch lập trình vi điều khiển kết nối với các thiết bị chấp hành cho phép điều khiển chúng theo kịch bản định trước, thông qua các lệnh ghi vào cổng ra tương ứng. Điều này cho phép, chúng ta phát triển các ứng dụng tự động như bật, tắt đèn, đóng, mở cửa,... Hình 25.6 là ví dụ sử dụng bo mạch Arduino Uno để điều khiển LED.
Hình 25.6. Điều khiển LED bằng bo mạch lập trình vi điều khiển
Kết nối năng lực
Hãy tìm hiểu thêm các ứng dụng khác của bo mạch lập trình vi điều khiển trong cuộc sống. Trong ứng dụng mà em tìm được, vi điều khiển thực hiện chức năng đọc hay ghi dữ liệu trên các cổng vào/ra của nó.
Luyện tập
1. Trong ví dụ trên Hình 25.5, nếu muốn chuyển dữ liệu từ cảm biến vào vi điều khiển thông qua cổng A0 thay vì cổng A2 thì ta cần thay đổi như thế nào?
2. Trong ví dụ trên Hình 25.6, nếu muốn bật LED thì ta cần ghi giá trị nào ra cổng số 9? Biết giá trị 1 tương ứng với mức điện áp 5 V và giá trị 0 tương ứng với mức điện áp 0 V.
IV. CÔNG CỤ LẬP TRÌNH CHO BO MẠCH LẬP TRÌNH VI ĐIỀU KHIỂN
1. Các bước lập trình cho vi điều khiển
Đa số các vi điều khiển phổ thông hiện nay được lập trình bậc cao bằng ngôn ngữ C hay các biến thể của nó. Từ mã nguồn viết bằng ngôn ngữ C, mỗi dòng vi điều khiển khác nhau có thể yêu cầu các chương trình dịch khác nhau để dịch ra mã máy phù hợp với kiến trúc của nó.
Các bước lập trình cho một bo mạch lập trình được minh họa trên Hình 25.7, bao gồm biên soạn mã nguồn theo một ngôn ngữ lập trình bậc cao, kiểm tra và sửa lỗi, biên dịch mã nguồn sang mã máy và nạp mã máy vào vi điều khiển.
Máy tính | Bo mạch lập trình vi điều khiển | ||||||||
Lập trình bậc cao | Biên dịch và nạp mã máy |
Nạp mã máy vào bộ nhớ |
Vi điều khiển | ||||||
Lập trình viên | ← | → | - Biên soạn mã nguồn - Sửa lỗi | → | - Biên dịch ra mã máy - Truyền mã máy sang bo mạch lập trình vi điều khiển | ↔ | → |
Hình 25.7. Các bước lập trình cho vi điều khiển
(Trang 137)
i+ Thông tin bổ sung
Khi lập trình viên yêu cầu IDE nạp đoạn mã máy vào vi điều khiển, IDE sẽ phải phối hợp với một phần mềm được nhà sản xuất cài đặt sẵn trên bo mạch lập trình gọi là trình tải khởi động (bootloader) để tiếp nhận file mã máy mà IDE truyền sang và nạp vào bộ nhớ của vi điều khiển. Quá trình này diễn ra hoàn toàn tự động, không cần sự can thiệp của lập trình viên.
2. Môi trường lập trình tích hợp
Hiện nay, đa số nhà sản xuất thường cung cấp kèm bo mạch lập trình vi điều khiển một phần mềm cho phép hợp nhất tất cả các bước lập trình trên máy tính gọi là môi trường trình tích hợp (IDE). Hình 25.8 mô tả giao diện của một Arduino IDE với ba thành phần chính là: thanh công cụ, cửa sổ lập trình và cửa sổ thông báo.
Thanh công cụ; Cửa sổ lập trình; Cửa sổ thông báo
Hình 25.8. Giao diện của một Arduino IDE
Thanh công cụ cung cấp các nút chức năng cần thiết cho việc lập trình như: biên dịch đoạn lệnh thành mã máy, nạp mã máy vào bộ nhớ của vi điều khiển, lưu đoạn lệnh hiện tại vào một file trên ổ cứng của máy tính, hay mở mới một file mã nguồn khác,...
Cửa sổ lập trình thực chất là một ứng dụng soạn thảo văn bản được bổ sung các tính năng hỗ trợ lập trình như đánh dấu từ khoá, đánh số dòng lệnh, tự động căn lề, tự động gợi ý hoàn thiện câu lệnh,... Lập trình viên chủ yếu làm việc trên cửa sổ này.
Cửa sổ thông báo liệt kê tất cả các thông báo của chương trình biên dịch khi lập trình viên yêu cầu IDE dịch mã nguồn sang mã máy, ví dụ như đoạn mã nguồn có lỗi hay không, nếu có thì là lỗi gì, xảy ra ở vị trí (câu lệnh) nào trong khối mã nguồn, mã máy sẽ chiếm bao nhiêu không gian của bộ nhớ,...
Vận dụng
Cài đặt ứng dụng Arduino IDE lên máy tính, mở ứng dụng và chỉ ra vị trí của ba thành phần cơ bản trên giao diện của nó.
(Trang 138)
Thực hành
Kết nối bo mạch lập trình vi điều khiển Arduino Uno với máy tính, mở ứng dụng Arduino IDE, soạn thảo đoạn mã dưới đây rồi nạp vào vi điều khiển và quan sát hiện tượng xảy ra trên LED L của bo mạch lập trình vi điều khiển. Nếu muốn thay đổi chu kì nháy của đèn thì ta cần thay đổi giá trị của biến nào trong đoạn mã?
void setup( ) {
// Khởi tạo cổng điều khiển LED L ở mode ra
pinMode(LED_BUILTIN, OUTPUT);
}
// Lặp lại vô hạn đoạn mã dưới đây
void loop( ) {
digitalWriter(LED_BUILTIN, HIGH); // Bật LED (HIGH = mức điện áp cao)
delay(1000); // Chờ 1000 ms
digitalWriter(LED_BUILTIN, LOW); // Tắt LED (LOW = mức điện áp thấp)
delay(1000); // Chờ 1000 ms
}
Bình Luận
Để Lại Bình Luận Của Bạn