Tổng quan về Arduino
Arduino là một nền tảng mã nguồn mở được xây dựng và phát triển bởi Arduino.cc hoạt động chủ yếu dựa trên vi điều khiển AVR Atmega328P. Bằng cách lập trình bằng mạch Arduino, chúng ta có thể tạo ra các ứng dụng điện tử hoạt động với nhau thông qua phần mềm và phần cứng hỗ trợ.
Hiện nay, Arduino đã được phổ biến rộng rãi ở Việt Nam. Từ những người mới bắt đầu như học sinh, sinh viên cho đến đội ngũ kỹ sư, chuyên gia lập trình. Hàng ngàn dự án điện tử từ nhỏ đến lớn, từ những sản phẩm đơn giản giải quyết vấn đề trong cuộc sống thường ngày, cho đến những sản phẩm khoa học phức tạp.
Arduino bao gồm phần cứng là board mạch mã nguồn mở (vi điều khiển) có thể lập trình được và các phần mềm hỗ trợ tích hợp IDE (Integrated Development Environment) dùng để soạn thảo, biên dịch code, nạp chương trình cho board.
Hiện nay, Arduino đã được phổ biến rộng rãi ở Việt Nam. Từ những người mới bắt đầu như học sinh, sinh viên cho đến đội ngũ kỹ sư, chuyên gia lập trình. Hàng ngàn dự án điện tử từ nhỏ đến lớn, từ những sản phẩm đơn giản giải quyết vấn đề trong cuộc sống thường ngày, cho đến những sản phẩm khoa học phức tạp.
Arduino bao gồm phần cứng là board mạch mã nguồn mở (vi điều khiển) có thể lập trình được và các phần mềm hỗ trợ tích hợp IDE (Integrated Development Environment) dùng để soạn thảo, biên dịch code, nạp chương trình cho board.
Hình 1. Board Aruino và giao diện phần mềm lập trình Arduino IDE
Arduino được hình thành tại học viện Interaction Design ở Ivrea, Italy vào năm 2005. Mục đích ban đầu của Arduino là giúp cho các sinh viên ở học viện có thể tạo ra các sản phẩm một cách nhanh chóng với chi phí thấp và dễ sử dụng. Arduino là một dự án mã nguồn mở, được phát triển thông qua việc cho phép người dùng trên toàn thế giới có thể xây dựng, phát triển và đóng góp vào dự án.
Hiện tại ở Việt Nam và trên thế giới cũng có rất nhiều bo mạch vi điều khiển khác nhau. Tuy nhiên, Arduino có một số ưu điểm khiến nó trở nên nổi tiếng và hiện đang được sử dụng rộng rãi. Sau đây là một số thế mạnh của Arduino so với các nền tảng vi điều khiển khác:
- Chạy đa nền tảng: Việc lập trình Arduino có thể thực hiện trên các hệ điều hành khác nhau như Windows, Mac OS, Linux trên Desktop hoặc Android trên di động...
- Ngôn ngữ lập trình đơn giản dễ hiểu
- Nền tảng mở: Arduino được phát triển dựa trên nguồn mở nên phần mềm chạy trên Arduino được chia sẻ dễ dàng và tích hợp vào các nền tảng khác nhau.
- Mở rộng phần cứng: Arduino được thiết kế và sử dụng theo dạng module nên việc mở rộng phần cứng trở nên dễ dàng hơn.
- Dễ dàng sử dụng, phù hợp cho người mới bắt đầu: Các sản phẩm ứng dụng Arduino dễ dàng lắp ráp, lập trình và sử dụng thiết bị.
- Cộng đồng hỗ trợ: Hiện tại Arduino có cộng đồng các cá nhân và tổ chức rất lớn, người dùng có thể tham khảo miễn phí các dự án về Arduino đã được thực hiện.
- Khả năng kết nối: Arduino có thể hoạt động độc lập hoặc kết nối với máy tính (cho phép máy tính truy cập dữ liệu cảm biến từ thế giới bên ngoài và cung cấp thông tin phản hồi). Ngoài ra, Arduino còn có thể kết nối với Arduino hay thiết bị điện tử khác và các chip vi điều khiển.
- Chi phí: Mức giá của một board mạch Arduino tương đối rẻ (chỉ khoảng 20-50$) rất phù hợp với đối tượng học sinh, sinh viên hoặc các tổ chức giáo dục.
1. Một số loại Board mạch Arduino
- Arduino UNO R3
Đây là board mạch được đánh giá là tốt nhất cho những người mới bắt đầu về điện tử và lập trình, nó được sử dụng nhiều nhất trong các board mạch thuộc họ Arduino. Hình ảnh board mạch Arduino UNO R3 được thể hiện trên hình 2.
Hiện tại ở Việt Nam và trên thế giới cũng có rất nhiều bo mạch vi điều khiển khác nhau. Tuy nhiên, Arduino có một số ưu điểm khiến nó trở nên nổi tiếng và hiện đang được sử dụng rộng rãi. Sau đây là một số thế mạnh của Arduino so với các nền tảng vi điều khiển khác:
- Chạy đa nền tảng: Việc lập trình Arduino có thể thực hiện trên các hệ điều hành khác nhau như Windows, Mac OS, Linux trên Desktop hoặc Android trên di động...
- Ngôn ngữ lập trình đơn giản dễ hiểu
- Nền tảng mở: Arduino được phát triển dựa trên nguồn mở nên phần mềm chạy trên Arduino được chia sẻ dễ dàng và tích hợp vào các nền tảng khác nhau.
- Mở rộng phần cứng: Arduino được thiết kế và sử dụng theo dạng module nên việc mở rộng phần cứng trở nên dễ dàng hơn.
- Dễ dàng sử dụng, phù hợp cho người mới bắt đầu: Các sản phẩm ứng dụng Arduino dễ dàng lắp ráp, lập trình và sử dụng thiết bị.
- Cộng đồng hỗ trợ: Hiện tại Arduino có cộng đồng các cá nhân và tổ chức rất lớn, người dùng có thể tham khảo miễn phí các dự án về Arduino đã được thực hiện.
- Khả năng kết nối: Arduino có thể hoạt động độc lập hoặc kết nối với máy tính (cho phép máy tính truy cập dữ liệu cảm biến từ thế giới bên ngoài và cung cấp thông tin phản hồi). Ngoài ra, Arduino còn có thể kết nối với Arduino hay thiết bị điện tử khác và các chip vi điều khiển.
- Chi phí: Mức giá của một board mạch Arduino tương đối rẻ (chỉ khoảng 20-50$) rất phù hợp với đối tượng học sinh, sinh viên hoặc các tổ chức giáo dục.
1. Một số loại Board mạch Arduino
- Arduino UNO R3
Đây là board mạch được đánh giá là tốt nhất cho những người mới bắt đầu về điện tử và lập trình, nó được sử dụng nhiều nhất trong các board mạch thuộc họ Arduino. Hình ảnh board mạch Arduino UNO R3 được thể hiện trên hình 2.
Hình 2. Board Arduino UNO R3
Một số thành phần của Arduino UNO R3 được đánh số trên hình 2 có chức năng như sau:
+ Cổng USB (1):Đây là cổng giao tiếp để upload code từ máy tính lên vi điều khiển. Đồng thời nó cũng là giao tiếp serial để truyền dữ liệu giữa vi điều khiển với máy tính.
+ Cổng nguồn ngoài (2):Nhằm sử dụng nguồn điện bên ngoài như pin, bình acquy cho board hoạt động. Nguồn điện cấp vào cổng này là nguồn một chiều, điện áp cung cấp tốt nhất mà nhà sản xuất khuyên dùng là từ 7 đến 12V.
+ Chân xuất tín hiệu ra số (3):Có tất cả 14 chân xuất tín hiệu ra số trong Arduino UNO R3, những chân có dấu ~ là những chân có thể băm xung (PWM), tức có thể điều khiển tốc độ động cơ hoặc độ sáng của bóng đèn.
+ Chân cấp nguồn cho cảm biến (4):Các chân này dùng để cấp nguồn cho các thiết bị bên ngoài như rơle, cảm biến, servo... trên khu vực này có sẵn các chân GND (chân nối đất, chân âm), chân 5V, chân 3.3V. Nhờ những chân này mà người sử dụng không cần thiết bị biến đổi điện khi cấp nguồn cho cảm biến, rơle, servo...
+ Chân lấy tín hiệu Analog (5):Các chân này lấy tín hiệu (tín hiệu tương tự) từ cảm biến để IC Atmega 328 xử lý. Có tất cả 6 chân lấy tín hiệu analog từ A0 đến A5.
+ Vi điều khiển AVR (6):Đây là bộ xử lý trung tâm của toàn bo mạch, với mỗi board Arduino khác nhau sử dụng chip vi điều khiển khác nhau. Arduino UNO R3 sử dụng IC ATMega328, IC này được sử dụng trong việc thu thập dữ liệu từ cảm biến, xử lý dữ liệu, xuất tín hiệu ra...
Một số thông số kỹ thuật của Arduino UNO R3 như sau:
+ Cổng USB (1):Đây là cổng giao tiếp để upload code từ máy tính lên vi điều khiển. Đồng thời nó cũng là giao tiếp serial để truyền dữ liệu giữa vi điều khiển với máy tính.
+ Cổng nguồn ngoài (2):Nhằm sử dụng nguồn điện bên ngoài như pin, bình acquy cho board hoạt động. Nguồn điện cấp vào cổng này là nguồn một chiều, điện áp cung cấp tốt nhất mà nhà sản xuất khuyên dùng là từ 7 đến 12V.
+ Chân xuất tín hiệu ra số (3):Có tất cả 14 chân xuất tín hiệu ra số trong Arduino UNO R3, những chân có dấu ~ là những chân có thể băm xung (PWM), tức có thể điều khiển tốc độ động cơ hoặc độ sáng của bóng đèn.
+ Chân cấp nguồn cho cảm biến (4):Các chân này dùng để cấp nguồn cho các thiết bị bên ngoài như rơle, cảm biến, servo... trên khu vực này có sẵn các chân GND (chân nối đất, chân âm), chân 5V, chân 3.3V. Nhờ những chân này mà người sử dụng không cần thiết bị biến đổi điện khi cấp nguồn cho cảm biến, rơle, servo...
+ Chân lấy tín hiệu Analog (5):Các chân này lấy tín hiệu (tín hiệu tương tự) từ cảm biến để IC Atmega 328 xử lý. Có tất cả 6 chân lấy tín hiệu analog từ A0 đến A5.
+ Vi điều khiển AVR (6):Đây là bộ xử lý trung tâm của toàn bo mạch, với mỗi board Arduino khác nhau sử dụng chip vi điều khiển khác nhau. Arduino UNO R3 sử dụng IC ATMega328, IC này được sử dụng trong việc thu thập dữ liệu từ cảm biến, xử lý dữ liệu, xuất tín hiệu ra...
Một số thông số kỹ thuật của Arduino UNO R3 như sau:
- Arduino Nano
Board Arduino Nano là phiên bản nhỏ gọn của các board Arduino có đặc điểm là sự tiện dụng, đơn giản và kích thước nhỏ gọn có thể lập trình trực tiếp bằng máy tính như Arduino UNO R3. Hình ảnh board Arduino Nano như hình 3.
Board Arduino Nano là phiên bản nhỏ gọn của các board Arduino có đặc điểm là sự tiện dụng, đơn giản và kích thước nhỏ gọn có thể lập trình trực tiếp bằng máy tính như Arduino UNO R3. Hình ảnh board Arduino Nano như hình 3.
Hình 3. Board Arduino Nano
- Arduino Mega 2560
Arduino Mega 2560 là sản phẩm tiêu biểu cho dòng mạch Mega là dòng bo mạch có nhiều cải tiến so với Arduino UNO (54 chân digital I/O và 16 chân analog I/O được ứng dụng trong các dự án lớn như xử lý thông tin nhiều luồng, điều khiển động cơ, máy in 3D, điều khiển từ xa, Internet vạn vật kết nối...
Hình 4. Board Arduino Mega 2560
2. Một số loại module và cảm biến với Arduino
Hình 5. LCD module và module điều khiển động cơ
Ngoài các Shield hỗ trợ đã được trình bày ở trên thì khi học tập hoặc thực hiện các dự án liên quan đến Arduino chúng ta sẽ làm việc với một số loại module kết nối với Arduino như các module LCD dùng để hiển thị các thông số, kết quả, các module dùng để điều khiển động cơ hoặc các module relay dùng để đóng ngắt, điều khiển các thiết bị điện...và một số loại cảm biến thường dùng với Arduino như cảm biến chuyển động, cảm biến siêu âm, cảm biến độ ẩm, cảm biến khí ga, cảm biến lửa...
Hình 6. Một số loại cảm biến: Cảm biến siêu âm; cảm biến chuyển động
3. Phần mềm lập trình Arduino IDE
Arduino IDE là một phần mềm sử dụng ngôn ngữ lập trình C/C++ giúp người dùng nạp code đã viết vào board mạch và thực thi ứng dụng. Arduino IDE là chữ viết tắt của Arduino Integrated Development Enviroment, một công cụ lập trình với các board mạch Arduino. Nó bao gồm các phần chính là Editor (trình soạn thảo văn bản, dùng để viết code), Debugger (công cụ giúp tìm kiếm và sửa lỗi phát sinh khi build chương trình), Compiler hoặc Interpreter (công cụ giúp biên dịch code thành ngôn ngữ mà vi điều khiển có thể hiểu được và thực thi code theo yêu cầu của người dùng). Giao diện phần mềm lập trình Arduino IDE như hình 7.
Arduino IDE là một phần mềm sử dụng ngôn ngữ lập trình C/C++ giúp người dùng nạp code đã viết vào board mạch và thực thi ứng dụng. Arduino IDE là chữ viết tắt của Arduino Integrated Development Enviroment, một công cụ lập trình với các board mạch Arduino. Nó bao gồm các phần chính là Editor (trình soạn thảo văn bản, dùng để viết code), Debugger (công cụ giúp tìm kiếm và sửa lỗi phát sinh khi build chương trình), Compiler hoặc Interpreter (công cụ giúp biên dịch code thành ngôn ngữ mà vi điều khiển có thể hiểu được và thực thi code theo yêu cầu của người dùng). Giao diện phần mềm lập trình Arduino IDE như hình 7.
Hình 7. Giao diện phần mềm lập trình Arduino IDE
Arduino IDE hoạt động trên 3 hệ điều hành phổ biến là Mac OS, Windows, Linux và chạy trên nền tảng Java kèm với các chức năng và lệnh có sẵn đóng vai trò quan trọng để gỡ lỗi, chỉnh sửa và biên dịch mã.
Khi người dùng viết mã và biên dịch, IDE sẽ tạo file Hex cho mã. File Hex được Arduino hiểu và sau đó được gửi đến board mạch bằng cáp USB. Mỗi board mạch Arduino đều được tích hợp một bộ vi điều khiển, bộ vi điều khiển sẽ nhận file hex và chạy theo mã được viết.
Hiện nay, ngoài các board thuộc họ Arduino, thì Arduino IDE còn hỗ trợ lập trình với nhiều dòng vi điều khiển khác như ARM, PIC...
Cấu trúc chung của một chương trình Arduino IDE gồm 3 phần: Khai báo biến; thiết lập; vòng lặp.
- Khai báo biến:
Đây là phần khai báo kiểu biến trong Arduino IDE, tên các biến, định nghĩa các chân trên board hay định nghĩa các biến constant.
Hàm #define có tác dụng định nghĩa, hay còn gọi là gán, tức là gán một chân, một ngõ ra nào đó với 1 cái tên. Ví dụ: #define led 13.
Khi người dùng viết mã và biên dịch, IDE sẽ tạo file Hex cho mã. File Hex được Arduino hiểu và sau đó được gửi đến board mạch bằng cáp USB. Mỗi board mạch Arduino đều được tích hợp một bộ vi điều khiển, bộ vi điều khiển sẽ nhận file hex và chạy theo mã được viết.
Hiện nay, ngoài các board thuộc họ Arduino, thì Arduino IDE còn hỗ trợ lập trình với nhiều dòng vi điều khiển khác như ARM, PIC...
Cấu trúc chung của một chương trình Arduino IDE gồm 3 phần: Khai báo biến; thiết lập; vòng lặp.
- Khai báo biến:
Đây là phần khai báo kiểu biến trong Arduino IDE, tên các biến, định nghĩa các chân trên board hay định nghĩa các biến constant.
Hàm #define có tác dụng định nghĩa, hay còn gọi là gán, tức là gán một chân, một ngõ ra nào đó với 1 cái tên. Ví dụ: #define led 13.
Hình 8. Chương trình Arduino IDE điều khiển LED
- Thiết lập (void setup ())
Phần này dùng để thiết lập cho một chương trình Arduino IDE. Ví dụ: định nghĩa input, output...
Hàm setup () được gọi ngay khi bắt đầu chương trình. Sử dụng nó để khởi tạo các biến, Pin mode, bắt đầu sử dụng thư viện...Hàm setup () sẽ chỉ chạy một lần, sau mỗi lần khởi động hoặc reset Arduino.
- Vòng lặp
Sau khi chạy hàm setup (), khai báo và khởi tạo các biến. Hàm loop () giống như tên của nó, sẽ run và lặp lại liên tục. Hàm loop () sẽ chứa những chức năng chính mà người dùng lập trình trên Arduino, cho phép xử lý, phản hồi và điều khiển các board Arduino.
Hàm setup () được gọi ngay khi bắt đầu chương trình. Sử dụng nó để khởi tạo các biến, Pin mode, bắt đầu sử dụng thư viện...Hàm setup () sẽ chỉ chạy một lần, sau mỗi lần khởi động hoặc reset Arduino.
- Vòng lặp
Sau khi chạy hàm setup (), khai báo và khởi tạo các biến. Hàm loop () giống như tên của nó, sẽ run và lặp lại liên tục. Hàm loop () sẽ chứa những chức năng chính mà người dùng lập trình trên Arduino, cho phép xử lý, phản hồi và điều khiển các board Arduino.
4. Các bước nạp chương trình trên Arduino IDE
- Bước 1: Khởi động Arduino IDE
Vào Tool chọn Board mà chúng ta cần sử dụng. Ví dụ, Arduino Nano.
- Bước 1: Khởi động Arduino IDE
Vào Tool chọn Board mà chúng ta cần sử dụng. Ví dụ, Arduino Nano.
- Bước 2: Chọn cổng COM
Sau khi đã thiết lập xong, tiến hành nạp chương trình : Ví dụ chọn chương trình điều khiển đèn LED nhấp nháy trong File/Examples/Basics/Blink.
- Bước 3: Upload chương trình
Upload Chương trình đã nạp thành công.
Upload Chương trình đã nạp thành công.