クリエイター手抜きプロジェクト[635]IoT Orange pico編 シリアル通信
── 古籏一浩 ──

投稿:  著者:



今回は、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/