[방범 DIY] CCTV를 만들어보자 #2

Posted by 백창
2017. 5. 10. 13:37 리눅스/라즈베리파이
반응형

#1


졸업작품에서 라즈베리파이랑 파이캠을 분리했다 ㅎㅎ 안녕.. 내 졸작 ㅂㅇ


보낼건 빨리 보내고 

opencv를 설치해보자. 라고 이 글을 시작하려 했는데 단순한 촬영에만 쓰면 opencv설치는 필요가 없었다.(뻘짓 하루 했음)


#2


사진 촬영을 위한 스크립트를 작성하자.

얼굴을 인식하고 따라다니면서 촬영을 하고 지지고  볶고 할려면 opencv를 설치하자.

(cctv 장사해야만 쏟을수 있는 정성수준)


그게 아니라면 입맛대로 촬영 소스를 작성해보자.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash
# by bcy 20170421
 
# var
YYYYMM=$(date +%Y%m)
DD=$(date +%d)
HHMMSS=$(date +%H_%M_%S)
PATH='/mnt/samba/ftp/caps/'
FILE_DIR=${YYYYMM}
FILE_NAME=${YYYYMM}${DD}'_'${HHMMSS}'.png'
 
# makde dir every month
if [ ! -d ${PATH}${FILE_DIR} ]; then
        /bin/mkdir ${PATH}${FILE_DIR}
fi
 
# capture
# U can change this
/usr/bin/raspistill -o ${PATH}${FILE_DIR}'/'${FILE_NAME}
 
# logging
echo '['${YYYYMM}${DD}' '${HHMMSS}'] finished' >> log/${YYYYMM}_excute.log
 
cs


1.기본변수 설정 (파일명, 파일위치 등)

2.년월별 폴더 확인 및 생성

3.raspistill 명령어를 활용해 사진 촬영 및 저장

4.로그 저장


#3


벌써 끝났네.

동영상 촬영도 똑같다.

위와 같은 소스로 촬영 부분 동작만 바꾸고, 바로 동영상을 재생해보려면 인코딩까지 동시에 진행하면 된다..

반응형

[방범 DIY] CCTV를 만들어보자 #1

Posted by 백창
2017. 5. 10. 13:21 리눅스/라즈베리파이
반응형

#1


자취생들에게는 많은 고민이 있다. 

혼자 살기 때문에 생기는 많은 고민들 중 하나를 덜어보도록 하자.

(cctv를 만들꺼라고 하니까 느그집에서 뭐 훔쳐갈게있냐고 다들 그러긴하더라.)


출근 후면 우리집은 빈집이 된다. 짧게는 10시간 길게는 12시간이상까지...

도둑이 들지 않았을까? 문 단속은 잘 했나? 에어컨같은걸 켜놓고 왔으면 어떡하지?

부동산 등이 연락도 없이 집에 방문하지는 않을까?


혼자사는 사람들이 많아져서 이런 고민들이 늘어서 그런가? 필요한게 딱 홈 IoT네..


#2


어떤 구성으로 할까..


  • 라즈베리파이
  • 파이캠
  • 저장소
  • 도어센서


당장 생각나는 준비물은 이정도다.


만들고자 하는건 cctv라기보다는 필요한 시점에 필요한 만큼만 촬영하겠다는게 1차 목표이다.


대략적인 시나리오는


------------------------------------------------------------------------------------------------------------

[기본설정]

  1. 방해금지 시간대 설정
  2. 촬영시간 설정 


[시나리오]

문열림 감지  방해금지 시간대 여부 확인  동영상촬영시작or사진촬영  저장소에 저장

------------------------------------------------------------------------------------------------------------


시나리오를 적고 나니까 졸업과제랑 시나리오가 일맥상통하네 ㅎㅎ..

생각의 발전이 없군..


요즘 도둑들은 지능적이어서 cctv같은게 설치되있으면 컴퓨터 본체도 훔쳐간다더라, 잘숨기던가.. 클라우드로 올리는걸 추천한다.


#3


그럼 준비물을 구하고 다음 글로 갑시다..


반응형

GPIO 및 웹 서버를 이용하여 라즈베리파이 제어

Posted by 백창
2015. 11. 14. 10:07 리눅스/라즈베리파이
반응형

# 개요


 GPIO와 웹서버를 통하여 라즈베리파이를 제어하자.


 본 포스팅의 내용대로 수행 시 서버 보안의 큰 문제가 생길 수 있기 때문에 테스트 서버에서 혼자서만 사용하도록 하자.



# 설정


 php에서 wiringPi소스를 실행하기 위해 (wiringPi 소스는 root 권한으로 실행해야 한다)


 /etc/sudoers 파일에서 모든 파일 접근 시 권한 요구를 받지 않도록 설정해준다.


 www-data ALL = NOPASSWD: ALL





# 동작 설명


 웹 서버의 버튼을 클릭하면 Ajax통신을 통해 해당 버튼의 기능을 실행한다.


 각 버튼은 php의 쉘 명령어 실행 코드로 wiringPi 코드를 실행하도록 한다.




# Ajax 코드


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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 <script language="javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
        <script>
        $(document).ready(function(){
                $("#fw").mousedown(function(){
                        $.ajax({
                                type:'post'
                                ,url:'./fw.php'
                        });
                })
        });
 
        $(document).ready(function(){
                $("#bw").mousedown(function(){
                        $.ajax({
                                type:'post'
                                ,url:'./bw.php'
                        });
                })
        });
 
        $(document).ready(function(){
                $("#lw").mousedown(function(){
                        $.ajax({
                                type:'post'
                                ,url:'./lw.php'
                        });
                })
        });
 
        $(document).ready(function(){
                $("#rw").mousedown(function(){
                        $.ajax({
                                type:'post'
                                ,url:'./rw.php'
                        });
                })
        });
 
        $(document).ready(function(){
                $("#st").mousedown(function(){
                        $.ajax({
                                type:'post'
                                ,url:'./st.php'
                        });
                })
        });
       </script>
cs



# php 코드


1
2
3
4
5
<?
        $out = exec("sudo ./python/wiringPi/rc_test f");
        echo $out;
?>
 
cs


# C 코드


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
32
33
34
35
36
37
38
39
40
41
 
//left
void movLeft(){
        digitalWrite(M1_L,0);
        digitalWrite(M1_R,1);
        digitalWrite(M2_F,1);
        digitalWrite(M2_R,0);
}
 
//right
void movRigt(){
        digitalWrite(M1_L,1);
        digitalWrite(M1_R,0);
        digitalWrite(M2_F,0);
        digitalWrite(M2_R,1);
}
 
//stop
void movStop(){
        digitalWrite(M1_L,0);
        digitalWrite(M1_R,0);
        digitalWrite(M2_F,0);
        digitalWrite(M2_R,0);
}
 
//forw
void movForw(){
        digitalWrite(M1_L,0);
        digitalWrite(M1_R,1);
        digitalWrite(M2_F,0);
        digitalWrite(M2_R,1);
}
 
//back
void movBack(){
        digitalWrite(M1_L,1);
        digitalWrite(M1_R,0);
        digitalWrite(M2_F,1);
        digitalWrite(M2_R,0);
}
 
cs



# 실행





# 풀 코드


https://github.com/bcy3161/godHands


반응형

'리눅스 > 라즈베리파이' 카테고리의 다른 글

[방범 DIY] CCTV를 만들어보자 #2  (0) 2017.05.10
[방범 DIY] CCTV를 만들어보자 #1  (0) 2017.05.10
WiringPi 설치  (0) 2015.11.08
파이캠을 이용한 웹스트리밍 서버  (1) 2015.11.08
SSH 연결 구축  (0) 2015.09.24

WiringPi 설치

Posted by 백창
2015. 11. 8. 10:24 리눅스/라즈베리파이
반응형

# 개요


 GPIO를 컨트롤하기 위해 WiringPi를 설치하여 라즈베리파이를 제어해보자.



# 설치


 wiringPi를 다운받을 위치에서 github의 wiringPi소스를 다운받는다.


 git clone git://git.drogon.net/wiringPi


 wiringPi 폴더로 이동하여 설치를 진행한다.


 cd wiringPi

 ./build



# 확인


 다음 명령어를 통해 설치가 완료되었는지 확인할 수 있다.


 gpio -v


 readall 옵션을 통해 핀번호, 핀의 모드, GPIO이름 등 다양한 정보를 알 수 있다.


 gpio readall





# 컴파일


 소스 코드 작성 후 컴파일시 다음 명령어를 추가하여 컴파일한다.


 gcc -o 실행파일 소스파일 -lwiringPi






반응형

파이캠을 이용한 웹스트리밍 서버

Posted by 백창
2015. 11. 8. 10:20 리눅스/라즈베리파이
반응형

# 개요


 라즈베리파이에 사용되는 전용 카메라 파이캠(pi-cam)와 mjpg-streamer를 이용하여 손쉽고 빠르게 웹 스트리밍을 해보자.


# 파이캠 장착


 처음 파이캠을 들었을 때 어디에 꼽아야하는지 막막했다. 


 다음 사진과 같이 해당 부분을 눌러 파이캠의 연결선을 넣고 다시 닫아주도록 하자.





# mjpg-streamer 컴파일 및 설치


 mjpg-streamer를 설치하기에 앞서 영상관련 라이브러리와 컴파일에 필요한 cmake 패키지를를 설치하자


 sudo apt-get install git cmake libjpeg8-dev imagemagick -y


 mjpg-streamer 컴파일 시 필요한 헤더파일을 링크한다.


 sudo ln - s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h


 mjpg-streamer를 설치하고자 하는 폴더로 이동하여 다음 명령을 통해 mjpg-streamer를 다운 받는다. 


 해당 패키지는 오픈소스 프로젝트로 다양한 버전의 mjpg-streamer가 존재한다. 


 본 포스팅에서는 적절한 fps 조절을 위해 다음 프로젝트를 사용하였다. 

 (fps 20~25 일 때 거의 동영상으로 느낄 수 있다)


 git clone https://github.com/jacksonliam/mjpg-streamer


 다운받은 폴더로 이동하여 컴파일.. 꽤 오랜 시간이 걸린다


 make -clean all


# 실행


매번 명령어를 사용하여 실행하기 어렵기에 실행 스크립트를 작성하도록 하자.


export LD_LIBRARY_PATH=.

export mjpg_PATH=/home/pi/godHands/mjpg-test/mjpg-streamer/mjpg-streamer-experimental

$mjpg_PATH/mjpg_streamer -i "$mjpg_PATH/input_raspicam.so -x 640 -y 360 -fps 20" -o "$mjpg_PATH/output_http.so -w $mjpg_PATH/www"


해당 소스를 그대로 붙여넣기를 하면 "가 제대로 안들어갈수도 있다.


환경변수 mjpg_PATH에 mjpg streamer가 설치된 폴더를 지정하고 mjpg_streamer를 실행한다.






# 결과





# 참조


http://www.rasplay.org/?p=7174


https://github.com/jacksonliam/mjpg-streamer/blob/master/README.md


반응형

'리눅스 > 라즈베리파이' 카테고리의 다른 글

[방범 DIY] CCTV를 만들어보자 #1  (0) 2017.05.10
GPIO 및 웹 서버를 이용하여 라즈베리파이 제어  (5) 2015.11.14
WiringPi 설치  (0) 2015.11.08
SSH 연결 구축  (0) 2015.09.24
라즈비안 설치  (0) 2015.09.23

SSH 연결 구축

Posted by 백창
2015. 9. 24. 10:57 리눅스/라즈베리파이
반응형

# 개요


라즈베리파이를 SSH로 연결하기 위한 작업을 해보자


# 방법


먼저 라즈베리파이의 IP를 확인하자 


ifconfig 명령어를 사용하여 IP를 확인하고 공유기에서 같은 IP를 할당하도록 설정해준다.


그리고 공유기의 포트포워딩 메뉴에서 다음과 같이 설정해준다.




외부 포트에는 접속에 사용할 포트번호를 입력한다.


내부 IP에는 현재 라즈베리파이의 IP를, 내부 포트에는 SSH포트인 22를 설정해준다


이제는 라즈베리파이에 SSH를 열도록 하자


sudo raspi-config 


명령어를 입력하여 다음 메뉴에서 SSH를 Enable 상태로 바꾸자







# 테스트




공인 IP를 통해서 접속 요청을 한다





반응형

라즈비안 설치

Posted by 백창
2015. 9. 23. 15:23 리눅스/라즈베리파이
반응형

# 개요


라즈베리파이에서 사용되는 OS인 라즈비안을 설치해보자



# 설치법


먼저 아래 사이트에서 SD카드 포맷터를 다운받는다.



SD카드를 포맷하고, 라즈베리파이 홈페이지에서 운영체제를 다운받는다





다운로드를 받고 압축을 풀면 다음 파일들이 폴더안에 있을 것이다.




해당 파일들을 그대로 SD카드로 복사하면 된다.


이제 SD카드를 라즈베리파이에 꼽고 라즈베리파이를 켠다




최상단의 라즈비안을 누르고 설치를 누르면 라즈비안 설치가 끝난다.


반응형