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

J.A.R.V.I.S. :Ein virtueller Heimassistent

Komponenten und Verbrauchsmaterialien

Arduino 101
× 1
Arduino 4 Relais Schild
× 1
Arduino GSM Shield V2
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)
Heißklebepistole (generisch)

Apps und Onlinedienste

Unity
Android Studio
Vuforia
Adobe Illustrator
Arduino-IDE

Über dieses Projekt

Warum das Smart Home-Problem angehen?

Was ist neu?

Warum haben wir uns dafür entschieden?

Arbeiten

Der digitale Energiezähler

Der virtuelle KI-Assistent

Der Signalfluss ist wie folgt:

  • 1. Spracheingabe in die Android-App
  • 2. Verarbeitung in der Android-App
  • 3. Senden verschlüsselter Daten über Bluetooth an Arduino.
  • 4. Verarbeitung auf Arduino 101
  • 5. Digitale Signale an Relais

Verbindungen anpinnen:

  • Pin 8 --> PulseIn [Digitaler Eingang]
  • Pin 6 --> IN1 --> Lüfterausgang
  • Pin 4 --> IN2 --> Lichtleistung
  • Pin 5 --> IN3 --> Kaffeemaschine

Anschlüsse des Energiezählers:

  • Schließen Sie das Messgerät an die Stromversorgung an.
  • Bedecken Sie den Energiezähler mit einem schwarzen Klebeband, um zu verhindern, dass der LDR im Energiezähler von Außenlicht erfasst wird.
  • Schließen Sie den Neutralleiter direkt an die Lasten und den Phasenleiter an das Relais an.
  • Führen Sie die Drähte vom LDR außerhalb des Messgeräts zum Zählerkreis.
  • Nun nehmen Sie den Ausgang der Zählerschaltung wie im Code an den zugewiesenen Pin 8 pulsepin.
  • Verbinden Sie den TX, RX-Pin des Arduino 101 mit dem RX, TX-Pin des GSM-Moduls.
  • Schalten Sie nun die Boards ein, nachdem Sie den Code gebrannt haben.

Schaltplan

Verwendete Hardware und Ausrüstung:

  • Innerer Energiezähler:LDR lichtabhängiger Widerstand
  • GSM-Modul
  • Gegenschaltung:Potentiometer, IC LM358N
  • Arduino 101
  • BlueTooth-HC05-Modul
  • 4-Kanal 12V 10A Relaissteuerplatinenmodul mit Optokoppler für PIC AVR ARM

Programmierplattformen

  • · Für die Programmierung des Arduino 101 haben wir die Standard-Arduino-IDE verwendet.
  • · Wir haben unsere Android-App mit Android Studio (JAVA und XML) entwickelt.
  • · Die Datenbankverbindung erfolgt über die Firebase von Google.
  • · Für Augmented Reality haben wir Unity zusammen mit dem Vuforia SDK verwendet.

Implementierung:

  • Alle Komponenten geben dem Arduino Messwerte, wo wir diese Messwerte in Zeichencode umwandeln, um die Bytes effizient und schnell an den Computer zu senden. Innerhalb einer endlosen Schleife entspricht jede Lesung einem Zeichen.
  • Ein Code sollte auf dem Computer ausgeführt werden, um die Daten zu empfangen, die von Arduino über serielle Ports gesendet werden.
  • Für die Entwicklung der Android-App verwenden wir Android Studio und zum Konvertieren von Sprache in Text verwenden wir die Standard-Google-API.
  • Für die Spracherkennung verwenden wir akustisch-phonetische Sprachparameter zur sprecherunabhängigen Spracherkennung in der Android-App.
  • Wir haben den virtuellen KI-Assistenten (künstliche Intelligenz), der Deep-Learning-Techniken wie CNN (Convolutional Neural Network) mit Python verwendet, um die Verarbeitung natürlicher Sprache zu implementieren.
  • Für die Augmented-Reality-App verwenden wir Unity IDE und VuforiaSDK (Es ist ein Augmented Reality Software Development Kit (SDK) für mobile Geräte, das die Erstellung von Augmented Reality-Anwendungen ermöglicht).

Videos

Code

  • Arduino-Code für die digitale Energiemessung und Kostenberechnung
  • Arduino implementiert eine JARVIS-Verbindung zum Relais mit Arduino
Arduino-Code für die digitale Energiemessung und KostenberechnungArduino
Dieser Code implementiert die Energieeinheiten, die von einem mit dem Arduino verbundenen Gerät verbraucht werden.
Anweisungen :
1. Stellen Sie die Verbindungen her und fügen Sie eine Handynummer in den Arduino-Code ein
2. Laden Sie den Code auf einen Arduino 101 . hoch
3. Führen Sie den Code aus
4. Senden Sie eine SMS von einem beliebigen Handy an die im Code angegebene Handynummer im Format #anytext*
5. Eine Antwort mit den verbrauchten Einheiten und den Kosten würde empfangen
#include LiquidCrystal lcd(7,6,5,4,3,2);int led=13; // Declering LED im 13. Pin #define pulsein 8 // Definieren des Pulseingangs Pin 8unsigned Int pulse_count =0; // Deklarieren des Pulszählertyps als Integerfloat-Einheiten =0; //Einheiten als Floatunsigned deklarieren int rupees=0; // Rupientypen als vorzeichenlose ganze Zahl deklarierenunsigned int temp=0,i=0; //temp&i als unsigned integerchar deklarieren str[70],flag1=0,flag2=0; // Zeichenlänge als String und Deklaration von flagsvoid setup () { lcd.begin (16,2); // LCD-Typ als 16x2 Serial.begin (9600) initialisieren; // Initialisieren der seriellen Baudrate als 9600 PinMode (led, OUTPUT); pinMode (Impulsein, EINGANG); digitalWrite (Impulsein, HOCH); lcd.setCursor(0,0); lcd.print("Drahtlose Energie"); lcd.setCursor(0,1); lcd.print("Meter"); Verzögerung (2000); lcd.clear(); lcd.print("Von"); Verzögerung (2000); lcd.clear(); lcd.print("GSM-Initialisierung..."); gsm_init(); lcd.clear(); lcd.print("System bereit"); Serial.println("AT+CNMI=2,2,0,0,0"); init_sms(); send_data("System bereit"); SMS senden(); Verzögerung (1000); digitalWrite (LED, NIEDRIG); lcd.clear();}void loop() { serialEvent(); // Überprüfung der seriellen Ereigniseinheiten =Rupien/5.0; // Berechnung der Einheit lcd.setCursor(0,0); lcd.print("Einheiten:"); lcd.print (Einheiten); lcd.print(" "); lcd.setCursor(0,1); lcd.print("Rupien:"); lcd.print (Rupien); lcd.print(" "); read_pulse(); if(temp==1) {check(); }}void serialEvent() // serielles Ereignis zum Empfangen und Prüfen der eingehenden SMS { while(Serial.available()) { if(Serial.find("#")) { digitalWrite(led, HIGH); Verzögerung (1000); digitalWrite (LED, NIEDRIG); while (Serial.available()) { char inChar=Serial.read(); str[i++]=inChar; if(inChar=='*') {temp=1; Rückkehr; aufrechtzuerhalten. Verzögerung (200); Serial.println("AT+CMGS=\"MOBILE NUMMER HIER EINFÜGEN\""); Verzögerung (200);}void send_data (String-Nachricht) {Serial.println (Nachricht); Verzögerung (200);}void send_sms () { Serial.write (26);} // Leseimpuls vom Energiezählervoid read_pulse () { if (! digitalRead (pulsein)) { digitalWrite (led, HIGH); Einheiten++; Rupien =Einheiten * 5; while(!digitalRead(pulsein)); digitalWrite (led, LOW); }} // Überprüfen des Status der Nachricht void check () { if (! (strncmp (str, "units", 5))) { Serial.println ("AT + CMGF =1"); Verzögerung (200); Serial.println("AT+CMGS=\"MOBILE NUMMER HIER EINFÜGEN\""); Verzögerung (200); lcd.setCursor(0,1); send_data("Energiezählereinheit:"); Serial.println (Einheiten); send_data("\nRupien:"); Serial.println (Rupien); Verzögerung (200); Serial.write (26); Flag1=1; Flag2=1; Temperatur=0; aufrechtzuerhalten.}} Nachricht ungültig_gesendet () { lcd.clear (); lcd.print("Nachricht gesendet."); delay(1000);}void gsm_init(){lcd.clear(); lcd.print("Modul finden.."); boolesch at_flag=1; while(at_flag) {Serial.println("AT"); while(Serial.available()>0) { if(Serial.find("OK")) at_flag=0; } Verzögerung (1000); } lcd.clear(); lcd.print("Modul verbunden.."); Verzögerung (1000); lcd.clear(); lcd.print("ECHO deaktivieren"); boolesches echo_flag=1; while(echo_flag) {Serial.println("ATE0"); while(Serial.available()>0) { if(Serial.find("OK")) echo_flag=0; } Verzögerung (1000); } lcd.clear(); lcd.print("Echo AUS"); Verzögerung (1000); lcd.clear(); lcd.print("Netzwerk finden.."); boolesches net_flag=1; while(net_flag) {Serial.println("AT+CPIN?"); while(Serial.available()>0) { if(Serial.find("+CPIN:READY")) net_flag=0; } Verzögerung (1000); } lcd.clear(); lcd.print("Netzwerk gefunden.."); Verzögerung (1000); lcd.clear();}
Arduino implementiert eine JARVIS-Verbindung zum Relais mit ArduinoArduino
Dies ist ein Code, der die serielle Bluetooth-Übertragung von Zeichen zwischen der Android-App und dem Arduino implementiert.
# CH3 definieren 7# CH4 definieren 4# CH5 definieren 5# CH6 definieren 6 void setup() { Serial.begin(9600); pinMode (CH3, AUSGANG); PinMode (CH4, AUSGANG); PinMode (CH5, AUSGANG); pinMode (CH6, AUSGANG); // Beide LEDs mit Strom versorgen // Schalten Sie die Relaiskanäle aus digitalWrite (CH3, HIGH); digitalWrite (CH4, HOCH); digitalWrite (CH5, HOCH); digitalWrite (CH6, HOCH); Verzögerung (2000); // 2 Sekunden warten, bevor die Sequenz gestartet wird aufrechtzuerhalten. Void Schleife () { Verzögerung (100); if(Serial.available()) {//Serial.println(sum1); char c =Serial.read(); Serial.print (c); if(c=='b') {//Kaffee aus} else if(c=='c') // Licht an {digitalWrite (CH4, LOW); Verzögerung (100);} else if (c=='d') // Lüfter auf {digitalWrite (CH6, LOW); Verzögerung (100);} sonst if (c =='k') // Kaffee auf {digitalWrite (CH5, LOW); Verzögerung (100);} sonst if (c =='g') // Kaffee aus {digitalWrite (CH5, HIGH); Verzögerung (100);} sonst if (c=='e') // Licht aus {digitalWrite (CH4, HIGH); Verzögerung (100);} sonst if (c =='f') // Lüfter aus {digitalWrite (CH6, HIGH); Verzögerung (100);} sonst if (c =='z') // Auf Wiedersehen {digitalWrite (CH6, HIGH); digitalWrite (CH4, HOCH); digitalWrite (CH3, HOCH); digitalWrite (CH5, HOCH); Verzögerung (500); digitalWrite (CH5, NIEDRIG); Verzögerung (500); digitalWrite (CH5, HOCH); Verzögerung (500); digitalWrite (CH5, NIEDRIG); Verzögerung (500); digitalWrite (CH5, HOCH); Verzögerung (10000); } } } 

Kundenspezifische Teile und Gehäuse

Anweisungen :

1. Laden Sie die App herunter und installieren Sie sie
2. Stellen Sie sicher, dass das Telefon mit dem Internet verbunden ist
3. Starten Sie die App und zeigen Sie auf ein Gerät, das mit Vuforia konfiguriert wurde (hier wird der Standard-Vuforia-Marker verwendet)
4. Das Gerät sollte starten
5. Um das Gerät auszuschalten, klicken Sie auf die virtuelle Schaltfläche, die auf dem Bildschirm angezeigt wird, wenn das Telefon auf das Gerät gerichtet ist jarvisaugmented_I2zWAu2jGG.apk

Schaltpläne

Bitte beachten Sie:Eine aktive Internetverbindung auf dem Telefon ist jederzeit erforderlich
Anweisungen :
1. Installieren Sie die App auf einem Android-Telefon
2. Nachdem Sie die Hardware eingerichtet und erfolgreich ausgeführt haben, starten Sie die App
3. Um Virtual Assistant (Voice) zu verwenden, sagen Sie das Schlüsselwort „Listen Up JARVIS“. Dies sollte den Agenten aktivieren
3.1 Sprechen Sie Ihr Kommando deutlich
3.2 Der Agent sollte eine Antwort geben
4. Um die Augmented-Reality-App zu starten, klicken Sie auf die Schaltfläche Augment; ein leerer Bildschirm sollte erscheinen
4.1 Öffnen Sie die Jarvis Augmented-App auf einem anderen Telefon (HINWEIS:Die J.A.R.V.I.S.-Android-App sollte sich auf einem anderen Telefon befinden)
4.2 Fahren Sie mit den Anweisungen in JarvisAugmented fort, um Augmented Reality zu implementieren

HINWEIS:1. Wenn die App zu irgendeinem Zeitpunkt hängen bleibt, versuchen Sie, die App neu zu starten
2. Wenn auf dem Bildschirm eine ähnliche Meldung wie „Mikrofon konnte nicht geöffnet werden“ angezeigt wird, starten Sie die App neu.
3. Diese App wird mit dem Bluetooth-Modul HC05 implementiert, um den Umfang des Projekts zu erweitern. Daher wird das Bluetooth-Modul HC05 empfohlen app-release_eo3LK2AsLV.apk

Herstellungsprozess

  1. Aufbau eines drahtlosen Sensornetzwerks in Ihrem Zuhause
  2. Machen Sie eine DIY-Hausaufgaben-Schreibmaschine zu Hause
  3. Webbetriebener DMX-Controller
  4. Arduino Spybot
  5. DIY Virtual Reality Skateboard
  6. Autonomer Heimassistent-Roboter
  7. Arduino Home Controller aktiviert von Alexa
  8. BLUE_P:Drahtloses Arduino-Programmierschild
  9. TFT-Shield für Arduino Nano - Start
  10. Arduino Shield NCS314 NIXIE Röhren Uhr IN-14