일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 대칭수
- lirc
- open weather map
- #Project Euler
- 라즈베리파이
- 소인수 구하기
- #c언어
- Radio
- PiFaceCAD
- 배수 더하기
- project euler
- palindrome
- 피보나치
- C언어
- #프로젝트 오일러
- mp3
- 최소공배수
- 프로젝트 오일러
- API
- #소수판별
- Raspberry Pi
- Today
- Total
ㅇㅅㅇ
Raspberry pi와 pi camera를 활용한 Time-lapse 비디오 만들기 본문
얼마전에 학교에서 돌아오는데 집앞에 있는 간이 체육시설? 에서 아이들이 놀고있는 것이 보였다.
예전에는 나도 거기서 하루종일 놀곤 했는데 요즘에도 아이들이 많이 찾아오는지 궁금해서 타임랩스 비디오를 만들어 확인해보기로 하였다.
물론 포스팅 제목처럼 라즈베리파이와 파이카메라를 활용할 예정이다.
1. 카메라 준비하기
필요한 준비물은 raspberry pi 와 pi camera이다.
pi camera는 정전기에 매우 민감한 제품이니 만지기 전엔 항상 몸에서 정전기를 제거한뒤 만져야 한다.
라즈베리파이와 몸값이 비슷하니 소중히 다뤄주자...
아래의 과정을 따라서 장착하자
카메라 장착이 끝났으면 이제 라즈베리파이가 카메라를 사용할 수 있도록 설정해주어야 한다.
$ sudo raspi-config
위의 명령어를 입력하면 아래와 같은 설정창이 나오는데 여기서
5 Interfacing Options → P1 Camera
순서로 들어가서 camera를 enable 시켜주면 카메라를 사용할 준비가 끝난다.
이제 준비도 끝났으니 테스트를 해볼 차례다. 일단 아래의 명령어를 친뒤 카메라를 보자
$ raspistill -t 2000 -o image.jpg
입력하고 나면 아래 사진과 같이 카메라에 빨간 불빛이 들어오고 2초정도 지난뒤 불빛이 꺼지는걸 확인할 수 있다.
이러고 나면 사진이 찍힌 것이다.
위의 명령어의 뜻을 살펴보면 이렇다
raspistill : 사진을 찍음
-t 2000 : 2초간 대기
-o image.jpg : image.jpg라는 이름으로 파일을 만듬
raspistill에는 굉장히 많은 옵션들이 있는데, 이건 구글 검색을 통해 알아보자.
2. 라즈베리 파이에 원격으로 접속할 수 있는 서버 만들기
사진이 찍히고 파일이 생기는 것까지는 확인 했지만 이 파일을 영상으로 만들고 작업을 하려면 윈도우로 가져와야 한다.
편리한 작업환경을 위해 라즈베리파이의 폴더를 공유할 수 있는 서버를 하나 만들자.
흔히들 samba와 ftp를 사용하는데, samba같은 경우에는 같은 공유기 안에서만 접속을 허용하기 때문에 가끔씩 불편할 때가 있다.
나는 어디서든 접속이 가능한 ftp서버를 사용하였다.
$ sudo apt-get update // apt-get 업데이트와 업그레이드
$ sudo apt-get upgrade
$ sudo apt-get install vsftpd // ftp서버 프로그램 설치
$ sudo nano /etc/vsftpd.conf // 에디터로 vsftpd 설정파일을 열어줌
설정 파일을 열었다면 이렇게 수정해주자.
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
대부분은 주석처리를 해제하는 것만으로 설정이 끝난다.
그 다음엔 아래 명령어를 친뒤 pi라고 입력하고 나와준다. ( 사용자 등록)
$ sudo nano /etc/vsftpd.chroot_list
이제 서버 등록은 끝났고 윈도우 탐색기에서 ftp://"파이 주소" 를 입력해 주면 아래와 같이 서로 폴더공유가 가능하다.
3. 주기적인 사진촬영을 위한 쉘 스크립트와 crontab 사용
먼저 사진을 촬영해주는 쉘 스크립트를 작성해 보자.
나는 ~/bin 에다가 camera.sh를 만들었다.
$ nano ~/bin/camera.sh
#! /bin/bash
DATE =$ (date +"%Y-%m-%d_%H%M%S")
raspistill -vf -hf -t 1000 -o /home/pi/camera/$DATE.jpg
$ chmod +x ~/bin/camera.sh
$ mkdir ~/camera
여기 까지 해준다음에 camera.sh를 실행했을 때 사진이 찍힌다면 성공한 것이다.
위의 쉘 스크립트에서 맨 아랫줄의 뜻은 각각
-vf : 수직으로 뒤집기
-hf : 수평으로 뒤집기
-t 1000 : 1초 후 촬영
-o ~ : 해당위치에 DATE.jpg라는 이름으로 파일저장 이때 저 DATE는 윗줄에서 "연-월-일_시분초" 이렇게 설정해두었기 때문에 사진 의 이름은 2017-04-08_141201 이런 식으로 저장이 되게된다.
쉘 스크립트 작성도 끝났다면 이번엔 crontab을 활용할 차례다.
crontab은 윈도우의 스케쥴러 같은 프로그램인데, 주기적으로 지정해둔 어떤 일을 시행한다.
$ sudo crontab -e
이렇게 명령어를 입력하고 엔터를 치면 이런 화면이 뜬다.
여기서 맨 아래로 내려가서
* * * * * /home/pi/bin/camera.sh 2>&1
라고 작성한뒤 저장하고 나와서 2~3분 정도 기다려보자
앞에서 만든 camera 폴더에 사진이 1분간격으로 찍혀있는 것을 확인 할 수 있을 것이다.
저 * 표시들은 각각
분 시간 한달 중 어떤날 월 일주일중 어떤 요일
을 가리킨다. 그 뒤의 문장은 /home/pi/bin 에있는 camera.sh를 실행하라는 뜻이다.
만약 1분마다 한번씩 실행하려면 저 상태로 두어도 되지만 좀더 명확하게
*/1 * * * * /home/pi/bin/camera.sh 2>&1
이렇게도 가능하다. 그럼 초단위 설정은 어떻게 해야할까?
sleep명령어를 활용하면 해결 가능하다.
*/1 * * * * /home/pi/bin/camera.sh 2>&1 & sleep 30; /home/pi/bin/camera.sh 2>&1 ;
위와같이 설정하면 30초에 한번씩 사진을 찍을 수 있다.
4. 사진찍고 영상으로 만들기
나 같은 경우에는 아파트의 놀이터에서 촬영을 진행했는데 아이들이 신기하다고 건드릴까봐 우리집 난간에다 매우 튼튼히 고정해두고 촬영을 진행하였다.
라즈베리파이의 지속적인 전원 공급도 매우 중요한데, 보조밧데리 같은게 있으면 이런 방법도 괜찮다.
이렇게 고정해서 난간에 잘 매달아 둔뒤 대략 7~8시간 가량 30초단위로 촬영을 진행하였다.
그렇게 촬영을 하고 나니 2.34GB의 사진들이 생성되어 있었다...
이 사진들을 윈도우로 이동시켜 준 뒤 윈도우 무비메이커를 이용하여 하나의 영상으로 만들어 주었다.
영상편집은 한번도 해본적 없지만 아무런 도움도 없이 그냥 혼자 만들었을 정도니 조작법은 매우 단순하다.
그렇게 해서 만들어진 영상을 보았는데 놀이터에 생각보다 아이들이 많아서 깜짝 놀랐다.
동네 맛집마냥 해지기 전까지 끈임없이 왔다 갔다하는걸 1분여 남짓한 시간에 확인할 수 있었다.
그렇게 보고있으니 옛날에 여기서 놀던 기억도 새록새록 나면서 나름 즐거운 시간을 보낼 수 있었다.
아래는 내가 제작한 time-lapse 동영상이다.
'프로그래밍 > 라즈베리파이' 카테고리의 다른 글
Raspberry Pi GPIO 활용하기 (파이썬, Python) (0) | 2017.04.16 |
---|---|
Raspberry Pi GPIO 활용하기 (쉘 스크립트) (0) | 2017.04.11 |
PiFaceCAD를 이용한 MP3와 라디오 만들기 - 2 (0) | 2017.04.02 |
PiFaceCAD를 이용한 MP3와 라디오 만들기 - 1 (0) | 2017.04.01 |
Openweathermap을 사용하여 7개 도시의 현재 날씨와 온도를 프린트하기 (0) | 2017.03.23 |