이번 글에서는 라즈베리파이와 Python을 활용하여 초음파 센서로 물체의 접근을 감지하고, 일정 거리 이내일 경우 LED를 켜며 그 시점을 SQLite DB에 저장하는 방법을 소개합니다. 초보자도 따라할 수 있는 IoT 실습 예제입니다.

🔧 필요한 부품
- 라즈베리파이 (Raspberry Pi)
- HC-SR04 초음파 센서
- LED (1개)
- 점퍼 케이블
- CNDI 보드 (선택 사항)
- SQLite3 (파이썬 내장)
🛠 GPIO 라이브러리 설치
- 아래 사이트에서 GPIO 패키지 다운로드: 🔗 GPIO 다운로드 링크
- 터미널에서 다음 명령어 실행:
cd /home/pi/Downloads
tar zxvf RPi.GPIO-0.7.0.tar.gz
cd RPi.GPIO-0.7.0
sudo apt-get install python-dev
sudo python setup.py install
📌 회로 구성 (핀 연결)
- LED: GPIO 4
- 초음파 센서 Trigger: GPIO 24
- 초음파 센서 Echo: GPIO 23


🔄 LED 동작만 테스트해보고 싶다면?
💻 Python 예제 코드 (DB 기록 포함)
import RPi.GPIO as gpio
import time
import sys
import warnings
import sqlite3
from datetime import datetime
warnings.filterwarnings('ignore')
# DB 초기 설정
table = "inout_"
sqlselect = "select * from " + table
con = sqlite3.connect("INOUT_DATA.db")
cur = con.cursor()
# 핀 지정
LED = 4
TRIGER = 24
ECHO = 23
gpio.setmode(gpio.BCM)
gpio.setup(TRIGER, gpio.OUT)
gpio.setup(ECHO, gpio.IN)
gpio.setup(LED, gpio.OUT)
try:
while True:
gpio.output(TRIGER, gpio.LOW)
time.sleep(0.1)
gpio.output(TRIGER, gpio.HIGH)
time.sleep(0.00002)
gpio.output(TRIGER, gpio.LOW)
while gpio.input(ECHO) == gpio.LOW:
startTime = time.time()
while gpio.input(ECHO) == gpio.HIGH:
endTime = time.time()
period = endTime - startTime
dist_cm = round(period * 17241, 2)
if dist_cm <= 20:
print('🔔 접근 감지! LED ON')
gpio.output(LED, gpio.HIGH)
time.sleep(1)
gpio.output(LED, gpio.LOW)
time.sleep(1)
cur.execute("INSERT INTO " + table + " (Date) VALUES (\"" + str(datetime.now()) + "\")")
con.commit()
cur.execute(sqlselect)
print("\n[기록된 DB 내역]")
while True:
row = cur.fetchone()
if row is None:
break
print(row[0], row[1])
print(f"현재 거리: {dist_cm} cm")
except KeyboardInterrupt:
print("프로그램 종료 및 GPIO 정리")
con.close()
gpio.cleanup()
sys.exit()
📌 마무리 요약
- 초음파 센서로 물체 접근을 감지함
- 감지 거리가 20cm 이하일 경우 LED 작동
- 그 시점은 SQLite DB에 자동 저장됨
이 코드는 간단한 보안 알림 시스템이나 출입 감지 시스템의 기초로 확장할 수 있습니다. 실시간 모니터링이나 로그 분석 기능도 더해보세요! 😎