You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
752 lines
52 KiB
752 lines
52 KiB
# คู่มือแก้ไขปัญหา
|
|
|
|
คู่มือนี้ช่วยแก้ไขปัญหาทั่วไปเมื่อทำงานกับหลักสูตร IoT for Beginners ปัญหาต่างๆ ถูกจัดหมวดหมู่เพื่อความสะดวกในการนำทาง
|
|
|
|
## สารบัญ
|
|
|
|
- [ปัญหาเกี่ยวกับการติดตั้ง](../..)
|
|
- [การติดตั้ง Python](../..)
|
|
- [VS Code และส่วนขยาย](../..)
|
|
- [PlatformIO (Wio Terminal)](../..)
|
|
- [ไลบรารี Grove](../..)
|
|
- [ปัญหาฮาร์ดแวร์](../..)
|
|
- [Raspberry Pi](../..)
|
|
- [Wio Terminal](../..)
|
|
- [อุปกรณ์เสมือน (CounterFit)](../..)
|
|
- [ปัญหาการเชื่อมต่อ](../..)
|
|
- [การเชื่อมต่อ WiFi](../..)
|
|
- [บริการคลาวด์](../..)
|
|
- [MQTT](../..)
|
|
- [ปัญหาเกี่ยวกับเซ็นเซอร์และอุปกรณ์ขับเคลื่อน](../..)
|
|
- [เซ็นเซอร์ Grove](../..)
|
|
- [กล้อง](../..)
|
|
- [ไมโครโฟนและลำโพง](../..)
|
|
- [ปัญหาเกี่ยวกับสภาพแวดล้อมการพัฒนา](../..)
|
|
- [VS Code](../..)
|
|
- [สภาพแวดล้อมเสมือน Python](../..)
|
|
- [การพึ่งพา](../..)
|
|
- [ปัญหาด้านประสิทธิภาพ](../..)
|
|
- [ข้อความแสดงข้อผิดพลาดทั่วไป](../..)
|
|
- [การขอความช่วยเหลือ](../..)
|
|
|
|
---
|
|
|
|
## ปัญหาเกี่ยวกับการติดตั้ง
|
|
|
|
### การติดตั้ง Python
|
|
|
|
#### ปัญหา: รุ่น Python เก่าเกินไป
|
|
**ข้อผิดพลาด:** `ต้องใช้ Python 3.6 หรือสูงกว่า`
|
|
|
|
**วิธีแก้ไข:**
|
|
1. ดาวน์โหลด Python 3 เวอร์ชันล่าสุดจาก [python.org](https://www.python.org/downloads/)
|
|
2. ในระหว่างการติดตั้งบน Windows ให้ติ๊กเลือก "Add Python to PATH"
|
|
3. ตรวจสอบการติดตั้ง:
|
|
```bash
|
|
python3 --version
|
|
```
|
|
|
|
#### ปัญหา: หลายรุ่น Python เกิดความขัดแย้ง
|
|
**อาการ:** ใช้งาน Python เวอร์ชันผิด, ติดตั้งแพ็กเกจผิดที่
|
|
|
|
**วิธีแก้ไข:**
|
|
- **Windows:** ใช้ `py -3` แทน `python` เพื่อเรียก Python 3 โดยตรง
|
|
- **macOS/Linux:** ใช้ `python3` แทน `python`
|
|
- สร้างและใช้สภาพแวดล้อมเสมือนสำหรับแต่ละโครงการเสมอ
|
|
|
|
#### ปัญหา: คำสั่ง pip ไม่พบ
|
|
**ข้อผิดพลาด:** `'pip' ไม่ได้รับการยอมรับให้เป็นคำสั่งภายในหรือภายนอก`
|
|
|
|
**วิธีแก้ไข:**
|
|
1. ลองใช้ `pip3` แทน `pip`
|
|
2. หรือใช้ `python -m pip` หรือ `python3 -m pip`
|
|
3. ตรวจสอบว่า Python ถูกเพิ่มใน PATH (ติดตั้ง Python ใหม่และเลือกตัวเลือกนี้)
|
|
|
|
### VS Code และส่วนขยาย
|
|
|
|
#### ปัญหา: ส่วนขยาย Pylance ไม่ทำงาน
|
|
**อาการ:** ไม่มี IntelliSense ของ Python, การเติมโค้ด หรือการตรวจสอบประเภทข้อมูล
|
|
|
|
**วิธีแก้ไข:**
|
|
1. เปิด Command Palette ของ VS Code (`Ctrl+Shift+P` หรือ `Cmd+Shift+P`)
|
|
2. รันคำสั่ง "Python: Select Interpreter"
|
|
3. เลือก interpreter ของ Python ที่ถูกต้อง (เช่น สภาพแวดล้อมเสมือนถ้าใช้)
|
|
4. โหลดหน้าต่าง VS Code ใหม่
|
|
|
|
#### ปัญหา: VS Code ไม่พบสภาพแวดล้อมเสมือน
|
|
**อาการ:** เลือก interpreter ของ Python ผิด
|
|
|
|
**วิธีแก้ไข:**
|
|
1. ตรวจสอบว่าคุณได้เปิดใช้งานสภาพแวดล้อมเสมือนในเทอร์มินัลแล้ว
|
|
2. เปิด Command Palette และเรียกใช้ "Python: Select Interpreter"
|
|
3. เลือก interpreter จากโฟลเดอร์ `.venv`
|
|
4. สังเกตแถบสถานะ (มุมล่างซ้าย) ว่าแสดงเวอร์ชัน Python ถูกต้องหรือไม่
|
|
|
|
### PlatformIO (Wio Terminal)
|
|
|
|
#### ปัญหา: ติดตั้ง PlatformIO ไม่สำเร็จ
|
|
**ข้อผิดพลาด:** พบข้อผิดพลาดต่างๆ ขณะติดตั้ง PlatformIO
|
|
|
|
**วิธีแก้ไข:**
|
|
1. ตรวจสอบให้แน่ใจว่า VS Code เป็นเวอร์ชันล่าสุด
|
|
2. ติดตั้งส่วนขยาย C/C++ ก่อน
|
|
3. รีสตาร์ท VS Code หลังติดตั้ง PlatformIO
|
|
4. ตรวจสอบการเชื่อมต่ออินเทอร์เน็ต (PlatformIO ดาวน์โหลดไฟล์ขนาดใหญ่)
|
|
|
|
#### ปัญหา: PlatformIO ไม่รู้จักบอร์ด
|
|
**อาการ:** ไม่สามารถอัปโหลดโค้ดไปยัง Wio Terminal ได้
|
|
|
|
**วิธีแก้ไข:**
|
|
1. ลองเปลี่ยนสาย USB (บางสายชาร์จได้เท่านั้น)
|
|
2. ตรวจสอบ Device Manager (Windows) หรือ `ls /dev/tty*` (macOS/Linux)
|
|
3. ติดตั้งหรือตัวอัปเดตไดรเวอร์ USB
|
|
4. ลองใช้พอร์ต USB อื่น
|
|
5. เลื่อนสวิตช์พาวเวอร์ของ Wio Terminal ลงแล้วขึ้นสองครั้งอย่างรวดเร็วเพื่อเข้าสู่โหมดบูต
|
|
|
|
#### ปัญหา: ข้อผิดพลาดคอมไพล์ใน PlatformIO
|
|
**ข้อผิดพลาด:** `fatal error: Arduino.h: No such file or directory`
|
|
|
|
**วิธีแก้ไข:**
|
|
1. ลบโฟลเดอร์ `.pio` ในโปรเจกต์ของคุณ
|
|
2. รัน "PlatformIO: Rebuild" จาก Command Palette
|
|
3. ตรวจสอบว่าไฟล์ `platformio.ini` กำหนดบอร์ดถูกต้อง:
|
|
```ini
|
|
[env:seeed_wio_terminal]
|
|
platform = atmelsam
|
|
board = seeed_wio_terminal
|
|
framework = arduino
|
|
```
|
|
|
|
### ไลบรารี Grove
|
|
|
|
#### ปัญหา: นำเข้าไลบรารี Grove บน Raspberry Pi ไม่สำเร็จ
|
|
**ข้อผิดพลาด:** `ModuleNotFoundError: No module named 'grove'`
|
|
|
|
**วิธีแก้ไข:**
|
|
1. ติดตั้งไลบรารี Grove ใหม่:
|
|
```bash
|
|
cd ~
|
|
git clone https://github.com/Seeed-Studio/grove.py
|
|
cd grove.py
|
|
sudo pip3 install .
|
|
```
|
|
2. หากใช้สภาพแวดล้อมเสมือน อาจต้องติดตั้งแบบ global หรือคัดลอกไลบรารี
|
|
3. ตรวจสอบว่าการใช้งาน I2C เปิดใช้งานแล้ว: `sudo raspi-config nonint do_i2c 0`
|
|
|
|
#### ปัญหา: เซ็นเซอร์ Grove ไม่ตรวจพบ
|
|
**ข้อผิดพลาด:** `IOError: [Errno 121] Remote I/O error`
|
|
|
|
**วิธีแก้ไข:**
|
|
1. ตรวจสอบการเชื่อมต่อจริง (ตรวจสอบว่าสาย Grove เสียบแน่น)
|
|
2. ยืนยันว่าเซ็นเซอร์เชื่อมต่อกับพอร์ตที่ถูกต้อง (อนาล็อก, ดิจิตอล, I2C, UART)
|
|
3. รัน `i2cdetect -y 1` เพื่อดูว่าอุปกรณ์ปรากฏใน I2C bus หรือไม่
|
|
4. ลองใช้สาย Grove อันอื่น
|
|
5. ตรวจสอบว่า Grove Base Hat ถูกวางอย่างถูกต้องบนขา GPIO ของ Raspberry Pi
|
|
|
|
---
|
|
|
|
## ปัญหาฮาร์ดแวร์
|
|
|
|
### Raspberry Pi
|
|
|
|
#### ปัญหา: Raspberry Pi บูตไม่ขึ้น
|
|
**อาการ:** ไม่มีภาพแสดง, ไฟ LED ไม่ติด หรือแสดงหน้าจอสีรุ้ง
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **ตรวจสอบแหล่งจ่ายไฟ:** ใช้อะแดปเตอร์ USB-C 5V 3A อย่างเป็นทางการสำหรับ Pi 4
|
|
2. **ปัญหากับ SD การ์ด:**
|
|
- ฟอร์แมต SD การ์ดและติดตั้งระบบปฏิบัติการ Raspberry Pi ใหม่
|
|
- ลองใช้ SD การ์ดอันอื่น (ยี่ห้อแนะนำ)
|
|
- ตรวจสอบให้ SD การ์ดเสียบแน่น
|
|
3. **ตรวจสอบสาย HDMI:** ลองทั้งสองพอร์ต HDMI บน Pi 4 ใช้พอร์ต HDMI ที่อยู่ใกล้แหล่งจ่ายไฟที่สุด
|
|
|
|
#### ปัญหา: ไม่สามารถ SSH เข้า Raspberry Pi ได้
|
|
**อาการ:** การเชื่อมต่อถูกปฏิเสธหรือหมดเวลา
|
|
|
|
**วิธีแก้ไข:**
|
|
1. เปิดใช้งาน SSH:
|
|
- ขณะแฟลช SD การ์ดด้วย Raspberry Pi Imager ให้ตั้งค่า SSH ในตัวเลือกขั้นสูง
|
|
- หรือสร้างไฟล์เปล่าชื่อ `ssh` (ไม่มีนามสกุล) ในพาร์ติชันบูต
|
|
2. หาที่อยู่ IP ของ Pi:
|
|
- ตรวจสอบอุปกรณ์ในเราเตอร์ของคุณ
|
|
- ใช้ `ping raspberrypi.local` (ถ้า mDNS ทำงาน)
|
|
- ใช้เครื่องมือสแกนเครือข่าย เช่น `nmap` หรือ Angry IP Scanner
|
|
3. ตรวจสอบเครือข่าย:
|
|
- ให้ Pi อยู่ในเครือข่ายเดียวกับคอมพิวเตอร์ของคุณ
|
|
- ลองเชื่อมต่อผ่านอีเธอร์เน็ตแทน WiFi
|
|
4. ตรวจสอบชื่อผู้ใช้งาน/รหัสผ่าน (ค่าเริ่มต้น: ชื่อผู้ใช้ `pi`, รหัสผ่าน `raspberry`)
|
|
|
|
#### ปัญหา: Grove Base Hat ไม่ถูกตรวจพบ
|
|
**อาการ:** เซ็นเซอร์ใช้งานไม่ได้, ข้อผิดพลาด I2C
|
|
|
|
**วิธีแก้ไข:**
|
|
1. ให้ Base Hat วางถูกตำแหน่งบนขา GPIO ทั้งหมดอย่างแน่นหนา
|
|
2. ตรวจสอบขา GPIO บน Pi และ Base Hat ว่าไม่มีหมุดงอ
|
|
3. เปิดใช้งานอินเตอร์เฟส I2C:
|
|
```bash
|
|
sudo raspi-config nonint do_i2c 0
|
|
sudo reboot
|
|
```
|
|
4. ตรวจสอบว่า I2C ทำงาน: `i2cdetect -y 1`
|
|
|
|
#### ปัญหา: Raspberry Pi ทำงานช้า
|
|
**อาการ:** UI หน่วง, ตอบสนองช้า
|
|
|
|
**วิธีแก้ไข:**
|
|
1. ตรวจสอบความเร็วของ SD การ์ด (ใช้ Class 10 หรือดีกว่า หรือ SSD ผ่าน USB)
|
|
2. ลบไฟล์ที่ไม่จำเป็นเพื่อเพิ่มพื้นที่ว่าง: ใช้คำสั่ง `df -h` เพื่อตรวจสอบ
|
|
3. ลดหน่วยความจำ GPU ใน `raspi-config` หากไม่ได้ใช้กล้องหรือจอภาพหนักๆ
|
|
4. ปิดแอปพลิเคชันที่ไม่จำเป็น
|
|
5. พิจารณาอัปเกรดเป็น Pi 4 ที่มี RAM มากขึ้นถ้าใช้ Pi 3 หรือต่ำกว่า
|
|
|
|
### Wio Terminal
|
|
|
|
#### ปัญหา: หน้าจอ Wio Terminal ว่างเปล่า
|
|
**อาการ:** ไม่มีภาพแสดงหลังอัปโหลดโค้ด
|
|
|
|
**วิธีแก้ไข:**
|
|
1. ตรวจสอบว่าโค้ดมีการเริ่มต้นหน้าจอ (ใช้ไลบรารี TFT_eSPI)
|
|
2. อัปเดตเฟิร์มแวร์ Wio Terminal จาก [Seeed Wiki](https://wiki.seeedstudio.com/Wio-Terminal-Getting-Started/)
|
|
3. เพิ่มโค้ดเริ่มต้นการแสดงผล:
|
|
```cpp
|
|
#include <TFT_eSPI.h>
|
|
TFT_eSPI tft;
|
|
tft.begin();
|
|
tft.fillScreen(TFT_BLACK);
|
|
```
|
|
4. ลองอัปโหลดสเก็ตช์ตัวอย่างจาก PlatformIO เพื่อทดสอบฮาร์ดแวร์
|
|
|
|
#### ปัญหา: WiFi บน Wio Terminal ไม่ทำงาน
|
|
**อาการ:** ไม่สามารถเชื่อมต่อ WiFi ได้, เกิดข้อผิดพลาดเครือข่าย
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **อัปเดตเฟิร์มแวร์ WiFi:** ทำตาม [คู่มืออัปเดตเฟิร์มแวร์ WiFi ของ Wio Terminal](https://wiki.seeedstudio.com/Wio-Terminal-Network-Overview/)
|
|
2. **ตรวจสอบข้อมูลประจำตัว WiFi:** ตรวจสอบว่า SSID และรหัสผ่านถูกต้อง
|
|
3. **แบนด์ WiFi:** Wio Terminal รองรับเฉพาะ 2.4GHz เท่านั้น (ไม่รองรับ 5GHz)
|
|
4. **ความแรงสัญญาณ:** ย้ายให้อุปกรณ์ใกล้เราเตอร์มากขึ้น
|
|
5. **การตั้งค่าเราเตอร์:** บางเครือข่ายบริษัท/WPA-Enterprise อาจใช้งานไม่ได้
|
|
|
|
#### ปัญหา: คอมพิวเตอร์ไม่รู้จัก Wio Terminal
|
|
**อาการ:** อุปกรณ์ USB ไม่ถูกตรวจพบ
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **ลองใช้สาย USB อื่น:** ใช้สายข้อมูล ไม่ใช่สายชาร์จอย่างเดียว
|
|
2. **เข้าสู่โหมดบูตโหลดเดอร์:** เลื่อนสวิตช์พาวเวอร์ลงสองครั้งอย่างรวดเร็ว
|
|
- ไฟ LED สีฟ้าจะกระพริบ อุปกรณ์จะปรากฏเป็น "Arduino" ใน Device Manager
|
|
3. **ติดตั้งไดรเวอร์ (Windows):**
|
|
- ดาวน์โหลดและติดตั้ง [ไดรเวอร์ USB ของ Seeed](https://wiki.seeedstudio.com/Driver_for_Seeeduino/)
|
|
4. **ลองพอร์ต USB อื่น:** หลีกเลี่ยง USB hub ใช้พอร์ตตรงแทน
|
|
5. **อัปเดตไดรเวอร์ USB ของระบบ**
|
|
|
|
#### ปัญหา: เซ็นเซอร์บน Wio Terminal ไม่ทำงาน
|
|
**อาการ:** เซ็นเซอร์ Grove ไม่สามารถอ่านข้อมูลได้
|
|
|
|
**วิธีแก้ไข:**
|
|
1. ตรวจสอบการเชื่อมต่อสาย Grove
|
|
2. ตรวจว่าคุณใช้พอร์ต Grove ที่ถูกต้อง (ซ้ายหรือขวา)
|
|
3. รวมไลบรารีที่ถูกต้องสำหรับเซ็นเซอร์
|
|
4. ตรวจสอบความต้องการพลังงานของเซ็นเซอร์
|
|
5. ทดสอบเซ็นเซอร์ด้วยโค้ดตัวอย่างจากไลบรารี
|
|
|
|
### อุปกรณ์เสมือน (CounterFit)
|
|
|
|
#### ปัญหา: แอป CounterFit ไม่เริ่มทำงาน
|
|
**ข้อผิดพลาด:** ข้อผิดพลาด Python หลายรายการเมื่อเริ่ม CounterFit
|
|
|
|
**วิธีแก้ไข:**
|
|
1. ตรวจสอบว่าสภาพแวดล้อมเสมือนเปิดใช้งานแล้ว
|
|
2. ติดตั้ง/ติดตั้งใหม่ CounterFit:
|
|
```bash
|
|
pip install CounterFit
|
|
```
|
|
3. ตรวจสอบว่า พอร์ต 5000 ยังไม่ถูกใช้งาน:
|
|
- Windows: `netstat -ano | findstr :5000`
|
|
- macOS/Linux: `lsof -i :5000`
|
|
4. ปิดโปรเซสที่ใช้พอร์ต 5000 หรือใช้พอร์ตอื่น:
|
|
```bash
|
|
counterfit --port 5001
|
|
```
|
|
|
|
#### ปัญหา: ไม่สามารถเชื่อมต่อกับ CounterFit จากโค้ด
|
|
**ข้อผิดพลาด:** การเชื่อมต่อล้มเหลวหรือหมดเวลา
|
|
|
|
**วิธีแก้ไข:**
|
|
1. ตรวจสอบว่า CounterFit กำลังทำงาน: เปิดเว็บเบราว์เซอร์ที่ `http://127.0.0.1:5000`
|
|
2. ตรวจสอบ URL การเชื่อมต่อในโค้ดว่าตรงกับที่อยู่ CounterFit หรือไม่
|
|
3. ตรวจสอบไฟร์วอลล์ว่าไม่ได้บล็อกการเชื่อมต่อ
|
|
4. ลองรีสตาร์ททั้งแอป CounterFit และโค้ดของคุณ
|
|
|
|
#### ปัญหา: เซ็นเซอร์ไม่แสดงใน CounterFit
|
|
**อาการ:** เซ็นเซอร์ที่สร้างไม่แสดงใน UI ของ CounterFit
|
|
|
|
**วิธีแก้ไข:**
|
|
1. สร้างเซ็นเซอร์ใน UI ของ CounterFit ก่อนรันโค้ด
|
|
2. รีเฟรชหน้าเว็บเบราว์เซอร์
|
|
3. ตรวจสอบว่า ชนิดเซ็นเซอร์ตรงกับที่โค้ดต้องการ
|
|
4. ล้างแคชของเบราว์เซอร์
|
|
|
|
---
|
|
|
|
## ปัญหาการเชื่อมต่อ
|
|
|
|
### การเชื่อมต่อ WiFi
|
|
|
|
#### ปัญหา: อุปกรณ์เชื่อมต่อ WiFi ไม่ได้
|
|
**อาการ:** การเชื่อมต่อล้มเหลว, หมดเวลา, การพิสูจน์ตัวตนล้มเหลว
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **ตรวจสอบ SSID และรหัสผ่าน:** ยืนยันว่าข้อมูลถูกต้อง
|
|
2. **แบนด์ WiFi:** อุปกรณ์ IoT ส่วนใหญ่รองรับเฉพาะ 2.4GHz เท่านั้น (ไม่รองรับ 5GHz)
|
|
3. **การตั้งค่าเราเตอร์:**
|
|
- ปิดการแยก AP (AP isolation) หากเปิดอยู่
|
|
- ใช้การเข้ารหัส WPA2-PSK (หลีกเลี่ยง WPA3, WEP หรือเครือข่ายเปิด)
|
|
- ตรวจสอบว่า DHCP เปิดใช้งาน
|
|
4. **เครือข่ายที่ซ่อน:** หาก SSID ถูกซ่อน อาจต้องตั้งค่าให้ระบุเป็นพิเศษ
|
|
5. **ความแรงสัญญาณ:** ย้ายให้อุปกรณ์ใกล้เราเตอร์มากขึ้น
|
|
6. **สัญญาณรบกวน:** อุปกรณ์อื่น ไมโครเวฟ หรือผนังอาจรบกวนสัญญาณ
|
|
|
|
#### ปัญหา: การเชื่อมต่อ WiFi หลุดบ่อย
|
|
**อาการ:** การเชื่อมต่อไม่ต่อเนื่อง
|
|
|
|
**วิธีแก้ไข:**
|
|
1. ตรวจสอบความเสถียรของเราเตอร์และลองรีบูท
|
|
2. อัปเดตเฟิร์มแวร์อุปกรณ์
|
|
3. ใช้ IP แบบคงที่แทน DHCP
|
|
4. ลดระยะทางระหว่างอุปกรณ์กับเราเตอร์ หรือเพิ่ม WiFi extender
|
|
5. ตรวจสอบแหล่งรบกวนจากอุปกรณ์อื่นๆ
|
|
6. ตรวจสอบแหล่งจ่ายไฟว่าพอเพียง (โดยเฉพาะ Raspberry Pi)
|
|
|
|
### บริการคลาวด์
|
|
|
|
#### ปัญหา: ไม่สามารถเชื่อมต่อกับ Azure IoT Hub
|
|
**ข้อผิดพลาด:** การพิสูจน์ตัวตนล้มเหลว, การเชื่อมต่อถูกปฏิเสธ
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **ตรวจสอบข้อมูลประจำตัว:**
|
|
- เช็คสายการเชื่อมต่อ (connection string) ให้ถูกต้อง
|
|
- ตรวจสอบว่าไม่มีช่องว่างหรือขึ้นบรรทัดใหม่ในสายการเชื่อมต่อ
|
|
2. **ตรวจสอบการลงทะเบียนอุปกรณ์:** อุปกรณ์ต้องลงทะเบียนใน IoT Hub
|
|
3. **ไฟร์วอลล์/พร็อกซี:** ตรวจสอบว่าพอร์ต MQTT (8883) หรือ HTTPS (443) ออกได้
|
|
4. **ภูมิภาคของ IoT Hub:** ตรวจสอบว่า IoT Hub ทำงานอยู่และไม่อยู่ในภูมิภาคที่มีความหน่วงสูง
|
|
5. **ขีดจำกัดโควต้า:** ตรวจสอบว่าขีดจำกัดแผนฟรีไม่เกิน
|
|
6. **ทดสอบการเชื่อมต่อ:**
|
|
```bash
|
|
az iot hub device-identity show-connection-string --hub-name YourIoTHub --device-id YourDevice
|
|
```
|
|
|
|
#### ปัญหา: Azure Functions ไม่ทำงานเมื่อทริกเกอร์
|
|
**อาการ:** ส่งข้อความแล้วแต่ฟังก์ชันไม่ทำงาน
|
|
|
|
**วิธีแก้ไข:**
|
|
1. ตรวจสอบว่า Function App กำลังทำงาน (ไม่หยุด)
|
|
2. ตรวจสอบสายการเชื่อมต่อในตั้งค่า Function App
|
|
3. ตรวจสอบบันทึกฟังก์ชันใน Azure Portal
|
|
4. ตรวจสอบการตั้งค่า endpoint ที่รองรับ Event Hub ให้ถูกต้อง
|
|
5. ตรวจสอบรูปแบบข้อความให้ตรงกับฟังก์ชัน
|
|
6. ตรวจสอบแผนบริการ Function App (ใช้แบบ consumo หรือ แบบเฉพาะ)
|
|
|
|
### MQTT
|
|
#### ปัญหา: การเชื่อมต่อ MQTT ล้มเหลว
|
|
**ข้อผิดพลาด:** การเชื่อมต่อล้มเหลว การยืนยันตัวตนล้มเหลว
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **ที่อยู่โบรกเกอร์:** ยืนยัน URL/IP ของโบรกเกอร์ถูกต้อง
|
|
2. **พอร์ต:** ตรวจสอบหมายเลขพอร์ต (1883 สำหรับไม่เข้ารหัส, 8883 สำหรับ TLS)
|
|
3. **การยืนยันตัวตน:** ยืนยันชื่อผู้ใช้/รหัสผ่านถ้าจำเป็น
|
|
4. **TLS/SSL:** ตรวจสอบใบรับรองว่าถูกต้องและเชื่อถือได้
|
|
5. **ไฟร์วอลล์:** ตรวจสอบว่าพอร์ตไม่ถูกบล็อก
|
|
6. **ทดสอบด้วยไคลเอนต์ MQTT:** ใช้ MQTT Explorer หรือ mosquitto_pub/sub เพื่อทดสอบ
|
|
|
|
#### ปัญหา: ข้อความ MQTT ไม่ได้รับ
|
|
**อาการ:** ข้อความถูกเผยแพร่ แต่ผู้สมัครไม่รับข้อความ
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **ชื่อหัวข้อ:** ยืนยันหัวข้อผู้สมัครตรงกับหัวข้อผู้เผยแพร่เป๊ะ
|
|
2. **ระดับ QoS:** ลองใช้ QoS 1 หรือ 2 แทน 0
|
|
3. **สัญลักษณ์แทนตำแหน่ง:** ตรวจสอบการใช้สัญลักษณ์แทนตำแหน่งหัวข้อ (`+` สำหรับระดับเดียว, `#` สำหรับหลายระดับ) ให้ถูกต้อง
|
|
4. **ข้อความเก็บรักษา:** ผู้เผยแพร่สามารถตั้งค่าแฟล็กเก็บข้อความล่าสุดไว้
|
|
5. **เวลาการเชื่อมต่อ:** ยืนยันผู้สมัครเชื่อมต่อก่อนที่ข้อความจะถูกเผยแพร่
|
|
|
|
---
|
|
|
|
## ปัญหาเซนเซอร์และเอคชูเอเตอร์
|
|
|
|
### เซนเซอร์ Grove
|
|
|
|
#### ปัญหา: เซนเซอร์ส่งค่าผิด
|
|
**อาการ:** ค่าที่อ่านเป็น 0, -1, หรือค่าที่ไม่มีความหมาย
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **ตรวจสอบการเชื่อมต่อ:** ยืนยันว่าเซนเซอร์เชื่อมต่อถูกต้อง
|
|
2. **พอร์ตที่ถูกต้อง:** ตรวจสอบว่าเซนเซอร์ติดตั้งที่พอร์ตถูกต้อง:
|
|
- เซนเซอร์อนาล็อก → พอร์ตอนาล็อก (A0, A2, A4)
|
|
- เซนเซอร์ดิจิทัล → พอร์ตดิจิทัล (D5, D16, D18, ฯลฯ)
|
|
- เซนเซอร์ I2C → พอร์ต I2C
|
|
3. **การสอบเทียบ:** เซนเซอร์บางตัวต้องสอบเทียบ (เช่น ความชื้นดิน, แสง)
|
|
4. **รีเซ็ตพลังงาน:** ถอดและเสียบเซนเซอร์ใหม่
|
|
5. **เอกสารเซนเซอร์:** ตรวจสอบสเปคและข้อกำหนดของเซนเซอร์
|
|
|
|
#### ปัญหา: เซนเซอร์ความชื้นดินแบบความจุอ่านว่าชื้นตลอดเวลา
|
|
**อาการ:** เซนเซอร์อ่านค่าความชื้นสูงแม้ในสภาวะแห้ง
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **จำเป็นต้องสอบเทียบ:** เซนเซอร์ดินต้องสอบเทียบ:
|
|
- อ่านค่าในอากาศ (ค่าพื้นฐานแห้ง)
|
|
- อ่านค่าในน้ำ (ค่าพื้นฐานชื้น)
|
|
- จัดแมปค่าระหว่างสองค่าดังกล่าว
|
|
2. **ตรวจสอบผิวเคลือบเซนเซอร์:** เซนเซอร์ความชื้นสามารถเสียหายหากผิวเคลือบชำรุด
|
|
3. **ตำแหน่งติดตั้ง:** ยืนยันว่าเซนเซอร์ถูกฝังเข้าดินอย่างเต็มที่
|
|
|
|
#### ปัญหา: ค่าที่อ่านจากเซนเซอร์อุณหภูมิ/ความชื้นผิดพลาด
|
|
**อาการ:** DHT11/DHT22 แสดงอุณหภูมิหรือความชื้นผิด
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **ตำแหน่งเซนเซอร์:** หลีกเลี่ยงแสงแดดโดยตรง, แหล่งความร้อน, หรือกระแสลมแรง
|
|
2. **เวลาวอร์มอัพ:** รอเซนเซอร์ 2 วินาทีหลังเปิดเครื่องก่อนอ่านค่า
|
|
3. **ความถี่การอ่าน:** DHT ต้องมีเวลาระหว่างการอ่าน (อย่างน้อย 2 วินาที)
|
|
4. **ตรวจสอบหยดน้ำ:** ความชื้นในอากาศอาจส่งผลต่อค่าการอ่าน
|
|
5. **คุณภาพของเซนเซอร์:** DHT11 แม่นยำน้อยกว่า DHT22
|
|
|
|
### กล้อง
|
|
|
|
#### ปัญหา: กล้องไม่ตรวจพบใน Raspberry Pi
|
|
**ข้อผิดพลาด:** `mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera'`
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **เปิดใช้งานอินเทอร์เฟซกล้อง:**
|
|
```bash
|
|
sudo raspi-config
|
|
```
|
|
ไปที่ Interface Options → Camera → Enable
|
|
2. **ตรวจสอบสายแพ:** ยืนยันสายกล้องเสียบถูกต้อง
|
|
- ด้านฟ้าหันเข้าหาพอร์ต USB ใน Pi Zero
|
|
- ด้านฟ้าหันออกจากพอร์ต USB ใน Pi 4
|
|
3. **อัปเดตเฟิร์มแวร์:**
|
|
```bash
|
|
sudo apt update
|
|
sudo apt full-upgrade
|
|
sudo reboot
|
|
```
|
|
4. **ทดสอบกล้อง:**
|
|
```bash
|
|
raspistill -o test.jpg
|
|
```
|
|
|
|
#### ปัญหา: ภาพกล้องคุณภาพต่ำ
|
|
**อาการ:** ภาพเบลอ มืด หรือจืดชืด
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **การโฟกัส:** ลอกฟิล์มป้องกันเลนส์ออก ปรับโฟกัสถ้าปรับได้
|
|
2. **แสงสว่าง:** ตรวจสอบให้มีแสงเพียงพอ
|
|
3. **ตั้งค่ากล้อง:** ปรับค่า exposure, ISO, white balance ในโค้ด
|
|
4. **ความมั่นคง:** ให้กล้องนิ่ง ใช้ขาตั้งถ้าจำเป็น
|
|
5. **ความละเอียด:** อย่าเกินความละเอียดสูงสุดของกล้อง
|
|
|
|
### ไมโครโฟนและลำโพง
|
|
|
|
#### ปัญหา: ไม่มีเสียงเข้า/ออก
|
|
**อาการ:** ไมโครโฟนไม่บันทึกเสียง, ลำโพงไม่เล่นเสียง
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **ตรวจสอบการเชื่อมต่อ:** ยืนยันอุปกรณ์เสียงเชื่อมต่อถูกต้อง
|
|
2. **ทดสอบฮาร์ดแวร์:**
|
|
- ลำโพง: `speaker-test -t wav -c 2`
|
|
- ไมโครโฟน: `arecord -l` เพื่อลิสต์, `arecord test.wav` เพื่อบันทึก
|
|
3. **ตั้งค่าปริมาณเสียง:** ตรวจสอบและปรับเสียง:
|
|
```bash
|
|
alsamixer
|
|
```
|
|
4. **เลือกอุปกรณ์เสียง:** กำหนดอุปกรณ์เสียงที่ถูกต้องในโค้ด
|
|
5. **ปัญหาด้านไดรเวอร์:** อัปเดต ALSA หรือถอนติดตั้งแล้วติดตั้งไดรเวอร์เสียงใหม่
|
|
|
|
#### ปัญหา: ReSpeaker hat ไม่ทำงาน
|
|
**อาการ:** ไม่ตรวจพบอุปกรณ์เสียง
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **ติดตั้งไดรเวอร์:**
|
|
```bash
|
|
git clone https://github.com/HinTak/seeed-voicecard
|
|
cd seeed-voicecard
|
|
sudo ./install.sh
|
|
sudo reboot
|
|
```
|
|
2. **ตรวจสอบการติดตั้ง:** `arecord -l` ควรแสดง ReSpeaker
|
|
3. **อัปเดตเฟิร์มแวร์:** บางเวอร์ชันของ Pi OS ต้องอัปเดตไดรเวอร์
|
|
4. **ตรวจสอบการติดตั้ง:** ยืนยันว่า hat เชื่อมต่อกับขา GPIO อย่างถูกต้อง
|
|
|
|
---
|
|
|
|
## ปัญหาสภาพแวดล้อมการพัฒนา
|
|
|
|
### VS Code
|
|
|
|
#### ปัญหา: เทอร์มินัลไม่เปิดใช้งาน virtual environment อัตโนมัติ
|
|
**อาการ:** เทอร์มินัลเปิด แต่ venv ไม่ถูกเปิดใช้งาน
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **ตั้งค่าตัวแปร Python interpreter:** Command Palette → "Python: Select Interpreter" → เลือก venv
|
|
2. **รีสตาร์ท VS Code** หลังเลือก interpreter แล้ว
|
|
3. **ตรวจสอบการตั้งค่า:** ในไฟล์ `settings.json` เพิ่ม:
|
|
```json
|
|
"python.terminal.activateEnvironment": true
|
|
```
|
|
|
|
#### ปัญหา: โค้ดไม่ทำงานบนอุปกรณ์
|
|
**อาการ:** โค้ดรันแต่ไม่มีผลบนอุปกรณ์
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **ยืนยันว่าโค้ดถูกบันทึก** (เช็คจุดบนแท็บไฟล์)
|
|
2. **ตรวจสอบ Python ที่รัน:** `which python` หรือ `where python`
|
|
3. **สำหรับ Wio Terminal:** ยืนยันโค้ดอัพโหลดผ่าน PlatformIO (กดปุ่มอัปโหลด)
|
|
4. **สำหรับ Raspberry Pi:** SSH เข้า Pi แล้วรันโค้ดที่นั่น
|
|
5. **ตรวจสอบหน้าต่างเอาต์พุต** ว่ามีข้อผิดพลาดหรือไม่
|
|
|
|
#### ปัญหา: IntelliSense ไม่แสดงฟังก์ชันของไลบรารี
|
|
**อาการ:** ไม่มีคำแนะนำอัตโนมัติสำหรับโมดูลที่นำเข้า
|
|
|
|
**วิธีแก้ไข:**
|
|
1. ยืนยันว่าไลบรารีติดตั้งใน environment ปัจจุบัน
|
|
2. โหลดหน้าต่าง VS Code ใหม่
|
|
3. ตรวจสอบ Python interpreter ให้ถูกต้อง
|
|
4. ติดตั้ง type stubs ถ้ามี: `pip install types-<library-name>`
|
|
|
|
### Python Virtual Environments
|
|
|
|
#### ปัญหา: ไม่สามารถสร้าง virtual environment ได้
|
|
**ข้อผิดพลาด:** `The virtual environment was not created successfully`
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **ติดตั้งโมดูล venv:**
|
|
- Ubuntu/Debian: `sudo apt install python3-venv`
|
|
- macOS: ควรรวมมากับ Python แล้ว
|
|
- Windows: ติดตั้ง Python ใหม่พร้อมตัวเลือกครบถ้วน
|
|
2. **ตรวจสอบการติดตั้ง Python:** ยืนยันว่า Python ติดตั้งถูกต้อง
|
|
3. **ใช้ path เต็ม:** ลองใช้ `python3 -m venv .venv` เพื่อระบุ python3 โดยตรง
|
|
|
|
#### ปัญหา: ติดตั้งแพ็กเกจผิดที่
|
|
**อาการ:** เกิดข้อผิดพลาดการนำเข้าโมดูลหลังติดตั้งแพ็กเกจ
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **ยืนยันว่า venv ถูกเปิดใช้งาน:** คำสั่งควรขึ้น `(.venv)`
|
|
2. **ตรวจสอบตำแหน่ง pip:** `which pip` ควรชี้ไปที่ `.venv/bin/pip`
|
|
3. **ติดตั้งใหม่ใน venv:** เปิดใช้งาน venv แล้วใช้ `pip install <package>`
|
|
4. **ไม่ใช้ sudo กับ pip** ใน virtual environment
|
|
|
|
#### ปัญหา: Virtual environment ไม่พกพาได้
|
|
**อาการ:** venv ใช้งานไม่ได้หลังย้ายที่หรือบนเครื่องอื่น
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **อย่าย้าย venv:** ลบทิ้งแล้วสร้างใหม่ในตำแหน่งใหม่
|
|
2. **ใช้ requirements.txt:**
|
|
```bash
|
|
pip freeze > requirements.txt
|
|
pip install -r requirements.txt
|
|
```
|
|
3. **สร้าง venv ใหม่:**
|
|
```bash
|
|
python3 -m venv .venv
|
|
source .venv/bin/activate # หรือ activate.bat บน Windows
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
### Dependencies
|
|
|
|
#### ปัญหา: การติดตั้งแพ็กเกจล้มเหลว
|
|
**ข้อผิดพลาด:** มีข้อผิดพลาด pip หลายแบบระหว่างติดตั้ง
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **อัปเดต pip:**
|
|
```bash
|
|
pip install --upgrade pip
|
|
```
|
|
2. **ติดตั้งเครื่องมือ build:**
|
|
- Ubuntu/Debian: `sudo apt install build-essential python3-dev`
|
|
- macOS: `xcode-select --install`
|
|
- Windows: ติดตั้ง Visual Studio Build Tools
|
|
3. **ตรวจสอบการเชื่อมต่ออินเทอร์เน็ต**
|
|
4. **ลองใช้ดัชนีแพ็กเกจอื่น:** `pip install --index-url https://pypi.org/simple/ <package>`
|
|
5. **ติดตั้งเวอร์ชันเจาะจง:** `pip install <package>==<version>`
|
|
|
|
#### ปัญหา: ความขัดแย้งของ dependencies
|
|
**ข้อผิดพลาด:** `ERROR: pip's dependency resolver does not currently take into account all the packages that are installed`
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **ใช้ virtual environment ใหม่สำหรับแต่ละโปรเจกต์**
|
|
2. **อัปเกรดแพ็กเกจ:** `pip install --upgrade <package>`
|
|
3. **ตรวจสอบความขัดแย้ง:** ใช้ `pip check` เพื่อตรวจสอบ
|
|
4. **ติดตั้งเวอร์ชันที่เข้ากันได้:** กำหนดช่วงเวอร์ชันใน requirements.txt
|
|
|
|
---
|
|
|
|
## ปัญหาด้านประสิทธิภาพ
|
|
|
|
### ปัญหา: โค้ดทำงานช้า
|
|
**อาการ:** หน่วง, timeouts, ทำงานไม่ตอบสนอง
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **ลดความถี่การอ่านเซนเซอร์:** อย่าอ่านถี่เกินไป
|
|
2. **ปรับแผนลูป:** หลีกเลี่ยงการรอรบกวน ใช้ sleep() หรือหน่วงเวลา
|
|
3. **ปัญหาหน่วยความจำ:**
|
|
- ปิดแอปที่ไม่จำเป็น
|
|
- เคลียร์พื้นที่จัดเก็บ
|
|
- ใช้คำสั่ง `top` หรือ `htop` บน Pi เพื่อตรวจสอบ
|
|
4. **ความเร็วการอ่าน SD การ์ด:** ใช้ SD การ์ดหรือ SSD ที่เร็วกว่า
|
|
5. **ความหน่วงของเครือข่าย:** ใช้งานแบบอะซิงโครนัสสำหรับการเรียกเครือข่าย
|
|
|
|
### ปัญหา: ข้อผิดพลาดหน่วยความจำเต็ม
|
|
**ข้อผิดพลาด:** `MemoryError` หรือระบบแฮงค์
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **สำหรับ Raspberry Pi:**
|
|
- ปิดแอปไม่จำเป็น
|
|
- เพิ่ม swap space
|
|
- ใช้ OS เบาๆ (Lite version)
|
|
- เพิ่ม RAM (Pi 4 มีตัวเลือก 2/4/8GB)
|
|
2. **สำหรับ Wio Terminal:**
|
|
- ลดขนาด buffer
|
|
- ใช้ภาพขนาดเล็กลง
|
|
- ปรับปรุงการใช้งานสตริง
|
|
- ตรวจสอบหน่วยความจำรั่ว (หน่วยความจำที่ไม่ถูกคืน)
|
|
|
|
### ปัญหา: สูญหายหรือข้อมูลเสียหาย
|
|
**อาการ:** ข้อความหาย ไฟล์เสียหาย
|
|
|
|
**วิธีแก้ไข:**
|
|
1. **ปัญหา SD การ์ด:**
|
|
- ใช้ SD การ์ดคุณภาพดี (หลีกเลี่ยงของถูกหรือปลอม)
|
|
- สำรองข้อมูลเป็นประจำ
|
|
- ปิดระบบอย่างถูกต้อง (ไม่ถอดไฟทันที)
|
|
2. **บัฟเฟอร์ล้น:** เพิ่มขนาด buffer ในโค้ด
|
|
3. **ความน่าเชื่อถือเครือข่าย:** ใช้กลไกลองใหม่และจัดการข้อผิดพลาด
|
|
4. **คุณภาพของบริการ:** ใช้ MQTT QoS 1 หรือ 2 สำหรับข้อความสำคัญ
|
|
|
|
---
|
|
|
|
## ข้อความแสดงข้อผิดพลาดทั่วไป
|
|
|
|
### `ModuleNotFoundError: No module named 'X'`
|
|
**สาเหตุ:** แพ็กเกจไม่ติดตั้ง หรือ virtual environment ไม่ถูกเปิดใช้งาน
|
|
|
|
**วิธีแก้ไข:**
|
|
```bash
|
|
pip install X
|
|
```
|
|
ยืนยันว่า virtual environment ถูกเปิดใช้งานก่อน
|
|
|
|
### `Permission denied` บน Linux/macOS
|
|
**สาเหตุ:** ต้องการสิทธิ์สูงขึ้นหรือปัญหาเรื่องสิทธิ์ไฟล์
|
|
|
|
**วิธีแก้ไข:**
|
|
- สำหรับงานระบบ: ใช้ `sudo`
|
|
- สำหรับ pip: หลีกเลี่ยงใช้ sudo กับ venv ให้เปิดใช้งาน venv ก่อน
|
|
- สำหรับพอร์ตอนุกรม: เพิ่มผู้ใช้ไปยังกลุ่ม dialout: `sudo usermod -a -G dialout $USER` แล้วล็อกเอาต์/ล็อกอินใหม่
|
|
|
|
### `OSError: [Errno 98] Address already in use`
|
|
**สาเหตุ:** พอร์ตถูกใช้งานโดยโปรเซสอื่น
|
|
|
|
**วิธีแก้ไข:**
|
|
1. หาโปรเซสที่ใช้พอร์ต: `lsof -i :<port>` หรือ `netstat -ano | findstr :<port>`
|
|
2. ปิดโปรเซสหรือใช้พอร์ตอื่นในโค้ดของคุณ
|
|
|
|
### `SSL: CERTIFICATE_VERIFY_FAILED`
|
|
**สาเหตุ:** การยืนยันใบรับรอง SSL ล้มเหลว
|
|
|
|
**วิธีแก้ไข:**
|
|
1. อัปเดตใบรับรอง: `pip install --upgrade certifi`
|
|
2. ตรวจสอบเวลาระบบว่าถูกต้อง: `date`
|
|
3. เฉพาะสำหรับการพัฒนา (ไม่ใช่ในโปรดักชัน): ปิดการยืนยันในโค้ด
|
|
|
|
### `IndentationError: unexpected indent`
|
|
**สาเหตุ:** ปัญหาการเยื้องใน Python (ผสมแท็บ/เว้นวรรค)
|
|
|
|
**วิธีแก้ไข:**
|
|
1. ใช้การเยื้องที่สม่ำเสมอ (4 เว้นวรรคคือมาตรฐาน Python)
|
|
2. ตั้งค่า editor ให้ใช้เว้นวรรคแทนแท็บ
|
|
3. VS Code: ตั้งค่า `"editor.insertSpaces": true` และ `"editor.tabSize": 4`
|
|
|
|
### `UnicodeDecodeError` หรือ `UnicodeEncodeError`
|
|
**สาเหตุ:** ปัญหาการเข้ารหัสตัวอักษร
|
|
|
|
**วิธีแก้ไข:**
|
|
```python
|
|
# เมื่ออ่านไฟล์
|
|
with open('file.txt', 'r', encoding='utf-8') as f:
|
|
content = f.read()
|
|
|
|
# เมื่อเขียนไฟล์
|
|
with open('file.txt', 'w', encoding='utf-8') as f:
|
|
f.write(content)
|
|
```
|
|
|
|
---
|
|
|
|
## ขอรับความช่วยเหลือ
|
|
|
|
ถ้าคุณได้ลองแก้ไขตามขั้นตอนเหล่านี้แล้วยังมีปัญหา:
|
|
|
|
### 1. ตรวจสอบแหล่งข้อมูลที่มีอยู่
|
|
- **เอกสาร:** ทบทวน [README](README.md) และคำแนะนำในบทเรียน
|
|
- **คู่มือฮาร์ดแวร์:** ตรวจสอบ [hardware.md](hardware.md) สำหรับข้อมูลเฉพาะฮาร์ดแวร์
|
|
- **Seeed Studio Wiki:** [Seeed Studio Wiki](https://wiki.seeedstudio.com/) สำหรับส่วนประกอบ Grove
|
|
|
|
### 2. ค้นหาปัญหาเดียวกัน
|
|
- **GitHub Issues:** ค้นหา [ปัญหาที่มีอยู่](https://github.com/microsoft/IoT-For-Beginners/issues)
|
|
- **Stack Overflow:** ค้นหาข้อความแสดงข้อผิดพลาด
|
|
- **ฟอรั่มอุปกรณ์:** ตรวจสอบฟอรั่ม Raspberry Pi หรือ Arduino
|
|
|
|
### 3. สร้างปัญหาใน GitHub
|
|
หากไม่พบวิธีแก้ไข:
|
|
1. ไปที่ [GitHub Issues](https://github.com/microsoft/IoT-For-Beginners/issues)
|
|
2. คลิก "New Issue"
|
|
3. ระบุ:
|
|
- คำอธิบายปัญหาอย่างชัดเจน
|
|
- ขั้นตอนการทำซ้ำ
|
|
- ข้อความข้อผิดพลาด (ข้อความเต็ม)
|
|
- เวอร์ชันฮาร์ดแวร์/ซอฟต์แวร์
|
|
- สิ่งที่คุณได้ลองแล้ว
|
|
- สกรีนช็อตถ้ามีความเกี่ยวข้อง
|
|
|
|
### 4. เข้าร่วมชุมชน
|
|
- **Discord:** [Microsoft Foundry Discord](https://discord.gg/nTYy5BXMWG)
|
|
- **Microsoft Learn:** [Microsoft Learn IoT](https://docs.microsoft.com/learn/browse/?products=azure-iot)
|
|
|
|
### 5. ส่งรายงานบั๊กที่ดี
|
|
รายงานบั๊กที่ดีควรมี:
|
|
- **สภาพแวดล้อม:** ระบบปฏิบัติการ, เวอร์ชัน Python, ฮาร์ดแวร์ที่ใช้
|
|
- **ขั้นตอนการทำซ้ำ:** ขั้นตอนที่แน่นอนที่ทำให้เกิดปัญหา
|
|
- **พฤติกรรมที่คาดหวัง:** สิ่งที่ควรจะเกิดขึ้น
|
|
- **พฤติกรรมที่เกิดขึ้นจริง:** สิ่งที่เกิดขึ้นจริง
|
|
- **ข้อความแสดงข้อผิดพลาด:** ข้อความข้อผิดพลาดเต็มรูปแบบ ไม่ใช่ภาพหน้าจอ
|
|
- **โค้ด:** ตัวอย่างโค้ดเล็กน้อยที่ทำให้เกิดปัญหา
|
|
|
|
---
|
|
|
|
## เคล็ดลับสำหรับการป้องกัน
|
|
|
|
### แนวทางปฏิบัติที่ดีที่สุดทั่วไป
|
|
1. **สำรองข้อมูล:** สำรองข้อมูลการ์ด SD/โค้ดที่ทำงานได้เป็นประจำ
|
|
2. **บันทึกการเปลี่ยนแปลง:** จดบันทึกสิ่งที่ใช้งานได้ในคอมเมนต์
|
|
3. **ควบคุมเวอร์ชัน:** ใช้ git เพื่อติดตามการเปลี่ยนแปลงโค้ด
|
|
4. **ทดสอบทีละน้อย:** ทดสอบการเปลี่ยนแปลงเล็กๆ ก่อนรวมกัน
|
|
5. **อ่านข้อความข้อผิดพลาด:** ข้อความมักบอกอย่างชัดเจนว่าผิดตรงไหน
|
|
6. **อัปเดตเป็นประจำ:** รักษาซอฟต์แวร์/เฟิร์มแวร์ให้ทันสมัย
|
|
7. **ใช้ส่วนประกอบคุณภาพ:** หลีกเลี่ยงสายไฟ/แหล่งจ่ายไฟราคาถูก
|
|
8. **จ่ายไฟเสถียร:** ใช้แหล่งจ่ายไฟที่เหมาะสม (โดยเฉพาะ Pi)
|
|
|
|
### การทำงานในกระบวนการพัฒนา
|
|
1. **เริ่มจากสิ่งง่ายๆ:** เริ่มด้วยโค้ดตัวอย่างที่ใช้งานได้
|
|
2. **เปลี่ยนแปลงทีละอย่าง:** ง่ายต่อการค้นหาสาเหตุที่ทำให้เสีย
|
|
3. **ทดสอบบ่อยๆ:** ตรวจจับปัญหาได้เร็ว
|
|
4. **เก็บให้เรียบร้อย:** จัดระเบียบไฟล์และโค้ดอย่างมีระบบ
|
|
5. **คอมเมนต์โค้ด:** ตัวคุณในอนาคตจะชื่นชม
|
|
|
|
---
|
|
|
|
*คำแนะนำแก้ปัญหานี้ได้รับการดูแลโดยชุมชน หากคุณพบวิธีแก้ปัญหาที่ไม่มีอยู่ในนี้ โปรดพิจารณา [ร่วมสนับสนุน](CONTRIBUTING.md) เพื่อช่วยเหลือผู้อื่น!*
|
|
|
|
---
|
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
|
**ข้อจำกัดความรับผิดชอบ**:
|
|
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้มีความถูกต้องสูงสุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความคลาดเคลื่อน เอกสารต้นฉบับในภาษาต้นทางถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลสำคัญแนะนำให้ใช้บริการแปลโดยผู้เชี่ยวชาญทางภาษา เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่ผิดพลาดใด ๆ ที่เกิดจากการใช้การแปลนี้
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |