montessori method

micro:bitよりは高機能で、ラズパイのようにosが標準でなんでもできるわけでは無いですが、リアルタイム処理が得意なワンボードマイコンボードと言えます。

リアルタイム処理得意ということは、ロボットとかのアプリケーション向きということになります。osが完全に存在しないわけでは無くてRTOSのようなリアルタイムOS(FreeRTOS)を使えばタスクスケジューリングはできるからアプリケーションも作りやすくなります。多くのアプリケーションではシングルタスクでは作りづらいだろうから、FreeRTOSの使用が前提になると思います。

<ハードウェア>

ドキュメントは以下になりますが、いくつかのポイントを以下に掲載します。

https://docs.arduino.cc/hardware/mkr-wifi-1010

購入したArduino MKR WiFi 1010。静電気破壊防止のためのクッションに載ってます。デバッグ目的ならこのクッションは外さなくても大丈夫です。海外での発売は既に二年ぐらい前らしいですが、日本の技適認証でやたら時間がかかったようで、この夏から国内販売が開始されているようです。技適番号は梱包箱にシールで貼り付けられてます。

Wi-FiとBlueToothもサポートされて、さらにライブラリでWebサーバーサポート機能もあるので、例えばパソコンのブラウザからリモート操作のような使い方もできます。

初めて使う時のtutorialはhttps://www.arduino.cc/en/Guide/MKRWiFi1010になります。シリアルポートの設定のところは現状とは違うようですが。

端子配列です。充電制御用のICも搭載されているようなので、Li-POバッテリー運用も楽です。

電気的な仕様は以下の通りです。

出典は、https://elchika.com/dic/Arduino_MKR_WiFi_1010/

<開発環境>

開発言語はメモリを消費しないという理由だろうと思いますが、見かけcのようなArduino言語を使います。IDEが標準で提供されていてArduino言語をラップしているのでコンパイルなどは目に見えない形で実施されます。名前空間やオブジェクト指向は使えないので大規模開発には向きませんが、実行環境がArduinoである限りは問題ないと思います。

IDEにもデスクトップ版とクラウド版(ブラウザ動作)があって、さらにクラウドではIoTクラウド(使用範囲を限定すれば無償使用可能)もあります。IoTクラウドはArduinoに最適化されているので簡単に使えるようになっています。

デスクトップ版IDE

Arduino言語

c言語類似ですが別物です。名前空間もクラスも使えませんが、Arduinoのハードウェアリソースを考慮すれば妥当かと思います。変数は関数の中で定義されればローカル変数、それ以外は全てグローバル変数になります。

リアルタイムOS

アプリケーションの多くはシングルタスクでは作りきれないと思いますが、それをカバーするのがFreeRTOSでこれもモジュールの形で提供されるので、アプリ作成者はFreeRTOSの作法でタスク登録してマルチタスク環境で使うことができます。