|
|
# トラブルシューティングガイド
|
|
|
|
|
|
このガイドは、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.org](https://www.python.org/downloads/)から最新のPython 3をダウンロードする
|
|
|
2. Windowsでインストール中に「Add Python to PATH」にチェックを入れる
|
|
|
3. インストールを確認する:
|
|
|
```bash
|
|
|
python3 --version
|
|
|
```
|
|
|
|
|
|
#### 問題: 複数のPythonバージョンが競合している
|
|
|
**症状:** 間違ったPythonバージョンが実行される、パッケージが間違った場所にインストールされる
|
|
|
|
|
|
**解決策:**
|
|
|
- **Windows:** Python 3を明示的に呼び出すには`py -3`を使う
|
|
|
- **macOS/Linux:** `python3`を使う
|
|
|
- プロジェクトごとに必ず仮想環境を作成して利用する
|
|
|
|
|
|
#### 問題: pipコマンドが見つからない
|
|
|
**エラー:** `'pip' は内部コマンドまたは外部コマンドとして認識されていません`
|
|
|
|
|
|
**解決策:**
|
|
|
1. `pip`の代わりに`pip3`を試す
|
|
|
2. または`python -m pip`、`python3 -m pip`を使う
|
|
|
3. PythonがPATHに追加されているか確認する(Pythonを再インストールし、オプションをチェック)
|
|
|
|
|
|
### VS Codeと拡張機能
|
|
|
|
|
|
#### 問題: Pylance拡張が動作しない
|
|
|
**症状:** PythonのIntelliSense、コード補完、型チェックが動かない
|
|
|
|
|
|
**解決策:**
|
|
|
1. VS Codeのコマンドパレットを開く (`Ctrl+Shift+P` または `Cmd+Shift+P`)
|
|
|
2. 「Python: Select Interpreter」を実行
|
|
|
3. 適切なPythonインタープリター(仮想環境を使っている場合はそちら)を選択
|
|
|
4. VS Codeウィンドウをリロードする
|
|
|
|
|
|
#### 問題: VS Codeが仮想環境を検出しない
|
|
|
**症状:** 間違ったPythonインタープリターが選択されている
|
|
|
|
|
|
**解決策:**
|
|
|
1. ターミナルで仮想環境を有効化しているか確認
|
|
|
2. コマンドパレットを開いて「Python: Select Interpreter」を実行
|
|
|
3. `.venv`フォルダー内のインタープリターを選択
|
|
|
4. ステータスバー(左下)に正しいPythonバージョンが表示されているか確認
|
|
|
|
|
|
### PlatformIO(Wio Terminal)
|
|
|
|
|
|
#### 問題: PlatformIOのインストールが失敗する
|
|
|
**エラー:** PlatformIOインストール中にさまざまなエラーが発生
|
|
|
|
|
|
**解決策:**
|
|
|
1. VS Codeが最新か確認
|
|
|
2. 先にC/C++拡張をインストールする
|
|
|
3. PlatformIOをインストール後にVS Codeを再起動
|
|
|
4. インターネット接続を確認(PlatformIOは大きなファイルをダウンロードする)
|
|
|
|
|
|
#### 問題: PlatformIOがボードを認識しない
|
|
|
**症状:** Wio Terminalにコードをアップロードできない
|
|
|
|
|
|
**解決策:**
|
|
|
1. 別のUSBケーブルを試す(一部のケーブルは充電専用)
|
|
|
2. デバイスマネージャ(Windows)や`ls /dev/tty*`(macOS/Linux)で接続確認
|
|
|
3. USBドライバをインストールまたは更新する
|
|
|
4. 別のUSBポートを試す
|
|
|
5. Wio Terminalの電源スイッチを素早く2回スライドさせてブートローダーモードに入る
|
|
|
|
|
|
#### 問題: PlatformIOでコンパイルエラー
|
|
|
**エラー:** `fatal error: Arduino.h: No such file or directory`
|
|
|
|
|
|
**解決策:**
|
|
|
1. プロジェクト内の`.pio`フォルダーを削除
|
|
|
2. コマンドパレットから「PlatformIO: Rebuild」を実行
|
|
|
3. `platformio.ini`に正しいボード設定があるか確認:
|
|
|
```ini
|
|
|
[env:seeed_wio_terminal]
|
|
|
platform = atmelsam
|
|
|
board = seeed_wio_terminal
|
|
|
framework = arduino
|
|
|
```
|
|
|
|
|
|
### Groveライブラリ
|
|
|
|
|
|
#### 問題: Raspberry PiでGroveライブラリのインポート失敗
|
|
|
**エラー:** `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. 仮想環境を使っている場合はグローバルにインストールするか、ライブラリをコピーする必要があるかもしれません
|
|
|
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バスにデバイスが見えるか確認
|
|
|
4. 別のGroveケーブルを試す
|
|
|
5. Grove Base HatがRaspberry PiのGPIOピンに正しく装着されているか確認
|
|
|
|
|
|
---
|
|
|
|
|
|
## ハードウェアの問題
|
|
|
|
|
|
### Raspberry Pi
|
|
|
|
|
|
#### 問題: Raspberry Piが起動しない
|
|
|
**症状:** 画面が映らない、LEDが点灯しない、虹色画面が出る
|
|
|
|
|
|
**解決策:**
|
|
|
1. **電源を確認:** Pi 4には公式の5V 3A USB-C電源を使用する
|
|
|
2. **SDカードの問題:**
|
|
|
- SDカードをフォーマットし、Raspberry Pi OSを再インストール
|
|
|
- 別のSDカードを試す(推奨ブランドを使用)
|
|
|
- SDカードが正しく挿入されているか確認
|
|
|
3. **HDMI接続を確認:** Pi 4の両方のHDMIポートを試す。電源に近いHDMIポートを使う
|
|
|
|
|
|
#### 問題: Raspberry PiにSSH接続できない
|
|
|
**症状:** 接続拒否、タイムアウト
|
|
|
|
|
|
**解決策:**
|
|
|
1. SSHを有効にする:
|
|
|
- Raspberry Pi ImagerでSDカードを書き込む際に詳細オプションでSSHを設定
|
|
|
- もしくはブートパーティションに空のファイル`ssh`(拡張子なし)を作成
|
|
|
2. PiのIPアドレスを調べる:
|
|
|
- ルーターの接続機器リストを確認
|
|
|
- `ping raspberrypi.local`(mDNSが使える場合)
|
|
|
- `nmap`やAngry IP Scannerなどのネットワークスキャンツールを使う
|
|
|
3. ネットワークを確認:
|
|
|
- PiとPCが同じネットワークにあるか
|
|
|
- WiFiではなくEthernet接続を試す
|
|
|
4. ユーザー名・パスワードを確認(デフォルトはユーザー名`pi`、パスワード`raspberry`)
|
|
|
|
|
|
#### 問題: Grove Base Hatが認識されない
|
|
|
**症状:** センサーが動作しない、I2Cエラー
|
|
|
|
|
|
**解決策:**
|
|
|
1. Base HatがすべてのGPIOピンにしっかり装着されているか確認
|
|
|
2. PiまたはBase Hatのピンが曲がっていないか確認
|
|
|
3. I2Cインターフェースを有効にする:
|
|
|
```bash
|
|
|
sudo raspi-config nonint do_i2c 0
|
|
|
sudo reboot
|
|
|
```
|
|
|
4. I2Cが動作しているか確認: `i2cdetect -y 1`
|
|
|
|
|
|
#### 問題: Raspberry Piが遅い
|
|
|
**症状:** 画面の動作が遅い、応答が鈍い
|
|
|
|
|
|
**解決策:**
|
|
|
1. SDカードの速度を確認(Class 10以上か、USB接続のSSD推奨)
|
|
|
2. ディスク容量を空ける: `df -h`で確認し、不要ファイルを削除
|
|
|
3. カメラやディスプレイを多用しない場合は`raspi-config`でGPUメモリを減らす
|
|
|
4. 不要なアプリケーションを閉じる
|
|
|
5. Pi 3以前のモデルを使っている場合はRAMの多いPi 4へのアップグレードを検討
|
|
|
|
|
|
### Wio Terminal
|
|
|
|
|
|
#### 問題: Wio Terminalの画面が真っ黒のまま
|
|
|
**症状:** コードをアップロードしても画面が表示されない
|
|
|
|
|
|
**解決策:**
|
|
|
1. コードがディスプレイを初期化しているか確認(TFT_eSPIライブラリ利用)
|
|
|
2. [Seeed Wiki](https://wiki.seeedstudio.com/Wio-Terminal-Getting-Started/)からWio Terminalのファームウェアを更新
|
|
|
3. ディスプレイ初期化コードを追加:
|
|
|
```cpp
|
|
|
#include <TFT_eSPI.h>
|
|
|
TFT_eSPI tft;
|
|
|
tft.begin();
|
|
|
tft.fillScreen(TFT_BLACK);
|
|
|
```
|
|
|
4. PlatformIOからサンプルスケッチをアップロードしてハードウェアをテスト
|
|
|
|
|
|
#### 問題: Wio TerminalのWiFiが動かない
|
|
|
**症状:** WiFiに接続できない、ネットワークエラー
|
|
|
|
|
|
**解決策:**
|
|
|
1. [Wio Terminal WiFiファームウェア更新ガイド](https://wiki.seeedstudio.com/Wio-Terminal-Network-Overview/)を参照してWiFiファームウェアを更新
|
|
|
2. WiFiのSSIDとパスワードが正しいか確認
|
|
|
3. Wio Terminalは2.4GHzのWiFiのみ対応(5GHzは不可)
|
|
|
4. ルーターに近づけて電波強度を上げる
|
|
|
5. 一部企業向け/WPA-Enterpriseネットワークは非対応の可能性あり
|
|
|
|
|
|
#### 問題: Wio TerminalがPCで認識されない
|
|
|
**症状:** USBデバイスとして検出されない
|
|
|
|
|
|
**解決策:**
|
|
|
1. 別のUSBケーブルを試す(充電専用ケーブルは使わない)
|
|
|
2. 電源スイッチを素早く2回下にスライドしてブートローダーモードに入る
|
|
|
- 青色LEDが点滅し、デバイスマネージャに「Arduino」として表示される
|
|
|
3. Windowsの場合、[Seeed USBドライバー](https://wiki.seeedstudio.com/Driver_for_Seeeduino/)をダウンロードしてインストール
|
|
|
4. 別のUSBポートを試し、USBハブは避ける
|
|
|
5. システムのUSBドライバーを更新する
|
|
|
|
|
|
#### 問題: Wio Terminalのセンサーが動かない
|
|
|
**症状:** Groveセンサーからデータが取得できない
|
|
|
|
|
|
**解決策:**
|
|
|
1. Groveケーブルの接続を確認
|
|
|
2. 使用しているGroveポート(左側か右側か)を確認
|
|
|
3. センサー用の正しいライブラリをインクルードする
|
|
|
4. センサーの電源要件を確認
|
|
|
5. ライブラリのサンプルコードでセンサーをテスト
|
|
|
|
|
|
### 仮想デバイス(CounterFit)
|
|
|
|
|
|
#### 問題: CounterFitアプリが起動しない
|
|
|
**エラー:** CounterFit起動時にさまざまなPythonエラーが発生
|
|
|
|
|
|
**解決策:**
|
|
|
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にセンサーが表示されない
|
|
|
**症状:** 作成したセンサーがCounterFit UI上に現れない
|
|
|
|
|
|
**解決策:**
|
|
|
1. コード実行前にCounterFit UIでセンサーを作成する
|
|
|
2. ブラウザのページをリフレッシュ
|
|
|
3. センサーの種類がコードの期待と一致しているか確認
|
|
|
4. ブラウザキャッシュをクリア
|
|
|
|
|
|
---
|
|
|
|
|
|
## 接続の問題
|
|
|
|
|
|
### WiFi接続
|
|
|
|
|
|
#### 問題: デバイスがWiFiに接続できない
|
|
|
**症状:** 接続がタイムアウト、認証失敗
|
|
|
|
|
|
**解決策:**
|
|
|
1. **SSIDとパスワードを確認:** 資格情報が正しいか検証
|
|
|
2. **WiFi帯域:** ほとんどのIoTデバイスは2.4GHzのみ対応(5GHzは不可)
|
|
|
3. **ルーター設定:**
|
|
|
- APアイソレーションが有効なら無効にする
|
|
|
- WPA2-PSKセキュリティを使う(WPA3、WEP、オープンネットワークは避ける)
|
|
|
- DHCPが有効か確認
|
|
|
4. **隠しSSID:** SSIDが非表示の場合、明示的に設定が必要
|
|
|
5. **信号強度:** デバイスをルーターに近づける
|
|
|
6. **干渉:** 他の機器、電子レンジ、壁などの干渉を疑う
|
|
|
|
|
|
#### 問題: WiFi接続が頻繁に切れる
|
|
|
**症状:** 接続が断続的に切れる
|
|
|
|
|
|
**解決策:**
|
|
|
1. ルーターの安定性を確認し、再起動を検討
|
|
|
2. デバイスのファームウェアを更新
|
|
|
3. DHCPではなく静的IPを使う
|
|
|
4. ルーターに近づくかWiFi中継器を設置
|
|
|
5. 他の機器による干渉を確認
|
|
|
6. 電源供給が十分か確認(特にRaspberry Pi)
|
|
|
|
|
|
### クラウドサービス
|
|
|
|
|
|
#### 問題: Azure IoT Hubに接続できない
|
|
|
**エラー:** 認証失敗、接続拒否
|
|
|
|
|
|
**解決策:**
|
|
|
1. **資格情報の確認:**
|
|
|
- 接続文字列が正しいかチェック
|
|
|
- 文字列に余計な空白や改行が含まれていないか確認
|
|
|
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ポータルで関数のログを確認
|
|
|
4. Event Hub互換エンドポイントが正しく設定されているか確認
|
|
|
5. メッセージフォーマットが関数の期待に合致しているか確認
|
|
|
6. Function Appのサービスプラン(消費プランか専用プランか)を確認
|
|
|
|
|
|
### MQTT
|
|
|
#### 問題: MQTT接続失敗
|
|
|
**エラー:** 接続拒否、認証失敗
|
|
|
|
|
|
**解決策:**
|
|
|
1. **ブローカーアドレス:** ブローカーのURL/IPが正しいか確認
|
|
|
2. **ポート:** ポート番号を確認(暗号化なしは1883、TLSは8883)
|
|
|
3. **認証:** 必要ならユーザー名/パスワードを確認
|
|
|
4. **TLS/SSL:** 証明書が有効かつ信頼されているか確認
|
|
|
5. **ファイアウォール:** ポートがブロックされていないか確認
|
|
|
6. **MQTTクライアントでテスト:** MQTT Explorerやmosquitto_pub/subを使ってテスト
|
|
|
|
|
|
#### 問題: MQTTメッセージが届かない
|
|
|
**症状:** メッセージは公開されているが、購読者に届かない
|
|
|
|
|
|
**解決策:**
|
|
|
1. **トピック名:** 購読者のトピックが公開者のものと完全に一致しているか確認
|
|
|
2. **QoSレベル:** 0ではなくQoS 1または2を試す
|
|
|
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. **リボンケーブルを確認:** カメラケーブルが正しく挿入されていることを確認
|
|
|
- Pi Zeroの場合は青い面がUSBポート側
|
|
|
- Pi 4の場合はUSBポートと反対側が青い面
|
|
|
3. **ファームウェアを更新:**
|
|
|
```bash
|
|
|
sudo apt update
|
|
|
sudo apt full-upgrade
|
|
|
sudo reboot
|
|
|
```
|
|
|
4. **カメラをテスト:**
|
|
|
```bash
|
|
|
raspistill -o test.jpg
|
|
|
```
|
|
|
|
|
|
#### 問題: カメラ画像の画質が悪い
|
|
|
**症状:** ぼやけている、暗い、または色あせている画像
|
|
|
|
|
|
**解決策:**
|
|
|
1. **フォーカス:** レンズの保護フィルムを剥がし、調整可能ならフォーカスを調整
|
|
|
2. **照明:** 十分な照明を確保
|
|
|
3. **カメラ設定:** コード内で露出、ISO、ホワイトバランスを調整
|
|
|
4. **安定性:** カメラを固定し、必要なら三脚を使用
|
|
|
5. **解像度:** カメラの最大解像度を超えないように設定
|
|
|
|
|
|
### マイクとスピーカー
|
|
|
|
|
|
#### 問題: 音声入力/出力がない
|
|
|
**症状:** マイクが録音しない、スピーカーから音が出ない
|
|
|
|
|
|
**解決策:**
|
|
|
1. **接続を確認:** オーディオ機器が正しく接続されているか確認
|
|
|
2. **ハードウェアテスト:**
|
|
|
- スピーカー: `speaker-test -t wav -c 2`
|
|
|
- マイク: `arecord -l`で一覧、`arecord test.wav`で録音
|
|
|
3. **音量設定:** 音量を確認して調整
|
|
|
```bash
|
|
|
alsamixer
|
|
|
```
|
|
|
4. **オーディオデバイスの選択:** コード内で正しいデバイスを指定
|
|
|
5. **ドライバー問題:** ALSAの更新やオーディオドライバの再インストール
|
|
|
|
|
|
#### 問題: ReSpeakerハットが動作しない
|
|
|
**症状:** オーディオデバイスが検出されない
|
|
|
|
|
|
**解決策:**
|
|
|
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. **接続確認:** ハットがGPIOピンに正しく装着されていることを確認
|
|
|
|
|
|
---
|
|
|
|
|
|
## 開発環境の問題
|
|
|
|
|
|
### VS Code
|
|
|
|
|
|
#### 問題: ターミナルが仮想環境を自動で有効化しない
|
|
|
**症状:** ターミナルが開くがvenvが有効化されていない
|
|
|
|
|
|
**解決策:**
|
|
|
1. **Pythonインタプリタを設定:** コマンドパレット → "Python: Select Interpreter" → venvを選択
|
|
|
2. インタプリタ選択後VS Codeを再起動
|
|
|
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. 現在の環境にライブラリがインストールされていることを確認
|
|
|
2. VS Codeウィンドウをリロード
|
|
|
3. Pythonインタプリタが正しいか確認
|
|
|
4. 型スタブがあればインストール: `pip install types-<library-name>`
|
|
|
|
|
|
### Python仮想環境
|
|
|
|
|
|
#### 問題: 仮想環境が作成できない
|
|
|
**エラー:** `The virtual environment was not created successfully`
|
|
|
|
|
|
**解決策:**
|
|
|
1. **venvモジュールをインストール:**
|
|
|
- Ubuntu/Debian: `sudo apt install python3-venv`
|
|
|
- macOS: Pythonに標準で含まれる
|
|
|
- Windows: 全てのコンポーネント付きでPythonを再インストール
|
|
|
2. **Pythonのインストールを確認:** Pythonが正常にインストールされているか
|
|
|
3. **フルパスで実行:** `python3 -m venv .venv` で明示的にpython3を使う
|
|
|
|
|
|
#### 問題: パッケージが誤った場所にインストールされる
|
|
|
**症状:** パッケージインストール後にインポートエラー
|
|
|
|
|
|
**解決策:**
|
|
|
1. **venvが有効化されているか確認:** プロンプトに`(.venv)`が表示されているか
|
|
|
2. **pipの場所を確認:** `which pip`が`.venv/bin/pip`を指しているか
|
|
|
3. **venv内で再インストール:** venvを有効化後 `pip install <package>`
|
|
|
4. **venv内でsudoを使わない**
|
|
|
|
|
|
#### 問題: 仮想環境が移動や別PCで動作しない
|
|
|
**症状:** 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 # またはWindowsでactivate.bat
|
|
|
pip install -r requirements.txt
|
|
|
```
|
|
|
|
|
|
### 依存関係
|
|
|
|
|
|
#### 問題: パッケージインストールが失敗する
|
|
|
**エラー:** インストール中に様々なpipエラー
|
|
|
|
|
|
**解決策:**
|
|
|
1. **pipを更新する:**
|
|
|
```bash
|
|
|
pip install --upgrade pip
|
|
|
```
|
|
|
2. **ビルドツールのインストール:**
|
|
|
- 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>`
|
|
|
|
|
|
#### 問題: 依存関係の衝突
|
|
|
**エラー:** `ERROR: pip's dependency resolver does not currently take into account all the packages that are installed`
|
|
|
|
|
|
**解決策:**
|
|
|
1. **プロジェクトごとに新規仮想環境を使用**
|
|
|
2. **パッケージを更新:** `pip install --upgrade <package>`
|
|
|
3. **依存関係を確認:** `pip check`で衝突を探す
|
|
|
4. **互換性のあるバージョンをインストール:** requirements.txtでバージョン範囲を指定
|
|
|
|
|
|
---
|
|
|
|
|
|
## パフォーマンスの問題
|
|
|
|
|
|
### 問題: コードの実行が遅い
|
|
|
**症状:** 遅延、タイムアウト、応答なしの挙動
|
|
|
|
|
|
**解決策:**
|
|
|
1. **センサー読み取り頻度を減らす:** 頻繁に読み取りすぎない
|
|
|
2. **ループを最適化:** ビジーウェイトを避け、sleep()や遅延を使う
|
|
|
3. **メモリ問題:**
|
|
|
- 不要なアプリを終了
|
|
|
- ストレージを空ける
|
|
|
- Piで`top`や`htop`を使って監視
|
|
|
4. **SDカード速度:** より高速なSDカードやSSDを使う
|
|
|
5. **ネットワーク遅延:** ネットワーク呼び出しを非同期で行う
|
|
|
|
|
|
### 問題: メモリ不足エラー
|
|
|
**エラー:** `MemoryError` またはシステムがフリーズする
|
|
|
|
|
|
**解決策:**
|
|
|
1. **Raspberry Piの場合:**
|
|
|
- 不要なアプリを閉じる
|
|
|
- スワップ領域を増やす
|
|
|
- 軽量OS(Lite版)を使う
|
|
|
- RAMを増設(Pi 4は2/4/8GBオプションあり)
|
|
|
2. **Wio Terminalの場合:**
|
|
|
- バッファサイズを減らす
|
|
|
- 画像を小さくする
|
|
|
- 文字列の使用を最適化
|
|
|
- メモリリークがないか確認(解放されていないメモリ)
|
|
|
|
|
|
### 問題: データの欠損や破損
|
|
|
**症状:** メッセージの欠落、ファイルの破損
|
|
|
|
|
|
**解決策:**
|
|
|
1. **SDカード関連:**
|
|
|
- 高品質のSDカードを使う(安価・偽物を避ける)
|
|
|
- 定期的なバックアップ
|
|
|
- 正常シャットダウン(電源を突然切らない)
|
|
|
2. **バッファオーバーフロー:** コード内のバッファサイズを増やす
|
|
|
3. **ネットワークの信頼性:** リトライ処理やエラーハンドリングを実装
|
|
|
4. **QoSの利用:** 重要なメッセージにはMQTTのQoS 1または2を使用
|
|
|
|
|
|
---
|
|
|
|
|
|
## よくあるエラーメッセージ
|
|
|
|
|
|
### `ModuleNotFoundError: No module named 'X'`
|
|
|
**原因:** パッケージがインストールされていないか、仮想環境が有効化されていない
|
|
|
|
|
|
**解決策:**
|
|
|
```bash
|
|
|
pip install X
|
|
|
```
|
|
|
まず仮想環境が有効化されていることを確認してください。
|
|
|
|
|
|
### Linux/macOSでの`Permission denied`
|
|
|
**原因:** 権限不足またはファイルアクセス権の問題
|
|
|
|
|
|
**解決策:**
|
|
|
- システム操作の場合: `sudo`を使う
|
|
|
- pipの場合: venvを有効化してから使い、sudoは使わない
|
|
|
- シリアルポートの場合: ユーザーを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. 一貫したインデントを使う(Python標準は4スペース)
|
|
|
2. エディタ設定でタブではなくスペースを使用
|
|
|
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:** Groveコンポーネントの情報はこちら [Seeed Studio Wiki](https://wiki.seeedstudio.com/)
|
|
|
|
|
|
### 2. 類似の問題を検索
|
|
|
- **GitHub Issues:** [既存の問題](https://github.com/microsoft/IoT-For-Beginners/issues)を検索
|
|
|
- **Stack Overflow:** エラーメッセージで検索
|
|
|
- **デバイスフォーラム:** Raspberry PiフォーラムやArduinoフォーラムを確認
|
|
|
|
|
|
### 3. GitHub Issueを作成
|
|
|
解決策が見つからない場合:
|
|
|
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. 良いバグレポートの書き方
|
|
|
良いバグレポートには以下が含まれます:
|
|
|
- **環境:** OS、Pythonバージョン、使用したハードウェア
|
|
|
- **再現手順:** 問題を引き起こす正確な手順
|
|
|
- **期待される動作:** 期待される動作内容
|
|
|
- **実際の動作:** 実際に起きている動作
|
|
|
- **エラーメッセージ:** スクリーンショットではなく、完全なエラーテキスト
|
|
|
- **コード:** 問題を再現する最小限のコード例
|
|
|
|
|
|
---
|
|
|
|
|
|
## 予防のためのヒント
|
|
|
|
|
|
### 一般的なベストプラクティス
|
|
|
1. **バックアップを保持:** 動作しているSDカードやコードの定期的なバックアップ
|
|
|
2. **変更を記録:** 何が動作するかをコメントに記録
|
|
|
3. **バージョン管理:** gitを使ってコードの変更を追跡
|
|
|
4. **段階的にテスト:** 小さな変更を組み合わせる前にテスト
|
|
|
5. **エラーメッセージを読む:** 多くの場合、何が間違っているか正確に教えてくれる
|
|
|
6. **定期的に更新:** ソフトウェアやファームウェアを最新に保つ
|
|
|
7. **良質な部品を使う:** 安価なケーブルや電源を避ける
|
|
|
8. **安定した電源:** 適切な電源を使用(特にPiの場合)
|
|
|
|
|
|
### 開発ワークフロー
|
|
|
1. **単純に始める:** 動作するサンプルコードから始める
|
|
|
2. **一度にひとつの変更:** 何が壊れるか見つけやすい
|
|
|
3. **頻繁にテスト:** 問題を早期に発見
|
|
|
4. **整理整頓:** ファイルやコードを論理的に整理する
|
|
|
5. **コードにコメント:** 将来の自分に感謝される
|
|
|
|
|
|
---
|
|
|
|
|
|
*このトラブルシューティングガイドはコミュニティによって管理されています。ここに掲載されていない問題の解決策を見つけた場合は、他の人のために[貢献](CONTRIBUTING.md)をご検討ください!*
|
|
|
|
|
|
---
|
|
|
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
|
|
**免責事項**:
|
|
|
本書類はAI翻訳サービス「Co-op Translator」(https://github.com/Azure/co-op-translator)を使用して翻訳されています。正確性には努めておりますが、自動翻訳には誤りや不正確な部分が含まれる場合があります。正式な情報は原文(原言語)の文書が権威ある情報源とみなされるべきです。重要な情報については専門の人間による翻訳をお勧めします。本翻訳の利用に起因するいかなる誤解や誤訳についても、当方は一切の責任を負いかねます。
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |