posted by 심재형 2017. 11. 6. 04:38

라즈베리파이3는 동글 없이 WIFI와 Bluetooth 사용이 가능하다.

블루투스 키보드를 연결하는 과정에서 GDBus.Error.org.bluez.Error 연결문제가 생겨 

해결방법을 찾았다.

Microsoft universal keyboard를 연결하는 과정이다. 



1. 블루투스 키보드 전원을 킨다.


2.연결설정

$sudo blutoothctl

[NEW] Controller C6:CC:73:EF:50:1A raspberrypi3 [default]
[NEW] Device C6:CC:73:EF:50:1A universal keyboard
[bluetooth]# agent on
Agent registered
[bluetooth]# default-agent
Default agent request successful
[bluetooth]# pairable on
Changing pairable on succeeded
[bluetooth]# pair C6:CC:73:EF:50:1A
Attempting to pair with C6:CC:73:EF:50:1A
[CHG] Device C6:CC:73:EF:50:1A Connected: yes
[agent] PIN code: 278290


3.핀코드 입력 **여기서 헷갈릴 수 있다.

블루투스 키보드에 화면에 나온 PIN코드를 그대로 누른다.(278290)

**누른 숫자는 화면에 안뜬다.

그런 다음 Enter를 누르면 정말 Paring 할껀지 물어본다. 확인누르면 성공적으로 등록이 되면 연결을 시도한다.

[CHG] Device C6:CC:73:EF:50:1A Paired: yes
Pairing successful
[CHG] Device C6:CC:73:EF:50:1A Connected: no
[bluetooth]# connect C6:CC:73:EF:50:1A
Attempting to connect to C6:CC:73:EF:50:1A
[CHG] Device AA:AA:AA:FF:FF:FF Connected: yes
Connection successful
[bluetooth]# quit
Agent unregistered
[DEL] Controller C6:CC:73:EF:50:1A raspberrypi [default]


bluetoothctl를 종료하면 키보드 연결이 종료되지만, GUI에서 다시 쉽게 등록이 가능하다.

(와이파이 옆에 블루투스 이미지 누르면 연결할 Device가 뜬다.)


+페어링이 안될 경우 'pairable on'명령을 실행하거나 'trust on'명령을 실행한다.

pairable on : 블루투스장치를 페어링 가능하도록 설정

trust [MAC 주소] : 신뢰할 수 있는 장치로 설정


posted by 심재형 2017. 11. 6. 03:19

g++ file.cpp -o file -lwiringPi

posted by 심재형 2017. 11. 5. 18:35

라즈베리파이에서 C언어를 사용해 GPIO핀을 제어하는 프로그램을 만들때 wiringPi를 사용한다. 


1.Github통해 다운받기

1)git-core설치

$sudo apt-get install git-core


2)wiringPi 다운받기

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


2.build

github에서 clone 사용해 다운받으면 폴더 그대로 다운로드 되기 때문에 wiringPi디렉토리가 생긴다. 따라서 

$cd wiringPi

$./build


3.설치확인

$gpio -v 

입력하면 gpio version이 뜬다. 

posted by 심재형 2017. 11. 5. 10:32

라즈베리파이에는 전원을 제어하는 버튼이 없다. 그래서 강제로 전원을 분리하는데 microSD카드가 손상될 수 있기 때문에 안전하게 종료해야 한다.


#종료 명령어

sudo shutdown -h now 


#리부팅

sudo shutdown -r now


'now' 대신 시간을 넣을 수도 있다.

10:00' 을 넣으면 오후 10시에 종료되거나 리부팅

'+10' 을 넣으면 10분 후에 종료나 리부팅

posted by 심재형 2017. 11. 5. 02:58

1. OpenCV 이전 버전 제거

OpenCV 3.3.1 버전이 제대로 동작하기 위해 이전 버전을 제거해야한다.


이전 버전 확인: pkg-config --modversion opencv


$ pkg-config --modversion opencv
Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found



이렇게 보이면 OpenCV 2.4대 버전이 설치안되어 있는 상태


만일 이전 버전이 있는 경우, 다음과 같이 OpenCV 라이브러리 설정 파일을 포함해서 기존에 설치된 OpenCV 패키지를 삭제하고 진행해야 한다


$ sudo apt-get purge  libopencv* python-opencv

$ sudo apt-get autoremove

2. 패키지 업그레이드

OpenCV 3.3.1을 설치하기 전에 기존에 설치된 패키지들을 업그레이드 해주기 위한 작업이다. 오래 걸리더라도 하는 것이 좋다. Raspbian 저장소(repository)로부터 패키지 리스트를 업데이트한다. 기존에 설치된 패키지들의 새로운 버전이 저장소에 있다면 리스트를 업데이트 하기위해 실행한다. 기존에 설치된 패키지의 새로운 버전이 있으면 업그레이드한다. 업데이트 한 후, 업그레이드.


$ sudo apt-get update

$ sudo apt-get upgrade


3. OpenCV 컴파일 전 필요한 패키지 설치

OpenCV를 컴파일하는데 사용하는 것들이 포함된 패키지들을 설치해야 한다.

build-essential : C/C++ 컴파일러와 관련 라이브러리, make 같은 도구들이 포함된다.

cmake : 컴파일 옵션이나 빌드된 라이브러리에 포함시킬 OpenCV 모듈 설정등을 위해 필요하다.

pkg-config : 터미널에서 특정 라이브러리를 사용한 소스코드를 컴파일시 필요한 컴파일러 및 링커 플래그를 추가하는데 필요하다.

$ sudo apt-get install build-essential cmake

$ sudo apt-get install pkg-config

특정 포맷의 이미지나 비디오 파일을 읽고 기록하기 위해 필요한 패키지들도 설치한다.

$ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev

$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev

$ sudo apt-get install libxvidcore-dev libx264-dev libxine2-dev

$ sudo apt-get install libv4l-dev v4l-utils

$ sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

$ sudo apt-get install libqt4-dev


OpenGL 지원과 OpenCV최적화 위해 사용되는 라이브러리

$ sudo apt-get install mesa-utils libgl1-mesa-dri libqt4-opengl-dev

$ sudo apt-get install libatlas-base-dev gfortran libeigen3-dev


OpenCV-Python 바인딩하는 패키지들과 매트릭스를 빠르게 연산하는 Numpy

$ sudo apt-get install python2.7-dev python3-dev

$ sudo apt-get install python-numpy python3-numpy


4. OpenCV 설정과 컴파일 및 설치

소스 코드를 저장할 임시 디렉토리를 생성하여 이동 후 진행

$mkdir opencv

$cd opencv

~/opencv$


OpenCV 3.3.1 소스코드를 다운로드 받아 압축을 푼다.

$ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.3.1.zip
$ unzip opencv.zip

$ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.3.1.zip
$ unzip opencv_contrib.zip


두 개의 디렉토리가 생성됩니다.

$ls

$cd opencv-3.3.1

$mkdir build

$cd build

build 디렉토리 내에서 컴파일한다.

이제 cmake를 사용하여 OpenCV 컴파일 설정을 한다.


***라즈비안에서 복사 붙여넣기 하는경우 한글오류로 인해 '=' 의 위치가 바뀌어 오류가 날 수 있다. 직접 아래 설정과 비교해서 확인해야한다.


<cmake 오류 발생하는 경우>

1) '=' 위치 확인할 것

2) '=' 앞 뒤로 빈칸 없어야 함

3) PATH=../../   (빈칸없음)  주의, 불필요한 공백 포함되는 경우 경로 오류 발생함 

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=OFF \
-D WITH_IPP=OFF \
-D WITH_1394=OFF \
-D BUILD_WITH_DEBUG_INFO=OFF \
-D BUILD_DOCS=OFF \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D ENABLE_NEON=ON \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.3.1/modules \
-D WITH_V4L=ON  \
-D WITH_FFMPEG=ON \
-D WITH_XINE=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
../



정상적으로 완료되면 아래와 같은 문구가 뜸

-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/opencv/opencv-3.3.1/build


이제 make 명령을 사용하여 컴파일을 시작한다.

$time make


매우 오래걸림. 라즈베리파이3 B 환경에서 약 3시간 정도 소요됨


user 178m15.540s


이제 컴파일 결과를 설치한다. 샘플 코드들은 /usr/local/share/OpenCV/samples/ 위치에 언어별 폴더에 복사된다.

$sudo make install



/etc/ld.so.conf.d/ 디렉토리에 /usr/local/lib를 포함하는 설정파일이 있는지 확인한다.

$ cat /etc/ld.so.conf.d/*

(출력)
/opt/vc/lib

# Multiarch support
/lib/arm-linux-gnueabihf
/usr/lib/arm-linux-gnueabihf
/usr/lib/arm-linux-gnueabihf/libfakeroot
# libc default configuration
/usr/local/lib


(마지막 줄 /usr/local/lib이 출력되지 않는경우)

$sudo sh -c 'echo '/usr/local/lib' > /etc/ld.so.conf.d/opencv.conf'

$sudo ldconfig

5. OpenCV 설치 결과 확인

$pkg-config --modversion opencv
3.3.1



posted by 심재형 2017. 11. 5. 00:03

초기 설정을 잘못하는 경우 라즈베리파이에 연결된 LCD화면이 거꾸로 설정되는 경우가 있다.

<화면 회전시키는 방법> 


/boot/config.txt  파일 내에서,
display_rotate=2 마지막줄에 추가 혹은 있는 경우 수정 

0: 0도 회전/ 1: 90도 회전/ 2: 180도 회전/ 3: 270도 회전 


sudo 명령을 통해 직접 수정 혹은 외부로 복사해와서 수정 후 
sudo config.txt /boot/ 을 이용하여 복사해도 됨. 
sudo reboot 으로 리부팅 하면 화면회전 됨. 


<터치스크린 보정> - xinput_calibrator 설치 

 #필요 프로그램 설치 
sudo apt-get install libx11-dev libxext-dev libxi-dev x11proto-input-dev 

 #xinput_calibrator  다운로드 
wget http://github.com/downloads/tias/xinput_calibrator/xinput_calibrator-0.7.5.tar.gz 

 #설치...(압축 풀고 해당 폴더에서...) 
./configure 
make 
sudo make install 

 # 실행 (xWindow 에서 실행하거나...) 
xinput_calibrator 

 #터치 네번이면 보정됨. 

posted by 심재형 2017. 11. 4. 16:53

1. 라즈비안 이미지 Writing

1)마이크로 SD카드를 컴퓨터에 연결해 사용시 원래 32GB, 16GB용량의 카드 용량이 제대로 뜨지 않는다. 따라서 포맷을 해줘야한다.


2)원래 용량을 사용하기 위해 SD Formatter를 다운받는다.

https://www.sdcard.org/downloads/formatter_4/    

SD Memory Card Formatter Download for Windows and Mac에서 Windows버전을

다운받아 설치한다.




3)실행시키면 화면이뜨고, 포맷시킨다.



이제 원래와 비슷한 용량을 사용 할 수 있다.


다시 속성에 들어가서 확인해본 결과



2. 이제 SD카드에 사용할 운영체제를 다운받는다.

https://www.raspberrypi.org/downloads/

로 들어가서 RASPBIAN을 클릭하고 최신버전을 다운받는다.




3. SSH활성화

라즈비안은 SSH가 비활성화 되어있다. PC에서 사용하기 위해서 SSH를 활성화시켜야 한다.


1) 마이크로SD카드로 들어가서,

cmdline과 config를 찾는다.


2) 보기 탭을 클릭해 옵션아이콘을 누른다.

폴더 옵션 창에서 보기 탭을 선택한다

고급설정에 있는 [알려진 파일 형식의 파일 확장명 숨기기]를 해제한 후 적용

폴더 보기에 있는 모든 폴더에 적용 클릭하면 파일 확장자가 보인다.

3)새 텍스트파일을 만들고, 이름을 확장자 빼고 ssh로 바꾼다.

이제 ssh가 활성화 되었다.






IP Range에 연결된 네트워크 대역이 나타난다.



이제 컴퓨터가 실제로 사용중인 IP를 확인해 네트워크 대역을 수정해야한다.

VritualBox Network라고 표시된 어댑터외에 존재하는 어댑터의 아이피를 확인합니다.

아래 화면처럼 컴퓨터에서 사용하는 아이피가 192.168.35.120일 경우 IP Range를 192.168.35.0, 192.168.35.255로 수정해주면 됩니다.

이더넷 어댑터 IPv4 주소

스크린샷에는 노트북에서 무선을 사용했기 때문에 무선 LAN 어댑터 Wi-Fi에 IP가 할당되어 있습니다.

유선에 연결된 컴퓨터라면 이더넷 어댑터 로컬 영역 연결에 IP가 할당됩니다.



4. 라즈베리파이 사용법

1) 라즈베리파이에 모니터, 키보드, 마우스 연결해 컴퓨터처럼 사용

2) 컴퓨터에서 라즈베리파이에 터미널 혹은 VNC접속해 사용