こんにちは、岸田です。
今回は近日発売予定の新商品「ESPr One 32」の作例を紹介してみようと思います。
商品の全体画像もチラ見せ。
ESPr One 32は、過去に発売されたESPr OneのWiFi機能を担っているESP-WROOM-02をESP-WROOM-32に入れ替えた基板です。Arduino Uno同一形状 ESP-WROOM-32開発ボードとも言います。ちょっとややこしいですが、つまりArduino UNOと同じ形状の基板でWiFiとBLE機能が使えるようになった!ということです。
さて、新商品ということで何ができるのか実際に作例を紹介したいと思います。Arduino UNOと同じ形状なので、売られているArduinoシールドがそのまま使えるところがいいところではないでしょうか。ただし、IOが3.3Vなので、全部の基板が動作するとは限りません。
今回は、過去にMaker Faire Shenzhenの展示でも利用したナダ電子さんから発売されているAS-289R2プリンタシールドを活用してみたいと思います。
プリンタシールドの印刷は、シンプルにシリアル通信で文字を送るだけでもできます。また、ESP-WROOM-32にはBLE機能が搭載されているので、今回のスケッチは「BLE経由で受け取った文字列をシリアルに送信する」というものを使います。これと、プリンタシールドを組み合わせることで「BLE経由で文字を送ると印刷されて出てくる」というものが作れます。
■準備するもの
- AS-289R2プリンタシールド
- AS-289R用カッタAセット (オプション)
- ESPr One 32 (近日発売予定です!)
- BLE対応のスマートフォン
- AS-289R2 BaseBoard(非売品、任意)
- M3ネジ、スペーサー、ナット(少量、任意)
■準備
- ESP-WROOM-32のセットアップ
- スイッチサイエンスwikiを見ながら、基板の開発環境のセットアップを行ってください。このとき、ページ後半の「BLEのセットアップ」まで行う必要があります。
- プリンタシールドのセットアップ
- ナダ電子さんから公開されている「さぁ始めよう」を見ながら、ロールのセットや電源の確認を行ってください。「Step5 : Arduinoにサンプルスケッチを書き込みます」の部分はそのままこちらの記事に読み替えて進めてください。
- 今回は3.3Vで普通のSerialピンを使います。ボーレートは9600・38400bpsどちらでも大丈夫です。電源はこのシールドから供給するので、その設定も変えます。製品情報ページからジャンパピンを設定してください。例えば、以下のとおりです。
- JP5: 2-3(3.3V)
- JP6: OPEN(9600bps)
- JP4: 1-2(Serial)
- JP1: CLOSE(5V供給)
- BLE用のAndroidアプリもしくはiOSアプリをインストールする
■利用スケッチの書き込み
BLEのセットアップが正しく終わっている場合、ボードを「ESP32 Dev Module」に変更すると、「スケッチ例」→「ESp32 BLE Arduino」→「BLE_uart」というサンプルスケッチが存在していると思います。今回はこれをベースに手を加えてきます。
- 67行目
Serial.begin(115200);
をSerial.begin(9600);
(もしくは38400、セットアップにて利用した値)に変更 - 105行目
Serial.printf("*** Sent Value: %d ***\n", txValue);
をコメントアウト
この2点を変更したら、ESPr One 32基板に書き込んでください。
■動かしてみる
今回はシールドがそのまま刺さるので、このスケッチを書き込んだあとはプリンタシールドと組み合わせるだけです。「さぁ始めよう」にあるように、シールドをさした状態でシールド側に電源ハーネスを接続します。ピンヘッダを実装していないAS-289R2 BaseBoard(非売品)を使うと、このような見た目になります。何か板に固定するなら、ESPr One 32と板の間にスペーサーを挟むと良いでしょう。(画像は開発中のものです。販売品と見た目が異なる場合があります。以下同様)
電源を投入すると、少し文字化けが表示されたあとに「Waiting a client connection to notify...」と出力されます。文字化け部分は、ESP-WROOM-32のブートログなので、これを回避するにはSerial1を使うなどの策があります。
ここで、インストールしたスマートフォンアプリ「nRF Connect for Mobile」を起動して画面を見てみましょう。Scanner画面に「UART Service」という名前のデバイスが表示されていると思います。これが、現在電源の入っているESPr One 32になっています。このデバイスの「CONNECT」をタップします。
すると、スマートフォンとESPr One 32が接続されます。
「Nordic UART Service」という欄があると思います。BLEはプロファイル、キャラクタリスティックやサービスという概念があり、今回の例で言うとUART機能(サービス)というものを実現するためにTX用のデータやRX用のデータやりとり単位(キャラクタリスティック)が存在します。
Nordic UART Serviceはサービスで、タップしてみるとその中にRX キャラクタリスティックがあることが確認できます。
RX キャラクタリスティックの横の矢印をタップするとウインドウがポップします。ここに文字列を入力すると、RXキャラクタリスティックに書き込まれるという流れです。試しに、「post from BLE」と入力して、下のSENDをタップしてみましょう。
プリンタから、送信した文字列が印刷されました。
このように、Arduino互換な形状になったことで、今まで使っていたシールドも比較的簡単に接続して使うことができます。BLEとWiFiが両方使えることで、工作の幅はますます広がっています。みなさんも今ある部品と組み合わせてぜひとも面白いものを作ってみてください。