Đặt vấn đề ……………………… II. Giới thiệu phần cứng 1. Vi điều khiển ATmega328P-AU. Atmega328 là một vi điều khiển tiên tiến và nhiều tính năng được sản xuất bởi hãng Atmel thuộc họ MegaAVR có sức mạnh vượt trội so với Atmega8.
Atmega328 là một bộ vi điều khiển 8 bit dựa trên kiến trúc RISC tiên tiến. Các vi điều khiển được sản xuất trong họ megaMVR được thiết kế để xử lý các bộ nhớ chương trình lớn và mỗi vi điều khiển trong họ này chứa lượng ROM, RAM, các chân I / O và các tính năng khác nhau và được sản xuất với các chân đầu ra khác nhau, từ 8 chân đến hàng trăm chân. *Đặc tính / Thông số kỹ thuật của ATmega328P Thiết kế hiệu suất cao. Tiêu thụ ít điện năng.
Số chân ngõ vào Analog là 6. Số chân I/O kỹ thuật số là 14 chân. Số kênh PWM là 6. Tổng số chân I/O là 23 chân.
Giao thức truyền thông nối tiếp USART, SPI, I2C. Điện áp hoạt động tối thiểu và tối đa từ 1. Bộ nhớ flash 32KB, SRAM 2KB, EEPROM 1KB. Tốc độ xung nhịp 16MHz.
Chứa tổng cộng ba bộ định thời, hai 8 bit và một 16 bit. Sơ đồ chân vi điều khiển ATmega328: 1. Các thông số khác - Bộ nhớ. ATmega328 có 32KB bộ nhớ (với 0.5KB dành cho bootloader).
Nó có 2KB bộ nhớ SRAM và 1KB bộ nhớ EEPROM (có thể đọc và ghi thông qua thư viện EEPROM library). Arduino Uno có một số phương thức để giao tiếp với máy tính và các Arduino khác, hoặc các dòng vi xử lý khác. ATmega328 cung cấp giao tiếp nối tiếp UART TTL (5V), trong đó có sẵn trên các chân digital 0 (RX) và 1 (TX). ATmega16U2 trên các kênh giao tiếp nối tiếp với bo mạch này thông qua cổng USB và xuất hiện cổng COM ảo kết nối với phần mềm máy tính.
16U2 sử dụng các trình điều khiển tiêu chuẩn phần cứng USB COM. Tuy nhiên khi thực hiện trên Window, một tập tin được yêu cầu. Phần mềm Arduino bao gồm một màn hình cho ta nhìn thấy được dữ liệu được chuyển đến bo mạch Arduino. LED RX và TX sẽ nhấp nháy khi dữ liệu được chuyển thông qua kết nối cổng USB của chip và cổng USB của máy tính.
Thư viện SoftwareSerial cho phép giao tiếp nối tiếp trên bất kỳ chân digital nào của Uno. ATmega328 cũng hỗ trợ giao tiếp I2C (TWI) và SPI. Phần mềm 19 Arduino bao gồm một thư viện wire library để đơn giản hóa việc sử dụng bus I2C. Với truyền dẫn SPI, sử dụng thư viện SPI.
-Tự động reset (phần mềm). Thay vì reset vật lý trước khi tải dữ liệu, Arduino Uno được thiết kế để cho phép thay thế bằng một phần mềm chạy trên máy tính khi được kết nối. Một trong những dòng điều khiển phần cứng (DTR) của ATmega8U2/16U2 được kết nối với đường dây được thiết lập của ATmega328 thông qua một tụ điện 100 nF. Khi dòng này được xác định (thấp nhất) , dòng reset rơi đủ lớn để reset lại chip.
Phần mềm Arduino sử dụng khả năng này để cho phép tải code lên bằng cách nhấn nút upload trong môi trường Arduino. Điều này có nghĩa là bộ nạp khởi động có thể có một thời gian chờ ngắn hơn, giảm thiểu DTR có thể phối hợp khi bắt đầu tải lên. Thiết lập này có ý nghĩa khác. Khi Uno được kết nối với một trong hai máy tính chạy Mac OS X hoặc Linux, nó reset mỗi khi kết nối được thực hiện từ phần mềm (thông qua cổng USB).
Trong nửa giây hoặc lâu hơn, bộ nạp khởi động chạy trên Uno. Trong khi nó được lập trình để bỏ qua dữ liệu bị thay đổi, nó sẽ ngăn chặn các byte đầu tiên của dữ liệu gửi đến bo mạch khi kết nối được thiết lập. Nếu 20 một bản sketch chạy trên bo mạch nhận được cấu hình một lần hoặc các dữ liệu khác khi lần đầu tiên bắt đầu, chắc chắn rằng phần mềm mà bo mạch giao tiếp chờ đợi một giây sau khi mở kết nối và trước khi gửi dữ liệu này. Bảo vệ quá dòng USB.
Arduino Uno có một bảng thiết lập được sử dụng để bảo vệ cổng USB của máy tính khi ngắn mạch và quá dòng. Mặc dù hầu hết các máy tính cung cấp chế độ bảo vệ nội bộ, nhưng còn có thêm các cầu chì, các cầu chì này có thêm một lớp bảo vệ. Nếu dòng cao hơn 500 mA được áp dụng cho các cổng USB, cầu chì sẽ tự động phá vỡ các kết nối khi ngắn mạch và quá dòng xảy ra. Đặc tính vật lý.
Chiều dài tối đa và chiều rộng tương ứng của Uno PCB là 2,7 và 2,1 inch, với các kết nối USB và jack nguồn thì sẽ vượt ra ngoài kích thước cũ. Bốn lỗ vít trên bo mạch dùng để gắn vào một bề mặt trong một số trường hợp. Lưu ý rằng khoảng cách giữa chân số 7 và 8 là 160mm (0,16 "). Bo mạch Arduino Uno Rev 3 2.
Giới thiệu về Arduino Arduino là một nền tảng mã nguồn mở được sử dụng để xây dựng các dự án điện tử. Arduino bao gồm cả vi mạch lập trình (thường được gọi là vi điều khiển) và một phần mềm (IDE) được sử dụng để lập trình viết và tải mã máy tính lên bo mạch. Nhờ sự đơn giản và dễ tiếp cận, Arduino đã được sử dụng trong hàng nghìn dự án và ứng dụng khác nhau. Phần mềm Arduino rất dễ sử dụng cho người mới bắt đầu, nhưng đủ linh hoạt cho người dùng nâng cao.
Không giống như hầu hết các bo mạch lập trình trước đây, Arduino không cần phần cứng riêng để tải mã mới lên bo mạch - bạn có thể chỉ cần sử dụng cáp USB. Ngoài ra, Arduino IDE sử dụng phiên bản đơn giản của C++, giúp việc học lập trình dễ dàng hơn. 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. Đặ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 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). 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.
Một số ứng dụng của Arduino bao gồm: lập trình robot, máy bay không người lái, điều khiển thiết bị ánh sáng cảm biến, máy in 3D, thiết kế hệ thống smart home,… 2. Những khả năng của bo mạch Arduino * Đọ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 board là 14.
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. Số lượng cổng vào analog là 6.Với tính năng đọc analog, người dùng có thể đọc nhiều loại cảm biến loại tương tự khác nhau 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 là 14. 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 là 6. PWM có nhiều ứng dụng trong viễn thông, xử lý âm thanh hoặc điều khiển tốc độ động cơ mà phổ biến nhất là động cơ servor 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 RS232 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 là 1. 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 Máy tính, các bo Arduino khác, các thiết bị cảm biến, các thiết bị đầu ra như màn hình, LED, động cơ,. 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 Arduino 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 tinh năng này các bo Arduino có thể kết nối với các thiết bị như LCD, module sim, 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++. 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.