0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

マイコン開発環境をローカルを汚さずに作る(WSL)

Posted at

はじめに

大学の授業でArduino UNO3を使う機会があったのですが、どこを見ても環境を汚す事が前提となっており、環境潔癖症患者の私には到底耐えられませんでした。なのでなんとか試行錯誤して病状を悪化させない環境を作りました。マイコン内で開発する案は考えはしましたが筐体依存性が高くなるためやめました。

最終地点

  1. ローカル環境を汚さない
  2. VScodeの強力な支援機能を使ってArduino開発をする(C++)
  3. pythonとの間でシリアル通信をできるようにする
  4. sqliteにシリアル値を保存する

環境

windows11 22H2

使うもの

WSL Ubuntu(なんでもいい)
VScode
PlatformIO
python(sqlite)

Dockerで環境構築出来なかった

マイコンとはUSBで接続をして開発すると思うのですが、ハードウェア的通信はDockerコンテナをパススルー出来ないようで、コンテナにこもった時点で不可能なのは確定したようです。

WSL上でUSBを認識させる

WSLでUSB認識をしようで詳しく書きましたが、wsl上ならまだデバイスが認識できたので、WSL-Ubuntu上に環境を確保しようと思います。具体的な手順は記事を見てください。

マイコン環境セットアップ

WSLでVScodeを開きます。

WSL
cd /your-project-root/
code .

wsl環境にVScodeの拡張機能をインストールしましょう。

  • PlatformIO
  • C++
  • python
  • あとはお好みで

ここでローカル(windows)でVScodeを開いてPlatformIOをインストールして、
画面左側のメニューバーからPlatformIOのアイコンをクリックし、Open>New Projectからプロジェクトを作成しましょう。
image.png
Nameは好きに設定し、BoardはArduino UNO、locationはチェックを外してプロジェクトのディレクトリを選択します。
権限の関係かわかりませんが、僕の環境ではWSL上で開いた場合、ディレクトリが選択できませんでした。

ディレクトリにplatformio.iniというファイルが生成されたと思うので、今度はWSLでこのディレクトリをVScodeで開くと、拡張機能が有効になります。

Python環境セットアップ

このpython環境もWSL環境にたてないとシリアル通信が出来ないので、仕方なく設定します。ディレクトリはどこにおいても大丈夫です。platformIOのプロジェクトと同じ階層にフォルダを置くと開発するときに便利でいいですよ。

大注意

pythonでシリアル通信をする際にpyserialというライブラリを使うのですが、管理者権限がないと動作しません。プログラムをsudoで走らせると、python環境ごと管理者仕様に変化して、ライブラリが読み込めない場合があります。なので必要ライブラリをインストールする際はsudo pip install -r requirement.txtと管理者権限のpython環境にライブラリをインストールしましょう。pipがインストールされてない場合はsudo apt install pipです。そしてプログラムを走らせる場合もsudo python3 <プログラムのパス>で実行してください。

最後に

プロジェクトのサンプルをおいておきます。以上の手順を踏んだ後であればうまく動くと思います。ありがとうございました。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?