안녕하세요?
공식 가이드에 오류가 조금 있어서 헤맸습니다. 라즈베리파이 같은 싱글보드에서만 해보다가..
그럼.. 시작합니다.
공식 가이드는 요기 ㅎㅎ
https://wiki.odroid.com/odroid-h2/application_note/i2c_20x4_lcd
1. 모듈 활성화
자 그럼 일단 i2c-dev 모듈이 기본적으로 활성화가 안되어 있기 때문에 아래의 명령으로 활성화 합니다.
모듈 활성화가 되어 있지 않은 경우 /dev/i2c-* 가 아예 잡히지 않습니다.
root@djjproject:~# modprobe i2c-dev
root@djjproject:~# nano /etc/modules
2. 결선 정보
오드로이드 홈페이지에서 퍼왔습니다.
3. 장치 확인
오드로이드 가이드에는 5번과 6번 둘중에 하나라고 했지만.. 이게 저는 2번으로 되어 있습니다. ㅎㅎ
root@djjproject:~# ls /dev | grep i2c
i2c-0
i2c-1
i2c-2
i2c-3
i2c-4
i2c-5
i2c-6
i2c-7
i2c-8
디텍트 작업을 돌려봅니다. 5번 6번이 아니라 2번임이 들통났습니다.
root@djjproject:~# i2cdetect -y -r 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@djjproject:~# i2cdetect -y -r 2
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- 27 -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@djjproject:~# i2cdetect -y -r 3
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@djjproject:~# i2cdetect -y -r 4
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@djjproject:~# i2cdetect -y -r 5
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@djjproject:~# i2cdetect -y -r 6
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@djjproject:~# i2cdetect -y -r 7
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@djjproject:~#
4. 샘플 코드 받고 돌려보자!
root@djjproject:~# git clone https://github.com/hardkernel/i2c_20x4_lcd.git
fatal: destination path 'i2c_20x4_lcd' already exists and is not an empty directory.
# i2c 번호 수정
root@djjproject:~/i2c_20x4_lcd# nano lcddriver.py
import i2c_lib
from time import sleep
# LCD Address
#ADDRESS = 0x3F
ADDRESS = 0x27
# I2C bus
BUS = 2
# commands
LCD_CLEARDISPLAY = 0x01
LCD_RETURNHOME = 0x02
LCD_ENTRYMODESET = 0x04
LCD_DISPLAYCONTROL = 0x08
LCD_CURSORSHIFT = 0x10
LCD_FUNCTIONSET = 0x20
LCD_SETCGRAMADDR = 0x40
LCD_SETDDRAMADDR = 0x80
# flags for display entry mode
LCD_ENTRYRIGHT = 0x00
LCD_ENTRYLEFT = 0x02
# 샘플 코드 실행
root@djjproject:~/i2c_20x4_lcd# python3 hello_world.py
5. 사진
10분 코딩 결과물입니다. 좀 이뻐지면 깃허브에 ㅎㅎㅎ
import lcddriver as lcd
import os
import psutil as ps
from time import time
from time import sleep
from datetime import datetime
def get_bytes(t, iface='enp2s0'):
with open('/sys/class/net/' + iface + '/statistics/' + t + '_bytes', 'r') as f:
data = f.read();
return int(data)
lcd = lcd.lcd()
#lcd.display_string("11111111111111111111222222222222222222223333333333333333333344444444444444444444", 1)
hostname=str(os.popen('hostname').readline())[:-1]
while True:
# cpuUsage=str(round(float(os.popen('''grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage }' ''').readline()),2))
# tot_m, used_m, free_m = map(int, os.popen('free -t -m').readlines()[-1].split()[1:])
# percentMem=str(round(used_m/tot_m))
lcd.display_string("DJJPROJECT ODROID-H2", 1)
lcd.display_string("",2)
lcd.display_string("CPU:"+str(ps.cpu_percent())+"%"+" "+"MEM:"+str(ps.virtual_memory()[2])+"%", 2)
# dateString = datetime.now().strftime('%b %d %y')
# timeString = datetime.now().strftime('%H:%M:%S')
tx1 = get_bytes('tx')
rx1 = get_bytes('rx')
sleep(1)
tx2 = get_bytes('tx')
rx2 = get_bytes('rx')
tx_speed = round((tx2 - tx1)/1000000.0)
rx_speed = round((rx2 - rx1)/1000000.0)
lcd.display_string("TX: "+str(tx_speed*8).zfill(3)+" RX: "+str(rx_speed*8).zfill(3)+" mbps", 3)
lcd.display_string("TEMP:"+os.popen('sensors | grep "temp1:" | cut -d+ -f2 | cut -c1-2').read()[:-1]+"C", 4)
sleep(1)
영상으로 봅시다!!
'서버 > 리눅스 서버' 카테고리의 다른 글
오드로이드 H2 LCD 개선 (LCD OFF) 및 한방 설치 (0) | 2018.12.09 |
---|---|
오드로이드 H2 하드 절전 패키지 (hd-idle amd64 deb) (0) | 2018.12.03 |
오드로이드H2 네트워크 및 SATA 속도 테스트 (0) | 2018.11.29 |
오드로이드H2 ympd 패키지 & 오드로이드 저장소 (0) | 2018.11.29 |
오드로이드 H2 libva2.4 PlexMediaServer (0) | 2018.11.26 |
댓글