Tại sao tôi lại không upload được chương trình lên mạch Arduino của mình? - LẬP TRÌNH ARDUINO

Banner quảng cáo

12/9/17

Tại sao tôi lại không upload được chương trình lên mạch Arduino của mình?

Chương trình của bạn phải trải qua rất nhiều phần để được "vận chuyển" và "thi hành" trên một mạch Arduino! Và vì thế, nào một trong những phần ấy có vấn đề thì bạn sẽ không thể nào upload được chương trình lên Arduino. Những phần đó bao gồm:

  1. Chương trình Arduino IDE.
  2. Driver cho mạch Arduino.
  3. Sự cho phép truy cập đến cổng Serial
  4. Các kết nối vật lý tới mạch Arduino
  5. Firmware đối với các mạch Arduino Uno và Arduino Mega 2560
  6. Bootloader đối với con chip được gắn trên Arduino
  7. Thiết lập cầu chì của vi điều khiển
  8. ... 
Sau đây là một số hướng dẫn cụ thể cho từng vấn đề được nêu ra
  1. Chương trình Arduino IDE

    • Nếu bạn chưa có chương trình Arduino IDE xin hãy vào đây: http://arduino.vn/bai-viet/68-cai-da...
    • Hãy chắc chắn rằng bạn đã chọn đúng mạch bạn cần lập trình trong mục Tools > Board, nếu bạn đang có một mạch Arduino Uno R3 thì hãy chọn nó. Ngoài ra, với một số mạch Arduino Duemilanove đời mới đi kèm với chip ATmega328 (loại cụ thì đi với ATmega168, để kiểm tra hãy xem mấy dòng chữ nhỏ trên con chip). Để xem thêm thông tin, xin hãy click vào xem đường dẫn trên.
    • Sau đó kiểm tra phần tử được chọn trong thẻ Tools > Serial Port có phải là cổng Serial được kết nối với Arduino hay không (nếu bạn vừa chưa thấy xin hãy gỡ kết nối USB từ máy tính và tắt Arduino IDE, sau đó gắn USB lại và bật Arduino).
      • Trên máy MAC, một cổng serial của Arduino thường có dạng là /dev/tty.usbmodem621 (trên các phiên bản Arduino Uno và Arduino Mega 2560) hoặc có dạng /dev/tty.usbserial-A02f8e (trên các mạch phiên bản cũ hoặc các bản FDTI-based board).
      • Trên Linux, nó lại có dạng /dev/ttyACM0 hoặc tương tự (trên các phiên bản Arduino Uno và Arduino Mega 2560) hoặc cũng có thể là /dev/ttyUSB0(hoặc tương tự) trên các mạch cũ hơn.
      • Còn trên Windows, có lại có tiền tố là COM, nhưng bạn nên vào Device Manager của Windows để kiểm tra cho lựa chọn của mình (gợi ý: bạn hãy đảm bảo chưa gắn Arduino vào máy tính, sau đó vô Device Manager, rồi gắn Arduino vào, xem cổng COM nào hiện ra, nếu không có cổng COM nào hiện ra, truy cập vào đây, còn nếu có cổng COM mới hiện ra thì đấy chính là cổng COM mà bạn cần phải chọn)
      • Nếu vẫn còn lỗi, xin bạn xem phần tiếp theo, đó là Drivers
  2. Driver

    • Driver là gì? Driver là một phương tiện phần mềm cung cấp cho bạn một phương thức để cho phần mềm của bạn (ví dụ Arduino IDE) kết nối với một mạch điện tử (ví dụ như Arduino Uno). Trong trường hợp của Arduino, driver sẽ tạo một cổng Serial ảo (hoặc là cổng COM ảo). Mạch Arduino Uno và Mega 2560 sử dụng bộ driver cơ bản (USB CDC) để xây dựng phương thức kết nối đến vi điều khiển dạng ATmega8U2 (ATmega168, ATmega328,...) trên mạch. Còn một số mạch khác thì sử dụng bộ driver FTDI để xây dựng phương thức kết nối đến vi điều khiển dạng FTDI trên mạch (nằm cứng lên luôn, không tháo rời được).
    • Cách tốt nhất để kiểm tra xem rằng bạn đã cài đặt driver cho bản mạch của mình hay chưa là kiểm tra mục Tools > Serial Port. Nếu trong danh sách hiện ra có cổng Serial của mạch Arduino bạn đang sử dụng thì bạn đã cài, nếu chưa thì hãy vào đây. Một lưu ý nhỏ, chẳng hạn bạn sử dụng một mạch Arduino Uno có cổng Serial tên là COM3, giờ gắn một cái Arduino Uno thứ hai vào thì cổng COM3 không phải là cổng Serial để kết nối tới mạch Arduino Uno thứ hai này, để khắc phục, bạn hãy cài đặt driver lại.
      • Nếu bạn gặp lỗi "The system cannot find the file specified" khi cài đặt driver cho Arduino Mega 2560 trên Windows XP, xin hãy thử cách này.
      • Trên Linux, mạch Arduino Uno và Arduino Mega 2560 được chọn mặc định là /dev/ttyACM0. Nhưng Linux lại không hỗ trợ thư viện RXTX chuẩn mà những mạch này sử dụng để giao tiếp với vi điều khiển. Vì vậy trong bản tải về dành cho Linux, Arduino đã thêm vào một thư viện RXTX một patch để tự động tìm kiếm những Serial port có dạng /dev/ttyACM* khác. Ngoài ra, còn có một gói dành cho Ubuntu (phiên bản 11.04) đã bao gồm patch đấy. Đôi khi, nếu bạn vẫn sử dụng gói RXTX từ bản distribution của bạn, thì bạn nên đổi /dev/ttyACM0 thành /dev/ttyUSB0 (đây chỉ là một ví dụ, bạn hãy chọn cái nào hiện ra trong Arduino IDE).
  3. Sự cho phép truy cập đến cổng Serial

    • Trên Windows, nếu bạn thấy chương trình Arduino IDE khởi động chậm, hoặc khi vào Tools > Serial Port thấy nó lâu hiện ra, bạn nên tắt các cổng Bluetooth serial hoặc bất cứ cổng Serial qua mạng nào hết. Vì khi khởi động chương trình Arduino IDE hoặc tìm các cổng Serial hợp lệ, Arduino IDE sẽ quét TẤT CẢ các cổng Serial có thể quét, nếu trong các cổng ấy có những cổng Bluetooth Serial hoặc Serial qua mạng, và chúng bị lỗi hoặc delay thì chương trình sẽ tốn nhiều thời gian để quét xong chúng => chương trình khởi động chậm.
    • Hãy đảm bảo rằng, bạn không đang chạy các chương trình cũng có dạng quét tất cả các cổng Serial, ví dụ như USB Cellular Wifi Dongle software (từ Sprint hoặc Verizon), các phần mềm quét các thiết bị cầm tay, Bluetooth-USB drivers (ví dụ BlueSoleil), virtual daemon tools, ...
    • Bạn hãy đảm rằng, không có phần mềm nào cài tường lửa để truy cập đến cổng Serial đó, ví dụ như ZoneAlarm
    • Bạn phải tắt các chương trình như Processing, PD, vvvv, ...nếu như các chương trình này đang đọc dữ liệu qua cổng Serial mà bạn đang chọn.
    • Trên Linux, bạn cần tạm chời chạy Arduino dưới quyền root để xem thử nó có giúp ích gì cho việc upload chương trình hay không.
  4. Các kết nối vật lý tới mạch Arduino

    • Điều đầu tiên mà bạn bắt buộc phải làm, đó là kiểm tra xem thử mạch Arduino đã được gắn điện (đèn màu xanh sáng).
    • Mạch Arduino Uno và Arduino Mega 2560 hay gặp vấn đề trong việc kết nối thông qua USB hub trên máy MAC. Nếu bạn kiểm tra không thấy cổng Serial mà mình hay sử dụng trong Tools > Serial Port thì xin hãy gỡ kết nối USB với USB hub sau đó gắn trực tiếp vào máy MAC sau đó khởi động lại Arduino IDE.
    • Ngắt kết nối của hai cổng digital 0 và 1 trong quá trình upload từ máy tính vào mạch Arduino, sau đó bạn có thể dùng chúng một cách bình thường.
    • Hãy thử upload chương trình mà không có bất cứ thiết bị, dây diện nào được nối tới Arduino (và dĩ nhiên là phải loại trừ dây USB smiley)
    • Thay đổi dây USB vì đôi lúc do nó quá dài hoặc không có cục lọc nhiễu nên bạn không thể upload được.
  5. Auto-reset

    • Auto-reset là một chức năng tự động của một số mạch của Arduino, chức năng này hỗ trợ việc tự động reset để lập trình vi điều khiển nằm trên mạch. Tuy nhiên, một số mạch lại không có chức năng này (để tiết kiệm diện tích và thể tích lắp đặt nên buộc phải đánh đổi một chức năng không quá quan trọng khi sản xuất một sản phẩm). Những mạch nào không có cổng USB (hoặc mini USB) và cực kì nhỏ thường không hỗ trợ chức năng Auto-reset
    • Nếu bạn có một mạch không có chức năng Auto-reset thì bạn cần reset mạch bằng tay trước khi bắt đầu quá trình upload. (Arduino Diecimila, Duemilanove, và Nano cũng như là LilyPad, Pro, và Pro Mini đều hỗ trợ chức năng này với 6 chân lập trình)
    • Tuy nhiên, hãy chú ý rằ[VP 1] Device is not responding correctlyng, một số mạch Arduino Diecimila bị lỗi trong qua trình cài bootloader và bắt buộc bạn phải nhấn nút reset bằng tay. Xem trả lời cụ thể cho câu hỏi này, tại đây.
    • Còn nếu bạn gặp lỗi này: [VP 1] Device is not responding correctly . Hãy thử reset lại board, upload lại.
  6. Bootloader đối với con chip được gắn trên Arduino

    • Hãy chắc chắn rằng bootloader đã được cài đặt. Để kiểm tra, bạn hãy nhấn nút reset và xem thử đèn số 13 (đèn LED được kết nối trực tiếp với chân số 13) có nhấp nháy hay không? Nếu không thì mạch của bạn chưa được cài bootloader.

1 nhận xét:

  1. Đây là những bài hướng dẫn cơ bản tốt nhất

    Trả lờiXóa

Post Bottom Ad

LIÊN HỆ VỚI LÝ ĐỂ ĐĂNG QUẢNG CÁO NHÉ