TỔNG QUAN
Việt Nam đang trải qua giai đoạn ô tô hóa, với tỷ lệ ô tô trung bình đạt trên 50 xe/1.000 dân, cho thấy ô tô ngày càng trở thành phương tiện thiết yếu cho người dân Dự báo từ năm 2020 đến 2025, tỷ lệ này sẽ tiếp tục tăng lên 50 xe/1.000 dân khi thu nhập bình quân đầu người vượt 3.000 USD Để duy trì lợi thế cạnh tranh trong bối cảnh ô tô ngày càng phổ biến, các nhà sản xuất xe đang nỗ lực áp dụng những công nghệ và nghiên cứu mới nhất vào sản phẩm của mình, từ cơ khí, điện tử đến phần mềm, nhiên liệu và vật liệu.
Cuộc cách mạng 4.0, cùng với sự phát triển mạnh mẽ của công nghệ điện tử và phần mềm, đã nâng cao tính năng, hiệu suất, tiện nghi và an toàn của ô tô Các hệ thống điều khiển và phần mềm trên xe đang dần chiếm ưu thế so với cơ khí truyền thống Hiện nay, hệ thống nhúng, bao gồm điện tử và phần mềm, đã trở thành yếu tố thiết yếu trong cấu trúc của ô tô và đóng góp lớn vào giá thành sản phẩm Việc hiểu rõ cách hoạt động của các hệ thống nhúng sẽ mang lại lợi thế cho kỹ sư cơ khí trong việc vận hành, kiểm tra và sửa chữa, đồng thời là nền tảng để chuyển mình thành kỹ sư phần mềm ô tô.
Lý do chọn đề tài
Các trường và cơ sở đào tạo ngành công nghệ kỹ thuật ô tô cần trang bị cho sinh viên những kiến thức thiết yếu về ô tô, đồng thời cập nhật kịp thời các nội dung mới liên quan đến các xu hướng phát triển trong tương lai của ngành ô tô.
Nhằm trang bị kiến thức cơ bản về hoạt động của các hệ thống ô tô và hỗ trợ giảng dạy trong môn thực tập lập trình điều khiển ô tô, nhóm chúng em đã chọn đề tài “Biên soạn các bài học cho môn Thực tập lập trình điều khiển ô tô”.
Mục tiêu của đề tài là xây dựng hệ thống bài học cho giảng dạy và học tập môn Thực tập lập trình điều khiển ô tô Các bài học này sẽ cung cấp kiến thức cơ bản về hoạt động của các hệ thống xử lý, cảm biến và thiết bị trên ô tô, giúp học viên có khả năng lập trình mô phỏng các hệ thống đơn giản.
Nhóm sẽ phát triển các chương trình và thư viện hỗ trợ giảng dạy và học tập, đồng thời đảm bảo tính tái sử dụng cho các dự án phát triển sau này.
Phương pháp nghiên cứu Để hoàn thành được đồ án này, nhóm đã áp dụng rất nhiều phương pháp nghiên cứu như:
Phương pháp phân tích lý thuyết bao gồm ba bước chính: phân tích nguồn tài liệu từ các tạp chí, báo cáo khoa học, diễn đàn và tài liệu lưu trữ thông tin đại chúng; phân tích tác giả để hiểu rõ quan điểm và bối cảnh; và phân tích nội dung để rút ra những thông tin và kiến thức quan trọng.
Phương pháp tổng hợp lý thuyết bao gồm việc bổ sung tài liệu sau khi phân tích để phát hiện những thiếu sót hoặc sai lệch Quá trình này yêu cầu lựa chọn tài liệu một cách cẩn thận, chỉ giữ lại những thông tin cần thiết và đủ để xây dựng luận cứ vững chắc.
• Phương pháp phân loại và hệ thống hóa lý thuyết
Phương pháp mô hình hóa là quá trình nghiên cứu các đối tượng và quá trình thông qua việc xây dựng các mô hình đại diện cho chúng Những mô hình này giữ lại các tính chất cơ bản của đối tượng đang được nghiên cứu, từ đó giúp các nhà nghiên cứu quay lại và phân tích các đặc điểm của đối tượng thực tế một cách hiệu quả.
• Phương pháp thu thập số liệu, phương pháp thực nghiệm… Ý nghĩa thực hiện Đề tài này sau khi hoàn thành sẽ mang lại những lợi ích sau:
Hệ thống bài học cung cấp tài liệu quý giá cho giảng dạy và học tập, giúp người học nắm vững lập trình điều khiển hệ thống Kiến thức này không chỉ nâng cao khả năng vận hành mà còn hỗ trợ trong việc kiểm tra, sửa chữa và phát triển hệ thống hiệu quả hơn.
Môn học này tập trung vào lập trình ô tô, sẽ khám phá các vấn đề phổ biến thường gặp trên xe và cung cấp các giải pháp hiệu quả để xử lý những vấn đề đó.
• Cung cấp các gợi ý thiết lập phần cứng, kỹ thuật lập trình thường dùng để có thể lập trình mô phỏng các hệ thống
• Cung cấp những hướng dẫn, chương trình mẫu, thư viện viết sẵn nhóm tạo ra để sử dụng phát triển các dự án
• Các chương trình phát triển thêm trong đồ án sẽ tạo cảm hứng cho người học, giúp quá trình truyền đạt kiến thức dễ dàng hơn
Do hạn chế về thời gian, hệ thống bài học chưa bao gồm nội dung hướng dẫn thực hành, bài tập tự kiểm tra, cũng như các bài học về lập trình cho một số thiết bị khác như động cơ bước và các loại màn hình LCD, TFT.
Trong bối cảnh khó khăn do giãn cách xã hội, nhóm thực hiện đồ án gặp trở ngại trong việc tiếp cận thiết bị và mô hình, dẫn đến việc chưa hoàn thiện các nội dung lập trình thực tế và mô hình mẫu tổng hợp Tuy nhiên, nhóm đã nỗ lực tận dụng thời gian này để phát triển thêm các nội dung hỗ trợ cho đề tài.
CƠ SỞ LÝ THUYẾT
AVR là chip vi điều khiển 8 bits với kiến trúc tập lệnh đơn giản hóa-RISC, giúp tối ưu hóa hiệu suất xử lý và giảm thiểu độ phức tạp của mã lệnh Kiến trúc RISC đang trở thành xu hướng trong thiết kế bộ xử lý hiện đại, mang lại nhiều lợi thế về tốc độ, hiệu suất và khả năng tiêu thụ điện năng thấp.
• Tổng số chân I/O kỹ thuật số là 14
• Thông lượng lên đến 16 MIPS ở tần số 16 MHz
• Có 3 bộ Timer/Counter, hai bộ 8bit và một bộ 16bit
• Khóa chức năng chương trình để bảo mật mã lập trình
• ADC 8 kênh 10bit trong gói TQFP và QFN / MLF
• Bộ đếm thời gian thực với bộ dao động riêng biệt
• Nhiệt độ tối thiểu và tối đa -40 o C đến 105 o C
• USART nối tiếp có thể lập trình
• Giao tiếp SPI chính / phụ
• Ngắt ngoài và ngắt bên trong
• Điện áp hoạt động: 2,7V đến 5,5V
• Tiêu thụ điện năng thấp
• Chế độ hoạt động: 1,5mA ở 3V - 4MHz
• Chế độ ngắt nguồn: 1àA ở 3V
• Sáu chế độ tiết kiệm năng lượng: Chờ, giảm nhiễu ADC, tiết kiệm năng lượng, tắt nguồn, chờ, và chế độ chờ kéo dài
• Bộ đếm thời gian có thể lập trình với bộ dao động trên chip riêng biệt
• Bộ so sánh tương tự trên chip
Hình 2.1 Cấu trúc của vi điều khiển AVR
❖ Sơ đồ các chân ATmega328
Hình 2.2 Sơ đồ chân ATmega328 (TQFP Top View and 32 MLF Top View)
• Cổng B (PB7: 0) XTAL1 / XTAL2 / TOSC1 / TOSC2 và Cổng D (PD7: 0): là cổng I/O hai chiều 8bit với các điện trở kéo lên bên trong (được chọn cho mỗi bit)
• Cổng C (PC5: 0): là cổng I / O hai chiều 7bit với các điện trở kéo lên bên trong (được chọn cho mỗi bit)
PC6 có hai chức năng tùy thuộc vào việc cầu chì RSTDISBL có được lập trình hay không Nếu cầu chì RSTDISBL được lập trình, PC6 sẽ hoạt động như một chân đầu vào Ngược lại, khi cầu chì RSTDISBL không được lập trình, PC6 sẽ được sử dụng làm đầu vào để đặt lại.
AVCC là chân điện áp cần thiết cho bộ chuyển đổi A/D, với PC3 được kết nối đến 0 và ADC7 đến 6 Cần phải kết nối AVCC bên ngoài với VCC, ngay cả khi bộ chuyển đổi ADC không được sử dụng.
• AREF: là chân tham chiếu tương tự cho bộ chuyển đổi A/D
ADC7 trong các gói TQFP và QFN/MLF đóng vai trò là đầu vào tương tự cho bộ chuyển đổi A/D Các chân này được cung cấp nguồn từ analog và hoạt động như các kênh ADC 10-bit.
Cấu trúc AVR có hai không gian bộ nhớ chính: bộ nhớ chương trình (program memory) và bộ nhớ dữ liệu (Data memory)
Hình 2.3 Bộ nhớ chương trình ATmega328P
Bộ nhớ chương trình của AVR sử dụng Flash với dung lượng 32 Kb, được tổ chức theo cấu trúc 16Kx16 do độ rộng 16 hoặc 32 bit của các vi điều khiển Đặc biệt, để bảo mật phần mềm, bộ nhớ Flash trong ATmega328P được chia thành hai phần: phần bộ nạp khởi động và phần chương trình ứng dụng.
Bộ nhớ flash có độ bền ít nhất 10.000 chu kỳ ghi / xóa
Bộ nhớ dữ liệu AVR được chia làm hai phần: bộ nhớ SRAM và bộ nhớ EEPROM
ATmega328P là một bộ vi điều khiển phức tạp với nhiều thiết bị ngoại vi được hỗ trợ trong 64 thanh ghi dành riêng cho I/O
Bài viết mô tả cấu trúc bộ nhớ của một hệ thống với bốn phần chính: Đầu tiên, có 32 thanh ghi chức năng chung (R0 đến R31) với địa chỉ từ 0x0000 đến 0x001F Thứ hai, không gian nhớ I/O bao gồm 64 thanh ghi vào ra, có địa chỉ từ 0x0020 đến 0x005F Thứ ba, vùng nhớ mở rộng với 160 thanh ghi vào ra, có địa chỉ từ 0x0060 đến 0x00FF Cuối cùng, vùng SRAM nội có dung lượng 2048 byte, với địa chỉ từ 0x0100 đến 0x08FF Đặc biệt, các thanh ghi R26 đến R31 hỗ trợ tính năng định địa chỉ gián tiếp thông qua con trỏ.
Hình 2.4 Bản đồ bộ nhớ dữ liệu
Bộ nhớ EEPROM là loại bộ nhớ dữ liệu cho phép ghi xóa trong quá trình vi điều khiển hoạt động mà không mất dữ liệu khi nguồn điện bị ngắt Vi điều khiển ATmega328P trang bị bộ nhớ EEPROM với dung lượng 1Kb và độ bền tối thiểu 100000 chu kỳ ghi/xóa EEPROM được coi là bộ nhớ vào ra với địa chỉ độc lập so với SRAM, do đó, cần sử dụng các lệnh đọc và ghi để truy xuất dữ liệu Để điều khiển dữ liệu vào ra với EEPROM, chúng ta sử dụng ba thanh ghi: EEAR, EEDR và EECR.
Ngắt, hay còn gọi là interrupts, là tín hiệu khẩn cấp gửi đến bộ xử lý, yêu cầu tạm dừng các hoạt động hiện tại để thực hiện nhiệm vụ khẩn cấp tại một địa điểm khác, được gọi là trình phục vụ ngắt (ISR - interrupt service routine) Sau khi hoàn thành nhiệm vụ trong ISR, bộ xử lý sẽ tiếp tục thực hiện các nhiệm vụ còn lại.
Hình 2.5 Minh họa cách tổ chức ngắt thông thường trong các chip AVR
Mỗi dòng chip có số lượng ngắt khác nhau, và mỗi ngắt tương ứng với một vector ngắt Vector ngắt là các thanh ghi có địa chỉ cố định, được định nghĩa trước và nằm trong phần đầu của bộ nhớ chương trình.
Bảng 2.1 Các vector ngắt và Reset trên ATmega328P
Ngắt ngoài là loại ngắt độc lập, không phụ thuộc vào các thiết bị của chip, trong khi các loại ngắt khác thường liên quan đến hoạt động của các thiết bị như Timer/Counter, giao tiếp nối tiếp USART, và chuyển đổi ADC.
Ngắt ngoài là phương pháp hiệu quả để giao tiếp giữa người dùng và chip Trên vi điều khiển ATmega328P, ngắt ngoài có thể được kích hoạt qua các chân INT0, INT1 hoặc bất kỳ chân nào trong dãy PCINT23 đến PCINT0 Khi được kích hoạt, ngắt có thể hoạt động ngay cả khi các chân INT0, INT1 hoặc PCINT23 0 được cấu hình làm đầu ra Đặc biệt, nếu ngắt INT0 hoặc INT1 được bật và thiết lập ở mức kích hoạt, chúng sẽ hoạt động miễn là chân giữ ở mức thấp.
2.3.2.1 Thời gian ngắt thay đổi mức logic
Hình 2.6 Thời gian ngắt thay đổi mức logic
❖ Thanh ghi EICRA (External Interrupt Control Register A)
Thanh ghi điều khiển ngắt bên ngoài A chứa các bit lựa chọn các chế độ ngắt
Hình 2.7 Thanh ghi EICRA (External Interrupt Control Register A)
• Bit 7 4 – Res: Reserved Bits: Các bit này là các bit không được sử dụng trong ATmega328P và sẽ luôn được đọc là 0
• Bit 3, 2 – ISC11, ISC10: Interrupt Sense Control 1 Bit 1 and Bit 0
Ngắt ngoài 1 được kích hoạt bởi chân INT1 khi cờ ngắt tương ứng được thiết lập Nếu chọn ngắt cạnh hay chuyển đổi, các xung kéo dài hơn một chu kỳ đồng hồ sẽ tạo ra ngắt, trong khi các xung ngắn hơn không đảm bảo tạo ra ngắt Đối với ngắt mức thấp, mức thấp cần được giữ cho đến khi hoàn thành lệnh đang thực thi để tạo ra ngắt.
0 0 The low level of INT1 generates an interrupt request
0 1 Any logical change on INT1 generates an interrupt request
1 0 The falling edge of INT1 generates an interrupt request
1 1 The rising edge of INT1 generates an interrupt request
• Bit 1, 0 – ISC01, ISC00: Interrupt Sense Control 0 Bit 1 and Bit 0
Ngắt ngoài 0 được kích hoạt bởi chân ngoài INT0 nếu cờ ngắt tương ứng được thiết lập
0 0 The low level of INT0 generates an interrupt request
0 1 Any logical change on INT0 generates an interrupt request
1 0 The falling edge of INT0 generates an interrupt request
1 1 The rising edge of INT0 generates an interrupt request
❖ Thanh ghi EIMSK (External Interrupt Mask Register)
Hình 2.8 Thanh ghi EIMSK (External Interrupt Mask Register)
• Bit 7 2 – Res: Reserved Bits: Các bit này là các bit không được sử dụng trong ATmega328P và sẽ luôn được đọc là 0
• Bit 1 – INT1: External Interrupt Request 1 Enable
Khi bit INT1 và bit 1 trong thanh ghi trạng thái (SREG) được thiết lập, chân ngắt bên ngoài sẽ được kích hoạt Các bit ISC11 và ISC10 trong thanh ghi điều khiển ngắt bên ngoài A (EICRA) xác định cách thức kích hoạt ngắt, bao gồm cạnh lên, cạnh xuống của chân INT1 hoặc ngắt liên tục ở mức logic đã đặt.
Yêu cầu ngắt có thể xảy ra ngay cả khi INT1 được cấu hình là đầu ra Ngắt tương ứng với yêu cầu ngắt ngoài 1 được thực hiện từ vectơ ngắt INT1.
• Bit 0 – INT0: External Interrupt Request 0 Enable
Khi bit INT0 và bit I trong thanh ghi trạng thái (SREG) được thiết lập là 1, chân ngắt bên ngoài sẽ được kích hoạt Các bit ISC01 và ISC00 trong thanh ghi điều khiển ngắt ngoài A (EICRA) xác định cách thức kích hoạt ngắt ngoài, có thể là trên cạnh tăng, cạnh xuống của chân INT0 hoặc ngắt liên tục ở mức logic đã đặt Hoạt động trên chân sẽ tạo ra yêu cầu ngắt ngay cả khi INT0 được cấu hình như một đầu ra, và ngắt tương ứng sẽ được thực thi từ vectơ ngắt INT0.
❖ Thanh ghi EIFR (External Interrupt Flag Register)
Hình 2.9 Thanh ghi EIFR (External Interrupt Flag Register)
• Bit 7 2 – Res: Reserved Bits: Các bit này là các bit không được sử dụng trong ATmega328P và sẽ luôn được đọc là 0
• Bit 1 – INTF1: External Interrupt Flag 1
BIÊN SOẠN BÀI HỌC VÀ CÁC THƯ VIỆN HỖ TRỢ
Tổng quan về nội dung các bài học
Ngành công nghiệp ô tô luôn dẫn đầu trong việc áp dụng công nghệ mới, đặc biệt là các công nghệ điện tử và phần mềm, giúp cải thiện tính năng, hiệu suất, tiện nghi và an toàn của xe Sự chuyên biệt hóa của các hệ thống xử lý trên ô tô ngày càng gia tăng, yêu cầu người dùng cần hiểu biết về cách hoạt động của chúng để nâng cao khả năng vận hành, sửa chữa và phát triển Nhằm đáp ứng nhu cầu này, nhóm chúng em đã biên soạn các bài học thực tập lập trình điều khiển ô tô, cung cấp kiến thức cơ bản về hoạt động của các hệ thống xử lý, cảm biến và thiết bị trên ô tô, giúp người học có khả năng lập trình mô phỏng các hệ thống đơn giản.
• Tìm hiểu, nhận biết và giả lập được các loại tín hiệu, liên hệ với các thiết bị, cảm biến sử dụng thực tế trên ô tô
• Tìm hiểu và sử dụng được một vài chuẩn giao tiếp thường gặp ở mức độ VĐK và trên ô tô
• Cung cấp các ý tưởng cho việc thiết lập phần cứng
• Trình bày các vấn đề hay gặp khi các hệ thống, thiết bị, cảm biến hoạt động trên môi trường ô tô và giải pháp xử lý
• Tìm hiểu một vài kỹ thuật lập trình đặc biệt, giải thuật thường được sử dụng
• Lập trình và giới thiệu các thư viện, chương trình mẫu nhóm tạo sẵn để thuận tiện sử dụng cho các dự án
Các ý tưởng chương trình trong bài học sẽ được trình bày dưới dạng giải thích tóm tắt, sử dụng lưu đồ giải thuật và mã chương trình
Để đáp ứng các mục đích học tập, nhóm biên soạn đã đưa ra một số yêu cầu cần thiết mà người học cần chuẩn bị trước khi bắt đầu nghiên cứu.
Để thành công trong lập trình, bạn cần nắm vững các kỹ năng như đọc hiểu lưu đồ giải thuật, sử dụng các khái niệm cơ bản như biến, lặp, rẽ nhánh và hàm Điều này giúp bạn xử lý bài toán một cách logic và hiển thị kết quả một cách hiệu quả Kiến thức về ngôn ngữ lập trình, đặc biệt là C/C++, sẽ là một lợi thế lớn.
• Có khả năng tự tìm kiếm các thông tin, sử dụng tài liệu (datasheet) của các thiết bị, cảm biến nhà sản xuất cung cấp
Khi bắt đầu học về vi điều khiển (VĐK), người mới có thể lựa chọn bất kỳ dòng VĐK nào phù hợp với nhu cầu học tập của mình Một số dòng VĐK phổ biến như ARM, AVR và 8051 có những ưu điểm và nhược điểm riêng Dòng ARM nổi bật với cấu hình cao và tốc độ xử lý nhanh, nhưng hệ thống thư viện lại khá phức tạp Ngược lại, các dòng VĐK như AVR và 8051 dễ dàng tìm kiếm tài liệu và nhận được sự hỗ trợ từ cộng đồng nhiều hơn.
Trong các bài học, dòng VĐK AVR được lựa chọn nhờ vào ưu điểm về cấu hình, chi phí hợp lý, sự đa dạng và hỗ trợ rộng rãi từ cộng đồng phát triển, cũng như khả năng dễ dàng tìm kiếm tài liệu Tuy nhiên, việc lập trình VĐK AVR theo phương pháp truyền thống vẫn tồn tại một số nhược điểm nhất định.
Việc kết nối phần cứng gặp nhiều khó khăn, bao gồm việc thay đổi tần số hoạt động của vi điều khiển (VĐK) và yêu cầu phải trang bị mạch nạp chương trình Hơn nữa, thiếu mạch bảo vệ có thể dẫn đến rủi ro hỏng chip nếu kết nối sai.
Lập trình các thanh ghi có thể gặp khó khăn do việc ghi nhớ tên của chúng, thường xuyên cần tra cứu tài liệu Việc nạp chương trình sai có thể dẫn đến tình trạng khóa chip, gây ảnh hưởng đến hiệu suất làm việc.
Để đạt được mục tiêu ban đầu một cách hiệu quả, học sinh nên chú trọng vào các vấn đề, giải pháp và ý tưởng chương trình, đồng thời tiết kiệm thời gian chuẩn bị phần cứng Điều này cũng giúp dễ dàng tiếp cận cho những người mới bắt đầu, với các bài học sử dụng phần mềm và phần cứng từ Arduino.
Bảng 3.1 So sánh các dòng vi điều khiển
Chuẩn giao tiếp hỗ trợ
PIC, UART, USART, LIN, CAN, thernet, SPI, I2S
UART, USART, SPI, I2C, (AVR đặc biệt hỗ trợ CAN, USB, Ethernet)
UART, USART, LIN, I2C, SPI, CAN, USB, Ethernet, I2S, DSP, SAI (giao diện âm thanh nối tiếp), IrDA
Trung bình Thấp Thấp Thấp
PIC16, PIC17, PIC18, PIC24, PIC32
Tiny, Atmega, Xmega, AVR mục đích đặc biệt
Chi phí (so với các tính năng cung cấp)
Rất rẻ Trung bình Trung bình Rẻ
PIC18fXX8, PIC16f88X, PIC32MXX
LPC2148, ARM Cortex-M0 đến ARM Cortex-M7…
Arduino là nền tảng phần cứng mã nguồn mở, được hỗ trợ mạnh mẽ từ nhà sản xuất, là lựa chọn lý tưởng để bắt đầu tìm hiểu lập trình hệ thống Nền tảng này cung cấp nhiều dòng board mạch đa dạng về cấu hình, bộ nhớ và chức năng như USB, Wifi, LAN Trong các bài học, chúng tôi sẽ sử dụng Arduino Nano với vi điều khiển ATmega328 8 bit.
Bảng 3.2 Bảng thông số Arduino nano
Vi điều khiển ATmega328 (họ 8bit) Điện áp hoạt động 5V – DC
Tần số hoạt động 16 MHz
Dòng tiêu thụ 30mA Điện áp vào khuyên dùng 7-12V – DC Điện áp vào giới hạn 6-20V – DC
Số chân Digital I/O 14 (6 chân PWM)
Số chân Analog 8 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân I/O 40 mA
Dòng ra tối đa (5V) 500 mA
Dòng ra tối đa (3.3V) 50 mA
Bộ nhớ flash 32 KB (ATmega328) với 2KB dùng bởi bootloader
Cổng kết nối Mini USB
Board mạch Arduino Nano nổi bật với nhiều ưu điểm phần cứng, bao gồm cổng nạp chương trình tích hợp sẵn, khả năng giao tiếp linh hoạt, thạch anh dao động và các cổng kết nối cùng đèn LED có sẵn Mạch này cũng hỗ trợ nguồn cấp đa dạng, mang lại sự tiện lợi cho người sử dụng.
• Cấp nguồn ngoài vào chân Vin khuyên dùng 7-12V (giới hạn 6-20V), chân Vin sẽ kết nối qua ổn áp trên mạch và cung cấp năng lượng cho mạch hoạt động
• Có thể cấp nguồn 5V vào chân 5V (Lưu ý: không qua ổn áp, không khuyến nghị)
• Cấp nguồn bằng cổng USB
Một số lưu ý như sau:
• Arduino nano không có bảo vệ ngược cực
Các chân 3.3V và 5V trên Arduino được sử dụng để cung cấp nguồn cho thiết bị khác, không phải là chân cấp nguồn vào Việc cấp nguồn sai vị trí có thể gây hỏng board, điều này không được nhà sản xuất khuyến khích.
• Cấp điện áp trên 13V vào chân RESET trên board có thể làm hỏng vi điều khiển ATmega328
• Cường độ dòng điện vào/ra ở tất cả các chân Digital và Analog của Arduino UNO nếu vượt quá 200mA sẽ làm hỏng vi điều khiển
• Cấp điệp áp trên 5.5V vào các chân Digital hoặc Analog của Arduino UNO có thể làm hỏng vi điều khiển
Cường độ dòng điện qua chân Digital hoặc Analog của Arduino UNO không được vượt quá 40mA để tránh hư hỏng vi điều khiển Nếu không sử dụng để truyền nhận dữ liệu, cần mắc điện trở hạn dòng cho các kết nối Để thuận tiện trong thực hành và nghiên cứu, các bài học sẽ sử dụng mạch tích hợp thiết bị do thầy GVHD Th.s Nguyễn Trọng Thức cung cấp.
Hình 3.2 Mạch Arduino nano tích hợp các thiết bị
Khi lập trình cho các board Arduino, người dùng có nhiều lựa chọn phần mềm để viết mã, bao gồm Visual Studio Code, Visual Studio, Sublime Text và đặc biệt là Arduino IDE, được phát triển bởi đội ngũ kỹ sư Arduino.
Hình 3.3 Visual Studio với Visual Micro
Sử dụng các phần mềm như VS Code với các tiện ích mở rộng cho Arduino có thể gặp khó khăn trong quá trình cài đặt ban đầu, nhưng mang lại nhiều lợi ích đáng giá.
• Tùy chỉnh được định dạng code: nổi bật các từ khóa, đánh đấu khối code, tự động định dạng, font chữ…
• Tự động nhắc lệnh, gợi ý code, cảnh báo các lỗi cú pháp
• Dễ dàng tra cứu được mã nguồn các thư viện, các chương trình, hàm con…
• Các công cụ hỗ trợ nâng cao: đổi tên biến nhanh, quản lý file…
Hầu hết các phần mềm hiện có đều không hỗ trợ tốt việc giao tiếp với board Arduino, bao gồm gửi, nhận và biểu diễn dữ liệu Do đó, trong các bài học, chúng tôi sẽ chọn sử dụng Arduino IDE để lập trình vì nó có cài đặt đơn giản, tương thích tốt, được hỗ trợ trực tiếp từ nhà sản xuất và có hệ thống thư viện phong phú.