Các loại Arduino board
Arduino Uno R3
Do Arduino có tính mở về phần cứng nên Arduino Uno R3 cũng có những biến thể để phù hợp cho nhiều đối tượng khác nhau.
Arduino Uno SMD R3
Từ thiết kế tiêu chuẩn của Arduino Uno R3, để giảm giá thành sản xuất, một số thành phần của board này được thay đổi nhưng vẫn có chức năng tương đương. Ví dụ thay vi điều khiển mặc định của Arduino là ATmega328P, kiểu chân là DIP thành ATmega328, kiểu chân SMD. Phiên bản này có tên gọi Arduino Uno SMD R3.
Arduino Nano
Với các sản phẩm cần kích thước nhỏ gọn Arduino Nano ra đời, vẫn giữ nguyên sức mạnh của Arduino Uno với vi điều khiển ATmega328 - SMD nhưng toàn bộ board mạch được thu gọn lại, thậm chí khả năng cắm trực tiếp vào breadboard.
Có rất nhiều biến thể của Arduino board như Arduino Mega 2560 mạnh mẽ về cấu hình phù hợp hơn với đòi hỏi hiệu năng, ... để có thể tận dụng tối đa sức mạnh của Arduino board, nhà phát triển cần biết rõ thông số kỹ thuật của từng loại, nắm được các khác biệt giữa các phiên bản, từ đó có giải pháp xử lý phù hợp.
Thông số kỹ thuật của Arduino Uno R3
Thông số kỹ thuật của Arduino Uno R3 là tiêu chuẩn, các biến thể gần như có thông số tương đương.
Arduino Uno được xây dựng với phần nhân là vi điều khiển ATmega328P, sử dụng thạch anh có chu kì dao động là 16 MHz.
Với vi điều khiển này, tổng cộng có 14 pin (ngõ) ra / vào được đánh số từ 0 tới 13 (trong đó có 6 pin PWM, được đánh dấu ~ trước mã số của pin). Song song đó, có thêm 6 pin nhận tín hiệu analog được đánh kí hiệu từ A0 - A5, 6 pin này cũng có thể sử dụng được như các pin ra / vào bình thường (như pin 0 - 13). Ở các pin được đề cập, pin 13 là pin đặc biệt vì nối trực tiếp với LED trạng thái trên board.
Trên board còn có 1 nút reset, 1 ngõ kết nối với máy tính qua cổng USB và 1 ngõ cấp nguồn sử dụng jack 2.1mm lấy năng lượng trực tiếp từ AC-DC adapter hay thông qua ắc-quy nguồn.
Khi làm việc với Arduino board, một số thuật ngữ sau cần lưu ý:
- Flash Memory: bộ nhớ có thể ghi được, dữ liệu không bị mất ngay cả khi tắt điện. Về vai trò, có thể hình dung bộ nhớ này như ổ cứng để chứa dữ liệu trên board. Chương trình được viết cho Arduino sẽ được lưu ở đây. Kích thước của vùng nhớ này dựa vào vi điều khiển được sử dụng, ví dụ như ATmega8 có 8KB flash memory. Loại bộ nhớ này có thể chịu được khoảng 10.000 lần ghi / xoá.
- RAM: tương tự như RAM của máy tính, mất dữ liệu khi ngắt điện, bù lại tốc độ đọc ghi xoá rất nhanh. Kích thước nhỏ hơn Flash Memory nhiều lần.
- EEPROM: một dạng bộ nhớ tương tự như Flash Memory nhưng có chu kì ghi / xoá cao hơn - khoảng 100.000 lần và có kích thước rất nhỏ. Để đọc / ghi dữ liệu có thể dùng thư viện EEPROM của Arduino.
Ngoài ra, Arduino board còn cung cấp cho các pin khác nhau như pin cấp nguồn 3.3V, pin cấp nguồn 5V, pin GND, ...
Thông số kỹ thuật của Arduino board được tóm tắt trong bảng sau:
Vi điều khiển | ATmega328P |
Điện áp hoạt động | 5V |
Điện áp vào khuyên dùng | 7-12V |
Điện áp vào giới hạn | 6-20V |
Digital I/O pin | 14 (trong đó 6 pin có khả năng băm xung) |
PWM Digital I/O Pins | 6 |
Analog Input Pins | 6 |
Cường độ dòng điện trên mỗi I/O pin | 20 mA |
Cường độ dòng điện trên mỗi 3.3V pin | 50 mA |
Flash Memory | 32 KB (ATmega328P) 0.5 KB được sử dụng bởi bootloader |
SRAM | 2 KB (ATmega328P) |
EEPROM | 1 KB (ATmega328P) |
Tốc độ | 16 MHz |
Chiều dài | 68.6 mm |
Chiều rộng | 53.4 mm |
Trọng lượng | 25 g |
Một số lưu ý khi làm việc với Arduino Uno R3
Mặc dù Arduino có cầu chì tự phục hồi (resettable fuse) bảo vệ mạch khi xảy ra quá tải, tuy nhiên cầu chì này chỉ được mắc cho cổng USB nhằm tự động ngắt điện khi nguồn vào USB lớn hơn 5V. Do đó khi thao tác với Arduino, cần tính toán cẩn thận để tránh gây hư tổn đến board. Các thao tác sau đây có thể gây hỏng một phần hoặc toàn bộ board Arduino.
Nối trực tiếp dòng 5V vào GND
Khi nối trực tiếp dòng 5V vào GND mà không qua bất kỳ một điện trở kháng nào sẽ gây ra hiện tượng đoản mạch và phá hỏng Arduino, các trường hợp phổ biến có thể mắc phải:
Nối 1 pin OUT bất kỳ vào GND
Trong trường hợp này, nối pin 8 với GND và trong Arduino IDE ta có đoạn code sau:
void setup() { pinMode(8, OUTPUT); } void loop() { digitalWrite(8, HIGH); delay(1000); }
Nối 1 pin HIGH vào 1 pin LOW bất kỳ
Về mặt ý nghĩa, cách nối này cũng tương tự như ở trên, gây ra đoản mạch và phá hủy Arduino. Đoạn code sau minh họa vấn đề này:
void setup() { pinMode(7, OUTPUT); pinMode(12, INPUT); } void loop() { digitalWrite(7, HIGH); delay(1000); }
Cấp nguồn lớn hơn 5V cho bất kỳ pin I/O nào
Theo tài liệu của nhà sản xuất, với vi điều khiển ATmega328P - 5V là ngưỡng lớn nhất mà vi điều khiển này có thể chịu được. Nếu bất kỳ pin nào bị cấp điện áp vượt quá 5V sẽ làm hỏng vi điều khiển này.
Tổng cường độ dòng điện trên các I/O pin vượt quá ngưỡng
Dựa theo datasheet của vi điều khiển ATmega328P, tổng cường độ dòng điện cấp cho các I/O pin tối đa là 200mA. Vì vậy, trong trường hợp ép Arduino cấp nguồn cho hơn 10 đèn LED (mỗi đèn thông thường sẽ cần 20mA) hay dùng trực tiếp các chân I/O cấp nguồn cho động cơ sẽ gây tổn hại đến vi điều khiển.
Thay đổi các kết nối trong lúc đang vận hành
Khi Arduino đang vận hành, thay đổi các kết nối có thể gây ra sự không ổn định của điện áp dẫn đến hư hỏng Arduino. Trong thực tế nên ngắt nguồn Arduino trước khi thực hiện bất kỳ các thay đổi nào.
Tham khảo
- https://www.arduino.cc/en/Main/ArduinoBoardUno - 3/9/2015
- http://www.ruggedcircuits.com/10-ways-to-destroy-an-arduino/ - 3/9/2015