【Raspberry Pi Zero 2 W】謎のパケットロス

RX-7車載の Raspberry Pi Zero 2 W(以降rx7pi) だが、家の Wi-Fi に繋ぐと、謎のパケットロスが発生する。

rx7pi はプログラムで次の機能を持たせている。

  • 車載警報装置からのイヤホンマイク端子ON信号を GPIO で検出するGPIO監視
  • Bluetooth ヘッドフォン接続時に警戒モードをOFFにするBluetooth監視
  • GPSデータを読み取り、100m移動したらメールを飛ばすGPS監視

これらの機能のプログラムを走らせると、Wi-Fiのパケットロスが発生する。

GPIOの信号線半田付けする時に、チップ抵抗まで盛ってしまい、ショートさせたので、まだショート箇所が残ってるのかと半田吸い取り線をヨドバシから買って、信号線の付け直しをしてみたが症状変わらず。

GPIO監視だけのテストプログラムを動かしたら発生しないので、GPIOでは無いようだ。

端末から監視プログラムを動かすと、

携帯電話へ bluetooth テザリングで接続してなかったらするようにしてるが、家なので、携帯電話は有効にしていない。

ちょっと気になるので、bluetooth テザリング接続部をコメントアウトすると、パケットロスが無くなった。

この部分でパケットロスが発生しとるようで、bluetooth と Wi-Fiは同一チップで制御しとるから、大方、bluetooth の制御コマンドを送ると、Wi-Fi の回路の処理が停止して影響が出とるのかな?

安物の Wi-Fiチップだと、回路共通部分での競合ってありそうで、嫌だのう。

今まではUSBテザリングを使っていたが、スマートフォンの画面ロックを解除しないと、通信が確立しないので、朝、システムを起動して、画面ロック解除を忘れて、その後、通信不可ってのが嫌で、bluetooth テザリングにしたんだよなあ。

車載機としては、bluetooth テザリングが通信の生命線なので、接続断の場合は、何度もリトライを繰り返す処理にしてるけど、Wi-Fi 接続時はキャンセルする例外を入れんといかんかな?

Wi-Fi繋がってたら、bluetooth テザリング接続をしないようにした。
これで謎のパケットロスは解消した。 🙂