quocbao gửi vào
- 214791 lượt xem
1. Giới thiệu
Trong bài viết này, mình sẽ giới thiệu cho các bạn các rắc rối thường gặp khi làm việc với Arduino. Mặc dù tôi đã nghiên cứu Arduino được khá lâu nhưng thỉnh thoảng tôi cũng hay gặp phải chúng. Bài viết có thể sẽ được cập nhật dần để bao quát hết được các xu hướng mắc lỗi thường gặp cũng như những lỗi hay hiện tượng "từ trên trời rơi xuống" của người mới nghiên cứu Arduino.
2. Biên dịch gặp lỗi
Lập trình:
void setup() { char str[9] = "123456789"; start(); a = 6; } void loop() { }
Lỗi mắc phải:
sketch_jun24b:2: error: initializer-string for array of chars is too long
sketch_jun23a:3: error: 'start' was not declared in this scope
sketch_jun23a:4: error: 'a' was not declared in this scope
Ý nghĩa:
Cửa sổ soạn thảo sketch_jun23a, dòng 2, độ dài của chuối vượt quá độ dài khai báo
Cửa sổ soạn thảo sketch_jun23a, dòng 3, không tìm thấy đối tượng "start"
Cửa sổ soạn thảo sketch_jun23a, dòng 4, không tìm thấy đối tượng "a"
Khắc phục:
Khai báo kiểu dữ liệu cho biến "a" và định nghĩa hàm start(), chỉnh lại kích thước chuỗi str cho đúng.
int a; char str[10] = "123456789"; //xem phần "Chú ý" của string void setup() { start(); a = 6; } void loop() { } void start() { Serial.begin(9600); Serial.println("Hello Arduino"); }
3. Upload chương trình gặp lỗi
3.1 Lỗi Serial port "COM11" not found
Thông báo lỗi
Ý nghĩa:
Không tìm thấy mạch Arduino nào ở cổng Serial COM11.
Khắc phục:
Vào menu Tool -> Serial Port để chọn đúng cổng Serial. Cổng Serial đang dùng luôn được hiển thị ở góc dưới cùng bên phải như trên hình (COM11).
Nếu bạn đã vào menu Tool -> Serial Port rồi nhưng lại gặp cảnh như thế này ...
... thì có thể có bạn đã quên kết nối Arduino với máy tính hoặc dây cáp kết nối bị lỏng.
Một số trường hợp đang làm việc bình thường thì bỗng dưng bị lỗi mất kết nối như trên thì bạn hãy thử rút dâu USB ra, đợi vài giây rồi cắm lại. Nếu không được thì rút dây và tắt hết các cửa sổ lập trình Arduino đi sau đó bật lại như bình thường.
Nếu cách trên không hiệu quả, hãy kết nối Arduino sang cổng USB khác hoặc khởi động lại máy.
Lưu ý rằng Arduino IDE chạy trên nền tảng Java, do đó hãy đảm bảo rằng máy tính của bạn đang có phiên bản Java Runtime Environment (JRE) mới nhất. Download bản JRE 32 bit tại đây hoặc JRE 64 bit tại đây.
3.2 Lỗi avrdude: stk500_getsync(): not in sync: resp=0x00
Thông báo lỗi
Ý nghĩa
Có rất nhiều tình huống làm phát sinh lỗi này, sau đây là những lí do thường hay gặp:
- Chọn sai board Arduino khi upload chương trình.
- Chân RESET trên board Arduino bị nối xuống GND hay đang ở mức LOW.
Khắc phục
- Vào menu Tools -> Board để chọn lại đúng mạch Arduino đang sử dụng.
- Đặt lại chân RESET ở mức HIGH hoặc đơn giản là tháo các dây đang nối với chân này ra. Theo thiết kế mạch mặc định của Arduino thì chân RESET luôn được nối với Vcc (đặt ở mức HIGH).
3.3 Lỗi avrdude: stk500_getsync(): not in sync: resp=0x30
Ý nghĩa
Có rất nhiều tình huống làm phát sinh lỗi này, sau đây là những lí do thường hay gặp:
- Cổng Serial trên Arduino đang được sử dụng, không thể upload chương trình.
- Chưa cài đặt bootloader.
- Chưa cài đặt driver cho Arduino.
Khắc phục
- Tháo bất cứ dây nào đang cắm vào chân Digital 0 (chân RX) trên mạch Arduino của bạn.
- Cài đặt bootloader cho Arduino.
- Cài đặt driver cho Arduino.
4. Lỗi phần cứng
4.1 Đèn đóm trên Arduino tắt đột ngột
Lí do đầu tiên bạn nên nghĩ đến đó là lỏng cáp USB hay nguồn điện, việc này khá đơn giản.
Nếu đã kiểm tra hệ thống điện rồi mà mọi thứ vẫn như cũ thì chỉ có một khả năng là bạn đã làm chập mạch (short circuit) - để 2 cực âm/dương của nguồn điện chạm nhau.
Với Arduino UNO R3
Dòng board mạch này vốn dĩ được trang bị cầu chì tự phục hồi (PTC Resettable Fuses). Nếu cường độ dòng điện vượt quá 500mA, cầu chì sẽ tự ngắt. Sau một khoảng thời gian nào đó, cầu chì tự đóng và Arduino UNO R3 lại hoạt động bình thường. Tôi đã từng bị như vậy nhiều lần và mạch Arduino UNO R3 tới nay vẫn hoạt động tốt, do đó bạn không cần phải quá bận tâm.
Với Arduino Nano
Khác với Arduino UNO R3, dòng mạch này không được trang bị cầu chì tự phục hồi, do đó nó sẽ không thể tự cứu bản thân mình được. Tuy nhiên không phải là không thể cứu.
ở trường hợp này, Arduino UNO R3 đã bị cháy 1 con diode loại schotky là MBR0520LT1 0.5A 20V tại vị trí như hình vẽ ...
Công việc của bạn là dùng mỏ hàn tháo con diode này ra và và thay con khác vào là xong. Nếu không có linh kiện thay thế, bạn có thể hàn tắt 2 đầu mạch lại với nhau như hình dưới ...
Vâng, chỉ đơn giản thế thôi, hãy cắm điện trở lại và thưởng thức. Nhưng nếu bạn làm chập mạch nữa thì tôi không biết đâu đấy nhé ! Đây là một điểm yếu trog thiết kế của Arduino Nano khiến khá nhiều người than vãn.
4.2 Vi điều khiển trên board Arduino phát nhiệt mạnh
Rõ ràng đây là một điều không tốt tí nào vì hầu hết các trường hợp, con chip này hầu như sinh ra một lượng nhiệt thấp đến mức bạn khó lòng phát hiện ra bằng tay được. Thực sự thì rất khó biết được nguyên nhân gây ra hiện tượng này. Lời khuyên của mình là Lập tức ngắt nguồn điện và hỏi những người có kinh nghiệm về Arduino ngay khi có thể !
Mình đã từng bị hỏng 1 con ATmega328P-PU trên Arduino UNO R3 mà không biết tại sao, vì đang hoạt động bình thường thì bỗng nhiên nó phát nhiệt mạnh và hư luôn (không upload được chương trình lên nữa).
Một số ATmega328P-PU trên Arduino UNO R3 mặc dù có phát nhiệt nhưng lại hoạt động bình thường ???
Nếu bạn gặp phải hiện tượng này, bạn có thể tự chẩn bệnh theo những bước sau:
- Lập tức ngắt nguồn điện, tháo hết dây đang nối với mạch Arduino.
- Kết nối mạch Arduino với máy tính qua cổng USB và dùng tay kiểm tra xem vi điều khiển có phát nhiệt hay không:
- Nếu có, hãy thay thử thay thế vi điều khiển khác. Nếu hiện tượng trên vẫn còn chứng tỏ mạch Arduino của bạn đã có vấn đề. Hãy liên hệ nơi bán chúng để được hỗ trợ.
- Nếu không, hãy kiểm tra lại mạch điện, chú ý cường độ dòng điện vào/ra các chân trên Arduino. Thử upload một chương trình trống lên Arduino. Nếu bạn không thể upload được thì nhiều khả năng là vi điều khiển của bạn đã bị hỏng.