Study/Raspberry Pi
라즈베리파이 얼굴인식될때 GPIO 제어하기
Answer Choi
2015. 9. 15. 10:53
반응형
라즈베리파이에서 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(0, 0); //output low | cs |
마지막으로 인식되서 이름을 뿌려주는 곳에 출력
1 | digitalWrite(0, 1); //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 |
그리고 시연 동영상입니다.
반응형