マイクロビットは、ブロックエディタで子供でも簡単にプログラムがつくれる上、さまざまな機能も搭載されており、とても便利で使いやすいマイコンボードです。
ただ、マイクロビットをIoTデバイスとして活用しようとする場合、Wi-Fi通信機能がない点が弱点だと感じています。
これに対し「Grove UART WiFi V2」という製品があります。
Groveシールドをつかってマイクロビットと「Grove UART WiFi V2」をつなぐことで、マイクロビットでWi-Fi通信ができるようになります。「Grove UART WiFi V2」用のブロックも用意されており、ブロックエディタでWi-Fi通信するプログラムをつくることができます。
ただ、「Grove UART WiFi V2」は現在、秋月電子やスイッチサイエンスでも販売されておらず、入手するのはなかなか大変です。
そんな訳で「Grove UART WiFi V2」を使わずに同様のことができないかと色々考えていたのですが、「Grove UART WiFi V2」にはESP8285が搭載されていることから、手持ちのESPデバイスを「Grove UART WiFi V2」の代わりに使うことができないか?と思いつきました。
試してみることにしたのは、最近出番の少なくなっていた「ESPr Developer」です。
「ESPr Developer」はスイッチサイエンス製のマイコンボードで「ESP8266」が搭載されています。
この「ESPr Developer」をマイクロビットとつなぎ、ブロックエディタでつくったプログラムでWi-Fi通信してみたいと思います。
「ESPr Developer」は、初期状態ではATコマンドで制御できるようですが、私の場合は既にArduino IDEで色々なスケッチをつくって書き込んでいるため、このままではATコマンドが使えません。
そのため、「ESPr Developer」をATコマンドで制御できるよう、改めてファームウェアを書き込みます。
Windows PC(Windows 11 Home, 22H2)で作業します。
最初に、Espressif社のページ(こちら)から、ESP8266用のファームウェアをダウンロードします。
他の方が書かれたWeb記事でよく使っておられる「ESP8266 NonOS AT Bin」は「廃止された」とのことなので、「ESP8266 IDF AT Bin」をダウンロードしました。
ダウンロードしたバージョンは「v2.2.1.0」です。ダウンロードしたら解凍しておきます。また、このファイルの設置場所までのパスに日本語が含まれていると、以降の処理でNGとなるため、パス中に日本語がない場所に設置しておきます。
次に、Espressif社のページ(こちら)から、ファームウェアを書き込むための「Flash Download Tools」をダウンロードします。
ダウンロードしたバージョンは「V3.9.5」です。こちらもダウンロードしたら解凍しておきます。
USBケーブルでPCと「ESPr Developer」をつなぎ、解凍したフォルダ内にある「Flash Download Tools」を起動します。
最初の画面で「ChipType:ESP8266」「WorkMode:Develop」を選択して「OK」をクリックします。
次に表示されるダウンロード画面で「ファイル名:…/factory/factory_WROOM-02.bin」「アドレス:0x0」を入力し、先頭のチェックボックスにチェックを入れます。
「SPI MODE:DIO」、「BAUD:115200」、「DoNotChgBin」にチェックを入れ、「COM」で接続先を指定して「START」をクリックすると、ファームウェアが「ESPr Developer」に書き込まれます。
正常にファームウェアが書き込まれたか確認します。
確認のため「USB Serial Converter」を用意します。今回は秋月電子で購入した「FT232RQ USBシリアル変換モジュール」を使うこととします。
PCと「ESPr Developer」をつないでいたUSBケーブルを外し、代わりに以下のとおり接続します。
- USBケーブルでPCと「USB Serial Converter」を接続する。
- 「USB Serial Converter」の「GND」と「ESPr Developer」の「GND」を接続する。
- 「USB Serial Converter」の「+5V」と「ESPr Developer」の「VIN」を接続する。
- 「USB Serial Converter」の「TXD」と「ESPr Developer」の「GPIO13」を接続する。
- 「USB Serial Converter」の「RXD」と「ESPr Developer」の「GPIO15」を接続する。
Arduino IDEを起動し、「ツール」>「シリアルポート」で接続先を指定します。
シリアルモニタを起動します。
ウィンドウ下の改行コード選択を「CRおよびLF」に、速度を「115200bps」に変更します。
「ESPr Developer」のRESETボタンを押すと、シリアルモニタに「ready」と表示されます。
シリアルモニタ上部のコマンド入力欄に「AT+GMR」と入力し「送信」をクリックし、バージョン情報が表示されたら正常に動作しています。
それでは、この「ESPr Developer」をマイクロビットにつないでみます。
「Grove UART WiFi V2」の時と同様に、「micro:bit用Groveシールド」を使います。
マイクロビットを「Groveシールド」に差し込み、「Groveシールド」の「GND」「3V3」「P15」「P1」をそれぞれ、「ESPr Developer」の「GND」「3V3」「GPIO13」「GPIO15」につなぎます。
「Grove UART WiFi V2」用のブロックをそのまま使って、以下のプログラムをつくります(詳しくは こちら の記事を参照)。
マイクロビットが起動したら最初にWi-Fi接続を行い、以降は1分毎に乱数の値を「IFTTT」経由で「Googleスプレッドシート」に送信・保存するという内容です。
「Groveシールド」左横のUSBポートより電源供給するとマイクロビットが起動し、「Googleスプレッドシート」にデータが追記されていきます(マイクロビット上部のUSBポートより電源供給すると、電流不足のため安定動作しません)。
これで、「ESPr Developer」が「Grove UART WiFi V2」の代わりになることを確認できました。
なお、今回の調査では「Googleスプレッドシート」に2行ずつ同じデータが追記されるという問題が生じました。
「Grove UART WiFi V2」を使っても同じ症状になることから、今回「ESPr Developer」を使ったのが原因ではなく、他に理由があると思われます。
なお、私がマイクロビットの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。
初心者向けから、比較的高度なものまで、さまざまな情報が記載されているだけでなく、子供向けの作例も多数掲載されていますので、「プログラミング教育」のための題材さがしなどにもおすすめです。