IoT開発(2)-ESP-WROOM-02で気温測定
どもです。
この記事は、IoT開発(1)-ESP-WROOM-02のセットアップからの続きです。
前回のエントリでは、ESP-WROOM-02にArduinoのプログラムを書き込んでL-チカする、という内容を書きました。
今回は、次のステップとして、「温度センサーで値を取得」に挑戦します。
1.使用するセンサー
今回使用するセンサーは、「MDK001」です。
MDK001は、マルツさんでコチラから購入可能です。
使用やサンプルコードは、コチラです。
※今回のエントリで使用するコードは、このコードを参考にしています。
2.配線
ESP-WROOM-02とMDK001の配線は、下記の通りに行います。
ESP-WROOM-02 | MDK001 |
---|---|
3V3 | VDD |
IO14 | SCL |
IO12 | SDO |
IO13 | SDI |
GND | CS |
GND | GND |
MDK001はSPIで通信/値を取得しますので、それに合わせた配線になっています。
MDK001のCSを、GNDに直に接続しています。
これは、通信対象が1台であり選択の必要が無く、またコードの量を(少しだけですが)削減するためです。
上記以外の配線として、デバッグ用にESP-WROOM-02のGPIO4にLEDを接続しています。
電源は、パソコンからUSB/AE-UM232R経由で取っています。
3.プログラム
今回のコードは、下記の通りです。
#include <SPI.h>
extern "C" {
#include "user_interface.h"
}
#define _DEBUG 1
#if _DEBUG
#define DBG(...) { Serial.print(__VA_ARGS__); }
#define DBGLED(...) { digitalWrite(__VA_ARGS__); }
#else
#define DBG(...)
#define DBGLED(...)
#endif /* _DBG */
#define LED 4
#define SCK 14
#define MOSI 13
#define MISO 12
#define CS_E 15
void setup()
{
#ifdef _DEBUG
Serial.begin(115200);
delay(20);
#endif
DBG("Start");
pinMode(LED, OUTPUT);
pinMode(CS_E, OUTPUT);
digitalWrite(CS_E, HIGH);
//Initialize SPI configuration.
SPI.begin();
SPI.setDataMode(SPI_MODE3);
SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV8);
digitalWrite(CS_E, LOW);
SPI.transfer(0x54);
delay(240);
}
void loop()
{
DBGLED(LED, 1);
uint16_t readVal = 0;
float temp = 0;
readVal = (uint16_t)SPI.transfer(0) << 8; //Upper 8bit.
readVal = readVal | SPI.transfer(0);
DBG("readVal = ");
DBG(readVal, HEX);
DBG("\r\n");
readVal = readVal >> 3;
if (0x1000 & readVal) {
readVal = (uint32_t)readVal - 8192;
}
temp = ((float)readVal) / 16.0;
DBG("temperature = ");
DBG(temp);
DBG("\r\n");
DBGLED(LED, 0);
delay(3000);
}
本エントリの最初にも書きましたが、このプログラムはマルツさんのサンプルコードをほとんどのそのまま使用しています。
詳細な内容は、マルツさんのサイトを参照して下さい。
4.実行
実行すると、3秒ごとに測定した結果が表示されます。
その結果が以下!
LEDが点灯している間にPCの表示が変更され、その後LEDが消灯する、という様子が分かると思います。
5.まとめ
今回は、ESP-WROOM-02にMDK001を接続して、気温を取得/表示させました。
これでESP-WROOM-02でセンサー値を取得することができるようになりました。
次は、いよいよネットワークに接続して、センサーの値を送信します。
ではっ!
続きます
この記事は、以下の記事に続きます。
こちらの記事も併せて読んでいただけると、幸いです。
IoT開発(3)-ESP-WROOM-02でデータを送信
IoT開発(4)-ESP-WROOM-02を電池で駆動
IoT開発(5)-ESP-WROOM-02をDeepSleepで長時間駆動させる
ディスカッション
コメント一覧
まだ、コメントがありません