私はUbuntuオペレーティングシステムにROS2がインストールされており、すべてRaspberry Pi 4で動作するロボットを設計しました。別のesp32はモーターを制御するために使用されます。ロボットは防水シールされています。新しい場所に移動するたびに、電源を入れてWi-Fi資格情報を再設定してWi-Fiに接続する必要があります。私のロボットにはUSB出力接続のみがあり、ネットワークポートにアクセスできません。
既存のネットワークが機能していない場合、ロボットを新しいネットワークに接続するにはどうすればよいですか?可能であれば、Captive Portalシリーズで何かを探しています。 esp32で設定を作成し、そこから資格情報を読み取る方法があるかもしれません。他の提案も役に立ちます。助けてください。
答え1
まあ、2つのことが考えられます...
ある種の装置があると安全に想定できる場合しなければならない制御しているPCにアクセスできる場合は少し簡単になります。制御するコンピュータに数回pingを試みるループを実装できます。成功すれば良いことで、そうでなければ新しいネットワークを試してみる時間です。これを行うには、次のスクリプトを使用できます。
- 「カウント」を設定できるコマンド
-c
にフラグを使用します(したがって無限のpingをしません)。あなたが到達可能でなければならないことをping
指します。ping
- ping コマンドの終了値を確認してください。デバイスに到達できない場合、pingはエラー値で終了します。
- エラー値が表示されたら、新しいネットワークを試してください。
nmtui
このようなものを使用することができ、おそらくUbuntuにすでにインストールされています。 - 1に進みます。
次に、関数をbashスクリプトにラップし、systemctlサービスを作成してシステム起動時にスクリプトを起動します。
だからこれは可能です。しかし、私は個人的に私のロボットがロボットとつながる方法が非常にダイナミックになるという考えが好きではなく、これが実際に私たちが解決しようとしているハードウェアの問題であるという事実も気に入らません。ソフトウェアソリューションの質問を使用して解決します。ここでハードウェアの問題は、一度水に対して密封されると、ロボットと相互作用することは不可能であるということです。
この問題を解決するには、防水データポートの追加を検討する必要があります。防水ケーブルアセンブリを購入し、USBケーブルを半分に切断します。その後、対応するUSBケーブルを防水接続の片側にはんだ付けすることで、USBケーブルの片側をケースに接続してオンボードPCに接続し、もう一方をUSBアダプタに接続できます。 - コンピュータのイーサネットアダプタを制御します。はんだ付けを容易にするために、イーサネットUSBを使用することをお勧めします。このアプローチは、ボットが他に接続されていなくても常にSSHを介して接続できるポートを提供します。これは常に価値があります。
答え2
これについて私が提案するのは、ラップトップでシステムが検出したときに自動的に接続される一時/バックアップ/特殊ネットワークとして提供できる既知のWi-Fiアクセス情報を持つことです。これにより、プライベートネットワークでインフラストラクチャネットワークのWi-Fi設定を構成できます。その後、特別に設定されたネットワークが閉じられ、センサが設定されたインフラストラクチャネットワークに接続されます。