Nội dung đề tài:Sinh viên tìm hiểu các thông tin cơ bản của Arduino thông qua báo cáo đượcgiảng viên đưa lên MS Teams, sau đó đi vào cụ thể tìm hiểu các thông tin, chứcnăng cũng như nguy
Tìm hiểu về bo mạch Arduino
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 ứng dụng điện tử tương tác với nhau hoặc với môi trường được thuận lợi hơn Từ khi xuất hiện trong cộng đồng mã nguồn mở và lập trình phần cứng, 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 Số lượng người dùng ngày càng lớn và đa dạng khiến cho cả những người tạo ra chúng cũng phải ngạc nhiên về mức độ phổ biến.
Arduino ra đời vào năm 2005 tại thị trấn Ivrea thuộc nước Ý, xuất hiện như 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).
Arduino là một board mạch vi xử lý, nhằm xây dựng các ứng dụng tương tác với nhau hoặc với môi trường được thuận lợi hơn Phần cứng bao gồm một board mạch nguồn mở được thiết kế trên nền tảng vi xử lý AVR Atmel 8bit, hoặc ARM Atmel 32-bit Những Model hiện tại được trang bị gồm 1 cổng giao tiếp USB, 6 chân đầu vào analog, 14 chân I/O kỹ thuật số tương thích với nhiều board mở rộng khác nhau.
Arduino có thể kết nối với:
- Các cảm biến đa dạng về chủng loại như: cảm biến nhiệt độ, độ ẩm, vận tốc, ánh sáng, gia tốc, màu sắc, lưu lượng nước, hồng ngoại,…;
- Các thiết bị hiển thị như: màn hình LCD, đèn LED,…;
- Các module chức năng (shield) hỗ trợ kết nối có dây với các thiết bị khác hoặc các kết nối không dây thông dụng như: 3G, Wifi, Bluetooth, GPRS, 2.4Ghz,…;
- Định vị GPS, nhắn tin SMS,…
Những chuẩn giao tiếp của Arduino: Serial, USB, SPI, TWI (I2C)
Môi trường lập trình cho bo mạch Arduino vô cùng đơn giản và dễ sử dụng nhờ ngôn ngữ lập trình Wiring trực quan, dựa trên nền tảng C/C++ quen thuộc Hệ sinh thái mã nguồn mở mạnh mẽ cung cấp vô số thư viện code được viết sẵn, tạo điều kiện thuận lợi cho người dùng tận dụng nguồn tri thức và hỗ trợ rộng lớn của cộng đồng lập trình.
Các loại board mạch Arduino thông dụng
Có 5 loại board mạch Arduino phổ biến:
Hình 1.1 Một số bo mạch Arduino
Kết luận: Trên đây ta đã tìm hiểu sơ qua về dòng board mạch Arduino.
Chương 2 dưới đây sẽ là tìm hiểu về dòng board mạch được sử dụng trong đồ án 1 của chúng ta là board mạch Arduino Uno.
Board mạch Arduino Uno
Cấu tạo
Hình 2.2 Board mạch Arduino Uno
- Arduino Uno là một dòng board mạch Arduino vi điều khiển dựa trên chip Atmega328P Arduino Uno có 14 chân I/O digital (trong đó có 6 chân xuất xung PWM), 6 chân Input Analog, 1 thạch anh 16MHz, 1 cổng USB, 1 jack nguồn DC, 1 nút reset.
Cổng USB là giao tiếp phổ biến để truyền tải code từ máy tính sang vi điều khiển Ngoài chức năng này, cổng USB còn đóng vai trò là giao tiếp nối tiếp, cho phép truyền dữ liệu giữa vi điều khiển và máy tính.
- Jack nguồn: để chạy Ardino thì có thể lấy nguồn từ cổng USB ở trên, nhưng không phải lúc nào cũng có thể cắm với máy tính Lúc đó ta cần có một nguồn DC ổn định từ 9 – 12V.
- 14 chân I/O: được đánh số thứ tự từ 0 đến 13, ngoài ra còn có một chân nối đất (GND) và một chân điện áp tham chiếu (AREF).
- Vi điều khiển AVR: là bộ xử lí trung tâm của toàn board mạch Với mỗi dòng Arduino khác nhau thì sử dụng những con chip khác nhau Ở dòng Arduino Uno R3 thì sử dụng ATMega328.
Sơ đồ vị trí linh kiện của Arduino Uno R3:
Hình 2.3 Sơ đồ chân của Arduino Uno R3
Hình 2.4 Sơ đố vị trí linh kiện của Arduino Uno R3
Thông số kỹ thuật của Arduino Uno R3
Vi điều khiển Atmega328 họ 8 bit Điện áp hoạt động 5V DC (cấp qua cổng USB) Điện áp đầu vào 7-12V DC Điện áp đầu vào (giới hạn) 6–20V DC Chân vào/ra (I/O) số 14 (6 chân hardware PWM) Chân vào tương tự 6 (độ phân giải 10 bit) Dòng điện trong mỗi chân I/
Dòng điện chân nguồn 3.3V 50 mA Dòng ra tối đa (5V) 500 mA
Bộ nhớ trong 32KB (Atmega328)
Tần số hoạt động 16MHz
Bảng 2.1 Thông số kỹ thuật của Arduino Uno R3
Vi điều khiển Atmega328 của Arduino Uno R3
Hình 2.5 Vi điều khiển của Arduino Uno R3
- Arduino Uno R3 có thể sử dụng 3 vi điều khiển họ 8 bit AVR là Atmega8, Atmage168, Atmega328 Bộ não này có thể xử lí những tác vụ đơn giản như điều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển tự xa, làm một trạm khí tượng thu nhỏ hiển thị lên trên màn hình LCD,…
- Thiết kế tiêu chuẩn của Arduino Uno R3 sử dụng vi điều khiển Atmega328 với giá thành hiện tại là khoảng 78000 đồng trên tme.com chưa kể thuế Tuy nhiên nêu yêu cầu phần cứng của bạn không cao thì có thể sử dụng các loại vi điều khiển khác có chức năng tương đương như Atmega 8 (bộ nhớ flash 8KB) hoặc Atmega168(bộ nhớ flash 16KB) với giá thành chỉ 30000-60000 đồng.
Cấp nguồn cho board mạch Arduino Uno R3
- Có 2 cách cấp nguồn chính cho board mạch Arduino Uno R3: Sử dụng cổngUSB và jack DC.
Dải điện áp giới hạn nhà sản xuất đưa ra cho Arduino là từ 6-20V Tuy nhiên, để đảm bảo độ an toàn và hiệu quả, nên sử dụng trong khoảng điện áp khuyên dùng từ 7-12V Sử dụng nguồn điện ngoài phạm vi này có thể dẫn đến hậu quả nghiêm trọng như nóng board mạch hoặc thậm chí làm hỏng thiết bị.
- Các chân nguồn trên board mạch Arduino Uno R3:
+ Vin: có thể cấp nguồn trực tiếp cho board mạch Arduino Uno R3 thông qua chân này Tuy nhiên cách cấp nguồn này ít được sử dụng.
+ 5V: chân 5V bỏ qua bộ điều chỉnh điện áp và tất cả các biện pháp an toàn có trên Arduino Uno, vì vậy nếu đầu vào vượt quá 5V (5,5 là giới hạn trên tối đa), bo mạch có thể bị hỏng.
+ 3.3V: Chân dùng cho nguồn 3.3V với dòng điện tối đa là 50mA.
+ GND: chân đất, tránh nhầm lẫn chân GND với các chân nguồn khác gây hỏng board mạch.
Thiết kế board mạch Arduino Uno R3
Phần mềm sử dụng
Trong học phần đồ án 1, để vẽ sơ đồ nguyên lý (schematic) và xuất thành mạch PCb, chúng ta sử dụng phần mềm Altium Designer phiên bản 21.
3.1.1 Tìm hiểu về Altium Designer 21
Altium Designer được phát triển bởi hãng Altium Limited.
Altium Designer 21 là một trong những phần mềm thiết kế PCB công nghệ cao nhất trong ngành hiện nay Phần mềm cung cấp chức năng hiệu suất cao và các tính năng nâng cao để làm việc trên các bo mạch phức tạp nhất một cách dễ dàng.
Với Designer 21, Altium tiếp tục duy trì sự cân bằng hoàn hảo giữa giao diện thân thiện với người dùng và hiệu suất mạnh mẽ Các tính năng như định tuyến tương tác và kiểm tra theo quy tắc (DRC) giúp bạn thiết kế PCB với độ chính xác cao, đảm bảo độ tin cậy và hiệu suất tối ưu cho sản phẩm điện tử của bạn.
Hình 3.6 Giao diện của phần mềm Altium Designer 21
3.1.2 Altium Designer 21 có lại những lợi ích gì?
Giao diện thiết kế, quản lý và chỉnh sửa thân thiện, dễ dàng biên dịch, quản lý file, quản lý phiên bản cho các tài liệu thiết kế.
Hỗ trợ mạnh mẽ cho việc thiết kế tự động, đi dây tự động theo thuật toán tối ưu, phân tích lắp ráp linh kiện Hỗ trợ việc tìm các giải pháp thiết kế hoặc chỉnh sửa mạch, linh kiện, netlist có sẵn từ trước theo các tham số mới.
Mở, xem và in các file thiết kế mạch dễ dàng với đầy đủ các thông tin linh kiện, netlist, dữ liệu bản vẽ, kích thước, số lượng…
Hệ thống các thư viện linh kiện phong phú, chi tiết và hoàn chỉnh bao gồm tất cả các linh kiện nhúng, số, tương tự… Đặt và sửa đối tượng trên các lớp cơ khí, định nghĩa các luật thiết kế, tùy chỉnh các lớp mạch in, chuyển từ schematic sang PCB, đặt vị trí linh kiện trên PCB.
Mô phỏng mạch PCB 3D, đem lại hình ảnh mạch điện trung thực trong không gian 3 chiều, hỗ trợ MCAD-ECAD, liên kết trực tiếp với mô hình STEP, kiểm tra khoảng cách cách điện, cấu hình cho cả 2D và 3D
Hỗ trợ thiết kế PCB sang FPGA và ngược lại.
Thiết kế board mạch Arduino Uno R3
Nhiệm vụ thiết kế board mạch Arduino Uno R3 bao gồm 2 phần:
- Vẽ lại sơ đồ nguyên lý (schematic) của Arduino Uno R3
- Chuyển sang dạng bảng mạch PCB 3D
3.2.1 Thiết kế sơ đồ nguyên lý (schematic)
Sơ đồ nguyên lý của mạch Arduino Uno R3 được thiết kế bao gồm:
- Thiết kế mạch dao động
- Khối vi điều khiển Atmega328-PU
Hình 3.7 Sơ đồ nguyên lí (schematic) của Arduino Uno R3
Hình 3.8 Sơ đồ nguyên lí của Arduino Uno R3 sau khi thiết kế trong Altium
Sử dụng bộ chuyển đổi AC sang DC cắm vào đầu nối thùng Nguồn vào sử dụng Jack DC (7-12V), đường kính 2,1mm Chốt trung tâm là cực dương và ống bọc bên ngoài được nối đất.
Nguồn vào sử dụng cổng USB B, dòng điện cung cấp cho board mạch là500mA ở điện áp 5V nếu kết nối được liệt kê và 100mA ở điện áp 5V nếu kết nối không được liệt kê.
Trong trường hợp chỉ có 1 trong 2 nguồn cung cấp thì board Arduino sẽ sử dụng nguồn cung cấp đó.
Trong trường hợp có cả 2 nguồn cung cấp thì Arduino sẽ ưu tiên lựa chọn nguồn cung cấp từ Jack DC thay vì từ cổng USB Việc ưu tiên này được thực hiện bởi Opamp LMV358 và Mosfet FDN340P.
Hình 3.11 Opamp LMV358 và Mofset FDN340P Điện áp từ Jack DC sau khi qua Diode bảo vệ D1 thì được gọi là điện áp VIN. Điện áp VIN qua cầu phân áp để tạo thành VIN/2 để so sánh với điện áp 3.3V Vì VIN/2 >3.3V nên điện áp đầu ra của OPamp là 5V, điều này làm cho Mosfet không được kích, nguồn cung cấp cho board Arduino là từ Jack DC sau khi qua ổn áp.
Khối điều áp tạo ra các điện áp 5V và 3.3V để cung cấp cho vi điều khiển và cũng là điểm cấp nguồn cho các thiết bị bên ngoài sử dụng Mạch Arduino sử dụng
IC ổn áp NCP1117 để tạo điện áp 5V từ nguồn cung cấp lớn và IC ổn áp LP2985 để tạo điện áp 3.3V Đây đều là những IC ổn áp tuyến tính, tuy hiệu suất không cao nhưng ít gợn nhiễu và mạch đơn giản.
Hình 3.12 Điều áp 5V dùng IC NCP1117
Mạch bảo vệ nguồn cung cấp điện sử dụng IC LP2985 Cầu chì F1 có chức năng tự phục hồi, bảo vệ mạch khỏi quá tải khi cấp nguồn qua dây cáp USB Diode D1 cho phép dòng điện một chiều từ nguồn DC vào mạch, ngăn ngừa dòng điện từ các nguồn khác chạy ngược vào adapter Đèn báo nguồn giúp kiểm tra tình trạng hoạt động của mạch, nếu đèn không sáng có thể do nguồn cung cấp bị hỏng, giắc kết nối lỏng hoặc linh kiện bên ngoài bị ngắn mạch.
3.2.1.2 Thiết kế khối vi điều khiển ATmega328-PU
Atmega328 là một chíp vi điều khiến được sản xuất bời hãng Atmel thuộc họ MegaAVR có sức mạnh hơn hẳn Atmega8 Atmega328 là một bộ vi điều khiển 8 bit dựa trên kiến trúc RISC, bộ nhớ chương trình 32KB ISP flash có thể ghi xóa hàng nghìn lần, 1KB EEPROM một bộ nhớ RAM vô cùng lớn trong thế giới vi xử lý 8 bit (2KB SRAM).
Với 23 chân có thể sử dụng cho các kết nối vào hoặc ra i/O, 32 thanh ghi, 3 bộ timer/counter có thể lập trình, có các ngắt nội và ngoại (2 lệnh trên một vector ngắt), giao thức truyền thông nối tiếp USART, SPI, I2C Ngoài ra có thể sử dụng bộ biến đồi số tương tự 10 bít (ADC/DAC) mở rộng tới 8 kênh, khả năng lập trình được watchdog timer, hoạt động với 5 chế độ nguồn, có thể sử dụng tới 6 kênh điều chế độ rộng xung (PWM), hỗ trợ bootloader Atemega328 có khả năng hoạt động trong một dải điện áp rộng (1.8V — 5.5V), tốc độ thực thi (thông luợng) 1MIPS trên 1MHz.
Hình 3.15 Vi xử lý ATmega328-PU
3.2.1.3 Thiết kế mạch dao động
Mạch giao động tạo ra các xung clock giúp cho vi điều khiển hoạt động, thực thi lệnh… Board mạch Arduino Uno sử dụng thạch anh 16Mhz làm nguồn dao động.
Hình 3.17 Mạch RESET Để vi điều khiển thực hiện khởi động lại thì chân RESET phải ở mức logic LOW (~0V) trong 1 khoản thời gian đủ yêu cầu
Chức năng của mạch Reset:
- Reset bằng tay: Khi nhấn nút, chân RESET nối với GND, làm cho MCURESET Khi không nhấn nút chân Reset được kéo 5V
- Reset tự động: Reset tự động được thực hiện ngay khi cấp nguồn cho vi điều khiển nhờ sự phối hợp giữa điện trở nối lên nguồn và tụ điện nối đất Thời gian tụ điện nạp giúp cho chân RESET ở mức LOW trong 1 khoản thời gian đủ để vi điều khiển thực hiện reset
- Khởi động vi điều khiển trước khi nạp chương trình mới.
Vi điều khiển Atmega328P trên board mạch Arduino Uno R3 đã được nạp sẵn
1 bootloader, cho phép nhận chương trình mới thông qua chuẩn giao tiếp UART (chân 0 và 1) ở những giây đầu sau khi vi điều khiển Reset
Máy tính giao tiếp với board mạch Arduino qua chuẩn giao tiếp USB (D+/D-), thông qua một vi điều khiển trung gian là ATmega16U2 hoặc một IC trung gian là CH340 (thường thấy trong các mạch sử dụng chip dán) Vi điều khiển hoặc IC này có nhiệm vụ chuyển đổi chuẩn giao tiếp USB thành chuẩn giao tiếp UART để nạp chương trình hoặc giao tiếp truyền nhận dữ liệu với máy tính (Serial).
Phần thiết kế mạch nạp có tích hợp thêm 2 đèn LED, nên khi nạp chương trình sẽ thấy 2 LED này nhấp nháy Còn khi giao tiếp, nếu có dữ liệu từ máy tính gửi xuống vi điều khiến thì đèn LED Rx sẽ nháy Còn nếu có đữ liệu từ vi điều khiển gửi lên máy tính thì đèn Tx sẽ nháy.
Các phím tắt trong thiết kế mạch in:
+ Ctrl + Shift + Lăn chuột: chuyển lớp
+ D - O: Chỉnh thông số của mạch.
+ D - R: Thay đổi các luật cho bản vẽ (kích thước đường dây, lỗ via, khoảng cách các linh kiện, )
+ D - S - R: Định lại kích thước bo mạch
+ D - T - A: Hiển thị hết tất cả các lớp
+ D - T - S: Hiển thị các lớp tín hiệu (Top - Bottom - Multi)
+ L: Khi đang di chuyển linh kiện lật linh kiện giữa lớp Top và Bottom
+ P - L: Định kích thước cho mạch (Keep Out Layer)
+ P - R: Vẽ đường mạch theo ý muốn
+ Q (Ctrl + Q): Thay đổi đơn vị (mm mil)
+ Shift + R: Thay đổi các chế độ đi dây (Cắt - Không cho cắt - Đẩy dây)
+ Shift + S: Chỉ cho phép hiện 1 lớp đang chọn (các lớp còn lại được ẩn)
+ Shift + Space: Thay đổi các chế độ đường dây (Tự do - Theo luật -
+ TAB: Hiện cửa sổ thay đổi thông tin khi đang thao tác.
+ T - U - A: Xóa tất cả các đường mạch
+ T - E: Bo tròn đường dây chân linh kiện
+ V - F: Hiển thị toàn bộ bản vẽ
3.2.2.1 Quy trình vẽ mạch PCB
Chuyển đổi từ sơ đồ nguyên lý sang PCB
Bước 1: Sau khi vẽ xong sơ đồ Schematic và kiểm tra đầy đủ, thì ta nhấn vàoDesign và chọn Update PCB Document.
Hình 3.19 Xuất file schematic sang PCB
Bước 2: Cửa sổ Engneering Change Order xuất hiện Tiếp theo mình chọn Validate Changes Excute Changes Nếu 2 hàng được tích v hết thì File của bạn không bị lỗi, còn tích x thì phải đi sửa lỗi x đó.
Sau khi xuất sang PCB ta được hình như sau:
Hình 3.20 Hình sau khi xuất file sang PCB
Bước 3: Đưa các linh kiện vào và sắp xếp theo từng khối như schematic Sắp xếp các linh kiện phù hợp theo từng khối như trong hình vẽ schematic.
Hình 3.21 Board mạch sau khi sắp xếp các linh kiện
Phiên bản này chưa thật sự tối ưu, còn nhiều khoảng trống.
Bước 4 Nối chân các linh kiện lại với nhau.
Hình 3.22 Nối chân các linh kiện
Linh kiện hiện màu xanh do gặp lỗi, cần phải chỉnh sửa, việc chỉnh sửa này đưa sang cùng với phần version 2,
Sau khi phủ đồng hoàn thiện các bước ta có mô hình mạch 3D như sau:
Hình 3.23 Mạch sau khi phủ đồng
Hình 3.24 Hình 3D mặt trước board mạch
Mạch chưa tối ưu do có nhiều khoảng trống, sử dụng linh kiện không hợp lý Các linh kiện này không cùng chủng loại, nên cần được thay thế bằng linh kiện phù hợp để mạch hoạt động hiệu quả hơn.
Hình 3.25 Hình 3D mặt sau board mạch
Mặt sau board mạch chưa thật sự được tối ưu do không dặt linh kiện mặt sau,thiếu 4 lỗ cố định board mạch.
Thay đổi các linh kiện
Thay đổi vi điều khiển Atmega328 về loại dán:
Hình 3.26 Vi điều khiển ATmega328
Thay đổi nút bấm về hình dáng nhỏ gọn hơn, thay tất cả điện trở và tụ về loại dán dể tối ưu kích thước cho mạch, ta được bản schematic mới của version 2. Đồng thời thêm hình 3D cho một số linh kiện chưa có chân, như trong bài này có 3 thiết bị là header 6, header 8, header 10 không tìm được trong các thư viện miễn phí, ta thực hiện thêm chân cho linh kiện Hình 3D các linh kiện sẽ được hiển thị ở các phần sau.
Hình 3.27 Bản schematic mới sau khi thay đổi các linh kiện cho phù hợp với kích thước 5x5cm
Sau khi thay đổi linh kiện và chọn chân các linh kiện bên phần schematic, ta chuyển sang sắp xếp các linh kiện trên bảng mạch PCB.
Quy trình vẽ mạch PCB version 2
Bước 1: định hình kích thước board mạch:
Chuyển thang đo về mm và định hình board mạch bằng cách sử dụng phím Q. keep out track sau đó vào Design->Board shape->Define board shape from selected objects.
Hình 3.28 Đình hình kích thước mạch
Bước 2: Sắp xếp và đi dây linh kiện:
Sau khi hoàn chỉnh kích thước board mạch, tiến hành cập nhật từ sơ đồ sang PCB, sau đó sắp xếp, đi dây và phủ đồng các linh kiện theo phần 3.2.2 Tuy nhiên, cần thêm 4 lỗ bắt vít tại 4 cạnh để cố định chắc chắn board mạch khi cần thiết.
4 lỗ cố định này cho phép người dùng dễ dàng gắn bo mạch vào hộp hoặc máy móc, giúp quá trình sử dụng trở nên thuận tiện và hiệu quả hơn.
Hình 3.29 Board mạch sau khi 4 lỗ cố định
Tiếp theo chúng ta sắp xếp linh kiện lên trên board mạch và đi dây cho các linh kiện.
Hình 3.30 Mặt trước của board mạch sau khi được sắp xếp, đi dây và phủ đồng
Hình 3.31 Mặt sau của board mạch
Sau khi sắp xếp các linh kiện lên 2 mặt của board mạch ta được hình như trên.
Do thao tác dây chưa chuyên nghiệp nên hình ảnh đi dây có thể hơi rối, mong được người đọc bỏ qua.
Sau khi hoàn thiện các thao tác, chúng ta có thể thu được ảnh 3D của board mạch bằng cách thao tác với bảng Altium standard 2D và chuyển sang chế độ 3D chúng ta mong muốn.
Hình 3.32 Hình 3D mặt trước khi hoàn thiện của board mạch
Hình 3.33 Hình 3D mặt sau khi hoàn thiện của board mạch
Sau khi tinh chỉnh lại theo hướng dẫn, kích thước mạch in thu gọn đáng kể còn 5x5 cm Điều này dẫn đến việc linh kiện phải sử dụng loại nhỏ hơn dạng dán, góp phần giảm kích thước tổng thể Hơn nữa, việc sử dụng mạch in kích thước cố định 5x5 cm giúp tối ưu việc bố trí linh kiện trên cả hai mặt mạch, tiết kiệm đáng kể chi phí trong tương lai nếu yêu cầu làm mạch thực tế trong đồ án 2.
Trong quá trình thực hiện đề tài này, em đã học được rất nhiều kĩ năng qua việc tìm hiểu và thiết kế board mạch Arduino UNO R3 Ngoài những kĩ năng như sử dụng Altium và đọc Datasheet của linh kiện, em còn học được những kĩ năng như các làm việc và tư duy độc lập và cách tìm kiếm tài liệu hỗ trợ trong quá trình thực hiện đồ án 1.
Em xin chân thành cảm ơn thầy Nguyễn Hoàng Nam đã giao và hướng dẫn em thực hiện tốt đề tài môn đồ án 1 này!