HiFiberry DAC+ (TI PCM5122 사용)와 호환되는 PiFi DAC+ 에 있는 IR receiver를 사용하기

https://wiki.geekworm.com/DAC%2B

아두이노 세트에 있는 IR remote controller를 사용해서 Volumio를 제어해 해보자

해당 IR remote contorllor는 NEC protocol을 사용한다.

https://techdocs.altium.com/display/FPGA/NEC+Infrared+Transmission+Protocol 

1. DTB overlay 추가 (gpio-ir, PiFi DAC+ 보드는 IR rx data가 gpio 26 핀에 연결되어 있음)

/boot/userconfig.txt 
# Add your custom config.txt options to this file, which will be preserved during updates
dtoverlay=gpio-ir,gpio_pin=26

2. IR 레코딩

IR 레코딩은 아래 링크를 참고했다.

https://memories.tistory.com/10

아두이노에서 확인한 키 값을 사용해도 되지만, LIRC에서 레코딩해서 생성한 lircd.conf를 사용하고, 아두이노에서 읽은 값은 교차 검증용으로 사용. (IR 레코딩을 해보니, 실제값 4바이트 이후 더미 4바이트가 기록되어 있어서 더미 값은 삭제했다)

3. Volumio IR configuration 파일 (lircd.conf, licrc)을 push

/data/INTERNAL/ir_controller/configurations/<<설정 이름>> 폴더를 생성하고 파일을 복사. (리모콘에 있는 로고를 따라 "CAR" 라고 정함)

CAR_lirc.zip
0.00MB

4. Volumio 플러그인에서 IR Conroller Configuration에서 <<설정 이름>>  ("CAR")을 선택

5. 이제 IR remote controller로 플레이어 제어~~

레이저 프린터가 망가져서 새로 구매할때, 네트웍 프린팅 기능이 없는 프린터를 구매해서
네트웍 프린팅 기능에 대한 아쉬움이 있었다.
라즈베리 파이를 네트웍 프린터 서버로 이번 연휴에 세팅. (CUPS & Google cloud printing)

https://www.instructables.com/id/Minimal-Raspberry-Pi-Google-Cloud-Print-Server/

 

Minimal Raspberry Pi Google Cloud Print Server

Minimal Raspberry Pi Google Cloud Print Server: I was cleaning up my electronic junk, and believe me I order a lot of stuff online and then lose track of it. Back in 2014 I ordered a Raspberry Pi, model B and it just came out of a box lying under some othe

www.instructables.com

Step 8번 대신 cloudprint, cloudprint-service를 설치하고, authfile.json 파일을 생성 및 cloudprint를 등록하면 된다.

$ sudo apt-get install cloudprint cloudprint-service
$ sudo /usr/sbin/cloudprintd -c -a /var/lib/cloudprintd/authfile.json
$ sudo systemctl restart cloudprintd.service
$ sudo systemctl status cloudprintd.service
● cloudprintd.service - Google Cloud Print proxy service
   Loaded: loaded (/lib/systemd/system/cloudprintd.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-05-05 13:57:29 KST; 3s ago
     Docs: man:cloudprint-service
 Main PID: 3659 (cloudprintd)
    Tasks: 1 (limit: 2200)
   Memory: 15.5M
   CGroup: /system.slice/cloudprintd.service
           └─3659 /usr/bin/python3 /usr/sbin/cloudprintd -a /var/lib/cloudprintd/authfile.json

Ubuntu 사용자로서 Rhythmbox를 기본 뮤직 플레이어로 사용하는데,

Lyrics Plugin에서 K-Pop가사를 지원하는 소스가 없어, 알송 가사 서비스를 가져오도록 추가함.


1. Python requests를 이용 ALSong Lyrics 추출 (Artist, Title)

https://item4.github.io/2018-10-20/Fetch-Alsong-Lyrics-with-Python/


2. lLyrics에서 Artist, Title의 한글 문자열이 Hangul Jamo (U+1100 ~ U+11FF)방식으로 표현되어

이를 Hangul Syllables (U+AC00 ~ U+D7AF)로 전환 후 UTF-8 인코딩하도록 추가 작업

https://pypi.org/project/jamotools/

추가수정 : 유니코드 한글이 왜 자모로 변환되었는지 찾았습니다. lLyrics에서 NFKD로 정규화를 해서 Hangul Jamo로 전환되었던거네요.

lLyrics.py:492:        artist = unicodedata.normalize('NFKD', artist)

lLyrics.py:494:        title = unicodedata.normalize('NFKD', title)

jamotools 대신 unicodedata를 쓰는 것으로 바꿨습니다.

ALSongLyricsParser.py:52:            title = unicodedata.normalize("NFC", self.title),

ALSongLyricsParser.py:53:            artist = unicodedata.normalize("NFC", self.artist),


작업한 소스 저장소 :

https://github.com/jang574/lLyrics



unicodedata에서 유니코드 정규화를 지원함.

#!/usr/bin/python3

import unicodedata


text1 = b'\xe1\x84\x80\xe1\x85\xb5\xe1\x86\xaf\xe1\x84\x80\xe1\x85\xa1\xe1\x84\x8b\xe1\x85\xa6'

text2 = b'\xea\xb8\xb8\xea\xb0\x80\xec\x97\x90'


print("text1 : {}".format(text1.decode('utf-8')))

print("text2 : {}".format(text2.decode('utf-8')))


print("------ text1 -------")

for c in text1.decode('utf-8'):

    print( unicodedata.name(c))


print("------ text2 -------")

for c in text2.decode('utf-8'):

    print( unicodedata.name(c))


print("------ Normalize text1 using NFC -------")

for c in unicodedata.normalize("NFC", text1.decode('utf-8')):

    print( unicodedata.name(c))


print("------ Normalize text2 using NFD -------")

for c in unicodedata.normalize("NFD", text2.decode('utf-8')):

    print( unicodedata.name(c))

출력

text1 : 길가에

text2 : 길가에

------ text1 -------

HANGUL CHOSEONG KIYEOK

HANGUL JUNGSEONG I

HANGUL JONGSEONG RIEUL

HANGUL CHOSEONG KIYEOK

HANGUL JUNGSEONG A

HANGUL CHOSEONG IEUNG

HANGUL JUNGSEONG E

------ text2 -------

HANGUL SYLLABLE GIL

HANGUL SYLLABLE GA

HANGUL SYLLABLE E

------ Normalize text1 using NFC -------

HANGUL SYLLABLE GIL

HANGUL SYLLABLE GA

HANGUL SYLLABLE E

------ Normalize text2 using NFD -------

HANGUL CHOSEONG KIYEOK

HANGUL JUNGSEONG I

HANGUL JONGSEONG RIEUL

HANGUL CHOSEONG KIYEOK

HANGUL JUNGSEONG A

HANGUL CHOSEONG IEUNG

HANGUL JUNGSEONG E


ARM 입장에서는 x86,PowerPC,MIPS 등의 ISA보다 RISC-V를 위협적인 경쟁 ISA로 간주했는지

https://riscv-basics.com/ 사이트를 만들었다가 닫았다.

아카이브된 사이트 https://web.archive.org/web/20180708231736/https://riscv-basics.com/


이 때문에 오히려 anti-ARM 사이트(https://www.arm-basics.com/)가 만들어지고,

RISC-V를 광고해주는 상황이 되었다.


SiFive에서 28nm 공정의 RISC-V SoC와 Embedded Linux를 돌릴수 있는 Developer Board가 나온 상태이고,

https://www.sifive.com/products/hifive-unleashed/


쟁쟁한 회사들이 맴버로 지원하고 있으니, 위협적으로 느꼈을지도 모르겠다.

https://riscv.org/members-at-a-glance/


SiFive의 한국인 Co-Founder & CTO를 보면서 (https://www.sifive.com/about/team/)

예전의 "한국형 CPU 코어 상용화 사업"기사와 RISC-V로 대동단결해야 한다는 클리앙 댓글이 생각나 마음이 씁쓸하다.

https://www.clien.net/service/board/news/8983618

http://www.etnews.com/20170814000461



Ubuntu 14.04 LTS 64bit 기준으로 정리.

https://www.tensorflow.org/install/install_linux


위 링크에 virtualenv를 이용하여 설치하는 내용도 정리되어 있다.

하지만, 실제 따라해 보니 아래와 같이 설치할 수 있는 패키지가 없다고 한다.

$ pip install --upgrade tensorflow

Downloading/unpacking tensorflow

  Could not find any downloads that satisfy the requirement tensorflow

Cleaning up...

No distributions at all found for tensorflow

Storing debug log for failure in /home/oooo/.pip/pip.log


~/.pip/pip.log 를 보면 현재 리눅스 머신에 설치되어 있는  python과 호환이 안된다고 모두 건너뛴다.

Downloading/unpacking tensorflow

  Getting page https://pypi.python.org/simple/tensorflow/

  URLs to search for versions for tensorflow:

  * https://pypi.python.org/simple/tensorflow/

  Analyzing links from page https://pypi.python.org/simple/tensorflow/

    Skipping https://pypi.python.org/packages/00/16/c8ba385fc6511ca362f32326cd1d6a99bbbabbc8341607ff70c290e0be7b/tensorflow-0.12.1-cp34-cp34m-manylinux1_x86_64.whl#md5=981c0a406eb9865423b11c03b489040d (from https://pypi.python.org/simple/tensorflow/) because it is not compatible with this Python

...

    Skipping https://pypi.python.org/packages/7e/7c/f398393beab1647be0a5e6974b8a34e4ea2d3cb7bd9e38bd43a657ed27d1/tensorflow-1.0.1-cp27-cp27mu-manylinux1_x86_64.whl#md5=5c88e656fcd34cd89d4cf48d3ec7dd67 (from https://pypi.python.org/simple/tensorflow/) because it is not compatible with this Python
...

python은 Ubuntu 14.04에서 배포되는 버전이다.
$ python --version
Python 2.7.6

$ dpkg -l python2.7
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================
ii  python2.7      2.7.6-8ubunt amd64        Interactive high-level object-ori

$ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sysconfig
>>> print(sysconfig.get_config_vars('CONFIG_ARGS'))
["'--enable-shared' '--prefix=/usr' '--enable-ipv6' '--enable-unicode=ucs4' '--with-dbmliborder=bdb:gdbm' '--with-system-expat' '--with-system-ffi' '--with-fpectl' 'CC=x86_64-linux-gnu-gcc' 'CFLAGS=-D_FORTIFY_SOURCE=2 -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security ' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro'"]
>>> 
>>> import pip
>>> print(pip.pep425tags.get_supported())
[('cp27', 'cp27mu', 'manylinux1_x86_64'), ('cp27', 'cp27mu', 'linux_x86_64'), ('cp27', 'none', 'manylinux1_x86_64'), ('cp27', 'none', 'linux_x86_64'), ('py2', 'none', 'manylinux1_x86_64'), ('py2', 'none', 'linux_x86_64'), ('cp27', 'none', 'any'), ('cp2', 'none', 'any'), ('py27', 'none', 'any'), ('py2', 'none', 'any'), ('py26', 'none', 'any'), ('py25', 'none', 'any'), ('py24', 'none', 'any'), ('py23', 'none', 'any'), ('py22', 'none', 'any'), ('py21', 'none', 'any'), ('py20', 'none', 'any')]

위 정보에 따르면, 현재 기준으로 https://pypi.python.org/pypi/tensorflow
에서 tensorflow-1.2.0rc1-cp27-cp27mu-manylinux1_x86_64.whl
설치가능 해야 하는데 안됨.

구글링하여, cp27-none 으로 설치.
$ pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.2.0rc1-cp27-none-linux_x86_64.whl
$ pip install https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.2.0rc1-cp27-none-linux_x86_64.whl


현재 ubuntu는 locate 명령을 위해 mlocate 패키지를 제공하는데,

mlocate 을 설치하면, cron.daily 에 updatedb.mlocate을 등록해 놓고,

매일마다 파일을 미리 인덱싱하여 DB(/var/lib/mlocate/mlocate.db)에 저장하도록 한다.


개인적으로 소스 컴파일 후에 결과물의 파일을 검색하는 경우가 많은데,

이전날 인덱싱한 DB가 이런 경우 별로 도움이 되지 않아서

locate 명령을 않 쓰고, find 명령으로 검색을 한다.


만약 locate 명령을 안 쓴다면, 과감히 mlocate 패키지를 지우자.

sudo apt-get purge mlocate


밤마다, cron.daily로 하드 긁는 소리도 없어지고,

DB 파일도 지워서 HDD에 여유공간도 생긴다. (내 경우는 약 500MB)

최근 Qualcomm의 NXP인수삼성의 Harman인수 발표를 하면서,IoT/Automotive IT관련 시장에도 변화가 있을 것으로 보인다.

Qualcomm의 경우, 통신/모바일 분야에서 NXP를 인수하면서 IoT관련 분야에도 많은 제품군을 가지게 되는데, 관련 제품들이 어떤 것들이 있는지 NXP의 최근 마케팅 문서를 검색해 보았는데, 2016년 6월 NXP 중국 지역 마케팅에서 작성한 문서가 NXP의 최근 제품군에 대한 정보를 잘 다루고 있다.

IoT-market-and-NXP-Solution-201606.pdf

출처 : http://site.eettaiwan.com/events/iot/201607/pdf/IoT-market-and-NXP-Solution-201606.pdf


티스토리 공지사항에 12/21일에

"데이터 백업 기능 종료 및 관련 메뉴 제거"한다는 내용이 있다.

http://notice.tistory.com/2359


다른 블로그로 이사를 해야 하나, 워드프레스를 써볼까,

이번 기회에 호스팅 회사를 알아볼까 여러 생각을 하다가

그냥 계속 사용하는 것으로 결정했다.

(게을러서 평소에도 블로그를 잘 관리하지 못했기 때문에

다른 곳으로 이전해서 한다고 해도 잘 관리할 자신이 없다^^;)


대신, 블로그 분위기를 좀 바꿔보자는 생각에

스킨을 변경해서 모양새를 바꿔 보았다.^^



며칠전 구글이 브릴로(Brillo)라는 IoT Platform 대신 Android Things라는 IoT Platform을

발표했다. https://developer.android.com/things/index.html


기존 Brillo 링크(https://developers.google.com/brillo)는 Things로 이동된다.

Things를 지원하는 기기는 Intel Edison, NXP Pico, Raspberry Pi3 이다.


이전에 Brillo의 경우 파트너사가, Intel, Marvel, Qualcomm, NXP, Imagination으로

ARM, x86, MIPS 기반의 하드웨어를 지원한다고 했는데,

현재 Things에서는 MIPS (Imagination)이 빠져버렸다.

(Qualcomm은 모르겠다... 지금은 NXP가 Qualcomm인 셈이니...^^;)


개인적인 소감은 IoT Platform으로는 여전히 헤비급 체격이다.

(소총 사격을 할 목표물에 토마호크 미사일을 쏘는 격...)


+ Recent posts