32 KiB
Hướng Dẫn Khắc Phục Sự Cố
Hướng dẫn này giúp bạn giải quyết các vấn đề phổ biến khi làm việc với chương trình học IoT cho Người Mới Bắt Đầu. Các sự cố được tổ chức theo danh mục để dễ dàng điều hướng.
Mục Lục
- Các Vấn Đề Cài Đặt
- Các Vấn Đề Phần Cứng
- Các Vấn Đề Kết Nối
- Các Vấn Đề Cảm Biến và Bộ Chấp Hành
- Các Vấn Đề Môi Trường Phát Triển
- Các Vấn Đề Hiệu Suất
- Các Thông Báo Lỗi Thường Gặp
- Nhận Trợ Giúp
Các Vấn Đề Cài Đặt
Cài Đặt Python
Vấn đề: Phiên bản Python quá cũ
Lỗi: Cần Python 3.6 trở lên
Giải pháp:
- Tải Python 3 mới nhất từ python.org
- Khi cài đặt trên Windows, chọn "Add Python to PATH"
- Xác minh cài đặt:
python3 --version
Vấn đề: Nhiều phiên bản Python gây xung đột
Triệu chứng: Chạy sai phiên bản Python, các gói cài đặt sai vị trí
Giải pháp:
- Windows: Dùng
py -3thay vìpythonđể gọi Python 3 một cách rõ ràng - macOS/Linux: Dùng
python3thay vìpython - Luôn tạo và sử dụng môi trường ảo cho các dự án
Vấn đề: Không tìm thấy lệnh pip
Lỗi: 'pip' không được nhận dạng là lệnh nội bộ hoặc bên ngoài
Giải pháp:
- Thử dùng
pip3thay vìpip - Hoặc dùng
python -m piphoặcpython3 -m pip - Đảm bảo Python đã được thêm vào PATH (cài lại Python và chọn tùy chọn này)
VS Code và Các Tiện Ích Mở Rộng
Vấn đề: Tiện ích Pylance không hoạt động
Triệu chứng: Không có IntelliSense Python, hoàn thành mã hoặc kiểm tra kiểu
Giải pháp:
- Mở Command Palette VS Code (
Ctrl+Shift+PhoặcCmd+Shift+P) - Chạy "Python: Select Interpreter"
- Chọn thông dịch Python đúng (môi trường ảo nếu dùng)
- Tải lại cửa sổ VS Code
Vấn đề: VS Code không nhận diện môi trường ảo
Triệu chứng: Chọn sai thông dịch Python
Giải pháp:
- Đảm bảo bạn đã kích hoạt môi trường ảo trong terminal
- Mở Command Palette và chạy "Python: Select Interpreter"
- Chọn thông dịch từ thư mục
.venv - Kiểm tra thanh trạng thái (góc dưới bên trái) hiển thị phiên bản Python đúng
PlatformIO (Wio Terminal)
Vấn đề: Cài đặt PlatformIO thất bại
Lỗi: Lỗi khác nhau trong quá trình cài PlatformIO
Giải pháp:
- Đảm bảo VS Code được cập nhật
- Cài tiện ích C/C++ trước
- Khởi động lại VS Code sau khi cài PlatformIO
- Kiểm tra kết nối Internet (PlatformIO tải các file lớn)
Vấn đề: Board không được PlatformIO nhận dạng
Triệu chứng: Không thể tải mã lên Wio Terminal
Giải pháp:
- Thử cáp USB khác (một số cáp chỉ sạc)
- Kiểm tra Device Manager (Windows) hoặc
ls /dev/tty*(macOS/Linux) - Cài hoặc cập nhật driver USB
- Thử cổng USB khác
- Trượt công tắc nguồn trên Wio Terminal hai lần nhanh để vào chế độ bootloader
Vấn đề: Lỗi biên dịch trong PlatformIO
Lỗi: fatal error: Arduino.h: No such file or directory
Giải pháp:
- Xóa thư mục
.piotrong dự án - Chạy "PlatformIO: Rebuild" trong Command Palette
- Đảm bảo
platformio.inicó cấu hình board đúng:[env:seeed_wio_terminal] platform = atmelsam board = seeed_wio_terminal framework = arduino
Thư Viện Grove
Vấn đề: Thư viện Grove không import được trên Raspberry Pi
Lỗi: ModuleNotFoundError: No module named 'grove'
Giải pháp:
- Cài lại thư viện Grove:
cd ~ git clone https://github.com/Seeed-Studio/grove.py cd grove.py sudo pip3 install . - Nếu dùng môi trường ảo, bạn có thể cần cài đặt toàn cục hoặc sao chép thư viện
- Kiểm tra I2C đã bật:
sudo raspi-config nonint do_i2c 0
Vấn đề: Cảm biến Grove không được phát hiện
Lỗi: IOError: [Errno 121] Remote I/O error
Giải pháp:
- Kiểm tra kết nối vật lý (đảm bảo cáp Grove được cắm chặt)
- Xác nhận cảm biến cắm đúng cổng (analog, digital, I2C, UART)
- Chạy
i2cdetect -y 1để xem thiết bị có xuất hiện trên bus I2C không - Thử cáp Grove khác
- Đảm bảo Grove Base Hat đã được gắn đúng chân GPIO của Raspberry Pi
Các Vấn Đề Phần Cứng
Raspberry Pi
Vấn đề: Raspberry Pi không khởi động
Triệu chứng: Không hiển thị, đèn LED không hoạt động hoặc màn hình vân cầu vồng
Giải pháp:
- Kiểm tra nguồn: Dùng bộ nguồn USB-C 5V 3A chính hãng cho Pi 4
- Vấn đề thẻ SD:
- Định dạng lại thẻ SD và cài lại Raspberry Pi OS
- Thử thẻ SD khác (dùng thương hiệu khuyến nghị)
- Đảm bảo thẻ SD được cắm đúng cách
- Kiểm tra kết nối HDMI: Thử cả hai cổng HDMI trên Pi 4, dùng cổng HDMI gần nguồn hơn
Vấn đề: Không thể SSH vào Raspberry Pi
Triệu chứng: Kết nối bị từ chối hoặc hết thời gian chờ
Giải pháp:
- Bật SSH:
- Khi ghi hình thẻ SD bằng Raspberry Pi Imager, cấu hình SSH trong tùy chọn nâng cao
- Hoặc tạo file rỗng tên
ssh(không có phần mở rộng) trong phân vùng boot
- Tìm địa chỉ IP của Pi:
- Kiểm tra thiết bị kết nối trên router
- Dùng
ping raspberrypi.local(nếu hỗ trợ mDNS) - Dùng công cụ quét mạng như
nmaphoặc Angry IP Scanner
- Kiểm tra mạng:
- Đảm bảo Pi và máy tính cùng mạng
- Thử kết nối bằng cáp ethernet thay vì WiFi
- Xác minh tên đăng nhập/mật khẩu (mặc định: user
pi, mật khẩuraspberry)
Vấn đề: Grove Base Hat không nhận diện
Triệu chứng: Cảm biến không hoạt động, lỗi I2C
Giải pháp:
- Đảm bảo Base Hat được cắm chắc chắn trên tất cả chân GPIO
- Kiểm tra xem có chân GPIO nào bị cong trên Pi hoặc Base Hat không
- Bật giao diện I2C:
sudo raspi-config nonint do_i2c 0 sudo reboot - Kiểm tra I2C hoạt động:
i2cdetect -y 1
Vấn đề: Raspberry Pi chạy chậm
Triệu chứng: Giao diện bị lag, phản hồi chậm
Giải pháp:
- Kiểm tra tốc độ thẻ SD (dùng Class 10 trở lên, hoặc SSD qua USB)
- Giải phóng dung lượng đĩa: kiểm tra bằng
df -h, xóa file không cần thiết - Giảm bộ nhớ GPU trong
raspi-confignếu không dùng camera/màn hình nhiều - Đóng các ứng dụng không cần thiết
- Xem xét nâng cấp lên Pi 4 với nhiều RAM hơn nếu đang dùng Pi 3 hoặc cũ hơn
Wio Terminal
Vấn đề: Màn hình Wio Terminal không hiển thị
Triệu chứng: Không có hình sau khi tải mã
Giải pháp:
- Kiểm tra xem mã có khởi tạo màn hình (thư viện TFT_eSPI) không
- Cập nhật firmware Wio Terminal từ Seeed Wiki
- Thêm đoạn mã khởi tạo màn hình:
#include <TFT_eSPI.h> TFT_eSPI tft; tft.begin(); tft.fillScreen(TFT_BLACK); - Thử tải ví dụ mẫu từ PlatformIO để kiểm tra phần cứng
Vấn đề: WiFi trên Wio Terminal không hoạt động
Triệu chứng: Không thể kết nối WiFi, lỗi mạng
Giải pháp:
- Cập nhật firmware WiFi: Làm theo hướng dẫn cập nhật firmware WiFi Wio Terminal
- Kiểm tra thông tin WiFi: Đảm bảo SSID và mật khẩu đúng
- Băng tần WiFi: Wio Terminal chỉ hỗ trợ WiFi 2.4GHz (không hỗ trợ 5GHz)
- Cường độ tín hiệu: Di chuyển gần router hơn
- Cài đặt router: Một số mạng doanh nghiệp/WPA-Enterprise có thể không hoạt động
Vấn đề: Wio Terminal không được máy tính nhận dạng
Triệu chứng: Thiết bị USB không hiện trong máy tính
Giải pháp:
- Thử cáp USB khác: Dùng cáp truyền dữ liệu, không dùng cáp chỉ sạc
- Vào chế độ bootloader: Trượt công tắc nguồn xuống hai lần nhanh
- Đèn LED xanh nhấp nháy, thiết bị hiện là "Arduino" trong Device Manager
- Cài driver (Windows):
- Tải và cài đặt driver USB Seeed
- Thử cổng USB khác: Tránh dùng hub USB, kết nối trực tiếp
- Cập nhật driver USB hệ thống
Vấn đề: Cảm biến không hoạt động trên Wio Terminal
Triệu chứng: Cảm biến Grove không đọc dữ liệu
Giải pháp:
- Kiểm tra kết nối cáp Grove
- Xác nhận dùng đúng cổng Grove (bên trái hoặc bên phải)
- Bao gồm thư viện phù hợp cho cảm biến
- Kiểm tra yêu cầu nguồn của cảm biến
- Thử cảm biến với mã ví dụ từ thư viện
Thiết Bị Ảo (CounterFit)
Vấn đề: Ứng dụng CounterFit không khởi động
Lỗi: Nhiều lỗi Python khi khởi chạy CounterFit
Giải pháp:
- Đảm bảo môi trường ảo đã được kích hoạt
- Cài đặt/lại CounterFit:
pip install CounterFit - Kiểm tra cổng 5000 chưa được sử dụng:
- Windows:
netstat -ano | findstr :5000 - macOS/Linux:
lsof -i :5000
- Windows:
- Dừng tiến trình đang dùng cổng 5000 hoặc đổi sang cổng khác:
counterfit --port 5001
Vấn đề: Không thể kết nối đến CounterFit từ mã
Lỗi: Kết nối bị từ chối hoặc hết thời gian chờ
Giải pháp:
- Kiểm tra CounterFit đang chạy: Mở trình duyệt tới
http://127.0.0.1:5000 - Kiểm tra URL kết nối trong mã có khớp với địa chỉ CounterFit không
- Đảm bảo tường lửa không chặn kết nối
- Thử khởi động lại cả ứng dụng CounterFit và mã của bạn
Vấn đề: Cảm biến không hiển thị trong CounterFit
Triệu chứng: Cảm biến đã tạo không xuất hiện trên giao diện CounterFit
Giải pháp:
- Tạo cảm biến trong giao diện CounterFit trước khi chạy mã
- Tải lại trang trình duyệt
- Kiểm tra loại cảm biến khớp với loại mã mong đợi
- Xóa bộ nhớ cache trình duyệt
Các Vấn Đề Kết Nối
Kết Nối WiFi
Vấn đề: Thiết bị không thể kết nối WiFi
Triệu chứng: Hết thời gian chờ kết nối, xác thực thất bại
Giải pháp:
- Kiểm tra SSID và mật khẩu: Đảm bảo thông tin đúng
- Băng tần WiFi: Phần lớn thiết bị IoT chỉ hỗ trợ 2.4GHz (không hỗ trợ 5GHz)
- Cài đặt router:
- Tắt cách ly điểm truy cập nếu bật
- Dùng bảo mật WPA2-PSK (tránh WPA3, WEP hoặc mạng mở)
- Đảm bảo DHCP được bật
- Mạng ẩn: Nếu SSID ẩn, có thể bạn cần cấu hình rõ ràng
- Cường độ tín hiệu: Để thiết bị gần router hơn
- Nhiễu: Các thiết bị khác, lò vi sóng, tường có thể gây nhiễu
Vấn đề: Kết nối WiFi thường xuyên bị ngắt
Triệu chứng: Kết nối không ổn định
Giải pháp:
- Kiểm tra độ ổn định router, cân nhắc khởi động lại
- Cập nhật firmware thiết bị
- Dùng IP tĩnh thay vì DHCP
- Giảm khoảng cách đến router hoặc dùng bộ mở rộng WiFi
- Kiểm tra nhiễu từ thiết bị khác
- Đảm bảo nguồn cấp đủ (đặc biệt với Raspberry Pi)
Dịch Vụ Đám Mây
Vấn đề: Không thể kết nối Azure IoT Hub
Lỗi: Xác thực thất bại, kết nối bị từ chối
Giải pháp:
- Xác minh thông tin:
- Kiểm tra chuỗi kết nối đúng
- Đảm bảo không có khoảng trắng hoặc ngắt dòng thừa trong chuỗi kết nối
- Kiểm tra đăng ký thiết bị: Thiết bị phải được đăng ký trên IoT Hub
- Tường lửa/proxy: Cho phép MQTT (cổng 8883) hoặc HTTPS (cổng 443) outbound
- Vùng IoT Hub: Đảm bảo IoT Hub đang chạy và không khác vùng gây trễ
- Giới hạn hạn ngạch: Kiểm tra xem có vượt giới hạn tầng miễn phí không
- Kiểm tra kết nối:
az iot hub device-identity show-connection-string --hub-name YourIoTHub --device-id YourDevice
Vấn đề: Azure Functions không kích hoạt
Triệu chứng: Tin nhắn gửi đi nhưng hàm không chạy
Giải pháp:
- Kiểm tra Function App đang chạy (không bị dừng)
- Xác minh chuỗi kết nối trong cài đặt Function App
- Kiểm tra nhật ký hàm trong Azure Portal
- Đảm bảo điểm cuối tương thích Event Hub được cấu hình đúng
- Kiểm tra định dạng tin nhắn phù hợp với hàm
- Kiểm tra gói dịch vụ Function App (tiêu thụ hay chuyên dụng)
MQTT
Vấn đề: Kết nối MQTT thất bại
Lỗi: Kết nối bị từ chối, xác thực không thành công
Giải pháp:
- Địa chỉ broker: Kiểm tra URL/IP broker có đúng không
- Cổng: Kiểm tra số cổng (1883 cho không mã hóa, 8883 cho TLS)
- Xác thực: Kiểm tra tên đăng nhập/mật khẩu nếu cần
- TLS/SSL: Đảm bảo chứng chỉ hợp lệ và được tin cậy
- Firewall: Kiểm tra cổng không bị chặn
- Kiểm tra bằng client MQTT: Dùng MQTT Explorer hoặc mosquitto_pub/sub để test
Vấn đề: Tin nhắn MQTT không nhận được
Triệu chứng: Tin nhắn đã được publish nhưng người đăng ký không nhận được
Giải pháp:
- Tên chủ đề: Kiểm tra chủ đề của người đăng ký trùng chính xác với người publish
- Mức QoS: Thử QoS 1 hoặc 2 thay vì 0
- Ký tự đại diện: Kiểm tra sử dụng ký tự đại diện đúng (
+cho một cấp,#cho nhiều cấp) - Tin nhắn giữ lại: Publisher có thể đặt cờ retain để giữ tin nhắn cuối cùng
- Thời gian kết nối: Đảm bảo người đăng ký kết nối trước khi tin nhắn được publish
Vấn đề với cảm biến và bộ chấp hành
Cảm biến Grove
Vấn đề: Cảm biến trả về giá trị sai
Triệu chứng: Đọc được giá trị 0, -1 hoặc giá trị vô nghĩa
Giải pháp:
- Kiểm tra kết nối: Đảm bảo cảm biến được kết nối đúng cách
- Cổng đúng: Kiểm tra cảm biến cắm đúng loại cổng:
- Cảm biến tương tự → cổng Analog (A0, A2, A4)
- Cảm biến số → cổng Digital (D5, D16, D18, v.v.)
- Cảm biến I2C → cổng I2C
- Hiệu chỉnh: Một số cảm biến cần hiệu chỉnh (độ ẩm đất, ánh sáng)
- Tắt nguồn khởi động lại: Ngắt kết nối rồi kết nối lại cảm biến
- Hồ sơ cảm biến: Kiểm tra thông số kỹ thuật và yêu cầu của cảm biến
Vấn đề: Cảm biến độ ẩm đất điện dung luôn báo ẩm
Triệu chứng: Cảm biến đo độ ẩm cao ngay cả khi đất khô
Giải pháp:
- Cần hiệu chỉnh: Cảm biến đất cần hiệu chỉnh:
- Đọc giá trị trong không khí (mức khô)
- Đọc giá trị trong nước (mức ướt)
- Lập bản đồ các giá trị giữa hai mức này
- Kiểm tra lớp phủ cảm biến: Cảm biến có thể bị hỏng lớp phủ nếu bị trầy xước
- Vị trí đặt: Đảm bảo cảm biến được cắm hoàn toàn vào đất
Vấn đề: Đọc sai cảm biến nhiệt độ/độ ẩm
Triệu chứng: DHT11/DHT22 hiển thị nhiệt độ hoặc độ ẩm sai
Giải pháp:
- Vị trí cảm biến: Tránh ánh nắng trực tiếp, nguồn nhiệt hoặc luồng khí
- Thời gian khởi động: Cho cảm biến 2 giây sau khi bật nguồn trước khi đọc
- Tần suất đọc: Cảm biến DHT cần thời gian giữa các lần đọc (ít nhất 2 giây)
- Kiểm tra ngưng tụ: Có thể ảnh hưởng đến đọc giá trị
- Chất lượng cảm biến: DHT11 kém chính xác hơn DHT22
Camera
Vấn đề: Camera không được phát hiện trên Raspberry Pi
Lỗi: mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera'
Giải pháp:
- Bật giao diện camera:
Vào Interface Options → Camera → Enablesudo raspi-config - Kiểm tra cáp ruy băng: Đảm bảo cáp camera được cắm đúng
- Mặt xanh hướng về cổng USB trên Pi Zero
- Mặt xanh hướng ra khỏi cổng USB trên Pi 4
- Cập nhật firmware:
sudo apt update sudo apt full-upgrade sudo reboot - Test camera:
raspistill -o test.jpg
Vấn đề: Hình ảnh camera chất lượng kém
Triệu chứng: Hình mờ, tối hoặc màu nhạt
Giải pháp:
- Lấy nét: Bỏ lớp bảo vệ trên ống kính, điều chỉnh nét nếu có thể
- Ánh sáng: Đảm bảo đủ ánh sáng
- Cài đặt camera: Điều chỉnh phơi sáng, ISO, cân bằng trắng trong code
- Ổn định: Giữ camera cố định, dùng giá ba chân nếu cần
- Độ phân giải: Không vượt quá độ phân giải tối đa của camera
Microphone và Loa
Vấn đề: Không có âm thanh vào/ra
Triệu chứng: Micro không ghi âm, loa không phát âm
Giải pháp:
- Kiểm tra kết nối: Xác nhận thiết bị âm thanh được kết nối đúng
- Kiểm tra phần cứng:
- Loa:
speaker-test -t wav -c 2 - Microphone:
arecord -lđể liệt kê,arecord test.wavđể ghi âm
- Loa:
- Cài đặt âm lượng: Kiểm tra và điều chỉnh volume:
alsamixer - Chọn thiết bị âm thanh: Chỉ định đúng thiết bị trong code
- Vấn đề driver: Cập nhật ALSA hoặc cài lại driver âm thanh
Vấn đề: ReSpeaker hat không hoạt động
Triệu chứng: Thiết bị âm thanh không được nhận
Giải pháp:
- Cài driver:
git clone https://github.com/HinTak/seeed-voicecard cd seeed-voicecard sudo ./install.sh sudo reboot - Kiểm tra cài đặt:
arecord -lphải liệt kê ReSpeaker - Cập nhật firmware: Một số phiên bản Pi OS cần cập nhật driver
- Kiểm tra kết nối: Đảm bảo hat được cắm đúng vào chân GPIO
Vấn đề môi trường phát triển
VS Code
Vấn đề: Terminal không tự động kích hoạt môi trường ảo
Triệu chứng: Terminal mở ra nhưng không kích hoạt venv
Giải pháp:
- Chọn Python interpreter: Command Palette → "Python: Select Interpreter" → Chọn venv
- Khởi động lại VS Code sau khi chọn interpreter
- Kiểm tra cài đặt: Trong
settings.json, thêm:"python.terminal.activateEnvironment": true
Vấn đề: Code không chạy trên thiết bị
Triệu chứng: Code chạy nhưng thiết bị không phản hồi
Giải pháp:
- Đảm bảo code đã lưu (kiểm tra dấu chấm trên tab file)
- Kiểm tra Python đang chạy:
which pythonhoặcwhere python - Với Wio Terminal: Đảm bảo code được tải lên qua PlatformIO (nhấn nút upload)
- Với Raspberry Pi: SSH vào Pi và chạy code ở đó
- Kiểm tra cửa sổ output xem có lỗi không
Vấn đề: IntelliSense không hiện hàm thư viện
Triệu chứng: Không có autocomplete cho module import
Giải pháp:
- Đảm bảo thư viện đã được cài trong môi trường hiện tại
- Tải lại cửa sổ VS Code
- Kiểm tra Python interpreter đúng
- Cài stubs kiểu nếu có:
pip install types-<library-name>
Môi trường ảo Python
Vấn đề: Không thể tạo môi trường ảo
Lỗi: The virtual environment was not created successfully
Giải pháp:
- Cài module venv:
- Ubuntu/Debian:
sudo apt install python3-venv - macOS: Đã bao gồm sẵn trong Python
- Windows: Cài lại Python với đủ thành phần
- Ubuntu/Debian:
- Kiểm tra cài đặt Python: Đảm bảo Python đã cài đúng
- Dùng đường dẫn đầy đủ: Thử
python3 -m venv .venvvới lệnh python3 rõ ràng
Vấn đề: Gói cài sai vị trí
Triệu chứng: Lỗi import sau khi cài gói
Giải pháp:
- Đảm bảo venv đang kích hoạt: Dấu nhắc lệnh có
(.venv) - Kiểm tra vị trí pip:
which pipphải trỏ tới.venv/bin/pip - Cài lại trong venv: Kích hoạt venv rồi
pip install <package> - Không dùng sudo với pip trong môi trường ảo
Vấn đề: Môi trường ảo không di động
Triệu chứng: Venv không chạy sau khi di chuyển hoặc trên máy khác
Giải pháp:
- Không di chuyển venv: Xóa và tạo lại nơi mới
- Dùng requirements.txt:
pip freeze > requirements.txt pip install -r requirements.txt - Tạo lại venv:
python3 -m venv .venv source .venv/bin/activate # hoặc activate.bat trên Windows pip install -r requirements.txt
Phụ thuộc
Vấn đề: Cài gói thất bại
Lỗi: Các lỗi pip khác nhau khi cài đặt
Giải pháp:
- Cập nhật pip:
pip install --upgrade pip - Cài công cụ build:
- Ubuntu/Debian:
sudo apt install build-essential python3-dev - macOS:
xcode-select --install - Windows: Cài Visual Studio Build Tools
- Ubuntu/Debian:
- Kiểm tra kết nối internet
- Thử chỉ số gói khác:
pip install --index-url https://pypi.org/simple/ <package> - Cài phiên bản cụ thể:
pip install <package>==<version>
Vấn đề: Xung đột phụ thuộc
Lỗi: ERROR: pip's dependency resolver does not currently take into account all the packages that are installed
Giải pháp:
- Dùng môi trường ảo mới cho mỗi dự án
- Cập nhật gói:
pip install --upgrade <package> - Kiểm tra yêu cầu: Dùng
pip checktìm xung đột - Cài phiên bản tương thích: Chỉ định phạm vi phiên bản trong requirements.txt
Vấn đề hiệu năng
Vấn đề: Code chạy chậm
Triệu chứng: Trễ, timeout, không phản hồi
Giải pháp:
- Giảm tần suất đọc cảm biến: Không đọc quá thường xuyên
- Tối ưu vòng lặp: Tránh busy-waiting, dùng sleep() hoặc delay
- Vấn đề bộ nhớ:
- Đóng ứng dụng không cần thiết
- Giải phóng dung lượng lưu trữ
- Giám sát với
tophoặchtoptrên Pi
- Tốc độ thẻ SD: Dùng thẻ SD hoặc SSD nhanh hơn cho Raspberry Pi
- Trễ mạng: Dùng thao tác async cho các cuộc gọi mạng
Vấn đề: Lỗi hết bộ nhớ
Lỗi: MemoryError hoặc hệ thống bị treo
Giải pháp:
- Với Raspberry Pi:
- Đóng ứng dụng không cần thiết
- Tăng không gian swap
- Dùng OS nhẹ hơn (phiên bản Lite)
- Nâng cấp RAM (Pi 4 có các tùy chọn 2/4/8GB)
- Với Wio Terminal:
- Giảm dung lượng bộ đệm
- Dùng hình ảnh kích thước nhỏ hơn
- Tối ưu chuỗi ký tự
- Kiểm tra rò rỉ bộ nhớ (bộ nhớ không được giải phóng)
Vấn đề: Mất dữ liệu hoặc hỏng
Triệu chứng: Tin nhắn mất, tập tin hỏng
Giải pháp:
- Vấn đề thẻ SD:
- Dùng thẻ SD chất lượng (tránh thẻ rẻ/nhái)
- Sao lưu thường xuyên
- Tắt nguồn đúng cách (không rút điện đột ngột)
- Tràn bộ đệm: Tăng dung lượng bộ đệm trong code
- Độ tin cậy mạng: Thêm logic thử lại và xử lý lỗi
- Chất lượng dịch vụ: Dùng MQTT QoS 1 hoặc 2 cho các tin nhắn quan trọng
Các thông báo lỗi phổ biến
ModuleNotFoundError: No module named 'X'
Nguyên nhân: Gói chưa được cài hoặc môi trường ảo chưa được kích hoạt
Giải pháp:
pip install X
Đảm bảo đã kích hoạt môi trường ảo trước.
Permission denied trên Linux/macOS
Nguyên nhân: Cần quyền nâng cao hoặc lỗi quyền truy cập file
Giải pháp:
- Với thao tác hệ thống: Dùng
sudo - Với pip: KHÔNG dùng sudo với venv, kích hoạt venv trước
- Với cổng serial: Thêm user vào nhóm dialout:
sudo usermod -a -G dialout $USER, sau đó đăng xuất/đăng nhập lại
OSError: [Errno 98] Address already in use
Nguyên nhân: Cổng đã được sử dụng bởi tiến trình khác
Giải pháp:
- Tìm tiến trình đang dùng cổng:
lsof -i :<port>hoặcnetstat -ano | findstr :<port> - Dừng tiến trình hoặc dùng cổng khác trong code
SSL: CERTIFICATE_VERIFY_FAILED
Nguyên nhân: Xác thực chứng chỉ SSL thất bại
Giải pháp:
- Cập nhật chứng chỉ:
pip install --upgrade certifi - Kiểm tra giờ hệ thống chính xác:
date - Chỉ dùng cho phát triển (không dùng trong sản xuất): Tắt xác thực trong code
IndentationError: unexpected indent
Nguyên nhân: Lỗi thụt lề Python (hòa lẫn tab và space)
Giải pháp:
- Dùng thụt lề nhất quán (4 space theo chuẩn Python)
- Cấu hình trình soạn thảo dùng space thay tab
- VS Code: Đặt
"editor.insertSpaces": truevà"editor.tabSize": 4
UnicodeDecodeError hoặc UnicodeEncodeError
Nguyên nhân: Lỗi mã hóa ký tự
Giải pháp:
# Khi đọc tập tin
with open('file.txt', 'r', encoding='utf-8') as f:
content = f.read()
# Khi ghi tập tin
with open('file.txt', 'w', encoding='utf-8') as f:
f.write(content)
Nhận trợ giúp
Nếu bạn đã thử các bước khắc phục trên mà vẫn có vấn đề:
1. Kiểm tra tài nguyên sẵn có
- Tài liệu: Đọc README và hướng dẫn bài học
- Hướng dẫn phần cứng: Xem hardware.md cho thông tin phần cứng cụ thể
- Wiki Seeed Studio: Seeed Studio Wiki cho các linh kiện Grove
2. Tìm kiếm các vấn đề tương tự
- GitHub Issues: Tìm kiếm các issue sẵn có
- Stack Overflow: Tìm kiếm theo thông báo lỗi
- Forum thiết bị: Tham khảo forum Raspberry Pi hoặc Arduino
3. Tạo issue GitHub
Nếu không tìm được giải pháp:
- Truy cập GitHub Issues
- Nhấn "New Issue"
- Cung cấp:
- Mô tả rõ ràng vấn đề
- Các bước để tái hiện vấn đề
- Thông báo lỗi (toàn bộ)
- Phiên bản phần cứng/phần mềm
- Những gì bạn đã thử
- Ảnh chụp màn hình nếu có
4. Tham gia cộng đồng
- Discord: Microsoft Foundry Discord
- Microsoft Learn: Microsoft Learn IoT
5. Cung cấp báo cáo lỗi tốt
Một báo cáo lỗi tốt bao gồm:
- Môi trường: Hệ điều hành, phiên bản Python, phần cứng sử dụng
- Các bước tái hiện: Các bước chính xác gây ra sự cố
- Hành vi mong đợi: Điều gì nên xảy ra
- Hành vi thực tế: Điều gì thực sự xảy ra
- Thông báo lỗi: Toàn bộ văn bản lỗi, không dùng ảnh chụp màn hình
- Mã nguồn: Ví dụ mã tối thiểu tái hiện được sự cố
Mẹo phòng tránh
Thực hành tốt chung
- Luôn sao lưu: Sao lưu thường xuyên các thẻ SD/mã code hoạt động
- Ghi chú thay đổi: Ghi lại những gì hoạt động trong phần bình luận
- Kiểm soát phiên bản: Sử dụng git để theo dõi thay đổi mã
- Kiểm tra dần: Kiểm tra các thay đổi nhỏ trước khi kết hợp
- Đọc kỹ lỗi: Chúng thường chỉ rõ vấn đề chính xác
- Cập nhật thường xuyên: Giữ phần mềm/phần cứng luôn mới
- Dùng linh kiện chất lượng: Tránh cáp/nguồn rẻ tiền
- Nguồn điện ổn định: Dùng nguồn phù hợp (đặc biệt với Pi)
Quy trình phát triển
- Bắt đầu đơn giản: Dùng mã ví dụ có sẵn và hoạt động
- Thay đổi từng bước: Dễ tìm lỗi hơn
- Kiểm tra thường xuyên: Phát hiện lỗi sớm
- Giữ gọn gàng: Tổ chức file và mã nguồn có logic
- Bình luận mã: Tương lai bạn sẽ cảm ơn điều này
Hướng dẫn xử lý sự cố này được duy trì bởi cộng đồng. Nếu bạn tìm ra giải pháp cho vấn đề không có trong danh sách, vui lòng đóng góp để giúp đỡ người khác!
Tuyên bố từ chối trách nhiệm:
Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI Co-op Translator. Mặc dù chúng tôi nỗ lực đảm bảo độ chính xác, vui lòng lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính xác nhất. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp do con người thực hiện. Chúng tôi không chịu trách nhiệm về bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này.