BeeLab: Arduino
Showing posts with label Arduino. Show all posts
Showing posts with label Arduino. Show all posts

Saturday, September 16, 2017

[Arduino] Hướng dẫn thêm packages vào Matlab

12:55:00 PM
[Arduino] Hướng dẫn thêm packages vào Matlab
Hiện tại Matlab đã hỗ trợ phần cứng khá là nhiều ( mặc dù vẫn thua xa Labview). Điểm sơ qua thì thấy nó đã hỗ trợ Arduino, STM32, robot MindStorm của Lego, FPGA của Xilinx hay máy tính nhúng,etc.
Việc kết nối phần cứng sẽ làm đơn giản hóa việc xây dựng, tính toán thuật toán , xây dựng hàm truyền rồi chạy trên phần cứng
Nếu làm theo truyền thống thì sẽ phải dùng matlab xây dựng hàm truyền, tính toán các hệ số rồi lại vào Arduino IDE code như truyền thống. Nhưng việc hỗ trợ này sẽ giúp chúng ta có thể viết thuật toán và code Arduino trên Matlab. Tất nhiên là cú pháp câu lệnh sẽ khác một chút xíu và Thư viện trên Matlab cũng sẽ ít hơn nhiều, nhưng sẽ cập nhật nhiều trong thời gian gần.

Matlab hỗ trợ 2 kiểu code cho arduino:

1. Code trên Command window (rất quen thuộc với anh em)
2. Code theo Graphics Language trên Simulink (sắp quen thuộc với anh em )

I. Hướng dẫn cài đặt Arduino cho Matlab
  1. Cài đặt Arduino IDE như bình thường ( download từ trang chủ arduino.cc)
  2. Cài đặt Hardware Support từ Matlab
Đăng nhập tài khoảng Matlab của bạn (nếu đã có), nếu chưa có thì tạo acc và install bình thường

II. Sử dụng Help để xem ví dụ

III. Viết một chương trình đơn giản
Sau khi cắm arduino vào máy tính, xác định loại board, port thì viết như sau (tham khảo help phía trên)
IV. Arduino trong Simulink (Tiếp theo)

Thursday, January 12, 2017

[MIT App Inventor] Lập Trình Khối Cho Điện Thoại Android Hoặc Máy Tính Bảng

10:36:00 AM
[MIT App Inventor] Lập Trình Khối Cho Điện Thoại Android Hoặc Máy Tính Bảng

MIT App Inventor là gì?

MIT App Inventor là giới thiệu một sáng tạo dành cho những người mới bắt đầu học lập trình (Lập Trình Khối) .  Ứng dụng sáng tạo nầy biến đổi ngôn ngữ phức tạp của mã hóa dựa trên văn bản thành các khối xây dựng hình ảnh, kéo-và-thả. Các khoản tài trợ giao diện đồ họa đơn giản, ngay cả một người mới học, thiếu kinh nghiệm, thiếu khả năng vẫn có thể tạo ra một ứng dụng đầy đủ chức năng cơ bản trong vòng một ngày hoặc ít hơn.
Các dự án MIT App Inventor tìm cách biến hóa phát triển phần mềm bằng cách giáo dục cho tất cả mọi người, đặc biệt là những người trẻ tuổi, chuyển từ việc người sử dụng công nghệ để trở thành người sáng tạo ra công nghệ.
App Inventor Chào Mung

Chưa bao giờ mã hóa nhưng muốn tìm hiểu làm thế nào để xây dựng các ứng dụng?  Vậy là, bạn đã đến đúng nơi.  Khóa học này nhằm vào người mới bắt đầu của tất cả các lứa tuổi và từ giai đoạn khởi đầu – thiết lập App Inventor.  Với các bài học dựa trên văn bản, các bài học nầy sẽ chỉ dẫn bạn cách xây dựng các ứng dụng, dần dần sẽ phức tạp hơn.  Bạn sẽ học cách xây dựng nhiều loại ứng dụng và bạn sẽ học các khái niệm lập trình và thuật ngữ.
Hầu hết mọi người thậm chí chưa bao giờ mơ ước xây dựng được một ứng dụng; phần mềm là thế giới bí ẩn của số 0 và số 1 và mọt sách về máy tính.  Mục đích của học tập này là để cho mọi người thấy rằng bạn có thể tạo ra nhiều việc quang trọng trong môi trường này, bạn có thể lập trình phần mềm và đóng góp cho xã hội cao cấp với kỹ thuật số hóa ngày nay.  Hướng dẫn này sẽ giúp bạn xây dựng một ứng dụng trong vài phút!  Bạn không cần phải cài đặt bất cứ điều gì trên máy tính của bạn – App Inventor chạy trong đám mây!  Bạn sẽ xây dựng các ứng dụng trên máy tính của bạn và thử nghiệm nó trên thiết bị Android của bạn.  Nếu bạn không có một thiết bị, thậm chí bạn có thể thử nghiệm trên một mô phỏng.

Mã App Inventor là mã nguồn mở rộng

Trước tiên, bạn phải thực hiên kết nối dùng để xây dựng các ứng dụng của bạn. 
Giới thiệu về Điện Toán Đám Mây và Thử Nghiệm Trực Tiếp trên điện thoại Android của bạn.

Nhiều bạn muốn tự mình có thể tạo ra những game hay apps cho android mà trong khi đó lại không biết chút gì về lập trình android cả. Vậy thì đây sẽ là lựa chọn tốt nhất cho các bạn, nhiệm vụ của bạn chỉ việc kéo và thả với đồ họa trực quan, dù cho bạn không biết chút gì về code bạn cũng có thể học được.

Cụ thể công việc của bạn là gì?

Các bạn theo dõi những bài tiếp theo sẽ được cập nhật sớm nhất. Thực hiện theo các bước đơn giản với hình ảnh chỉ dẫn để xây dựng ứng dụng đầu tiên của bạn.  Từng bước, từng bước hướng dẫn cho bạn thấy làm thế nào để xây dựng tất cả các loại ứng dung.

Thursday, October 27, 2016

[Arduino] Mô phỏng Arduino trên phần mềm Proteus

9:18:00 PM
[Arduino] Mô phỏng Arduino trên phần mềm Proteus

Mục đích bài viết

File .hex là gì và chúng ta lấy file .hex để làm gì? 

hex ở đây được viết tắt bởi từ hexadecimal có nghĩa là hệ cơ số 16 hay hệ thập lục phân. Khi bạn viết code và nạp chương trình cho vi điều khiển (cụ thể với board Arduino UNO là ATMEGA 328) thì không đơn thuần là nạp những "câu lệnh" bạn viết ra đưa vào vi điều khiển, mà phải thông qua trình biên dịch (Aruduino IDE, Code Vision, Keil C...đều là trình biên dịch) "dịch" lại những gì mình viết và tạo ra một chuỗi kí tự gồm những chữ (từ A đến F) và số (từ 0 đến 9) thuộc hệ thập lục phân. Những chữ số này nạp vào vi điều khiển thì vi điều khiển mới "hiểu" được. Những chữ số này được đóng gói và lưu lại thành một file có đuôi mở rộng là ".hex".
Khi bạn muốn nạp lại code thì chỉ cần lấy file .hex này nạp. Bạn cũng có thể "mổ xẻ" file .hex này xem nó chứa gì bằng Notepad. Sau đây là một đoạn thập lục phân trong file .hex mình vừa tạo
:060000002FC0FECFFDCF72 :10000600FCCFFBCFFACFF9CFF8CFF7CFF6CFF5CFAE :10001600F4CFF3CFF2CFF1CFF0CFEFCFEECFEDCFDE :1000260020202020202020202020202020202020CA :100036002756494554204E414D2720202020202078 :100046002020202020202020202080C02A0060019F :1000560026000200A30150000000F894EE27ECBB36 :10006600F1E0FBBFEBBFE5BFF8E1F1BDE1BD8DE01F :10007600A2E0BB27ED938A95E9F780E094E0A0E63D :10008600ED930197E9F7E2E5F0E085919591009708
Arduino IDE cũng dựa trên nguyên tắc cơ bản đó để nạp "chương trình mình viết" vào vi điều khiển nhưng để đơn giản cho người dùng không phải phức tạp qua nhiều thao tác như các trình biên dịch khác, Arduino IDE đã làm ẩn file .hex đi vì thế bạn chỉ cần ấn "Upload" chờ trong giây lát là xong mà không cần phải khổ sở tìm file .hex nào hết.
Nhưng có một thực tế đặt ra là Arduino IDE có thư viện code mẫu quá phong phú, viết chương trình trên Arduino IDE khá dễ dàng cộng thêm OpenSource viết riêng cho Arduino thì ngày càng nhiều chính vì vậy một số người trung thành với dòng AVR như ATMEGA 8, 16, 32, Tiny rất thích "địa" code của Arduino để nghiên cứu nhanh một đề tài dự án nào đó nhưng lại không có board Arduino. Điều này phát sinh ở họ là phải tìm cho được file .hex để nạp theo cách phổ thông.
Thứ hai nữa là dành cho những bạn trẻ nào "nghèo khó" không đủ điều kiện để mua một board Arduino nhưng lại có niềm đam mê với Arduino. Có một cách tiếp cận rất thực tế đó là sử dụng phần mềm mô phỏng Arduino trên máy tính mà mình sắp giới thiệu đây. Và tất nhiên, để mô phỏng được thì chúng ta cần phải trích xuất được file hex, sẽ nói kỹ hơn khi đi vào nội dung chi tiết. Sắp vào phần gay cấn rồi ^^ cố gắng bạn nhé!

Nội dung

1. Sơ lược về phần mềm Proteus:

Proteus là phần mềm cho phép mô phỏng hoạt động của mạch điện tử bao gồm phần thiết kế mạch và viết chương trình điều khiển cho các họ vi điều khiển như MCS-51, PIC, AVR, … Proteus là phần mềm mô phỏng mạch điện tử của Lancenter Electronics, mô phỏng cho hầu hết các linh kiện điện tử thông dụng, đặc biệt hỗ trợ cho cả các MCU như PIC, 8051, AVR, Motorola.
Phần mềm bao gồm 2 chương trình:
  • ISIS cho phép mô phỏng mạch
  • ARES dùng để vẽ mạch in.
Proteus là công cụ mô phỏng cho các loại vi điều khiển khá tốt, nó hỗ trợ các dòng vi điều khiển PIC, 8051, PIC, dsPIC, AVR, HC11, MSP430, ARM7/LPC2000 ... các giao tiếp I2C, SPI, CAN, USB, Ethenet,... ngoài ra còn mô phỏng các mạch số, mạch tương tự một cách hiệu quả. Nếu bạn đang muốn học lập trình trên Arduino hoặc bất kì vi điều khiển nào khác mà không có điều kiện hoặc kinh nghiệm để làm các mạch phát triển hoặc bạn muốn kiểm tra chương trình trước khi nạp vào mạch phát triển thì Proteus là lựa chọn không thể bỏ qua.                  
Ngoài chức năng mô phỏng "bá đạo" ra thì phần mềm Proteus còn được sử dụng để thiết kế mạch, làm board, mô phỏng 3D. Hiện nay Proteus đã cập nhật đến phiên bản 8. Nhưng theo kinh nghiệm sử dụng và đã cài qua bản 8.1 thì các bạn nên sử dụng bản 7.8 hoặc 7.10 (Bài viết này mình sử dụng Proteus 7.8 SP2 để minh họa) bởi vì nếu chỉ nghiệp dư dùng Proteus để mô phỏng thì ta cũng không cần "đú" lên 8.1 làm gì vừa tốn tài nguyên máy, vừa khó crack thành công vĩnh viễn và còn xuất hiện một số lỗi, những gì của bản 7. cung cấp là dư sức cho ta sử dụng.
Bạn có thể download phần mềm này trên mục download. Nếu bạn yêu thích và muốn tìm hiểu sâu hơn về Proteus xin vui lòng tìm bài hướng dẫn trên google hoặc qua các video trên youtube, có rất nhiều tài liệu hay đấy bạn. Bài viết này chỉ mang tính chất giới thiệu, không đi sâu vào cách sử dụng phần mềm.                
Mặc định thư viện mô phỏng Proteus không có board Arduino :( nhưng cũng đừng lo lắng, bạn hãy download thư viện mô phỏng Arduino trên trang github.com/blogembarcadobr (download) sau đó  giải nén và chép BLOGEMBARCADO.LIB vào thư mục LIBRARY của Proteus theo đường dẫn
C:\Program Files (hoặc Program Files (x86) nếu máy bạn nào sử dụng 64 bit) \Labcenter Electronics\Proteus 7 Professional\LIBRARY 
Trong thư viện này hỗ trợ 5 loại board Arduino khác nhau và 1 cảm biến siêu âm Untrasonic

2. Mô phỏng trên Proteus

Sau khi đã cài đặt, add thư viện và crack thành công, bạn hãy mở ISIS Profesional bằng mọi "thủ đoạn" của bạn :D (ISIS Profesional là cái biểu tượng xanh)
Để "lấy" Arduino và một số linh kiện khác ra mô phỏng bạn ấn phím "P" sẽ xuất hiện hộp thoại Pick Devices. Tại Keywords bạn gõ linh kiện cần lấy (mình sẽ lấy ra 1 board Arduino UNO, 1 con trở và 1 con led đỏ để mô phỏng chương trình chớp tắt 1 led bạn nhé).
                   
Sau khi lấy linh kiện xong, bạn sắp xếp và đi dây như trong hình, bạn nhớ double vào con điện trở để thay đổi giá trị 10K thành 330 nhé (Mẹo nhỏ: để phóng to thu nhỏ trong Proteus bạn có thể ấn F6 - F7 hoặc lăn chuột - thử xem thế nào nhé :D)
Bạn có để ý rằng nguồn cấp cho board Arduino đâu không thấy? Đó là một sự đơn giản khi mô phỏng, mặc định thư viện này đã thiết lập cấp nguồn sẵn cho Arduino, nhưng khi lắp mạch thực tế bạn nhớ cấp nguồn cho Arduino nhé.
Tới đây chúng ta vẫn chưa thể ấn nút PLAY  (là nút tam giác ở góc trái phía dưới màn hình) để mô phỏng được đâu, sẽ báo 2 Error(s) như hình trên, bởi vì board Arduino UNO chưa có CODE nạp vào mà. Lúc này ta cần phải đưa file .hex vào để mô phỏng. Bằng cách nào thì mời bạn tiếp tục đọc phần sau nhé! :D  

3. Lấy file .hex từ Arduino IDE

Bạn hãy mở Arduino IDE lên, vì ta muốn mô phỏng led nhấp nháy nên sẽ vào File - Examples - 01. Basics - Blink (quá quen thuộc phải không nào) để mở đoạn code led nhấp nháy. Do không muốn phải chỉnh sửa code nên mình đã mắc sẵn led vào chân 13, bạn thấy đấy.  Cũng tại IDE bạn Click vào File - Preferences, sẽ xuất hiện hộp thoại Preferences, tại đây bạn tick vào ô vuông compilation, sau đó ấn OK.
Lưu ý với các bạn dùng phiên bản Arduino 1.6.x
Với các bản mới hơn đường dẫn như trong bài cũng dẫn đến file preferences.txt, nhưng file đó không chỉnh sửa được (trong đó có ghi và hướng dẫn đến file preferences khác chỉnh sửa đc cho các hệ điều hành khác nhau). Như bản 1.6.5 mình dùng thì là C:\Users\Tên người dùng\AppData\Roaming\Arduino15 và làm như trong bài (Lưu ý: Trc khi chỉnh sửa thì phải tắt Arduino IDE đi, nếu không tìm thấy AppData bật chọn hiện file ẩn). Cho chắc chắn nhất nên tìm ở đâu bạn vào File -> Preferences sẽ tìm thấy đường dẫn ở cuối.
Tiếp đó bạn ấn  để Built chương trình. Bạn để ý sẽ thấy điều khác biệt: trình biên dịch IDE sẽ Built cho chúng ta một file .hex được lưu ở đường dẫn như hình dưới:
Bạn cũng cần chú ý chọn board khớp với board mình sẽ mô phỏng nhé, ở đây mình mô phỏng Arduino Uno.
Đến đây bạn đã có thể vào đường dẫn này để lấy file .hex ra mô phỏng, tuy nhiên chúng ta sẽ thêm một số bước nữa để PRO hơn nhé.
Bước 1: Mở tập tin C:\Program Files\Arduino\lib\preferences.txt bằng Notepad hoặc Notepad++
Bước 2: Thêm dòng lệnh sau vào cuối file preferences.txt: build.path = <path> (<path> là đường dẫn đến thư mục mà bạn muốn chứa  file hex sau khi Arduino hoàn tất quá trình biên dịch)
Ví dụ: Để lưu vào thư mục Built_Arduino (mình vừa tạo) trên desktop của mình, mình viết như sau:
Sau đó bạn nhớ ấn Ctr + S để Save lại nhé :D
Tiếp theo bạn tắt IDE đi và mở lại (nhất thiết phải vậy nhé), mở CODE Blink led nhấp nháy như trên mình trình bày và Verify 
Bạn sẽ thấy file .hex đã không còn ở thư mục temp khó tìm nữa mà vào đúng thư mục mình mong muốn.

4. Lắp ráp và hoàn tất

Bây giờ bạn đã có file .hex và mạch mô phỏng. Điều bạn cần làm lúc này là mở mạch hồi nãy bạn vẽ lên và double click vào board Arduino. Hộp thoại Edit Component xuất hiện. Tại khung Program File bạn tìm đến mục chứa file .hex lúc nãy bạn lưu. Sau đó ấn OK.
Lúc này bạn chỉ cần ấn nút PLAY  để mô phỏng và rung đùi xem thành quả đạt được thôi :D
Để dừng mô phỏng bạn ấn STOP  nhé !
Nếu thấy LED sáng hơi mờ bạn thử thay đổi giá trị điện trở xuống còn 220 xem sao nhé.
Xong rồi! Mọi thắc mắc hay đóng góp ý kiến về bài viết các bạn có thể gửi bình luận ở dưới nhé.

Monday, October 24, 2016

[Arduino] Arduino là gì??

8:13:00 AM
[Arduino] Arduino là gì??
Arduino đã và đang được sử dụng rất rộng rãi trên thế giới, và ngày càng chứng tỏ được sức mạnh của chúng thông qua vô số ứng dụng độc đáo của người dùng trong cộng đồng nguồn mở (open-source). Tuy nhiên tại Việt Nam Arduino vẫn còn chưa được biết đến nhiều. Bài viết này là một cố gắng nhầm giới thiệu một số thông tin về Arduino với hy vọng cung cấp cho người dùng DIY thêm một lựa chọn mới đầy tiềm năng để thực hiện các dự án của mình.

 

Hiện tượng Arduino


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.

Những thành viên khởi xướng Arduino 

Arduino là gì mà có thể khiến ngay cả những sinh viên và nhà nghiên cứu tại các trường đại học danh tiếng như MIT, Stanford, Carnegie Mellon phải sử dụng; hoặc ngay cả Google cũng muốn hỗ trợ khi cho ra đời bộ kit Arduino Mega ADK dùng để phát triển các ứng dụng Android tương tác với cảm biến và các thiết bị khác?

Arduino thật ra là một bo mạch vi xử lý được dùng để lập trình tương tác với các thiết bị phần cứng như cảm biến, động cơ, đèn hoặc các thiết bị khác. Đặc điểm nổi bật của Arduino là môi trường phát triển ứng dụng cực kỳ dễ sử dụng, với một ngôn ngữ lập trình có thể học một cách nhanh chóng ngay cả với người ít am hiểu về điện tử và lập trình. Và điều làm nên hiện tượng Arduino chính là mức giá rất thấp và tính chất nguồn mở từ phần cứng tới phần mềm. Chỉ với khoảng $30, người dùng đã có thể sở hữu một bo Arduino có 20 ngõ I/O có thể tương tác và điều khiển chừng ấy thiết bị.

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.

 

Các ứng dụng nổi bật của bo mạch Arduino


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

 

Game tương tác

Việc đọc cảm biến và tương tác với PC là một nhiệm vụrất đơn giản đối với Arduino. Do đó rất nhiều ứng dụng game tương tác có sử dụng Arduino.

 

Đ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


Trình diễn công nghệ Ambilight 

Kích hoạt chụp ảnh tốc độ cao

Đây là một ứng dụng rất đơn giản nhưng đặc biệt hữu ích với những ai đam mê chụp ảnh. Ứng dụng này giúp tạo ra những bức ảnh độc đáo ghi lại những khoảnh khắc xảy ra cực nhanh mà nếu không có dụng cụ hỗ trợ chúng ta khó lòng ghi lại.

  

Trên đây chỉ là một vài ví dụ minh họa cho khả năng ứng dụng của Arduino. Khi tìm kiếm trên Google, bạn có thể tìm thấy vô số ứng dụng có sử dụng Arduino. Ngoài ra có thể tham khảo trang web sau để tìm hiểu thêm nhiều ứng dụng rất độc đáo:

Khả năng của bo mạch Arduino

           Bo mạch Arduino sử dụng dòng vi xử lý 8-bit megaAVR của Atmel với hai chip phổ biến nhất là ATmega328 và ATmega2560. Các dòng vi xử lý này cho phép lập trình các ứng dụng điều khiển phức tạp do được trang bị cấu hình mạnh với các loại bộ nhớ ROM, RAM và Flash, các ngõ vào ra digital I/O trong đó có nhiều ngõ có khả năng xuất tín hiệu PWM, các ngõ đọc tín hiệu analog và các chuẩn giao tiếp đa dạng như UART, SPI, TWI (I2C).

 

Sức mạnh xử lý

           Xung nhịp: 16MHz
            EEPROM:  1KB (ATmega328) và 4KB (ATmega2560)
            SRAM: 2KB (Atmega328) và 8KB (Atmega2560)
            Flash: 32KB (Atmega328) và 256KB (Atmega2560)

 

Đọc tín hiệu cảm biến ngõ vào:

Digital: 
           Các bo mạch Arduino đều có các cổng digital có thể cấu hình làm ngõ vào hoặc ngõ ra bằng phần mềm. Do đó người dùng có thể linh hoạt quyết định số lượng ngõ vào và ngõ ra.
           Tổng số lượng cổng digital trên các mạch dùng Atmega328 là 14, và trên Atmega2560 là 54.
Analog: 
             Các bo mạch Arduino đều có trang bị các ngõ vào analog với độ phân giải 10-bit (1024 phân mức, ví dụ với điện áp chuẩn là 5V thì độ phân giải khoảng 0.5mV).
              Số lượng cổng vào analog là 6 đối với Atmega328, và 16 đối với Atmega2560.
              Với tính năng đọc analog, người dùng có thể đọc nhiều loại cảm biến như nhiệt độ, áp suất, độ ẩm, ánh sáng, gyro, accelerometer…

 

Xuất tín hiệu điều khiển ngõ ra:

Digital output: 
              Tương tự như các cổng vào digital, người dùng có thể cấu hình trên phần mềm để quyết định dùng ngõ digital nào là ngõ ra.
              Tổng số lượng cổng digital trên các mạch dùng Atmega328 là 14, và trên Atmega2560 là 54.
PWM output: 
              Trong số các cổng digital, người dùng có thể chọn một số cổng dùng để xuất tín hiệu điều chế xung PWM. Độ phân giải của các tín hiệu PWM này là 8-bit.
              Số lượng cổng PWM đối với các bo dùng Atmega328 là 6, và đối với các bo dùng Atmega2560 là 14.
              PWM có nhiều ứng dụng trong viễn thông, xử lý âm thanh hoặc điều khiển động cơ mà phổ biến nhất là động cơ servos trong các máy bay mô hình.  

Chuẩn Giao tiếp

Serial: 
               Đây là chuẩn giao tiếp nối tiếp được dùng rất phổ biến trên các bo mạch Arduino. Mỗi bo có trang bị một số cổng Serial cứng (việc giao tiếp do phần cứng trong chip thực hiện). Bên cạnh đó, tất cả các cổng digital còn lại đều có thể thực hiện giao tiếp nối tiếp bằng phần mềm (có thư viện chuẩn, người dùng không cần phải viết code). Mức tín hiệu của các cổng này là TTL 5V. Lưu ý cổng nối tiếp RS-232 trên các thiết bị hoặc PC có mức tín hiệu là UART 12V. Để giao tiếp được giữa hai mức tín hiệu, cần phải có bộ chuyển mức, ví dụ như chip MAX232.
               Số lượng cổng Serial cứng của Atmega328 là 1 và của Atmega2560 là 4.
               Với tính năng giao tiếp nối tiếp, các bo Arduino có thể giao tiếp được với rất nhiều thiết bị như PC, touchscreen, các game console…



USB: 
              Các bo Arduino tiêu chuẩn đều có trang bị một cổng USB để thực hiện kết nối với máy tính dùng cho việc tải chương trình. Tuy nhiên các chip AVR không có cổng USB, do đó các bo Ardunino phải trang bị thêm phần chuyển đổi từ USB thành tín hiệu UART. Do đó máy tính nhận diện cổng USB này là cổng COM chứ không phải là cổng USB tiêu chuẩn.



SPI: 
              Đây là một chuẩn giao tiếp nối tiếp đồng bộ có bus gồm có 4 dây. Với tính năng này các bo Arduino có thể kết nối với các thiết bị như LCD, bộ điều khiển video game, bộ điều khiển cảm biến các loại, đọc thẻ nhớ SD và MMC…



TWI (I2C): 
              Đây là một chuẩn giao tiếp đồng bộ khác nhưng bus chỉ có hai dây. Với tính năng này, các bo Arduino có thể giao tiếp với một số loại cảm biến như thermostat của CPU, tốc độ quạt, một số màn hình OLED/LCD, đọc real-time clock, chỉnh âm lượng cho một số loại loa…  

Môi trường lập trình bo mạch Arduino

Thiết kế bo 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.
Giao diện IDE của Arduino



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.

 

Các loại bo mạch Arduino

Về mặt chức năng, các bo mạch Arduino được chia thành hai loại: loại bo mạch chính có chip Atmega và loại mở rộng thêm chức năng cho bo mạch chính (thường được gọi là shield).
Các bo mạch chính về cơ bản là giống nhau về chức năng, tuy nhiên về mặt cấu hình như số lượng I/O, dung lượng bộ nhớ, hay kích thước có sự khác nhau. Một số bo có trang bị thêm các tính năng kết nối như Ethernet và Bluetooth.
Các bo mở rộng chủ yếu mở rộng thêm một số tính năng cho bo mạch chính ví dụ như tính năng kết nối Ethernet, Wireless, điều khiển động cơ v.v…
"Motor Shield" - một loại bo mở rộng để điều khiển động cơ DC và Stepper