오픈 하드웨어/라즈베리파이

라즈베리파이 4 초음파 센서 데이터 kafka 연동

hujoo 2023. 6. 15. 23:50

센서 설치 및 개발

 

개발 환경 설치

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 실행