創って学ぼうプログラミング 第29回 Orange picoとつなげてデータをやりとりしよう

創って学ぼうプログラミング 第29回 Orange picoとつなげてデータをやりとりしよう

  • マイナビニュース
  • 更新日:2019/08/19
No image

○Orange picoとは?

今回はマイクロビットのシリアル通信機能を使ってOrange pico(オレンジピコ)とデータのやりとりを行ってみます。Orange picoにはいくつもの種類がありますが、今回はOrangino(オレンジーノ)を使います。OranginoはArduinoのシールドも利用できる優れものです。

Orange picoはこども向け教育用の小型コンピューターです。基本的にマイクロビットやIchigoJamなどと同じカテゴリの商品になります。

・Orange pico

http://www.picosoft.co.jp/orange/index.html

・Orangino

http://www.picosoft.co.jp/Orangino/index.html

Orange picoはIchigoJamと同様にBASIC(Orange BASIC)でプログラムを作ることができます。IchigoJamのBASICとは違い、浮動小数演算もできますし、標準でグラフィック機能が用意されています。グラフィック画面とテキスト画面は独立しており合成して表示されます。面白いのはタートルグラフィックス機能も用意されていることです。今回は扱いませんが興味ある方は挑戦してみてください。

・LOGO/タートルグラフィックス

https://ja.wikipedia.org/wiki/LOGO

今回使用するOranginoはテレビとの接続には専用のケーブルが必要です。IchigoJamのように既存のケーブルを使うことはできません。キーボードはUSBキーボードですので、手持ちのキーボードをそのまま使う事ができます。

○マイクロビットとOranginoをつなげる

まず、マイクロビットとOranginoをつなぎます。マイクロビットとOranginoはシリアル通信(UART)を使ってデータの送受信を行います。データの送受信を行うためには3本のケーブルが必要です。ワニ口クリップやジャンパーワイヤーなどを使って以下のようにつなぎます。Oranginoには複数のGND端子がありますが、どこにつないでも構いません。

・Oranginoピン配置

http://www.picosoft.co.jp/orange/download/Orangino/OranginoPin.pdf

これで準備完了です。Oranginoの電源は最初に入れておいても後から入れても大丈夫です。

Orangino側はデータを受信して表示するだけなら何もする必要はありません。もちろん、受信したデータを受け取って処理する場合にはプログラムを作成しなければなりません。

それではマイクロビット側のプログラムを作成します。ここでは「明るさ」を取得してOranginoに送信してみましょう。シリアル通信のカテゴリは高度なブロック内に用意されています。

使用するのは「シリアル通信 送信先を変更する」「シリアル通信 数値を文字で書き出す」と「シリアル通信 文字列を書き出す」の3つのブロックです。文字列を書き出すブロックは改行コードを送るために使用します。これはマイクロビットで用意されている「シリアル通信 1行書き出す」ブロックを使った場合、余計な文字まで送信されるためです。単純に明るさを送信するだけなら「シリアル通信 1行書き出す」ブロックでも構いません。ただし、Oranginoでの表示速度はかなり遅くなります。

そこでOranginoの改行コードにあわせてデータを送るために「シリアル通信 文字列を書き出す」ブロックを使用します。

まず、通信速度などの設定はマイクロビット側で用意してあるものをそのまま使います。また、Orangino側でも同じ設定になっているため、最初だけのブロック内に「シリアル通信 送信先を変更する」ブロックを入れます。次に明るさを送信するブロックを図のように組み立てます。

書き出す文字列で\n\rを指定していますが、ブロックエディタでは入力することができません。このためJavaScriptコードエディタに切り替えてserial.writeString()で指定する文字を"\n\r"に変更してからブロックエディタに戻ります。すると図のような状態になります。これでマイクロビットの送信側のプログラムはできあがりです。

JavaScriptコードの場合は以下のようになります。

serial.redirect(

SerialPin.P0,

SerialPin.P1,

BaudRate.BaudRate115200

)

basic.forever(function () {

serial.writeNumber(input.lightLevel())

serial.writeString("" + "\n\r")

})

プログラムをダウンロードしマイクロビットに転送して動作を確認します。マイクロビットから送られた明るさの数値がOranginoの画面に表示されるはずです。なお、明るさが0だとIllegal line numberと表示されてしまいますが、ここでは気にする必要はありません。

データがうまく受信できない場合は、一度Oranginoのリセットボタン(濃いオレンジ色のボタン)を押してください。また、ワニ口クリップなどで接続している場合、線がちゃんとつながっているか、他の線や端子に接触していないか確認してください。

○Orangino側でプログラムを使って受信

今度はOranginoでプログラムを使ってデータを受信してみます。Orange BASICのリファレンスは以下のURLに用意されています。PDFなので印刷して手元に置いておくと便利かもしれません。

・Orange BASIC

http://www.picosoft.co.jp/orange/download/ORANGE_BASIC.pdf

ここではOranginoの電源投入直後の状態でプログラムを動かすことにします。この状態であれば以下のプログラムを入力することで、先ほど作成したマイクロビットから送られたデータを表示することができます。Orange BASICでプログラムを入力する場合は10や30の行番号に続けてプログラムを入力したら最後にリターンキーを押してください。リターンキーを押さないとプログラムとして入りません。

Orange BASICではUARTからのデータ入力はuartget(1)を使います。

10 d=uartget(1)

20 if d=-1 then goto 10

30 print chr$(d);

40 goto 10

上記のプログラムを入力したらrunと入力しリターンキーを押して下さい。すると画面にマイクロビットから送られた明るさの数値が表示されていきます。プログラムで受信しているので値が0でもIllegal line numberのエラー表示は出ません。

このプログラムは単純に受信したデータを表示しているだけなので、データを加工して処理する場合は使い物になりません。そこで今度はマイクロビットから送られたきたデータを数値として処理することにします。

今度はマイクロビット側のプログラムを少し変更します。Orange BASICで処理しやすいようにデータの区切りを,として送信します。ブロックを以下のように組み立てます。

JavaScriptコードの場合は以下のようになります。

serial.redirect(

SerialPin.P0,

SerialPin.P1,

BaudRate.BaudRate115200

)

basic.forever(function () {

serial.writeNumber(input.lightLevel())

serial.writeString(",")

basic.pause(500)

})

先にマイクロビットに作成したプログラムを転送しておきます。ただし、この時点ではマイクロビットとOranginoをつながないでください。つないでしまうとOranginoでプログラムを入力できないためです。

準備ができたらOranginoでプログラムを作成します。まず、数値を入れる変数に0を入れておきます。送られてきた文字が0〜9の文字コードだった場合、変数の値を10倍してから送られてきたデータを足します。0の文字コードは48なので送られてきたデータから48を引き算してから足します。

Orange BASICのプログラムは以下のようになります。

10 n=0

20 d=uartget(1)

30 if d=-1 then goto 20

40 if d>47 and d47 and d47 and d

この記事をお届けした
グノシーの最新ニュース情報を、

でも最新ニュース情報をお届けしています。

IT総合カテゴリの人気記事

グノシーで話題の記事を読もう!
手のひらサイズで録画も可能。HDMI出力のテレビチューナー「AUB-100シリーズ」
自然な話し方を習得する世界初のAIを搭載!Wi-Fiルーターとしても使えるリアルタイム音声翻訳機「Langogo」
スマホの決済サービスが増えすぎてわからな~い!がひと目でわかるカオスマップ登場
自宅がジムになる!? 体のあらゆる筋肉を鍛えられるツール「MONKII 360」が人気
親指サイズで手ブレ補正に強い防水アクションカメラ「Insta360 GO」が正式発表 予約受付を開始し価格は2万3800円
  • このエントリーをはてなブックマークに追加