Skip to main content

3 posts tagged with "raspberry-pi"

View All Tags

· 4 min read

Raspberry pi로 뭘 해볼까 하다가 요즘 진행중인 프로젝트도 있고 해서 CCTV로 활용해보기로 했다.

어차피 카메라 모듈은 있고 기본 제공되는 툴로 스틸사진은 찍어본 적이 있으니 가볍게 접근할 수 있을거라 생각했다.

1. Motion 사용

검색을 해보니 motion이라는 툴을 CCTV로 활용할 때 많이 사용하는 것 같았다.

MJPEG으로 스트리밍 비슷하게 해주고 별도의 클라이언트 없이 브라우저로 가볍게 영상확인도 가능한 것 같아서 선택.

OS로 데비안 계열의 Raspbian을 사용하고 있으므로 apt-get으로 간단하게 설치할 수 있고 /etc/motion/motion.conf 파일에서 각종 설정을 변경할 수 있다.

원격으로 영상 확인과 설정을 제어하기 위해 webcam_localhost와 control_localhost를 변경하고 restart를 했는데 (default로 localhost에서만 접근 가능하도록 설정되어 있음) 영상이 나오질 않았다.

이상해서 시스템 로그를 확인해보니

fail_to_open_video_devicedevice를 열 수 없다고 한다.

예전에 카메라 모듈 장착하고 raspi-config에서 enable 설정도 해줬는데 실제 /dev에 보니 video0이 없었고 motion의 설정 파일은 video capture를 위해 default로 /dev/video0를 읽도록 되어있었다.

2. modprobe

로딩되어 있는 모듈들을 살펴보기로 했다.

lsmod그림처럼 이런저런 모듈들은 보이지만 video 관련된건 없다.

그래서 문서를 좀 찾아보니 camera는 v4l2 driver를 사용하도록 되어있고 (https://www.raspberrypi.org/documentation/hardware/camera.md) 사용중인 raspberry pi가 broadcom의 bcm2835 chip이 박혀 있어서 bcm2835-v4l2라는 모듈을 raspbian에 넣어둔 것으로 보인다.

modprobe 명령으로 bcm2835-v4l2를 로딩하고 나서 확인해보면 아래 그림처럼 video 관련 모듈이 뜬다.

lsmod_after_modprobe모듈을 로드한 후 motion을 restart 하니 문제없이 영상을 확인할 수 있었는데 modprobe는 일시적으로 모듈을 올려주는 것이기 때문에 boot 이후에 항상 사용하기 원한다면 /etc/modules 파일에 모듈 이름을 추가해야 한다.

3. LED off

Video가 정상으로 나오는건 확인했는데 카메라 모듈에 달려있는 적색 LED가 항상 켜져있는게 마음에 걸렸다.

상당히 밝아서 눈에 거슬리고 작지만 쓸데없이 파워를 소모하긴 싫으니 꺼보기로 했다.

관련 문서가 있을 것 같아서 찾아보니 역시...

https://www.raspberrypi.org/documentation/configuration/config-txt.md

문서에 의하면 Raspberry PI는 BIOS 대신 /boot/config.txt 파일에서 각종 설정을 변경할 수 있도록 해뒀다고 한다.

/boot/config.txt에 disable_camera_led = 1 을 추가해주고 reboot 하면 카메라는 동작중이지만 LED는 켜지지 않는 걸 확인할 수 있다.

4. 결론

결국 해놓고 보니 뚝뚝 끊어지긴 하지만 훌륭한 퀄리티를 원했던 것은 아니니까 그냥 넘기기로 했음

(framerate 조절해도 별 차이 없었음)

· 3 min read

Raspberry pi를 가지고 놀다보니 불편한 점이 하나 있었다. 작아서 휴대성이 좋기는 한데 새로운 환경에서 전원을 켰을 때 접속 정보를 알기 위해서 번거로운 작업을 해야 한다는 것이다. HDMI 케이블, USB 혹은 무선 키보드/마우스를 들고 가서 다 연결한 후에야 사용 가능한데 주변기기들이 훨씬 크기 때문에 여간 불편한게 아니다. 특히 나의 경우엔 ssh로 붙어서 작업하는 빈도가 높고 연결된 모니터를 직접 보며 작업하는 일은 거의 없기 때문에 위의 과정이 좀 무의미했다.

그래서 인터넷 연결이 되면 IP 정보만 telegram으로 전달하는 모듈을 만들어보기로 했다.

1. Github

https://github.com/blurblah/tell_me_your_ip

위 저장소에 올려두고 대략적인 설명을 써넣었으니 참조.

2. Telegram bot의 제약사항

예전에 telegram bot을 만들어봤을 때 한가지 제약 혹은 유의할 점을 하나 알았는데 하나의 token을 가진 bot은 한 곳에서만 동작해야 한다는 점이다. 두 군데 이상 동작하려고 하면 하나는 오류를 뱉고 실행되지 않는다. 위 저장소에 있는 소스는 device에서 직접 동작하게 되어있기 때문에 telegram bot을 직접 생성해서 token을 넣게 되어있다. 여러개의 device를 대상으로 활용하기 위해서는 방식을 변경해야 할 것 같다. 특정 서버 한 곳에서 bot이 동작하게 하고 device를 등록한 후에 관리되게 만들어야 할 것 같은데 나중에 필요성이 생기면 작업해봐야겠다.

3. 동작 결과

Raspberry pi를 새로운 곳에서 LAN 케이블을 연결하고 전원을 올리면 곧 아래와 같은 메세지가 telegram으로 전달된다. 모든 network interface의 정보를 다 뿌리게 되어있는데 필요한 정보만 선별해서 다듬은 후에 전송할 필요가 있어보인다.

telegram

· 4 min read

부모님용으로 무작정 구매했다.

SD 카드도 필요해서 마트에 가서 Sandisk 8GB짜리 하나도 집었다. 할인해서 7000원대.

Class도 적혀있지 않고 bulk인 것처럼 생겼는데 그냥 써볼거라 문제되지 않을거라 생각했었다. 하지만 어떤 것들은 사용할 수 없는 것 같기도 하다. (SD Card compatibility list)

1. Raspbian 준비

공식 페이지에서 Raspbian (데비안 계열 raspberry pi용 linux os) 이미지를 다운로드 받은 후 (엄청 느림, http://www.raspberrypi.org/downloads) dd command로 부팅 가능한 SD card를 만들었다. Guide에는 좀 헷갈리게 되어있는데 /dev/disk_n_s_n_ 형태가 아닌 /dev/disk_n_ 경로를 사용해야 한다.

2. 기타 장치 준비 (PS/2 문제)

Display는 HDMI로만 연결 가능하다. 무선 인터넷은 나중에 설정하면 가능한 것 같기도 한데 Model B의 경우 우선은 유선으로만 가능하다. 키보드와 마우스를 연결해야 하는데, Model B는 USB Port가 2개 뿐이고 PS/2 port는 보이지 않는다. 아쉬운대로 PS/2 to USB 젠더를 이용해서 전원을 연결해봤다. (Raspberry pi는 USB 전원을 연결하자마자 부팅된다. 별도 전원버튼 없음)

boot_log

사진처럼 여느 리눅스처럼 부팅로그가 나타나고 설정 화면으로 이동하는데 로그상으로만 보면 문제점은 없었으나 키보드를 인식하지 못했다. 자료를 찾아보니 PS/2 type 키보드나 마우스의 경우 소모전력 문제로 Raspberry pi에서는 인식이 잘 안되는 것 같다. 특정 젠더나 별도 전원이 있는 hub 같은 걸 사용하면 되는 경우도 있는 것으로 보이나 내가 사용한 젠더로는 인식 불가.

USB용 키보드도 가격이 꽤 나가고 USB port 수도 제한적이라 USB용 RF를 사용하는 키보드/마우스 콤보를 구매했다. (핫트랙스에서 17,900원) 바로 사용가능했음.

3. 인터넷

부팅 / 설정을 끝내고 X window를 띄웠다.

xwindow

X window에 포함된 기본 브라우저 중 하나인 Midori를 실행해서 이메일 확인 및 몇가지 검색을 해봤는데 좀 답답한 감은 있지만 사용못할 수준은 아니다. (SD Card를 class 높은 걸로 바꿔서 다시 해 볼 예정)

4. 기타

최초 부팅 후 설정을 마치지 않더라도 ssh 접속이 가능하다. 접속 계정 정보는 pi / raspberry 이며, sudoer로 등록되어 있는 것 같으니 root 계정을 꼭 사용할 필요는 없다. 또 키보드/마우스, 모니터가 없어도 ssh 접속 상태에서 기본 설정을 진행할 수 있다.