Tốc độ xử lý của arduino

Nick Chung gửi vào Thứ hai, 5 Tháng 12, 2016 - 15:59

  • 20228 lượt xem

Mô tả dự án: 

Arduino dùng chip AVR, nếu điều khiển arduino bằng ngôn ngữ tiêu chuẩn của chip AVR thì tốc độ có thể nhanh hơn 12 lần so với cách dùng lệnh digitalWrite, nhanh hơn 4 lần so với lệnh digitalRead, nhanh 14 hơn lần so với analogRead, nhanh 10 hơn lần so với pinMode… thậm chí cách biệt còn xa hơn nữa. Điều này rất rất quan trọng. Cùng khám phá nào..

Port & Mapping

Các bài viết liên quan đến port cơ bản đến nâng cao, giúp bạn nâng cao hiệu suất của mạch Arduino và hơn thế nữa!

Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Nick Chung gửi vào Thứ hai, 5 Tháng 12, 2016 - 12:45

  • Xem thêm về Điều khiển pin bằng ngôn ngữ chính thống
  • 36340 lượt xem

Xin chào các bạn, việc điều khiển nhập/ xuất trên arduino bằng digitalRead/ Write hẳn đã quá quen thuộc . Hài lòng với tốc độ hiện có, vậy bạn có muốn tăng tốc độ đọc/ ghi lên gấp 14 lần,  điều khiển cả 8 pin cùng lúc chỉ với một dòng lệnh không. Hãy đọc ngay bài viết này.

Arduino.vn được xây dựng trên nền tảng Drupal 7, phiên bản hiện tại 2.3 tên mã Chia sẻ tình yêu với Arduino.

Đây là trang thông tin phi lợi nhuận ra đời hướng tới cộng đồng trẻ, những chủ nhân tương lai của đất nước. Tìm hiểu thêm

TuTayLam đã từng giới thiệu nhiều về những sản phẩm, những ý tưởng sáng tạo liên quan đến mạch điện tử Arduino, và cũng có nhiều bạn đang rất quan tâm về thiết bị điện tử này. Do đó, TuTayLam sẽ thông tin thêm cho các bạn về bo mạch xử lý Arduino để cung cấp thêm lựa chọn đầy tiềm năng cho những bạn yêu thích sáng tạo. Arduino 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.

Trên thế giới, Arduino được sử dụng khá rộng rã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, mạch Arduino vẫn còn chưa được biết đến nhiều.

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.
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ị.

Tốc độ xử lý của arduino

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

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. EVN TEL cũng đã từng giới thiệu một số dòng máy in 3D như ở các bài viết: 4 máy in 3D nổi bật nhất năm 2013 và 3 máy in 3D nhiều tính năng nổi bật.

Tốc độ xử lý của arduino

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. EVN từng giới thiệu rất nhiều bài về cách làm robot từ mạch Arduino, như Tự làm robot di chuyển cân bằng trên quả bóng, Làm robot đơn giản với mạch Arduino UNO, ….

Tốc độ xử lý của arduino

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.

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. Như các bài viết trên EVN TEL: Làm trò chơi Ping Pong với mạch Arduino Uno và Nokia 5110, Hộp đồ chơi Flappy Bird với mạch điện tử 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.

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.
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.

Tốc độ xử lý 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).

Tốc độ xử lý của arduino

“Motor Shield” – một loại bo mở rộng để điều khiển động cơ DC và Stepper

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…