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

Posted by 백창
2017.05.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.05.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


    • 2016.08.01 21:56
    비밀댓글입니다
  1. 정말 죄송한데....
    라즈베리파이에 이동후 실행을 하려고하는데 .sh 파일을 실행을 해야되나요??
    지식이 하나도 없어서...
    알려주시면 감사하겠습니다.
    • 제가올린소스 말하시는건가요?? 그건쓰기어려울꺼에요 구성이엉망이라서 뭘실행한다고 동작하는게아니라서 참고용으로쓰시고
      wiringPi라이브러리를 받으셔서 디지털신호로 모터제어하시면됩니다
  2. 궁금한게 mjpg stream 사용 하셔서 웹페이지로 보신거잖아요? 지금 웹구성을하고 싶은데 프레임 속도가 잘안나와서요 동영상에 너무 잘나오는것 같아서 여쭤 본것입니다. 카메라가 파이캠이 아닌가요??
    • 파이캠맞구 설정에보시면 프레임설정하고 크기설정같은게있어요 여건에 맞게 조절하시면 되구요
      저도 무선으로 할때는 약간딜레이가잇엇습니다
이 댓글을 비밀 댓글로

WiringPi 설치

Posted by 백창
2015.11.08 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






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

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

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

Posted by 백창
2015.11.08 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
파이캠을 이용한 웹스트리밍 서버  (0) 2015.11.08
SSH 연결 구축  (0) 2015.09.24
라즈비안 설치  (0) 2015.09.23
이 댓글을 비밀 댓글로

SSH 연결 구축

Posted by 백창
2015.09.24 10:57 리눅스/라즈베리파이

# 개요


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


# 방법


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


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


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




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


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


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


sudo raspi-config 


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







# 테스트




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





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

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

라즈비안 설치

Posted by 백창
2015.09.23 15:23 리눅스/라즈베리파이

# 개요


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



# 설치법


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



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





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




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


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




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


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

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

[jdk] 우분투에 java 설치

Posted by 백창
2015.02.05 11:39 리눅스/Ubuntu


 개요

 

 리눅스(우분투,ubuntu 기반)에 JDK, 즉 자바를 다운로드해서 깔아보자



 자바 다운로드 및 디렉토리 생성

 

먼저 자바를 다운로드 받도록 하자


http://www.oracle.com/technetwork/java/javase/downloads/index.html


다음 경로에서 리눅스 버전 tar.gz파일을 다운로드 받고


자바를 설치하고자 생성한 경로에 파일을 이동후 압축을 해제한다





 환경변수 및 기본 명령어 설정

 

/etc/profile 파일에서 자바 환경변수를 설정한다



/etc/profile 파일을 실행하여 다음과 같이 환경변수 설정을 해준다.



다음과같이 java를 기본 명령어로 등록한다


1
2
3
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.7.0_45/bin/java" 1;
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.7.0_45/bin/javac" 1;
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.7.0_45/bin/javaws" 1;
cs


1
2
3
sudo update-alternatives --set java /usr/local/java/jdk1.7.0_45/bin/java;
sudo update-alternatives --set javac /usr/local/java/jdk1.7.0_45/bin/javac;
sudo update-alternatives --set javaws /usr/local/java/jdk1.7.0_45/bin/javaws;
cs



변경사항을 반영한다



 결과확인

 


'리눅스 > Ubuntu' 카테고리의 다른 글

[jdk] 우분투에 java 설치  (0) 2015.02.05
[vim] 내장 스크립트 설정 (man page 사용)  (0) 2014.10.08
[xrdp] 우분투 GUI 원격제어 설정  (3) 2014.10.07
우분투 한영키  (0) 2014.10.04
우분투 설치 USB 만들기  (0) 2014.10.04
[phpMyAdmin] db관리  (0) 2014.09.03
Tags
이 댓글을 비밀 댓글로

[vim] 내장 스크립트 설정 (man page 사용)

Posted by 백창
2014.10.08 09:54 리눅스/Ubuntu


 개요

 

 vim에서 내장 스크립트를 설정하여 man 페이지를 사용해보자



 설정

 

 /etc/vim/vimrc 파일을 다음과 같이 수정한다.




 결과

 


알고 싶은 함수명 위에서 설정파일에 설정해준 명령어 ,ma를 입력하면 다음과같이 man 페이지를 통해 함수의 역할을 쉽게 알 수 있다.



위 설정이 제대로 되지 않으면 exe 명령을 아래와 같이 변경한다.


exe "!man -S ko:2:3:4:5:6:7:8 ".sm

'리눅스 > Ubuntu' 카테고리의 다른 글

[jdk] 우분투에 java 설치  (0) 2015.02.05
[vim] 내장 스크립트 설정 (man page 사용)  (0) 2014.10.08
[xrdp] 우분투 GUI 원격제어 설정  (3) 2014.10.07
우분투 한영키  (0) 2014.10.04
우분투 설치 USB 만들기  (0) 2014.10.04
[phpMyAdmin] db관리  (0) 2014.09.03
이 댓글을 비밀 댓글로

[xrdp] 우분투 GUI 원격제어 설정

Posted by 백창
2014.10.07 13:49 리눅스/Ubuntu


 개요

 

 윈도우에서 리눅스, 리눅스에서 리눅스 GUI 원격제어를 xrdp를 사용하여 해보자.



 설치

 




 원격 접속

 

실행 창에서 mstsc를 입력하여 윈도우의 원격제어 프로그램을 사용하여 리눅스에 접속한다.



실패.. 원인 불명의 이유로 다음화면에서 넘어가지 않았다.(xrdp gray screen error)





 문제해결

 

먼저 ubuntu 업그레이드를 하고 다음 프로그램을 설치한다



xsession 설정 파일을 다음 명령으로 생성한다음 xrdp 서비스를 재시작한다.



sudo service xrdp restart


 성공

 



'리눅스 > Ubuntu' 카테고리의 다른 글

[jdk] 우분투에 java 설치  (0) 2015.02.05
[vim] 내장 스크립트 설정 (man page 사용)  (0) 2014.10.08
[xrdp] 우분투 GUI 원격제어 설정  (3) 2014.10.07
우분투 한영키  (0) 2014.10.04
우분투 설치 USB 만들기  (0) 2014.10.04
[phpMyAdmin] db관리  (0) 2014.09.03
Tags
    • 원산지한국
    • 2014.12.06 22:37 신고
    안녕하세요.
    포스트를 보고 오류는 해결되었습니다. 고맙습니다^^
    그런데,
    xrdp를 종료하고 리눅스를 재부팅하니까 원래의 민트화면이 안나오고
    저화면대로 작게 나오는데 해결방법이 없나요?
    • 저는서버에 돌리는거라 한번도 안꺼봐서 어떤지 잘모르겠네요 ㅎ 시간날때 실험해볼게요
    • 원산지한국
    • 2014.12.07 11:09 신고
    http://windstop.tistory.com/42 아직 초보라 위의 내용대로 재설치했는데도 그대로네요 ㅎㅎ
    혹시 해결되시면 늦게라도 댓글남겨주세요.^^
이 댓글을 비밀 댓글로