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