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
이 댓글을 비밀 댓글로