Raspberry pi in shopping cart

Raspberry pi in shopping cart

안녕하세요.
라즈베리 파이를 공부하고있는 참새입니다.

로젝트를 시작 계기
 에전에 고등학교 친구들이랑 여행을 갔습니다. 강화도에 한 패션에 모여 다같이 놀 먹을 것와 물건을 구매할려고 마트에 갔습니다. 돈을 모아 물건을 구매 할려고 했느데 친구들과 모은 금액이 한정되어 있어 핸드폰으로 가격을 적으면서 했지만 너무 불편했습니다.
 쇼핑카트 손잡이에 라즈베리 파이가 들어가기 좋아보였습니다.
 이 경험으로 쇼핑카트에 라즈베리 파이를 넣어 쇼핑을 쉽게 만들는 프로젝트를 생각했습니다.


선 제가 사용한 라즈베리파이에 사용 추가 장비는
1.GPIO (버튼 기능)
2.PIcameraA(바코드 사진 하기 위해)
3.USB마이크(어떤 명령을 수행하지 알기 위해)




렇다면 라즈베리 파이에 어떤 기능을 간단하게 만들어 봤습니다.
우선 바코드를 인식하는 기능입니다.
Dynamsoft에서 이미지에서 바코드를 읽어 오는 파이썬 코드가 있습니다.
코드를 가지고 해당 코드에 라이센스를 요구하여 사용했습니다.
사용 기간은 6월 6일까지입니다.
소스 파일을 원하는데 라이센스까지 요구하는 코드는 처음이라 상당히 떨렸습니다.
(혹시나 돈이 요구 될까봐 ...)
제가 사용할 프로젝트의 용도에 바코드 인식 코드를  살짝 수정했습니다.

그런데 문제는 바코드에 API서비스가 없어서 제가 직접 바코드에 값을 넣어야 했습니다.
다음으로 가장 기초적인 더하기 기능과 빼기 기능을 만들었습니다.
더하기 뺴기는 어떻게 구별해 낼지 생각하다가 GOOGLE STT 서비스를 이용하였습니다.
음으로 코드 확인해볼까요?

  1. 우선 speech.py가 실행 됩니다.
                            <사진 1> speech.py 코드
코드에서 os모듈을 사용하기 위해 쓰고 GPIO.sh는 GPIO스위치를 사용하기 위해 설정입니다 저는 21번 스위치를 만들었습니다.
<사진 2> GPIO.sh코드 
처음에는 바코드얼마를 저장할지를 만든 파일 add.py를 만들어 놓습니다. a=는 나중에 입력된값을 프린트 하기 위해 미리 써놓은 식입니다.
다음으로 실행되는것은 test.sh인데 이것은 스위치 눌릴때까지 계속 대기하기 위해 만든 쉘파일입니다.
                                                                       <사진 3> test.sh 파일 코드
21번 버튼이 툴려야 반복문을 끝나는 코드입니다.
다음으로는 음성을 저장하고 그것을 transcribe_sub.py에 음성파일을 google stt로 분석하는것입니다.

우선 google stt에서 주파수를 수정하였고 기존에 있던 코드를 말고 제가 프로젝트때문에 수정한 코드 일부 보여드리겠습니다.
                                                            <사진 4>transcribe_sub.py 코드
코드를 보시다 시피 a라는 음성이 있으면 plus.py가 실행되고
                                 b라는 음성이 있으면 sub.py가 실행되고
                                  c라는 코드가 있으면 end.py와 add.py가 실행 됩니다. 
아래 코드는 해당 음성이 없을시 다시 녹음을 실시하고 분석하는것을 반복합니다. a,b,c의 따른 코드느 다음과 같습니다
<사진 5> add.py 코드

<사진 6> sub.py코드

<사진 7> end.py코드
end.py를 제외하고  add.py에 + 혹은 - 부로를 넣습니다. 그리고 find_barcord.py를 실행합니다. 

                                                        <사진 8> find_barcord.py 코드
해당코드는 바코드 사진을 찍어 BarcodeReaderDemo.py를 실행합니다.

 BarcodeReaderDemo.py는 
Dynamsoft에서 얻은 코드입니다. 코드 사용을 보여 드리겠습니다.
1. 우선 dynamsoft에서 코드를 받은 채팅 혹은 메일로 라이센스를 가져옵니다.
2. 라이센스를 입력을 넣고 barcode_image=" 자신이 찍은 사진"을 넣습니다.
3.실행하여 결과를 확인합니다.
결과를 보시면 바코드에 형태와 내용이 나옵니다.
저는 바코드 내용에 따로 추가적인 값을 주었습니다.
 
<사진 9> BarcodeReaderDemo.py 코드 일부

<사진 10> BarcodeReaderDemo.py 코드 일부
배열을 만들어 해당 번호가 있다면 그 배열에 값에 가격(숫자)를 추가 하는 방식으로 코드에 값을 만들었습니다.
그 다음으로 음성 파일을 녹음을 하여 transcribe_sub.py를 실행하여 명령어를 계속 입력을 받습니다
이렇게 한다면 add.py은 해당 방식으로 실행 됩니다
1. 더하기 혹은 마이너스 받는다 
2. 바코드를 찍어 값을 넣는다
3. end.py가 실행이 되지 않는한 1번과 2번을 반복하여 실행한다.

이렇게 실행되고 나면 end.py가 실행된다면 add.py는 어떻모습이 되 있을까요?

a=부호 값 부호 값 ......
print(a)
라는 형식으로 나타납니다.







여기까지 실행 영상을 보여드리겠습니다.
가 개발 가능 생각
간단하게 만든 바코드 인식 입니다. 
만약 쇼핑카트에 추가한다면 이런 기능 뿐만 아니라 더 많은 기능이 추가 되어야 합니다.
1. 구글 시트 api 사용
바코드를 일일이 값을 주는게 아니라 구글 시트에 값을 변경한다면 변경된 값을 라즈베리 파이가 인식하여 나중에 코드를 수정할 필요없이 사용이 편리해집니다.
2.  바코드 리스트 작성
 지금 같은경우 리스트를 이용하지 않았습니다. 그래서 해당 물건이 몇개인지 심지어 있지도 않은 물건을 뺄수 있습니다.
그렇다면 리스트를 이용하여 저장하여 사용한다면 이러한 문제는 해결이 되고 지금까지 구매한 물건들을 쉽게 확인할 수 있을겁니다.
3. 쇼핑카트 위치확인
 바코드를 제외하고 라즈베리 파이에 추가적으로 다른 프로그램도 추가 가능 해본다는 생각도 해봤습니다. 주변에 라즈베리 파이와 연결된 인터넷 장치를 이용하여 쇼핑카트에 위치를 확인 할 수 있서 쇼핑카트에 도난을 막을 수 있다.

이외에도 쇼핑카트에 라즈베리를 추가하는 것으로 많은 일을 할 수 있습니다. 
정말 라즈베리 파이의 활용은 무궁무진 합니다.
여려분들은 raspiban in shopping 카트에 어떤 기능이 추가 하고 싶나요?



댓글