라즈베리팡팡

I2C통신의 장거리 전송 본문

라즈베리파이

I2C통신의 장거리 전송

prasowa 2020. 1. 18. 14:35

I2C 통신으로 100m 정도 떨어져 있는 장치의 센서부터 데이터를 받아 올 수 있을까?

 

지금까지는 센서와 1m 정도 연장해서 측정했고, 100m라는 거리는 별로 생각하지도 않았지만

혹시 무슨 방법이 있을까 알아본 내용을 정리해둔다.

 

 

 

1. I2C 통신 케이블의 최대 거리?

"I2C는 애초에 장거리를 위해 설계되지 않았고, 일반적으로 연장해서 사용하지 않는다.

케이블의 길이가 길어지면 자체 저항이 높아지게 되며, 따라서 그만큼 노이즈의 영향을 받기 쉽게 된다."

 

라고 하는데 최대 거리가 명확하게 나와 있는 곳은 없었다.  i2c의 속도, 사용한 케이블, 풀업 저항 등 조건에 따라 달라지겠지만 대체로 I2C는 HDMI와 같은 케이블을 사용하므로 수 미터 정도는 올바르게 작동한다고 한다. 그 이상 케이블을 연장하여 사용하기 위해선 i2c버퍼를 이용하거나 다른 통신방법을 사용한다. 구글링 결과 2~3m, 5m의 케이블에서도 버퍼를 찾는 경우가 있어서 10m 이내에서 통신이 가능한지 간단하게 테스트해 보기로 했다.

 

22AWG 실리콘전선 사용
node-red 대시보드

라즈베리파이와 BME280 센서의 거리를 늘려서 데이터를 확인해 보았다. 처음 2m 정도의 길이에서 별 다른 문제가 없었기에, 남은 케이블을 이용해서 총 8.2m의 거리에서 측정했는데 눈에 띄는 오차나 노이즈는 볼 수 없었다. 버퍼의 도움 없이도 10m 이내의 통신은 가능할 것으로 보인다. 얼마나 늘려도 가능한지 테스트해보고 싶지만 남은 케이블이 없어서 다음 기회로..

 

 

2. 10m 이상의 장거리에서의 통신 방법은?

I2C버퍼 - 풀업 전압을 높게, 풀업 저항값은 낮춰서  I2C 버스의 전류를 앞당기는 방법. 이러한 방법은 버스의 임피던스도내려가기 때문에, 노이즈에 대한 내성도 당연히 향상된다. 케이블의 양 끝에 버퍼를 연결한다.  >>> P82 B96, PCA9600 모델번호. 연장 가능 거리는 20m 정도.

이외에 통신방법으로는 500 kbits/1s, 최대 거리 100m까지 가능한 can버스 통신이나 rs485 등이 있다. 찾아본 바로는 20m 이상 장거리 통신에 I2C방식은 어울리지 않는 것 같다. 혹시 다른 방법이 있다면 차후에 추가해야겠다.

 

라즈베리파이의 I2C를 PCA9600를 이용해 16m LAN케이블에 연결. 센서는 BME280.

 

 

참고 링크들

 

1 Comments
댓글쓰기 폼