SRF02 초음파 센서를 i2c를 사용하여 파이톤으로 움직였습니다.
2528 단어 RaspberryPi파이썬I2C
초음파 센서 SRF02
아키즈키에서 2400 엔 정도 htp // 아키즈키덴시. 코 m/분 g/g/gM-06685/
・사용 마이크로컴퓨터:16F687-I/ML
· 측정 범위 : 16cm ~ 6m.
・전원:5V(소비 전류 4mA Typ.)
초음파 거리 센서에서 정확도가 좋습니까?
이것을 라즈파이에 연결하여 12c 통신으로 제어
i2c 연결
핀 헤더를 납땜
Mode 핀은 i2c의 경우 미접속
각 핀을 라즈파이에 연결
라즈파이의 경우는 풀업 저항 불필요
터미널에서
sudo i2cdetect -y 1
주소 확인 기본값이라면 0x70(112)이어야 합니다.통제
파이썬으로 프로그래밍
from time import sleep
import smbus
i2c = smbus.SMBus(1)
address = 0x70
SLEEPTIME = 0.5
DELAY = 0.1
if __name__ == '__main__':
try:
print ("cancel:CTRL+C")
cnt = 1
while True:
i2c.write_i2c_block_data(0x70,0x00,[0x51])
time.sleep(DELAY)
block = i2c.read_i2c_block_data(address,0x00,4)
distance = (block[2]<<8 | block[3])
print(int(cnt),distance)
cnt = cnt + 1
time.sleep(SLEEPTIME)
except KeyboardInterrupt:
print("finishing...")
finally:
print("finish!!")
세세하게 쓴다
i2c.write_i2c_block_data(0x70,0x00,[0x51])
0x51이 측정 커맨드 센티미터 단위
(0x50이면 인치)
time.sleep(DELAY)
측정 커맨드 후에는 지연을 걸어야 한다
데이터시트에서는 70ms
block = i2c.read_i2c_block_data(address,0x00,4)
distance = (block[2]<<8 | block[3])
Location2가 High Byte, Location3이 Low Byte
8bit 어긋남 결합
가끔 값이 날아
가끔 위의 프로그램이라면 값이 날 수 있습니다.
분명히 측정에 사용하는 소프트웨어가 다르다.
location0은 Read시 데이터시트에 따르면 "Software Revision"입니다.
평소에는 여기가 6이지만 가끔 134를 돌려준다
값의 의미는 알 수 없습니다 ...
i2c.write_i2c_block_data(0x70,0x00,[0x51])
time.sleep(DELAYTIME)
block = i2c.read_i2c_block_data(address,0x00,6)
if(block[0]==6):
distance = (block[2]<<8 | block[3])
else:
distance = (block[2]<<8 | block[3]) + block[4]
그 경우는 여기에 변경으로 문제 없음
Reference
이 문제에 관하여(SRF02 초음파 센서를 i2c를 사용하여 파이톤으로 움직였습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/jcualrvg/items/8e8f385f35976dcc65e8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)