ESP8266をリセットしたときの各信号ピンの信号レベルと、PWMの設定方法を示します。なお、TRIAL-ESP8266-LEAFキットで確認します。TRIAL-ESP8266-LEAFキットの詳細は、「TRIAL-ESP8266-LEAFキットでWi-Fi接続」を参照してください。

ESP8266のリセット時の各ピンの信号レベル

ESP8266をリセット時の各ピンの信号レベルは次のようになっています。

【リセット時の各ピンの信号レベル】

信号名称 電圧(V)
D14 SCK 3.30
D12 MI 3.30
D13 MO 3.30
D15 SS 0.69
D2 3.30
D0 3.30
D4 SDA 0.02
D3 RX 3.30
D1 TX 3.30
D5 SCL 0.02
AD 3.30
D16 0.01

リセット時の信号レベルの反転方法

リセット時の信号レベルを反転したい場合は、トランジスタを使用して次のような回路で反転できます。トランジスタは2SA1015を使用しました。

リセット時の信号レベルの反転方法

回路図でR1/R2の抵抗値は10kΩとします。信号「IN」にESP8266の出力信号を接続し、信号「Vout」をほかの部品に接続します。作成した回路の接続画像を次に示します。

リセット時の信号レベルの反転

ESP8266をPWMで使用

ESP8266をPWMで使用する場合のサンプルプログラムを次に示します。

  • IO16に接続されたLEDは点滅します。
  • IO2はPWMで使用します。周波数は「1kHz」で範囲「100」とします。変数「SPEED」を変更することにより、出力されるPWMが変化します。
  • io12は、上記で記述された回路により信号を反転させます。
#define LED  16
#define AIN1 13  // Right Motor Blue
#define AIN2 15  // Right Motor Yellow
#define PWMA 2
#define STBY 12

// PWN
#define PWN_FREQ 1000 // PWM frequency: 1000Hz(1kHz)
#define PWN_RANGE 100 // PWN range: 100
#define SPEED 30  

void setup() {
  pinMode(LED, OUTPUT);     // Initialize the LED_BUILTIN pin as an output
  
  // Initialize GPIO mode
  pinMode(AIN1, OUTPUT);
  pinMode(AIN2, OUTPUT);
  pinMode(STBY, OUTPUT);

  // Initialize PWN
  analogWriteFreq(PWN_FREQ);
  analogWriteRange(PWN_RANGE);

  digitalWrite(AIN1, LOW);
  digitalWrite(AIN2, LOW);
  analogWrite(PWMA, SPEED);
  
  digitalWrite(STBY, LOW);
  
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED, LOW);   // Turn the LED on (Note that LOW is the voltage level
                                    // but actually the LED is on; this is because 
                                    // it is active low on the ESP-01)
  delay(1000);                      // Wait for a second
  digitalWrite(LED, HIGH);  // Turn the LED off by making the voltage HIGH
  delay(2000);                      // Wait for two seconds (to demonstrate the active low LED)
}

上記Pythonスクリプトの10行目の「#define SPEED 30」を次のように変更すると、IO2の出力電圧が次のようになります。

【「#define SPEED 30」 の場合】

ロジアナで確認すると、パルスの幅が「0.303ms」になっています。テスターで電圧を測ると「0.981V」でした。

【「#define SPEED 60」 の場合】

ロジアナで確認すると、パルスの幅が「0.603ms」になっています。テスターで電圧を測ると「1.8V」でした。