Pi Pico W にサーバーを建ててクライアントと双方向通信


前にHTTPリクエスト用のWebサーバーを建ててみましたが、今回はクライアントから直接接続してみます。

こんな感じ。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Clients のPico W ではMicroPython、PCやRaspberry Pi 、Andoroid 端末(スマホなど)ではCPython を使います。

スマホではコンソールアプリのTermux からPython を使います。

 


元ネタ

Wireless Communication Between Two Raspberry Pi Pico W Boards

上記サイトの例では、クライアントが定期的にメッセージを送るとサーバーが適当なRGBのコードを返してくれるので、それを使ってクライアントは3色のLEDを点灯させるというものでした。

ここでは単純に1回メッセージを送信してみるだけにします。

MicroyPython のセットアップはココ参照

ただPico W にはコンソールの類がないので、送信のトリガーとしてプッシュボタンのイベントでメッセージを送信します。

 

それでは、双方向のsocket通信をやってみます。


サーバーとしてのPico W

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Thonny (Python IDE)を使って有機ELディスプレイ用ssd1306ライブラリをインストール

メニュー>ツールー>パッケージを管理を選択

ssd1306で検索して、インストール実行

 

コードはこんな感じで以下の2つを使用

secret.py

 

main.py

 

サーバーを先に起動しておきます。

ディスプレイにサーバーのIPアドレスが表示されます。控えておきます。

以下のコードではサーバーのIPアドレスは192.168.0.24 で記述しています。

各環境に合わせて変更してください。

 


クライアントとしてのPico W

プッシュボタンを押すとメッセージがサーバーに送信され、応答が返されます。Pico にはモニターする手段がないので、応答があればLEDを3回点滅させます。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

コードはこんな感じで以下の2つを使用

secret.py

 

main.py

 

 


クライアントとしてのラズパイやデスクトップPC

Wi-Fi 環境は事前に設定済みとしておきます。

ターミナルから以下を実行

send.py

 

python3 send.py

 


クライアントとしてのアンドロイド・スマホ

スマホはWi-Fi に接続しておきます。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Google Playストア でTermux を検索してインストール

 

 

 

 

 

 

 

Termux を起動

こういうソフトキーボードの入力がしづらいと思われたら、ブルートゥースキーボードを使いましょう(ダイソーでも1000円で売ってます)。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CUI からpython をインストールします。

編集用にnanoインストール

send.pyという名前でファイル作成
nano send.py

以下を実行

python send.py

 

Termuxを抜けるには、exit を実行。

2023/05/23現在のPython のバージョンは3.11.3です。

スマホからいろいろなセンサーを付けた複数のPico W にアクセスして情報を取得するというのは面白い使い方かもしれません。Pico W なら単三電池2本で駆動しますし….。

 


 

 

 

 

 

 

Be the first to comment

Leave a Reply

Your email address will not be published.


*