今回は、Orange pico(Orangino)のシリアル通信について説明します。
シリアル通信は、パソコンやマイクロビットやobniz、Ichigojam/IchigoLatteと手軽にやりとりできる便利な機能です。シリアル通信は多くのデバイスでサポートされていて、昔からやっている人であればRS232Cによる通信、データのやりとりを行うものだと書いた方が、分かる人が多いのかもしれません。
シリアル通信はUARTと記述されていることもあります。とにかく、UARTポート(接続端子)があれば(もしくはサポートしていれば)やりとりできるデバイスが広がるのは間違いありません。デバイスセンサーの中にも、シリアル通信でデータをやりとりするタイプもあります。(他はSPIやI2Cでやりとりします)
また、Orange picoはUSB I/O Unitを装着すると、シリアル通信を使ってUSBメモリやUSBキーボードなどを使うことができます。
・Orange picoはUSB I/O Unit
http://www.picosoft.co.jp/orange/USBIO/index.html
まずは、Oranginoとパソコンをシリアルケーブルで接続して、データのやりとりをしてみましょう。パソコンとOranginoを接続するためのUSBモジュールがない場合は、どこからか入手する必要があります。アマゾンでも、シリアル通信モジュールで検索すると出てきます。また、IchigoJam/IchigoLatte用のものがあれば、それを利用することができます。ここでは、以下のショップで販売されている、USBシリアルモジュールを使っています。
・USB-シリアルモジュール
https://shopfusen.jimdo.com/ichigojam/usb-シリアルモジュール
パソコンのUSBケーブル(オス-メスタイプ、延長ケーブルでOK)を、このUSBモジュールに接続します。次に以下のように接続します。
USBモジュールのTXDとOranginoのRX1
USBモジュールのRXDとOranginoのTX1
USBモジュールのGNDとOranginoのGND
なお、USBモジュール経由で、5VをOranginoに供給することができます。この場合、USBモジュールの5VとOranginoの5Vを接続します。USB経由で電力を供給した場合、マイクロUSBからの電力供給がいらなくなるので、多少ケーブルまわりがすっきり(?)するかもしれません。
次に、USBモジュールで使われているCP2102用のドライバーを、インストールします。
https://jp.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
macOSの場合、古いMac OS Xではすんなりいくことが多いのですが、新しいmacOSでは手軽にできないことがあります。この場合、以下のページを参考に設定してみてください。
http://www.shangtian.tokyo/entry/2018/09/13/224853
ここらへんmacOSでもWindowsでも、ちょっと手間取る部分かもしれません。頑張ってインストールして、使えるようにしてください。
次に、パソコン側でアプリケーションをインストールする必要があります。一般的にターミナルソフトと呼ばれるものを入れます。WindowsであればTera Term、MacintoshであればCool Termなどがあります。Cool TermはWindows、Macintosh、Linux版が用意されています。
・Tera Term(後継版)
https://ja.osdn.net/projects/ttssh2/releases/
・Cool Term
http://freeware.the-meiers.org/
ここでは、Cool Term(Mac版)を使って説明します。他のターミナルソフトでも、同じように設定すれば大丈夫です。
まず、Cool Termを起動したら、以下のように設定します。
通信速度:115200bps
データビット:8
パリティ:なし
ストップビット:1
フロー制御:なし
ターミナルモード:Raw Mode
ローカルエコー:あり(なしでもよい)
受信改行コード:CR
送信改行コード:CR
なお他のターミナルソフトで、端末エミュレーションでVT100を設定することができる場合は、そのエミュレーションを行うように設定しておきます。ちなみに、IchigoJamで接続している設定のまま、Oranginoでも使うことができます。
設定ができたらConnectボタンをクリックして接続します。これでOranginoとシリアル通信でやりとりすることができます。
CoolTermで文字を入力すると、そのままOranginoに反映されます。ただし、その逆はそのままではできません。IchigoJamのように表示された内容は、シリアル通信から出力されていないからです。このため、Oranginoからパソコン側にデータを送るには、以下のようにコマンドを入力します。
uart 1,3,115200
最初の1は固定となっています。これは多分、現状のOrangino(Orange pico)では、シリアル通信ポートがひとつしか用意されていないためだと思われます。obnizのように複数のシリアル通信ポートがサポートされていれば、2や3などの値も指定できるようになるのかもしれません。
2番目のパラメーターの3はモードです。モードはビット単位での機能になっていて、以下のように機能が割り当てられています。
ビット0:1なら画面出力とシリアル出力
ビット1:1ならシリアルからの入力をキー入力として処理する
3番目のパラメーターは通信速度です。115200を指定します。設定するとOranginoで画面出力される内容が、そのままターミナルソフト側にも表示されます。ただし、Oranginoで入力した内容は、出力されないので注意してください。
uartでモード3を指定すれば、print命令だけで画面とシリアルに出力することができます。以下のプログラムを実行すると、入力したキーの文字が画面とターミナルソフトに出力されます。
10 uart 1,3,115200
20 k=inkey()
30 if k=0 then goto 20
40 print chr$(k);
50 goto 20
画面出力だけに戻したい場合は、以下のようにコマンドを入力します。
uart 1,0,115200
なお、プログラムでシリアル通信制御する場合は、必ずuart命令を使って設定するようにしてください。そうしないと予期せぬ設定になって、期待通りに動作しないことがあるからです。
【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/
決め角刃……じゃなくて鬼滅の刃が大人気だそうで。「全集中」とかのセリフあるようだけど、どちらかというと「金集中」の方がいい。まあ、集中できるだけの時間があるのは、ちょっとうらやましいけど。
・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram
・8K/4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/
・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/