라즈베리파이 4 초음파 센서 데이터 kafka 연동
센서 설치 및 개발
개발 환경 설치
sudo apt-get update
sudo apt-get install python-pip
sudo python -m pip install --upgrade pip setuptools wheel
sudo pip install kafka-python
컴퓨터비전, 데이터 분석을 위해 아래 패키지 설치
하지만, 의존성 문제때문에 여러 에러 발생.. 마침내 설치 완료..
의존성은 다음에 정리하기로..
sudo pip install scikit-learn numpy
sudo pip install opencv-python imageio Pandas Pillow
거리센서 설치 및 코딩
- HC-SR04 연결
- 카프카 sfety 토픽으로 data 생성
주키퍼 실행
bin/zookeeper-server-start.sh config/zookeeper.properties
카프카 서버 실행
bin/kafka-server-start.sh config/server.properties
IoT 토픽 생성
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic IoT
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic IoT
producer에서 메시지 입력하면 consumer에서 보인다.
distance.py 파일 생성
from kafka import KafkaProducer
from json import dumps
import RPi.GPIO as GPIO
import time
producer = KafkaProducer(bootstrap_servers=['localhost:9092'], value_serializer=lambda x: dumps(x).encode('utf-8'))
trig = 23
echo = 24
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM) #Set GPIO pin numbering
GPIO.setup(trig,GPIO.OUT)
GPIO.setup(echo,GPIO.IN)
while True:
GPIO.output(trig, False)
time.sleep(1)
GPIO.output(trig, True)
time.sleep(0.00001)
GPIO.output(trig, False)
while GPIO.input(echo)==0:
start = time.time()
while GPIO.input(echo)==1:
end = time.time()
travelTime = end - start
distance = travelTime * 17150
distance = round(distance, 2)
data = {'dist': distance}
producer.send("safety", value = data)
print("D = ", distance,"cm")
distance.py 실행