この記事は鹿児島大学生 Advent Calendar 2019 9日目の記事です:calendar:.
Circuit Playground Express(CPX)とは?
Circuit Playground Express(以下CPXと表記)はAdafruit(エイダフルート)が製造している開発基板です.基板上に様々なセンサやLEDが実装されていて,はんだ付けなしで開発できるボードになります.
この記事では,VS Codeの拡張機能「Device Simulator Express」を使ってシミュレータ上でCPXを動かすまでについて書きます.
開発環境
- Windows 10 Home
- VS Code(version 1.40.2)
- Conda 4.7.12
- Python 3.7.5
手順1:拡張機能のインストール
VS Code拡張機能からDevice Simulator Expressを検索してインストールします.拡張機能の説明欄に使い方の説明が動画付きで載っています.それで十分な人は以下の内容は読まなくても大丈夫です.
pythonとpipのパスが環境変数に追加されている場合,そのほかに必要なライブラリ等が適宜インストールされると思います.インストールされない場合は,コマンドプロンプト上で必要なライブラリをインストールします.
pip install playsound
pip install pywin32
pip install python-socketio
pip install applicationinsights
手順2:新規ファイルの作成
拡張機能をインストールしたら,VS Codeを再起動して新規ファイルを作成します.「Ctrl + SHIFT + P」でコマンドパレットを開き,「Device Simulator Express:New File」を実行します.しばらく待つと新規ファイルが作成され,シミュレータが起動します.
手順3:Lチカのプログラム
Lチカのサンプルコードを以下に示します.また,その他のサンプルコードはAdafruitのGitHubページにいろいろと記載されています.
1
2
3
4
5
6
7
8
9
10
11
12
# import CPX library
import time
from adafruit_circuitplayground.express import cpx
while True:
# start your code here
cpx.red_led = True
time.sleep(0.5)
cpx.red_led = False
time.sleep(0.5)
pass
プログラムを書いたら,適当なディレクトリにソースコードを保存して実行します.このときの注意点として,ファイル名を「code.py」または「main.py」として保存するようにしてください.
手順4:実行
実行ボタンを押してプログラムを実行します.実行時にVS Codeの右下にポップアップ(Pythonの拡張機能を求めるものやセキュリティ上の注意など)が表示される場合は必要に応じてクリックして下さい.
ボード上部(USBコネクタ右横)の赤色LEDが点滅すれば成功です!
実行時にエラーが出た!
自分の環境ではプログラム実行時に以下のようなエラーが出ました.ライブラリのimportエラーのようです.文字化けしているところは「指定されたモジュールが見つかりません」という内容が日本語で表示されて文字化けしているようです.
Anacondaの環境を使わず,普通に?Pythonをインストールしていてpipが使えてパスを通していれば起きないエラーだとは思います.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Welcome to the Adafruit Simulator output tab !
[INFO] Deploying code to the simulator...
[INFO] File selected : c:\Users\ymt\Downloads\code.py
[ERROR] Traceback (most recent call last):
File "c:\Users\ymt\.vscode\extensions\ms-python.devicesimulatorexpress-2019.0.35146\out\process_user_code.py", line 33, in <module>
from adafruit_circuitplayground.express import cpx
File "c:\Users\ymt\.vscode\extensions\ms-python.devicesimulatorexpress-2019.0.35146\out\adafruit_circuitplayground\express.py", line 8, in <module>
from .pixel import Pixel
File "c:\Users\ymt\.vscode\extensions\ms-python.devicesimulatorexpress-2019.0.35146\out\adafruit_circuitplayground\pixel.py", line 7, in <module>
from . import utils
File "c:\Users\ymt\.vscode\extensions\ms-python.devicesimulatorexpress-2019.0.35146\out\adafruit_circuitplayground\utils.py", line 9, in <module>
from . import debugger_communication_client
File "c:\Users\ymt\.vscode\extensions\ms-python.devicesimulatorexpress-2019.0.35146\out\adafruit_circuitplayground\debugger_communication_client.py", line 6, in <module>
import socketio
File "c:\Users\ymt\.vscode\extensions\ms-python.devicesimulatorexpress-2019.0.35146\out\python_libs\socketio\__init__.py", line 3, in <module>
from .client import Client
File "c:\Users\ymt\.vscode\extensions\ms-python.devicesimulatorexpress-2019.0.35146\out\python_libs\socketio\client.py", line 6, in <module>
import engineio
File "c:\Users\ymt\.vscode\extensions\ms-python.devicesimulatorexpress-2019.0.35146\out\python_libs\engineio\__init__.py", line 3, in <module>
from .client import Client
File "c:\Users\ymt\.vscode\extensions\ms-python.devicesimulatorexpress-2019.0.35146\out\python_libs\engineio\client.py", line 7, in <module>
import ssl
File "C:\Users\ymt\Anaconda3\lib\ssl.py", line 98, in <module>
import _ssl # if we can't import it, let the error propagate
ImportError: DLL load failed: <<ここが文字化けしてる>>
いろいろと試行錯誤してみた結果,Condaの環境がActivateされていないことが原因のようです.VS Codeの設定ファイル(settings.json
)に"python.pythonPath": "C:\\Users\\ymt\\Anaconda3\\python.exe"
を追加するなど試してみました.しかし,VS CodeのターミナルではActivateされた状態で起動するのですが,CPXのシミュレータ実行時にはActivateされていない状態で実行されてしまいます.
解決策
VS Codeの起動をWindowsのスタートアップメニューから行っていたのですが,CondaをActivateしたコマンドプロンプトから「code」コマンドで起動するように変更することで解決しました.スタートアップメニューから起動してもCondaはActivateされていると思うので,どうしてこのようにしないといけないのかナゾです…分かる人いたら教えてください
1
2
3
C:\Users\ymt>conda activate
(base) C:\Users\ymt>code