今回は Magicbitという新しいマイコンボードを提供して頂いたので サンプルコードを使っていろいろと遊んでみました。
最初に結論を言ってしまうと かなりオールマイティに使えるマイコンボードになっているので ボード選びで迷っている方は選択肢の一つになってくると思います。
ぜひこの動画を参考にしてみてください。
YouTube
関連リンク
・Makuake
ゲームもラジコンもロボットもゼロからできるIoT電子工作Magicbit
https://www.makuake.com/project/magicbit
自己紹介
・ハードウェアエンジニア
・電子工作歴:9年
・電子工作をゼロから体系的に並べるチャンネル「今日から始める電子工作」を運営してます
SNS
Web : https://start-electronics.com
Twitter : https://twitter.com/buonoatsushi
#電子工作 #クラウドファンディング
動画文字起こし
まず、magicbitとは何かについて紹介します。
magicbitとは、スリランカのスタートアップチームが開発した六角形の形が特徴のマイコンボードで、2022年8月から9月にかけてMakuakeでクラウドファンディングを行い、見事目標金額を達成しました。
このボードの最大のアピールポイントは、なんといっても、これ一つあればオールインワンであらゆる工作に対応できる、という拡張性の高さです。公式ホームページではゲーム、ラジコン、ロボット、IoTなど、実に50種類以上の工作に対応できるとうたっています。これだけ幅広い開発ができる理由は、センサやディスプレイ、通信機能があらかじめ搭載されているだけでなく、スマホアプリや動くロボットカーなど、より拡張性の高いモジュールまで網羅的に提供されている点にあります。似たようなコンセプトのボードは他にもmicrobitとかM5Stackとかがありますが、それらと比べてもやはり応用範囲という意味ではmagicbitの方が幅広いんじゃないかと思います。
そしてもう一つのポイントは、初心者でもすぐに開発を始められる手軽さにあります。ハード面においては、先ほど話したようにあらかじめ色んなモジュールが搭載されているため、このボードセットを一つ用意すればすぐに開発をスタートすることができます。そしてソフト面においてもしっかりと初心者向けの配慮がされていて、今ではすっかり定着した子供向けの開発ソフトScratchをベースにしたmagicCodeや、プログラミング不要でIoT開発によく使われるNode-REDをベースにしたmagicBlocksなど、すぐに開発をスタートできる環境が用意されています。そしてもちろん、コードをバリバリ書いていきたいという人のためにもArduinoやPythonによる開発もできるので、中上級者のニーズにも応えることができます。以上の特徴を、microbitやM5Stackと表にまとめて比べたのがこちらです。microbitやM5Stackも十分いろいろな機能は持っているのですが、magicbitはより一層、充実させたものだということが分かるかと思います。
次に、試しにサンプルコードを使って遊んでみたのでいくつか事例を紹介したいと思います。
なおここでは開発環境として、ビジュアルプログラミングのNode-REDがベースになっているmagicblocksをチョイスしました。Node-REDはその名の通り、ノードと呼ばれるパーツをつなぎあわせてプログラムを作っていきます。基本的にテキストのコードは書く必要がなくて、画面左側のパレットと呼ばれているスペースにあるノードを作業スペースにドラッグ&ドロップをして、レゴを組み立てるような感覚で楽しく組んでいくことができます。また、操作用の画面UIも簡単に作ることができるのが特徴です。
まずはブラウザから、お決まりのHello worldをmagicbitのディスプレイに表示させてみましょう。パレットにあるダッシュボードからtext input、magicBitの中にあるDisplayをドラッグ&ドロップし、その間を線でつなぎます。ダッシュボードはブラウザ上に配置できるユーザインターフェースのパーツを集めたもので、それっぽいアプリケーションを簡単に作ることができます。text inputをダブルクリックして新規にui_groupとui_tabを追加します。次に、DisplayのDevice IDの中から、接続したいmagicbitを選びます。ここでデプロイを押すと、WiFiを介してプログラムがmagicbitに書き込まれて実行されます。Dashboard画面を開いてHello worldと打ち込むと、これもWiFi経由で指示が伝わり、約1秒後にディスプレイに表示されるのが確認できます。
次は超音波センサを使って距離をブラウザ上に表示させてみます。パレットからInject、Ultrasonic、Gaugeの3つのノードを持ってきて線でつなぎます。まずはInjectを開き、ペイロードを日時にします。ちなみにペイロードは聞きなれない言葉ですが、データの本体、のような意味合いです。そして繰り返しを「指定した時間間隔」にして時間間隔を1秒にします。そうすることで、1秒おきにこのプログラムを呼び出すことができます。次にUltrasonicをダブルクリックしてデバイスIDを選び、Gaugeでダッシュボードを作ります。最後に超音波センサをつなげ、デプロイを押したら完了です。物を近づけたり遠ざけたりすると、ゲージの値が変わることが確認できました。
次はIoTガジェットで使われることの多い、APIを取り入れたものを紹介します。APIとはアプリケーションプログラミングインターフェースの略で、簡単に言うとサーバのデータを一般に公開して、第三者が簡単に利用できるようにした仕組みのことです。ここでは、OpenWeatherという各地の天気情報を提供しているAPIを使い、東京の温度、気圧、湿度、風速を取得します。作業スペースにInject、http request, 4つのtextノードを配置します。Injectではペイロードを日時にして、10秒ごとの繰り返しになるように設定します。次に、http requestノードでメソッドをGETにし、URL欄にこのURLを入力します。ちなみにGETとは、URLの中にリクエスト内容を盛り込んだデータの取得方法です。また、今回のAPIの場合はJSONという形式で返事がくるので出力形式はJSONを選んでおきます。このあたりは、使うAPIによるのであらかじめ仕様を見ておきましょう。最後に、取得したデータから4つのパラメータをそれぞれ抜き出して表示させます。例えば温度の場合は、APIの仕様ページにあるようにデータ内のmainの階層のtempの中に含まれているので、main.tempと書きます。
同じように4つのパラメータをそれぞれ入力し、ラベル、ダッシュボードを設定したらデプロイを押します。完了すると、10秒おきにデータが更新されるところが確認できると思います。
最後は、Arduinoの開発環境を使ってロボットカーを走らせてみます。まずは事前準備として、magicbitに赤外線センサをはめ込み、公式サイトにあるこのコードをArduinoに貼り付けます。プログラムを実行すると待機モードになるので、シリアルモニタを開いた状態でテレビのリモコンの上下左右のボタンを押します。そうすると画面上にボタンに対応した16進数の数字が表示されるので、この数字をメモっておきます。次に、公式サイトにあるプログラム本体をArduinoにコピペし、ここの部分をさっきメモした数字に書き換えます。あとは、私が用意したリモコン仕様が、サンプルコードの仕様と一部異なっていたのでそこだけ修正しておきます。そしてロボットカーにmagicbitと赤外線センサをはめ込みプログラムを書き込んだら完成です。電池を入れてスイッチをONにした状態でリモコンのボタンを押すと、その方向に進んでいくおもちゃができました。チャレンジしたい人は、このプログラムと他のセンサを組み合わせて、光が当たるところまで走り続けたり、壁にぶつかる前に方向転換をするロボットカーなんかを作ってみても面白いと思います。