Mạch Arduino UNO R3

Một phần của tài liệu Nghiên cứu lý thuyết, thực hiện mô hình hệ thống chiếu sáng thông minh trên ô tô (Trang 84 - 91)

CHƯƠNG 1 : LỊCH SỬ PHÁT TRIỂN ĐÈN XE

4.2.3.1Mạch Arduino UNO R3

1910 – 1960)

4.2.3.1Mạch Arduino UNO R3

4.2 TỔNG QUAN VỀ CÁC THIẾT BỊ TRÊN MƠ HÌNH

4.2.3.1Mạch Arduino UNO R3

Arduino Uno được xây dựng với phân nhân là vi điều khiển ATmega328P sử dụng thạch anh có chu kì dao động là 16 MHz. Với vi điều khiển này, ta có tổng cộng 14 pin (ngõ) ra / vào được đánh số từ 0 tới 13 (trong đó có 6 pin PWM, được đánh dấu ~ trước mã số của pin). Song song đó, ta có thêm 6 pin nhận tín hiệu analog được đánh kí hiệu từ A0 - A5, 6 pin này cũng có thể sử dụng được như các pin ra / vào bình thường (như pin 0 - 13). Ở các pin được đề cập, pin 13 là pin đặc biệt vì nối trực tiếp với LED trạng thái trên board.

Trên board cịn có 1 nút reset, 1 ngõ kết nối với máy tính qua cổng USB và 1 ngõ cấp nguồn sử dụng jack 2.1mm lấy năng lượng trực tiếp từ AC-DC adapter hay thơng qua ắc-quy nguồn.

Hình 4.7: Mạch Arduino UNO R3

Khi làm việc với Arduino board, một số thuật ngữ sau cần được lưu ý:

- Flash Memory: bộ nhớ có thể ghi được, dữ liệu khơng bị mất ngay cả khi tắt điện. Về vai trị, ta có thể hình dung bộ nhớ này như ổ cứng để chứa dữ liệu trên board. Chương trình được viết cho Arduino sẽ được lưu ở đây. Kích thước của vùng nhớ này thông thường dựa vào vi điều khiển được sử dụng, ví dụ như ATmega8 có 8KB flash memory. Loại bộ nhớ này có thể chịu được khoảng 10,000 lần ghi / xoá.

- RAM: tương tự như RAM của máy tính, sẽ bị mất dữ liệu khi ngắt điện nhưng bù lại tốc độ đọc ghi xố rất nhanh. Kích thước nhỏ hơn Flash Memory nhiều lần.

- EEPROM: một dạng bộ nhớ tương tự như Flash Memory nhưng có chu kì ghi / xố cao hơn - khoảng 100,000 lần và có kích thước rất nhỏ. Để đọc / ghi dữ liệu ta có thể dùng thư viện EEPROM của Arduino.

Ngồi ra, board Arduino cịn cung cấp cho ta các pin khác nhau như pin cấp nguồn 3.3V, pin cấp nguồn 5V, pin GND...

Hình 4.8: Tổng quan các bộ phận của mạch Arduino UNO R3

1. Cáp USB Đây là dây cáp thường được bán kèm theo bo, dây cáp dùng để cắm vào máy tính để nạp chương trình cho bo và dây đồng thời cũng lấy nguồn từ nguồn usb của máy tính để cho bo hoạt động. Ngồi ra cáp USB còn được dùng để truyền dữ liệu từ bo Arduino lên máy tính. Dây cáp có 2 đầu, đầu 1a được dùng để cắm vào cổng USB trên board Arduino, đầu 1b dùng để cắm vào cổng USB trên máy tính.

2. IC Atmega 16U2 IC này được lập trình như một bộ chuyển đổi USB –to-Serial dùng để giao tiếp với máy tính thơng qua giao thức Serial (dùng cổng COM).

3. Cổng nguồn ngoài Cổng nguồn ngoài nhằm sử dụng nguồn điện bên ngồi như pin, bình acquy hay các adapter cho board Arduino hoạt động. Nguồn điện cấp vào cổng này

là nguồn DC có hiệu điện thế từ 6V đến 20V, tuy nhiên hiệu điện thế tốt nhất mà nhà sản xuất khuyên dùng là từ 7 đến 12V.

4. Cổng USB Cổng USB trên bo Arduino dùng để kết nối với cáp USB

5. Nút reset Nút reset được sử dụng để reset lại chương trình đang chạy. Đơi khi chương trình chạy gặp lỗi, người dùng có thể reset lại chương trình..

6. ICSP của ATmega 16U2 ICSP là chữ viết tắt của In-Circuit Serial Programming. Đây là các chân giao tiếp SPI của chip Atmega 16U2. Các chân này thường ít được sử trong các dự án về Arduino.

7. Chân xuất tín hiệu ra Có tất cả 14 chân xuất tín hiệu ra trong Arduino Uno, những chân có dấu ~ là những chân có thể băm xung (PWM), tức có thể điều khiển tốc độ động cơ hoặc độ sáng của đèn. Hình 2 thể hiện rất rõ những chân để băm xung này.

8. IC ATmega 328 IC Atmega 328 là linh hồn của bo mạch Arduino Uno, IC này được sử dụng trong việc thu thập dữ liệu từ cảm biến, xử lý dữ liệu, xuất tín hiệu ra, …

9. Chân ICSP của ATmega 328 Các chân ICSP của ATmega 328 được sử dụng cho các giao tiếp SPI (Serial Peripheral Interface), một số ứng dụng của Arduino có sử dụng chân này, ví dụ như sử dụng module RFID RC522 với Arduino hay Ethernet Shield với Arduino.

10. Chân lấy tín hiệu Analog Các chân này lấy tín hiệu Analog (tín hiệu tương tự) từ cảm biến để IC Atmega 328 xử lý. Có tất cả 6 chân lấy tín hiệu Analog, từ A0 đến A5.

11. Chân cấp nguồn cho cảm biến Các chân này dùng để cấp nguồn cho các thiết bị bên ngoài như role, cảm biến, RC servo,…trên khu vực này có sẵn các chân GND (chân nối đất, chân âm), chân 5V, chân 3.3V như được thể hiện ở hình 2. Nhờ những chân này mà người sử dụng không cần thiết bị biến đổi điện khi cấp nguồn cho cảm biến, role, rc servo,… Ngoài ra trên khu vực này cịn có chân Vin và chân reset, chân IOREF. Tuy nhiên các chân này thường ít được sử dụng nên trong tài liệu này xin khơng đi sâu về nó. 12. Các linh kiện khác trên board Arduino Uno Ngoài các linh kiện đã liệt kê bên trên, Arduino Uno còn 1 số linh kiện đáng chú ý khác. Trên bo có tất cả 4 đèn led, bao gồm 1

led nguồn (led ON nhằm cho biết boa đã được cấp nguồn), 2 led Tx và Rx, 1 led L. Các led Tx và Rx sẽ nhấp nháy khi có dữ liệu truyền từ board lên máy tính hoặc ngược lại thông qua cổng USB. Led L được được kết nối với chân số 13. Led này được gọi là led on board (tức led trên board), led này giúp người dùng có thể thực hành các bài đơn giản mà khơng cần dùng thêm led ngồi.

Trong 14 chân ra của board cịn có 2 chân 0 và 1 có thể truyền nhận dữ liệu nối tiếp TTL. Có một số ứng dụng cần dùng đến tính năng này, ví dụ như ứng dụng điều khiển mạch Arduino Uno qua điện thoại sử dụng bluetooth HC05. Thêm vào đó, chân 2 và chân 3 cũng được sử dụng cho lập trình ngắt (interrupt), đồng thời cịn 1 vài chân khác có thể được sử dụng cho các chức năng khác, như được thể hiện ở hình 3.5.

Thơng số kỹ thuật:

Bảng 4.1: Thông số kỹ thuật của mạch Arduino Uno R3

Vi điều khiển ATmega328P

Điện áp hoạt động 5V

Điện áp vào khuyên dùng 7-12V

Điện áp vào giới hạn 6-20V

Digital I/O pin 14 (trong đó 6 pin có khả năng băm xung)

PWM Digital I/O Pins 6 (adsbygoogle = window.adsbygoogle || []).push({});

Analog Input Pins 6

Cường độ dòng điện trên mỗi I/O pin 20 mA Cường độ dòng điện trên mỗi 3.3V pin 50 mA

Flash Memory 32 KB (ATmega328P)

0.5 KB được sử dụng bởi bootloader

EEPROM 1KB (ATmega328P)

Tốc độ 16 MHz

Chiều dài 68.6 mm

Chiều rộng 53.4 mm

Trọng lượng 25 g

 Một số lưu ý khi làm việc với Arduino Uno R3:

Mặc dù Arduino có cầu chi tự phục hồi (resettable fuse) bảo về mạch khi xảy ra quá tải, tuy nhiên cầu chì này chỉ được mắc cho cổng USB nhằm tự động ngắt điện khi nguồn vào USB lớn hơn 5V.

Vì vậy, khi thao tác với Arduino, ta cần tính tốn cẩn thận để tránh gây hư tổn đến board. Các thao tác sau đây có thể gây hỏng một phần hoặc tồn bộ board Arduino.

- Nối trực tiếp dòng 5V vào GND

Khi nối trực tiếp dịng 5V vào GND mà khơng qua bất kì một điện trở kháng nào sẽ gây ra hiện tượng đoản mạch và phá hỏng Arduino.

- Cấp nguồn lớn hơn 5V cho bất kì pin I/O nào

Theo tài liệu của nhà sản xuất, với vi điều khiển ATmega328P thì 5V là ngưỡng lớn nhất mà vi điều khiển này có thể chịu được. Nếu bất kì pin nào bị cấp điện áp vượt quá 5V sẽ gây ra hỏng vi điều khiển này.

- Tổng cường độ dòng điện trên các I/O pin vượt quá ngưỡng chịu được

Dựa theo datasheet của vi điều khiển ATmega328P, tổng cường độ dòng điện cấp cho các I/O pin tối đa là 200mA. Vì vậy, ví dụ như trong trường hợp ta ép Arduino cấp nguồn cho hơn 10 đèn LED (mỗi đèn thông thường sẽ cần 20mA) hay dùng trực tiếp các chân I/O cấp nguồn cho động cơ sẽ có thể gây tổn hại đến vi điều khiển.

- Thay đổi các kết nối trong lúc đang vận hành

Khi Arduino đang vận hành, việc thanh đổi các kết nối có thể gây ra sự khơng ổn định của điện áp dẫn đến hư hỏng Arduino. Vì vậy, trong thực tế làm việc ta nên ngắt nguồn Arduino trước khi thực hiện bất kì các thay đổi nào.

 Phần mềm lập trình Arduino IDE

Giới thiệu về phần mềm

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 hồn tồ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 hồn tồn có thể nhúng thêm code viết bằng AVR C vào chương trình nếu muốn.

Mơi trường phát triển tích hợp (IDE) của Arduino là một ứng dụng cross-platform (nền tảng) được viết bằng Java, và từ IDE này sẽ được sử dụng cho ngơn ngữ lập trình xử lý (Processing programming language) và project wiring. Nó được thiết kế để dành cho những người mới tập làm quen với lĩnh vực phát triển phần mềm. Nó bao gồm một chương trình code editor với các chức năng như đánh dấu cú pháp, tự động brace matching, và tự động canh lề, cũng như compile (biên dịch) và upload chương trình lên board chỉ với 1 cú nhấp chuột. Một chương trình hoặc code viết cho Arduino được gọi là một sketch.

Arduino IDE đi kèm với một thư viện phần mềm được gọi là "Wiring", từ project wiring gốc, có thể giúp các thao tác input/output được dễ dàng hơn. Chỉ cần định nghĩa 2 hàm để tạo ra một chương trình vịng thực thi (cyclic executive) có thể chạy được:

setup(): hàm này chạy mỗi khi khởi động một chương trình, dùng để thiết lập các cài đặt. loop(): hàm này được gọi lặp lại cho đến khi tắt nguồn board mạch.

Hình 4.9: Giao diện phần mềm lập trình Arduino IDE

Vào menu Tools → Board → chọn Arduino/GenuinoUNO. Vào menu Tools → Port → chọn cổng Arduino đang kết nối với máy tính. Xác nhận cổng COM của Arduino IDE ở góc dưới cùng bên phải cửa sổ làm việc. Vào menu Tools → Programmer → chọn AVRISP mkII. Bấm tổ hợp phím Ctrl + U để tải chương trình lên mạch Arduino UNO, như ở trên.

Một phần của tài liệu Nghiên cứu lý thuyết, thực hiện mô hình hệ thống chiếu sáng thông minh trên ô tô (Trang 84 - 91)