매직미러 자동실행 - maejigmileo jadongsilhaeng

-설치 부분 작성 중-

-문제점-

사실 라즈베리 파이를 많이 다뤄본 경험이 없었기에, 몇가지 문제에 대해 좀 길게 막혔던 적이 몇 개 있었다.

Q1. 로그인 창이 계속 뜬다.

A1. 와 이거 진심 개X치는 오류였다. GUI(x-window)가 잘 뜨고 있는데도, 뭔가 startx를 쳐보고 싶은 마음(호기심)에 한 번 쳐봤더니, 그 전에는 뜨지 않던 로그인 창이 뜨게되었다. 심지어 이 로그인 창에서 pi계정으로 로그인을 시도하면 잠깐 로그인이 되나 싶더니, 다시 로그인 창이 뜨게 되는 것이다. 진짜 엄청난 구글링을 해봤지만, 완벽하게 고쳐지지 않았다. 그러던 중, 로그인 창이 떠 있는 상태로 SSH를 통해 sudo startx를 실행해보니, 로그인 창을 무시하고, sudo권한과 함께 새로운 x-window가 뜨는 것을 발견했다.

이 정보를 기반으로, '아, OS가 부팅 되면, sudo startx 커맨드가 자동으로 실행되게 해줘야겠구나'라고 생각했고, 결국 ~/.bashrc파일에 다음과 같은 구문을 추가하면서 사건은 일단락 되었다.

sudo startx

그러자 이젠 매번 커맨드 라인을 실행 시킬 때 마다 bash쉘이 실행되서 그런지 계속 x-window를 불러오더라...

더 찾아본 결과, bash 쉘이 실행되었을 때, 현재 실행 유저의 이름과 디스플레이의 값을 확인해주는 if문에 sudo startx를 추가할 수 있었다. 코드는 다음과 같다.

if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then 
sudo startx 
fi 

잠깐 살펴보자면, 현재 디스플레이 ID를 확인해서 해당 디스플레이가 available한지 확인하고, 지금 bash shell을 실행한 유저가 /dev/ttty1계정, 즉 맨 처음 접속하여, 로그인 prompt를 띄워주는 계정인지 확인하고, 만약 그런 계정이 맞다면, startx를 실행하게 된다. 

그렇게 깔끔한, 로그인 창이 없는 x-window가 실행되는 것이다.

Q2. 자동 실행이 먹히질 않는다.

A2. npm을 이용해서 현재 electron을 실행시켜야 하는 매직미러의 특징상, 나에게는 조금 생소했기 때문에, 시작프로그램을 등록하는 모든 방법을 써봐도 제대로 되지 않았다. 그러다가 magic mirror readme.md에 있는 auto starting guide를 찾게 되었다.

주소는 다음과 같다.

Auto Starting MagicMirror - //github.com/MichMich/MagicMirror/wiki/Auto-Starting-MagicMirror

역시 무엇이든 가이드를 잘 읽어야한다...

라즈베리파이4를 중고나라에서 사용하지 않는 세트로 아주 저렴하게 구입할 수 있었다.

매직미러(MagicMirror)를 구현해서 사이즈가 좀 되는 외부 모니터를 연결해서 우리가족 사진들이 백그라운드로 슬라이드 되고, 날씨와 미세먼지, 시계를 구현하고 좀더 나아가 구글 어시스턴트와 유튜브를 말로 실행하는 시스템을 갖고 싶었다.  그러나 어떤 자료를 찾아보아도 구글 어시스턴트와 유튜브가 시원하게 잘 작동하는 동영상이나 블로그 등의 자료는 없었다. 

그렇게 몇번의 MicroSD 메모리카드를 굽고 다시 설치하는 과정을 거쳐 몇가지 타협점을 찾아 구글 어시스턴트와 유튜브를 제외한 기능의 디지털 액자형태를 구성하려고 했는데 문제가 발생했다.

알리익스프레스에서 구입한 테두리 베젤이 얇고 베젤 옆으로 연결선들이 보이지 않는 두께가 얇은 LCD모니터를 어렵게 찾아 구매했는데, 라즈베리파이4의 MicroHDMI 포트로 연결해보니 디스플레이 신호를 보여주지 못했다.

현재는 이 상태에서 더이상 진행하지 않았는데, 자료를 찾아보니 비슷한 경험을 한 사람들이 제법 있었나 보다.

해결방법을 이러하다.

[ /boot/config.txt 파일 수정 ]

#hdmi_force_hotplug = 1   //라인을 찾아 "#"을 푼다.(디스플레이 모니터를 바꾸어도 화면을 나타냄)

config_hdmi_boost=4    //hdmi 신호 출력을 높여준다고 한다.(Rpi4는 아직 미적용)

hdmi_group=1    //이렇게 수정해 준다.(없으면 추가)
hdmi_mode=32    // 1080p 모드로 설정함

hdmi_drive=2      //hdmi 연결기준

#라즈베리파이4일때 lcd 모니터 연결시 문제가 되는 부분인 dtiverlay=vc4-kms-v3d 라인을 주석처리해야 한다.
#dtiverlay=vc4-kms-v3d  //이렇게 수정한다. (이거 알아 내는데 몇달 걸렸다. ㅠㅠ)

reboot 한다.

위의 내용대로 수정한 후, reboot하면 라즈베리파이4가 부팅한 후 외부 모니터를 연결해도 화면이 정상적으로 보여질 것이다.  우리 모두를 위해 이 내용을 기록해 둔다.^^

Posted by 천칭

* 아두이노를 비롯해서 라즈베리파이로 만들어본 것들이 그동안 많았던것 같다.

- 네트워크 오디오 플레이어, 블루투스 리시버 등을 만들었었는데, 최근에는 MagicMirror에도 도전했었다. NAS에 있는 사진들을 Mount해서 백그라운드로 슬라이드 쇼하는 것 까지 해보고, Google Assistant에 도전했다가 응답도 받고 좋았지만, 원하는 대로는 잘 안되고 Youtube실행까지는 해보았지만 관리가 안되는 실패한 경험으로 마무리 했던 듯 하다.

-이제 다시금 라즈베리파이 신규 설정 방법이라는 타이틀로 이 글을 작성하는 이유는 어떤 작업을 하든 라즈베리파이에 OS인 라즈비안을 설치하고 네트워크 설정, 한글설치, 최신판 업그레이드 등을 기본적으로 다시 할 때마다 이런저런 인터넷 사이트를 다시 찾고 내게 맞는 자료들을 여기 저기 찾아다니는 불편함을 없애고 싶었기 때문이다.

-내가 사용할 것이기에 사진이나 이미지 없이 글자로만 단촐하게 적어서 참고하고자 한다.

[[ 라즈베리파이 신규 설정 순서 ]]

1. 라즈비안 OS를 받아서 rufus-1 프로그램으로 Micro-SD카드에 옮겨둔다.

2. 라즈베리파이 정상 부팅시키기

3. 라즈베리파이 기본 Config 설정(네트워크 포함)하기
  3-0) 우측 상단의 네트워크 아이콘 클릭하여 원하는 SSID를 찾아 비밀번호를 입력하여 네트워크 연결한다.
  3-1) [Preperence] - [Raspberrypi Config] 메뉴
  3-2) ssh, VNC모드 ON.  Location에서 Timeline을 Asia - Seoul로 세팅

4. 터미널모드
  4-1) sudo apt-get update -y
  4-2) sudo apt-get upgrade -y
  4-3) sudo raspi-config
        Advanced 메뉴에서 Filesystem expansion으로 공간확보

5. 한글폰트 설치
  5-1) sudo apt-get install fonts-unfonts-core -y
  5-2) sudo apt install ibus ibus-hangul
  5-3) [Preperence] - [iBus Config] 메뉴  Add - Hangul(태극문양)  추가

6. 라즈베리파이 절전기능 끄기
  (이렇게 하지 않으면 20분 정도 후에 LCD화면이 하얗게 되더군)
  6-1) sudo nano /etc/lightdm/lightdm.conf
  6-2) #xserver-command=X 라인의  #제거하고
  6-3) xserver-command=X -s 0 dpms   입력,  저장,  닫기
        [다시 부팅하면 적용됨]

Posted by 천칭

라즈베리파이4 4GB를 구입하여 MagicMirror를 구성했습니다.

WDMyCloud를 사용중이어서 이곳에 있는 사진들을 MMM-BackgroundSlidshow 모듈을 이용하여 슬라이드 쇼까지는 잘 구성하여 나름 뿌듯했는데...

문제는 구글 어시스턴트에서 여러번의 좌절을 하게되네요.

처음 한번만에 MMM-GoogleAssistant가 정상적으로 불러져서 대답도 잘했는데...

문제는 웹페이지를 불러오지 못하고 최종적으로는 유뷰브 호출에 실패해서

몇번의 재설치를 거듭했습니다.

어제 다시 최종적으로 최신판 라즈비안 2021-10-30일자 버전을 설치했는데, 이때문인지

npm 버전 8.1.0이 설치되었더군요. 기본적으로 디지털 액자 기능까지는 상관없이 사용가능하지만

MMM-GoogleAssistant는 npm 버전 6.14.15 까지만 지원합니다.

그래서 현재의 npm 8.1.0 버전을 6.14.15로 낮춰야 구글 어시스턴트에 도전해볼 수 있습니다.

어떻게 하면 npm 6.14.15 버전으로 바꿀 수 있을까요?

네이버 SBC 커뮤니티인 파이피씨(PIPC)에 이렇게 글을 남겼더니

네이블님께서 npm install -g npm@<version> 사용하시면 됩니다. 라고 답을 남기셨습니다.

저 명령어 써 봤던 건데... 아직 적응력이 많이 부족하군요...ㅠㅠ

기존 버전을 삭제하고 해야할지 한번더 문의드렸지만, 얼른 집에가서 적용하고

다시 구글 어시스턴트 적용에 도전해 보렵니다.

Posted by 천칭

//githubmemory.com/repo/darickc/MMM-BackgroundSlideshow/issues/101

npm module sharp causes errors - githubmemory

npm module sharp causes errors

githubmemory.com

라즈베리파이3로 NAS에 있는 사진들을 MMM-BackgroundSlideshow 3rd Party 모듈로 잘 작동하는 것까지 확인하여, 큰 모니터에 적용할 것을 대비하여 라즈베리파이4를 구입하여 MagicMirrior를 다시 설정하는 중에 MMM-BackgroundSlideshow를 실행하는 중에 오류가 나타는 현상을 경험하게 되었다. 

sharp라는 모듈(?)이 읽어오는 중에 linux-armv7 버전용이 아니라는 메시지가 나타난다... 

[ERROR] Error: 'linux-armv6' binaries cannot be used on the 'linux-armv7' platform.

linux-armv6 라서 라즈베리파이3에서는 문제없이 실행된것이 아닌가 추측해본다.(나는 Linux에 대해 잘 모른다.)

이 부분의 문제로 인해 구글포토에 MagicMirror 전자액자 기능에서 플레이될 사진들을 올려놓고 사용해야 하는지, 또는 라즈베리파이3 나 3+로 MagicMirror를 구성해야 하는지 고민하고 있었다.

다행히 위의 링크를 찾아 실행해보고자 한다. 문제 해결자는 Linux-armv7로 다시 인스톨하는 방식으로 해결했다고 하니 오늘저녁 해결해 보려고 한다. 아마도 좋은 결과가 있지 않을까 한다. 기대중

Posted by 천칭

라즈베리파이를 이용해서 재미있는 것을 만드는것이 취미이자 즐거움으로 삼았었다.

지금까지 라즈베리파이를 이용해서 블루투스 자율RC카를 만들다가 실패했었고,  Rune Audio를 설치해서 네트워크 오디오에 입문해서 현재는 R-N855 네트워크 오디오를 구비하게 되었다. 아! 네이버 라즈겜동에서 RetroPi 게임기도 만들어서 열심히 버블버블을 아들과도 즐겼던것 같다.(현재는 책장위에 놓여있다.ㅠㅠ)

이번엔 매직미러라는 거울액자 만드는 작업에 빠져서 이렇게 저렇게 모니터에 시간, 날씨, 미세먼지 정도, 구글캘린더 일정, 뉴스 토픽 정도를 띄우는데 성공했다. 이제 남은것은 배경에 NAS에 있는 사진을 띄워야 하는데, 인터넷 검색을 해도 라즈베리파이에 WDMyCloud NAS를 띄우는 방법이 거의 없거나 어렵게 찾은 페이지에서는 잘못된 정보를 주고 있다.

기억에 의존할 수 없는 정보는 이렇게 기록해서 다시 연결할 일이 있을때(지금은 RPi3로 작업하고 있는데, 성공하면 RPi4로 해야 하기 때문에) 어렵지 않게 해결하고자 함이다. 물론 이런정보를 찾는 누군가가 잘 확인하고 사용하기를 바라는 마음도 있다.    그럼 설명 시작.

1.네트워크 연결이 가능한지 확인

$ping `192.168.X.X (WDMyCloud ip) 

ping Test가 아무문제 없이 진행되어야 어떻게하든 연결된다. 여기서 문제가 생기는 것은 바로 해결해야 한다.

2. WDMyCloud 접속

-설정화면에서 [ 공유설정 ]으로 이동하여 라즈베리파이에 연결하여 공유하고자 하는 폴더(상위폴더일 수 있다)명을 찾아 [ 공유 엑세스 ] 설정의 NFS 엑세르 메뉴를 켜야 한다. 켜 놓기만 해서는 안되고 바로 옆의 [ 구성 >> ]링크를 클릭하고 [ 쓰기 ]메뉴를 활성화하면 아래 이미지 제일 아래 처럼 "탑재 지점" 링크가 보여진다.

WDMyCloud  설정화면

3. 라즈베리파이 터미널을 열고 설정하자.

$sudo mkdir -p /nas/photo  

라즈베리파이가 사용할 폴더(WDMyCloud 연결 후 사용할 폴더명)를 새로 만들어 준다.

$sudo chmod 777 -R /nas/photo

읽고 쓰는 권한을 모두 풀어준다. 

4. 에디터(nano)로 /etc/fstab 을 열어 편집

$sudo nano /etc/fstab

/etc/fstab 파일의 맨 아래에 다음의 설정을 추가합니다.

192.168.x.x:/nfs/Public/Photos /nas/photo nfs defaults 0 0

콤마(,)없이 스페이스로만 구분하고 입력이 끝나면 저장하고 에디터를 나옵니다.

5. 마운트 내용 적용하기

$sudo mount -a

이 명령이후 별다른 메시지 없이 바로 프롬프트가 나와야 하며, 메시지가 나오면 입력 실수한 부분을 찾아야 한다.

성공했다면, ls /nas/photo 명령으로 WDMyCloud 공유 폴더의 파일들이 보여야 한다.

6. 네트워크설정 변경

지금까지 작업한 내용으로 원하는 사진들이 NAS를 통해서 잘 보여진다. 그러나 라즈베리파이를 다시 켰을때에는 사진이 제대로 올라오지 못할 수 있다. 라즈베리파이에 설정한 fstab명령은 wifi가 부팅되면서 연결되기 전에 실행되기 때문에 명령자체는 실행되지만 네트워크 연결이 되어있지 않아 실패하기 때문이다.

 그렇기 때문에 네트워크 설정을 변경해 주어야 한다. 

[기본설정] → [Raspberrypi Pi Configuration] → System 탭에서 Network at Boot 체크!! 

이렇게 하면 fstab이 네트워크 연결 후에 적용된다.

오늘도 즐거운 라즈베리파이 생활을 하시길...

Posted by 천칭

DC모터 두개를 이용한 자율 주행차 비슷한것을 인터넷 강의를 들으며 만들기 시작했다.

그런데 주어진 모터 드라이브가 내가 갖고 있는 TB6612FNG와 달라서 이점을 고려하면서 작업을 진행하였다.

그런데 Warning 이나 Error없이 진행되던 소스에 갑자기 RuntimeWarning: This channel already in use 이런 문구들이 나타나기 시작했다. GPIO 핀을 다른 곳에 꽂아도 마찬가지로 나타나는 Warning들...   에러는 아니지만 깔끔한 소스를 원하는 것이 기본아닌가...

인터넷을 검색해보니 답은 간단하다 cleanup()을 해주란다. 집에 있는 부품들과 라즈베리파이 소스에 GPIO 핀에 대한 선언후 바로 GPIO.cleanup()을 실행시키고 이후 진행시키는 것을 시도해 보았는데 첫번째 소스는 해결된 듯 했으나 두번째 소스에서 해결되지 않았다. 근본적인 하드웨어 연결부분과 코딩을 재검토 해보는 것이 좋겠다.

Timport RPi.GPIO as GPIO
# do stuff …

# … left blank for the reader to fill in …
# … then perform a clean exit:

try :

except :

finally :
   GPIO.cleanup()

그리고 TB6612FNG 모터 드라이브에 연결된 모터들이 반응을 하지 않으니 별도의 모터용 전원을 넣어주는 것도 고려해야 할 것 같다. 이후 내용은 직접 테스트해보고 다시 수정하여 정리하고자 한다.

Posted by 천칭

남들 다 기계식 키보드 사용하는데 나만 없는 것 같아서, 꼴에 비슷한 것은 쓰기 싫어하니 중국 타오바오 사이트를 검색해서 유/무선 기계식 키보드(갈축)를 구입하게 되었다.

국내 사용자는 84키인 텐키리스 제품을 사용중이었는데 이분의 사용기가 많은 도움이 되었다.

//blog.naver.com/rnjs8657/221520174441

블루투스가 되는 모델로 다시 주문 및 도착!

//m.blog.naver.com/PostView.nhn?blogId=rnjs8657&logNo=221504694647&nav...

blog.naver.com

내가 사용하는 104키 키보드는 아래 USB-C 컨넥터 아래에 블루투스 전환 스위치가 하나 더 달려있다.

켜 놓으면 유/무선을 겸하여 사용가능하고 꺼 놓으면 유선 상태로만 사용가능하다.

블루투스를 사용가능하게 하면 키캡 'B' 아래에 LED가 들어오고 '1','2','3'키에도 LED가 들어온다.

3개의 블루투스 디바이스를 선택해서 사용이 가능하기 때문인것 같다.

숫자 123의 LED는 키캡에 가려져서 잘 안보이니 눈을 상단 뒷면으로 가져가야 보인다.

[FN] + 1, [FN] + 2, [FN] + 3  이렇게 별도로 디바이스를 설정할 때, 주의사항은 각각 디바이스의 블루투스 상태를 꺼 놓아야 한다. 입력시 [FN] + 1을 꾹~ 누르면 LED가 깜빡이며 대기 상태가 되고 이때 연결 디바이스 설정을 마치면 된다.

처음 인식할 때에만 유의하면 이후에 [FN] + 4를 눌러서 유선과 무선을 오가면서 설정된 디바이스별로 키보드 입력이 가능해 진다. 설정이 마무리되면 디바이스별 신호 이동은 빠르게 인식 되므로 사용하기에 불편함이 없다.

Posted by 천칭

//blog.naver.com/roboholic84/10186976167

Motor Driver 1A TB6612FNG

스파크펀의 TB6612 드라이버는 두개의 DC 모터를 제어할 수 있는 모터드라이버로 최대 15V 3A의 출력...

blog.naver.com

도식화된 자료라서 옮겨왔습니다.

아두이노가 아닌 라즈베리파이로 도전해보려고 자료를 모으고 있습니다.

[2020-10-12]

라즈베리파이 파이썬으로 DC모터 2개를 제어하려 할때 위의 내용을 참고하여 작업했으나, 움직임이 없어서 자세히보니 모터 파워에 해당하는 VM 항목에 5V전원을 추가로 넣어주는 것을 안한것 같네요. 잘 될 것 같긴한데.. 해보고 수정하겠습니다.   By 천칭

Posted by 천칭

아들래미 장난감 자동차로 테스트했던 내용중에 L298N 모터드라이버를 사용하여 출력저하를 경험하였다.

아두이노 보드와 모터에 입력되는 전원을 분리하여 주었음에도 DC모터는 겨우 돌아간다는 느낌만을 주었을뿐 힘을 쓰지 못했다. 멀티미터로 출력전압을 테스트 해보려 했지만 회사업무로 시간도 없었고, 수많은 멀티미터들 중에 어떤것을 구입할까 고민하는것도 보통일은 아닌듯하여 찾아낸것이 TB6612FNG칩을 사용한 아주 작은 모터 드라이버를 찾아 구입하여 테스트하였으며 아두이노 보드도 NANO보드로 바꾸어 부피도 줄이면서 만능기판으로 옮기기 직전 상태에서 테스트를 진행 할 수 있었다.

왼쪽에 붉은 빛을 내는 세로바 형태의 기판이 블루투스 보드이고 가운데 푸른빛을 내는 작은 보드가 아두이노 나노보드, 오른쪽의 작은 빨간색 보드가 모터드라이버이다.... 전원은 아래에 보이는 1.5V x 4(6V)만으로 아두이노 보드와 모터가 작동된다... 아주 잘...ㅎㅎ

프로그램 소스는 정리하여 추후 올려 놓겠슴다...^^

Posted by 천칭

관련 게시물

Toplist

최신 우편물

태그