アナログ値を測る(ADコンバータ使用)
解説
ESP-WROOM-02 には、アナログ入力はないので、そのままでは、アナログ値を測ることはできませんが、ADコンバータ(アナログ-デジタル変換器)を使用すれば、アナログ値を測ることができます。
ADコンバータ MCP3002 は、SPI通信によって、アナログ値を取得します。
ADコンバータ MCP3002 から、アナログ値を取得する場合、以下のデータを送信します。
「CH0」から取得する場合
0b01101000、0b00000000
「CH1」から取得する場合
0b01111000、0b00000000
※「0b~」は、2進数表現です。
各ビットの意味は以下です。
送信するデータの最初の1は、開始ビットで、必ず1です。
開始ビットの次は、SGL/DIFFビットです。シングルエンドあるいは擬似差動モードを指定します。シングルエンドの1にします。
SGL/DIFFビットの次は、ODD/SIGNビットです。チャンネルを指定します。CH0の場合は0に、CH1の場合は1にします。
ODD/SIGNビットの次は、MSBF(Most Significant Bit First)ビットです。デバイスから返されるデータのフォーマット(MSBF or LSBF)を指定します。MSBFの1にします。
MSBFビット以降はゼロにします。
ADコンバータ MCP3002の分解能は 10ビット = 2^10 = 1024 です。
返ってくる値は、0 から 1023 で、0[V] から 3.3[V](Vdd/Vref の電圧) を表します。
部品表
最低限必要なものは「ハードウェアのセットアップ」参照
部品名 | 数量 | 商品名 | 参考価格 |
---|---|---|---|
ADコンバータ | 1 | 10ビット2ch ADコンバータ MCP3002 | 200円 |
ボリューム | 2 | 小型ボリューム 10KΩB | 50円 |
接続表
MCP3002側 | ESP-WROOM-02側 | |
---|---|---|
ピン番号 | ピン名称 | ピン名称 |
1 | ChipSelect | IO15(Slave Select pin) |
2 | CH0 | ボリューム1の真ん中の端子 |
3 | CH1 | ボリューム2の真ん中の端子 |
4 | Vss | GND |
5 | Din | IO13(MOSI) |
6 | Dout | IO12(MISO) |
7 | CLK | IO14(SCK) |
8 | Vdd/Vref | 3V3 |
接続例
プログラム書き込み時の接続については、「ハードウェアのセットアップ」参照
プログラム書き込み時は、RTSピンとRESETピンを接続し、DTRピンとIO0ピンを接続します。
実行時は、RTSピンとRESETピンを接続しません、DTRピンとIO0ピンを接続しません。
(実行時に、RTSピンとRESETピンを接続し、DTRピンとIO0ピンを接続すると、シリアル通信時に、生じる信号が、RESETピン、IO0ピンに入り、「リセットがかかる」等、期待しない動作になります。)
サンプルコード
実行
ESP-WROOM-02から送信されたものをPC(Arduino IDE の Serial Monitor)で受信した結果。
アナログ値の測定結果がSerial Monitor画面に表示されます。
値は、0 から 1023 で、0[V] から 3.3[V] を表します。