■サンプルファイルのダウンロードについて
本書掲載のサンプルファイルは、下記 URL からダウンロードできます。
http://--------------------------

本書で取り上げられているシステム名／製品名は、一般に開発各社の登録商標／商品名です。本書では、™ および ® マークは明記していません。本書に掲載されている団体／商品に対して、その商標権を侵害する意図は一切ありません。本書で紹介している
URL や各サイトの内容は変更される場合があります。

目次

目次

第1章

はじめに .......................................... 1

1.1

本書のねらい..................................................................... 2
1.1.1 想定する読者層................................................................................. 2
1.1.2 本書で解説する内容........................................................................ 3

1.2

micro:bit とは................................................................... 41.3

Grove とは...................................................................... 111.3.1 micro:bit 用 Grove シールド......................................................131.4

本書の流れ...................................................................... 151.5

想定する動作環境........................................................... 171.6

本書で取り扱うデバイス................................................ 18第2章

環境構築 ........................................ 212.1

MakeCode エディタ....................................................... 222.2

LED 点灯プログラムの実装............................................. 242.3

Grove シールドのセットアップ..................................... 272.3.1 Grove デバイスのセットアップ...............................................28iii

第3章

Grove 基本プログラミング ............. 31

3.1Grove デバイス............................................................... 32
3.1.1 4 桁 7 セグメントディスプレイ（TM1637）.....................32
3.1.2 ボタン..................................................................................................36
3.1.3 LCD.......................................................................................................39
3.1.4 I2C 高精度温度湿度センサ（SHT35）...................................43
3.1.5 GPS.......................................................................................................49
3.1.6 高精度 RTC........................................................................................54
3.1.7 リレー..................................................................................................62
3.1.8 スピーカー........................................................................................663.2M5Stack Unit.................................................................. 71
3.2.1 光センサユニット..........................................................................72
3.2.2 ToF 測距センサユニット.............................................................75
3.2.3 M5Stack 用 PIR センサユニット.............................................79

第4章

MicroPython............................... 83

4.1

LED.................................................................................. 84

4.2

LCD.................................................................................. 86

4.3

GPS.................................................................................. 87

第5章

Grove 応用プログラミング ............. 89

5.1

PC による LCD 制御......................................................... 90

5.2

CPU 使用率表示器........................................................... 97iv

目 次

5.3

光センサ連動 PC シャットダウンプログラム.............. 102

5.4測距スピーカー............................................................. 105

付 録.................................................. 109

付録 AGravity..................................................................... 110

付録 B

Grove デバイスの移植方法..................................... 115

付録 C

micro:bit の JavaScript 処理系............................... 123

付録 D

MakeCode Offline App........................................... 129

付録 E

コマンドラインインターフェース.......................... 133

付録 F

mbed を用いた C++ 言語による開発..................... 140

索  引....................................................................................... 157v

1
はじめに
本書は、micro:bit と Grove の解説書です。
micro:bit は 2000 円程度で入手できる安価なマイコンボードです。Grove は LED や GPSといった様々なデバイスをケーブル 1 本で接続できる規格です。
本章では、micro:bit や Grove についての解説を交えながら、本書のねらいなどを解説します。

第1章

はじめに

第1章

はじめに

1.1 本書のねらい
本書では micro:bit と Grove を組み合わせることで、簡単かつ安価に電子工作を楽しめることを主眼に解説をしています。ここでいう簡単には 2つの意味があります。1 つは micro:bit 用のプログラム開発がオンラインのJavaScript エディタ上で平易な文法で実装できる点です。もう 1 つは、何と言ってもケーブル 1 本で各種デバイスを接続できる Grove の汎用性にあります。

1.1.1 想定する読者層
本書が想定する読者層は、ごく簡単な JavaScript の文法が理解できて、まだ電子工作に馴染みのない方々です。例えば、小学校や中学校の授業でプログラミングを習ったけれども、まだマイコンボードを触ったことがないよ
うな子供達や、仕事で Excel マクロを触るけれども電子工作とは縁がないよ
うな方々です。もちろん、micro:bit のヘビーユーザーの方で Grove を扱いたいという方も大歓迎です。
本書で扱う Grove はケーブル 1 本で電子工作を楽しむことができます。
マイコンボードを用いた普通の電子工作は、GPIO の端子に配線図を確認しながらジャンパワイヤを何本も繋ぎ、ものによってはブレッドボードや抵抗も必要になるような世界です。Grove はケーブル 1 本でデバイスを接続でき、端子部分はプラスチックのカバーで保護されているため、子供でも安心して使用することができます。
同じく、本書で扱う micro:bit は 2000 円代で購入できるとても安価なマイコンボードです。価格帯でいえば、Arduino や Raspberry.Pi の半額程度です。また、Arduino が専用の開発環境を要したり、Raspberry.Pi が Linuxの知識を要したりするのに比べ、micro:bit は Web ブラウザと USB 端子が2

1.1

本書のねらいあればプログラミングを開始できます。また、micro:bit の JavaScript 処理

1系は高度な文法や便利な文字列処理関数といったライブラリを提供していません。このため実装上の制約は存在しますが、プログラミング初心者の方にとってはさほど問題にはならないでしょう。

23

なお、本書は JavaScript の解説書ではないため、細かな文法の解説は行いません。JavaScript の文法も学習したい方は別途書籍などを活用ください。
ただし、micro:bit の JavaScript 処理系はとてもシンプルで実行できるコー45ドに制限が多いため、あえて学習するほど難解ではないでしょう。

1.1.2 本書で解説する内容
前述した通り、本書ではプログラミングや電子工作が初心者の方でも、micro:bit と Grove を利用することで、マイコンボードとデバイスを連携させたプログラミングを実践することを目標としています。
本書を読むことにより、マイコンボードの基本的な立ち位置が理解でき、また配線作業を除いた電子工作の入り口部分に立つことができます。また、
既に micro:bit を活用している方にとっても Grove を活用することにより、電子工作に伴う煩わしい配線作業から解放され、簡単には外れない Groveの端子によって、例えば半田付けをせずに動きや振動を伴う工作物を実装することができます。
筆者は読者の方々に本書を読むことで以下の知識を身につけて欲しいと思います。

. ●. micro:bit の基本的な扱い方. ●. JavaScript によるデバイスプログラミング
付 録. ●. 電子工作の基礎（GPIO やブレッドボードを使わない程度）. ●. 各種 Grove デバイスの制御方法

3

第1章

はじめに

この中でも筆者は特に Grove デバイスの制御方法について強く解説した
いと考え本書を執筆しました。Grove デバイスの制御方法については、本書執筆時点ではあまり書籍等で解説されていません。さらに、本書では Seeed社が公開していない micro:bit 用の制御コードを実装し、Grove デバイスの制御を JavaScript で実現しています。本書の記事を参考に、他の開発環境向けに Grove デバイスの制御コードを移植することも容易にできるでしょう。こうして身につけてもらった Grove の制御方法の知識は、micro:bit を卒業して次のマイコンボードに移った際にも役立つでしょう。

1.2 micro:bit とは
micro:bit は、イギリスの BBC が開発した教育用のマイコンボードです。
日本国内ではわずか 2000 円程度の価格で流通しています。
マイコンボードとは、マイコン（マイクロコントローラ）と各種入出力装置を 1 つのボードにまとめたものを指します。micro:bit 以外の著名なマイコンボードとして、Arduino や Raspberry.Pi などが挙げられます。
数あるマイコンボードの中でも、micro:bit はイギリスにおいて 11 歳と12 歳の子供に無償で配布するために開発された経緯があり、プログラミングや動作確認がとても容易にできるよう設計されています。

4

1.2

micro:bit とは

12
3
45

図1.1●micro:bitのWebサイト

micro:bit の特徴は以下の通りです。
. ●. Web ブラウザでプログラミングできる. ●. 開発言語は MicroPython、JavaScript、スクラッチ. ●. LED やボタン、温度計といったセンサ類が最初からボードに実装されている. ●. 低価格
筆者は Web ブラウザでプログラミングできる micro:bit の機能に興味を持ちました。従来の組み込み開発では、まず開発環境を整えるだけでも一苦労だったわけですが、micro:bit ではクロスコンパイラなどをインストールせずに Web ブラウザ上でコーディングとコンパイルが実現できます。また、開発言語も独自の JavaScript や Python の処理系が用意されており、最初かmicro:bit には、プログラムから利用できる 2 つのボタンと、加速度セン5付 録ら高水準のプログラミング環境が提供されています。

第1章

はじめにサ、磁気センサが用意されています。また出力装置としてドットマトリクスLED が実装されています。こうした入出力装置が最初から実装されている
ことも micro:bit の特徴です。
最後に、本書執筆時点での micro:bit の価格は日本国内では 2000 円程度です。比較的安価なマイコンボードである Raspberry.Pi が 5000 円程度、Arduino.UNO が 3000 円程度ですので、それらよりも更に安価になっています。
以下に micro:bit の外観を示します。
表面

裏面

図1.2●micro:bitの表面と裏面

表面にはドットマトリクス LED とボタン 2 個が実装されています。ドットマトリクス LED は縦 5 個×横 5 個の計 25 個の LED で画像や文字（らしきもの）を表示するのに使用します。ドットマトリクス LED にはユーザがプログラム上から明示的に文字列などを表示するほかに、プログラムにバグがあってエラーが発生した場合に自動で文字列が出力されることがあります。ボタン A とボタン B はプログラムから自由に利用することができます。
なお、ドットマトリクス LED の解像度は低いため、文字列を表示してもそれが何なのかを把握するのは結構難しいと筆者は感じました。このため、本LED はわかりやすい記号などを表示するのに向いているでしょう。

6

1.2

micro:bit とは

裏面には micro.USB ポートとリセットボタン、電源コネクタが実装され1ています。

micro.USB ポ ー ト は PC と 接 続 し て、 電 源 の 供 給 や プ ロ グ ラ ム の 転送、USB シリアル通信に使用します。ここでいう USB シリアル通信とは、UART による通信を USB 経由で行うための機能です。USB シリアル通信の実際の使用方法については後述します。プログラムの転送は、PC からmicro:bit 用のプログラムのファイルを micro:bit に書き込むことで実現します。micro:bit を PC に接続すると、外部ストレージとして認識されるファ2345

イルシステムが見えるようになります。このファイルシステムに micro:bit用のプログラムである hex ファイルを書き込むと、micro:bit にプログラムを転送することができます。
リセットボタンは、micro:bit 上に書き込んだプログラムの動作をリセットする働きをします。micro:bit ではプログラムを起動するボタンは存在せず、電源投入と同時にプログラムも走り出します。このため、動作が終了したプログラムを再度走らせたりする場合に、このリセットボタンを使用し.
ます。
電源コネクタは、前述した micro.USB ポートから電源が投入されない場合、すなわち PC と micro:bit が接続されていない場合に電源を供給するために使用します。micro:bit は主に PC と連携して動作するマイコンボードですが、一度書き込んだプログラムを動作させるだけであれば、電源を確保すれば単体でも動作します。この電源コネクタに適合する電源として、micro:bit 用の電池ボックスが販売されています。本書ではこの電源コネク
タは使用せずに USB ポートだけで電源を供給して解説します。

付 録7

第1章

はじめにプログラム転送
電源PC
USB シリアル通信
図1.3●micro:bitとPCの連携図

micro:bit は主に PC と連携して動作します。例えば、micro:bit のプログ
ラミングを micro:bit 単体で出来るわけではありません。PC でコーディングしたプログラムを USB 経由で micro:bit に転送し、micro:bit 側で実行します。このとき、PC から見た micro:bit は外部ストレージのファイルシステムに見えます。このため、あたかも通常のファイル操作を行っているかのようにプログラムを micro:bit に転送できます。

micro:bit 上でのプログラムの実行結果などをシリアル通信で回収することも考えられます。このシリアル通信は micro.USB ポートを使用して USBシリアル通信で行います。micro:bit を PC に接続すると、Windows の場合COM ポートが増設された状態となり、Windows プログラムや端末ソフトウェアから micro:bit と通信を行うことができます。
さらに、micro:bit が動作するための電源も USB 経由で給電することができます。このため、micro:bit の全機能を動作させるには、USB ケーブル 1本でできることになります。

8

1.2

micro:bit とは

次に micro:bit の各端子について説明します。

12345P0

P4〜7 P1

P8〜12 P2 P13〜16 3VP19P20

GND

図1.4●micro:bitの各端子

micro:bit の端子は上の図のように P0 ～ P20 の入出力端子と、3.V の電源、GND（グランド）で構成されます。P0 ～ P20 の端子には各種のセンサなどのデバイスを取り付けて入出力を行うことができます。例えば、P0 に LEDを接続して一定間隔で点滅させることができます。

micro:bit では P0、P1、P2 の端子が大きく実装されており、ミノムシクリップなどを接続することができます。それ以外の入出力端子を使用する
場合は、ブレークアウトボードというデバイスを使用して拡張すると簡単.
です。
ところで、本書では後述する「micro:bit 用 Grove シールド」を使用するため、micro:bit 上に実装された入出力端子を直接操作することはありません。上記の端子については、このような端子があるという程度の認識で結構付 録です。

9

第1章

はじめに

micro:bit のハードウェア諸元は以下の通りです。
表1.1●micro:bitのハードウェア諸元CPU

ARM Cortex-M0 16 MHz

RAM16 KB

ROM

256 KB（プログラムを格納するストレージ領域）

通信規格

Bluetooth Low Energy（BLE）

センサ

加速度センサ、磁気センサ（コンパス）、温度計、光センサ

入力装置

A ボタン、B ボタン、リセットボタン

出力装置

ドットマトリクス LED（5 × 5 = 25 個）

上記にあるとおり、micro:bit の CPU は 16.MHz の ARM プロセッサです。

Raspberry.Pi のクロック周波数が 1.2.GHz なのに対し、約 1000 分の 1 しかありません。また、RAM も 16 キロバイトしかないため、例えば大きめの配列などを幾つも確保しようとするとエラーになります。本書ではこのような制限の強い環境において、後述する Grove デバイスと組み合わせたプログラム開発を実践します。
ところで、micro:bit には、プログラムから自由に利用できるファイルシステムが実装されていません。このため、計算結果をプログラムからファイルに保存したり、ファイルからパラメータを読み込んだりすることができません。micro:bit で行う演算処理は基本的に一過性のものになるでしょう。

10