はじめに
ESP32を使用してリレーモジュールをTeraTerm上から制御する。
安定化電源などは後ろに付いている制御端子(?)のShort / Openで
電源出力のON / OFFが出来るので安定化電源をPC上のteratermから操作が出来る。
説明
マイコンは以下のESP32のDevkitを使用
やることはGPIOを2つLOW HIGHするだけなのでGPIOが2個あってUSBインターフェースがあればESP32Devkitである必要は全くないです。
https://akizukidenshi.com/catalog/g/gM-13628/
購入したリレーモジュールはこれ↓
https://www.amazon.co.jp/gp/product/B08QJ3PNH3/ref=ppx_yo_dt_b_asin_title_o08_s00?ie=UTF8&th=1
DC+に5V、DC-にGNDを接続する。
基板上を見る感じフォトカプラ乗っているっぽいので、ちゃんと基板上のパターン追っていないけどリレーON時の逆起電力でマイコン破壊などは起きないと信じる。
そして
IN1 を ESP32の12
IN2 を ESP32の14
に接続する。
#include "Arduino.h"
// リレーのトリガピン設定
#define RELAY_1 12
#define RELAY_2 14
// コマンドを受信するためのグローバル変数
String command = "";
void setup() {
Serial.begin(115200);
// RELAY_PINを出力として設定
// リレーはNCを使用しているので初期値はLOWで短絡
pinMode(RELAY_1, OUTPUT);
digitalWrite(RELAY_1, LOW);
pinMode(RELAY_2, OUTPUT);
digitalWrite(RELAY_2, LOW);
}
void loop() {
// シリアルポートから利用可能なデータがある場合、それを読み取る。
while (Serial.available() > 0) {
char inChar = (char)Serial.read();
command += inChar;
// エンターで読み取る、
if (inChar == '\n') {
command.trim(); // 余分な空白の削除。
// コマンド "r1 o" でリレー1をオープン
if (command == "r1 o") {
digitalWrite(RELAY_1, HIGH);
Serial.println("Relay1 open");
}
// コマンド "r1 c" でリレー1をショート
else if (command == "r1 c") {
digitalWrite(RELAY_1, LOW);
Serial.println("Relay1 short");
}
// コマンド "r2 o" でリレー2をオープン
else if (command == "r2 o") {
digitalWrite(RELAY_2, HIGH);
Serial.println("Relay2 open");
}
// コマンド "r2 c" でリレー2をショート
else if (command == "r2 c") {
digitalWrite(RELAY_2, LOW);
Serial.println("Relay2 short");
}
// その他のコマンドの場合はエラー
else {
Serial.println("Unknown command");
}
// コマンドリセット。
command = "";
}
}
delay(10);
}
これをESP32に書き込み、Teraterm上で
「r1 o」など規定のコマンドを打って送信すればリレーが開閉します。
ほなまた