본문 바로가기

개발 이야기/라즈베리파이

라즈베리파이 프로젝트 - 스마트미러 만들기

728x90

라즈베리파이 3B+ 보드 기반의 스마트미러 만들기 관련한

유용한 유튜브 강좌가 있어 링크를 남깁니다.

:=> https://www.youtube.com/watch?v=JUaybGZuPPg&list=PLgkpDfSY2BezVKrDcCP-yaJJt_xdUlica&index=2 

 

강의 내용을 요약하면 하기와 같습니다.

총 13강의 강의인데 각 강의에서 사용된 명령을 남겨봅니다.

 

#1 MagicMirror 설치/ 자동실행 설정

1. 매직미러 설치 (04:53)
 1.1 curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
       ★1.1의 내용을 바로 복사하면 터미널에서 이상하게 인식이 되니, 메모장에 한번 복사 후, 그것을 다시 복사해서 터미널에 붙여주세요^^
 1.2 sudo apt install -y nodejs
 1.3 git clone https://github.com/MichMich/MagicMirror
 1.4 cd MagicMirror/
 1.5 npm install   (상당히 오래걸립니다)
 1.6 cp config/config.js.sample config/config.js
 1.7 npm run start
 1.8 Ctrl + Q 누르면 빠져나옴
 1.9 cd .. 으로 이전폴더로
 
2. 매직미러 자동실행 설정 (07:38)
 2.1 sudo npm install -g pm2
 2.2 pm2 startup
 2.3 sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi 
 2.4 cd ~
 2.5 sudo nano mm.sh
 2.6 mm.sh에 추가
  cd ./MagicMirror
  DISPLAY=:0 npm run start
 2.7 sudo chmod +x mm.sh
 2.8 pm2 start mm.sh
 2.9 pm2 save
 2.10 자동실행을 해제하려면 원격(ssh, xrdp)으로 들어가서
  pm2 stop mm
  pm2 save
  를 각각 입력하면 됨

 

 

#2 스마트미러를 위한 라즈베리파이 설정

1. 화면설정
 1.1 OpenGL driver 설정 (라즈베리파이 3만) (01:05)
  1.1.1 터미널에서 sudo raspi-config 입력 (01:19)
  1.1.2 Advanced options - GL Driver - GL (Full KMS) OpenGL desktop driver with full KMS 선택
  1.1.3 sudo reboot으로 재부팅
  
 1.2 화면 회전 (직접 모니터 연결해서 해야 함) (03:28)
  1.2.1 시작버튼 - 기본설정 - Screen Configuration (03:33)
  1.2.2 Configure - Screens - HDMI-1 - 방향 - 원하는 방향 선택 (03:50)
  1.2.3 Configure - 적용 
  1.2.4 재부팅해도 적용이 유지
   
2. 화면보호기 끄기
 2.1 터미널에서 sudo apt-get install xscreensaver (05:38)
 2.2 시작버튼 - 기본설정 - 화면보호기 (06:23)
 2.3 disable (06:50)
 
3. wifi 절전모드 해제(07:37)
 3.1 iwconfig 입력해서 power management: off인지 확인
 3.2 sudo nano /etc/rc.local 
 3.3 exit 0 바로 윗줄에 /sbin/iwconfig wlan0 power off 추가
 3.4 sudo reboot으로 재부팅
 3.5 iwconfig 입력해서 power management: off인지 확인

 

#3 한글설정 / 지역별 날씨 설정

1. 한글 설정
 1.1 터미널에서 geany MagicMirror/config/config.js (02:04)
 1.2 화면 바로 중간의 "en"을 "ko"로 바꿈 (02:46)
 1.3 cd ~, cd MagicMirror, npm start를 입력하여 잘 나오나 확인(확인 후 cd .. 필수) (03:10)

2. 날씨
 2.1 https://openweathermap.org/ 에 가입 (03:52)
 2.2 로그인 후 계정 - My API Keys 에서 API Key를 복사 (05:29)
 2.3 https://drive.google.com/file/d/1k5VJ... 를 다운받아 지역 검색 (05:48)
 2.4 터미널에서 geany MagicMirror/config/config.js (07:04)
 2.5 중간쯤 Current weather에 지역 ID(숫자)와 appid(API KEY) 입력 (08:02)
 2.6 config 윗줄에 header: "현재 날씨", 추가
 2.7 바로 아래 weatherforecast에 지역 ID(숫자)와 appid(API KEY) 입력
 2.8 header를 header: "날씨 예보", 로 수정
 2.9 cd ~, cd MagicMirror, npm start를 입력하여 잘 나오나 확인(확인 후 cd .. 필수) (10:34)
 2.10 잘 안될때 geany MagicMirror/config/config.js 의 module 부분부터 (11:32)
modules: [
 {
  module: "alert",
 },
 {
  module: "updatenotification",
  position: "top_bar"
 },
 {
  module: "clock",
  position: "top_left"
 },
 {
  module: "calendar",
  header: "US Holidays",
  position: "top_left",
  config: {
   calendars: [
    {
     symbol: "calendar-check",
     url: "webcal://www.calendarlabs.com/ical-calendar/ics/76/US_Holidays.ics"     }
   ]
  }
 },
 {
  module: "compliments",
  position: "lower_third"
 },
 {
  module: "currentweather",
  position: "top_right",
  header: "현재 날씨",
  config: {
   location: "Seoul",
   locationID: "1835847", //ID from http://bulk.openweathermap.org/sample... unzip the gz file and find your city
   appid: "여러분의 API ID"
  }
 },
 {
  module: "weatherforecast",
  position: "top_right",
  header: "날씨 예보",
  config: {
   location: "Seoul",
   locationID: "1835847", //ID from http://bulk.openweathermap.org/sample... unzip the gz file and find your city
   appid: "여러분의 API ID"
  }
 },
 {
  module: "newsfeed",
  position: "bottom_bar",
  config: {
   feeds: [
    {
     title: "New York Times",
     url: "https://rss.nytimes.com/services/xml/..."
    }
   ],
   showSourceTitle: true,
   showPublishDate: true,
   broadcastNewsFeeds: true,
   broadcastNewsUpdates: true
  }
 },
]

 

#4 구글 캘린더 연동 / 뉴스 설정

1. 구글캘린더 연동
 1.1 크롬을 열어서 오른쪽 위 ::: 클릭 - 캘린더 선택 (00:51)
 1.2 왼쪽 내 캘린더 아래에 이름 오른쪽 : 클릭 후 설정 및 공유 선택 (01:10)
 1.3 맨 밑의 비공개 형식 주소 복사해서 기록해둠 (01:23)
 1.4 라즈베리파이 터미널에서 geany MagicMirror/config/config.js (02:24)
 1.5 calander 부분에서 header를 header: "나의 일정", 로 수정 (02:50)
 1.6 url에는 아까 복사해둔 달력주소를 붙여넣음 (03:07)

2. 뉴스 설정
 2.1 구글에서 '뉴스 RSS 주소 모음' 검색 후 원하는 뉴스의 RSS 주소 복사해둠 (05:28)
  2.1.1 구글뉴스 RSS 주소: "https://news.google.com/news/rss/?ned..."
 2.2 라즈베리파이 터미널에서 geany MagicMirror/config/config.js (06:06)
 2.3 module newfeed에서 title을 원하는 이름으로 해둠 (06:23)
 2.4 url은 아까 복사해둔 RSS주소를 붙여넣음

 

#5 미세먼지 모듈 설치/설정

1. 미세먼지 모듈 설치
 1.1 터미널에서 cd ~/MagicMirror/modules
 1.2 git clone https://github.com/CFenner/MMM-AirQuality
        
2. 미세먼지 모듈 배치
 2.1 https://aqicn.org/search 에 방문해서 도시이름 검색
 2.2 주소 중 city/ 뒷부분을 복사해둠
 2.3 cd MMM-AirQuality
 2.4 npm install
 2.5 터미널에서 geany MagicMirror/config/config.js
 2.6 하단에서 첫번째 윗줄에 커서를 대고
{
 module: 'MMM-AirQuality',
 position: 'top_left',
 config: {
  location: 'seoul',
  lang: "kr"
 }
},
 를 복사해서 붙임

 

#6 모듈 위치변경/삭제, 원하는 주제로 뉴스RSS 주소 만들기

1. 모듈 위치 바꾸기 (01:06)
 1.1 터미널에서 geany MagicMirror/config/config.js
 1.2 module: "모듈이름" 바로 아랫줄의 position: "위치"를 바꿈
 1.3 바꿀 위치는 https://drive.google.com/file/d/1GFVL... 을 참조
2. 모듈 삭제하기 (03:43)
 2.1 터미널에서 geany MagicMirror/config/config.js
 2.2 삭제할 모듈을 드래그하여 삭제, 또는 주석처리

3. 나만의 뉴스 RSS 주소 만들기 (05:59)
 3.1 https://www.google.co.kr/alerts (구글에서 구글알리미 검색)으로 접속
 3.2 검색창에 원하는 검색어 입력 후 옵션 더보기
 3.3 수신 위치를 RSS 피드로 설정
 3.4 부채모양 오른클릭 - 링크 복사
 3.5 터미널에서 geany MagicMirror/config/config.js (07:18)
 3.6 newsfeed 의 title, url 추가
 3.7 여러개를 쓰고싶으면 {} 로 구분

 

 

#7 마이크/스피커 연결 및 설정

1. (02:00) 이 과정은 복사/붙여넣기를 해야 편하므로 ssh로 원격연결하여 하는 것이 편함. 라즈베리파이에 모니터를 직접 연결하여 터미널에서 작업해도 상관없음
2. (02:28) 현재 xrdp 원격 터미널에서 ifconfig 입력하여 내부아이피(192.168.xxx)를 기록해둠
3. (03:03) 시작메뉴 - 기본설정 - raspberrypi configuration 선택
4. (03:13) interfaces - ssh 활성화 후 끔
5. (03:41) 윈도우로 돌아와서 putty 다운로드 후 설치
6. (04:27) putty를 실행해서 라즈베리파이 내부아이피를 입력하여 ssh 접속
7. (06:49) aplay -l 로 스피커의 카드번호, 디바이스 번호 적어둠 (카드 3, 디바이스 0)
8. (07:48) arecord -l 로 마이크의 카드번호, 디바이스 번호 적어둠 (카드 3, 디바이스 0)
9. (08:57) sudo nano .asoundrc 를 입력. 빈화면이 나오면 정상
10.1 (09:22) USB 마이크 + 3.5mm 스피커의 경우
pcm.!default{ 
 type asym 
 playback.pcm{ 
  type hw 
  card 0
  } 
 capture.pcm{ 
  type plug 
  slave.pcm "hw:1, 0" 
  } 
 }
ctl.!default{ 
 type hw 
 card 0 
} 
를 입력, 이때 hw:1, 0 부분을 마이크의 카드번호와 디바이스번호로 수정 후 저장
10.2 (10:26) USB 마이크 + 스피커 동시연결인 경우
pcm.!default {
    type asym
    capture.pcm "mic"
    playback.pcm "speaker"
}
pcm.mic {
    type plug
    slave {
        pcm "hw:1,0"
    }
}
pcm.speaker {
    type plug
    slave {
        pcm "hw:1,0"
    }
} 
를 입력, 이때 hw:1, 0 부분을 mic(마이크), speaker(스피커)의 카드번호, 디바이스번호로 수정 후 저장
11. (11:16) speaker-test -t wav 를 입력하여 스피커가 잘 나오는지 확인
12. (11:50) arecord --format=S16_LE --duration=5 --rate=16000 --file-type=raw test.raw 를 입력하고 5초간 마이크에 대고 소리를 냄
13. (12:14) aplay --format=S16_LE --rate=16000 test.raw 를 입력하여 녹음된 소리가 잘 나오는지 확인
14. (12:34) 소리가 작거나 크다면 alsamixer로 조절

 

#8.5 구글 어시스턴트 모듈 업데이트/알림 끄기

 

1. (01:17) ssh에서 작업
  1.1 (01:30) cd ~/MagicMirror/modules
  1.2 (01:40 git clone https://github.com/bugsounet/MMM-GoogleAssistant
  1.3 (02:08) cd MMM-GoogleAssistant
  1.4 (02:16) npm install
  1.5 뭔가 물으면 y를 눌러줌
  1.6 (03:02) 스피커, 마이크를 테스트할때, 마이크의 plughw 번호는 꼭 기록해둬야 함
2. (04:34) 윈도우에서 작업
  2.1 (04:38) https://console.actions.google.com/ 에 접속
  2.2 (05:08) new project 선택
  2.3 (05:56) 맨 하단 Device registration 선택
  2.4 (06:18) 내용 입력 후, type은 스피커로 선택
  2.5 (06:48) OAuth 2.0 credentials 파일을 다운받아 라즈베리파이에 복사(xrdp 혹은 USB 메모리 이용)
  2.6 (07:42) 파일을 MMM-GoogleAssistant 폴더에 옮겨주고 이름을 credentials.json 으로 바꿔줌
  2.7 (08:38) 다음단계는 skip을 눌러줌
  2.8 (08:46) https://console.cloud.google.com/ 에 접속
  2.9 (09:12)프로젝트 검색에 프로젝트 이름을 넣어서 찾아 선택
  2.10 (09:31) 좌측 탐색메뉴 - API 및 서비스 - 라이브러리
  2.11 (09:40) google assistant API 검색 - 사용
  2.12 (10:04) 좌측 사용자 인증 정보 - 동의 화면 구성
  2.13 (10:15) 외부 - 만들기
  2.14 (10:25) 중, 하단 지원 email과 개발자 연락처 정보에 email 적고 저장 후 계속
  2.15 (10:45) 저장 - 저장 - 저장 눌러서 대시보드로 돌아가기
  2.16 (10:56) 대시보드에서 테스트 사용자 +ADD USERS 누름
  2.17 (11:03) 사용중인 email 등록 후 저장
3. (11:21) xrdp 에서 작업
  3.1 (11:27) 터미널에서 cd MagicMirror/modules/MMM-GoogleAssistant 
  3.2 (11:48) node auth_and_test.js 입력
  3.3 (12:01) 인터넷 창이 뜨면 로그인해줌
  3.4 (12:22)계속 - 허용 - 허용 눌러줌
  3.5 (12:37) 코드를 복사해서 Ctrl + Shift + v 로 붙여줌
  3.6 (12:51) 아무 말이나 써줌 대답이 오면 성공!
  3.7 (13:15) cd ~ 로 홈폴더로 이동
  3.8 (13:19) geany MagicMirror/config/config.js
  3.9 (13:47) 모듈리스트 맨 하단에
{
		  module: "MMM-GoogleAssistant",
		  position: "fullscreen_above",
		  config: {
			assistantConfig: {
			  lang: "ko-KR",
			  latitude: 37.33,
			  longitude: 126.59,
			},
			micConfig: { // put there configuration generated by auto-installer
			  recorder: "arecord",
			  device: "plughw:3",  // 아까 기록해둔 plughw 번호로 수정
			},

			 snowboy: {
			  audioGain: 2.0,
			  Frontend: true,
			  Model: "jarvis",
			  Sensitivity: null
			},
		  }
		},
붙여줌

이제 구글 어시스턴트 토큰을 생성해 줘야 한다.

cd ~/MagicMirror/modules/MMM-GoogleAssistant

npm run tokens

하면 코드를 입력하기를 기다리는 상태가 된다. 웹브라우저가 자동으로 열리면서 인증과정을 거친다.

그런데 인오류가 난다.

다시 구글 클라우드 플랫폼으로 가보자,

 

앱게시 버튼을 누르자. 공개를 해야 동작이 되도록 한 모양이다. 이게 싫으면 아래 테스트 사용자를 추가해서 테스트 버전으로 사용도 가능한듯 하다. 다시 토큰 생성을 시도해 본다.

이젠 된다.

 

 

두번의 권한 승인에 허용으로 해주면 마지막에 코드가 출력된다. 이값을 복사해서 터미널에 코드 넣어 라고 기다리는 곳에 붙여 넣기 해주면 된다.

새로 추가된 기능 같은데 기타 유튜브나 구글 포토에 관한 토큰을 생성할지 물어 온다. 필요하면 하고 아니면 n 하면 된다. 이렇게 하면 모든 설치가 완료 된다.

 

(추가3)

Wake word 나 콜사인/Call sign 을 구글어시스턴트나 알렉사에서

"자비스" 나 "Ok, Google" 등으로 설정하기 위해

최신 MagicMirror 모듈에서 MMM-Detector를 사용하는 것으로 변경되었습니다.

하기 링크 참고하세요.

:=> http://wiki.bugsounet.fr/en/MMM-Detector

:=> https://github.com/bugsounet/MMM-Detector

 

#9 인체감지센서 연동

1. (01:22) 인체감지센서 연결
 1.1 인체감지센서는 HC-SR501 사용(2,000원)
 1.2 센서의 감도조절 나사는 모두 최소한도로 시작 후 변경 권장
 1.3 인체감지센서의 5V는 라즈베리파이의 위쪽 왼쪽 1번째, GND는 아래쪽 왼쪽에서 5번째 
 1.4 인체감지센서의 OUT은 라즈베리파이의 아래쪽 왼쪽에서 8번째에 연결
2. (05:16) 인체감지센서 모듈 설치
 2.1 (05:21) 터미널에서 cd MagicMirror/modules
 2.2 (05:33) git clone https://github.com/paviro/MMM-PIR-Sen...
    ★ 2.2번은 본문에서 바로 복사하면 이상하게 복사되니 메모장에 한번 복사 후 다시 복사해주세요
       ★ 텍스트파일로 보시는 경우에는 그냥 복사하셔도 됩니다
    2.3 (05:40) cd MMM-PIR-Sensor
 2.4 (05:49) npm install
 2.5 (06:00) sudo usermod -a -G gpio pi
 2.6 (06:06) sudo chmod u+s /opt/vc/bin/tvservice && sudo chmod u+s /bin/chvt
 2.7 (06:18) sudo reboot 으로 재부팅
 2.8 (06:26) geany MagicMirror/config/config.js
 2.9 (06:41) 모듈리스트에 다음을 추가
{
 module: 'MMM-PIR-Sensor', 
 position: "top_center", // 빨간점이 보기 싫으시면 이줄을 지워주세요
 config: {
  sensorPin: 22,
  powerSavingDelay: 60, // 60초간 움직임이 없으면 화면이 꺼집니다
  preventHDMITimeout: 4, // 4분마다 모니터를 한번씩 켜서 절전모드를 방지합니다
 }
}

 

#10 구글포토 연동으로 전자액자 만들기

1. 프로젝트 생성
	1.1 (02:07) https://console.actions.google.com/ 에 접속
	1.2 (02:16) new project 선택
	1.3 (02:47) 맨 하단 Device registration 선택
	1.4 (02:55) 내용 입력 후, type은 scene으로 선택
	1.5 (03:19) OAuth 2.0 credentials 파일을 다운받아 라즈베리파이에 복사(xrdp 혹은 USB 메모리 이용)
	1.6 (03:53) 다음단계는 skip을 눌러줌
	1.7 (03:58) https://console.cloud.google.com/ 에 접속
	1.8 (04:09) 프로젝트 검색에 프로젝트 이름을 넣어서 찾아 선택
	1.9 (04:27) 좌측 탐색메뉴 - API 및 서비스 - 라이브러리
	1.10 (04:34) photos library API 검색 - 사용
	1.11 (04:50) 좌측 사용자 인증 정보 - 동의 화면 구성
	1.12 (05:06) 외부 - 만들기
	1.13 (05:11) 하단 중단 지원 email과 개발자 연락처 정보에 email 적고 저장 후 계속
	1.14 (05:30) 저장 - 저장 - 저장 눌러서 대시보드로 돌아가기
	1.15 (05:41) 대시보드에서 테스트 사용자 +ADD USERS 누름
	1.16 사용중인 email 등록 후 저장
2. 전자액자 모듈 설치
	2.1 (06:14) 터미널에서 cd MagicMirror/modules
	2.2 (06:21) git clone https://github.com/eouia/MMM-GooglePhotos.git
	2.3 (06:31) cd MMM-GooglePhotos
	2.4 (06:40) npm install
	2.5 (06:54) 다운받은 파일을 MMM-GooglePhotos 폴더에 옮겨주고 이름을 credentials.json 으로 바꿔줌
	2.6 (08:30) cd ~/MagicMirror/modules/MMM-GooglePhotos
	2.7 (08:39) node generate_token.js
	2.8 (08:49) 인터넷 창이 뜨면 로그인해줌
	2.9 (08:58) 계속 - 허용 - 허용 눌러줌
	2.10 (09:13) 코드를 복사해서 Ctrl + Shift + v 로 붙여줌
	2.11 (09:32) geany MagicMirror/config/config.js
	2.12 (09:37) 모듈리스트에
{
  module: "MMM-GooglePhotos",
  position: "fullscreen_below",
  config: {
		albums: ["다람쥐"], // 앨범이름을 정확히 써주세요. 예시: ["My wedding", "family share", "Travle to Paris"]
		updateInterval: 20, // 사진 바꿔주는 시간(최소 10초)
		sort: "random", // "old", "random" 보여주는 순서
		uploadAlbum: null, // Only album created by `create_uploadable_album.js`.
		condition: {
			fromDate: null, // Or "2018-03", RFC ... format available
			toDate: null, // Or "2019-12-25",
			minWidth: null, // Or 400
			maxWidth: null, // Or 8000
			minHeight: null, // Or 400
			maxHeight: null, // Or 8000
			minWHRatio: null,
			maxWHRatio: null,
			// WHRatio = Width/Height ratio ( ==1 : Squared Photo,   < 1 : Portraited Photo, > 1 : Landscaped Photo)
		},
		showWidth: 1080, // These values will be used for quality of downloaded photos to show. real size to show in your MagicMirror region is recommended.
		showHeight: 1920,
		timeFormat: "YYYY/MM/DD HH:mm", // Or `relative` can be used.
  }
},
	2.13 (12:49) cd MagicMirror/css
	2.14 (12:57) geany custom.css
	2.15 (13:11) 다음을 추가
/*
우측 하단 사진정보를 없애려면 바로 아래 주석 해제
*/
/*
#GPHOTO_INFO {
	display:none;
}
*/
/*
배경을 검게하려면 바로 아래 주석 해제
*/
/*
#GPHOTO_BACK {		
	display:none;
}
*/
/*
시계를 잘보이게 하려면 바로 아래 주석 해제
*/
/*
.clock {			
  padding: 10px;
	background-color: rgba(0, 0, 0, 0.5);
}
*/

 

#11 하프미러 만들기

하프미러(원웨이미러, 매직미러)는 뒷면이 밝으면 뒷면의 모습을 보여주고, 뒷면이 어두우면 거울처럼보이는 것으로 다양한 곳에 많이 활용되고 있습니다.

 

#12(完) 최종 조립하기/후기

요번편에선 액자틀에 라즈베리파이와 스크린을 조립해보는 방법을 배워보겠습니다.

 

(추가1)

총12강의 강좌인데 중요한 명령어 부분만 따로 복붙해 보았습니다.

매번 강의를 보면서 확인하기가 불편해서 따로 박제헤 놓습니당~

 

 

(추가2)

하기 링크도 매직미러에 구글 Assistant SDK를 적용하고

Wake word를 설정하기 위해 MMM-Detector를 설정하기에 유용한 링크입니다.

:=> https://blog.naver.com/cosmosjs/222394379523

 

(추가3)

구글 어시스턴트 모듈의 업데이트 알람 끄기 관련 링크를 공유합니다.

구글 어시스턴트 모듈 업데이트 방법과 화면을 가리는 알림을 삭제하는 방법을 긴급하게 만들어 업로드 합니다^^

1. 모듈 업데이트 방법 (00:59)
 1.1 cd MagicMirror
 1.2 cd modules
 1.3 업데이트할 모듈 폴더에 들어감(cd 폴더이름)
 1.4 여기선 cd MMM-GoogleAssistant
 1.5 git pull
2. 구글 어시스턴트 모듈 알림 끄기 (03:01)
 2.1 cd ~
 2.2 geany MagicMirror/config/config.js
 2.3 snowboy 다음 문단에 내용 추가
 NPMCheck: {
      useChecker: false,
      delay: 10 * 60 * 1000,
      useAlert: false
    },

위 내용 관련 영상은 하기와 같습니다.

:=> https://www.youtube.com/watch?v=eDers-rKS6A 

 

 

(광고1)

주식과 증권 커뮤니티 최신 동향을 한번에 모아서 볼 수 있는 앱이 있습니다.

'주식통' 이라는 앱인데 하기에서 다운로드 가능합니다.

https://play.google.com/store/apps/details?id=com.opensupport.StockTong 

 

(광고2)

이젠 여기저기 있는 중고거래앱들을 번거롭게 일일이 찾아드릴 필요가 없이

중고장터거래 앱들의 원하는 아이템을 한번에 검색해 볼 수있는 앱이 있습니다. 

다운로드는하기에서 가능합니다.

https://play.google.com/store/apps/details?id=com.opensupport.UsedSearch 

 

 

 

그럼,

    공유합니다.