본문 바로가기
Study/Raspberry Pi

라즈베리파이 얼굴인식될때 GPIO 제어하기

by Answer Choi 2015. 9. 15.
반응형

라즈베리파이에서 GPIO를 쉽게 쓸 수 해주는 라이브러리가 몇개가 있는데,


대표적인게 wiringPi입니다.


라즈베리파이2까지 지원합니다.^^


그런데 wiringPi를 camcv의 cmake로 컴파일 하기가 힘든거 같습니다.


더 자세히 말하면 컴파일은 되는데 실제 동작을 안하네요 ㅠㅠ


일단 CmakeList.txt에 추가한 내용은 아래와 같습니다.


CmakeList.txt

1
2
3
SET(CMAKE_CXX_FLAGS "-pthread -I/usr/local/include -L/usr/local/lib -lwiringPi")
include_directories(/usr/local/include/)
target_link_libraries(/usr/local/lib/libwiringPi.so /usr/local/lib/libwiringPiDev.so )
cs


그리고 실행 코드인 camcv_vid1.cpp에 헤더파일을 추가했습니다.

1
#include <wiringPi.h>
cs


그리고 메인코드에서 초기화코드

1
2
    pinMode(0, OUTPUT);    // output mode
    digitalWrite(00);    //output low
cs


마지막으로 인식되서 이름을 뿌려주는 곳에 출력

1
    digitalWrite(01);    //output high
cs


하지만 동작을 하지않아서 다시 시도한 방법은 쉘명령어를 바로 실행하는 방법입니다.


참고한 곳은 digipine.com 입니다.


system() 함수를 쓰게되면 쉘명령어를 쓸 수 있습니다.


초기화 부분


1
2
system("gpio mode 0 out");    //ans 
system("gpio write 0 0");    //ans
cs


여기서 GPIO 0을 output으로, low로 초기화 합니다.


인식 되면 GPIO 출력하는 곳

1
2
3
4
5
6
7
8
// display name of the guy on the picture
string box_text;
if (prediction<MAX_PEOPLE)
{
    box_text = "Id="+people[prediction];
    if (prediction == P_NATACHA)
        system("gpio write 0 1");    //ans
}
cs


인식이 되면 출력이 High로 출력됩니다.


인식이 안될 때 꺼지는 건 좀 더 봐야 할 것같습니다.


그리고 wiringPi 라이브러리를 추가해서 하는 것도 다시 시도해보고 성공하면 포스팅 하겠습니다.^^


참고로 gpio 쉘 명령어는 wiringpi.com 에서 참고하였으며,


제가 사용한 명령어는 아래의 명령어입니다.

1
2
3
gpio mode 0 out //gpio 0번을 출력으로 
gpio write 0 0  //gpio 0번을 low로 
gpio write 0 1  //gpio 0번을 high로
cs


그리고 시연 동영상입니다.



반응형

인기글