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」でした。



