메이커 Maker

AI 스마트 세탁기 제작 완료 보고서

지구빵집 2022. 1. 20. 09:28
반응형

 

AI 스마트 세탁기

 

공용 세탁기의 문제점

 

공용 세탁실의 문제점은 크게 두가지가 있다. 먼저 세탁기의 끝나는 시간을 제때 알지 못할 수 있다는 것이다. 세탁물을 넣고도 언제 가져와야 할지 몰라 너무 일찍 가거나 너무 늦게 가는 경우가 생긴다. 이 부분은 다른 사람도 비슷해서 이미 다 세탁이 된 세탁물들이 세탁기에 들어가 있는 상태로 방치되어 세탁을 해야 하는 다음 사람이 이용하지 못하는 상황이 자주 발생한다. 이 경우 다른 사람의 세탁물을 세탁바구니로 옮기는 과정에서 세탁물의 분실이 일어날 수도 있고, 누군가에겐 비위생적인 이유로 여겨질 수도 있으며, 이런 과정이 번거롭게 느껴질 수도 있다. 또 세탁실에 내려갔는데 모든 세탁기가 작동중이어서 무거운 빨랫감을 들고 다시 올라가는 상황이 생길 수도 있다.  

 

스마트 세탁기

 

작동방삭에 대해 간단히 설명하자면 세탁기를 돌리기 위해선 개인에게 지급되는 카드로만 열 수 있고, 세탁물을 돌리기 위해 카드를 찍으면 개인카드가 인식되어 나중에 세탁물을 찾을 때 그 카드로만 세탁기를 열 수 있다. 대기시간 단축을 위해 세탁시간이 끝나기 5분 전에 사용자에게 알림을 보내고 바로 세탁물을 찾아 뒷사람의 불편함을 줄인다. 자신의 개인카드를 이용해서 나중에 세탁물을 찾아갈 수 있다. 세탁함에 보관할 수 있는 시간은 뒷사람의 세탁이 끝나기 전까지이다. 마지막으로 세탁기가 모두 동작하고 있으면 세탁을 하러 갔다가 끝날 때 까지 기다리거나 다시 방으로 돌아가야하므로 그런 불편함을 줄이기 위해서 모바일 어플을 이용해 현재 가동중인 세탁기와 사용가능한 세탁기의 개수, 가동중인 세탁기의 경우 남은 시간을 확인할 수 있게 한다. 핵심기술은 아두이노를 이용하여 RFID로 개인카드만 인식되게 하하는 것 사용자에게 알림을 주는 것, 세탁함으로 옷을 자동으로 옮겨주는 것, 어플과 연동시키는 것 총 4가지 이다. RFID기술과 블루투스 통신을 이용한 기술은 이미 범용적으로 쓰이고 있는 기술이고 기존의 아이디어들과 차별화된 기술은 세탁함을 제작하여 세탁물을 옮겨 보관한다는 점과 자체적인 어플을 제작한다는 점이다. 사용자가 시간안에 세탁물을 가져가지 않는다면 세탁기가 10분을 기다린 후 자동으로 세탁함으로 세탁물을 이동시킨다.

 

자체적으로 어플을 만드는 것도 차별화된 점이라고 할 수 있다. 어플 제작의 경우 사례를 찾아보았다. 모바일 세탁 플랫폼 스타트업 '워시라바(Washlava)'는 기숙사, 호텔 등에서 스마트폰 APP으로 세탁기와 건조기에 대한 예약, 제어, 결제가 가능한 플랫폼을 제공하고 있다. 미국 대학 내 학생들이 기숙사 내 세탁기를 예약하고 제어하며 학생증으로 세탁 비용을 결제 할 수 있어 미국 내 대학의 기숙사에서 세탁 플랫폼 사업이 활성화 되었다. 이처럼 자체적인 어플을 제작하여 기숙사 내의 불편함을 해소하고자 함이다. 어플의 기본적인 기능은 동작가능한 세탁기가 몇대인지, 동작 중인 세탁기는 몇대인지, 만약 사용가능한 세탁기가 없다면 동작중인 세탁기의 남은 시간은 몇분인지 알 수 있다.

 

어플의 대략적인 구성은 먼저 메인 화면에 인재관, 창의관, 행복관의 사용현황 버튼을 누르고 누른 생활관의 세탁실 약도로 이동한다. 실제 세탁기 및 건조기의 위치를 반영한 약도에 초록색, 빨가색, 회색으로 사용가능, 사용불가능, 사용중을 표시한다. 사용중일 경우 남은 시간을 표시하고 완료되었을 경우 세탁물이 존재한다는 표시를 한다. 사용 현황 버튼으로 자신이 사용중인 세탁기 및 건조기 번호, 남은 시간, 완료 여부 표시 및 알림, 카드의 잔액 표시 등의 기능을 한다.  

 

스마트 세탁기 제어박스 구성

 

스마트 세탁기 제어박스(이하 제어박스)의 하드웨어 구성은 아래와 같다.  

 

스마트 세탁기 제어박스(이하 제어박스)의 하드웨어 구성

 

제어박스는 새롭게 추가된 보안 방식을 바탕으로 세탁을 진행하는 역할을 한다. 실제와 똑같은 모형의 세탁기를 제작후에 모터의 호환을 통해서 튼튼하고, 보안도 좋은 세탁기를 만드려고 하였지만, 실제 세탁기와 제작하기에 적합한 물품을 찾지 못했고, 아직까지에 우선순위가 높지 않다고 판단하였기 때문에 간단한 특징만을 살린 하드웨어를 제작하였다. RFID가 한번 인식되고, 다시한번 인식하였을 때 세탁비차감과 함께 잠금장치가 해제되고, 문이 닫히면 시간이 흘러가면서 세탁이 돌아가는 알고리즘을 가진다. 

 

전체 소프트웨어

 

전체적으로 조립된 세탁기 제어센서에 아래 소프트웨어를 로딩하여 확인해본다. 돈에 대한 정보가 담겨져있는 RFID가 인식되면 순차적으로 LCD에 내용이 뜨고, 한번 더 가져다대면 세탁비차감과 동시에 세탁시작, 시간이 흐르는 프로그램이다.  

 

//RFID 등록된 태그 ID로 서보모터 제어하기
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

//SS(Slave Selector)핀 및 reset 핀 번호 정의
#define SS_PIN 10
#define RST_PIN 9


//MFRC522 클래스로 rfid 객체 및 서보모터 객체 선언
MFRC522 rfid(SS_PIN, RST_PIN);
MFRC522::MIFARE_Key key;
byte nuidPICC[4];
byte nuidPICC1[4];


Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;

void printHex(byte *buffer, byte bufferSize);
void printDec(byte *buffer, byte bufferSize);

//핀번호 및 각도 변수 선언
int servoPin = 3, agl = 0;
int n=0;

LiquidCrystal_I2C lcd(0x27,16,2);

void setup() {
  //시리얼 통신 및 SPI 초기화
  Serial.begin(9600);
  SPI.begin();
  //MFRC522 초기화
  rfid.PCD_Init();
  
  
  // MIFARE 타입의 카드키 종류들만 인식됨을 표시

  //서보모터 연결 핀 설정 및 각도 초기화
  servo1.attach(servoPin);
  servo2.attach(4);
  servo3.attach(5);
  servo4.attach(6);
  
  servo1.write(agl);
  servo2.write(180);
  servo3.write(agl);
  servo4.write(agl);

  lcd.init();
  lcd.backlight();

  pinMode(2,INPUT_PULLUP);
  
}

int t,money=1000;


void loop() {

while(n==0){
  
  // 카드가 인식되었다면 다음으로 넘어가고 아니면 더이상 
  // 실행 안하고 리턴
  if ( ! rfid.PICC_IsNewCardPresent())
    return;

  // ID가 읽혀졌다면 다음으로 넘어가고 아니면 더이상 
  // 실행 안하고 리턴
  if ( ! rfid.PICC_ReadCardSerial())
    return;

 
    for (byte i = 0; i < 4; i++) {
      nuidPICC[i] = rfid.uid.uidByte[i];
    }
   Serial.print("1번 rfid 저장");
   Serial.println();

     if(money>=1000){
    
     money-=1000;

    lcd.setCursor(0,0);
    lcd.print("   Money Left   ");
    lcd.setCursor(3,1);
    lcd.print(돈);
    lcd.setCursor(8,1);
    lcd.print("won");
   
    delay(2000);
    lcd.clear(); 
    n=1;   
  }
  else{
    lcd.setCursor(0,0);
    lcd.print("    No Money    ");
    lcd.setCursor(0,1);
    lcd.print("     Left!      ");
    delay(1000);
    lcd.clear();

    lcd.setCursor(0,0);
    lcd.print("    Need to     ");
    lcd.setCursor(0,1);
    lcd.print("    Charge!     ");
    delay(1000);
    lcd.clear();
    }
}
while (n==1){
  int pin=digitalRead(2);
  if (pin==1){
     lcd.setCursor(0,0);
     lcd.print("   Press the    "); 
     lcd.setCursor(0,1);
     lcd.print("   Button!      ");
     
  }else{
    Serial.print("pressed");
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("    Time Left   ");


    for(t=10;t>=0;t--){
      
      lcd.setCursor(4,1);
      int m = t/60;
      int s = t%60;
      
      if (s>=10){
        lcd.print(m);
        lcd.setCursor(6,1);
        lcd.print(" : ");
        lcd.setCursor(9,1);
        lcd.print(s);
        delay(1000);
      }
      else{
        lcd.print(m);
        lcd.setCursor(6,1);
        lcd.print(" : ");
        lcd.setCursor(9,1);
        lcd.print(0);
        lcd.setCursor(10,1);
        lcd.print(s);
        delay(1000);
        }
 }
    
  delay(500);
  lcd.clear();

  for(agl=180;agl>=120;agl--){
    servo2.write(agl);
    servo4.write(-agl+180);
    delay(20);
  }

  lcd.setCursor(0,0);
  lcd.print("    Laundry     ");
  lcd.setCursor(0,1);
  lcd.print("     Done!      ");
  delay(1000);
  lcd.clear();
    n=2;
  }

}
  while(n==2){
    // 카드가 인식되었다면 다음으로 넘어가고 아니면 더이상 
  // 실행 안하고 리턴
  if ( ! rfid.PICC_IsNewCardPresent())
    return;

  // ID가 읽혀졌다면 다음으로 넘어가고 아니면 더이상 
  // 실행 안하고 리턴
  if ( ! rfid.PICC_ReadCardSerial())
    return;

 
    for (byte i = 0; i < 4; i++) {
      nuidPICC1[i] = rfid.uid.uidByte[i];
    }
   Serial.print("2번 rfid 저장");
   Serial.println();

   if(nuidPICC1[0] != nuidPICC[0] || 
    nuidPICC1[1] != nuidPICC[1] || 
    nuidPICC1[2] != nuidPICC[2] || 
    nuidPICC1[3] != nuidPICC[3] ){
      Serial.println("다른 카드");
      lcd.setCursor(0,0);
      lcd.print("    NOT  YOUR   ");
      lcd.setCursor(0,1);
      lcd.print("    LAUNDRY     ");
      delay(1000);
      lcd.clear();
      
    }
    else{
      Serial.println("같은 카드");
      for (agl=0;agl<=120;agl+=2){
      servo1.write(agl);
      delay(20);
    }
    for(int i=0;i<4;i++){
      nuidPICC[i]=0;
      nuidPICC1[i]=0;
    }
    n=0;
    }
  }

 

블루투스 사용하여 안드로이드 앱과 연동

 

안드로이드 앱(Unifarm Bugs)와 스마트 세탁기의 연동 테스트를 설명한다. 우선 스마트폰을 사용하여 인터넷에 접속한다. 앱 인벤터에 접속하여 QR코드를 통해 앱을 인식하고 안드로이드로 가져온다. 블루투스 연결버튼을 눌러 불루투스를 연결한다.  

 

초기화면 -&amp;nbsp; 여기서 블루투스 연결 버튼을 눌러 블루투스 연결을 해준다. &amp;nbsp;

 

창의관 배치-창의관 버튼을 누르면 창의관 내부의 세탁기의 배치도와 각각 사용 중인지 , 사용 불가능한 고장인지 , 다른 사람들이 사용중인건지 확을 할 수 있게 해준다 . 각 세탁기의 버튼을 누르면 사용 해당 문자열이 보이게 된다 . 예를 들어 창의관 1 번 세탁기를 누르면

 

레이블 활성화-사용가능합니다 . 라는 문장이 활성화되는 것을 볼 수 있다.

 

행복관 배치-행복관 버튼을 누르면 세탁기의 배치도와 세탁기의 번호가 보이게 되고 각 세탁기 번호 버튼을 클릭하면 해당 문장이 활선화된다.

 

레이블 활성화 - 예들 들어 2 번 세탁기를 누르면 2 번 세타기는 현 시간 사용 불가능합니다 .&amp;nbsp; 라는 문장이 활성화된다 .

 

 

스마트 세탁기 기대효과

 

1. 모바일일 세탁 플랫폼 스타트업 '워시라바(Washlava)'는 기숙사, 호텔 등에서 스마트폰 APP으로 세탁기와 건조기에 대한 예약, 제어, 결제가 가능한 플랫폼을 제공하고 있다. 미국 대학 내 학생들이 기숙사 내 세탁기를 예약하고 제어하며 학생증으로 세탁 비용을 결제 할 수 있다는 장점이 존재한다. 워시라바에 LG 전자가 지분을 투자하여 &미국의 대학 캠퍼스 등에서 위상을 높여가는 차세대 세탁 솔루션을 준비해 나갈 것&이라는 전망을 발표하였다. 이와 마찬가지로 자체적인 어플을 제작하여 기숙사 내의 학생들이 현재 작동중인 세탁기가 몇대이며 바로 사용가능한 세탁기는 몇대인지, 사용불가능하다면 몇분이 남았는지 확인할 수 있어 시간절약이 가능하고 불편함를 줄일 수 있다.(기사참고: 휴대폰으로 세탁기 예약·제어·결제...LG전자, 美세탁 플랫폼 기업 투자)

 

2. 세탁기 문제는 현실이다.

관악사 세탁기 추가배치 - 서울대 대학신문

기숙사 예절, 선택이 아니라 의무입니다 - 카이스트 신문

 

서울 소재 모 대학에서도 세탁기 부족 문제, 세탁기를 이용함에도 찾아가지 않는 문제로 현실적으로 세탁기의 갯수를 늘리자는 방안이 제시되고 있다. 하지만 대학에서의 입장은 금전적으로 세탁기의 갯수만을 늘린다고 해서 해결될 문제가 아니라는 입장이다. 기숙사 생들의 대다수가 &세탁물을 제 시간에 찾아가지 않는 것&이 문제를 유발하는 이유이기 때문이다. 그렇기에 세탁 플랫폼을 이용한다면, 1차원적으로 세탁기를 많이 구비할 이유도 없고, 일정 세탁기로도 모든 학생들이 자기가 원하는 시간에 예약과 완료를 알 수 있어 더 나은 세탁 환경을 만들 수 있다.

 

앞서 제시한 동기에서 밝힌 현재 세탁기 사용의 불편함 중 하나인 제시간에 자신의 세탁물을 찾지 않아 뒷사람이 피해가 볼 수 있다는 점을 해결할 수 있다. 어플을 사용해 세탁기 끝나기 5분전에 미리 알림 문자와 ARS전화를 하고 불가피한 사정으로 인해 세탁물을 바로 찾을 수 없는 상황이라면 세탁이 끝나고 10분이 지나면 자동으로 드럼통의 세탁물을 세탁함으로 이동시켜 드럼통을 비우고 다음사람이 사용할 수 있게 하며 세탁함으로 세탁물을 옮겨 다른 사람에 의해 도난당하지 않게 보안을 유지할 수 있다.

 

3. 서울대 기숙사의 '브래지어 분실 사건'을 놓고 남녀 학생들의 설전이 뜨겁다. 발단은 지난달 초 기숙사 게시판에 붙은 한 여학생의 비난글이었다. 기숙사 공동 세탁기 안에 넣어둔 브래지어를 도난당했는데 이것이 '변태남'의 소행이라며 공개 항의한 것이다. 지난달 27일 사건에 대한 내용이 서울대생 커뮤니티인 '스누라이프'를 통해 알려지며 파문이 커졌다. 졸지에 범죄자 취급을 받은 일부 남학생들이 "우리가 변태냐"며 발끈한 것이다. 여기에 "의심할 만한 이유가 있으니까 그러는 것 아니냐"는 여학생들의 반박이 나오면서 논쟁에 불이 붙었다.

 

서울대 기숙사는 "지난 5월부터 공동 세탁장에 CCTV를 설치했다"며 "이후 CCTV 녹화 화면을 모두 확보하고 있다"고 밝혔다. 김길수(37) 기숙사 전기팀장은 "아직 피해자측의 확인 요청은 없었다"고 했다.

 

위 사례처럼 세탁물을 제시간에 찾지 못할 경우 다른사람이 세탁물을 옮기게 된다. 이 과정에서 자신의 세탁물이 도난되곤 한다. 또 자신의 세탁물을 남에게 보여주기 싫은 사람이 있을 수도 있다. 위 아디이어처럼 세탁시간이 끝나고 10분이 지난 후 세탁물을 찾지 못하면 자동으로 세탁함으로 옮겨지는 시스템은 세탁물을 제시간에 찾지 못하더라도 자동으로 세탁함에 보관되기 때문에 세탁물을 찾지 못할 위험은 없다. 세탁물을 자동으로 세탁함에 보관하는 방식은 이 모든 불편함을 해소할 수 있는 방법이다. 이것이 상용화된다면 세탁물이 도난될 확률도 극심히 줄어들 것이고 세탁물 주인 당사자 또한 편리하게 세탁물을 찾을 수 있는 효과적인 방법이다.  

 

스마트 세탁기

 

 

 

 

반응형