Home シミュレータを使ってCPXで遊ぶ
Post
Cancel

シミュレータを使ってCPXで遊ぶ

 この記事は鹿児島大学生 Advent Calendar 2019 9日目の記事です:calendar:.

Circuit Playground Express(CPX)とは?

 Circuit Playground Express(以下CPXと表記)はAdafruit(エイダフルート)が製造している開発基板です.基板上に様々なセンサやLEDが実装されていて,はんだ付けなしで開発できるボードになります.

img

 この記事では,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を検索してインストールします.拡張機能の説明欄に使い方の説明が動画付きで載っています.それで十分な人は以下の内容は読まなくても大丈夫です.

img

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」を実行します.しばらく待つと新規ファイルが作成され,シミュレータが起動します.

img

img

手順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が点滅すれば成功です!

img

実行時にエラーが出た!

 自分の環境ではプログラム実行時に以下のようなエラーが出ました.ライブラリの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
This post is licensed under CC BY 4.0 by the author.

ドローンを勘で作ってみる(2)

アコースティックライブツアー2020「かなめぐり2」仙台に行ってきました!