라즈베리파이를 이용해서 장난감 만들듯 내 핸드폰의 블루투스MAC어드레스를 체크해서 라즈베리파이가 인식하면 "재실"을 없으면 "부재"를 표현하는 파이썬 프로그램을 ChatGTP에게 부탁해서 여러 오류제거 끝에 완성하게 되었다.

이때 필요한 라이브러리가 sounddevice 이다. 제목과 같이 HDMI 케이블의 오디오 신호로 Beep음을 (모니터의 스피커로) 출력가능하게 해준다.

이 라이브러리는 pip install sounddevice 라는 명령어로 해결되지 않기에 이렇게 기록으로 남겨둔다.

[Ubuntu 또는 라즈베리파이(리눅스 계열) 적용]
sudo apt update
sudo apt install portaudio19-dev
pip install sounddevice --update

[MacOS 적용]
brew install portaudio
pip install sdounddevice --update

 

몇가지 추가기능을 부여하고 나름 완성도 높게 만들었다고 자부하는데...  와이파이의 DHCP 설정때문에 IP가 종종 변경되어 설정이나 관리측면에서 필요했던 SSH로 접속하기 위해 IP를 확인해야 하는 경우가 생기게 된다. IP를 확인하기 위해 마우스와 키보드를 연결해 놓는데, 이것은 불편한 자리만 차지하므로 화면 중앙 맨 아래에 IP를 별도로 표시하는 소스를 다시 적용해보기로 했다. (참고로 적어 놓는다.)

Posted by 천칭
,

그동안 계속해서 실패하던 파이선으로 만든 디지털 시계를 라즈베리파이 부팅이후 자동으로 실행하고자 했던 부분이 마침내 성공했다.  인터넷으로 실행가능하다는 별별 내용을 적용해 보았지만 안되더니 한 블로그에서 본 내용을 적용했더니 바로 적용이 되었으나, 다음 부팅시 로그인을 요구하는 창이 무한반복해서 나타나는 버그가 있었다.

그래서 결국, 쉘 명령어로 부팅할 때, 시작되는 방식으로 변경하게 되었다.

1. 쉘 명령어 라인을 새로 만든다.
    sudo nano run_autostart.sh

2. 다음과 같이 명령어 라인을 입력하고 저장한다.
    #!/bin/bash
    echo "run_autostart.sh"

    sudo python /home/pi/******.py

3. 권한 정보를 변경합니다.
    sudo chmod +x run_autostart.sh

4. 테스트 실행을 해본다. 이상 없으면 다음단계..
    sh run_autostart.sh

5. 실제 부팅할때 실행하는 autostart 파일을 수정합니다.
    sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

6. 마지막 줄에 다음과 같이 입력하고 저장한다.
    lxterminal -e ~/run_autostart.sh

7. reboot 하여 확인한다. 

 

[아래 방식은 실행은 되지만 무한 로그인을 요구하는 버그가 있습니다.]

profile  파일은 라즈베리파일이 부팅될때 반드시 실행되는 파일이란다. 이 파일을 열어서 파이썬 실행을 요청하면 된다.

sudo nano ~/.profile   

.profile 파일의 맨 끝줄에 다음의 내용을 추가하고 저장하면 가능해진다.

#시작과 동시에 python 파일을 실행하기
export PATH=~/.local/bin:%PATH
(sleep 10 && /usr/bin/python /home/pi/*******.py) &

이렇게 저장하고 나온뒤에 

source ~/.profile  을 실행하고 reboot 하면 적용된다.

Posted by 천칭
,

거의 10년가까이 된 스크린 터치가 지원되는 라즈베리파이용 5인치 LCD 모니터가 있다.

잘 사용하지도 않지만 이제는 여러개가 돌아다니는 라즈베리파이3B도 남아돌아서 사용처를 찾기도 어렵다.

이런 상황에서 이 둘을 합쳐 사무실에서 간단한 디지털 시계와 날씨를 표시하는 시계정도로 사용하고자 하였다. 그러나 라즈베리파이의 OS는 공식적으로 저 모니터 해상도를 지원하지 않는다. 간단한 설정으로는 저 해상도를 인식하지 않는다. 특히, 라즈비안의 최근버전인 Bookworm부터는 /boot/config.txt를 수정하는 방식을 제공하지 않는다.

그래서 제조사에서 제공하는 별도의 드라이버를 설치해야 한다.

$sudo rm -rf LCD-show
$git clone https://github.com/goodtft/LCD-show.git
$chmod -R 755 LCD-show
$cd LCD-show/
$sudo ./LCD5-show

Posted by 천칭
,

- 회사 App을 만드는 프로젝트를 진행하면서 궁금해진 Flutter 언어. 안드로이드와 IOS를 동시에 지원하기 때문에 유지보수에 편리함을 가져다 줄 수 있어서 최근 많은 관심을 갖게 된 언어이다.

- 아직은 국내에 활성화 되지 않아서 Flutter 개발자가 많지 않아 회사 App은 기존 방식으로 개발 하고 있지만, 안드로이드와 IOS 개발자를 동시에 투입해야 하는 것에 비해 Flutter개발자만 있어도 두 OS를 동시에 지원하는 비용이 더 저렴하니 머지않아 이런 방식으로 바뀌지 않을까 생각해 본다.

-Flutter 책과 동영상 강의로 공부를 시작했지만 적지 않은 나이와 회사 사무를 보면서 별도의 공부를 진행한다는 것은 쉽지 않은 과정이다. 조금씩 알아가는 재미와 코딩을 따라가는 재미가 있어서 시작했는데, 책을 덮고, 동영상이 끝나면 정리가 되지 않은 것 같아서 이곳에 필요한 기능에 대한 설명과 그 기능을 위한 환경설정 부분을 중접으로 이곳에 정리를 시작해 본다.

그 첫번째로 웹화면을 제공하는 블로그나 사이트 화면을 App으로 서비스 가능하게 하는 WebView 기능에 대해서 정리하고자 한다. 우리 회사는 지하주차장 이용시 할인 등록을 웹화면 서비스로 제공하고 있다. 이 화면을 App으로 감싸서 폰에서 이용하면 좋을 것 같아서 이 기능을 사용하기 위한 환경설정 등을 이곳에 기록해 두려고 한다. 

 

1. WebView 패키지 추가하기

-pub.dev 사이트에 접속하여 webview_flutter 패키지를 찾는다. 원하는 버전의 패키지를 찾아서 패키지 명 옆에 있는 복사 아이콘을 클릭한다.

-안드로이드 프로젝트 화면으로 돌아와서 web_view프로젝트 아래의 test 폴더 아래 pubspec.yaml 파일을 오픈한다.

- 파일 중간 아래쯤에 dependencies 부분을 찾아 아래와 같이 수정해야 한다.

dependencies:
    flutter:
        sdk: flutter

    cupertino_icons: ^1.0.2   라고 되어 있는 라인을 찾아 그 다음줄에 복사한 webview_flutter 버전을 붙여넣기 한다.
    webview_flutter: ^3.0.0  (<-- 버전은 배우고 있는 버전을 추천, 최신버전은 설정이 추가적으로 필요할 수 있음)

 

- 그리고 한가지 더 수정이 필요한데, android/app/build.gradle 파일을 열어 속에 있는 minSdkVersion을 20으로 수정해야 한다.

android {
    defaultConfig {
        minSdkVersion 20   // 이부분을 수정한다.
    }
}

 

Posted by 천칭
,

디지털 액자를 만들어봐야 겠다고 손을 댄지 시간이 흘러 예전 버전의 정보만으로는 만들기도 어려워졌고, 새로운 버전에 맞는 정보를 찾기도 어려워 졌다. 조금씩 맞는 정보들의 조합으로 하나하나 맞춰가다보면 정보부족의 벽에 부딪히고 만다. 

다행이 유튜브 "공대선배TV"를 통해 하나하나 따라가다보면 막혔던 부분에 대한 설명이 있어서 원하는 MagicMirror를 구성하고 유튜브 플레이까지 성공하고 구글 어시스턴트를 구현 할 수 있다. 

이렇게 사용하다보면 Alert기능에 의해 사용중인 모듈의 새로운 버전이 나오고 업그레이드가 필요하다는 메시지를 화면에 출력한다.  모듈의 경우 해당 디렉토리에 가서 [ npm run update ]를 실행하면 대부분 업데이트가 완료된다.  

그러나 정작 벽에 부딪히는 것은 메인 프로그램인 MagicMirror의 업데이트가 필요한 경우이다.  이 경우 MagicMirror 디렉토리에서 npm run update 로는 업데이트 되지 않는다.(node.js에대해서 아예 모르고 시작했다. 지금도 잘 모른다.)

과련 내용은 https://docs.magicmirror.builders/getting-started/upgrade-guide.html 사이트에 설명되어있다.

직접 해본바로는(기본 설정관련 사항을 백업하라고 했지만 안해도 되는 듯 하다. 조심할 필요는 있겠지...)

git pull && npm install --only=prod --omit=dev

위의 명령으로 새 버전을 가져와서 다시 인스톨하는 듯 한데... 실제로는 여러가지 에러를 나타낸다.(난 잘 안되었다.)

git reset --hard     이 명령어로 초기화하고 

git pull    이 명령어로 새 버전의 MagicMirror를 가져와서 실행할 수 있었다.

매직미러를 구성하고 상시운영하는 액자를 만들지 않았기에 자주 사용하지는 않지만 가끔 생각나서 실행시켜보면 나타나는 업데이트들... 모듈은 쉽게 해결하였지만 MagicMirror에 대한 업데이트에 관련한 내용은 우리나라 사이트에서는 찾기 어려웠다. 이번 글도 나의 필요에 대한 대답을 잊지 않기 위해 작성해 둔다.

Posted by 천칭
,
Posted by 천칭
,

라즈베리파이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   입력,  저장,  닫기
         [다시 부팅하면 적용됨]

7. 라즈베리파이 마우스 커서 보이기/안보이기
  (자동시작으로 전체화면을 이용하는 경우....디지털 시계 같이... 마우스 커서가 방해되는 경우..)
  7-1) sudo nano /etc/lightdm/lightdm.conf
  7-2) 설정중에서 "-nocursor" 라고 되어있는 라인을 찾는다.  
  7-3) xserver-command=X -nocursor  ( #으로 막으면 커서보이고, 막지 않으면 커서 안보인다.)

※ 이렇게 했더니, 위 6번의 절전모드 끄기가 해제된다. 
    아마도 같은 xserver-command 계열의 명령이라서 둘중의 마지막 설정만 유효한것 같다.
    그래서 찾아보니 다음과 같은 설정이 있어서 해보니 된다. 

 7-1)  sudo apt-get install unclutter    (unclutter를 설치한다.)
 7-2)  sudo nano /etc/xdg/lxsession/LXDE-pi/audostart
 7-3)  audostart 파일 맨 아래에 다음과 같이 입력한다.
         @unclutter -idle 0       
             -idle 0 : 평상시와 터치할 때 둘다 커서가 표시되지 않는다.
             -idle 0.1 : 평상시는 커서가 안보이고 화면터치 또는 마우스로 움직일때 커서가 표시된다.

 

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 천칭
,

https://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 천칭
,