今回はMicroPythonのコードをSTM32マイコンに書き込んで動かしてみます。
投稿時の開発環境を記しておきます。
PC:Windows10 OS
Board: STM32Nucleo-F401RE
概要
最近では機械学習の開発用として使われるなど注目を浴びているPythonですが、今回は組み込み用としての実装であるMicroPythonを使ってSTM32マイコンを動かしてみます。
MicroPythonについて詳しく知りたい方は MicroPython Webサイト をご覧になってください。
Pythonはインタプリタを使うことができる言語です。インタプリタは処理系の一種で「プログラミング言語で書かれたプログラムを解釈しながら実行するためのしくみ」になります。
インタプリタ(interpreter)は翻訳を意味します。
STM32 MicroPythonでLチカしてみる の記事ではインタプリタの REPL という機能を使ってMicroPythonを体験してみました。
今回はMicroPythonのコードを実際にマイコンのフラッシュメモリーに書き込んで動作させてみます。
環境を構築する
Windowsの環境ではPythonをインストールしなければなりません。
Pythonをインストールされていない方は以下のサイトからダウンロードしてインストールしてください。
anaconda3をインストールする
anaconda3は最近人気の言語、Pythonの拡張版です。標準のPythonにライブラリを同梱したものになります。
以下のサイトから64ビットの最新版をインストールすれば良いでしょう。
インストール手順は省略します。
ampyをインストールする
ampy は Adafruit社が開発したツールで Adafruit MicroPython Toolの略称と言われています。
まず anaconda3 を起動します。
スタートメニューに anaconda と入力し検索結果から出てきた anaconda Prompt (anaconda3)を選択します。
Anaconda Prompt が出たら pip install adafruit-ampy と入力し Enterします。
ampyを使ってみる
ampyはコマンドプロンプト(Anaconda Prompt)上で実行するコマンドです。
まずボードの方は、
STM32 MicroPythonでLチカしてみる で紹介した方法で hexファイルを書き込んだ状態にしておいてください。
ampyはシリアルポートを使って通信するので、Tera Term等の通信アプリは閉じてください。
まずボードを USBケーブルでPCとつなぎます。
そこで一度、Tera Termを立ち上げてください。これはボードの仮想COMポート番号がいくつなのかを調べるためです。
新しい接続でラジオボタンをシリアルに設定します。そして STLink Virtual COMポート番号がいくつなのかを確認しておきます。
こちらの環境では COM5 でした。
それでは Tera Term を終了し、Anaconda Prompt に以下の文字列を打ち込み Enter します。
ampy -p COM5 -b 115200 ls
/flash が返ってきました。
ここで ampy のコマンドを紹介しておきます。
コマンドは
ampy -p SP -b BR COMMAND Enterキー という形式です。
SP : シリアルポートで COMn n=ポート番号を指定
BR : ボーレートで今回は 115200 固定
ampyのコマンド一覧
コマンド | 機能 |
---|---|
ls /flash | フラッシュメモリー上のファイルを一覧する |
put file | フラッシュメモリー上にfileを書き込む |
get file | フラッシュメモリー上のファイルを閲覧する |
rm file | フラッシュメモリー上のファイルを削除する |
mkdir dir | ディレクトリdirを作成する |
rmdir dir | ディレクトリdirを削除する |
run file | fileを実行する |
reset | マイコンをリセットする |
それでは次のコマンドを実行してください。(COM5はそちらの環境のポート番号に合わせます)
ampy -p COM5 -b 115200 ls /flash
以下の返事が返ってきます。
/flash/boot.py
/flash/main.py
main.pyがboot.pyに続いて実行されるMicroPythonのコードになります。
以下のコードをメモ帳などのエディタで編集し、main.pyというファイル名で保存します。
while True:
pyb.LED(1).on()
pyb.delay(1000)
pyb.LED(1).off()
pyb.delay(1000)
見ておわかりの通り、Lチカのコードですね。
保存したファイルを C:\Users\nnnn に移動します。
nnnnはそちらの環境のユーザー名です。
そしてこのファイルを書き込みます。
ampy -p COM5 -b 115200 put main.py /flash/main.py
黒いリセットスイッチを押すとLD2が点滅します。
いかがでしたか。うまくLチカできたでしょうか。
コメントを書く