Arduino UNO R3: Đầu bảng mạch lập trình hấp dẫn

Nhắc đến việc lập trình các bảng mạch Arduino, không thể không nhắc đến bảng Arduino UNO. Đây chính là những bảng mạch đầu tiên mà mọi người thường nhắc tới khi bắt đầu khám phá Arduino. Một dòng mạch mà đã phát triển tới thế hệ thứ 3 (R3). Bạn sẽ khám phá thế giới Arduino qua bảng mạch này, tuy có thể bạn cũng có thể sử dụng bảng mạch Arduino Nano, nhưng tôi khuyên bạn nên dùng Arduino UNO.

Arduino UNO R3

Một số thông số của Arduino UNO R3

  • Vi điều khiển ATmega328 họ 8bit
  • Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
  • Tần số hoạt động 16 MHz
  • Dòng tiêu thụ khoảng 30mA
  • Đ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 (6 chân hỗ trợ PWM)
  • Số chân Analog 6 (độ phân giải 10bit)
  • Dòng tối đa trên mỗi chân I/O 30 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 (ATmega328) với 0.5KB sử dụng bởi bootloader
  • SRAM 2 KB (ATmega328)
  • EEPROM 1 KB (ATmega328)

Vi điều khiển

Vi điều khiển

Arduino UNO sử dụng vi điều khiển ATmega328, một trong ba vi điều khiển họ 8bit AVR, bao gồm ATmega8, ATmega168 và ATmega328. Vi điều khiển này có thể thực hiện các nhiệm vụ đơn giản như điều khiển đèn LED nhấp nháy, xử lý tín hiệu cho xe điều khiển từ xa, đo nhiệt độ, độ ẩm và hiển thị lên màn hình LCD, và nhiều ứng dụng khác mà bạn đã thấy ở đây.

Arduino UNO có thiết kế tiêu chuẩn sử dụng vi điều khiển ATmega328, giá khoảng 90.000đ. Tuy nhiên, nếu yêu cầu phần cứng của bạn không cao hoặc túi tiền không cho phép, bạn có thể sử dụng các vi điều khiển khác có chức năng tương đương như ATmega8 (bộ nhớ flash 8KB) với giá khoảng 45.000đ hoặc ATmega168 (bộ nhớ flash 16KB) với giá khoảng 65.000đ.

Ngoài việc sử dụng cho bảng Arduino UNO, bạn cũng có thể sử dụng các vi điều khiển này cho các mạch tự chế. Vì sao? Bởi vì bạn chỉ cần bảng Arduino UNO để lập trình cho vi điều khiển. Thực tế, bạn không cần phải sử dụng Arduino UNO trên các sản phẩm của mình, thay vào đó, bạn có thể sử dụng các mạch tự chế để giảm chi phí.

Các mạch chế tạo thủ công và sử dụng mạch in

Năng lượng

Arduino UNO có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp nguồn ngoài với điện áp khuyên dùng là 7-12V DC và giới hạn là 6-20V. Thường thì cấp nguồn bằng pin vuông 9V là lựa chọn hợp lý nhất nếu bạn không có nguồn từ cổng USB. Nếu cấp nguồn vượt quá giới hạn trên, bạn có thể làm hỏng Arduino UNO.

Các chân năng lượng

  • GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO. Khi bạn sử dụng các thiết bị sử dụng nguồn điện riêng biệt, các chân này phải được nối với nhau.
  • 5V: cấp điện áp 5V đầu ra. Dòng tối đa cho phép trên chân này là 500mA.
  • 3.3V: cấp điện áp 3.3V đầu ra. Dòng tối đa cho phép trên chân này là 50mA.
  • Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, bạn nối cực dương của nguồn với chân này và cực âm của nguồn với chân GND.
  • IOREF: chân này cho phép bạn đo điện áp hoạt động của vi điều khiển trên Arduino UNO. Điện áp luôn là 5V. Tuy nhiên, bạn không được lấy nguồn 5V từ chân này để sử dụng vì chức năng của nó không phải là cấp nguồn.
  • RESET: nhấn nút Reset trên board tương đương với nối chân RESET với GND qua một điện trở 10KΩ.

Lưu ý:

  • Arduino UNO không có bảo vệ cắm ngược nguồn. Do đó, bạn cần rất cẩn thận và kiểm tra cực âm – dương của nguồn trước khi cấp cho Arduino UNO. Cắm ngược nguồn vào Arduino UNO sẽ làm hỏng board. Một lời khuyên là nếu có thể, hãy sử dụng nguồn từ cổng USB.
  • Các chân 3.3V và 5V trên Arduino chỉ dùng để cấp nguồn ra cho các thiết bị khác, không phải là các chân cấp nguồn vào. Cấp nguồn sai vị trí có thể làm hỏng board. Đây không phải là sử dụng được khuyến nghị từ nhà sản xuất.
  • Cấp nguồn từ bên ngoài không thông qua cổng USB cho Arduino UNO với điện áp dưới 6V có thể làm hỏng board.
  • Cấp điện áp trên 13V vào chân RESET trên board có thể làm hỏng vi điều khiển ATmega328.
  • Cường độ dòng điện vào/ra trên tất cả chân Digital và Analog của Arduino UNO nếu vượt quá 200mA sẽ làm hỏng vi điều khiển.
  • Cấp điện áp trên 5.5V vào các chân Digital hoặc Analog của Arduino UNO sẽ làm hỏng vi điều khiển.
  • Cường độ dòng điện qua một chân Digital hoặc Analog bất kỳ của Arduino UNO vượt quá 40mA sẽ làm hỏng vi điều khiển. Do đó, nếu không sử dụng để truyền nhận dữ liệu, bạn phải mắc một điện trở hạn dòng.

Làm hỏng có thể xảy ra khi tôi nói “bạn có thể làm hỏng”, điều này có nghĩa là không nhất thiết sẽ hỏng ngay, vì thông số kỹ thuật của linh kiện điện tử luôn có tính tương đối. Vì vậy, hãy tuân thủ theo các thông số kỹ thuật từ nhà sản xuất để tránh phải mua một board Arduino UNO thứ hai.

Bộ nhớ

Vi điều khiển Atmega328 cung cấp cho người dùng:

  • 32KB bộ nhớ Flash: lưu trữ các đoạn lệnh bạn lập trình. Thường thì chỉ có vài KB được sử dụng cho bootloader, nhưng đừng lo, bạn hiếm khi cần quá 20KB bộ nhớ này.
  • 2KB cho SRAM (Static Random Access Memory): lưu trữ các biến bạn khai báo khi lập trình. Bạn càng khai báo biến nhiều, càng cần nhiều bộ nhớ RAM. Tuy nhiên, thực sự hiếm khi bộ nhớ RAM trở thành vấn đề. Khi mất điện, dữ liệu trên SRAM sẽ bị mất.
  • 1KB cho EEPROM (Electrically Eraseable Programmable Read Only Memory): giống một ổ cứng nhỏ, nơi bạn có thể đọc và ghi dữ liệu của mình mà không lo bị mất khi mất điện như trên SRAM.

Các cổng vào/ra

Các cổng vào/ra

Arduino UNO có 14 chân digital để đọc hoặc xuất tín hiệu. Chúng chỉ có hai mức điện áp là 0V và 5V, với dòng vào/ra tối đa trên mỗi chân là 40mA. Mỗi chân đều có điện trở pull-up được cài đặt trong vi điều khiển ATmega328 (mặc định, các điện trở này không được kết nối).

Một số chân digital có các chức năng đặc biệt:

  • 2 chân Serial: 0 (RX) và 1 (TX), dùng để truyền (TX) và nhận (RX) dữ liệu TTL Serial. Arduino UNO có thể giao tiếp với các thiết bị khác thông qua hai chân này. Giao tiếp Bluetooth thường được gọi là giao tiếp Serial không dây. Nếu không cần thiết, bạn không nên sử dụng hai chân này.
  • Chân PWM (~): 3, 5, 6, 9, 10 và 11, cho phép bạn xuất xung PWM với độ phân giải 8 bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite(). Điều này cho phép bạn điều chỉnh điện áp ra từ 0V đến 5V thay vì chỉ có 0V và 5V như các chân khác.
  • Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Các chân này cũng có thể được sử dụng để truyền nhận dữ liệu bằng giao thức SPI với các thiết bị khác.
  • LED 13: trên Arduino UNO có một đèn LED màu cam (kí hiệu chữ L). Khi nhấn nút Reset, đèn này sẽ nhấp nháy để báo hiệu. Nó được nối với chân số 13. Khi chân này được sử dụng, LED sẽ sáng.

Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải 10 bit (0 → 210-1) để đọc giá trị điện áp từ 0V → 5V. Chân AREF trên board cho phép bạn sử dụng điện áp tham chiếu khi sử dụng chân analog. Ví dụ, nếu bạn cấp điện áp 2.5V vào chân này, bạn có thể sử dụng các chân analog để đo điện áp từ 0V → 2.5V với độ phân giải vẫn là 10 bit.

Đặc biệt, Arduino UNO có hai chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác.

Lập trình cho Arduino

Các thiết bị Arduino được lập trình bằng một ngôn ngữ riêng. Ngôn ngữ này dựa trên ngôn ngữ Wiring được viết cho phần cứng nói chung, và Wiring lại là một biến thể của C/C++. Một số người gọi nó là Wiring, một số người khác gọi nó là C hoặc C/C++. Riêng tôi gọi nó là “ngôn ngữ Arduino”, và đội ngũ phát triển Arduino cũng gọi như vậy. Ngôn ngữ Arduino dựa trên C/C++, dễ học và dễ hiểu. Nếu bạn đã học tốt môn Tin học 11, lập trình Arduino sẽ rất dễ dàng với bạn.

Để lập trình và gửi lệnh cũng như nhận tín hiệu từ bảng mạch Arduino, nhóm phát triển dự án đã cung cấp một môi trường lập trình gọi là Arduino IDE (Integrated Development Environment) như hình dưới đây.

Arduino IDE

Đoạn mã dưới đây sẽ điều khiển một đèn LED nhấp nháy với chu kì 1 giây. Bạn có thấy nó rất đơn giản không?

void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);
}

Lời kết

Đúng vậy, nền tảng Arduino thực sự rất hữu ích cho những ai muốn khám phá điện tử, lập trình, điều khiển và đặc biệt là robot. Với nền tảng này, bạn có thể dễ dàng tạo ra những dự án thú vị. Bạn đã có ý tưởng gì cho riêng mình chưa? Nếu chưa, hãy cùng tham gia và khám phá thế giới Arduino cùng chúng tôi!

FEATURED TOPIC

hihi