Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

J.A.R.V.I.S. – Slimme-huis virtuele assistent aangedreven door Arduino

Onderdelen en benodigdheden

OnderdeelAantal
Arduino 1011
Arduino 4 Relays Shield1
Arduino GSM Shield V21

Benodigde tools en machines

  • Solderbout
  • Lijmgun

Apps en online diensten

  • Unity (voor AR)
  • Android Studio (app-ontwikkeling)
  • Vuforia SDK (augmented reality)
  • Adobe Illustrator (UI-design)
  • Arduino IDE

Over dit project

Waarom een slimme-huisoplossing?

Het project combineert spraakbesturing, energie monitoring, augmented reality en GSM-notificaties in één geïntegreerd systeem.

Wat is nieuw?

Integratie van meerdere interactiemodi: stem, AR, fysieke knoppen en SMS.

Werking

Digitale energiemeter

Een LDR in de energiemeter telt pulsen (via optocoupler LM358N) om verbruik te meten. De Arduino 101 berekent verbruik en kosten, en stuurt SMS-rapporten via de GSM-module.

AI Virtuele assistent

Signaalstroom:

  1. Spraakinvoer → Android-app
  2. Verwerking op Android (Google Speech API, CNN voor NLP)
  3. Versleutelde data via Bluetooth (HC-05) naar Arduino 101
  4. Verwerking op Arduino → digitale signalen naar relays

Pin-aansluitingen:

  • Pin 8 → PulseIn (digitale input, energiemeter)
  • Pin 6 → IN1 → Ventilator
  • Pin 4 → IN2 → Verlichting
  • Pin 5 → IN3 → Koffiezetapparaat

Energiemeter-aansluiting

  • Meter aan voeding koppelen.
  • LDR in meter afschermen met zwart tape tegen omgevingslicht.
  • Nul-draad direct aan lasten; faasdraad via relays.
  • LDR-draden naar tellercircuit (LM358N) → Pin 8.
  • GSM TX/RX gekruist met Arduino 101 RX/TX.

Schakelschema

J.A.R.V.I.S. – Slimme-huis virtuele assistent aangedreven door Arduino

Hardwareoverzicht

  • LDR in energiemeter
  • GSM-module
  • Tellercircuit: potentiometer, IC LM358N
  • Arduino 101
  • Bluetooth HC-05 module
  • 4-kanaals 12V 10A relaybord met optocouplers

Implementatie

  • Arduino leest sensoren, codeert data als karakters voor efficiënte seriële overdracht.
  • Android-app (Java/XML) gebruikt Google Speech API voor spraakherkenning.

  • AI-assistent gebruikt deep learning (CNN in Python) voor natuurlijke taalverwerking.
  • AR-app: Unity + Vuforia SDK.
  • Database: Google Firebase.

Code

Arduino: Energiemeter en kostenberekening

#include <LiquidCrystal.h>
LiquidCrystal lcd(7,6,5,4,3,2);
int led=13;
#define pulsein 8
unsigned int pusle_count=0;
float units=0;
unsigned int rupees=0;
unsigned int temp=0,i=0;
char str[70],flag1=0,flag2=0;

void setup() {
  lcd.begin(16,2);
  Serial.begin(9600);
  pinMode(led, OUTPUT);
  pinMode(pulsein, INPUT);
  digitalWrite(pulsein, HIGH);
  lcd.setCursor(0,0); lcd.print("Wireless Energy");
  lcd.setCursor(0,1); lcd.print(" Meter ");
  delay(2000); lcd.clear();
  lcd.print("By "); delay(2000); lcd.clear();
  lcd.print("GSM Initilizing..."); gsm_init();
  lcd.clear(); lcd.print("System Ready");
  Serial.println("AT+CNMI=2,2,0,0,0");
  init_sms(); send_data("System Ready"); send_sms();
  delay(1000); digitalWrite(led, LOW); lcd.clear();
}

void loop() {
  serialEvent();
  units=rupees/5.0;
  lcd.setCursor(0,0); lcd.print("Units:"); lcd.print(units); lcd.print(" ");
  lcd.setCursor(0,1); lcd.print("Rupees:"); lcd.print(rupees); lcd.print(" ");
  read_pulse();
  if(temp==1) check();
}

void serialEvent() {
  while(Serial.available()) {
    if(Serial.find("#")) {
      digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW);
      while (Serial.available()) {
        char inChar=Serial.read(); str[i++]=inChar;
        if(inChar=='*') { temp=1; return; }
      }
    }
  }
}

void init_sms() {
  Serial.println("AT+CMGF=1"); delay(200);
  Serial.println("AT+CMGS=\"INSERT MOBILE NUMBER HERE\""); delay(200);
}

void send_data(String message) { Serial.println(message); delay(200); }
void send_sms() { Serial.write(26); }

void read_pulse() {
  if(!digitalRead(pulsein)) {
    digitalWrite(led, HIGH); units++; rupees=units*5;
    while(!digitalRead(pulsein)); digitalWrite(led,LOW);
  }
}

void check() {
  if(!(strncmp(str,"units",5))) {
    Serial.println("AT+CMGF=1"); delay(200);
    Serial.println("AT+CMGS=\"INSERT MOBILE NUMBER HERE\""); delay(200);
    lcd.setCursor(0,1);
    send_data("Energy Meter Unit:"); Serial.println(units);
    send_data("\nRupees:"); Serial.println(rupees);
    delay(200); Serial.write(26);
    flag1=1; flag2=1; temp=0;
  }
}

void message_sent() { lcd.clear(); lcd.print("Message Sent."); delay(1000); }

void gsm_init() {
  lcd.clear(); lcd.print("Finding Module..");
  boolean at_flag=1;
  while(at_flag) { Serial.println("AT"); while(Serial.available()>0) { if(Serial.find("OK")) at_flag=0; } delay(1000); }
  lcd.clear(); lcd.print("Module Connected.."); delay(1000);
  lcd.clear(); lcd.print("Disabling ECHO");
  boolean echo_flag=1;
  while(echo_flag) { Serial.println("ATE0"); while(Serial.available()>0) { if(Serial.find("OK")) echo_flag=0; } delay(1000); }
  lcd.clear(); lcd.print("Echo OFF"); delay(1000);
  lcd.clear(); lcd.print("Finding Network..");
  boolean net_flag=1;
  while(net_flag) { Serial.println("AT+CPIN?"); while(Serial.available()>0) { if(Serial.find("+CPIN: READY")) net_flag=0; } delay(1000); }
  lcd.clear(); lcd.print("Network Found.."); delay(1000); lcd.clear();
}

Arduino: JARVIS relay-besturing via Bluetooth

#define CH3 7
#define CH4 4
#define CH5 5
#define CH6 6

void setup() {
  Serial.begin(9600);
  pinMode(CH3, OUTPUT); pinMode(CH4, OUTPUT);
  pinMode(CH5, OUTPUT); pinMode(CH6, OUTPUT);
  digitalWrite(CH3, HIGH); digitalWrite(CH4, HIGH);
  digitalWrite(CH5, HIGH); digitalWrite(CH6, HIGH);
  delay(2000);
}

void loop() {
  delay(100);
  if(Serial.available()) {
    char c = Serial.read(); Serial.print(c);
    if(c=='b') { /* koffie uit */ }
    else if(c=='c') { digitalWrite(CH4,LOW); delay(100); } // licht aan
    else if(c=='d') { digitalWrite(CH6,LOW); delay(100); } // ventilator aan
    else if(c=='k') { digitalWrite(CH5,LOW); delay(100); } // koffie aan
    else if(c=='g') { digitalWrite(CH5,HIGH); delay(100); } // koffie uit
    else if(c=='e') { digitalWrite(CH4,HIGH); delay(100); } // licht uit
    else if(c=='f') { digitalWrite(CH6,HIGH); delay(100); } // ventilator uit
    else if(c=='z') { // goodbye-sequentie
      digitalWrite(CH6,HIGH); digitalWrite(CH4,HIGH);
      digitalWrite(CH3,HIGH); digitalWrite(CH5,HIGH);
      delay(500);
      for(int i=0;i<3;i++) { digitalWrite(CH5,LOW); delay(500); digitalWrite(CH5,HIGH); delay(500); }
      delay(10000);
    }
  }
}

Aangepaste onderdelen en behuizingen

Android APK-bestanden voor de AR-app en de hoofdbesturingsapp zijn beschikbaar als download. Instructies: app installeren, internetverbinding vereist, camera richten op Vuforia-marker op apparaat, virtuele knop op scherm bedienen.

Schema's

J.A.R.V.I.S. – Slimme-huis virtuele assistent aangedreven door Arduino Let op: Actieve internetverbinding op telefoon vereist. HC-05 Bluetooth-module aanbevolen.

Productieproces

  1. Een Betaalbaar Draadloos Sensornetwerk Bouwen voor Uw Huis
  2. Bouw je eigen DIY huiswerk-schrijfmachine thuis
  3. Web-gestuurd DMX-verlichtingssysteem – Arduino Master Controller
  4. Bluetooth-gecontroleerde Arduino Spybot bouwen
  5. Bouw een DIY VR-skateboard met Arduino, Google Cardboard en Bluetooth
  6. Bouw een Autonome Thuisassistent Robot: Complete Onderdelenlijst & Opzetgids
  7. Alexa-ingeschakelde Arduino Thuiscontroller: Slimme Automatisering Made Simple
  8. Draadloze Arduino Programmeer Shield met HC-05 Bluetooth – Geen USB Nodig
  9. Hoogwaardige 2,8″ TFT Shield voor Arduino Nano – 320×240 SPI Display
  10. Nixie-buisschild NCS314 voor Arduino UNO/MEGA – Compatibel met IN‑14/IN‑12
  11. Geavanceerd thuismonitoringssysteem met Arduino Mega en IoT-sensoren