microduino mCookieとMixlyで、ハードウェア・ビジュアルプログラミングをやってみた

本記事はFujitsu Advent Calendar 2016の16日目の記事です。
(お約束)本記事の内容は私自身の見解であり、所属する組織を代表するものではありません。

はじめに

    microduino mCookieについて
    電子工作を手軽に試したいとき、Raspberry PiやArduinoなどのミニ・コンピュータがよく使われます。特に、Arduinoはコピーレフトライセンスでソフトウェア・ハードウェアが公開されていることもあり、多くの互換品や派生製品が出ています。
    私が持っているのはmicroduino社のmCookieという製品で、下記のような特徴を持っています。
    ・基盤が機能ごとにユニット化されている
    ・ユニット同士がマグネットで簡単に脱着可能
    ・ユニットにレゴ互換の突起が付いており、組み合わせての利用が可能
    ・色々なセンサーが準備されている
    詳しくは過去記事を参照してください。
    Arduinoのプログラム言語はWiringから派生したもので、記法はC言語風です。そのため、C#やJava使いの人なら馴染みやすいのではと思います。とはいえ、C言語をある程度知っていて、ハードウェアへのアクセス方法(=SDKの内容)を理解する必要があるため、全くの初心者がユニットを組み立てて、いきなり使えるわけではありません。

    ビジュアルプログラミングについて
    子供向けのプログラミング入門ではビジュアルプログラミング言語と呼ばれる処理系がよく使われます。MITメディアラボのScratchが有名で、画面操作だけで視覚的にプログラムができるのが特徴です。使っているうちに変数などの概念を学ぶことができ、ソフトウェア開発に慣れ親しむのに良い手段の一つと思われます。

    両方のいいとこどり=Mixly
    mCookieとビジュアルプログラミング、この2つが合体すれば電子工作を本当に簡単に楽しめるはず、と考えた人がいて、microduino mCookieにはMixlyというビジュアルプログラミング環境があります。画面からのマウス操作だけで、簡単にmCookieのプログラムを書くことができます。
    Mixlyは、Google Blocklyをベースにして開発されているとのこと。元となっているGoogle Blockly自体はArduinoを対象としたものではなく、JavaScriptやPython、DARTなど複数言語のコードへ変換できるのが特徴です。興味があればこちらを触るのも楽しいでしょう。
    (参考記事)「Google Blockly」をやってみた!グーグルが提供するビジュアルプログラミング言語 : TECHADACEMY magazine
    ※Arduino全般向けにはScratchXという環境もありますが、ここでは触れません。

準備するもの

     以下の記事内容を実際に試すには、下記のものを入手する必要があります。mCookieは部品単品でも買えますが、下記に挙げたキットのほうが安価でお得です。
    mCookie 202 Advantage Kitまたは302 Expert Kit(過去発売されていた201/301も可)
    ・Windows PCまたはMac

環境構築

    Arduino IDE for Microduinoのインストールと環境設定
    Mixlyを試す前に、mCookie標準の開発環境(Arduino IDE)を使ってハードウェアの接続確認を行います。ダウンロードはここから。インストーラを実行すると、Arduino IDE本体の他、mCookieに必要なUSBドライバなども同梱されていて、一度にインストール可能です。
    インストールが終わったらArduino IDEが起動しますので、環境設定を行います。まず、mCookieのCoreUSBユニットをUSBケーブルでPCに接続します。
    coreUSBをUSBポートに接続する
    Arduino IDEのメニューから「ツール>マイコンボード>Microduino-Core USB」を選択します。

    同じく「ツール>シリアルポート>COM11(Arduino Leonardo)」を選択します(COMの後ろの数字はお使いの環境により異なります)。

    ここに表示が出てこない場合は、再起動やドライバの再インストールなどを試してみてください。

    接続確認
    Arduino IDEとmCookieの接続確認として、Arduino IDEを開いたときにデフォルトで入っているスケッチ(プログラムのこと)をそのままコンパイル、アップロードします。操作は、画面上部メニューバーの下にあるアイコンのうち左から2番目をクリックします。画面下部にエラーが出ず、下記の表示になれば成功です。

    Mixlyのインストールと環境設定
    Arduino IDEと同じく、ここの下の方にMixlyのダウンロードリンクがあります。インストールでなく、単なるアーカイブの解凍となりますので、解凍してできたmdxlyフォルダを適当なフォルダに移動してください。
    次は環境設定です。Windows版の場合はフォルダ内にあるVBSファイルを実行し、Mixlyを起動します。セキュリティ警告が表示される場合も、継続してください。Macは持ってないのでよくわかりません。
    画面中ほどのメニューバーにプルダウンメニューが2つあるますので、ターゲットデバイスに「microduino/mCookie-Core USB(32u4)[usb32u416m]」、ポートにAdruino IDE設定時と同じポート番号を選択します。
    p5

テスト:Lチカ

     手始めとして、ボタンを押したらLEDが点灯する、というのをやってみます。電子工作界隈では「LEDをチカチカさせる」、略して「Lチカ」と呼びます。

    mCookie部品の接続
    mCookieで使う部品はcoreUSBユニット、Sensor hubユニット、Color LED、光センサーとケーブル2本。

    coreUSBユニットの上にSensor hubユニットを取りつけたら、Color LEDのin端子とSensor hubの6/7端子、光センサーの端子とSensor hubの8/9端子をそれぞれケーブルで接続します。

    最後にcoreUSBユニットのUSBポートをPCと接続します。

    Mixlyプログラムの作成
    ここからはMixlyの画面操作です。左メニューから命令部品を選び、右側のスペースの中で結合していくことでプログラムができます。計算や制御といった一般的な部品の他、「Microduino」以下にはmCookieの各部品ごとの命令があります。

    ここでは「光センサーを遮るとLEDが点灯する」プログラムを作成してみました。

    注意点としては、mCookieのセンサーなどの命令部品に対し、「センサーをSensor hubユニットのどの端子に接続したか」をポート番号で通知する必要があります。例えば、Color LEDはSensor hubユニットの6/7端子に接続したので、対応する命令部品の「Control Pin」の数字を6に変更しています。

    プログラムの転送と実行
    プログラムのコンパイルと転送は、Mixlyメニューバーの「Upload」ボタンで実施します。コンパイルと転送が成功すると、ログ表示部の下端に「Success!」と表示され、mCookie側ではプログラムが実行されます。センサーを手で遮るとLEDが点灯し、手を外すと消灯します。

    ソースコード表示
    Google Blocklyはソースコードが画面で確認できるのが特徴ですが、Mixlyでもソースコードが見られます。画面上部の「Code」ボタンをクリックするとコード表示画面となります。

    ソースコードを見るとわかりますが、Mixlyの画面で作ったプログラムは初期化部分はsetup()関数に、メイン部分はloop()関数の中に格納されています。この関数はmain()同様に繰り返し呼ばれるため、Mixlyのプログラムでループを入れなくても問題なく動作します。Mixlyでは、直感的にプログラムを作っても、期待通りの動作が得られるようになっています。

まとめ

     ハードウェア電子工作を気軽に試せるArduinoの派生製品mCookieとビジュアルプログラミング環境Mixlyについて紹介しました。この記事を書くためにリビングで色々やっていたら、小学5年生の息子が興味津々で近づいてきて、自分でも色を変更したり楽しんでました。日本語化されてない環境ですが、少し教えれば一人でもプログラムを作れそうです。

microduino mCookieとMixlyで、ハードウェア・ビジュアルプログラミングをやってみた” へのコメントが 2 点あります

  1. 早速私もArduino-UNOとNanoをターゲットにプログラムしました。
    分かり易く簡単でした。 LCDキャラクターディスプレーの接続やI2Cでのservoコントロールも簡単い出来ます。 暫くArduino を触っていなかったのですが、ScrtchでArduinoが復活しそうです。

  2. おお、素のArduinoにも適用できましたか。
    これは応用が期待できますね。
    コメントありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください