ArduinoでESP8266を使用するときのピン
こんにちは、くろべこです。
お手軽にWifi開発できるボードにESP8266というものがあります。
Arduinoでも開発が出来てライブラリも豊富なので、サーバー構築も割とすぐにできる優れものです。しかし、Arduinoで使えるといっても実際のGPIOとESP8266に表記されているピン名が異なっているため、資料と対比させながら使う必要があるのでややこしくはあります。
■ArduinoとESP8266の対比表
Specification | Arduino | ESP8266 |
RAM | 4K Bytes | 80 Kilobytes |
FLASH memory | 32 Kilo bytes | 4 Mega Bytes |
Speed | 16MHz | 80MHz |
GPIOs | 14 | 11 |
IO Voltage Level | 5V | 3.3V |
ADC | 6 (10-bit) | 1 (10-Bit) |
Serial | 1 | 1 |
I2C | 1 | 1 |
SPI | 1 | Used by Flash Chip |
PWM IOs | 6 (8-Bit Resolution) | All IO Pins with 10-Bit Resolution |
WiFi | NO | YES 2 MBPS |
さらに、ブート時にHIGHになったりLOWになったりするピンも存在するので、すべてArduinoと同じく使用できるわけでもありません。
そこで今回は、アマゾンで購入できる【ESP8266 NodeMCU LUA CP2102 ESP-12E(HiLetgo)】を題材としてArduinoのdigitalWrite, digitalReadで使用できるピン配置を解説していきます。
ESP8266ピン配置
ESP8266 NodeMCUのピン配置は以下の通りです。
GPIOなにがしと記載されている数字がArduinoで制御できるピン番号に対照する感じですね。また、I2Cに関してはGPIO5(SCL),GPIO4(SDA)でArduinoと同じように使用可能です。
アナログピンはどうかというと、ADC0とあるように、一個しかありません。アナログ読み取りの基準電圧は3.3Vの10bit分解能なのでArduinoの5V/8bitよりも高分解で使用可能です。
こんな感じで、GPIOを基にArduinoで開発できるわけですが、前述したようにピンごとに癖があるので次項では実際に使用可能なピンについて解説します。
ESP8266使用可能なピン
下の図にあるように、GPIOによってはboot時にHighやLowに固定されるピンが存在します。なので、接続するデバイスによっては意図しない動作をしてしまう場合がるので使用するピンは選ぶ必要があります。
参考:ESP8266 Relay (active low): how to prevent triggering on boot or reset (SOLVED)
これからわかる様に、何も考えないでArduinoと同じく使うには【D1(5) / D2(4) / D5(14) / D6(12) / D7(13)】という事になります。
今回の記事は、こんなところです。
みなさんの開発の参考にして頂ければ幸いです。
コメント