Arduino – Kiến thức cơ bản

Để có cái nhìn tổng quan khi bắt đầu với nền tảng phát triển Arduino, chúng ta cùng điểm qua những nội dung sẽ tìm hiểu phần này như sau:

Tên Arduino là tên của 1 quán bar ở Ivrea, Italy. Đây là nơi những nhà sáng lập ra dự án arduino gặp mặt để bắt đầu ý tưởng hình thành dự án này. Tên của quán bar này đặt theo tên của người chỉ huy quân đội (như lãnh chúa thời phong kiến) tại Ivrea và sau đó ông này là vua của nước Italy từ năm 1002 đến năm 1014.
  • Khái niệm về Arduino.

  • Tìm hiểu các dòng chip và các board Aruino trên thị trường.

  • Giới thiệu board mạch IoT Maker UnoX.

  • Tìm hiểu về Arduino IDE và cách cài đặt.

  • Giới thiệu sơ lược về ngôn ngữ C/C++.

Arduino

Arduino là gì ?

Khái niệm, lịch sử hình thành và phát triển.

Theo định nghĩa từ www.arduino.cc , Arduino là nền tảng điện tử mã nguồn mở, dựa trên phần cứng và phần mềm, linh hoạt và dễ sử dụng, các board Arduino có khả năng đọc dữ liệu từ môi trường (ánh sáng, nhiệt độ, độ ẩm,…​), trạng thái nút nhấn, tin nhắn từ Twitter,…​ và điều khiển trở lại với các thiết bị như động cơ, đèn LED, gửi thông tin đến 1 nơi khác,…​
Chúng ta có thể điều khiển các vi điều khiển trên board Arduino bằng cách sử dụng ngôn ngữ lập trình C++, được điều khiển biên dịch bởi Arduino IDE và các trình biên dịch đi kèm ra mã máy nhị phân. Lúc này Vi điều khiển có thể dễ dàng thực thi chương trình.

Hiện tại, Arduino là một công ty hoạt động trong lĩnh vực phần cứng và phần mềm máy tính mã nguồn mở. Dự án Arduino được sinh ra tại học viện Interaction Design ở Ivrea, Italy vào năm 2003. Mục đích ban đầu của board Arduino là giúp cho các sinh viên ở học viện – những người không có nền tảng kiến thức về điện tử có thể tạo ra các sản phẩm 1 cách nhanh chóng với chi phí thấp và dễ sử dụng. Đó là 1 dự án mã nguồn mở, Arduino 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.

Tên Arduino là tên của 1 quán bar ở Ivrea, Italy. Đây là nơi những nhà sáng lập ra dự án arduino gặp mặt để bắt đầu ý tưởng hình thành dự án này. Tên của quán bar này đặt theo tên của người chỉ huy quân đội (như lãnh chúa thời phong kiến) tại Ivrea và sau đó ông này là vua của nước Italy từ năm 1002 đến năm 1014.

Tại sao là Arduino ?

Hiện nay, Arduino được sử dụng trong rất nhiều dự án và trong nhiều lĩnh vực khác nhau. Chính vì sự đơn giản, dễ sử dụng và đặc biệt là mã nguồn và phần cứng mở nên nó nhận được sự hỗ trợ rất lớn từ các lập trình viên trên toàn thế giới. Phần mềm rất dễ cho những người mới bắt đầu nhưng cũng không thiếu sự linh hoạt cho những lập trình viên lâu năm. Cộng đồng Arduino rất lớn nên khi sử dụng với Arduino, theo cách nói vui là bạn được “support tới tận răng”, có nghĩa là vấn đề bạn gặp phải bây giờ, người dùng Arduino trên thế giới cũng đã gặp phải, giải quyết nó và đưa ra các thư viện tốt nhất cho bạn, với cộng đồng lớn và đặc biệt là tất cả đều open-source nên sẽ dễ dàng hơn nếu bạn chọn Arduino thay vì nền tảng lập trình khác.

Với những người “ngoại đạo” (đề cập đến những người không có nhiều kiến thức về điện tử) thì Arduino quả thực rất tuyệt vời, nó giúp họ dễ dàng tạo ra những sản phẩm liên quan đến điện tử. Những kiến trúc sư, giáo viên, nghệ sĩ có thể chỉ mất vài ngày để tạo ra sản phẩm điện tử nhằm phục vụ cho nhu cầu của họ, trong khi việc này trước đây dường như là bất khả thi. Tuy nhiên, có một câu hỏi đặt ra là: Nếu là 1 kỹ sư điện tử lập trình, có nên dùng Arduino cho các dự án của mình hay không? Bởi nó quá đơn giản và nhìn giống như là “đồ chơi của trẻ con” ???

Đây là chủ đề được bàn luận khá sôi nổi và thật khó để tìm ra câu trả lời chính xác. Arduino che đi sự phức tạp của việc lập trình cho vi điều khiển bằng cách phủ lên mình lớp “vỏ bọc” bên trên. Chỉ 1 vài câu lệnh đơn giản là có thể chớp, tắt được 1 con LED trong khi với các nền tảng lập trình khác, muốn làm được chuyện này thì bạn phải hiểu kiến trúc của vi điều khiển, hiểu cách truy cập, setup giá trị các bit trong thanh ghi,…​ từ đó mới có thể dùng tập lệnh của nó để viết code điều khiển LED. Và sự phức tạp, tinh vi của nền tảng Arduino cũng không thua kém gì các thư viện của nhà sản xuất, có chăng nó làm cho người dùng cảm giác đơn giản hơn thôi.

Những người xây dựng nền tảng Arduino đã tạo ra những lệnh vô cùng đơn giản, giúp cho người dùng dễ tiếp cận. Tuy nhiên cách học đối với “những người trong nghề” không gì tốt hơn nếu muốn nắm rõ về lập trình vi điều khiển là đào sâu tìm hiểu.
Ví dụ, đối với 1 người đang làm việc ở lĩnh vực IT, muốn tạo hiệu ứng cho các bóng đèn LED qua 1 ứng dụng trên điện thoại. Với họ, việc tạo ứng dụng trên điện thoại là không thành vấn đề, liên quan đến điều khiển LED, chỉ cần kết nối board Arduino với LED, “google search” để tìm kiếm 1 thư viện phù hợp, lấy những hiệu ứng họ cần trong thư viện đó. Việc này khá đơn giản nếu dùng Arduino. Vấn đề của họ đã được giải quyết thành công mà không cần biết quá nhiều về kiến thức điện tử.

Tuy nhiên, vấn đề phát sinh ở đây là: tôi muốn LED sáng mờ hơn, tôi muốn tạo 1 số hiệu ứng theo ý mình, tôi cần kết nối nó với các cảm biến khác, tôi cần truyền, nhận dữ liệu giữa các module mà tôi đã kết hợp,…​ bài toán đặt ra đã trở nên thực sự phức tạp và vượt tầm hiểu biết của họ. Lúc này, giá trị của 1 kĩ sư điện tử lập trình sẽ được thể hiện. Để làm được những yêu cầu ấy, bạn phải hiểu rõ cách thức hoạt động của vi điều khiển, các chức năng, các chuẩn truyền dữ liệu,…​ để từ đó có thể hiệu chỉnh lại thư viện đang có, tối ưu hóa và tùy biến theo yêu cầu của người dùng.

Câu hỏi đặt ra tiếp theo ở đây là: rất nhiều nền tảng lập trình khác cũng làm được điều này, vậy đâu là những lợi ích của Arduino ?

Ích lợi chính ở đây đó là sự đơn giản của các tập lệnh, cộng đồng lớn và open-source. Thư viện dành cho Arduino không quá khó tìm, lệnh không quá nhiều để học nhưng cái chính là bạn phải hiểu nó hoạt động như thế nào. Để tìm hiểu sâu hơn về nó, những người phát triển Arduino đã cung cấp cho chúng ta 1 thư viện Hardware Abstraction Library (gọi tắt là HAL) dành cho những ai muốn tìm hiểu sâu hơn về cách mà Arduino hoạt động.

Ví dụ, với Arduino, để bật 1 bóng LED, chúng ta sẽ dùng 2 lệnh đơn giản là pinMode(PIN_LED) và lệnh digitalWrite(PIN_LED) với PIN_LED là định nghĩa chân được đấu nối với đèn LED ngoài thực tế. Tìm hiểu chi tiết hơn thì pinMode() là 1 hàm :

  • Nhằm cấu hình chân giống như ngõ vào (input) hoặc ngõ ra (output), nó sẽ cấu hình thanh ghi hướng dữ liệu DDR (Data Direction Register), nếu 1 bit của thanh ghi DDR là 0 thì chân đó sẽ được cấu hình là input, giá trị bit bằng 1 là output.

  • Giá trị mặc định ban đầu của các bit này là 0 (input).

  • DDR là tên gọi chung của các thanh ghi ở chip ATmega328P, nó bao gồm 3 thanh ghi DDRB, DDRC, DDRD. Các thanh ghi này liên quan đến các chân của chip ATmega328P (board Arduino Uno R3) như bảng bên dưới:

gen ddr atmega328
Figure 1. Bảng các thanh ghi DDR tương ứng với các chân của board Arduino Uno R3

Tiếp theo, ATmega328P có 3 thanh ghi PORT để cài đặt giá trị cho các bit, các bit này tương ứng với các chân I/O của chip ATmega328P. Chân A0 – A5 là các chân Analog, các chân D0 – D13 là các chân Digital. Giá trị bit bằng 0 là LOW (mức thấp, điện áp 0V DC), bằng 1 là HIGH (mức cao, điện áp 5VDC). Giá trị mặc định ban đầu của bit là 0.

port reg atmega328
Figure 2. Bảng các thanh ghi PORT tương ứng với các chân của board Arduino Uno R3
diagram classes
diagram classes1

Như vậy, nếu chúng ta muốn cho các chân từ D0 – D7 là ngõ ra thì ta cần cài đặt DDRD = 0b00000000 (0b là định dạng kiểu nhị phân, được hiểu là gán giá trị 0 hoặc 1 cho từng bit), cho các chân này mức HIGH thì cài đặt giá trị thanh ghi PORTD = 0b11111111.

Đó là cách hoạt động chung khi cài đặt hướng và setup giá trị cho các chân GPIPO của các nền tảng lập trình hiện nay. Nếu bạn là 1 kĩ sư điện tử lập trình thì cách học nên theo hướng như vậy. Một khi bạn đã hiểu cách hoạt động của vi điều khiển thì sử dụng Arduino sẽ giúp chúng ta xây dựng dự án 1 cách nhanh chóng do tập lệnh khá đơn giản để dùng.

Chúng ta có thể xem các tập lệnh của Arduino tại www.arduino.cc/reference/en và tìm hiểu sâu hơn các tập lệnh của Arduino tại link Arduino hardware core
Một số hàm cơ bản được giải thích chi tiết hơn tại garretlab.web.fc2.com

Bên cạnh đó, một số điểm mạnh của Arduino nữa là:

  • Các ví dụ mẫu đi kèm với thư viện và tất cả đều open-source nên khi tìm đến các ví dụ mẫu, chúng ta sẽ hiểu cách thức thư viện hoạt động. đồng thời có thể xem source code của họ viết để có thể hiệu chỉnh, tối ưu thư viện theo cách của mình.

  • Việc upload code thông qua cổng USB, giúp đơn giản quá trình nạp code.

Những board mạch Arduino trên thị trường

Hiện nay trên thị trường có hàng trăm board mạch Arduino khác nhau, Chúng đa phần là các biến thể PCB (các board mạch điện) của những board mạch chính đến từ nhà sản xuất Arduino. Những board mạch này hoặc có thêm 1 số tính năng cải tiến nào đó hoặc đơn giản là được thiết kế lại nhằm giảm giá thành sản phẩm để có thể tới tay người dùng nhiều hơn. Chúng ta hãy cùng điểm qua 1 số board mạch Arduino chính như bên dưới :

1. 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 và các chức năng của board Arduino Uno R3 :

Arduino Uno R3Pinout
Figure 3. Hình ảnh và các chức năng của board Arduino Uno R3 (Nguồn www.arduino.cc)[role=”center”, align=”center”]
uno led bb

Điểm qua 1 số thông tin chính của boad:

  • Giá thành : €20.00 (theo www.arduino.cc).

  • Sử dụng vi điều khiển ATmega328 của hãng Atmel.

  • Lập trình thông qua giao diện cổng USB.

  • Header cho các chân GPIO.

  • Gồm 4 LED: nguồn, RX, TX và Debug.

  • Nút nhấn Reset board mạch.

  • Có jack để cấp nguồn khi không dùng nguồn ở cổng USB.

  • Các header cho In-circuit serial programmer (ICSP), hiểu đơn giản thì đây là các header để kết nối với mạch nạp cho chip nếu không nạp thông qua cổng USB.

Giới thiệu về vi điều khiển ATmega328

Vi điều khiển (tiếng Anh là microcontroller hoặc microcontroller unit) là trái tim của các board mạch lập trình được. Nó có khả năng thực thi code khi chúng ta yêu cầu. Bên trong vi điều khiển bao gồm rất nhiều các mạch điện với các khối chức năng như CPU (Central Processing Unit), RAM (Random Access Memmory), ROM (Read Only Memory), Input/output ports, các bus giao tiếp (I2C, SPI),…​

Vi điều khiển giúp chúng ta có thể giao tiếp với sensor, điều khiển thiết bị.

Board Arduino Uno R3 sử dụng vi điều khiển ATmega328 của hãng Atmel (một công ty thiết kế và chế tạo vật liệu bán dẫn ở Mỹ). ATmega328 là vi điều khiển thuộc dòng vi điều khiển 8 bits (data bus là 8 bit)

Table 1. Bảng thông số kĩ thuật của ATmega328 (theo wikipedia.org)
Parameter Value

CPU type

8-bit AVR

Performance

20 MIPS at 20 MHz

Flash memory

32 kB

SRAM

2 kB

EEPROM

1 kB

Pin count

28-pin PDIP, MLF, 32-pin TQFP, MLF

Maximum operating frequency

20 MHz

Number of touch channels

16

Hardware QTouch Acquisition

No

Maximum I/O pins

26

External interrupts

2

USB Interface

No

Chúng ta sẽ tìm hiểu sâu hơn về ATmega328 ở các chương tiếp theo của sách. Dưới đây là bảng thông số kỹ thuật của board Arduino Uno R3

Table 2. Bảng thông số kĩ thuật của ATmega32 (theo www.arduino.cc)
Parameter Information

Microcontroller

ATmega328P

Operating Voltage

5V

Input Voltage (recommended)

7-12V

Input Voltage (limit)

6-20V

Digital I/O Pins

14 (of which 6 provide PWM output)

PWM Digital I/O Pins

6

Analog Input Pins

6

DC Current per I/O Pin

20 mA

DC Current for 3.3V Pin

50 mA

Flash Memory

32 KB (ATmega328P) of which 0.5 KB used by bootloader

SRAM

2 KB (ATmega328P)

EEPROM

1 KB (ATmega328P)

Clock Speed

16 MHz

LED_BUILTIN

13

Length x Width

68.6 mm x 53.4 mm

Weight

25 g

2. Arduino Nano

arduino nano
Figure 4. Hình ảnh board Arduino Nano (Nguồn www.arduino.cc)

Arduino Nano là một board mạch sử dụng chip ATmega328 (loại Arduino Nano 3.x) hoặc dùng ATmega168 (Arduino Nano 2.x), tuy nhiên có kích thước nhỏ gọn hơn để có thể tích hợp vào các hệ thống, đi kèm với đó là 1 vài điểm khác khi so sánh với board Arduino Uno R3 :

  • Sử dụng cổng Mini-B USB thay vì cổng USB chuẩn.

  • Bổ sung thêm 2 chân Analog.

  • Không có jack nguồn DC.

3. Arduino Leonardo

arduino leonardo
Figure 5. Hình ảnh board Arduino Leonardo (Nguồn www.arduino.cc)

Arduino Leonardo sử dụng vi điều khiển ATmega32u4, một số điểm khác biệt chính so với board Arduino Uno được liệt kê bên dưới:

  • Bên trong chip ATmega32u4 được tích hợp 1 chip usb to serial thay vì phải dùng 2 mcu trên board.

  • Có thể giả lập board Leonardo như chuột, bàn phím, joystick thay vì phải dùng 1 thiết bị serial khác. Chúng ta sẽ tìm hiểu tính năng này ở phần USB-serial.

  • Giá thành rẻ hơn (€18.00 trên www.arduino.cc)

  • 20 digital I/O (7 chân PWM).

  • 12 chân Analog (các chân PWM có thể được dùng như Analog)

4. Arduino mega2560

arduino mega 2560
Figure 6. Hình ảnh board Arduino Mega 2560 (Nguồn www.arduino.cc)

Arduino mega2560 sử dụng chip ATmega2560 với 54 chân digital I/O (15 chân có thể dùng với PWM), 16 chân Analog, 4 UARTs,…​ board mạch này là phiên bản nâng cao của Arduino Uno, được dùng trong các dự án phức tạp như máy in 3D, robot,…​

Giới thiệu board IoT Maker UnoX và IoT Arduino STEM Kit

Board IoT Maker UnoX

Giới thiệu

Board IoT Maker UnoX được thiết kế và sản xuất bởi IoT Maker VietNam. Về cơ bản, nó tương tự như board mạch Arduino Uno R3 với 1 số tính năng bổ sung :

  • Giá thành thấp, độ ổn định cao.

  • Sử dụng chip nạp CH340E có kích thước nhỏ gọn và tốc độ upload cực nhanh.

  • Được trang bị các header giúp việc giao tiếp với các module liên quan đến truyền nhận dữ liệu theo chuẩn I2C một cách dễ dàng.

  • Sử dụng cổng mirco USB thay cho cổng USB truyền thống.

  • Sử dụng chip SMD (chip dán) nên có thêm 2 chân Analog so với board Arduino Uno.

  • Bổ sung thêm nút nhấn kết nối với chân D2 để lập trình.

Thông tin

Đây là dự án Open-source hardware, các bạn có thể xem đầy đủ nội dung của dự án tại đường dẫn https://github.com/iotmakervn/iotmaker-arduino-uno-hw

Hình ảnh schematic

iotmaker arduino uno sch
Figure 7. Hình ảnh sơ đồ nguyên lí board IoT Maker UnoX.

Pinout

iotmaker arduino uno pcb
Figure 8. Hình ảnh pinout board IoT Maker UnoX.

Arduino STEM Kit

Nhằm mục đích cho việc thực hành các nội dung trong cuốn sách này với board IoT Maker UnoX, IoT Maker VietNam thiết kế bộ Arduino STEM Kit để người dùng có đầy đủ công cụ thực hành và lập trình các nội dung trong sách. Nó cũng giúp chúng ta giảm chi phí và thời gian để tìm mua các linh kiện.

Hình ảnh

iotmaker arduino kit
Figure 9. Hình ảnh các linh kiện của IoT Arduino STEM Kit.

Arduino IDE

Khái niệm.

Hiểu một cách đơn giản, Arduino IDE là 1 phần mềm giúp chúng ta 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 Environment, 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 và thực thi code theo yêu cầu của người dùng).

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ư ESP, ARM, PIC, …​

Cài đặt

Chúng ta đã đề cập đến tính năng và lợi ích mang lại ở mục trước, phần này sẽ hướng dẫn các bạn cách cài đặt Arduino IDE. Có 2 cách sử dụng, bao gồm sử dụng online (nếu có kết nối internet ổn định) và cài đặt offline trên máy. Khuyến cáo nên sử dụng cài đặt offline.

1. Dùng Online IDE

Bước 1: Truy cập vào đường dẫn https://www.arduino.cc/en/Main/Software. Chọn try it now.

install online ide
Figure 10. Giao diện Online IDE

Bước 2: Tạo tài khoản bằng cách nhấn vào Signup nếu lần đầu sử dụng, hoặc đăng nhập bằng cách nhấn vào Login nếu đã tạo tài khoản trước đó. Giao diện như hình bên dưới:

login online ide
Figure 11. Giao diện đăng kí , đăng nhập.

Bước 3: Cài đặt Arduino plugin

Mục đích của việc cài đặt này là để cho phép trình duyệt Web tải các chương trình của bạn vào board Arduino. Download phần mềm và cài đặt theo các hướng dẫn của phần mềm như hình ảnh bên dưới:

install plugin 01
Figure 12. Cài đặt Arduino plugin

Bước 4: Lập trình trên Web Editor.

Truy cập vào Arduino Web Editor như ở bước 2, thực hiện đăng nhập. Giao diện chia làm 3 phần như hình bên dưới:

interface online ide
Figure 13. Giao diện Arduino Web Editor

Mô tả các tính năng ở mục số 1:

  • Your Sketchbook: Giúp chúng ta có thể thấy các sketch (các chương trình trong Arduino được gọi là Sketch)

  • Examples: Đây là những sketch tham khảo nhằm giúp người dùng xem các chức năng cơ bản của các thư viện Arduino, các thư viện này mặc định ở chế độ read-only (chỉ đọc và không cho phép chỉnh sửa).

  • Libraries: Cho phép chúng ta “include” những thư viện vào trong sketch để thực hiện các chức năng theo nhu cầu sử dụng.

  • Serial monitor: Cho phép truyền nhận dữ liệu của board thông qua USB cable.

  • Help: Cung cấp các hướng dẫn để bắt đầu lập trình Arduino Web Editor.

  • Preferences: Những cài đặt về các thuộc tính của trình soạn thảo code đang sử dụng, như cỡ chữ, màu nền,…​

Mô tả các tính năng ở mục số 2:

Trong mục này hiển thị các folder, sketch, nó cũng bao gồm các tùy chọn như tạo 1 folder mới, tạo sketch mới, import 1 sketch khác từ máy tính lên Arduino Web Editor.

Mô tả các tính năng ở mục số 3:

Phần này bao gồm trình soạn thảo code và các optipon để có thể nạp code vào board, bao gồm:

  • Nút Verify: Giúp biên dịch các file của chương trình, sẽ có thông báo lỗi nếu phát sinh lỗi trong code.

  • Nút Upload: Upload code code vào board Arduino, quá trình này bao gồm cả biên dịch các file trong sketch.

  • Hộp thoại Select board and port: Cần chọn board và port để nạp code.

  • Nút …​: Có các tùy chọn liên quan đến sketch như lưu, xóa, đổi tên, …​

  • Nút Share: Cho phép chúng ta chia sẻ sketch tới người khác.

Việc tạo 1 dự án trên Arduino Web Editor là khá đơn giản, chỉ cần tạo 1 sketch mới, viết code trên vùng soạn thảo, chọn đúng board, port và nạp chương trình. Chi tiết các bước thực hiện có thể xem tại getting-started-with-arduino-web-editor

2. Dùng Offline

Cài đặt

Bước 1: Download Arduino IDE.

Truy cập đến trang chủ www.arduino.cc, tùy hệ điều hành đang làm việc mà chọn gói cài đặt thích hợp. Chúng ta có nhiều sự lựa chọn để cài đặt, như “STABLE version”, “BETA BUILDS” hay “HOURLY BUILDS”. Stable là phiên bản ổn định, đã được Arduino kiểm chứng và được đưa vào sử dụng. Các phiên bản như “BETA BUILDS” hay “HOURLY BUILDS” được các nhà phát triển xây dựng và có nhiều tính năng mới, tuy nhiên có thể phát sinh 1 số lỗi. Vì chúng ta mới bắt đầu nên khuyên dùng phiên bản STABLE.

Bước 2: Cài đặt Arduino IDE vào máy tính.

Với hệ điều hành Windowns

Chúng ta có thể download phiên bản Windowns Installer (.exe) hoặc Windowns Zip package. Installer giúp cài đặt trực tiếp mọi thứ ta cần bao gồm cả driver (khuyên dùng), với Zip package thì cần giải nén tập tin và cài đặt bằng tay. Tuy nhiên Zip package hữu ích khi muốn cài đặt với phiên bản Portable.

Sau khi download hoàn thành, tiến hành cài đặt chương trình. Cho phép quá trình cài đặt driver lên máy tính nếu có thông báo từ hệ điều hành. Check vào các hộp thoại để cài đặt các thành phần đi kèm như hình bên dưới:

driver capture 1
Figure 14. Cài đặt Arduino IDE (Nguồn www.arduino.cc)

Tiếp theo, chọn thư mục cài đặt (nên để theo mặc định) và chờ quá trình cài đặt hoàn tất.

driver capture 2
Figure 15. Chọn thư mục để cài đặt Arduino IDE (Nguồn www.arduino.cc)
driver capture 3
Figure 16. Quá trình giải nén và cài đặt Arduino lên máy tính (Nguồn www.arduino.cc)

Với hệ điều hành Linux

Lựa chọn phiên bản của hệ điều hành để chọn gói cài đặt thích hợp (Linux 32 bits, Linux 64 bits hoặc Linux ARM). Chọn Save File để download phần mềm về máy như hình dưới:

linux download
Figure 17. Download phần mềm Arduino (Nguồn www.arduino.cc)
linux extract
Figure 18. Giải nén file Arduino vừa download về (Nguồn www.arduino.cc)

Click chuột phải vào thư mục vừa giải nén và chọn Open in Terminal (phím tắt Ctrl + Alt + T). Chạy lệnh ./install.sh như hình bên dưới và chờ quá trình cài đặt hoàn tất. Sau khi cài đặt hoàn tất, sẽ có icon Arduino trên màn hình Desktop.

linux install 2
Figure 19. Chạy Arduino IDE (Nguồn www.arduino.cc)

Chú ý: Khắc phục lỗi sử dụng port khi upload sketch trên Linux.

Khi gặp 1 lỗi Error opening serial port …​ , xử lí bằng cách thiết lập quyền sử dụng serial port.

Bước 1: Mở Terminal và gõ lệnh:

ls -l /dev/ttyUSB*

Chúng ta sẽ thấy một số nội dung giống như:

crw-rw---- 1 root dialout 188, 0 5 apr 23.01 ttyUSB0

Bước 2: Thiết lập quyền sử dụng serial port bằng cách thêm username vào group owner của file (dialout), sử dụng lệnh:

sudo usermod -a -G dialout <username>

username là tên username khi sử dụng Linux. Thực hiện đăng xuất (log out) sau đó đăng nhập (log in) lại username để thay đổi có hiệu lực.

linux fix error
Figure 20. Hình ảnh xử lí lỗi opening serial port (Nguồn www.arduino.cc)

Với hệ điều hành MacOSX

Download phần mềm về máy và giải nén nó. Nếu sử dụng trình duyệt Safari thì sau khi download nó sẽ tự động giải nén.

mac download
Figure 21. Hình ảnh phần mềm Arduino sau khi download (Nguồn www.arduino.cc)

Copy Arduino vào thư mục Appications hay bất kì thư mục nào khác trên máy tính để hoàn tất quá trình cài đặt.

mac app
Figure 22. Hình ảnh Arduino trong mục Appications (Nguồn www.arduino.cc)
Sử dụng Arduino với board IoT Maker UnoX

Click vào icon Arduino để khởi động Arduino IDE, sau khi khởi động, phần mềm sẽ có giao diện như bên dưới:

arduino interface
Figure 23. Hình ảnh giao diện Arduino IDE
  • Mục 1: Là thanh menu bar, bao gồm các tùy chọn thiết lập cho phần mềm Arduino và cho sketch đang thực hiện.

  • Mục 2: Là thanh symbol bar, gồm các nút nhấn Verify để biên dịch sketch, upload để nạp sketch vào board, New để tạo sketch mới, Open để mở sketch, Save lưu sketch và Serial Monitor để mở serial port.

  • Mục 3: Vùng để soạn thảo code cho sketch.

  • Mục 4: Vùng hiển thị thông tin khi biên dịch, hiển thị quá trình nạp sketch và các thông báo lỗi khi biên dịch sketch (nếu có).

Sử dụng cable micro USB kết nối với máy tính và board IoT Maker UnoX như hình bên dưới:

connect to pc
Figure 24. Hình ảnh kết nối board IoT Maker UnoX với máy tính.

Trên thanh menu bar chọn Tools, ở mục Boards chọn Arduino/Genuino Uno, mục Port chọn cổng micro USB đã kết nối vào máy tính, tùy thuộc vào hệ điều hành mà các port này có tên gọi khác nhau, trên Linux thường là /dev/ttyUSB0, /dev/ttyUSB0,…​, với Windows thường là COM1, COM2,…​, với Mac OS thường là /dev/tty.wchusbserial1420,…​

connect to ide
Figure 25. Hình ảnh cấu hình cho board IoT Maker UnoX trên Arduino

Sau đó, chúng ta đã có thể viết source code và sử dụng Arduino với board IoT Maker UnoX.

Ứng dụng mang lại

Hiện nay, Arduino được sử dụng rất rộng rãi trong rất nhiều dự án và rất nhiều lĩnh vực trong đời sống, từ giám sát, điều khiển môi trường, thu thập dữ liệu, thời trang, y tế,…​ . Một số hình ảnh bên dưới cho chúng ta thấy phần nào những ứng dụng mà Arduino mang lại trong cuộc sống.

application weather
Figure 26. Arduino trong thu thập và điều khiển nhiệt độ, độ ẩm
application health
Figure 27. Arduino trong hệ thống chăm sóc sức khỏe
application smart car
Figure 28. Xe điều khiển từ xa
application wearable
Figure 29. Arduino trong thời trang
application materia
Figure 30. Arduino với máy in 3D

Arduino và C/C++

Một thư viện mẫu của Arduino thường có cấu trúc như hình bên dưới :

dir source sample
Figure 31. Cấu trúc 1 thư viện mẫu trong Arduino

Một phần source code của folder src như hình :

lib sample
Figure 32. Một phần source code của 1 thư viện mẫu

Để tạo ra những hàm đơn giản cho chúng ta sử dụng khi dùng Arduino, các nhà phát triển (developer) viết nên những thư viện, những thư viện đều viết bằng C/C`, vì vậy **muốn giỏi lập trình Arduino hay bất kì nền tảng lập trình với vi điều khiển nào hiện nay thì điều kiện tiên quyết là bạn phải sử dụng tốt ngôn ngữ lập trình `C/C.**

Môt số nền tảng lập trình vi điều khiển khác có thể sử dụng các ngôn ngữ lập trình khác như Python, Java,…​ tuy nhiên C được sử dụng rất rộng rãi trong việc lập trình vi điều khiển để phát triển các hệ thống nhúng. Ngoài ra, khi có kiến thức tốt về C/C++, việc học 1 ngôn ngữ khác cũng sẽ dễ dàng và nhanh hơn rất nhiều.

Trong tài liệu này sẽ không hướng dẫn về C/C++, thay vào đó, sẽ có phụ lục về 1 số thuộc tính cơ bản tại mục cheasheet ở cuối sách.

Một số tài liệu học lập trình C cho người mới bắt đầu được nhiều người sử dụng là Head First C của 2 tác giả Dawn Griffiths, David Griffiths và sách learn-c-the-hard-way của tác giả Zed A Shaw.

Tổng kết

Qua phần này, chúng ta đã hiểu về Arduino là gì cũng như các công cụ, môi trường cần thiết để xây dựng 1 dự án với nền tảng phát triển Arduino, đồng thời đã có thể bắt đầu phát triển ứng dụng với Arduino. Các công cụ được lựa chọn đều là đa nền tảng, dễ dàng được sử dụng cho các hệ điều hành Mac OS, Windows, hay Linux.

Một số website giúp chúng ta hiểu rõ hơn về Arduino và các công cụ hỗ trợ đi kèm:

Arduino

  • Trang chủ www.arduino.cc, bao gồm tất cả các thông tin liên quan đến Arduino của thế giới.

  • Trang arduino.vn, diễn đàn trao đổi các thông tin liên quan đến các dự án Arduino tại Việt Nam.

  • Trang openstem.vn, Các dự án nhỏ sử dụng Arduino bằng tiếng Việt.

Ngôn ngữ lập trình C

Leave a Comment