第一回:SPI通信とI2C通信を使う
こんにちは。岸田です。今回から3回に分けて、ESP-WROOM-02 開発ボードを使った製作とその過程を紹介しようと思います。
皆さんはESP-WROOM-02というWi-Fiモジュールをご存じですか?2015年に工事設計認証(いわゆる技適)を取得した、電子工作などに利用可能なWi-Fiモジュールです。安価である上に小型で高機能なマイコンを内蔵しているため、非常に多くの使いみちがあります。そして特徴の一つは、「Arduino IDEで開発ができる」というものです。この特徴によって、既存のArduino向けスケッチの多くが流用できます。プロトタイピングがはかどりますね。Arduino IDEでの設定方法はこちらのwikiをご覧ください。又、以前設定を行った方も最新版への移行をおすすめします。サンプルスケッチの増加とコード量の削減が図られています。記事執筆時点での最新版はv2.1です。
というわけで、今回はESP-WROOM-02を搭載した人気商品、開発ボードと温度センサをつかったロガーを作ってみます。更には、当モジュールのWi-Fi機能およびArduino環境で開発できるという特徴を最大限利用して、多くのサンプルスケッチを利用し、ウェブブラウザから温度データをグラフ表示するというところまでやってみようと思います。
今回は、SDカードとの通信および温度センサとの通信というところまで紹介しようと思います。
■つかうもの
- ESP-WROOM-02 開発ボード
- BME280 温度、湿度、気圧センサ
- microSD(容量は2GB程度で十分です)
- SparkFun マイクロSDカードスロット・ピッチ変換基板
- ブレッドボード
- ジャンパワイヤ、ピンヘッダ少々
■microSDカードを使う
SDカードとESP-WROOM-02開発ボードは、SPI通信でデータのやり取りをすることができます。ESP-WROOM-02開発ボードでSPI通信をする時のピンは、下の表の通りです。
- CS - IO15(デフォルトの設定、IO16などでも通信可能)
- MOSI - IO13
- MISO - IO12
- SCK - IO14
ブレッドボード用の変換基板を使用してESP-WROOM-02開発ボードにmicroSDカードを接続します。
SDカードの端子と開発ボードとの接続方法は下図のとおりです。ESP-WROOM-02は3.3Vで動作していますので、特にレベルシフタなどは必要ありません。
接続したら、Arduino IDEのファイル->スケッチの例-> examples from libraries -> SD -> Dataloggerを選択し、26行目の chipSelect = 4;
となっているところをchipSelect = 15;
に変更します。スケッチを書き込み、シリアルモニタにcard initialized.
と表示されれば通信成功です。
SDカードに関しては一旦ここで終わりにして、次はBME280とのI2C通信の説明をします。
■BME280 温度、湿度、気圧センサを使う
BME280はI2C通信、SPI通信どちらでもデータを取得できます。スイッチサイエンスwikiやGitHubで公開しているものはI2C通信用なので、簡単にするためにも今回はI2C通信でデータをやり取りしたいと思います。
ESP-WROOM-02開発ボードでI2C通信をする時のピンは、特に設定が行われていない場合下の表の通りです。
- SDA - IO4
- SCL - IO5
スイッチサイエンスで販売しているBME280搭載モジュールはI2C通信用のプルアップが未実装なため、ブレッドボード上に抵抗をつけるか、センサモジュール上に1608サイズのチップ抵抗をつけてください。今回は、センサモジュール上に、10kΩのチップ抵抗をハンダ付けしました。また、BME280はI2C通信用のアドレスの選択ができます。今回は、SDOピンをGNDに配線し、アドレスをArduino向け7bit表記で0x76としています。
ArduinoのスケッチをスイッチサイエンスwikiやGitHubから取得して、書き込んでください。シリアルモニタに温度などが表示されれば通信成功です。
今回の紹介はここまでとします。
次回は、NTPサーバーからの時刻の取得と、WEBブラウザ経由でSDカードの中身を見るところまでの紹介を予定しています。
第二回:ESP-WROOM-02を使ったWi-Fi機能付き温度ロガーを作る(2)