Zerynthは、Pythonでマイコンのファームウエア開発ができるプラットフォームです。またZerynthではPyhtonだでなくC言語を併用したハイブリッド開発も行えます。
Zerynthにはリアルタイムオペレーティングシステム(RTOS)が内蔵されており、必要に応じてハードウエアの機能を利用できます。Flip&ClickはArduino DUEとして認識され、本体にはArduino UNOのピンを持つユニークな開発ボードです。さらに反対側にはmikroBUSが4スロット搭載されており各種クリックボードを装着して機能を拡張できます。この Flip&Click ボードの開発言語としてZeryhthを使うことができます。
PythonとCのハイブリッド言語で Flip&Click の開発を始めましょう。開発環境は無料で公開されておりすぐにダウンロードして使えます。このページでは導入方法から簡単なプログラムチュートリアルを掲載しています。
本ページと併せて、ZerynthのDOCページもお読み下さい。
■DesignSparkアカウントの新規作成
Zerynth Studioを使用するにはDesignSparkのアカウントを先に取得しておく必要があります。アカウントをお持ちでない方はここで登録しましょう。DesignSparkは技術者を支援するポータルサイトです。下記サイトにアクセスしてください。
https://www.rs-online.com/designspark/home-jp
右上の「ログイン」のリンクをクリックしてログインページを表示させます。「登録」ボタンをクリックしてください。アカウント名やメールアドレス、パスワードを決めてアカウントを作成してください。
■インストールと起動
- 下記のサイトからZerynth Studioをダウンロードします。
https://www.rs-online.com/designspark/zerynth-jp - インストールしたら起動します。
Zerynthを起動すると初回はWelcome to Zerynthというダイアログが表示されます。ここではライセンスに同意するかどうかを聞かれいてますので、ライセンス条項をお読みの上、”I have read all the license agreements and ….”のところのチェックボックスにチェックを入れて”Continue”ボタンをクリックしてください。 - 続いてインストールが続行されますので”Online”をクリックして続行します。Zerynthのバージョンは最新版(r.2.6.2)を選択して”Install”をクリックします。
インストールには少し時間がかかります。 - インストール完了後、”Start Zerynth”をクリックし起動するとZerynthへのログインが表示されます。ここではDesignSparkのアカウントでログインできます。先ほど登録したDesignSparkアカウントのIDとパスワードを入力して”Login”ボタンを押してください。
■初回設定
次の方法で設定をして使用を開始できます。
- まず本体をパソコンと接続します。本体のプログラミング用USBポート(ACアダプタ用ジャックの隣にあるmicroUSBポート)とパソコンをUSBケーブルで接続してください。(2箇所あるので間違えないように!)
- デバイスドライバーは自動的にインストールされます。
Windowsでは仮想COMポートが作られます。仮想COMポート番号はWindowsのデバイスマネージャー内にある”ポート(COMとLPT)”より確認できます。名称は”Arduino Due Programming Port (COMx)”となります。 - ウインドウ上部にある”Device:”プルダウンには現在”No device..”と表示されています。ここをクリックしてプルダウンを表示し、”Flip & Click SAM3X/Arduino Due…”を選択します。
- 次の画面では、”Flip & Click SAM3X”を選択して”Disambiguate”をクリックします。
- 再度先頭の画面に戻ります。”Device”プルダウンの表示が”
“Flip & Click SAM3X”となっていることを確認してください。もし表示されない場合には一度パソコンからボードを抜いて再度装着してみてください。
続いて、”Register/CreateVM/Virtualize”ボタンをクリックします。下記の図を参考にボタンを押してください。 - ダイアログが表示されます。”Install”ボタンを押してください。
必要なファイル類がダウンロードされるのでしばらく待ちます。進捗状況は画面下に表示されます。
[info] All dependencies installed! と表示されるまで待ってください。 - 続いて再度トップ画面に戻ったら、再度”Register/CreateVM/Virtualize”ボタンをクリックします。先ほどとは別のダイアログが表示されます。ここではボードに最新のZerynth OSをダウンロードします。”Install OS”ボタンを押してください。ボードにダウンロードが始まります。ボード上の黄色LEDなどが点滅することを確認してください。進捗状況は画面下に表示されます。
[info] Virtualization OkOperation successful! Now you can Uplink your code into your flipnclick_sam3x と表示されるまで待ってください。 - 再度”Register/CreateVM/Virtualize”ボタンをクリックします。
“Create”ボタンを押してください。数秒経過すると次のようなダイアログが表示されます。 - ここでは”Standard VM”を選択して”Create”ボタンを押してください。
- 再度ダイアログが表示されますので、今度は”Virtulize”ボタンを押してください。次の画面では、”Flip & Click SAM3X r2.x.x”を選択して
“Virtulize”ボタンを押してください。 再度ファームウエアが書き込まれますので数分お待ちください。
ウインドウ下部に”Device Virtualized”と表示されれば準備完了です。
■最初のプログラム ~サンプルから引用する~
簡単なプログラムを書き込み、実行までを体験してみましょう。もちろん1からプログラムを自分で記述することもできますが、Zerynthではあらかじめ例が用意されており、それらを活用することで簡単に開発を進められます。
また多くのライブラリもありライブラリを活用すれば高度なプログラムが簡単に作れます。このあたりの使い勝手はArduinoと似ており親しみやすい使い方ができます。
最初にボードのmikroBUSサイド(レジスト色が白い面)に実装されている4つのLEDを点滅されるプログラムを作ってみましょう。例から引用しますが、完成したら点滅周期を変えるなどいろいろと実験してみてください。
- Zerynth Studioの左側に縦に並んでいるツールバーを確認してください。ここにある”Examples”ボタンを押します。
- 右側にツリー構造の一覧が表示されますので、この中から”First steps”ツリーを展開します。さらに”Basics”を開き、その中にある”Blink”をクリックしてみてください。プログラミング例が表示されます。
- これを読み込んでみましょう。”Clone”ボタンを押してください。
- ファイル名や保存先、Githubのアカウントがあればオンラインで管理が可能です。ここでは、Titleに適当に”LED Blink Test”などという名前を付けてパソコンのローカルフォルダに保存してください。”Description”は詳細という意味で、簡単な説明を書くときに使いますが必要なければ空欄でかまいません。
準備がてきたら”Create”ボタンを押します。 - 何も変化がないように見えますが、今まであったツリーのところが”Project View”に変わっていることが確認できます。ここには今回作成したプロジェクトに含まれるファイルの一覧が表示されています。
Zerynthのソースプログラムのメインは、”main.py”ファイルとなります。このファイルが中核なのでまずはこれをダブルクリックしてみてください。main.pyのソースプログラムが開きました。 - このままでは動作しないため、LEDの定義を変更していきます。まず下図をご確認ください。
LEDは4つあり、D39~D42までになっています。これをプログラム内で定義していきます。次のようにプログラムを書き換えてください。
内容は簡単です。最初に LEDA~Dの変数にピン番号を割り当てています。次にピンモードをそれぞれ出力ピンとしています。LEDA = 39 LEDB = 40 LEDC = 41 LEDD = 42 pinMode(LEDA,OUTPUT) pinMode(LEDB,OUTPUT) pinMode(LEDC,OUTPUT) pinMode(LEDD,OUTPUT) # loop forever while True: digitalWrite(LEDA, HIGH) digitalWrite(LEDB, HIGH) digitalWrite(LEDC, HIGH) digitalWrite(LEDD, HIGH) sleep(100) digitalWrite(LEDA, LOW) digitalWrite(LEDB, LOW) digitalWrite(LEDC, LOW) digitalWrite(LEDD, LOW) sleep(100)
while True: は永久ループです。whileは評価式が真(True)の時繰り返し実行されます。
続いてピンに状態を出力します。引数にHIGHを指定すればポートがハイに、LOWならばGNDレベルとなります。これをsleep(1000)として1秒間隔で繰り返しています。sleep関数で指定する秒数はミリ秒単位です。
■ビルドと書き込みとちょっと改造
では早速、ビルドして書き込み、実行してみましょう。
ビルドと書き込みはボタン一発です。Uplinkボタンを1回押してください。
プログラムがコンパイルされてエラーがなければボードにデータが書き込まれます。書き込まれたプログラムはすぐにボード上で動作を開始します。
いかがでしょうか。ボード上のLEDが4つ同時に点滅していることを確認してください。ここで少しプログラムを改造して1つずつ繰り返し点滅をするプログラムにしてみましょう。次のようにプログラムをし直してみてください。
LEDA = 39 LEDB = 40 LEDC = 41 LEDD = 42 pinMode(LEDA,OUTPUT) pinMode(LEDB,OUTPUT) pinMode(LEDC,OUTPUT) pinMode(LEDD,OUTPUT) LED_BLINK = 39 while True: digitalWrite(LED_BLINK, HIGH) sleep(100) digitalWrite(LED_BLINK, LOW) sleep(100) if LED_BLINK < 42: LED_BLINK+=1 else: LED_BLINK=39
同様にしてUplinkをして書き込んでみましょう。LEDが1つずと100ミリ秒間隔で点滅することを確認してください。
LED_BLINK変数に値を代入して39~42までインクリメントしています。ifステートメントによって42未満の場合にはインクリメントして、それ以上になった場合には39に値を戻します。if文の使い方を体験してください。
■そのほかの資料等について
Zerynthに搭載の各種ライブラリの説明などを網羅したサイトは下記にあります。
https://olddocs.zerynth.com/latest/official/core.zerynth.stdlib/docs/index.html
当方ではmikroBUSに装着できる各種クリックボードを拡充予定です。ぜひいろいろなモジュールを装着してFlip & Clickボードをどんどん拡張させてください。音声認識モジュールやBluetoothモジュールなど各種販売中です。
http://www.microtechnica-shop.jp/shopbrand/ct47/