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

Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie

Komponenten und Zubehör

Arduino UNO × 1
Arduino MKR WiFi 1010 (oder NodeMCU ESP8266 / ESP32) × 1
Maxim Integrated MAX32630FTHR (Alternative: MAX32620FTHR, Arduino 1010, ESP8266 Board + externes WiFi) × 1
Raspberry Pi Zero Wireless (oder Pi 2/3) × 1
DHT11 Temperatur- & Feuchtigkeitssensor (4 Pins) × 1
Seeed Grove Gas Sensor MQ2 × 1
SparkFun Soil Moisture Sensor (mit Schraubklemmen) × 1
PIR Bewegungsmelder (optional) × 1
RFID Reader (allgemein) × 1
Relais (2-Kanal empfohlen) × 1
RGB LED Common Cathode × 1
Raspberry Pi Camera Module × 1
Servo Tower Pro MG996R × 1
Summer (Buzzer) × 2
HC-05 Bluetooth Modul (optional) × 1
LED (allgemein) × 4
Netzteil / Powerbank × 2
Speicherkarte (>4 GB, Class 10 für Raspberry Pi OS) × 1

Benötigte Werkzeuge und Maschinen

Apps und Online-Dienste

Über dieses Projekt

Es gibt viele IoT-Automatisierungsprojekte, aber Octopod ist einzigartig! Octopod nutzt NodeMCU (oder MAX32620FTHR / Arduino MKR 1010), Arduino Uno und Raspberry Pi 3. Es macht Ihr Zuhause smart. Octopod sendet Daten wie Temperatur, Luftfeuchtigkeit, Gasqualität. Es benachrichtigt bei Bewegung und meldet, wann Pflanzen gegossen werden müssen. Geräte lassen sich per Blynk-App am Smartphone steuern. Dazu echtes Mood Lighting!

Eine kleine Kamera liefert Live-Feed. Mit Künstlicher Intelligenz (OpenCV) erkennt sie Menschen und sendet deren Bilder per E-Mail. Zusätzlich ein RFID-Türschloss!

Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie
Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie
Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie

Wie alles funktioniert

NodeMCU ist mit Sensoren, Relais-Modul und RGB-LEDs verbunden. Per WLAN mit Blynk-App gekoppelt – Datenaustausch und Steuerung.

Raspberry Pi ebenfalls per WLAN: Live-Feed via Pi-Camera. OpenCV installiert, erkennt Menschen im Blickfeld und mailt deren Bilder.

Smart Door Unit: RFID-Modul. Erlaubte RFID-Karte in Reichweite → Tür öffnet automatisch (Servo).

SCHRITT 1: Haupt-Octopod programmieren

Code fast zeilenweise kommentiert – zum Verständnis, nicht nur Kopieren. Kurzübersicht:

Bibliotheken einbinden

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DHT.h>
#define BLYNK_PRINT Serial

Blynk Auth-Token, WLAN-Credentials:

char auth[] = "Your Blynk Auth Key";
char ssid[] = "Your WiFi SSID";
char pass[] = "Your WiFi Password";

Pins und Variablen definieren

#define DHTPIN 2
#define soilPin 4
#define gasPin A0
#define pirPin 12
int pirValue, soilValue, PIRpinValue, SOILpinValue;
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;

BLYNK_WRITE() – App steuert Sensor-Aktivierung

BLYNK_WRITE(V0) { PIRpinValue = param.asInt(); } // Motion Detection AN/AUS
BLYNK_WRITE(V1) { SOILpinValue = param.asInt(); } // Soil Moisture AN/AUS

sendSensor() – DHT11 Daten an Blynk senden

void sendSensor() {
  int h = dht.readHumidity();
  int t = dht.readTemperature();
  if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; }
  Blynk.virtualWrite(V5, h); // Humidity
  Blynk.virtualWrite(V6, t); // Temperature
}

getPirValue() & getSoilValue() – Sensoren lesen & Push-Benachrichtigung

void getPirValue() {
  pirValue = digitalRead(pirPin);
  if (pirValue) { Serial.println("Motion detected"); Blynk.notify("Motion detected"); }
}
void getSoilValue() {
  soilValue = digitalRead(soilPin);
  if (soilValue == HIGH) { Serial.println("Water Plants"); Blynk.notify("Water Plants"); }
}

setup() – Initialisierung

void setup() {
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  dht.begin();
  Blynk.tweet("OCTOPOD IS ONLINE!");
  pinMode(pirPin, INPUT);
  pinMode(soilPin, INPUT);
  timer.setInterval(1000L, sendSensor);
}

loop() – Hauptloop

void loop() {
  Blynk.run(); timer.run();
  if (PIRpinValue == HIGH) getPirValue();
  if (SOILpinValue == HIGH) getSoilValue();
}

SCHRITT 2: RFID Smart Lock programmieren

Zwei Versionen: mit/ohne Bluetooth. Einfach: MFRC522 Library installieren, Beispiel dumpInfo nutzen, um Karten-UIDs auszulesen. Dann UID in Code eintragen:

if (content.substring(1) == "XX XX XX XX") { ... }

Logik: UID match → Servo bewegt sich (Tür auf), grüne LED, Summer. Kein Match → rote LED, anderer Summer-Ton.

Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie
Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie
Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie

SCHRITT 3: Raspberry Pi Menschenerkennung (KI) einrichten

Anleitung für Smart Security Camera: Kamera sendet E-Mail bei Objekterkennung, Live-Feed via IP-Adresse im lokalen Netz (oder ngrok für extern). Von Grund auf:

Voraussetzungen

Annahmen

Schritt 1: Kamera anschließen

  1. Kamera-Modul öffnen, statische Entladung beachten (geerdetes Objekt berühren).
  2. Kabel in Connector zwischen Ethernet und HDMI (Silberkontakte Richtung HDMI).
  3. Pi booten, sudo raspi-config → Kamera aktivieren (unter Interfacing Options). Falls nicht sichtbar: sudo apt-get update && sudo apt-get upgrade.
  4. Reboot.

Schritt 2: OpenCV Installation

  1. Dateisystem erweitern: sudo raspi-config → Advanced Options → Expand Filesystem. Optional LibreOffice & Wolfram Engine entfernen für Platz (sudo apt-get purge wolfram-engine libreoffice* && sudo apt-get clean && sudo apt-get autoremove).
  2. Abhängigkeiten installieren (Build-Tools, Bild/Video I/O, GTK, Optimierungsbibliotheken, Python Headers). Siehe Code-Blöcke im Original.
  3. OpenCV 3.3.0 + opencv_contrib 3.3.0 herunterladen & entpacken (Versionen müssen identisch sein).
  4. pip installieren, virtualenv/virtualenvwrapper einrichten, Python Virtual Environment cv erstellen (Python 2.7 oder 3).
  5. NumPy in cv installieren.
  6. OpenCV kompilieren mit CMake (Swap-Size auf 1024 MB erhöhen für 4-Core-Compile: sudo nano /etc/dphys-swapfile → CONF_SWAPSIZE=1024, Swap-Service neu starten). make -j4 (oder make bei Fehlern).
  7. Installieren: sudo make install && sudo ldconfig.
  8. Symlink in Virtual Environment: ln -s /usr/local/lib/pythonX.Y/site-packages/cv2.so ~/.virtualenvs/cv/lib/pythonX.Y/site-packages/cv2.so (bei Python 3 Datei vorher umbenennen).
  9. Test: source ~/.profile && workon cv && python -c "import cv2; print(cv2.__version__)" → 3.3.0.
  10. Swap zurück auf 100 MB setzen, Build-Verzeichnisse löschen.

Schritt 3: Python-Programm einrichten

  1. Kamera testen: raspistill -o image.jpg.
  2. Python-Dateien & Modelle herunterladen (Google Drive Link im Original).
  3. Virtual Environment aktivieren (source ~/.profile && workon cv).
  4. In Repository-Verzeichnis: pip install -r requirements.txt.
  5. mail.py anpassen: Gmail-Absender, Passwort, Empfänger eintragen (SMTP, „less secure apps“ in Google erlauben).
  6. main.py optional anpassen (E-Mail-Intervall, Kamera-Flip, Klassifikator-Modell: fullbody/upperbody/facial).
  7. Starten: python main.py. Live-Stream im Browser: https://:5000. Extern via ngrok: ./ngrok http 5000.
  8. Autostart via /etc/rc.local einrichten.
Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie
Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie
Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie
Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie
Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie
Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie
Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie

SCHRITT 4: Blynk App Interface einrichten

Einfach & spaßig:

  1. Blynk App installieren (App Store/Play Store), Anmelden.
  2. New Project → Name, Device: NodeMCU, Connection: WiFi → Create.
  3. Auth Key per Mail → in Code kopieren.
  4. Widgets hinzufügen (Energie nötig):
  5. 3 Gauges: Temperature (V6, 0-50°C), Humidity (V5), Gas (V?).
  6. zeRGBa: R→GP15, G→GP3, B→GP1.
  7. 4 Buttons (Farben anpassen) für Relais, Motion, Soil, etc.
  8. SuperChart: 3 Data Streams (Temp, Humidity, Gas).
  9. Tabs: 2. Tab → Twitter, Notifications, Email, Eventor konfigurieren (Triggers für Benachrichtigungen).
  10. Play-Button drücken – Interface läuft. Nach Belieben anpassen.
Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie
Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie

SCHRITT 5: Octopod-Gehäuse bauen

Warnung – zeitaufwendigster Teil! Optional: 3D-Druck-Dateien nutzen (siehe CAD-Bereich).

Design inspiriert von Oktaeder (3D-Achteck). Aus Pappe:

Lackierung: Im Freien, Maske/Handschuhe, 2-3 Schichten Sprühfarbe, 4-5 Std. Trocknung zwischen Schichten.

Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie

SCHRITT 6: Türschloss-Gehäuse

Schuhkarton, 2-3 Farbschichten, evtl. Muster mit Duck Tape.

Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie

SCHRITT 7: Octopod zusammenbauen

Schaltplan beachten (Bild/Datei). Kurz:

Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie

Fertig! Einschalten, auf Tisch stellen, Live-Feed via Pi-IP im Browser genießen!

SCHRITT 8: Türschloss zusammenbauen

Code auf Arduino laden, Verdrahtung laut Schaltplan/Fritzing. Schuhkarton: 2 Löcher für LEDs, Servo herausragen lassen. RFID-Reader, Breadboard, Arduino im Karton fixieren. Netzteil/Powerbank anschließen. Fertig! (Nur Experiment, nicht als echtes Schloss nutzen!)

Fazit

Ein wirklich spaßiges Projekt! Ergebnis gefällt mir gut, Lichter sehen toll aus. Selbst als Nachttischlampe lohnt der Bau. Danke an Blynk- und OpenCV-Ersteller – großartige Software! Fragen? Gerne kommentieren. Danke & Please Vote!

-Saksham

Arduino Blog / Full Instructable

Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie

UPDATE

Integration mit Amazon Alexa in Arbeit, Code folgt in 2-3 Tagen!

Code

octopod.ino (Arduino) – Hauptcode für NodeMCU / MKR 1010
/***************************************************************************
 OCTOPOD: SMART HOME AUTOMATION PROJECT BY SAKSHAM
 Blynk Library: https://github.com/blynkkk/blynk-library/releases/latest
 DHT Library:   https://github.com/adafruit/DHT-sensor-library
***************************************************************************/
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DHT.h>
#define BLYNK_PRINT Serial

char auth[] = "Your Blynk Auth Key";
char ssid[] = "Your WiFi SSID";
char pass[] = "Your WiFi Password";

#define DHTPIN 2
#define soilPin 4
#define gasPin A0
#define pirPin 12
int pirValue, soilValue, PIRpinValue, SOILpinValue;
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;

BLYNK_WRITE(V0) { PIRpinValue = param.asInt(); }
BLYNK_WRITE(V1) { SOILpinValue = param.asInt(); }

void sendSensor() {
  int h = dht.readHumidity();
  int t = dht.readTemperature();
  if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; }
  Blynk.virtualWrite(V5, h);
  Blynk.virtualWrite(V6, t);
}

void getPirValue() {
  pirValue = digitalRead(pirPin);
  if (pirValue) { Serial.println("Motion detected"); Blynk.notify("Motion detected"); }
}
void getSoilValue() {
  soilValue = digitalRead(soilPin);
  if (soilValue == HIGH) { Serial.println("Water Plants"); Blynk.notify("Water Plants"); }
}

void setup() {
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  dht.begin();
  Blynk.tweet("OCTOPOD IS ONLINE!");
  pinMode(pirPin, INPUT);
  pinMode(soilPin, INPUT);
  timer.setInterval(1000L, sendSensor);
}

void loop() {
  Blynk.run(); timer.run();
  if (PIRpinValue == HIGH) getPirValue();
  if (SOILpinValue == HIGH) getSoilValue();
}
octopod_door.ino (Arduino) – Automatisches Türschloss (OHNE Bluetooth)
/***********************************************************************************************************
 OCTOPOD: SMART HOME AUTOMATION BY SAKSHAM
 ARDUINO RFID DOOR LOCK – Library: MFRC522
************************************************************************************************************/
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#define SS_PIN 10
#define RST_PIN 9
#define LED_G 5
#define LED_R 4
#define BUZZER 2
MFRC522 mfrc522(SS_PIN, RST_PIN);
Servo myServo;

void setup() {
  Serial.begin(9600);
  SPI.begin();
  mfrc522.PCD_Init();
  myServo.attach(3);
  myServo.write(0);
  pinMode(LED_G, OUTPUT); pinMode(LED_R, OUTPUT); pinMode(BUZZER, OUTPUT);
  noTone(BUZZER);
  Serial.println("Put your card to the reader..."); Serial.println();
}

void loop() {
  if (!mfrc522.PICC_IsNewCardPresent()) return;
  if (!mfrc522.PICC_ReadCardSerial()) return;
  Serial.print("UID tag :");
  String content = "";
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(mfrc522.uid.uidByte[i], HEX);
    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
    content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  Serial.println(); Serial.print("Message : "); content.toUpperCase();
  if (content.substring(1) == "XX XX XX XX") { // HIER EIGENE UID EINTRAGEN
    Serial.println("Authorized access"); Serial.println(); delay(500);
    digitalWrite(LED_G, HIGH); tone(BUZZER, 500); delay(300); noTone(BUZZER);
    myServo.write(180); delay(5000); myServo.write(0); digitalWrite(LED_G, LOW);
  } else {
    Serial.println(" Access denied");
    digitalWrite(LED_R, HIGH); tone(BUZZER, 300); delay(1000);
    digitalWrite(LED_R, LOW); noTone(BUZZER);
  }
}
octopod_door_bluetooth.ino (Arduino) – Türschloss MIT Bluetooth
/***********************************************************************************************************
 OCTOPOD: SMART HOME AUTOMATION BY SAKSHAM
 ARDUINO RFID DOOR LOCK (Bluetooth) – Library: MFRC522
************************************************************************************************************/
#include <SoftwareSerial.h>
SoftwareSerial BTserial(0, 1); // RX | TX
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#define SS_PIN 10
#define RST_PIN 9
#define LED_G 5
#define LED_R 4
#define BUZZER 2
MFRC522 mfrc522(SS_PIN, RST_PIN);
Servo myServo;

void setup() {
  BTserial.begin(9600);
  BTserial.println("Waiting for connections...");
  SPI.begin();
  mfrc522.PCD_Init();
  myServo.attach(3); myServo.write(0);
  pinMode(LED_G, OUTPUT); pinMode(LED_R, OUTPUT); pinMode(BUZZER, OUTPUT);
  noTone(BUZZER);
  BTserial.println("Put your card to the reader..."); BTserial.println();
}

void loop() {
  if (!mfrc522.PICC_IsNewCardPresent()) return;
  if (!mfrc522.PICC_ReadCardSerial()) return;
  BTserial.print("UID tag :");
  String content = "";
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    BTserial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    BTserial.print(mfrc522.uid.uidByte[i], HEX);
    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
    content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  BTserial.println(); BTserial.print("Message : "); content.toUpperCase();
  if (content.substring(1) == "33 3E A7 E5" || content.substring(1) == "E5 36 6B 49") {
    BTserial.println("Authorized access"); BTserial.println(); delay(500);
    digitalWrite(LED_G, HIGH); tone(BUZZER, 500); delay(300); noTone(BUZZER);
    myServo.write(180); delay(5000); myServo.write(0); digitalWrite(LED_G, LOW);
  } else {
    BTserial.println(" Access denied");
    digitalWrite(LED_R, HIGH); tone(BUZZER, 300); delay(1000);
    digitalWrite(LED_R, LOW); noTone(BUZZER);
  }
}

Eigene Teile und Gehäuse

Grunddesign für Karton/Holz-Bau: octopod_v2_ukTmIJ0uMl.f3d

Richtiges Gehäuse für 3D-Druck: octo_2_v3_sii4tuCF7d.f3d

Schaltpläne

Pin-Belegung kann bei Arduino MKR 1010 abweichen.

Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie

Ohne Bluetooth. Für Bluetooth: Rx (HC-05) → Tx (Arduino), Tx (HC-05) → Rx (Arduino), 5V↔5V, GND↔GND.

Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie
ESP        MAX
AO         GPIO2
A1         GPIO1

Soil Sensor MAX
analog     GPIO3

Gas Sensor (MQ2) MAX
sensor     GPIO4

PIR Sensor MAX
sensor     GPIO0

Relay MAX
1          M0
2          M1
Octopod: Smarte IoT-Automatisierungslösung für Zuhause und Industrie

Herstellungsprozess

  1. Wie Smart Home Technologie den Alltag transformiert
  2. Malvertising bedroht Smart-Home-IoT: Versteckte Anzeigen kompromittieren Geräte
  3. Raspberry Pi Home Automation System für Fernsteuerung bauen
  4. Intelligente Jalousien: Automatische Lichtsteuerung mit Arduino & Solarenergie
  5. Smart IoT-Glas bauen: Füllstand überwachen mit ESP8266, Arduino & Ultraschall
  6. Smart Home Automatisierung & Sicherheitssystem mit 1Sheeld
  7. Arduino Tic Tac Toe mit MAX7219 LED-Matrix und Karton-Gehäuse
  8. Zuverlässigen Arduino-Countdown-Timer mit SparkFun 7-Segment-Display bauen
  9. WLAN-Türschloss mit Arduino & ESP8266 – Per Smartphone entsperren
  10. Industrielle Automatisierung 4.0: Produktionseffizienz revolutionieren