반응형



라즈베리 파이를 디지털 액자로 활용하는 방법 정리


본 글에서는 라즈베리 파이 3(파이)에 소형 모니터를 연결하고 네트웍 공유 폴더를 통해 사진 데이터에 접근하여 사진 앨범을 실행시키는 과정을 정리해 보았다.


1. 사전 준비


준비물은 다음과 같다.

라즈베리 파이 3 와 8기가 혹은 그 이상의 micro sd card (64기가 이상은 크게 필요하지 않음)


13.3인치 2K IPS 모니터

시중에 나와있는 디지털 액자들은 대부분 7인치 혹은 그 이하의 작은 사이즈만 존재하고 해상도가 낮아서 퀄리티있는 사진을 보여주지 못하기 때문에 13.3인치를 선택하였다. 그리고 화각이 좋은 IPS로 한정하여 검색한 결과 아마존에서 아래 제품을 선택하였다.

구매 경로: https://www.amazon.com/gp/product/B07GR3TS7F/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1


나스 혹은 네트워크에서 samba호환 파일 공유가 가능한 시스템


2. 운영체제 설치하기


라즈베리 파이는 가장 보편적으로 raspbian 이라는 운영체제를 설치하여 사용하게 된다. 설치 이미지는 다음 사이트에서 받을 수 있다.

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

raspbian 을 선택 후 (2018/10/12)현재 가장 최신 버전인 Raspbian Stretch with desktop 을 다운로드 한다.

토렌트로 받거나 zip 파일을 직접 다운로드 후 압축을 풀면 약 4기가 정도 되는 확장자가 .img인 이미지 파일이 생긴다.


이 이미지 파일은 아래의 etcher 라는 프로그램을 사용하여 마이크로sd 카드에 복사할 수 있다. 윈도우/맥/리눅스 등의 운영체제를 지원한다.

https://etcher.io/


etcher설치 후 실행하면 아래 그림과 같이 img파일과 복사할 대상을 선택하고 Flash버튼을 누르면 간단하게 설치할 수 있다.



이제 Flash가 완료된 마이크로sd 카드를 라즈베리파이에 삽입 한다.

모니터와 키보드, 마우스를 연결 후 전원을 입력하면 설치 과정으로 진입한다. 

와이파이, 사용자 언어 및 지역을 선택하는데 기본 설치 항목에 한글 폰트가 없으므로 메뉴의 글자가 깨지게 된다. 따라서 기본 언어를 영어로 선택하는 것이 좋다.


3. 한글 사용 설정


 한글을 사용하기 위해서는 적절한 한글 입력기와 폰트가 필요하다. 입력기는 주로 ibus 혹은 fcitx가 사용되는 데 여기서는 fcitx를 기준으로 진행하였다.


터미널을 열고 다음을 입력한다.

$ sudo apt install fcitx fcitx-hangul fonts-unfonts-core

설치를 완료하고 재부팅 하면 웹페이지에 한글이 정상적으로 표시됨을 확인할 수 있다.

이제 키보드의 우측 alt키를 한글 입력 키로 설정하기 위해 화면 우측 상단의 키보드 모양에서 마우스 우클릭하여 "Configure Current Input Method"를 선택한다.


Input Method 에서 "+"버튼을 입력한 다음 "Hangul" 을 검색하여 추가한다.


Global Config로 이동하여 아래 그림과 같이 설정한다.

먼저 Extra key for trigger input method : backspace키를 눌러 Disabled 로 선택

Trigger Input Method 에서 우측 alt키를 눌러 선택

Secondary는 backspace키를 눌러 Empty를 선택한다.

이제 메모장을 열어 한영 전환이 정상적으로 이루어지는지 확인해본다.


4. 포토 프레임 설정하기


이후 과정은 https://pimylifeup.com/raspberry-pi-photo-frame/ 를 참조하였다.


(1) 화면 자동 꺼짐 해제

라즈베리파이는 기본적으로 일정 시간이 지나면 화면을 끄도록 설정되어있다.

이 기능을 해제하기 위해 /etc/lightdm/lightdm.conf를 편집하도록 한다.

$ sudo vi /etc/lightdm/lightdm.conf

[Seat:*] 항목을 찾아 그 아래에 다음과 같이 추가한다.

xserver-command=X -s 0 -dpms


(2) feh 설치

feh 는 가장 간단하게 이미지를 전체화면에서 실행할 수 있는 프로그램이다. 터미널 커맨드만으로 특정 폴더에 있는 사진들을 전체화면으로 보여줄 수 있다. 다만 사진이 세로로 찍혀있는 경우 이를 인식하여 리사이징하거나 하는 기능은 없으므로 사용에 한계가 있어 사용하지는 않고 테스트용으로만 사용한다.

$ sudo apt install feh

설치가 완료되면 터미널에 다음과 같이 입력하여 앨범을 실행시킬 수 있다.

$ DISPLAY=:0.0 XAUTHORITY=/home/pi/.Xauthority /usr/bin/feh --quiet --preload --randomize --full-screen --reload 60 -Y --slideshow-delay 15.0 /이미지가_포함된_폴더

또는 더 간축화된 명령으로

$ DISPLAY=:0.0 XAUTHORITY=/home/pi/.Xauthority /usr/bin/feh -q -p -Z -F -R 60 -Y -D 15.0 /이미지가_포함된_폴더

(3) samba 패키지 설치하기

라즈베리파이에 설치된 리눅스에서 네트워크 폴더를 생성하고 접근하기 위해서는 samba가 필요하다.

samba를 설치하기 위해서는 autofs, smbclient, cifs등이 필요하다. 터미널에 다음을 입력하여 필요한 패키지들을 설치한다.

$ sudo apt install autofs samba-common-bin smbclient cifs-utils

설치 후 재부팅


(4) 사용자 계정 추가 및 공유 폴더 설정

설치가 완료되면 공유폴더로 설정할 사용자와 폴더를 생성한다. 라즈베리파이는 기본적으로 super user로 로그인하므로 네트워크 폴더에 같은 사용자로 로그인하게 되면 모든 파일을 삭제, 변경할 수 있으므로 되도록이면 사용자를 추가하여 설정하는것이 안전하다.

piuser라는 사용자를 추가하기 위해 터미널에 다음과 같이 입력하고 비번을 등록한다.

$ sudo adduser piuser

사용자 추가 후 해당 사용자의 홈 디렉토리에 share라는 폴더를 만들고 폴더의 권한을 777로 변경한다. (이렇게 하지 않으면 네트워크 폴더에서 접근이 안됨)

$ mkdir /home/piuser/share $ sudo chmod 777 /home/piuser/share

이제 이렇게 만든 폴더를 네트워크에서 공유하기 위해 /etc/samba/smb.conf 파일을 편집기로 연다. (vi 를  gedit 혹은 nano로 대체)

$ sudo vi /etc/samba/smb.conf

workgroup을 사용자의 그룹으로 지정

workgroup = MYWORKGROUP


파일 마지막에 다음 내용을 추가

[share]

    path = /home/piuser/share

    available = yes

    valid users = pi,piuser

    read only = no

    browsable = yes

    public = yes


이제 터미널에서 다음을 입력하여 smbd를 재시작 하여 외부에서 접근이 가능한지 확인해본다.

이제 이 폴더에 사진파일을 저장하여 사용할 수 있다.


(5) 원격 공유폴더 접근하기

라즈베리파이의 로컬 디스크는 용량이 제한적이므로 계속해서 쌓이는 사진파일을 저장하기에는 한계가 있고 매번 백업하기도 번거로우므로 NAS와 같은 파일 공유기에 접근하여 사진을 가져오는 것이 필요하다. 이렇게 하기 위해서는 로컬 폴더를 만들고 이 폴더를 네트워크 폴더로 마운트하는 과정이 필요하다.

먼저 로컬 폴더에 networkPhoto라는 폴더를 만들고 

$ mkdir /home/pi/networkPhoto

다음과 같이 입력하여 폴더를 연결해본다. 괄호() 는 사용자 환경에 따라 입력한다. 여기서 사용자 ID는 NAS 기기에 등록된 사용자 ID 이다.

만약 NAS의 주소가 192.168.1.2 이고 폴더 이름이 photo 인 경우

$ sudo mount -t cifs //192.168.1.2/photo /home/pi/networkPhoto/ -o username=(사용자ID),workgroup=(사용자그룹),vers=1.0 Password for 사용자ID@//192.168.1.2/photo: ********

패스워드를 입력하면 네트워크 폴더가 /home/pi/networkPhoto에 공유가 됨을 확인할 수 있다.

만약 Fail이라고 나오는 경우 vers=항목을 2.0 혹은 3.0으로 변경해본다. 또는 해당 NAS기기가 cifs 프로토콜을 지원하지 않는 경우일 수 있다.


이제 부팅시에 자동으로 공유폴더가 생성되도록 하기 위해서 /etc/fstab 파일을 열고

$ sudo gedit /etc/fstab

다음 내용을 끝부분에 추가한다.

//192.168.1.2/photo /home/pi/networkPhoto cifs rw,user,username=사용자ID,password=사용자암호,vers=1.0 0 0


이제 변경사항 확인을 위해 다음을 입력해본다.

$ sudo smount -a

$ df -H Filesystem Size Used Avail Use% Mounted on /dev/root 32G 4.0G 27G 14% / devtmpfs 482M 0 482M 0% /dev tmpfs 487M 29M 458M 6% /dev/shm tmpfs 487M 13M 474M 3% /run tmpfs 5.3M 4.1k 5.3M 1% /run/lock tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mmcblk0p1 46M 24M 23M 51% /boot tmpfs 98M 0 98M 0% /run/user/1000 //192.168.1.2/photo 3.0T 829G 2.2T 29% /home/pi/networkPhoto

이 과정이 모두 완료되면 부팅할때 자동으로 해당 네트워크 폴더를 연결하게 된다.

단, 라즈베리파이가 와이파이로 연결된 경우 와이파이 네트워크가 완전히 연결되기 전에 네트워크 접근을 시도하게 되어 정상적으로 진행되지 않는다.

이 때에는 아래와 같이 raspi-config를 실행하여 Boot option에서 Wait for Network at Boot를 설정하여 일정시간동안 지연되도록 한다.





5. 사진 파일 뷰어 설치


feh로는 기능이 부족하고 사진폴더에 다른 파일이 있는경우 멈춘다거나 회전이 불가능한점 때문에 

가볍지만 사진 검색 및 폴더 이동이 간편한 gThumb 이라는 프로그램을 사용하였다. gThumb은 간단히 apt install 명령으로 설치할 수 있다.

2k 해상도의 모니터에서는 약간 버벅거리긴 하지만 큰 무리없이 사용이 가능하다.



설정이 모두 완료된 모습




2018/10/14 최초 문서 발행.


반응형
반응형

ubuntu에서 로컬 디스크에 git clone 하여 작업 중...

os 재설치를 위하여 해당 폴더를 임시로 윈도우 디스크로 복사(cp -rf )하였다.


cp -rf ~/gitproject /media/$HOME/Windows/backup/gitproject


리눅스 재 설치 후 다시 로컬 디스크에 복사 (역시 cp -rf) 

cp -rf /media/$HOME/Windows/backup/gitproject ~/gitroject


그런데 이렇게 복사를 하면 git에 포함된 submodule에 대한 git 정보가 사라져서 에러를 뿜는다.

그래서 터미널에서 해당 폴더로 이동후 다음을 입력한다.

$ git submodule deinit -f .

이후에 

$ git submodule init

수행하여 초기화를 진행한다.


그리고 git 상태를 보기 위해 git status를 입력하면 붉은 글씨로 모든 파일들이 modified 되었다고 나온다.

$ git status

On branch stable Your branch is behind 'origin/stable' by 1 commit, and can be fast-forwarded. (use "git pull" to update your local branch) Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: .ackrc modified: .clang-tidy modified: .github/ISSUE_TEMPLATE/bug_report.md modified: .github/ISSUE_TEMPLATE/feature_request.md modified: .github/stale.yml modified: .github_changelog_generator modified: .ycm_extra_conf.py modified: CMakeLists.txt modified: CODE_OF_CONDUCT.md modified: CONTRIBUTING.md modified: CTestConfig.cmake modified: Documentation/Doxyfile.in modified: Firmware.sublime-project

...

실제로 파일이 변경되었는지 확인하기 위해 git diff 명령으로 살펴보면...

$ git diff origin/stable

diff --git a/.ackrc b/.ackrc old mode 100644 new mode 100755


이렇게 파일의 mode가 644에서 755로 변경되었다고 나온다. 이것은 윈도우 파일시스템과 리눅스 파일시스템이 달라서 생기는 문제로 생각되는데 이것때문에 파일을 제대로  tracking 하지 못하는 문제가 있다.

그래서 해결 방법은 다음과 같다.

$ git config core.fileMode false

이렇게 하면 git status에서 딱 변경된 파일만 표시해 준다.




반응형

'Computer > git' 카테고리의 다른 글

git Submodule 사용하기  (0) 2019.01.16
git 에 사용자 정보 입력하기  (0) 2018.03.29
git 에서 새로운 브랜치 만들기  (0) 2018.02.02
git 의 오래된 항목 삭제하기  (0) 2018.01.22
반응형

로그 분석

드론이 비행하는 동안 축적되는 비행데이터는 개발 혹은 운용을 위해 매우 중요하다. 특히 비행이 불안정하거나 임무가 실패로 돌아가는 경우에는 다양한 원인이 있는데 로그가 그 원인을 파악하고 사고를 방지하는데 큰 도움을 준다. 아래는 그 분석 방법과 도구에 대해 정리한 것이다. 

 

px4 에서 공식적으로 지원하는 log 파일 포맷은 ulog 이다.

이 로그는 uorb 메세지로 전송되는 데이터를 포함하고 있다.

자세한 내용은 아래를 참조.

https://dev.px4.io/en/log/flight_log_analysis.html

 

로그의 저장

이 로그는 microsd 카드가 탑재되는 모든 px4지원 비행제어기에서 사용할 수 있는데 qgroundcontrol에서 설정하는 방법에 따라 전원을 켬과 동시에 시작하거나 시동(Arming) 이후부터 시동 끔(Disarming)까지를 저장하는 방법을 선택할 수 있다.

저장된 로그는 매 비행 후  microsd 카드에 저장된다.

 

로그 분석 도구

가장 손쉽고 빠르게 비행데이터를 확인하는 방법은 아래 사이트에 로그 파일을 전송하여 받아보는 방법이 있다.

https://logs.px4.io/

이 도구를 사용하면 각 비행 단계, 제어기 입/출력, 센서 데이터 등을 매우 상세한 그래프로 보여준다. 

하지만 이 도구는 다음과 같은 몇가지 단점들이 존재한다.

1. 온라인에 접속하여 사용하는 방식이므로 인터넷 연결이 원활하지 않은 실외 혹은 방화벽이 설정된 환경에서는 사용하기 어려움.

2. 특정한 데이터를 입맛대로 조작하거나 다른 데이터와 비교하기가 용이하지 않음.

 

그래서 ulog파일을 엑셀이나 다른 도구로 불러들일 수 있도록 .csv형식으로 변환해주는 도구도 존재한다.

 

pyulog

https://github.com/PX4/pyulog 에서 제공하는 pyulog는 다음과 같은 기능을 제공한다.

    • ULog 파일을 읽어들이는 파이썬 라이브러리 제공하여 다양한 분석 도구와 시각화 도구에 적용할 수 있다.

ULog 정보를 추출하고 표시하는 스크립트 제공:

    • ulog_info: ULog파일로부터 정보를 표시
    • ulog_messages: Ulog파일로부터 로그 메세지를 표시
  • ulog_params: ULog파일로부터 파라미터 자료를 추출
  • ULog파일을 다른 포맷으로 변환하는 스크립트 제공:
    • ulog2csv: ULog 파일을 (여러가지의) CSV 파일로 변환.
    • ulog2kml: ULog 파일을 (여러가지의) KML 파일로 변환.

 

위 패키지를 활용하면 csv파일로 변환해서 데이터를 추출할 수 있다.

 

plotUlog 패키지

위 기능을 활용하여 매틀랩 같은 도구에서 데이터를 입맛에 맞게 조작할 수 있는 방법이 없을까 해서 궁리끝에 octave라는 오픈소스 프로젝트를 접하게 되었다. 

매트랩은 물론 아주 좋은 그래핑 및 수학 연산 도구이지만 개인이나 소규모 회사가 구입해서 사용하기에는 비용이라는 문제가 가장 크다. 

그런데 octave 에서는 Matlab 못지 않은 수학 연산 도구와 강력한 플롯 생성 기능을 제공하면서 무료로 사용할 수 있다. 그래서 이 도구를 활용하기로 결정하고 방법을 찾아보니 의외로 어렵지 않게 분석 도구를 만들 수 있었다.

 

 

이 도구를 사용하면 센서(Sensors) 데이터, 비행 자세(Attitude), 고도(Altitude) 위치(Position) 제어 그리고 전력 사용(Power)에 대해 세밀한 분석 결과를 보여준다.

 

사용 방법은 다음과 같다.

 

설치하기

1. octave 의 설치.

 현재 옥타브는 공식적으로 리눅스, 맥 그리고 윈도우를 지원한다. 

https://www.gnu.org/software/octave/ 현재 4.4.2 버전까지 나와있는데 맥에서는 4.4.1까지 업데이트가 이루어져 있다. 

 

Ubuntu 환경

필자는 우분투 16.04 버전에서 apt install 로 설치하였다.

[2022/8/9 업데이트] 현재 우분투 20.04 버전에서 GNU Octave, version 5.2.0 버전이 설치되는 것을 확인하였다.

 

맥 환경

맥에서는 homebrew 를 설치하고 brew install octave로 설치하는것이 가장 빠른 방법이다.

 

2. pyulog 설치

설치 방법은 위에 언급한 깃허브 페이지에서 git clone 후 설치 방법에 따라 진행한다.

 

[2022/8/9 업데이트] Ubuntu 20.04 버전을 사용하는 경우 pip 로 간단히 설치 가능하다.

pip install pyulog

다만 위 방법으로 설치 시 ulog2csv 실행파일은 ~/.local/bin 에 설치되는데, 이 파일을 실행할 수 있게 하려면 octave의 환경변수에 해당 위치를 추가해주어야 한다.

홈 디렉토리에 .octaverc 파일을 하나 만들고 다음 내용을 추가해준다.

setenv ('PATH', ['/home/본인의HOME이름/.local/bin:', getenv('PATH')])

또는 터미널에서 다음을 입력한다.

echo 'setenv ("PATH", [\047'$HOME'/.local/bin:\047, getenv("PATH")])' >> ~/.octaverc

3. octave 의 workspace로 사용할 폴더를 만들고 터미널에 다음을 입력하여 패키지를 다운로드 한다.

git clone https://github.com/kyuhyong/plotulog.git

 

실행하기

1. octave를 실행한 다음 위 패키지를 다운로드한 폴더로 이동한다.

 

2. sdcard에서 ulog 파일을 위 폴더에 복사한 다음 파일명을 다음과 같이 지정한다.

"log###.ulg"

여기서 ###는 001과 같은 숫자이다. 이렇게 파일명을 지정하면 ###의 숫자를 가지고 csv파일을 생성하게 되므로 편리하다.

다른 이름으로 저장하게 되면 동작하지 않을 수 있으므로 주의.

 

3. octave 터미널에서 다음을 입력하면 분석 작업을 시작한다.

plotUlog("log###.ulg", "Description")

여기서 Description 은 변환된 csv파일이 저장될 폴더 이름에 추가하는 구분자이다. 이렇게 입력을 하게 되면 하위에 "###_Description"이라는 폴더가 생성되고 여기에 모든 로그와 추출한 그래프가 저장된다.

 

4. 이미 분석이 완료된 후 다시 실행하기 위해서는 단지 폴더 이름만 입력하면 된다.

plotUlog("###_Description/") 이라고 입력하면 다시 그래프를 그리기 시작한다.

 

 

 

 

 

반응형

+ Recent posts