Spis treści:
In diesem Artikel werden wir ein Relais an ein ESP32-Modul anschließen und ein Beleuchtungssteuerungssystem mit einer LED erstellen. Sie können auch eine normale 230-V-Glühbirne verwenden, aber dabei ist Vorsicht geboten.
Im ersten Artikel dieser Serie haben wir eine Anleitung zur Programmierung des ESP32 in der Arduino IDE gegeben.
Was benötigen wir für die Durchführung des Projekts?
Was benötigen wir für die Durchführung des Projekts?
Für das Lichtsteuerungsprojekt benötigen wir ein ESP32-Modul, ein Relaismodul und eine LED oder Glühbirne. Wir empfehlen unser vorbereitetes ESP32-Kit, das alle notwendigen Komponenten für dieses und frühere Projekte enthält.
Eine vollständige Liste der Produkte finden Sie unten:
Verbindung von Komponenten
Das Relais kann, wie der PIR-Bewegungssensor, nicht an die Kontaktplatine angeschlossen werden. Das Modul wurde mit Hilfe von Verbindungsleitungen an den ESP32 angeschlossen. Die Relaisspule wird mit 5 V versorgt, also wurde der VCC-Pin mit dem VIN-Pin des ESP32 verbunden. Um die Relaisspule aus dem ESP32-Bausatz aus anzusteuern, muss der IN-Pin auf einen niedrigen Wert gebracht werden, wir verwenden Pin 5 des ESP32-Moduls. Das Gerät, das durch das Relais mit Strom versorgt werden soll, muss an die Schraubklemmen angeschlossen werden. In unserem Fall ist es eine LED, deren Spannung an die Pins COM und NO angeschlossen wird. Die Spule des Relais wird eingeschaltet, wenn die an Pin 15 des ESP32-Moduls angeschlossene Taste gedrückt wird. Einen detaillierten Schaltplan finden Sie unten.
Programm für ESP32
// definiujemy piny, gdzie podłączyliśmy przekaźnik oraz__przycisk
int relay_pin = 5;
int button_pin = 15;
void setup() {
Serial.begin(115200);
pinMode(relay_pin, OUTPUT); // ustawiamy pin przekaźnika jako OUTPUT
pinMode(button_pin, INPUT_PULLUP); // ustawiamy pin przycisku jako INPUT_PULLUP
}
void loop() {
// definiujemy aby stan przycisku odczytywany był cyforowo: wysoki / niski
int buttonState = digitalRead(button_pin);
// definiujemy zależność:
if (buttonState == LOW) { // jeżeli przycisk przejdzie w stan niski
Serial.println("Przycisk został wciśnięty");
digitalWrite(relay_pin, LOW); // przekaźnik załączy się
}
else if (buttonState == HIGH) {
Serial.println("Przycisk został puszczony");
digitalWrite(relay_pin, HIGH);
}
}
Fernsteuerung des Relais
Der ESP32 Webserver kann verwendet werden, um die Beleuchtung mit Relais fernzusteuern. [NUM_RELAYS] Im folgenden Programm kann eine beliebige Anzahl von Relais verwendet werden, indem Sie die in der Zeile #define NUM_RELAYS angegebene Anzahl ändern und die entsprechenden Pins, an die die Relais angeschlossen sind, in int relayGPIOs = { }; angeben.
Sobald das Programm geladen ist, wird die lokale IP-Adresse, unter der der Server erstellt wurde, im seriellen Monitor angezeigt.
https://randomnerdtutorials.com/esp32-esp8266-relay-web-server/
#include
#include
#include
//Ustaw wartość true, aby zdefiniować przekaźnik jako normalnie otwarty (NO)
#define RELAY_NO true
//Ustaw liczbę przekaźników
#define NUM_RELAYS 1
//Przyporządkuj każde GPIO do przekaźnika
int relayGPIOs[NUM_RELAYS] = {5};
const char* ssid = "Twoje_SSID";
const char* password = "Twoje_haslo";
const char* PARAM_INPUT_1 = "relay";
const char* PARAM_INPUT_2 = "state";
//Tworzenie obiektu AsyncWebServer na porcie 80
AsyncWebServer server(80);
const char index_html[] PROGMEM = R"rawliteral(
Oswietlenie
%BUTTONPLACEHOLDER%
)rawliteral";
//Zastępuje placeholder sekcją przycisku na twojej stronie internetowej
String processor(const String& var){
//Serial.println(var);
if(var == "BUTTONPLACEHOLDER"){
String buttons ="";
for(int i=1; i<=NUM_RELAYS; i++){
String relayStateValue = relayState(i);
buttons+= "Przekaznik #" + String(i) + " - GPIO " + relayGPIOs[i-1] + "
";
}
return buttons;
}
return String();
}
String relayState(int numRelay){
if(RELAY_NO){
if(digitalRead(relayGPIOs[numRelay-1])){
return "";
}
else {
return "checked";
}
}
else {
if(digitalRead(relayGPIOs[numRelay-1])){
return "checked";
}
else {
return "";
}
}
return "";
}
void setup(){
Serial.begin(115200);
// Ustaw wszystkie przekaźniki na wyłączenie przy starcie programu - jeśli ustawione na Normally Open (NO), przekaźnik jest wyłączony, gdy ustawisz przekaźnik na HIGH
for(int i=1; i<=NUM_RELAYS; i++){
pinMode(relayGPIOs[i-1], OUTPUT);
if(RELAY_NO){
digitalWrite(relayGPIOs[i-1], HIGH);
}
else{
digitalWrite(relayGPIOs[i-1], LOW);
}
}
//Połącz z WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Łączenie z WiFi..");
}
//Wyświetl lokalne IP
Serial.println(WiFi.localIP());
// Route dla root / web page
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, "text/html", index_html, processor);
});
//Wyślij żądanie GET do /update?relay=&state=.
server.on("/update", HTTP_GET, [] (AsyncWebServerRequest *request) {
String inputMessage;
String inputParam;
String inputMessage2;
String inputParam2;
//GET input1 value on /update?relay=
if (request->hasParam(PARAM_INPUT_1) & request->hasParam(PARAM_INPUT_2)) {
inputMessage = request->getParam(PARAM_INPUT_1)->value();
inputParam = PARAM_INPUT_1;
inputMessage2 = request->getParam(PARAM_INPUT_2)->value();
inputParam2 = PARAM_INPUT_2;
if(RELAY_NO){
Serial.print("NO ");
digitalWrite(relayGPIOs[inputMessage.toInt()-1], !inputMessage2.toInt());
}
else{
Serial.print("NC ");
digitalWrite(relayGPIOs[inputMessage.toInt()-1], inputMessage2.toInt());
}
}
else {
inputMessage = "No message sent";
inputParam = "none";
}
Serial.println(inputMessage + inputMessage2);
request->send(200, "text/plain", "OK");
});
// Start server
server.begin();
}
void loop() {
}
Wie hilfreich war dieser Beitrag?
Klicke auf die Sterne um zu bewerten!
Durchschnittliche Bewertung 4.7 / 5. Stimmenzahl: 15
Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.