- 회사 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   입력,  저장,  닫기
        [다시 부팅하면 적용됨]

 

 

 

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

인터넷을 통해 라즈베리파이4에 한글 설정하는 법을 찾아보니 다양한 방법이 있었지만 그래도 쉽고 편한 방법이라고 판단되어 여기에 기록을 남기려고 한다.

기본적으로 

$sudo apt-get update

$sudo apt-get upgrade

까지 마치고 나면 하는 것이 한글 설정이다. upgrade는 시간이 많이 걸려서 명령을 실행하고 밤새도록 켜 놓은 적도 있다. 일단 여기까지가 보통의 라즈베리파이를 켜고 난 이후의 기본작업인것 같다.

[한글 설정 명령어]

$sudo apt-get install fonts-unfonts-core (폰트가 설치되고)

$sudo apt install ibus ibus-hangul (한글 입력기 설치)

라즈베리파이 메뉴의 [기본 설정] 메뉴에 [iBus설정] 메뉴가 새롭게 생겼고 실행하면 ibus 데몬이 실행되고 있지 않으니 실행할 것인가를 묻는다. "실행"하자. [입력방식] 탭을 선택하고 "한국어"를 선택하고 닫는다.

여기까지만 하게되면 매번 라즈베리파이를 켰을때마다 한글 입력기를 실행해줘야 한다.

$im-config -n ibus   (이렇게하면 매번 켰을때 자동으로 한글입력기가 실행된다.)

이상으로 한글 설정부분을 마무리하겠다.^^

 

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