Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

IoT-Gerät mit ESP8266-01 & Arduino Nano: Komplettanleitung

Komponenten und Materialien

Arduino Nano R3 1×
ESP8266 ESP-01 WiFi-Modul 1×
2-Kanal-Relais-Modul 1×
LED (Standard) 2×
Steckbrett 1×
Jumper-Kabel 1×
Widerstand 1 kΩ 2×
Widerstand 2,2 kΩ 1×
Custom PCB (PCBWay) 1× (optional)

Werkzeuge

Software und Online-Dienste

Projektbeschreibung

Einführung

Ein Gerät, das über WLAN mit dem Internet verbindet und die ferngesteuerte Steuerung von Haushaltsgeräten ermöglicht. Basis: Arduino Nano + ESP8266-01 als Webserver.

Funktionsweise

Control Panel (Webseite): HTML/CSS/jQuery – Buttons senden HTTP-GET-Requests an den ESP8266.
Embedded Hardware: ESP8266 empfängt Requests, leitet per Serial an Arduino weiter, dieser schaltet Relais/GPIOs.

ESP8266-01 Pinout & Konfiguration

PinFunktion
VCC3,3 V (nicht 5 V!)
GNDMasse
CH_PDChip Enable (High = aktiv)
RSTReset (Low-aktiv)
GPIO0, GPIO2Freie GPIOs
TXAn Arduino RX (Pin 2 per SoftwareSerial)
RXAn Arduino TX (Pin 3 per SoftwareSerial)

Der ESP kommt ab Werk mit 115.200 Baud – zu schnell für SoftwareSerial. Per AT-Kommandos auf 9.600 Baud umstellen:

  1. Leeren Sketch auf Arduino laden
  2. ESP an Hardware-Serial (Pin 0/1) anschließen
  3. Serial Monitor: 115.200 Baud, „Both NL & CR“
  4. AT → OK prüfen
  5. AT+UART_DEF=9600,8,1,0,0 (oder AT+CIOBAUD=9600) senden
  6. Monitor auf 9.600 Baud umstellen, AT testen
  7. WLAN verbinden: AT+CWJAP="SSID","PASSWORT"

Webseite (Control Panel)

HTML/CSS/jQuery. Buttons haben IDs wie „111“ (Pin 11, AN) und „110“ (Pin 11, AUS). Per jQuery wird $.get("https://IP_DES_ESP:80/", {pin: p}) gesendet.

<!DOCTYPE html>
<html>
<head>
  <title>Smart Home Control Panel</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body style="background-color: seagreen; color: seashell; text-align: center;">
  <h1>Smart Home Control Panel</h1>
  <h4>Sorry But I'm a Meme Addict!</h4>
  <img src="dogMeme.jpg" width="400" height="400">
  <br>
  <button style="margin:10px" id="111" class="button">Blue LED ON</button>
  <button id="110" class="button">Blue LED OFF</button>
  <br>
  <button style="margin:10px" id="121" class="button">Red LED ON</button>
  <button id="120" class="button">Red LED OFF</button>
  <script>
    $(".button").click(function() {
      var p = $(this).attr('id');
      $.get("https://192.168.1.4:80/", {pin: p}); // IP anpassen!
    });
  </script>
</body>
</html>

Arduino-Code (Final)

#include <SoftwareSerial.h>
SoftwareSerial esp8266(2, 3); // RX, TX
#define SERIAL_SPEED 9600
#define DEBUG true

int blueLED = 11, redLED = 12;

void setup() {
  pinMode(blueLED, OUTPUT); pinMode(redLED, OUTPUT);
  digitalWrite(blueLED, HIGH); digitalWrite(redLED, LOW);
  Serial.begin(SERIAL_SPEED);
  esp8266.begin(SERIAL_SPEED);
  initWifiModule();
  digitalWrite(blueLED, LOW);
}

void loop() {
  if (esp8266.available()) {
    if (esp8266.find("+IPD,")) {
      delay(1000);
      int connectionId = esp8266.read() - 48;
      esp8266.find("pin=");
      int pinNumber = (esp8266.read() - 48) * 10;
      pinNumber += (esp8266.read() - 48);
      int pinState = (esp8266.read() - 48);
      digitalWrite(pinNumber, pinState);

      // Verbindung schließen
      String closeCmd = "AT+CIPCLOSE=" + String(connectionId) + "\r\n";
      sendData(closeCmd, 1000, DEBUG);
    }
  }
}

String sendData(String cmd, const int timeout, boolean debug) {
  String resp = "";
  esp8266.print(cmd);
  long t = millis();
  while ((t + timeout) > millis()) {
    while (esp8266.available()) {
      char c = esp8266.read();
      resp += c;
    }
  }
  if (debug) Serial.print(resp);
  return resp;
}

void initWifiModule() {
  sendData("AT+RST\r\n", 2000, DEBUG);
  sendData("AT+CWJAP=\"DEINE_SSID\",\"DEIN_PASSWORT\"\r\n", 5000, DEBUG);
  sendData("AT+CWMODE=1\r\n", 1500, DEBUG);
  sendData("AT+CIFSR\r\n", 1500, DEBUG);
  sendData("AT+CIPMUX=1\r\n", 1500, DEBUG);
  sendData("AT+CIPSERVER=1,80\r\n", 1500, DEBUG);
}

Hochspannungslasten per Relais schalten

Zweikanal-Relais-Modul: IN1 an Pin 11, IN2 an Pin 12. COM an Last, NO (Normally Open) an Netzspannung. Webseite um zwei Buttons (IDs 121/120) erweitern.

Professionelle PCB

Design in Autodesk Eagle, Fertigung bei PCBWay (Open Source: Projektlink).

Fehlerbehebung

Schaltpläne

Steckbrett- und PCB-Schaltplan als Bilder verfügbar.

Herstellungsprozess

  1. TinyML Spracherkennung mit Edge Impulse auf Arduino Nano 33 BLE Sense
  2. Echtzeit-Gyroskop-Spiel mit Arduino Nano & MPU-6050
  3. Arduino Digitaler Würfel: LCD-Würfel mit Zufallszahlen (1–6)
  4. Ultraschall-Schwebegerät mit Arduino bauen – Akustische Levitation Schritt für Schritt
  5. Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt
  6. Echtzeit-IoT-Herzfrequenzmonitor mit Arduino & MAX30100
  7. Smart IoT-Glas bauen: Füllstand überwachen mit ESP8266, Arduino & Ultraschall
  8. Echtzeit-Entfernungsmessung mit Arduino Sonar & Processing-Visualisierung
  9. Stufenlose LED-Helligkeitssteuerung mit Bolt IoT und Arduino UNO
  10. TV per Alexa steuern mit Arduino IoT Cloud – Schritt-für-Schritt