Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Умный дом и система безопасности на базе 1Sheeld

Компоненты и материалы

Необходимые инструменты

О проекте

Этот проект объединяет автоматизацию умного дома и систему безопасности с управлением через смартфон с помощью платы 1Sheeld. 1Sheeld превращает ваш смартфон в более чем 40 различных щитов для Arduino (GPS, голосовое распознавание, SMS, email, часы и др.), избавляя от покупки отдельных модулей.

Как это работает

Сборка и настройка

  1. Вырежьте детали корпуса на лазерном резаке (файл чертежа во вложениях).
  2. Установите магнитные контакты на двери, откалибруйте их (определите показания при открытой/закрытой двери).
  3. Подключите лампы параллельно через реле.
  4. Подключите датчик температуры LM35DZ: VCC -> 5V, GND -> GND, OUT -> A0.
  5. Установите 1Sheeld на Arduino, загрузите скетч (перед загрузкой переключите UART-переключатель на 1Sheeld в режим «Uploading», после — обратно в «Operating»).
  6. Установите приложение 1Sheeld на смартфон, соедините по Bluetooth (PIN 1234), выберите щиты: SMS, Voice Recognition, Text To Speech, Clock, Email.

Код (скетч для Arduino)

Полный код приведён ниже. Он использует библиотеку OneSheeld и LiquidCrystal. Обратите внимание: в коде закомментирован блок мониторинга температуры (можно раскомментировать при необходимости).

/* Smart Home Automation And Security System
 * Team SADEE
 * EMAIL: ahmedebrahemua@yahoo.com
 */
#define CUSTOM_SETTINGS
#define INCLUDE_VOICE_RECOGNIZER_SHIELD
#define INCLUDE_TEXT_TO_SPEECH_SHIELD
#define INCLUDE_CLOCK_SHIELD
#define INCLUDE_SMS_SHIELD
#define INCLUDE_EMAIL_SHIELD

#include 
#include 

int minutes, hours;
String strh, strm;
char h[4], m[4];
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

#define receptionLamp A1
#define bedRoomLamp A2
#define pathRoomLamp A3
#define balaconyLamp A4

const char timeCommand[] = "what time is it";
const char receptionCommandOn[] = "reception on";
const char receptionCommandOff[] = "reception off";
const char whatsUp[] = "good morning";
const char pathRoomCommandOn[] = "bathroom on";
const char pathRoomCommandOff[] = "bathroom off";
const char balaconyCommandOn[] = "kitchen on";
const char balaconyCommandOff[] = "kitchen off";
const char bedRoomCommandOn[] = "bedroom on";
const char bedRoomCommandOff[] = "bedroom off";
const char lightsOn[] = "on";
const char lightsOff[] = "off";

const char securityModeOn[] = "security on";
const char securityModeOff[] = "security off";
const char mainCommand[] = "jarvis";

byte smile[] = {
  B00000, B01001, B01001, B00000,
  B00000, B10001, B01110, B00000
};

#define magneticReception 8
#define magneticBalacony 9
int buzzer2 = 10;
int buzzer1 = A5;

int magneticReceptionState, magneticBalaconyState;
int state = 0;
bool security = false;

void setup() {
  noTone(buzzer1); noTone(buzzer2);
  digitalWrite(receptionLamp, HIGH);
  digitalWrite(bedRoomLamp, HIGH);
  digitalWrite(pathRoomLamp, HIGH);
  digitalWrite(balaconyLamp, HIGH);

  lcd.begin(16, 2);
  OneSheeld.begin();

  pinMode(receptionLamp, OUTPUT);
  pinMode(bedRoomLamp, OUTPUT);
  pinMode(balaconyLamp, OUTPUT);
  pinMode(pathRoomLamp, OUTPUT);
  pinMode(buzzer1, OUTPUT);
  pinMode(magneticReception, INPUT_PULLUP);
  pinMode(magneticBalacony, INPUT_PULLUP);
  pinMode(buzzer2, OUTPUT);

  lcd.createChar(0, smile);
  lcd.clear();
  lcd.print("Welcome To The"); delay(4000);
  lcd.clear(); lcd.print("Smart Home"); delay(4000);
  lcd.clear(); lcd.print("Automation And"); delay(4000);
  lcd.clear(); lcd.print("Security System"); delay(4000);
  lcd.clear(); lcd.print("CALIBRATING...."); delay(10000);

  if (!VoiceRecognition.isNewCommandReceived()) {
    lcd.clear(); lcd.print("We Are Here To"); lcd.setCursor(4,1); lcd.print("HELP You");
  }
  security = false;
}

void loop() {
  Clock.queryDateAndTime();
  SMS.setOnSmsReceive(&MyFunction);
  minutes = Clock.getMinutes();
  hours = Clock.getHours();
  String noon = (hours > 12) ? (hours -= 12, "PM") : "AM";
  strh = String(hours); strm = String(minutes);
  strh.toCharArray(h, 4); strm.toCharArray(m, 4);

  VoiceRecognition.start();
  OneSheeld.delay(8000);

  if (VoiceRecognition.isNewCommandReceived()) {
    if (!strcmp(mainCommand, VoiceRecognition.getLastCommand())) {
      TextToSpeech.say("yes sir");
      lcd.clear(); lcd.setCursor(8,0); lcd.write(byte(0));
      state = 1;
    }
    // Обработка команд включения/выключения ламп
    else if (!strcmp(receptionCommandOn, VoiceRecognition.getLastCommand()) && state == 1) {
      TextToSpeech.say("ok sir lamp in the reception is on");
      OneSheeld.delay(2500); digitalWrite(receptionLamp, LOW);
      lcd.clear(); lcd.print("The Hall Lamp Is"); lcd.setCursor(8,1); lcd.print("ON"); state = 0;
    }
    else if (!strcmp(receptionCommandOff, VoiceRecognition.getLastCommand()) && state == 1) {
      TextToSpeech.say("ok sir lamp in the reception is off");
      OneSheeld.delay(2500); digitalWrite(receptionLamp, HIGH);
      lcd.clear(); lcd.print("The Hall Lamp Is"); lcd.setCursor(7,1); lcd.print("OFF"); state = 0;
    }
    // ... аналогично для bedroom, bathroom, kitchen ...
    else if (!strcmp(whatsUp, VoiceRecognition.getLastCommand()) && state == 1) {
      lcd.clear(); lcd.print("Good Morning :)"); lcd.setCursor(0,1); lcd.print("Its A Good Day");
      TextToSpeech.say("good morning sir"); OneSheeld.delay(1500);
      TextToSpeech.say("time in cairo is"); OneSheeld.delay(1500);
      TextToSpeech.say(h); OneSheeld.delay(1000);
      TextToSpeech.say(m); OneSheeld.delay(1000);
      TextToSpeech.say(noon); state = 0;
    }
    else if (!strcmp(timeCommand, VoiceRecognition.getLastCommand()) && state == 1) {
      lcd.clear(); lcd.print("Time In Cairo Is"); lcd.setCursor(0,1); lcd.print(h); lcd.print(":"); lcd.print(m); lcd.print(" "); lcd.print(noon);
      TextToSpeech.say("time in cairo is"); OneSheeld.delay(1500);
      TextToSpeech.say(h); OneSheeld.delay(1000);
      TextToSpeech.say(m); OneSheeld.delay(1000);
      TextToSpeech.say(noon); state = 0;
    }
    // Безопасность
    else if (!strcmp(securityModeOn, VoiceRecognition.getLastCommand()) && state == 1) {
      lcd.clear(); lcd.print("Ok,Sir Feel Safe"); lcd.setCursor(0,1); lcd.print("Security Mode");
      TextToSpeech.say("security system was triggered"); security = true; state = 0;
    }
    else if (!strcmp(securityModeOff, VoiceRecognition.getLastCommand()) && state == 1) {
      lcd.clear(); lcd.print("Ok,Sir Security"); lcd.setCursor(0,1); lcd.print("is OFF");
      TextToSpeech.say("security system was turned off"); security = false; state = 0;
    }
  }

  // Проверка магнитных контактов
  magneticReceptionState = digitalRead(magneticReception);
  magneticBalaconyState = digitalRead(magneticBalacony);
  if (security) {
    if (magneticReceptionState == HIGH || magneticBalaconyState == HIGH) {
      tone(buzzer1, 1500);
      Email.send("ahmedebrahemua@yahoo.com", "Home Security System", "Someone Entered Your Home, Be Careful");
      OneSheeld.delay(3500);
    } else { noTone(buzzer1); }
  } else { noTone(buzzer1); }

  // Температура (закомментировано)
  /*
  int voltage = analogRead(A0) * 1100 / 1024;
  int degree = voltage / 10;
  if (degree >= 35) {
    tone(buzzer2, 1500);
    Email.send("ahmedebrahemua@yahoo.com", "Home Security System", "Temperature Higher Than 35");
    OneSheeld.delay(5000);
  } else { noTone(buzzer2); }
  */
}

void MyFunction(char* phoneNumber, char* messageBody) {
  if (!strcmp(lightsOn, messageBody)) {
    digitalWrite(receptionLamp, LOW); delay(500);
    digitalWrite(pathRoomLamp, LOW); delay(500);
    digitalWrite(bedRoomLamp, LOW); delay(500);
    digitalWrite(balaconyLamp, LOW); delay(500);
    TextToSpeech.say("all lights was turned on");
    lcd.clear(); lcd.print("All Lights is ON");
    Email.send("ahmedebrahemua@yahoo.com", "Home Security System", "All Lights Were Turned ON");
    OneSheeld.delay(3500);
  } else if (!strcmp(lightsOff, messageBody)) {
    digitalWrite(receptionLamp, HIGH); delay(500);
    digitalWrite(pathRoomLamp, HIGH); delay(500);
    digitalWrite(bedRoomLamp, HIGH); delay(500);
    digitalWrite(balaconyLamp, HIGH); delay(500);
    TextToSpeech.say("all lights was turned off");
    lcd.clear(); lcd.print("All Lights Is OFF");
    Email.send("ahmedebrahemua@yahoo.com", "Home Security System", "All Lights Were Turned OFF");
    OneSheeld.delay(3500);
  }
}

Файлы для лазерной резки

drawing_lasser_cutting_lvvsN9X9Xg.dwg

Схемы подключения

Умный дом и система безопасности на базе 1Sheeld Умный дом и система безопасности на базе 1Sheeld

Производственный процесс

  1. Как технологии умного дома трансформируют повседневную жизнь
  2. Silicon Labs представляет передовые решения Wireless Gecko для умных домов и автоматизации зданий на Embedded World 2019
  3. Создание умного домашнего контроллера 433 МГц с Sensorflare и Raspberry Pi
  4. Система домашней безопасности на Raspberry Pi: обнаружение движения PIR + камера с email-уведомлениями
  5. Надежная система учета рабочего времени на Arduino с RFID и Python
  6. Универсальный Android-пульт на Arduino, 1Sheeld и ИК-управлении
  7. Умная банка на ESP8266 + Arduino: мониторинг наполненности в реальном времени
  8. Измерение расстояния в реальном времени: Ардуино-сонар с визуализацией в Processing
  9. Умная робо-рука на Arduino: простое DIY-руководство
  10. Умный очиститель воздуха на Arduino Yun + Sharp Plasmacluster + AWS IoT