라즈베리 파이를 어떻게 활용하십니까?

얼마전에 라즈베리 파이4가 판매시작 된 모양이다.[1] 스펙이 꽤 올라간 듯 한데, 하나 사고 싶지만 본인은 라즈베리 파이를 너무 많이 사 놔서 ㅋㅋㅋ 안 쓰는 게 몇 개 남아도는 마당에 또 사기는 좀 그렇구만. ㅎㅎㅎ

해커뉴스[2]에서 라즈베리 파이를 어떻게 활용하는가에 대한 이야기가 꽤 화제던데, 세상에 똑똑한 사람들이 많다. 재밌는 사례 중에, 몬트리올에 사는 어떤 사람이 버스 gps를 받아서, 창밖쪽으로 27인치 모니터를 달아서 버스 도착 예정시간을 보여주는 공공 서비스를 제공하는 사례가 있었다. 이건 뭐 한국에서는 이미 대도시 버스 정류장마다 버스 도착 패널이 달려있으니, 그리 적용할만데가 많지 않을 듯 하다.

식물에 자동으로 물을 주고, 식물 영상을 유튜브에 자동 업로드를 해서 식물관찰을 원격으로 하는 사람도 있던데, 이거 원거리에서 소규모 농장 하는 사람들은 나름 유용할 듯. ㅎㅎ

홈 오토메이션으로 쓰는 사람도 있고, VPN이나 옛날 머신의 와이파이 수신기로 쓰는 사람도 있는 듯. 세상에 똑똑한 사람 많다. ㅎㅎ 뭐 이걸로 NASA 해킹하는 사람[3]도 있더만. ㅋ

많은 사람들이 여러 개를 사서 각기 여러 용도로 쓰고 있던데, 본인도 몇 개를 돌리고 있다. 한 개는 스마트 거울[4]인데, 음성인식은 이제 안 되지만, 장중에는 코스피와 내가 홀딩하고 있는 회사의 주요뉴스들 타이틀이 거울에 디스플레이 되고, 장 마감 이후에는 일기예보가 디스플레이 되도록 만들었다. 여태까지 만든 것들 중에 이게 제일 유용하다. ㅎㅎㅎ

다른 하나는 오렌지 파이 제로[5]인데, ftp 및 웹서버로 쓰고 있어서 원격으로 간단한 기록이나 북마크 및 파일 전송/저장에 쓰고 있다. 사무실에 설치해 놨는데-_- 크기가 원체 작으니 아무도 존재를 눈치채지 못하고 있다. ㅋㅋㅋㅋ 이것도 상당히 유용함.

또 다른 하나는 집에 samba 및 토렌트 서버[6]를 설치한 것데, 망가져도 상관없는 계륵같은 저장장치들을 몽땅 합쳐서 대용량 디스크로 쓰고 있다.

라즈베리 파이 제로에 prota pi를 깔아서 마이크로봇 제어[7]에 쓰고 있다. 사정상 WOL을 쓰지 못하는 컴퓨터를 원격부팅할 때 쓰고 있음. 근데 prota pi는 서버가 죽을 때가 너무 많아서 불편하다.

일전에 구입한 메이커스의 스마트 스피커[8]는 node js 코딩 연습으로 쓰고 있었는데, 요새는 귀찮아서 걍 꺼 놓고 있다-_-

.


[1] Raspberry Pi 4 on sale now from $35 (raspberrypi.org)
[2] Ask HN: What do you do with your Raspberry Pi? (hacker news)
[3] cnet Raspberry Pi hack puts NASA in security jam June 24, 2019 9:49 AM PDT
[4] 내 백과사전 스마트 거울 만들기 2016년 1월 30일
[5] 내 백과사전 오렌지 파이 제로 wifi 연결하기 2017년 3월 16일
[6] 내 백과사전 라즈베리 파이로 RAID 0 만들어서 토렌트 머신 만들기 2017년 10월 15일
[7] 내 백과사전 마이크로봇 푸시 사용 소감 2018년 4월 4일
[8] 내 백과사전 node.js로 자작 스마트 스피커 만들기 2019년 6월 12일

Posted in pi |

node.js로 자작 스마트 스피커 만들기

스마트 스피커로 음악을 좀 듣고 싶은데, 본인이 듣는 음악의 절대다수는 국내에서 발매되지 않는다. 시판되는 상용 스마트 스피커들은 스트리밍 판매수익 때문에, 애석하게도 개인이 가지고 있는 mp3파일을 재생하는 기능이 없다. (물론 블루투스 스피커로 쓰면 되긴 된다.) 내가 말하는 음악을 재생해주는 스피커를 만들 수 없을까 궁리를 좀 해봤다.

일전에 만든 스마트 거울[1]은 크롬에서 https 사이트가 아니면 마이크 인식이 안 되도록 보안 업데이트를 하는 바람에 annyang이 더 이상 작동하지 않아 음성인식이 되지 않았다.

일전에 메이커스 매거진 부록으로 라즈베리 파이로 만든 스마트 스피커[2]를 어떻게 써먹어 볼 수 없을까 싶었는데, 본인이 node.js를 전혀 할 줄 모르기 때문에 어떻게 손을 댈 수가 없었다. ㅋㅋ 그래도 산 게 왠지 아깝구만 젠장.

뭐 여하간 어찌 되겠지 싶어서, node.js에 대해 검색을 열라게 해 봤다. 진짜 구글링을 일억 번은 한 듯-_-

그래서 어째저째 작동하는 물건을 만들었다. stt와 tts 부분은 일단 KT 서버를 활용한다. 일단 음성을 텍스트화한 후에는 특정 키워드가 들어있으면 그에 해당하는 정보를 쏴 주고, 없으면 KT의 대화서버로 보내서 나온 결과를 쏴 주도록 코드를 작성했다. 근데 node.js에 대해 아는 게 없으니 너무 멘땅에 헤딩 식으로 코딩했다. 이것 때문에 3일이 그냥 날라갔구만-_-

재생시간 1분 21초.

와 요거 만드는데 그 수많은 고생을 하다니-_- 아직 음악 재생 부분은 구현도 못했고, 코드는 100줄 남짓인데 하도 코드 수정을 많이해서 들여쓰기도 엉망이고 주석도 거의 없다-_- 어쨌든 음성인식 결과를 웹브라우저에 쏴 줄 수도 있으니 이런저런 이미지나 다양한 효과는 가능할 듯 하다. 참고로 서버의 데이터를 클라이언트의 웹브라우저에 출력하는 방법은 SSE라는 걸 사용했는데, 이런 게 있는 줄 처음 알았네. ㅎㅎ 어느 친절한 분이 설명[3]을 잘 해 두었으니 참고 바람.

참고로 hotword인 ‘기가지니’는 네 글자인데, 너무 길어서 ‘지니야’로 하니까 자꾸 아이패드의 시리가 반응한다-_- 본인은 아이패드의 siri와 네이버 wave[4]로 mBox[5]를 음성제어하고 있기 때문에 ‘기가지니’를 선택할 수 밖에 없었다.

근데 하드웨어가 안 좋은건지 몰라도, 음성인식률이 너무 떨어져서 실사용은 어려울 것 같다. 아 이걸로 음악 좀 듣고 싶은데, 아무래도 어려울 듯.

.


[1] 내 백과사전 음성인식 스마트 거울 만들기 2016년 11월 2일
[2] 내 백과사전 메이커스 매거진 부록 AI Maker Kit​ 2018년 8월 12일
[3] [웹개발] SSE ( Server-Sent Events) 란 무엇인가 (hamait.tistory.com)
[4] 내 백과사전 네이버 wave 사용 소감 2018년 9월 8일
[5] 내 백과사전 mBox : 음성으로 적외선 리모컨 신호 제어 2018년 12월 8일

메이커스 매거진 부록 AI Maker Kit​

‘메이커스: 어른의 과학’ 이라는 잡지[1]의 부록으로 DIY 스마트 스피커가 딸려 있다고 해서 재미로 사 봤다. ㅋㅋ 라즈베리 파이까지 합친 버전이 있고 라즈베리 파이가 빠진 버전이 있다. 재생시간 4분 10초.

KT의 스마트 스피커인 ‘기가지니’의 백엔드 서버를 사용하는 것 같다. 조립한 이후에 작동을 위해서는 KT 개발자 홈페이지[2]에 등록을 해야하고, 개인사용자는 하루 500건의 쿼리가 무료로 제공된다. KT가 웬일로 이런 공익적 서비스를 제공하다니 ㅎㅎ 휴대폰 통신사를 KT로 쓰는 보람이 있구만. ㅋㅋㅋ

아무래도 구글의 DIY smart speaker kit[3,4]을 모방한 듯 한데, 어쨌든 사용자가 직접 커스터마이즈 할 수 있다는 매력이 있다. 게다가 한국어로 작동가능하다!!!!! 이게 진짜 엄청난 장점이다. ㅋㅋㅋ

‘메이커스’에 있는 그대로 따라하면 된다. 주의깊게 읽으면 컴맹도 일단은 조립해서 작동은 가능하도록 설명이 친절하게 돼 있다. 드라이버와 예제파일이 모두 포함된 라즈비안 이미지 파일은 KT의 기가지니 개발자 홈페이지[2]에서 받을 수 있다. 참고로 기가지니 개발자 포럼에서 pi3 B+에서는 작동을 안한다고 하는 사람이 있던데, 안전한 pi3 B를 사용하는 것이 좋을 듯 하다.

근데 문제는 라즈비안의 apt-get upgrade를 하는 순간에 내장 스피커가 먹통이 된다-_- 아무래도 버전문제 같은데, 여러모로 용을 써 봤지만 본인의 능력으로는 도저히 수정할 수가 없어서 apt upgrade를 못하고 있다. 드라이버만 별도로 제공[5]하긴 하는데, 이것도 역시 버전문제로 작동이 안 된다. 젠장.. 이것만 되면 메이커스에서 제공하는 킷 없이, 그냥 usb 마이크와 스피커를 연결해서 구현가능할 듯도 하다.

작동 코드는 node js를 쓰던데, 본인이 node js에 대한 지식이 전무해서 코드를 봐도 수정이 안 된다-_- 일단 stt로 입력받은 텍스트를 내가 우선 가공해서, KT 기가지니 DSS 서비스로 넣고 싶은데, 이 간단한 작업을 못 하겠다-_- 좌절이다-_-

KT에서 제공하는 stt의 성능은 그럭저럭인데 tts의 성능은 준수한 듯 하다. 예제파일을 몇 개 실행해 봤는데, 쓸데없이 재미있다. ㅋㅋㅋ

메이커스 킷에 들어있는 보드에는 gpio를 그대로 쓸 수 있도록 옆으로 빼 놓았는데, 여기에 예전에 라즈베리 파이 용으로 사둔 5인치 LCD 모니터[6]를 꼽아 쓸 수 았다. 이 모니터는 라즈베리 파이의 gpio에서 전류를 끌어 쓰기 때문에 별도의 전원 없이도 동작한다. 아주 짧은 hdmi선으로 연결하니 손바닥만한 훌륭한 컴퓨터가 되었다. ㅋㅋㅋㅋ 근데 이 모니터의 터치 기능을 쓰려면 apt upgrade를 해야해서[7] 못 쓰고 있다-_- 이걸 활용해서 한국어 사용이 가능한 아마존의 echo show처럼 멋있는 인공지능 스피커로 만들고 싶은데, node js를 몰라서 좌절 중이다ㅠㅠ

.


2018.8.12
JSON.stringify 라는 함수가 뭔지 이해했다!!!! 음하하하 뭔가 할 수 있을 것 같다. ㅋㅋㅋ

.


2018.8.13
node js가 너무 어렵다. 코드 실행 순서도 모르겠구만-_-

.


2018.8.20
지디넷 “중고생도 2시간이면 AI스피커 개발 가능” 2018.08.19.09:00

.


[1] http://makersmagazine.net/
[2] https://gigagenie.ai/
[3] https://aiyprojects.withgoogle.com/
[4] cnet Google includes a Raspberry Pi in a DIY smart speaker kit APRIL 16, 2018 2:36 PM PDT
[5] ai-makers-kit/driver/ (github.com)
[6] 라즈베리파이 5인치 800×480 HDMI LCD 터치스크린 모니터 [CN0024] (devicemart.co.kr)
[7] 5inch HDMI LCD (waveshare.com)

마이크로봇 푸시 사용 소감

‘마이크로봇 푸시’라는 물건을 펀샵[1]에서 사 봤다. 물리적으로 버튼을 눌러주는 소형 머신인데, 블루투스로 작동가능하므로 원격으로 제어가 가능하다.

사실 이런 건 휴대폰을 찾아서 앱을 켜기가 더 귀찮기 때문에-_- 그냥 누르고 말지, 전혀 편리해 보이지 않는다. ㅋㅋㅋ 다만, 여름에 극강의 더위 아래서 진짜 꼼~짝도 하기 귀찮은 순간이나, 감기 몸살에 너무 아파서 몸을 움직이기 힘들 때 좀 편리하더라-_- 블루투스로 전력을 통제하는 와트드림[2]을 써 보니 편리한 점은 타이머 내장을 활용할 때인 듯 하다.

뭐 여하간 이런 걸 기대하고 산게 아니라 목적은 따로 있다. 제조사 홈페이지의 설명[3]을 보니 이 제품은 IFTTT를 지원하는데, 이걸로 아마존 에코와 연동할 수 있다고 돼 있다. 그럼 혹시 말로 제어가 가능한게 아닌가?!?! 선풍기 켜!!! 하면 선풍기가 돌아간다면, 왠지 이거 좀 신세계 같다. ㅋㅋㅋㅋㅋ

여하간, 내 아마존 에코가 배송대행 덕분에 지금 통관중이라서 조금 구미가 당기길래, 마이크로봇 푸시를 5개 샀다. ㅎㅎㅎ 선풍기 제어를 시험해 봤다.

그냥 해도 충분히 잘 작동한다. 그러나 푸시의 수명을 늘리고 좀 더 쉽게 작동될까 싶어서, 선풍기 바닥부분을 분해해서 바람 강도 조절 버튼에 있는 스프링을 니퍼로 좀 잘라내서 스프링을 약하게 개조했다. (위 영상은 개조 전임) 이건 그냥 재미로 해봤음. ㅋㅋㅋ

휴대폰에 직접 블루투스로 링크하여 제어하려면, 폰이 저전력 블루투스(BLE)를 지원해야 하고, 이유는 모르겠지만 위치서비스가 켜져 있어야 한다. 와트드림[2]도 위치서비스가 켜져야 작동가능한 걸 보면 BLE의 어떤 특징이 아닌가 싶기도 하고, 잘 모르겠음.

머신의 위쪽에 터치 버튼이 있어서 버튼을 터치하면 그냥 작동된다. 누르는 깊이도 앱[4] 설정에서 제어 가능하다. 한 번 페어링을 한 후에, 다른 기기랑 페어링하고 싶으면 푸시 기기를 초기화 해야 한다. 초기화 하는 법 영상[5]을 참고하시라.

근데 에코와 연동하려면 ‘프로타’라는 중계기가 있어야 했다.[3] 프로타를 사려니, 다 매진이라 영 구하기 어려운 듯 해 보이던데, 다행히도 제조사에서 라즈베리 파이가 프로타 기능을 할 수 있는 라즈베리 파이용 프로타 OS를 배포[6]하고 있었다. 이게 웬 떡인가? ㅋㅋㅋ

무선 wifi와 블루투스 모듈이 없는 구형 파이는 동글을 달아야 하는데, 파이3부터는 내장 블루투스 모듈이 있으므로 그것도 필요없다. 파이3 Model B와 sd카드를 슥샥 구입해서 프로타 OS를 설치해 봤다. 설치법은 라즈비안과 같이 sd카드에 이미지를 밀어 넣으면 된다. 퀵 가이드[7]를 참고하시라. 고대로 따라하면 됨.

OS 제어를 어떻게 하는가 궁금했는데, 모니터에 연결할 필요도 없다. 모든 제어는 휴대폰에 설치된 프로타 제어 앱[8]으로 한다. 처음 부팅할 때 아무 반응도 없이 5~10분정도 좀 시간이 걸리는데, 화면도 안 나와서 고장난 줄 알고 좀 당황함 ㅋㅋㅋ 프로타와 푸시를 연결하면 휴대폰에는 블루투스가 필요없다. 휴대폰에서 명령을 보내면 프로타를 거쳐 푸시가 제어된다.

그리고 최초 이메일 등록이 한 번 필요하다. 뭐 홍보 목적이 아닐까 싶다. 앱에서도 푸시를 제어 가능하지만, 앱의 홈스크린 화면 우측 상단에 클립 모양을 누르면, 파이3을 제어할 수 있는 url을 등록된 이메일로 전송해준다. 이 url을 이용하여 웹 인터페이스로 프로타를 제어할 수 있다. 잘 만들었군. ㅎㅎ 컴퓨터 앞에서 선풍기 켜고 끌 때 편하겠구만. ㅋㅋ

프로타는 독자 OS라서 푸시를 제어하는 것 말고도 몇 가지 기능이 더 있는 것 같다. 파이 전용 카메라[9]를 꼽아서 웹캠 앱을 설치하니, 모션을 자동 감지해서 스냅샷을 남겨주는 기능도 달 수 있다. 근데 스냅샷을 지우는 방법을 모르겠네-_-

IFTTT를 이용해서 여러가지 트리거를 만들 수 있다고 한다. 누가 벨을 누르면 텔레그램으로 벨을 누른 사람의 사진을 보내고, open이라고 메세지를 전송하면 문이 열리는 식이다.[10]

여하간 과연 아마존 에코와 연동해서 말로 선풍기를 제어할 수 있을 것인가???? 제발 잘 돼야 될텐데-_-

 


[1] https://www.funshop.co.kr/goods/detail/50286
[2] 내 백과사전 와트드림을 구입하다 2015년 6월 26일
[3] 아마존 에코(Amazon Echo)와 연동 (support.thenaran.com)
[4] 마이크로봇 푸시 (google playstore)
[5] 마이크로봇 푸쉬 리셋 하기 (youtube 1분 39초)
[6] 프로타 Bernard 다운로드 (prota.info)
[7] http://docs.prota.info/101-prota-pi/
[8] Prota Space(베타) (google playstore)
[9] 라즈베리파이 카메라모듈 V2 8Megapixel (icbanq.com)
[10] 4000円でスマート・ドアベルを自作してみよう (qiita.com/NARAN/)

라즈베리 파이로 RAID 0 만들어서 토렌트 머신 만들기

방에 오래된 짜투리 sd 카드들이랑 짜투리 저장장치틀이 몇 개 있는데, 용량이 애매~~~해서 어디 가져다 쓰기가 뭣하다.ㅋㅋ 이거 전부 한데 업쳐서 단일 대용량 장치로 만들어서, 토렌트 머신을 돌리고 samba 서버를 설치하면, 밤에 잘 때 다 받아 놨다가 스트리밍으로 누워서 보면 좀 편하겠구나 싶어서-_- 시도해 봤다. 라즈베리 파이니까 전기 요금도 별로 안 들 것 같은데, 같은 생각을 하는 사람이 원체 많은 건지-_- 검색하면 엄청 나온다. 걍 기록차원에서 포스팅함.

일단 라즈베리 파이는 설치는 다 됐다 치자. 어차피 서버니까 비디오 메모리 할당은 조금만 해 두면 좋다. 다음 작업들은 모두 관리자 권한(sudo)로 해야 한다.

일단 가지고 있는 저장장치는 라즈베리파이 os가 설치된 4G짜리 sd카드 외에, 16G, 64G, 128G용량의 sd카드 3개가 있고, 아주 구형 mp3플레이어에서 분리한 ZIF타입의 하드디스크 20G짜리 1개가 있다. 이걸 usb에 몽땅 달고
fdisk -l
이라 치면 연결된 디스크 목록이 나온다. 그 다음은 어느 친절한 사이트[1]를 통째로 따라함-_-
mdadm 설치 후 (apt-get install mdadm)

mdadm --create --verbose /dev/md0 --level=0 --raid-devices=4 /dev/sda1 /dev/sdc1 /dev/sde1 /dev/sdf1

라고 치니까 간단히 합쳐졌다. 초 쉽네-_-

참고로, RAID 0은 연결된 디스크들 중에 하나라도 고장나면 전체 데이터를 못 쓴다고 한다. 중요한 파일은 저장하지 말자.

포맷하고 (mkfs.ext4 /dev/md0) (시간 살짝 걸림)
마운팅 포인트 만들고 (mkdir /home/pi/raid)
권한 주고 (chmod 777 raid)
/etc/fstab에 다음 한 줄을 추가하고

/dev/md0     /home/pi/raid    ext4    defaults   1   2

마운팅 하면 (mount -a)

200기가 바이트의 디스크가 생겼다. ㅋㅋ 경로 같은 건 각자 수정하시라.

samba서버 설치하는 법은 다른 블로그[2]를 보고 따라했음. 그 다음 transmission 데몬을 설치하면 되는데, 이건 뭐 설명하는 사이트가 하도 많아서 생략. ㅋ

마지막으로
service transmission-daemon status
라고 치니까 무슨 UDP failed to set receive buffer 이런 에러 메세지가 뜨던데, 어느 사이트[3]에서 해결법이 나와 있었다.
/etc/sysctl.conf 파일을 열어서 맨 마지막에 다음 두 줄을 추가한다
net.core.rmem_max = 16777216
net.core.wmem_max = 4194304

예전에 라즈베리 파이로 삽질[4]한게 하도 많으니까 대충 봐도 다 이해 되는구만-_- 여하간 모든 장비를 구석탱이에 몰아 넣고 선 정리하면 완성! ㅎㅎㅎ 자유 소프트웨어가 좋긴 좋다. ㅋㅋㅋ 자유 소프트웨어 만세!!

 


2017.10.18
samba서비스는 디폴트로 쓰기 권한이 막혀 있다. 쓰기 권한을 얻으려면 /etc/samba/smb.conf 파일을 열어 [homes]항목 아래의 read only = yes 를 no로 바꿔주고 create mask = 0775, directory mask = 0775로 바꿔주고 서비스를 재시작 (service smbd restart) 하면 파일을 쓸 수 있다.
transmission의 web ui에 아이디와 비번으로 접속하기 번거로울 때는 /etc/transmission-daemon/settings.json 파일을 열어 “rpc-authentication-required”의 값을 false로 바꾸면 된다.

 


2017.10.22
아무 생각없이 라즈베리 파이를 확 껐다가 16G sd카드 하나가 맛이 가는 바람에 완전 생고생했다-_- 남은 다른 디스크들은 재마운트가 안 되는데 해결 방법은, 레이드 디바이스 정지 (mdadm –stop /dev/md0) 후 수퍼블럭을 제거 (mdadm –zero-superblock /dev/sda) 하면 됨.

 


[1] How to set up software RAID for Raspberry Pi in Funnyvale
[2] 라즈베리파이(Raspberry Pi) 삼바(Samba) 서버 만들기 (라즈비안 파일서버 설치방법) by 빌노트
[3] TRANSMISSION UTP AND UDP BUFFER OPTIMIZATIONS in Falks Blog
[4] 내 백과사전 Raspberry Pi 2를 구입하다 2015년 3월 14일

오렌지 파이 제로 wifi 연결하기

라즈베리 파이 제로를 꽤 구하기 힘들던데, 아이씨뱅큐에서 마침 오렌지 파이 제로를 팔길래[1] 하나 슥샥 사 봤다. 와~ 컴퓨터 진짜 작다. 신용카드 크기의 절반 정도? 원래 가격은 7달러라서 아이씨뱅큐의 가격이 조금 비싼듯 하지만, 배송비랑 배송기간을 생각하니 기냥 몇 천원 더 주고 사는 게 나을 듯-_-

참고로 발열이 심하다. 발열 때문인지 몰라도 가끔 다운 되는 경우가 있던데, 방열판을 달면 괜찮아진다. 방열판은 필수라고 본다.

비디오 출력이 없어서 제어를 하려면 랜선을 꽂아서 ssh로 접속해야 한다. ㅋㅋ 집에 공유기가 없는 사람은 시리얼포트로 접속해야 한다는데, 과정[2]이 약간 까다로운 듯 하다. 근데 요새 집에 공유기 없는 사람도 있나-_-

기존에 파이2[3]를 개인적 용도의 웹서버 겸 ftp서버로 쓰고 있었는데, 이걸 오렌지 파이 제로로 교체하기로 했다. 제로용 Armbian Debian Jessie[4]를 설치했는데, 이미지 용량이 꽤 작다. 집에서 안 쓰는 2G 용량의 마이크로 sd 카드를 활용하기로 했다. usb 포트도 하나 있기 때문에, 안 쓰는 8G 용량의 usb 메모리 스틱을 하나 꼽아서 쓰기로 했다. 그래서 아파치 서버도 깔고 ftp서버도 깔고 여기까지는 문제 없다.

근데 이놈이 아무리 용을 써도 wifi 연결이 안 되는 것이었다. 와 이것 때문에 삽질에 삽질을 거듭 했는데, 어느 동영상[5]에 나오는 걸 따라하니 한 방에 된다-_-

동영상[5] 보기 귀찮은 사람을 위해 요약하자면 다음과 같다.

  1. /etc/network/interfaces
    파일의 내용을 다 삭제하고
    auto lo
    iface lo inet loopback

    auto eth0
    allow-hotplug eth0
    iface eth0 inet dhcp

    allow-hotplug wlan0
    iface wlan0 inet manual
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
    iface default inet dhcp

    라고 넣는다.

  2. /etc/wpa_supplicant/wpa_supplicant.conf
    파일 (없으면 만든다)을 열어서
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1

    network={
    ssid=”와이파이 이름”
    psk=”패스워드”
    }
    라고 넣는다.

  3. 재부팅

근데 통신 속도가 초 느리네-_- 부하가 걸릴만한 작업은 별로 안 해서 상관 없는데, 어지간하면 좀 써보고 정 느리면 파이2로 돌아가야지 ㅋㅋ

 


[1] 오렌지파이 ZERO 512MB (Orange Pi Zero) (쿼드코어/싱글보드 컴퓨터/안드로이드,우분투,데비안,라즈비안 호환) (icbanq.com)
[2] 오렌지파이 제로 보드 간단 사용기 (studymake.tistory.com)
[3] 내 백과사전 Raspberry Pi 2를 구입하다 2015년 3월 14일
[4] Orange Pi Zero (armbian.com)
[5] How To – Armbian Wifi Setup (Orange Pi Zero) (youtube 2분 15초)

음성인식 스마트 거울 만들기

일전에 본인이 스마트거울을 만든 적[1]이 있는데, 재주 많은 사람들이 이 기능을 넘어서 음성인식이 되는 스마트 거울을 만든 걸 몇 개[2,3] 봤다. 헐! 이걸 보니 나도 한 번 만들어 보고 싶어 좀이 좀 쑤셨다-_- 근데 정말 짧은 지식으로 이걸 구현하려니 알아야 할 게 너무 많고, 시행착오도 무지하게 많이 했다. ㅋㅋㅋ

[2]에 설치과정에 대한 매우 친절한 설명이 있으나 결국 실패했다. 설명을 쭉 봤는데, 중간에 구글 개발자 등록을 해서 음성 api를 개설해야 하는 과정이 있어서 좀 걸렸다. 그리고 따라하다보니 뭔가 컴파일 에러인지 생기는데, 이걸 해결할 재주가 본인에게는 없어 포기…-_-

여하간 본인이 구현한 음성인식 스마트 거울은 크게 세 부분으로 구성되는데,

  1. 사람이 발화하면 이것을 텍스트로 변환 (speech to text; stt)
  2. 각 텍스트에 맞는 처리 (javascript와 perl 사용)
  3. 처리 결과를 음성으로 출력 (text to speech; tts)

그래서 ‘거울아~’ 하고 부르면 ‘네 주인님’ 하고 대답을 하는 거울을 만들고 싶어졌다. ㅋㅋ 참고로 Snow White에서 Evil Queen이 Magic Mirror를 부르는 대사가 뭘까 검색해 봤는데, ‘Mirror, mirror, on the wall’ 인 듯… ㅋ

원래 본인의 계획으로, tts 부분은 안면이 있는 여고생-_-한테 부탁해서 지정된 대사를 녹음한 뒤, mp3파일을 출력하는 방식을 검토하고 있었다. (엄밀히 말하면 tts는 아니지만…) ㅋㅋㅋ 그런데 responsive voice라는 사이트[4]에서 자바스크립트로 tts를 구현할 수 있도록 제공하는 라이브러리를 제공하는데, 음성합성 성능이 대단하다! 비상업적인 개인 사용에 한해 무료이고 자바스크립트만으로 전부 다루는게 가능하므로 사용이 매우 간단하다. 그래서 tts는 쉽게 해결할 수 있었다.

문제는 stt부분인데, 웬만하면 한국어로 구현하고 싶었기 때문에 이게 매우 간단치 않은 문제였다. jasper, voice command 등등 여러 방법이 있다고 하는데, 이 모두 본인의 지식 부족으로 전혀 다룰 수가 없었다-_- 다행히 개중에 annyang[5]이라는 자바스크립트 라이브러리가 자바스크립트 만으로만 작동하고, 한국어 인식 부분에서 꽤 괜찮은 성능을 가지고 있어서 이를 중심으로 여러가지로 고려해 봤다. 헌데 마이크 입력을 웹브라우저가 직접받아야 했는데, 이게 크롬/크로미움 브라우저만 가능했다. 그건 그렇다 치더라도 라즈베리 파이에서 크롬을 작동시킬 수 없기 때문에, 필연적으로 크로미움을 사용해야 했는데, 크로미움에서는 https 사이트가 아니면 마이크 퍼미션을 정상적으로 얻지 못하는 문제가 있었다. 이 부분을 해결하지 못하여 결국 라즈베리 파이로 구현하는 것을 포기하고 말았다.

검색해보니 어떤 일본사람이 raspberry pi + ubuntu mate + electron + annyang 으로 일본어 음성인식을 구현하는 것[6]을 봤는데, 이걸 따라 해 보고 싶었다. 참고로 electron[7]은 웹 언어만으로 크로스 플랫폼 데스크탑 앱을 구현하는 툴이라고 한다. 근데 electron을 어떻게 다루는지 매뉴얼을 봐도 도저히 이해가 안 돼서 이 방법도 포기…-_-

결국 좀 어이없게도 최후의 방법으로 예전에 사놓고 안 쓰고 있던 8인치 크기의 윈도우8 태블릿(도시바 encore)에 micro hdmi 케이블을 물려서 디스플레이를 구현하고, 여기에 구글 크롬 브라우저를 풀스크린 모드로 실행하는 방법을 썼다-_- 대신, 웹사이트는 내부 네트워크 안에서 raspberry pi 2에 아파치2 서버로 구동시키고, 옥션에서 파는 만원짜리 스마트폰용 마이크를 태블릿에 달아서 음성인식률을 좋게 만들었다.

그 결과….

유튜브에 여러 음성인식 시연 영상이 있는데, 하나같이 그다지 실용적으로 보이지 않았다. 아무 음성이나 반응하지 않고 지정된 시기에 음성인식을 시작할 수 있도록 모션인식이나 hot word를 지정하는 것이 보통이다. (ok google이나 alexa같은…) 처음에는 ‘거울아’로 지정하고 만들었는데, 이런거 실제로 쓰려면 꽤 귀찮다. 실제로 만들어보니 기기가 소리에 그닥 민감하지 않은 듯 하여, 본인은 hot word를 아예 없앴다-_- 걍 아무때나 일하다가 거울쪽으로 ‘뉴스’라고 외치면 뉴스를 읽어주는 편이 본인에게는 더 실용적이었다.

어떤 메뉴가 실용적일지 궁리를 많이 했는데, 가끔 계산기 누르기 귀찮아서 곱셈과 덧셈을 외치면 (예를 들어 ‘십이 곱하기 십삼’) 계산해 주는게 실용적일 듯 하다. 근데 숫자 인식 성공률이 은근 낮아서…-_-

 


2016.11.6
드디어 아무 상장된 회사 이름을 외치면 그 회사의 주가와 전일 등락을 말해주는 기능을 만들었다. ㅋㅋㅋㅋ 코드 짜느라 무지 힘들었다. ㅋㅋㅋ 회사 이름 인식률이 생각 이상으로 상당히 정확하다. 거의 틀리지 않는다. annyang 이거 대단하구만!

 


2016.11.9
크롬 브라우저를 매번 실행할 때마다 f11키를 누르기가 번거로운데, 상당히 유용한 팁이 있다.

크롬경로/chrome.exe --kiosk url주소

라고 써 주면 실행즉시 풀스크린이 된다.
참고로 자바스크립트 만으로는 보안 문제 때문에 브라우저 실행 즉시 풀스크린이 안 된다는 사실.

또 웹페이지 css 안에
html { cursor: none; color: #2299aa; background-color: #000000; }
라고 써 주면, 배경은 검게되고 자동으로 커서가 보이지 않아 마우스를 굳이 조작할 필요가 없다.

 


2016.11.18
‘중국어’라고 외치면 동아일보에서 제공하는 일일 중국어[8]를 보여주는 기능을 만들었음. ㅋㅋㅋ

참고로 css 안에
img { -webkit-filter: invert(1); filter: invert(1); }
라고 쓰면 이미지 색상이 반전되어 나오므로 외부 이미지를 거울에 맞춰 변형할 필요가 없게 된다. 물론 기존의 이미지들을 전부 반전시켜 놔야 한다. ㅋ

 


2017.4.9
오늘 테스트해보니 크로미움에서 annyang이 정상작동하지 않는 현상이 수정된 것 같다. 이제 라즈베리 파이에서 작동되는 스마트 거울을 만들 수 있을 듯. ㅎㅎㅎ

 


[1] 내 백과사전 스마트 거울 만들기 2016년 1월 30일
[2] Smart Mirror (docs.smart-mirror.io)
[3] Smart Mirror 스마트 미러 만들기- 1 개요 및 물품 구매 (jeongchul.tistory.com)
[4] Responsive Voice (responsivevoice.org)
[5] annyang! SpeechRecognition that just works (talater.com)
[6] Raspberry Pi と Electron で自立型の音声アシスタント (qiita.com/PonDad/)
[7] JavaScript, HTML, CSS를 이용하여 크로스 플랫폼 데스크탑 앱을 만들어보세요 (electronjs.org)
[8] 일일 외국어 산책 (news.donga.com)

스마트 거울 만드는 법

일전에 스마트 거울 만들기 이야기를 한 적이 있는데, 어떻게 만드는지 문의하는 사람이 있어서 별도의 포스트를 작성한다. 사실 원 글에 만드는 과정이 거의 다 설명이 돼 있는데, 일기처럼 써 놓아서 아무도 읽지 않는 듯 하다.ㅋ 사실 본인의 시행착오 과정을 따라할 필요가 없으니, 요약해서 설명하는 글을 하나 작성해 보았다.

caveat : 순서대로 끝까지 읽어보고 한 부분이라도 무슨 말인지 이해가 안 되면 포기하시오. 이 포스트 만드는 데도 시간 꽤 걸렸는데, 더 자세한 설명은 안할 거임. ㅋ

  1. 설치하려는 장소는 wifi 신호가 닿는 장소이어야 한다.

    사실 유선으로도 설치가 가능하긴 한데, 거울에 연결된 선이 많으면 미관상 별로니까 이 글에서는 무선으로 인터넷을 연결할 것이라고 가정한다. 집에서 무선 공유기를 안 쓰는 사람은 걍 포기하시오 ㅋ

  2. hdmi 입력이 가능하고, 벽에 걸 수 있을 만한 무게의 모니터를 준비한다.

    뭐 벽에 걸지 않고 쓰려는 사람은 더 큰 것을 준비해도 된다. 근데 모니터가 너무 두껍거나 무거우면 벽에 걸기 좀 힘들어 질 듯 하다. 본인은 가능한 가장 얇고 가벼운 것을 선호했으므로 on-lap 2501c를 이용하였다. 근데 이거 좀 비싸다-_-

    만약 모니터의 hdmi 또는 dvi 연결부위가 모니터 뒤쪽으로 돌출된 형태라면 케이블을 연결한 후 벽에 붙이기 난감한 상황이 된다. 꺾어지는 젠더를 알아서 구입하시라.

  3. 반사율 60%~70% 정도의 모니터보다 넓은 크기의 반투명 거울을 준비한다.

    A3 사이즈면 적당할 듯. 본인은 http://www.atostore.com/ 에서 구매하였다. 자기가 쓰고 싶은 사이즈로 잘라서 보내달라고 하면 보내줄 것 같다.

  4. 라즈베리 파이를 준비한다.

    기종은 아무거나 괜찮음. 어차피 x윈도우 띄우면 걍 계속 켜놓기만 할 거라서, 성능은 중요하지 않다.

    1. 라즈베리 파이3가 아닌 사람은 usb 타입의 무선 랜카드를 구매한다.

      왜냐하면 파이3는 내장된 무선 랜카드가 있어서 필요없는데, 옛날 기종은 없으므로 인터넷에 연결하려면 필요하다.

    2. 파이에 부팅할 때 쓸 sd 카드를 준비한다.

      제일 오래된 기종인 파이A 또는 파이B는 그냥 sd 카드를 이용하고, 파이2와 파이3는 마이크로 sd 카드가 필요하다. 용량은 4기가 바이트 이상이 필요하다. 근데 4기가도 살짝 빡빡하니까 8기가 이상을 구입하는 것을 권함.

    3. usb 타입의 키보드와 마우스를 준비한다.

      이거 없는 사람은 없겠지-_-

  5. 검은 종이를 구입한다.

    반투명 거울이 모니터보다 크면 나머지 부분을 가려야 거울처럼 보인다. 모니터 사이즈랑 거울 사이즈랑 똑같으면 안 사도 됨.

  6. 거울 크기의 액자를 구입한다.

    daum 지도로 자기 동네 주변의 표구사를 검색한다. 그리고 모니터와 거울을 들고 가서 이걸 둘러 싸는 프레임 액자를 하나 짜 달라고 주문하면 된다. 본인은 3만원 줬음-_- ㅋ

준비물은 여기까지고, 인제 리눅스에 대한 지식이 약간 필요하다. ㅋ 뭐 본인도 리눅스에 대해 잘 알아서 한게 아니고 다 검색해서 알아낸 것이므로 막히면 검색을 잘 활용하자.

  1. sd 카드에 raspbian jessie를 설치한다.

    라이트 버전을 설치하면 안된다. x윈도우가 들어있지 않으므로 웹브라우저 (콘솔용 텍스트 웹브라우저 같은 걸로 딴지 걸지 맙시다 ㅋ)를 띄울 수가 없다. 좌측의 풀버전을 설치하시라. 설치 방법은 Win32 Disk Imager 같은 걸로 디스크 이미지를 통째로 쑤셔 넣기만 하면 되는데, 자세한 방법은 검색하면 무지하게 나온다. 디폴트 계정은 pi, 패스워드는 raspberry 이다.

  2. 화면 회전법

    가로로 써도 상관없긴 한데 ㅋㅋㅋ 가로로 긴 거울을 쓰는 사람은 별로 없으니 화면을 회전시켜야 한다.
    /boot/config.txt
    를 열어 맨 마지막 줄에 display_rotate=1를 추가하고 재부팅한다. 참고로 2는 180도 회전, 3은 270도 회전이다. 필요하면 3을 써도 된다.

  3. 미도리 설치

    웹브라우저를 전체화면으로 만드는 단축키는 F11인데, 이건 거의 모든 브라우저에서 통한다. 기본으로 내장된 에피파니 브라우저는 풀스크린으로 만들면 화면 테두리에 흰 라인이 추가되어 보기가 좋지 않다. 그래서 미도리 브라우저를 설치한다. 설치방법은 콘솔창을 띄워서 다음을 입력한다.
    sudo apt-get install midori
    뭐 선호하는 브라우저가 있으면 그걸 써도 무방하다.

    그리고 매번 부팅할 때마다 미도리를 실행하기가 귀찮을 수 있으므로 /home/pi/.config/autostart 에다가 단축아이콘을 넣어둔다.

  4. 아파치2 설치

    라즈베리 파이를 웹서버로 만들면 된다. 개인적으로 쓰는 웹서버가 있으면 그걸 걍 써도 되는데, 인터넷 접속이 원활하지 못하면 가끔 404 에러가 나서 불편하다. 웬만하면 아파치를 설치하는 게 좋다. 설치법은 콘솔창에 다음을 입력
    sudo apt-get install apache2

  5. 아파치2 루트 디렉토리 수정과 cgi 허용

    먼저 웹서버의 루트 디렉토리와 cgi 디렉토리를 만들어 둔다.
    /etc/apache2/sites-available/000-default.conf 파일을 열면 루트 디렉토리 값이 보인다.
    DocumentRoot /var/www/html
    를 다른 경로로 변경하고 그 아래쪽에 다음을 추가한다.

    <Directory 변경된 경로>
    Order allow,deny
    Allow from all
    Require all granted
    </Directory>

    ScriptAlias /cgi-bin/ 변경된cgi경로
    <Directory “변경된cgi경로”>
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
    </Directory>

    그냥 ctrl-c로 카피하면 따옴표가 이상한 캐릭터로 바꾸니까 카피해서 수정 필요함.

    그리고 ls /etc/apache2/mods-enabled/ | grep cgi
    라고 해서 cgid.load가 걸리지 않으면
    ln -s /etc/apache2/mods-available/cgid.load /etc/apache2/mods-enabled/
    ln -s /etc/apache2/mods-available/cgid.conf /etc/apache2/mods-enabled/
    라고 입력한다.

  6. 모니터 절전모드 해제

    /home/pi/.config/lxsession/LXDE-pi/autostart
    파일 뒤에

    @xset s off
    @xset -dpms

    라고 추가한다.

  7. LWP::Simple 설치

    콘솔창을 열어
    perl -MCPAN -e’install “LWP::Simple”‘
    라고 입력하고 한참 기다리면 된다-_- 설치 초 오래 걸리니까 유선랜을 연결해서 하는 것을 추천함.

  8. 한글 폰트 설치

    스마트 거울에 한글이 나올 필요가 없는 사람은 이 과정을 패스해도 된다. 콘솔 창에 다음을 입력
    sudo apt-get install ttf-unfonts-core ibus ibus-hangul

  9. 마우스 포인터 사라지게 하기

    라즈비안을 최초 부팅하면 마우스 포인터가 중앙에 위치한다. 뭐 마우스를 움직여서 구석으로 몰면 되긴 하지만, 부팅할 때마다 마우스 조작을 하는게 은근 귀찮다. unclutter를 설치하면 일정시간 이상 움직임이 없는 마우스 포인터는 안 보이게 되므로 편리하다.
    sudo apt-get install unclutter
    으로 설치한 다음
    /etc/rc.local
    파일을 열어 맨 마지막 행에 unclutter 라고 추가하면 부팅할 때마다 실행된다.

  10. 날씨 아이콘 준비

    검색해보면 날씨 아이콘들은 많은데, 대부분 배경이 흰색임을 가정하고 있기 때문에 스마트 거울에 맞지 않다. 본인이 대충 편집해서 쓰고 있는 아이콘들을 업로드해 둔다.

  11. clouded half_snow little_cloud rainy snow sunny thick_cloud

  12. perl 코드 입력

    cgi 경로에 파일을 하나 만들어서 다음 perl 코드를 입력한다.

#!/usr/bin/perl

use LWP::Simple;
use Encode;

print <<HTMLA;
Content-type: text/html


<html><head>
<title>smart mirror</title>
<meta charset="utf-8">
</head>
<script type="text/javascript">
<!--
setTimeout("history.go(0);", 300000); //300초마다 리프레시

setInterval("dpTime()",1000);

function dpTime(){
  var now = new Date();

  years = now.getYear();
  years = years + 1900;
  months = now.getMonth();
  months = months + 1;
  dates = now.getDate();
  days = now.getDay();
  hours = now.getHours();
  minutes = now.getMinutes();
  seconds = now.getSeconds();

  var names = ["일", "월", "화", "수", "목", "금", "토"];
  if (hours > 12){
    hours -= 12;
    ampm = "오후";
  }else{
    ampm = "오전";
  }
  if (hours < 10){
    hours = "0" + hours;
  }
  if (minutes < 10){
    minutes = "0" + minutes;
  }
  if (seconds < 10){
    seconds = "0" + seconds;
  }
  document.getElementById("dpTime0").innerHTML = years + "년 " + months + "월 " + dates + "일 " + names[days] + "요일";
  document.getElementById("dpTime1").innerHTML = ampm;
  document.getElementById("dpTime2").innerHTML = hours + ":" + minutes + ":" + seconds;
}
//-->
</script>
<body bgcolor="#000000" text="#2299aa" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0">
<table border=0 cellspacing=5 cellpadding=5 width="100%" height="100%"><tr><td valign="top">
<font size=+2>

HTMLA

##################### 네이버 증권
$html = get( "http://finance.naver.com/sise/sise_index.nhn?code=KOSPI" );
unless ( $html ) {
print "404 not found";
}

@all=split("\n", $html);
$num=@all;

print <<END;
<span id="dpTime0" style="font-size:30px"></span>
<br><span id="dpTime1" style="font-size:30px"></span>
<span id="dpTime2" style="font-size:50px"></span>
<br>코스피 현재 :<span style="font-size:50px">
END

for($i=0;$i<$num;$i++) {
 if($all[$i] =~ m/<em id=\"now_value\">/) {
  $all[$i] =~ s/<em id=\"now_value\">//;
  print "$all[$i]</span>";
 }
 if($all[$i] =~ m/id=\"change_value_and_rate/) {
  $all[$i] =~ s/<span class=\"blind\">(.*)<\/span>//;
  print $all[$i];
 }
}

print "</span><br>--------------------\n<br>";

#####################  날씨

$html = get( "http://www.kma.go.kr/mobile/for_02_view.jsp?s1=11&s2=11170&s3=1117052000" );
# 자기가 사는 동네로 수정

unless ( $html ) {
print "404 not found";
}

$html = encode("UTF-8", $html ); #한글 검색을 위해 필요

@all=split("\n", $html);
$num=@all;
$temp=0;
$temp2=0;

for($i=3;$i<$num;$i++) {
 if($all[$i] =~ m/시각 /) {
  $temp++;
 }
 if($all[$i] =~ m/\[오늘\]/) {
  $temp2++;
 }

 if(($temp > 0  && $temp <4) && $temp2 <2) {    #항상 날씨 세 개만 출력
  $all[$i] =~ s/구름 많음/<img src="http:\/\/localhost\/image\/thick_cloud.png">/;
  $all[$i] =~ s/구름 조금/<img src="http:\/\/localhost\/image\/little_cloud.png">/;
  $all[$i] =~ s/맑음/<img src="http:\/\/localhost\/image\/sunny.png">/;
  $all[$i] =~ s/흐림/<img src="http:\/\/localhost\/image\/clouded.png">/;
  $all[$i] =~ s/비/<img src="http:\/\/localhost\/image\/rainy.png">/;
  print "$all[$i]\n";
 }
}

print <<END;
</p>
</td></tr>
<tr><td align="right" valign="bottom" style="padding:0 20 50 0">
<span style="font-size:50px">You Look Nice!</span>
</td></tr></table></table>
</html>
END

귀찮아서 114번째 줄 부터 날씨 아이콘 부분의 코드가 덜 완성되었는데, 텍스트를 이미지로 바꾸는 것 뿐이므로 알아서 수정하면 된다.

자세한 내용은 다음 두 글을 참고하삼.
http://michaelteeuw.nl/post/ … e-end-result-of-the-magic
http://blog.dylanjpierce.com/raspberrypi/ … gic-mirror.html

Raspberry Pi 3를 구입하다

구파이[1]는 스마트 거울[2]에 쓰고 있고, 파이2[3]는 개인적인 용도의 웹서버로 쓰고 있으므로 굳이 살 필요는 없었는데, 왠지 귀납적으로 사고 싶어서 이번 버전도 사 봤다. 사실 pi zero를 사고 싶었는데, 물건을 도저히 구할 수가 없었다. 인기가 무지 좋은 듯. ㅋ

지금 이 글도 라즈비안을 설치한 pi 3의 윈도우 환경에서 한글 폰트와 ibus를 설치한 후 에피파니 브라우저를 띄워 쓰는 중이다. 체감 성능은 pi 2와 크게 다르지 않은 듯 하다. 좀 느린 데스크탑을 쓰는 느낌?

pi 2와는 다르게 wifi와 bluetooth가 내장되어 있다고 하는데, 내장 wifi가 다른 공유기는 검색가능한데, 우리집 공유기만 찾지를 못한다. 당췌 이유를 모르겠네-_-

때마침 해커뉴스[4]에 오드로이드 c2[5]와 pi 3의 성능 벤치 점수 비교가 올라와 있는데, 여러모로 오드로이드 c2가 훨씬 성능이 뛰어나다. 뭐 일단 표시된 하드웨어 사양이 더 좋으니 당연하다면 당연한 결과다. c2 쪽은 ram이 2G이고 eMMC도 사용가능하니 sd 카드를 쓰는 pi 3와 비교가 안 될 듯 하다. 높은 성능으로 실사용을 원하는 사람은 이쪽을 알아보는 편이 좋을 듯 하다.

NAS서버로 어떨까 싶었는데 웬만큼 큰 용량이 필요한 사람이 아니라면, 안 쓰는 안드로이드 기기에 zeta torrent pro[6] 앱 하나만 깔면 웬만한 NAS 부럽지 않은 기능이 나온다. 이 앱이 꽤 잘 만들어져 있어서 신통방통한 기능이 많다. 본인도 지하철에 떨어뜨려 먹통이 된 LG g3 cat6[7]을 이 앱을 활용하여 토렌트 머신으로 쓰고 있다. ㅋㅋ

음 … 그럼 pi 3 이거 어디에 쓰지-_- 뭐 언젠가 쓸모가 생기겠지 ㅋ

 


[1] 내 백과사전 Raspberry Pi Model B를 구입하다 2012년 12월 27일
[2] 내 백과사전 스마트 거울 만들기 2016년 1월 30일
[3] 내 백과사전 Raspberry Pi 2를 구입하다 2015년 3월 14일
[4] https://news.ycombinator.com/item?id=11352158
[5] http://www.hardkernel.com/main/products/prdt_info.php
[6] https://play.google.com/store/apps/details?id=com.teeonsoft.ztorrentpro
[7] 내 백과사전 스마트폰 액정 파손 후 백업 방법 2015년 7월 10일