python3仮想環境でarduinoやesp32のシリアル通信をする

従来python環境にはpython2x系とpython3x系がありましたが2024初頭にpython2x系のサポートが終了しpython3では仮想環境を構築する必要があります。

ChromebookでarduinoIDEを使ってarduinoやM5Stack、esp32のプログラム作成や書き込みをするにはpython3の仮想環境を作成してその中にarduinoIDEをインストールしなければなりません。

スポンサーリンク

chromebook(chromeOS)のlinux

chromebookでlinuxを使えるようにするのはとても簡単で歯車マークの設定から詳細設定 ⇒ デベロッパー ⇒ Linux開発環境を「ON」にするだけでOKです。

この場合ホームディレクトリ名がデフォルトではメールアドレスになりますので適当な名称にしておくといいかも知れません。

kazuは「zizo」としています。

タイトル :『 python3仮想環境でarduinoやesp32のシリアル通信をする』見出し:『 chromebook(chromeOS)のlinux』関連する用語:『python,python3,chromebook,arduino,arduinoide,esp32,M5stack,シリアル通信,serial』画像の説明文 :chromebookでlinuxを使えるようにするのはとても簡単で歯車マークの設定から詳細設定 ⇒ デベロッパー ⇒ Linux開発環境を「ON」にするだけでOKです。この場合ホームディレクトリ名がデフォルトではメールアドレスになりますので適当な名称にしておくといいかも知れません。

Linuxのインストールは数分で終わりlinux(debian)を使えるようになります。

このlinux環境にpython3仮想環境を作成してarduino ideをインストールするという流れになります。

python3 venv のインストール

linuxがインストールされた時点で既にpython3がインストールされています。

しかし、このまま使おうとするとエラーとなりますので、ここで仮想環境を新たに作成することにします。

仮想環境を作成するにはpython3標準ライブラリの「venv:ブイベンブ」を使います。

標準ライブラリ venv はインストールされていませんのでターミナルを起動してインストールします。

タイトル :『 python3仮想環境でarduinoやesp32のシリアル通信をする』見出し:『 python3のインストール』関連する用語:『python,python3,chromebook,arduino,arduinoide,esp32,M5stack,シリアル通信,serial』画像の説明文 :linuxがインストールされた時点で既にpython3がインストールされています。しかし、このまま使おうとするとエラーとなりますので、ここで仮想環境を新たに作成することにします。仮想環境を作成するにはpython3標準ライブラリの「venv:ブイベンブ」を使います。標準ライブラリ venv はインストールされていませんのでターミナルを起動してインストールします。

sudo apt install python3.11-venv

これで仮想環境を構築する準備が整いました。

仮想環境 作成

venv (Python 3 用) を使うと、異なるプロジェクトにそれぞれ別のパッケージをインストールして管理できます。(仮想環境は) 互いに影響を与えない"仮想的な" Python インストール環境を生成します

ここでは標準の.venvフォルダ(ドットがあります)を作成しました。

タイトル :『 python3仮想環境でarduinoやesp32のシリアル通信をする』見出し:『 仮想環境 作成』関連する用語:『python,python3,chromebook,arduino,arduinoide,esp32,M5stack,シリアル通信,serial』画像の説明文 :ここでは標準の.venvフォルダ(ドットがあります)を作成しました。python3 -m venv .venv

python3 -m venv .venv

これで.venv フォルダの中に仮想環境が作成されました。

仮想環境をアクティブにする

次に仮想環境をアクティブ化します。

仮想環境を活性化すると、その仮想環境に特有の python と pip の実行ファイルがシェルの PATH 変数に追加されます

”特有” のpythonというのがpython3最大の特徴と言える訳で仮想環境.venv の中にインストールされた実行フアイルやプログラムなどはこの中でのみ動作し、他の仮想環境(例えば.venv2)やlinux本体には影響を与えません。

逆の言い方をすれば「動かない」ということになります。

仮想環境をアクティブにするには次の一文を加えます。

タイトル :『 python3仮想環境でarduinoやesp32のシリアル通信をする』見出し:『 仮想環境をアクティブにする』関連する用語:『python,python3,chromebook,arduino,arduinoide,esp32,M5stack,シリアル通信,serial』画像の説明文 :次に仮想環境をアクティブ化します。仮想環境を活性化すると、その仮想環境に特有の python と pip の実行ファイルがシェルの PATH 変数に追加されます”特有” のpythonというのがpython3最大の特徴と言える訳で仮想環境.venv の中にインストールされた実行フアイルやプログラムなどはこの中でのみ動作し、他の仮想環境(例えば.venv2)やlinux本体には影響を与えません。

source .venv/bin/activate

仮想環境がアクティブ化されたか確認するためwhich pythonと入力してフルパスが返ってくれば成功です。

arduino ide は仮想環境がアクティブな状態でインストールします。

タイトル :『 python3仮想環境でarduinoやesp32のシリアル通信をする』見出し:『 仮想環境をアクティブにする』関連する用語:『python,python3,chromebook,arduino,arduinoide,esp32,M5stack,シリアル通信,serial』画像の説明文 :仮想環境がアクティブ化されたか確認するためwhich pythonと入力してフルパスが返ってくれば成功です。

arduino ide をダウンロード

arduino ide も進化?していてarduino 1x と arduino 2x とあるようです。

当初arduino 2x をダウンロードして実行してみましたがインストールファイルがなく新たに調べるのがメンドウということでarduino 1xをダウンロードしました。

arduino 2x系にはイメージファイルもあるようですので専用ソフトを入れて使えるようにするのもいいかも知れません。

kazuは従来のターミナルからinstall.shファイルを実行しましたので以下の記述内容はarduino 2x系には対応していません。

ただ展開方法が異なるだけで同じでは?と思いますが確認出来ていませんのでご了承お願いします。

arduino ideは公式サイトからArduino IDE 1.8.19 linux64bitを選択しました。

それぞれのPC環境で選択してください。(chromebookを使っています)

タイトル :『 python3仮想環境でarduinoやesp32のシリアル通信をする』見出し:『 arduino ide をインストール』関連する用語:『python,python3,chromebook,arduino,arduinoide,esp32,M5stack,シリアル通信,serial』画像の説明文 :当初arduino 2x をダウンロードして実行してみましたがインストールファイルがなく新たに調べるのがメンドウということでarduino 1xをダウンロードしました。arduino 2x系にはイメージファイルもあるようですので専用ソフトを入れて使えるようにするのもいいかも知れません。kazuは従来のターミナルからinstall.shファイルを実行しましたので以下の記述内容はarduino 2x系には対応していません。arduino ideは公式サイトからArduino IDE 1.8.19 linux64bitを選択しました。

arduino ideの解凍とインストール

arduino ideのファイルはホームディレクトリ(Linuxファイル)の「zizo_py」フォルダに入れて解凍・インストールしました。

このあたりはお好みでどうぞ!^^;

タイトル :『 python3仮想環境でarduinoやesp32のシリアル通信をする』見出し:『 arduino ideの解凍とインストール』関連する用語:『python,python3,chromebook,arduino,arduinoide,esp32,M5stack,シリアル通信,serial』画像の説明文 :arduino ideのファイルはホームディレクトリ(Linuxファイル)の「zizo_py」フォルダに入れて解凍・インストールしました。このあたりはお好みでどうぞ!^^;

cd コマンドでフォルダを選択して解凍します。

tar Jxfv arduino-1.8.19-linux64.tar.xz

解凍出来たらarduino ide をインストールします。

sudo bash install.sh

これでLinuxアプリにお馴染みのarduinoマークが表示されていればインストール成功です。

タイトル :『 python3仮想環境でarduinoやesp32のシリアル通信をする』見出し:『 arduino ideの解凍とインストール』関連する用語:『python,python3,chromebook,arduino,arduinoide,esp32,M5stack,シリアル通信,serial』画像の説明文 :arduino ideのファイルはホームディレクトリ(Linuxファイル)の「zizo_py」フォルダに入れて解凍・インストールしました。cd コマンドでフォルダを選択して解凍します。解凍出来たらarduino ide をインストールします。これでLinuxアプリにお馴染みのarduinoマークが表示されていればインストール成功です。

arduino ide でesp32を使えるようにする

次にarduino統合開発環境(IDE)でesp32を使えるようにします。

M5Stackもesp32に液晶がついたようなものですのでこれからの作業で全てのM5Stackバージョンが使えるようになります。

それはボードの選択肢の中に全て含まれます。

先ずarduinoを起動します。

当初は英語表示ですので左上「file」から下から2番目(環境設定)を選択します。

言語を日本語に設定します。

次に「追加ボードマネージャのURL」欄に次の一文を貼り付け「OK」をクリックし一旦終了の後再起動することで日本語表示になっています。

https://espressif.github.io/arduino-esp32/package_esp32_index.json

「ツール」から「ボードマネージャ」と進み「全て」の欄右に「esp32」と入力します。

「esp32 by Espressif systems」を選択、インストールします。

タイトル :『 python3仮想環境でarduinoやesp32のシリアル通信をする』見出し:『 arduino ide でesp32を使えるようにする』関連する用語:『python,python3,chromebook,arduino,arduinoide,esp32,M5stack,シリアル通信,serial』画像の説明文 :次にarduino統合開発環境(IDE)でesp32を使えるようにします。M5Stackもesp32に液晶がついたようなものですのでこれからの作業で全てのM5Stackバージョンが使えるようになります。「ツール」から「ボードマネージャ」と進み「全て」の欄右に「esp32」と入力します。「esp32 by Espressif systems」を選択、インストールします。

これでesp32やM5Stackがarduino ide で使えるようになります。

python3環境でシリアル通信

これまでpython3仮想環境を作成し、arduino ideをインストールし、arduinoはもちろん、esp32やM5Stackを使えるようにしてきました。

が…..

このままでは結局どうにもなりません。

それは…

arduinoもesp32もM5Stackもシリアル通信でプログラム(スケッチ)を書き込むようになってるからですね。

しかし…

python3はおろか、venv 仮想環境でシリアル通信なんて!ということでpython3環境でシリアル通信するための参考になる記事が見当たりません。

一番ハマったのがココでした。^^;

ということで最後の関門、python3 venv でシリアル通信できるようにしましょう。

いろいろ試した結果インストール出来たのは…

pip install pyserial

タイトル :『 python3仮想環境でarduinoやesp32のシリアル通信をする』見出し:『 python3環境でシリアル通信』関連する用語:『python,python3,chromebook,arduino,arduinoide,esp32,M5stack,シリアル通信,serial』画像の説明文 :これまでpython3仮想環境を作成し、arduino ideをインストールし、arduinoはもちろん、esp32やM5Stackを使えるようにしてきました。このままでは結局どうにもなりません。arduinoもesp32もM5Stackもシリアル通信でプログラム(スケッチ)を書き込むようになってるからですね。ということで最後の関門、python3 venv でシリアル通信できるようにしましょう。

インストールが終わったら一旦再起動します。

venv環境は非アクティブになっていますのでアクティブ化します。

資料によれば「reactivate」でアクティブ化されるそうですがkazuの環境ではこのコマンドは使えませんでした。

ということで,source .venv/bin/activate を使いました。

シリアルポートが使えるようになったか確認してみます。

python -m serial.tools.list_ports -v

「ポートが見つかりました」と表示されました。

タイトル :『 python3仮想環境でarduinoやesp32のシリアル通信をする』見出し:『 python3環境でシリアル通信』関連する用語:『python,python3,chromebook,arduino,arduinoide,esp32,M5stack,シリアル通信,serial』画像の説明文 :インストールが終わったら一旦再起動します。venv環境は非アクティブになっていますのでアクティブ化します。資料によれば「reactivate」でアクティブ化されるそうですがkazuの環境ではこのコマンドは使えませんでした。ということで,source .venv/bin/activate を使いました。シリアルポートが使えるようになったか確認してみます。「ポートが見つかりました」と表示されました。

python3仮想環境 まとめ

そもそもesp32を使うのにpython3 仮想環境など思いもしなかったのですがセキュリティ強化ということで仕様変更になったのでしょう。

まぁ、やるしかないですよね…

資料に拠ればmacには色々インストールされているそうですがlinuxにはpipなどもインストールする必要があるそうですからコマンド入れてpipが使えなければインストールしてください。

python3 -m pip install –upgrade pip

バージョン確認は

python3 -m pip –version

pyserialが使えない!

ほぼ1日ハマりましたがようやくシリアル通信出来たのに翌日起動するとなんとシリアルを認識してくれません…

いろいろ調べた結果、arduino-linux-setup sh ファイルにそれらしき記述があったので再度pyserialが使える状態のまま再起動することでPCをシャットダウンしても起動してesp32を繋げば今までのようにシリアルポートが開くようになりましたので共有したいと思います。

pyserialをインストール後に再起動し、シリアルポートが使える状態でもう一度再起動すればいいようです。

タイトル :『 python3仮想環境でarduinoやesp32のシリアル通信をする』見出し:『 pyserialが使えない!』関連する用語:『python,python3,chromebook,arduino,arduinoide,esp32,M5stack,シリアル通信,serial』画像の説明文 :ほぼ1日ハマりましたがようやくシリアル通信出来たのに翌日起動するとなんとシリアルを認識してくれません...いろいろ調べた結果、arduino-linux-setup sh ファイルにそれらしき記述があったので再度pyserialが使える状態のまま再起動することでPCをシャットダウンしても起動してesp32を繋げば今までのようにシリアルポートが開くようになりましたので共有したいと思います。pyserialをインストール後に再起動し、シリアルポートが使える状態でもう一度再起動すればいいようです。

スポンサーリンク

MEMO

Posted by KAZU