본문 바로가기
Projects/센서 모니터링 시스템

[센서 모니터링 시스템] 3. I2C 포트 제어하기

by DevJaewoo 2022. 8. 17.
반응형

I2C 포트 제어하기

I2C 센서들과 통신하기 위해 포트를 열어줘야 한다.

라즈베리파이 설정 창을 열어 I2C를 열어준다.

 

sudo raspi-config

 

I2C 설정

 

그 다음 I2C 제어를 위한 패키지들을 설치해준다.

 

sudo apt-get install i2c-tools
sudo apt-get install python3-smbus

 

아래 명령어를 통해 현재 연결된 Slave들의 주소를 확인할 수 있다.

 

i2cdetect -y 1 //i2c-1
i2cdetect -y 0 //i2c-0

 

아래와 같이 0x68 (MPU6050), 0x5B(CCS811) 2개가 뜨는것을 볼 수 있다.

ajw@raspberrypi:~ $ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- 5b -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

 

아래와 같이 파이썬에서도 통신이 잘 되는것을 확인할 수 있다.

ajw@raspberrypi:~/sensor-monitoring-system/raspberrypi $ python3
>>> import smbus
>>> i2c = smbus.SMBus(1)
>>> i2c.read_i2c_block_data(0x5b, 0x20, 1)
[129]

 

위의 코드는 CCS811의 HW_ID를 조회한 것으로, 데이터시트에 따르면 0x81이 나와야 정상이다.

10진수 129는 16진수 0x81이니 잘 나온것을 확인할 수 있다.

데이터시트 일부

 

이제 통신이 됐으니 센서 모듈을 개발해보자.

반응형