ksp gửi vào
- 274227 lượt xem
I. Giới thiệu
Chúng ta đã quá quen thuộc với các board mạch Arduino "truyền thống" như Arduino Uno R3, Nano hay phiên bản tối giản là Arduino Pro Mini. Nếu là một người tinh ý, các bạn sẽ dễ dàng nhận thấy board Arduino Leonardo có kích thước giốn với Arduino, pinout cũng tương tự luôn. Thật vậy, với một người yêu thích Arduino, bạn sẽ có một thắc mắc: Tại sao người ta lại làm ra mạch Arduino Leonardo, trong khi nó "khá giống" với Arduino Uno R3, chứ không muốn nói là giống "hệt", liệu nhà phát triển Arduino quá "rãnh"? Vâng, qua bài viết này, bạn sẽ hiểu được vì sao Arduino Leonardo lại ra đời, khi nào nên dùng nó, khi nào không và các thông số kĩ thuật cơ bản.
II. Đặc điểm của dòng Arduino "truyền thống"
Như các bạn đã biết, mình từng có bài viết nói về lịch sử Arduino, trong đó, có nhắc đến khá nhiều về dòng Arduino sử dụng chip AtmegaxP (x có thể 8, 16, 32). Và đó chính là dòng Arduino "truyền thống". Vì sao lại gọi là dòng truyền thống? Vì tron thời kì khi Arduino được "khởi sự" lần đầu tiên, khi nói đến lập trình nhúng, người ta không nghĩ đến giao tiếp USB, mà chỉ nghĩ đến giao tiếp RS-232 (Serial). Vì hồi đó, máy tính để bàn (desktop) vẫn còn phổ biến và dòng laptop lúc đó thực sự chưa mạnh và khá đắt đỏ. Ngoài ra, để giao tiếp thông qua USB bạn phải có một con chip thứ hai để làm nhiệm vụ chuyển giao tiếp usb thành giao tiếp serial. Cùng thời đấy (2006), các con vi điều khiển bao gồm cả giao tiếp USB chưa thực sự phổ biến, ví dụ như atmega32u4 (ra đời năm 2008).
Như vậy, khi bạn lập trình một board Arduino "truyền thống", bạn cần phải có một con vi điều khiển nhận nhiệm vụ chuyển giao tiếp giao tiếp usb thành giao tiếp serial. Như vậy, sẽ phải thông qua nhiều bước trung gian trước khi mạch bạn được nạp, và mạch cũng dễ "xung đột" nếu một trong các phần ấy bị hỏng.
Nhưng, không có nghĩa bạn đánh giá cách thiết kế đó là thiết kế tồi. Vì bạn chỉ việc tháo con Atmega328P ra khỏi mạch Arduino và bạn sẽ có một mạch USB to Serial với giá 0 đồng. Ngoài ra, bạn có thể tự làm một mạch Arduino rồi gắn con atmega328p vào đó mà không phải mua một con atmega328p khác. Hơn nữa, với việc thay thế con atmega328p bằng các con vi điều khiển khác như atmega88p, atmega168p, atmega8,... bạn có thể lập trình chúng dễ dàng mà không cần phải suy nghĩ nhiều.
Tuy nhiên, thực tế, có một bộ phận người dùng không thích điều này. Họ cho rằng Arduino rất dễ bị hỏng, vì chỉ cần hư 1 trong 2 con vi điều khiển là hỏng ngay. Dẫu ràng việc thay thế vi điều khiển atmega328p là một việc rất dễ dàng với dân chuyên nghiệp (burn bootloader cho con mới là xong). Nhưng, nên nhớ rằng, Arduino là một nền tảng tự động hóa dành cho tất cả mọi người. Vì vậy, thay vì "ép" người dùng đi vào con đường sử dụng Uno. Họ đã lắng nghe và tạo ra một dòng mạch mới mang tên Arduino Leonardo, với việc sử dụng vi điều khiển atmega32u4 (đã tích hợp sẵn usb to serial trong một con chip duy nhất) trên mạch. Nhưng họ vẫn giữ nguyên pinout Arduino 1.0 để các loại shield khác có thể dùng lại một cách dễ dàng.
III. Các thông tin cơ bản về mạch Arudino Leonardo
Ngoài chức năng như một con Arduino Leonardo, Arduino Leonardo còn có thêm một chức năng khá hay, đó là USB host. Nghĩa là bạn có thể giả lập một thiết bị như chuột, bàn phím, tay cầm game... bằng con Arduino Leonardo này với chuẩn USB-HID. Vì sao lại làm được như thế? Vì ngoài mục đích thỏa mãn nhu cầu người dùng, họ còn muốn nó "mới" hơn con Arduino Uno, chứ giống hệt thì không nói làm gì nữa, do đó bootloader của Arduino Leonardo lại nặng đến 4kb .
Vi điều khiển | ATmega32u4 (họ 8bit) |
Điện áp hoạt động | 5V – DC |
Tần số hoạt động | 16 MHz |
Dòng tiêu thụ ở các chân I/O | 40mA |
Điện áp vào khuyên dùng | 7-12V – DC |
Điện áp vào giới hạn | 6-20V – DC |
Số chân Digital I/O | 14 (7 chân PWM) |
Số chân Analog | 12 (các chân PWM có thể dùng như chân Analog bình thường - nghĩa là có thể dùng Analog read) (độ phân giải 10bit) |
Dòng tối đa trên mỗi chân I/O | 40 mA |
Dòng ra tối đa (5V) | 500 mA |
Dòng ra tối đa (3.3V) | 50 mA |
Bộ nhớ flash | 32 KB (ATmega32u4) với 4KB dùng bởi bootloader |
SRAM | 2.5 KB (ATmega32u4) |
EEPROM | 1 KB (ATmega32u4) |
Kích thước | 68.6mm x 53.3mm |
Còn lại là khá giống với Arduino Uno R3.
IV. Vì sao bạn phải dùng Leonardo
Nếu bạn thích sự đơn giản, tinh tế và rõ ràng, Leonardo là một lựa chọn dành cho bạn. Nhưng, hãy cân nhắc theo yêu cầu của bản thân và có thể tham khảo gợi ý sau:
- Bạn muốn giả lập chuột, bàn phím mà không muốn tốn nhiều thời gian "ngâm cứu".
- Bạn muốn sự gọn gàng trong dự án.
- Bạn muốn nhiều chân analog hơn, nhiều chân pwm hơn.
- Bạn muốn nhiều RAM hơn (pro mới cần nhé).
- Bạn muốn board mình nhẹ (board này nặng có 20g à)
V. Vì sao bạn không nên dùng Leonardo
Nhưng nếu bạn kĩ tính, thích trải nghiệm độc đáo, thích sự khó khăn để cải thiện mình thì không nên, lúc đó Arduino Uno R3 là một lựa chọn thấu đáo. Ngoài ra, chúng còn có những nguyên nhân khác.
- Arduino Uno vẫn có thể giả lập chuột được vì bạn nên nhớ nó có một con atmega16u2 để làm chip chuyển usb to serial, và bạn hoàn toàn có thể nạp code lại cho nó để nó có firmware USB-hid. Nhưng điều này không đơn giản như Leonardo - chỉ việc gắn vô máy tính, nạp code và hưởng thụ.
- Bạn muốn sự hầm hố.
- Bạn là người tiết kiệm.
- Bạn muốn đi xa hơn nữa trong thế giới Arduino.
VI. Kết luận
Trên đây, là những ý kiến cá nhân của mình qua quá trình trải nghiệm thực tế và đánh giá, phân tích. Bạn có thể tham khảo nó và lựa chọn cho mình loại board thích hợp và trở thành một maker. Chúc các bạn thành công.