こちらの記事について、内容・翻訳・視点・長さなど、皆様のご意見をお送りください。今後の記事製作の参考にしたいと思います。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
こちらの記事の感想をお聞かせください。
最近発表された、注目の集まるPSoC 6キットへのZerynthのサポート内容を紹介する。
Cypress PSoCとZerynthミドルウェアの組み合わせによって生まれる強力なプラットフォームには、迅速なIoT開発に有用な高度なハードウェア機能・Pythonの使いやすさと広範なエコシステム・マルチスレッド機能を備えたリアルタイムOS・クラウド統合・OTAアップデートといった数多くの利点がある。
PSoC入門
画像出典: Cypress Roadmap: PSoC and MCU Portfolio.
Cypress PSoC (プログラマブルシステムオンチップ)は、「ユーザーモジュール」とよばれるプログラマブルなアナログ/デジタルブロック機能を搭載した独特なMCUシリーズだ。高度に統合された低電力ソリューションを開発できるプラットフォームである。そのため、Apple iPodなどのマスマーケットな民生機器で広く採用されている。
画像出典: Cypress Roadmap: PSoC and MCU Portfolio.
PSoC 6はシリーズ最新チップであり、特にウェアラブル及びIoTアプリケーションでの利用を対象としている。ARM Cortex-M4メインアプリケーションプロセッサに、BLEプロトコルスタックの実行や静電容量タッチセンサなどの機能に使用できる低電力Cortex-M0+を組み合わせて搭載している。もちろん、設定可能なアナログ及びデジタルブロック、プログラマブルI/Oルーティングと相互接続も備えている。
このリソースの組み合わせにより、部品数の削減と物理的な小型化と、消費電力の削減が実現されている。これはメイン又は補助プロセッサ上に、あるいはハードアナログブロック又はデジタルブロックを介して、各種機能を非常に効率的な方法で実装しているためだ。
PSoC 6 Wi-Fi BT Pioneer キット
PSoC 6搭載 Wi-Fi BT Pioneerキットの主要な機能はつぎの通りだ。
- Arduino Uno 3.3-Vシールド1及びDigilent® Pmod™モジュールと互換性のある拡張ヘッダ
- タイプ1DX超小型2.4GHz WLAN及びBluetooth機能モジュール
- データとコードに高速で拡張可能なメモリを提供する12-Mbit外部クワッドSPI NORフラッシュ
- 大容量ストレージプログラミング、USB to UART/I2C/SPIブリッジ機能、カスタムアプリケーションサポートを備えたKitProg2オンボードプログラマ/デバッガ
- 充電式リチウムイオンポリマー(Li-Po)バッテリをサポートするEZ-PD CCG3 USB Type-C電源供給(PD)システム
- 自己容量(CSD)と相互容量(CSX)動作の両方が可能なCapSenseタッチセンシングスライダー(5セグメント)と2つのボタン、Cypressの第4世代CapSense技術を評価できるCSD近接検出センサ
キットには、2.4インチTFTディスプレイ・3軸加速度計/ジャイロスコープ・PDMマイク入力・32ビットステレオコーデックがまとめてパッケージ化されたArduino互換シールドも付属する。
本キットの標準的な開発オプションはPSoC Creator IDEとWICED Studioで、どちらもCツールチェーンを使用している。ただし本記事では、Pythonベースの開発環境「Zerynth」を使った開発にフォーカスしてみよう。
Zerynth Studio
以下は、Ubuntu LinuxへZerynth Studioをインストールする際の手順の概要である。MS WindowsとMac OSへのインストールも可能だ。
まず、新しいディレクトリを作成する。
$ mkdir Zerynth
次に、ソフトウェアをダウンロードし、この場所に保存する。その後、アーカイブを抽出し、インストールを開始する。
$ cd Zerynth
$ tar xvf zerynth.tar.xz
$ ./zerynth
その後、オンラインインストールを実行することを選び、最新バージョンを選択し、これが完了したら、アプリケーションを起動する。ログイン画面ではZerynthのユーザーアカウントを求められるが、便利なことに、DesignSparkアカウントでもログインが可能だ。
デバイスアクセス用にudevを構成するには、いくつか追加の手順が必要だ。最初に新しいルールファイルを作成する。
$ sudo vi /etc/udev/rules.d/99-kitprog2.rules
中身は以下の通りだ。
# Match KP2 PID/VID
SUBSYSTEMS=="usb", ATTRS{idVendor}=="04b4", ATTRS{idProduct}=="f148", ENV{CY_KP2_PID_VID}="f148:04b4"
# Match KP2 CMSIS-DAP
SUBSYSTEMS=="usb", ATTRS{interface}=="KitProg2 CMSIS-DAP", ENV{CY_KP2_PID_VID}=="f148:04b4", MODE="0666"
その後、udevルールが再読み込みされた。
$ sudo udevadm control --reload-rules && udevadm trigger
この時点でボードが接続され、オンボードフラッシュがUSBストレージとしてマウントされたので、ファイルマネージャウィンドウが開く。さらに重要なのは、Zerynth Studioの上部にある[Device (デバイス)]フィールドでドロップダウンリストを選択すると、[Physical Devices (物理デバイス)]の下に[PSoC6 WiFi-Bt Pioneer Kit(PSoC6 WiFi-Btパイオニアキット)]が表示される。
準備はたったの3ステップで完了
アプリケーションをロードする準備として実行しなければならない初期手順は3つある。そして3つの手順はすべて、ツールバーの[Device (デバイス)]ドロップダウンの右側にある[Z]アイコンのボタンをクリックすることで完了できる。
はじめにボタンをクリックすると、ターゲットに登録ファームウェアが配置され、マイクロコントローラに対して一意のIDが取得され、Zerynthバックエンドに登録される。
2回目にクリックすると、仮想マシン(VM)を作成するプロンプトが表示される。
最後に、3回目にクリックすると、使用するVMを選択できる。
これでZerynthアプリケーションを実行する最初の準備は完了だ。
サンプルプログラムからはじめよう
左側のツールバーの電球アイコンをクリックすると、サンプル集が表示される。サンプル集には、出力にシリアルコンソールを使用する昔ながらの[Hello World]プログラムと、組み込みプラットフォームではより一般的な[LED blink]プログラムの両方が既にある。サンプルをクリックすると、プロジェクトの説明とmain.pyの内容が表示され、その後にコピーをローカルで作成することができる。
pinMode(LED0,OUTPUT)
# loop forever
while True:
digitalWrite(LED0, HIGH) # turn the LED ON by setting the voltage HIGH
sleep(1000) # wait for a second
digitalWrite(LED0, LOW) # turn the LED OFF by setting the voltage LOW
sleep(1000) # wait for a second
上記は[Blink (点滅)]のサンプルで、Arduinoで作業したことがある人なら見慣れたものだろう。プログラミングガイドには、これがピンと関数のネーミングのヒントになったという説明がある。
プロジェクトを実行[Verify]には、上部のツールバーのチェックマークアイコンをクリックし、上矢印アイコンの[Uplink]ボタンを押す。するとボードへスケッチをロードすることができる。
この後、少し待つとLED5が点滅し始める。
その他の基本的なサンプルスケッチには例えばデジタル及びアナログ(ADC)読み取りがあり、高度なサンプルにはマルチスレッドやタイマーの使用をデモンストレーションするスケッチなどがある。
上級編へ
執筆時点では、PSoC用のサンプルスケッチは1つだけある。PioneerキットのCapSenseボタンとスライダーを読み取るというものだ。これに加えて、Zerynth標準ライブラリ機能を試すことのできる、より高度で汎用的なサンプルスケッチもある。例えば、RTC・ファイルシステムのサポート・割り込み・暗号化・省電力といった機能や、同じプロジェクトでのCコードとPythonコードの混在を可能にするC言語インターフェイスといった機能がある。
また、様々なIoTプラットフォーム、イーサリアムブロックチェーン、各種センサ、ModbusやMQTTなどの非常に便利な規格をサポートする公式ライブラリもある。コミュニティライブラリをGitHubに公開し、GitHubからインストールすることもサポートされている。
他にも優れた機能として、Zerynth Advanced Device Manager (ADM)がある。これは、管理されたOver The Air (OTA)アップデート、リモートプロシージャコール(ホストされたJSON RPCインターフェイスを使用してデバイス上のPython関数をリモートで呼び出すことができる)、デバイスごとのユーザーインターフェイスにハイレベルな機能を提供してくれる。これらの機能については、今後の投稿で紹介する予定だ。
まだ取り上げていないものには、PSoCプラットフォームの目玉である、自身で設定可能なアナログ及びデジタルブロックがある。少なくとも現時点では、これらは公式のCypressツールを使用して設定する必要があるようだ。ただし、デバイスの設定可能な領域は、ファームウェアの設定のそれよりもはるかに限定的だろうと推測される。