집에서 사용하고 있던 스마트 플러그가 갑자기 고장이 났습니다.

스마트폰용 앱이 UI가 참 맘에 들어 몇개월간 잘 사용하고 있었는데. 고장이 나더군요.


 


 

 

 


증상은 앱으로 표시 및 제어어도 잘 되는 듯 한데...  실제 릴레이가 작동하지 않고 계속 전원이 연결되는 문제였습니다.

H모사의 제품이었는데, 인터넷을 검색해보니 저 말고도 그러한 사례가 종종 있는 듯 했습니다.


고객센터에 글을 남길까.. 하다가, 아래 글을 보고 제품에 여러차례 충격을 가해보았습니다.

그러니 어찌 첨에 안된다가 다시 몇번 치니까 고쳐지더군요.

붙었던 릴레이를 물리적으로 떼내는 일을 하는 듯 했습니다.


릴레이 접점이 붙었다가 떨어지지 않는 고장사례는 종종 있는 듯 했습니다...



그런데, 한편 생각해보니. 이건 진짜 위험하다 싶더군요.

특히 온열제품일 경우, 제대로 제어되지 않는 다면, 화재까지 이어질 수 있는 상황이구요...

전원에 제어가 제대로 되지 않았다는 피드백이 전달되지 않은 것도 문제를 키울 듯 했습니다.


제가 우선 내린 결론은 사용 전력치가 큰 제품에는 물려서 쓰지 말자(헤어드라이기등) 입니다.

아무래도 릴레이 고장 원인은 거기서 비롯되는게 큰 것 같았습니다.

 

 

 

스마트 플러그인 고장 관련 글들...

 

 

 


 

 

 

 

 

MAX7219 는 8*8 LED로 구성된 매트릭스 표시 드라이버입니다. 

라즈베리파이와 SPI통신을 통해 제어가 가능합니다.


가격은 8천원 정도 하는데, 알리 같은데서 사면 더 저렴하게 구할 수 있습니다. 대신 오래 기다려야합니다..

 

 

 



디지털 표시기를 라즈베리파이와 연동하기 위해 기본적인 셋업을 해보았습니다.

 

우선 라즈베리파이와 MAX7219 핀은 아래 처럼 연결합니다.

 

 

 


그리고 라이브러리 설정을 합니다.

 

Python코드로 Luma.LED_Matrix를 이용하면 쉽게 설정이 가능합니다.


기본적인 설정에 관한 설명은 아래 링크에 잘 되어있었으나 실제 설정 중에 몇가지 문제가 발생하여 정리해두고자 합니다.


https://luma-led-matrix.readthedocs.io/en/latest/install.html


 

 

처음 라즈베리파이를 설정하고 난뒤 상태의 기준으로 했으며, Python3명령어로 셋팅을 했습니다.



우선 SPI 설정을 해두어야합니다.

아래 명령어로 spi 설정이 enable되었는지 확인합니다.

아무런 결과가 없다면 설정이 안된 것입니다.

 

 


 

아래 명령어로 라즈베리파이 설정화면으로 가서 5 Interfacing Options를 선택하고 P4 SPI를 Enable합니다.

sudo rasp-config

 

 

 

 

 


그리고 파이를 껐다가 켭니다!

 

 

 

이제 다시 lsmod | grep -i spi 해보면 뭔가 나오는 것을 확인 할 수 있습니다..

 




 


 

그리고... 필요한 라이브러리들을 설치합니다.



$sudo apt-get install build-essential python3-dev python3-pip libfreetype6-dev libjpeg-dev libopenjp2-7 libtiff5 git

공식페이지에서 빠져있는 libopenjp2-7 libtiff5 git 도 추가로 설치합니다. 안그러면 오류납니다...




그런 다음 파이썬 이미지라이브러리를 설치합니다. 역시 안그러면 오류납니다...


$pip3 install pillow





이후, luma.led_matrix 라이브러리를 설치합니다.


  $sudo -H pip3 install --upgrade luma.led_matrix

 

 

 

이제 라이브러리 설치는 모두 끝났습니다.

 

샘플 코드를 받아서 한번 실행 보도록 하겠습니다.

 

하면 luma.lend_matrix가 생기며, 그곳에 소스가 복사됩니다.

그리고 복사한 디렉토리내 examples에 샘플 소스가 있습니다.

 

python3 matrix_demo.py -n 4 --block-orientation=90

-n은 꽂혀진 매트릭스 판때기의 갯수고, --block-orientation은 글자 방향입니다.

 

정리해보니 간단한데.. 이번에도 삽질을 많이 했었네요.

 

 

 

icbanq에서 3주전에 주문했으나, 비슷한 다른 제품을 받고 교환 받는데 3주나 걸려서 주말에 만져보게되었습니다.

(재고가 없어 해외로 재신청해서 받는데 꽤나 올래걸렸군요.)

 

 

esp8266 은 마이크로 컨트롤러와 wifi가 같이 결합된 칩으로, 라즈베리파이보다 전력소모가 작아, 배터리로 동작하기가 유용하다는 장점이 있죠.

 

개발 방식은  C를 이용하거나, (펌웨어를 다시 올리는 방식..), 파이썬, 루아, 자바스크립트등으로 인터프리터 방식으로 동작하는 것도 가능했습니다.

그래서 제일 괜찮아 보이는 방식인 파이썬을 이용하게 되었습니다.

 

인터넷을 검색하니, 나온지 꽤 시간이 지난 칩이고 해서 자료가 많았습니다.

기본적으로는 드라이버 설치하고 연결해서, 플래시 롬 내용을 지우고, micro python으로 펌웨어로 다시 설치하고,.. 여기까지가 기본이었고.

그 다음부터는 개발할 python스크립트를 개발해서 올리면 되더군요.

 

 

우선 테스트 샘플 파일로 웹서버를 구동해보았습니다.

 

 

잘 되는군요!

 

 

* 개발 환경 구축 : https://developer.ibm.com/kr/cloud/2018/01/06/esp8266-iot-micropython-start/

* CP210x USB Driver : https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers

* mycro python docs : https://docs.micropython.org/en/latest/esp8266/tutorial/intro.html

* mycropython esp8266 firmware : http://micropython.org/download#esp8266

* esplorer download : https://esp8266.ru/esplorer/#download

* 테스트 샘플 파일 : https://www.pi4iot.com/doku.php?id=sbc:esp8266

* Azure IOT 와 esp8266 https://docs.microsoft.com/ko-kr/azure/iot-hub/iot-hub-arduino-huzzah-esp8266-get-started

오랜만에 포스팅입니다.

부지런히 포스팅하기가 정말 쉽지 않군요...

 

그동안 라즈베리파이에 SVN서버를 설치해서 소스 관리서버로 잘 사용해오다가 minipc를 새로 셋팅하면서, 자료를 이관하였습니다.

 

이관할때 사용했던 명령어를 기억해두고자 포스팅을 남깁니다.

 

 

 

예시)

기존 소스저장소는

/home/svn/eha

/home/svn/eha-app

/home/svn/eha-win

 

총 3군데가 있었습니다.

 

 

1. 덤프 뜨기

 

우선 기존 라즈베리파이에 접속하여, /home/dump 에 디렉토리를 만들고 각각 저장소를 svn덤프 떴습니다.

덤프뜰때는 전체를 뜰 수도 있고 특정 리비전 이후버전만 덤프 뜰수도 있습니다.

sudo mkdir /home/dump 

svnadmin dump /home/svn/eha > svn.eha.dump

svnadmin dump /home/svn/eha-win > svn.eha-win.dump

svnadmin dump /home/svn/eha-app > svn.eha-app.dump

 

그리고 각 경로에 환경설정파일도 백업합니다. (참고 아래 파일들)

/home/svn/eha/conf/authz, /home/svn/eha/conf/passwd, /home/svn/eha/conf/svnserve.conf

 

참고로 전 사용하는 계정이 저 혼자라 백업하지않고.. 그냥 내용을 다시 입력해버렸습니다 ㅡㅡ;

 

 

 

 

 

 

 

 

 

2. 원격서버로 덤프파일 복사하기

위 화면 처럼 백업이 완료되면, sftp 명렁어로 이관할 새 서버로 접속합니다.

 

 

그리고 아래 FTP 명령어로 원격서버에 파일을 복사할 수 있습니다, sftp명령어를 잘 모르면 help 치면 나옵니다.

 

put [복사하고자하는 파일명]

 

요렇게 업로드가 잘 됩니다.

 

 

 

 

 

 

3. 복사한 파일 반영하기

이제 덤프한 파일을 반영할 차례입니다. 새 minipc로 접속합니다.

우선 신규서버에 svn이 설치안되어있다면 svn 을 설치해야겠죠.

 

sudo apt-get install subversion

 

그리고 저장소를 우선 생성합니다.(편의상 똑같이 했습니다.)

 

sudo svnadmin create /home/svn/eha

sudo svnadmin create /home/svn/eha-win

sudo svnadmin create /home/svn/eha-app

 

 

이제 덤프한 것을 복원합니다. 경로는 각자의 환경에 따라 다르니 유의해주세요.

sudo svnadmin load /home/svn/eha < /home/erith/svn.eha.dump

sudo svnadmin load /home/svn/eha-win < /home/erith/svn.eha-win.dump

sudo svnadmin load /home/svn/eha-app < /home/erith/svn.eha-app.dump

 

잘되고 있습니다.

 

 

 

이제 각 폴더에 authz, passwd 등을 수정합니다.

 

authz 에는

[/]

계정명 = rw  

passwd 에는[users] 섹션에

계정명 = 비밀번호

 

가 추가하였습니다.

 

 

이제 svn 을 시작하고.

svnserve -d -r /home/svn

시스템 재시작시 자동 시작되도록  /etc/rc.local 에도 추가합니다.

sudo vi /etc/rc.local

 

svnserve -d -r /home/svn 

 

 

 

 

 

 

참고로, 윈도우 개발환경에 Tortoise SVN을 사용하신다면, Relocate 메뉴를 이용하면서 쉽게, 연결된 저장소 주소를 바꿀 수 있습니다.

 

 

 

예전에 사용하던 아이폰, 아이패드 30핀 USB 케이블은 문제점이 좀 사용하다보면, 한쪽 끝이 단선이 잘되는 문제가 있었습니다.

단선된 USB케이블을 활용하여 5V USB전원 케이블로 리폼해보았습니다.

(30핀 단자쪽이 단선되어야 이것도 활용할 수 있겠네요. USB단자쪽이 단선되면 리폼하게 어려울 것 같습니다.)



USB 핀 구성을 아래 그림과 같습니다. 빨간색과, 검은색이 전원용도입니다.




케이블은 아래와 같습니다. 다만, 아이폰 케이블의 경우 GND가 약간 밝은 회색이었고, USB VCC는 핑크색에 가까웠습니다.

USB DATA(-)는 흰색이었구요.



연결이 용이 하도록, 기존 케이블을 니퍼로 잘라내고, 점퍼 케이블과 남땜 작업하였습니다.

이대로 사용한다면 합선 될 수도 있기 때문에 절연 작업을 해줘야합니다. 전기테입을 써도 되겠지만, 

테입의 접착제 때문에 찐덕찐덕해지는게 싫어 수축튜브를 사용하였습니다.

점퍼케이블에 맞는 사이즈는 DRS-1.5mm입니다. 쇼핑몰, 알리등에서 여러사이즈를 모아~ 모아서 저렴하게 팔기 때문에..

한꺼번에 셋트로 사는 것도 좋을 듯 합니다.










수축튜브를 넣기 위해 핀헤더를 임시로 제거합니다.

 커터칼등으로 헤더 안에 걸리는 부분을 살짝 들어올려주면 잘 빠집니다.(사진의 화살표 부분)







수축튜브를 넣고...





드라이기로 열을 가하면,






깔끔하게 되었네요.





케이블 테스트를 위한 전체적인 모습입니다.





멀티미터를 이용해 기존에 사용하던 어댑터의 전류를 측정해보았습니다. 

1.19A 정도가 흐르고 있군요.

잘 된 것 같습니다!.




이번에는, 라즈베리 카메라로 유튜브 라이브 방송을 해보도록 하겠습니다.





송출하는 라이브러리는 ffmpeg으로 하도록 하겠습니다. avconv로도 가능한데, 이럴 경우 접속이 끊키는등 몇몇 문제가 있었습니다.

(저의 경우 그랬습니다.)


먼저 ffmpeg을 설치해야 합니다.

소스 리스트파일에 내용을 추가합니다. vi등 에디터로 source.list파일을 수정합니다. 

vi가 불편하신 분은  sudo nano /etc/apt/sources.list 하셔서 nano 에디터로 수정하셔도 됩니다.


sudo vi /etc/apt/sources.list  


그리고 아래 라인을 추가합니다.


deb http://www.deb-multimedia.org jessie main non-free




요런 모습이 될껍니다.





그리고, 아래 명령어로 패키지 정보를 업데이트하면, NO_PUBKEY 어쩌구 공개키관련 오류가 뜹니다.


sudo apt-get update




이런!!



키정보를 넣도록 합니다.


sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5C808C2B65558117 


그리고, 다시 update합니다.


sudo apt-get update



이제 잘 되었군요.



ffmpeg을 설치합니다.


sudo apt-get install ffmpeg



다행(?)스럽게도 설치가 잘 끝났습니다.





이제 스트리밍하기만 하면 되는데, 유튜브 채널이 필요합니다.


유튜브 로그인 후, 아래 링크로 접속합니다.(가입이 안되어있다면 가입을 해야합니다.)


https://www.youtube.com/dashboard




오른쪽 상단에 아이콘을 눌러, 크리에이터 스튜디오로 들어가도 됩니다.






왼쪽에 실시간 스트리밍 메뉴를 누릅니다.


시작하기 버튼을 클릭!






계정인증을 시작합니다. (전화번호당 두개의 관리 계정만 생성이 가능하군요.)





문자 인증코드를 입력합니다.





잘 진행되었다면, 아래 메시지를 볼 수 있을 것입니다.






메인화면이 나타날텐데, 아래 인코더 설정부분이 중요합니다. 

아래 스크린 샷 이미지에 화살표가 가르키는 "스트림 이름 및 키" 부분의 키를 복사합니다. 

설명에도 알 수 있듯이 키는 외부에 공개되지 않도록 주의합니다.



다시 라즈베리화면에서 이 키를 다음 명령어와 함께 입력합니다.


raspivid -o - -t 0 -vf -hf -fps 30 -b 5000000 -w 1280 -h 720 | ffmpeg -re -ar 44100 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero -f h264 -i - -vcodec copy -acodec aac -ab 128k -g 50 -strict experimental -f flv rtmp://a.rtmp.youtube.com/live2/키를입력



이런식으로 입력이 될껍니다..



영상 프레임이 송출되고 있다는게 보입니다..






유튜브에서도 실시간 스트리밍 중이라고 녹색동그라미가 뜹니다.





테스트 중이라면, 비공개로 설정 해놓고 테스트하는 것도 좋은 방법일 것 같습니다. 설정을 바꾸면 바로 저장이 됩니다.




그 외 방송을 위한 유튜브 옵션이여러가지 있으니 천천히 살펴보시길 바랍니다.




영상 송출중입니다. 방열판 없이 대략 51~52도를 오가는군요.




중지하고싶으시면, Ctrl+C를 누르시면 됩니다.





방송 종료후에, 기본설정으로는 방송 영상이 남아있습니다. 찾아서 필요없으면 삭제하도록 합니다.






* 참고 : https://www.digikey.com/en/maker/blogs/streaming-live-to-youtube-and-facebook-using-raspberry-pi-camera/969a7932d47d42a79ba72c81da4d9b66

  1. 주상욱 2018.03.29 14:43 신고

    라즈베리파이내에있는 python2 idle 을 통해서 할순 없는건가요? 터미널로 하는거말고요 !

    • Favicon of https://bigcode.tistory.com 에리스 2018.04.18 23:40 신고

      파이썬 idle은 파이썬 코드가 실행되는걸로 알고 있어요. 터미널로 하셔야할 것 같습니다.

  2. 박원철 2018.05.01 22:28 신고

    질문 2가지
    1. 라즈베리파이의 리눅스에서도 아래와 같은 명령어를 실행하는 건가요?
    실행했을 때 제대로 인식을 하지 못하네요.

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5C808C2B65558117

    2. 유투브 설정의 스트림 이름 및 키 값은 임의로 만드는 값인가요 ?

    • Favicon of https://bigcode.tistory.com 에리스 2018.05.02 06:35 신고

      1. 네 라즈베리파이에서 실행하는 명령입니다.(라즈비안) 키 값은 NO_PUBKEY XXXXXXXX에 나오는 메시지에따라 달라질것같네요.

      2. 상위화면, 즉 구글에서 만들어줍니다. 자동으로 설정되어 보여줍니다. 공개되면 안되는 키입니다.

  3. 박원철 2018.05.02 08:17 신고

    먼저 답변 감사드립니다.

    두번째 질문은 미리 드린 질문이어서 그 단계까지 가서도 해결이 안 되면 다시 질문드릴께요

    첫번째 질문에서
    sudo apt-get update 를 하고 나서 동일한 코드로
    NO_PUBKEY 5C808C2B65558117 메시지가 뜹니다. 그래서
    알려주신대로
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5C808C2B65558117 를 실행했는데도
    마찬가지로 해당 키를 인식하지를 못 하는 거 같습니다.
    정확한 오류메시지가 필요하시면 퇴근 후 캡쳐를 떠서 올리겠습니다.

  4. 박원철 2018.05.02 22:23 신고

    아래는
    1. sudo apt-get update 와
    2. sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5C808C2B65558117Executing: /tmp/apt-key-gpghome.B2brMe9zED/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 5C808C2B65558117
    를 실행한 결과입니다.

    내용 보시고 도움 좀 부탁드리겠습니다. (화면캡쳐를 붙여넣을수가 없어서 텍스트로 보냅니다)

    pi@raspberrypi:~ $ sudo apt-get update
    Hit:1 http://raspbian.raspberrypi.org/raspbian stretch InRelease
    Hit:2 http://archive.raspberrypi.org/debian stretch InRelease
    Get:3 http://www.deb-multimedia.org jessie InRelease [35.2 kB]
    Ign:3 http://www.deb-multimedia.org jessie InRelease
    Fetched 35.2 kB in 2s (11.8 kB/s)
    Reading package lists... Done
    W: GPG error: http://www.deb-multimedia.org jessie InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5C808C2B65558117
    W: The repository 'http://www.deb-multimedia.org jessie InRelease' is not signed.
    N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
    N: See apt-secure(8) manpage for repository creation and user configuration details.
    pi@raspberrypi:~ $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5C808C2B65558117Executing: /tmp/apt-key-gpghome.B2brMe9zED/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 5C808C2B65558117
    gpg: failed to start the dirmngr '/usr/bin/dirmngr': No such file or directory
    gpg: connecting dirmngr at '/tmp/apt-key-gpghome.B2brMe9zED/S.dirmngr' failed: No such file or directory
    gpg: keyserver receive failed: No dirmngr
    pi@raspberrypi:~ $

    • 박원철 2018.05.02 22:26 신고

      해결되었네요^^
      아래 dirmngr 이 설치가 안 되어서 그런가봅니다.

      sudo apt-get install dirmngr

    • Favicon of https://bigcode.tistory.com 에리스 2018.05.04 07:14 신고

      셀프로 해결하셨네요. ㅎㅎ

라즈베리파이 카메라로 마치 IP캠처럼 RTSP프로토콜로 송출해보도록 하겠습니다.

RTSP 스트림은 윈도우용 무료프로그램인 VLC Player로 볼 수 있습니다.


전체적은 구성도는 아래와 같습니다.





먼저 라즈베리파이에 카메라모듈이 연결되어 있어야합니다.

SSH로 접근하여 아래 명령어로 카메라가 활성화 되도록 설정합니다.


sudo raspi-config



5 Interfacing Options -> P1 Camera -> 엔터를 누르고 Enable 시키고 빠져나가면 리부팅을 합니다.





그리고 다시 접속하여, 라즈베리파이에 VLC관련 라이브러리들을 설치합니다. 

아래 명령어를 입력합니다.


sudo apt-get install vlc





이거 설치하는데 은근 오래 걸리군요.





이제 아래 명령어로 스트리밍을 시작합니다. 중지하고 싶을땐 Ctrl+C 눌러주세요.

raspivid -n -w 1280 -h 720 -b 4500000 -fps 30 -vf -hf -t 0 -o - | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:9000/}' :demux=h264


1280 * 720 해상도, 9000번포트로 rtsp서비스를 합니다.






별 문제가 없다면, 위 화면처럼 나타나야합니다. 오류가 나타나면 카메라가 활성화되었는지 다시 한번 확인합니다.




이제 윈도우 플레이어에서 잘나오는지 확인해보도록 합니다.

무료 플레이어인 VLC Player가 필요합니다.

다운로드는 여기서 가능합니다. 


http://www.videolan.org/vlc/




미디어 > 네트워크 스트림 열기를 클릭합니다. 단축키는 Ctrl+N이군요.




네트워크 주소에, 카메라가 연결된 라즈베리파의 IP를 포트번호와 함께 입력합니다. 







약간의 딜레이가 있지만 잘 나오는 것 을 확인할 수 있습니다.




* 참고 : http://wiki.oz9aec.net/index.php/Raspberry_Pi_Camera


+ Recent posts