2022 2학기 독일 Hochschule Osnabrueck에서 교환학생을 하며 경험한 블루투스 통신을 통한 잠금장치 시스템 구현 프로젝트임

프로젝트 소개

프로젝트 명:

EPS FOOD BOX PROJECT

프로젝트 기관:

Hochschule Osnabrück

기간:

2022.09-2023.01

프로젝트 주제:

Hochschule Osnabrück의 자체 브랜드 맥주 Campus Bier의 pick and collect 판매 시스템을 위해 제작된 무인 택배함의 잠금 시스템 구현

팀명:

Komoco Box

팀인원:

3명

팀내 역할:

기술 리더

프로젝트 요구사항:

기능적 요구사항

  1. 모바일 디바이스로 잠금해제 요청이 가능해야 한다.
  2. 잠금해제 요청을 위해 웹사이트를 이용해야 한다.
  3. 잠금장치는 중앙 서버를 통해 제어되어야 한다.
  4. 잠금해제 요청시 박스에 붙은 QR코드를 통해 알맞은 Food Box Hub에 있는지 검사한다.
  5. 잠금해제 후, 기준 시간 후 문이 닫혀있는지 검사한다.

비기능적 요구사항

  1. 잠금장치는 Open and Free로 사용가능해야 한다.
  2. 잠금장치는 방수가 되어야 한다.
  3. 소프트웨어는 자바스크립트나 파이썬으로 구현한다.
  4. 잠금해제 요청 이후 잠금해제는 1분 이상 걸리지 말아야 한다.

기술적 솔루션:

campusbier.de

사용자를 위한 웹페이지
1. 사용자로부터 잠금해제 요청을 받아 데이터 베이스 업데이트
2. 잠금해제 후, 사용자에게 잠금 해제 성공 메세지 업데이트
3. 일정 시간 후, 문이 안닫혔을 경우 문 닫기 요청
4. 사용자 위치 인증 실패 시 잠금해제 요청 거절 메세지 업데이트

Lock DB

주문번호, 박스 위치, 잠금장치 id, 잠금해제요청, 박스 상태등의 내용을 담은 데이터 베이스

서버

  1. 데이터베이스 '잠금해제 요청'필드 업데이트 인식
  2. 요청된 잠금장치 열기, 데이터베이스 업데이트
  3. 기준 시간 이후 박스 상태 확인, 데이터베이스 업데이트

PS Lock

블루투스 통신을 통해 제어가 가능한 잠금장치

사용기술:

서버 구현

  1. Python
  2. Bleak(Python Bluetooth API)
  3. Cloud Firestore

사용자용 웹 구현

  1. Javascript
  2. HTML
    3.Vue
  3. Vuetify (Web development framework)

구현 내용:

  1. 사용자 인증과 택배함 잠금 해제 요청을 위한 웹 구현
  2. 파이썬 블루투스 api 활용을 통한 블루투스 잠금장치 제어
  3. Cloud Firestore를 이용한 웹용 데이터 베이스 구축, 트리거 구현

기타:

web app wireframe

구현영상:

구현영상링크

어려웠던 점과 해결방안:

1. Python동기화 프로세스 구현

여태껏 단일 프로세스를 가지는 프로그램만 작성했기에, 여러 프로세스가 한번에 일어나는 작업 흐름을 어떻게 구현해야 할지 막막했다. 하지만, 차근히 공부하며 python의 비동기 모듈인 async를 사용했고 이를 통해 서버 컴퓨터에서 데이터 베이스를 인식하면서 동시에 잠금해제를 하고 또 박스 상태를 확인하는 프로세스를 만들 수 있었다.

2. 블루투스 API활용

잠금장치의 API가 있었지만 Byte수준의 언어를 사용해야 했기에 매우 어려웠다. 휴대폰을 블루투스로 연결하는 것과 같은 작은 예제부터 하나씩 하면서 공부를 했고 교수님의 도움을 통해 블루투스 잠금장치 해제 함수를 구현할 수 있었다. 하지만, 그렇게 구현한 함수도 다른 디바이스에서 작동하지 않았고 이를 수도 없이 많은 시도와 오류 끝에 운영체제에 따라 다르게 작동한다는 것을 알아내었다.

3. 다문화 소통

세개의 대륙(아프리카, 아시아, 남아메리카)에서 온 세명의 팀원이 그들의 모국어도 아닌 영어로 소통하며 프로젝트를 하는 과정은 쉽지 않았다. 같은 내용을 몇번이고 설명해야 할 때도 있었고 문화적 차이로 인해 다른 의도로 전해지는 경우도 있었다. 하지만 그만큼 원활한 소통을 위한 방법들(효과적 피드백 방법, 팀내 정서적 교류를 위한 소통 방법 등)을 더 열심히 익히고 그 효과를 톡톡히 경험할 수 있었다. 이 과정을 통해 더 진솔하고 지혜로운 방식의 커뮤니케이션을 할 수 있게 되었다.
이에 더해 원활한 소통을 위한 방법의 일환으로 간트 차트, 칸반등의 프로젝트 관리 툴을 이용하며 프로젝트의 계획, 실행, 피드백의 과정도 배우고 경험할 수 있었다.

profile
그냥 사람

0개의 댓글