ARDUINO - Nền tảng điều khiển tự động nên khám phá
1. Arduino là gì?
Arduino: là một nền tảng mã nguồn mở được sử dụng để xây dựng các ứng dụng điện tử. Arduino gồm có board mạch có thể lập trình được ( thường gọi là vi điều khiển ) và các phần mềm hỗ trợ phát triển tích hợp IDE (Integrated Development Environment) dùng để soạn thảo, biên dịch code và nạp chương cho board.
- Arduino ngày nay rất phổ biến cho những người mới bắt đầu tìm hiểu về điện tử vì nó đơn giản, hiệu quả và dễ tiếp cận. Không giống như các loại vi điều khiển khác, Arduino không cần phải có các công cụ chuyên biệt để phục vụ việc nạp code, ví dụ để nạp code cho PIC cần phải có Pic Kit. Đối với Arduino rất đơn giản, ta có thể kết nối với máy tính bằng cáp USB.
- Arduino thực sự đã gây sóng gió trên thị trường người dùng DIY (là những người tự chế ra sản phẩm của mình) trên toàn thế giới trong vài năm gần đây, gần giống với những gì Apple đã làm được trên thị trường thiết bị di động. Số lượng người dùng cực lớn và đa dạng với trình độ trải rộng từ bậc phổ thông lên đến đại học đã làm cho ngay cả những người tạo ra chúng phải ngạc nhiên về mức độ phổ biến.
- Arduino ra đời tại thị trấn Ivrea thuộc nước Ý và được đặt theo tên một vị vua vào thế kỷ thứ 9 là King Arduin. Arduino chính thức được đưa ra giới thiệu vào năm 2005 như là một công cụ khiêm tốn dành cho các sinh viên của giáo sư Massimo Banzi, là một trong những người phát triển Arduino, tại trường Interaction Design Instistute Ivrea (IDII). Mặc dù hầu như không được tiếp thị gì cả, tin tức về Arduino vẫn lan truyền với tốc độ chóng mặt nhờ những lời truyền miệng tốt đẹp của những người dùng đầu tiên. Hiện nay Arduino nổi tiếng tới nỗi có người tìm đến thị trấn Ivrea chỉ để tham quan nơi đã sản sinh ra Arduino.
Những người sáng lập ra nền tảng Arduino
Board mạch Arduino Uno R3
2. Môi trường lập trình board mạch Arduino
Thiết kế board mạch nhỏ gọn, trang bị nhiều tính năng thông dụng mang lại nhiều lợi thế cho Arduino, tuy nhiên sức mạnh thực sự của Arduino nằm ở phần mềm. Môi trường lập trình đơn giản dễ sử dụng, ngôn ngữ lập trình Wiring dễ hiểu và dựa trên nền tảng C/C++ rất quen thuộc với người làm kỹ thuật. Và quan trọng là số lượng thư viện code được viết sẵn và chia sẻ bởi cộng đồng nguồn mở là cực kỳ lớn.
Môi trường lập trình Arduino IDE có thể chạy trên ba nền tảng phổ biến nhất hiện nay là Windows, Macintosh OSX và Linux. Do có tính chất nguồn mở nên môi trường lập trình này hoàn toàn miễn phí và có thể mở rộng thêm bởi người dùng có kinh nghiệm.
Ngôn ngữ lập trình có thể được mở rộng thông qua các thư viện C++. Và do ngôn ngữ lập trình này dựa trên nền tảng ngôn ngữ C của AVR nên người dùng hoàn toàn có thể nhúng thêm code viết bằng AVR C vào chương trình nếu muốn.
3. Các loại Board mạch Arduino
Được phát triển trong nhiều năm nên có rất nhiều loại Board Arduino được đề xuất. Ta sẽ đi tìm hiểu các chức năng của Board này để làm sao lựa chọn cho phù hợp với yêu cầu thiết kế của bạn.Tất cả các Board được thể hiện ở các hình trên, trên mỗi Board có in tên, bạn chú ý để khỏi nhầm lẫn.
3.1. Arduino Uno
Đây là Board cơ bản nhất cho người mới bắt đầu. Giá của nó khoảng 200 nghìn, bạn có thể hỏi mua ở nhiều nơi. Bạn có thể mua online tại hshop hoặc bất kỳ đâu.Nó có 14 chân dữ liệu số, có thế cấu hình làm chân lấy tín hiệu vào hoặc xuất tín hiệu ra là tùy bạn. 6 chân tương tự đầu vào 5V, độ phân giải 1024 mức. Tốc độ 16MHz, điện áp vào từ 7~12V, chân số có thể cấp điện áp ra 5V và 1A, nếu bạn điều khiển chân số ra tiêu tốn quá 1A thì Board sẽ bị hỏng. Kích thước Board khoảng 5,5x7cm.
3.2. Arduino Micro
Board này có thiết kế nhỏ, dành cho các không gian lắp đặt nhỏ, nhẹ. kích thước khoảng 5x2cm. Board này giống với Arduino Uno. Có 20 chân số, trong đó có 7 chân có thể phát xung PWM. 12 chân tương tự.
3.3. Arduino Pro/Pro Micro
Nhìn chung thiết kế giúp Arduino Uno. Có 2 loại, 3.3V và 5V. Nó không được thiết kế chân sẵn nên khi sử dụng bạn có thể hàn trực tiếp nhằm tiết kiệm không gian.
3.4. Arduino Nano
Board này có kích thước nhỏ nhất. gồm 14 chân số (6 chân PWM) và 8 chân tương tự. Kích thước khoảng 2x4cm. Nhỏ gọn, dễ lắp đặt ở bất kỳ đâu.
Sau đây là các Board có thiết kế cao cấp hơn:
3.5. Arduino Mega
Có thiết kế hoạt động tương tự Arduino UNO, tuy nhiên có số lượng chân vào ra lớn với 54 chân Số (14 chân PWM), 16 chân tương tự và 4 cổng truyền nối tiếp (RS232) dễ dàng giao tiếp với các board, thiết bị khác. Kích thước 5x10cm.
3.6. Arduino Leonardo
Đây là board có thiết kế giống Arduino Micro, sự khác biệt lớn nhất giữa nó và các board khác là nó không có cổng USB dành cho việc lập trình. Mọi thứ được đặt trong 1 chip điều khiển, cho phép giao tiếp thông qua cổng COM ảo và cho phép nó giao tiếp với chuột và phím máy tính dễ dàng. Không giống như các Board khác, khi cổng nối tiếp mở thì nó sẽ không bị reset, để gỡ rối cho chương trình thì bạn cần giao tiếp qua lệnh Serial.prints() trong hàm Setup().
3.7. Arduino Due
Đây là Board có thiết kế lớn và xấu nhất trong tất cả các Board, nó hoạt động ở điện áp 3.3V. Các chân số có mức logic ở 3,3V nên khi giao tiếp bạn cần phải nâng áp để có thể giao tiếp bình thường. Gồm 54 chân số ( 12 chân tương tự). 4 cổng nối tiếp tương tự Arduino Mega. Nó chạy bộ xử lý 32bit, 84MHz. nó xử lý nhanh hơn gấp 5 lần so với các Board arduino khác. Xử lý chương trình nhanh hơn 10 lần. Vì vậy nó đọc các chân đầu vào và đáp ứng nhanh hơn.
3.8. Arduino Ethernet
Như tên của nó, nó là 1 Arduino giống chức năng với UNO tuy nhiên nó được tích hợp Module Ethernet trong nó. có tích hợp thẻ SD. Thật ra với board này bạn c&oa
4. Khả năng ghép nối của Arduino.
4.1. Ghép nối với các cảm biến.
- Tất cả những cảm biến ghép nối được với vi điều khiển thì cũng ghép nối được với Arduino. Các cảm biến phổ biến gồm:
Cảm biến nước, cảm biến nhiệt đô/ độ ẩm, cảm biến hồng ngoại/ ánh sáng, cảm biến màu, cảm biến rung, cảm biến âm thanh, cảm biến siêu âm, cảm biến khí, cảm biến áp suất, cảm biến chuyển động, cảm biến khoảng cách, cảm biến dòng điện, cảm biến góc/ gia tốc, cảm biến Hall, cảm biến từ trường, cảm biến quang điện......
4.2. Ghép nối với các module chức năng.
Nếu có kiến thức và kỹ năng về thiết kế mạch điện tử người sử dụng có thể tự thiết kế các module chức năng ghép nối với Arduino. Tuy nhiên việc này đòi hỏi tốn thời gian chưa tính đến việc thiết kế bị lỗi phải thực chỉnh sửa và làm mới lại gây lãng phí.
Cộng đồng phát triển Arduino thiết kế và sản xuất hàng loạt các module chuẩn để kết nối với các Board mạch Arduino. Điều này giúp cho người thiết kế phần cứng "nhàn rỗi" hơn trong việc thiết kế và làm mạch in cho các ứng dụng và người sử dụng không phải bận tâm về các sai sót trong thiết kế phần cứng. Hiện nay có các module phổ biến sau:
- Module LED, LCD.
- Module đo thông số điện.
- Module nguồn.
- Module RF.
- Module Bluetooth.
- Module wifi.
- Module Xbee.
- Module GSM/ GPRS/ 3G/ GPS.
- Module Finger Printer.
- Module Driver.
- Module Keypad.
- Module Relay.
- Module Thời gian....
Môi trường lập trình Arduino IDE có thể chạy trên ba nền tảng phổ biến nhất hiện nay là Windows, Macintosh OSX và Linux. Do có tính chất nguồn mở nên môi trường lập trình này hoàn toàn miễn phí và có thể mở rộng thêm bởi người dùng có kinh nghiệm.
Ngôn ngữ lập trình có thể được mở rộng thông qua các thư viện C++. Và do ngôn ngữ lập trình này dựa trên nền tảng ngôn ngữ C của AVR nên người dùng hoàn toàn có thể nhúng thêm code viết bằng AVR C vào chương trình nếu muốn.
3. Các loại Board mạch Arduino
Được phát triển trong nhiều năm nên có rất nhiều loại Board Arduino được đề xuất. Ta sẽ đi tìm hiểu các chức năng của Board này để làm sao lựa chọn cho phù hợp với yêu cầu thiết kế của bạn.Tất cả các Board được thể hiện ở các hình trên, trên mỗi Board có in tên, bạn chú ý để khỏi nhầm lẫn.
3.1. Arduino Uno
Đây là Board cơ bản nhất cho người mới bắt đầu. Giá của nó khoảng 200 nghìn, bạn có thể hỏi mua ở nhiều nơi. Bạn có thể mua online tại hshop hoặc bất kỳ đâu.Nó có 14 chân dữ liệu số, có thế cấu hình làm chân lấy tín hiệu vào hoặc xuất tín hiệu ra là tùy bạn. 6 chân tương tự đầu vào 5V, độ phân giải 1024 mức. Tốc độ 16MHz, điện áp vào từ 7~12V, chân số có thể cấp điện áp ra 5V và 1A, nếu bạn điều khiển chân số ra tiêu tốn quá 1A thì Board sẽ bị hỏng. Kích thước Board khoảng 5,5x7cm.
3.2. Arduino Micro
Board này có thiết kế nhỏ, dành cho các không gian lắp đặt nhỏ, nhẹ. kích thước khoảng 5x2cm. Board này giống với Arduino Uno. Có 20 chân số, trong đó có 7 chân có thể phát xung PWM. 12 chân tương tự.
3.3. Arduino Pro/Pro Micro
Nhìn chung thiết kế giúp Arduino Uno. Có 2 loại, 3.3V và 5V. Nó không được thiết kế chân sẵn nên khi sử dụng bạn có thể hàn trực tiếp nhằm tiết kiệm không gian.
3.4. Arduino Nano
Board này có kích thước nhỏ nhất. gồm 14 chân số (6 chân PWM) và 8 chân tương tự. Kích thước khoảng 2x4cm. Nhỏ gọn, dễ lắp đặt ở bất kỳ đâu.
Sau đây là các Board có thiết kế cao cấp hơn:
3.5. Arduino Mega
Có thiết kế hoạt động tương tự Arduino UNO, tuy nhiên có số lượng chân vào ra lớn với 54 chân Số (14 chân PWM), 16 chân tương tự và 4 cổng truyền nối tiếp (RS232) dễ dàng giao tiếp với các board, thiết bị khác. Kích thước 5x10cm.
3.6. Arduino Leonardo
Đây là board có thiết kế giống Arduino Micro, sự khác biệt lớn nhất giữa nó và các board khác là nó không có cổng USB dành cho việc lập trình. Mọi thứ được đặt trong 1 chip điều khiển, cho phép giao tiếp thông qua cổng COM ảo và cho phép nó giao tiếp với chuột và phím máy tính dễ dàng. Không giống như các Board khác, khi cổng nối tiếp mở thì nó sẽ không bị reset, để gỡ rối cho chương trình thì bạn cần giao tiếp qua lệnh Serial.prints() trong hàm Setup().
3.7. Arduino Due
Đây là Board có thiết kế lớn và xấu nhất trong tất cả các Board, nó hoạt động ở điện áp 3.3V. Các chân số có mức logic ở 3,3V nên khi giao tiếp bạn cần phải nâng áp để có thể giao tiếp bình thường. Gồm 54 chân số ( 12 chân tương tự). 4 cổng nối tiếp tương tự Arduino Mega. Nó chạy bộ xử lý 32bit, 84MHz. nó xử lý nhanh hơn gấp 5 lần so với các Board arduino khác. Xử lý chương trình nhanh hơn 10 lần. Vì vậy nó đọc các chân đầu vào và đáp ứng nhanh hơn.
3.8. Arduino Ethernet
Như tên của nó, nó là 1 Arduino giống chức năng với UNO tuy nhiên nó được tích hợp Module Ethernet trong nó. có tích hợp thẻ SD. Thật ra với board này bạn c&oa
4. Khả năng ghép nối của Arduino.
4.1. Ghép nối với các cảm biến.
- Tất cả những cảm biến ghép nối được với vi điều khiển thì cũng ghép nối được với Arduino. Các cảm biến phổ biến gồm:
Cảm biến nước, cảm biến nhiệt đô/ độ ẩm, cảm biến hồng ngoại/ ánh sáng, cảm biến màu, cảm biến rung, cảm biến âm thanh, cảm biến siêu âm, cảm biến khí, cảm biến áp suất, cảm biến chuyển động, cảm biến khoảng cách, cảm biến dòng điện, cảm biến góc/ gia tốc, cảm biến Hall, cảm biến từ trường, cảm biến quang điện......
4.2. Ghép nối với các module chức năng.
Nếu có kiến thức và kỹ năng về thiết kế mạch điện tử người sử dụng có thể tự thiết kế các module chức năng ghép nối với Arduino. Tuy nhiên việc này đòi hỏi tốn thời gian chưa tính đến việc thiết kế bị lỗi phải thực chỉnh sửa và làm mới lại gây lãng phí.
Cộng đồng phát triển Arduino thiết kế và sản xuất hàng loạt các module chuẩn để kết nối với các Board mạch Arduino. Điều này giúp cho người thiết kế phần cứng "nhàn rỗi" hơn trong việc thiết kế và làm mạch in cho các ứng dụng và người sử dụng không phải bận tâm về các sai sót trong thiết kế phần cứng. Hiện nay có các module phổ biến sau:
- Module LED, LCD.
- Module đo thông số điện.
- Module nguồn.
- Module RF.
- Module Bluetooth.
- Module wifi.
- Module Xbee.
- Module GSM/ GPRS/ 3G/ GPS.
- Module Finger Printer.
- Module Driver.
- Module Keypad.
- Module Relay.
- Module Thời gian....
5. Arduino làm được những gì?
Arduino được chọn làm bộ não xử lý của rất nhiều thiết bị từ đơn giản đến phức tạp. Trong số đó có một vài ứng dụng thực sự chứng tỏ khả năng vượt trội của Arduino do chúng có khả năng thực hiện nhiều nhiệm vụ rất phức tạp. Sau đây là danh sách một số ứng dụng nổi bật của Arduino.
Máy in 3D
Một cuộc cách mạng khác cũng đang âm thầm định hình nhờ vào Arduino, đó là sự phát triển máy in 3D nguồn mở Reprap. Máy in 3D là công cụ giúp tạo ra các vật thể thực trực tiếp từ các file CAD 3D. Công nghệ này hứa hẹn nhiều ứng dụng rất thú vị trong đó có cách mạng hóa việc sản xuất cá nhân.
Máy in 3D Makerbot điều khiển bằng Arduino Mega2560
Robot
Do kích thước nhỏ gọn và khả năng xử lý mạnh mẽ, Arduino được chọn làm bộ xử lý trung tâm của rất nhiều loại robot, đặc biệt là robot di động.
Robot di động tránh vật cản dùng Arduino nano và camera CMUCam
Thiết bị bay không người lái (UAV)
UAV là một ứng dụng đặc biệt thíchhợp với Arduino do chúng có khả năng xử lý nhiều loại cảm biến như Gyro, accelerometer, GPS…; điều khiển động cơ servo và cả khả năng truyền tín hiệu từ xa.
Một thiết bị UAV
Điều khiển ánh sáng
Các tác vụ điều khiển đơn giản như đóng ngắt đèn LED hay phức tạp như điều khiển ánh sáng theo nhạc hoặc tương tác với ánh sáng laser đều có thể thực hiện với Arduino.
Ambilight với Arduino
Điều khiển nhà thông minh (Smart Home)
Kết hợp với các module chức năng bluetooth hoặc wifi..., với các ứng dụng cài đặt trên máy tính bảng, smartphone hay trình duyệt web người dùng có thể thiết kế hệ thống điều khiển giám sát thông minh các thiết bị điện trong ngôi nhà của mình khi ở trong nhà hoặc từ bất cứ nới nào (được kết nối internet).
Arduino Điều khiển nhà thông minh với Máy tính bảng và smartphone
Điều khiển nhiệtđộ, độ ẩm đất tự động
Với các module cảm biến nhiệt độ, độ ẩm được ghép nối với Arduino khu vườn sẽ trở thành "thông minh" tự động điều chỉnh nhiệt độ độ ẩm cho cây trồng...
Với các module cảm biến nhiệt độ, độ ẩm được ghép nối với Arduino khu vườn sẽ trở thành "thông minh" tự động điều chỉnh nhiệt độ độ ẩm cho cây trồng...
Arduino điều khiển nhiệt độ - độ ẩm đất cho cây trồng
Trên đây là những ví dụ điển hình trong vô vàn các ứng dụng Arduino do người dùng phát triển. Chúng ta có thể phát triển các ứng dụng mới trên các ý tưởng sáng tạo của các nhân hoặc tham khảo các ứng dụng do cộng đồng Arduino phát triển.
Những ai có thể nghiên cứu học lập trình Arduino và học ở đâu?
- Thực tế rất nhiều người "không chuyên" về lĩnh vực điện - điện tử - tự động hóa vẫn có thể lập trình và ghép nối phần cứng để thực hiện các dự án điều khiển cho riêng mình thậm chí cả những học sinh trung học cơ sở yêu thích kỹ thuật cũng phát triển ứng dụng rất tốt. Để lập trình cho Arduino cần có kiến thức cơ bản về nền tảng C/C++ rất quen thuộc với người làm kỹ thuật. Và quan trọng là số lượng thư viện code được viết sẵn và chia sẻ bởi cộng đồng nguồn mở là cực kỳ lớn.
- Nếu Bạn là người có chuyên môn vực điện - điện tử - tự động hóa thì việc thiết kế phát triển ứng dụng Arduino sẽ nhiều thuận lợi hơn cũng như sản phẩm sẽ hoàn hảo hơn. Là người mới làm quen với Arduino bạn nên bắt đầu từ Board mạch Arduino Uno R3.
- Để học lập trình và ghép nối phần cứng Arduino hiện nay trên mạng internet cộng đồng những người ứng dùng Arduino lập nhiều diễn đàn trao đổi học hỏi kinh nghiệm, hướng dẫn học lập trình từ cơ bản đến nâng cao, giải pháp ghép nối phần cứng.....cũng như các gian hàng điện tử bán các bo mạch Arduino và các module, linh kiện điện tử. Điển hình:
Các trang web học lập trình ứng dụng Arduino:
Arduino.vn
https://www.arduino.cc/
learn.adafruit.com
Các gian hàng điện tử bán Board mạch Arduino và linh kiện điện tử.
arduino360.com
http://banlinhkien.vn/
http://mualinhkien.vn/
- Thực tế rất nhiều người "không chuyên" về lĩnh vực điện - điện tử - tự động hóa vẫn có thể lập trình và ghép nối phần cứng để thực hiện các dự án điều khiển cho riêng mình thậm chí cả những học sinh trung học cơ sở yêu thích kỹ thuật cũng phát triển ứng dụng rất tốt. Để lập trình cho Arduino cần có kiến thức cơ bản về nền tảng C/C++ rất quen thuộc với người làm kỹ thuật. Và quan trọng là số lượng thư viện code được viết sẵn và chia sẻ bởi cộng đồng nguồn mở là cực kỳ lớn.
- Nếu Bạn là người có chuyên môn vực điện - điện tử - tự động hóa thì việc thiết kế phát triển ứng dụng Arduino sẽ nhiều thuận lợi hơn cũng như sản phẩm sẽ hoàn hảo hơn. Là người mới làm quen với Arduino bạn nên bắt đầu từ Board mạch Arduino Uno R3.
- Để học lập trình và ghép nối phần cứng Arduino hiện nay trên mạng internet cộng đồng những người ứng dùng Arduino lập nhiều diễn đàn trao đổi học hỏi kinh nghiệm, hướng dẫn học lập trình từ cơ bản đến nâng cao, giải pháp ghép nối phần cứng.....cũng như các gian hàng điện tử bán các bo mạch Arduino và các module, linh kiện điện tử. Điển hình:
Các trang web học lập trình ứng dụng Arduino:
Arduino.vn
https://www.arduino.cc/
learn.adafruit.com
Các gian hàng điện tử bán Board mạch Arduino và linh kiện điện tử.
arduino360.com
http://banlinhkien.vn/
http://mualinhkien.vn/
ThS. Nguyễn Đình Chung - GV Khoa Điện - Điện tử