📡
MechDog 센서 활용
초음파 센서와 터치 센서로 스마트한 로봇 만들기
🎯 학습 목표
- • 초음파 센서로 거리 측정하기
- • 터치 센서로 사용자 입력 받기
- • 센서 데이터를 기반으로 LED 제어하기
- • 실제 MechDog 하드웨어 코드 이해하기
- • 조건문과 반복문을 활용한 센서 로직 구현하기
📖 MechDog 센서 시스템
📏 초음파 센서 (Ultrasonic Sensor)
초음파를 이용해 장애물까지의 거리를 측정합니다. MechDog이 벽이나 물체에 부딪히지 않도록 도와줍니다.
📡 작동 원리
- 1. 초음파 발사
- 2. 물체에 반사되어 돌아옴
- 3. 시간 측정으로 거리 계산
- 4. cm 단위로 결과 반환
🎯 활용 예시
- • 장애물 회피
- • 자동 정지
- • 거리 기반 속도 조절
- • 경고 시스템
👆 터치 센서 (Touch Sensor)
사용자의 터치를 감지합니다. MechDog의 머리나 몸체를 터치하여 다양한 명령을 내릴 수 있습니다.
🤚 터치 이벤트
- • 짧은 터치 (클릭)
- • 긴 터치 (홀드)
- • 더블 터치
- • 터치 해제
🎮 제어 가능한 동작
- • 앉기/일어서기
- • 엎드리기
- • 모드 변경
- • 동작 순환
💡 RGB LED 제어
센서 데이터에 따라 LED 색상을 변경하여 MechDog의 상태를 시각적으로 표현합니다.
🌈 LED 색상 의미
빨간색
위험/가까움
위험/가까움
노란색
주의/중간거리
주의/중간거리
파란색
안전/먼거리
안전/먼거리
🔧 실제 MechDog 코드
📏 초음파 센서 코드 분석
# 실제 MechDog 초음파 센서 코드 (ultrasonic_ranging.py)
import Hiwonder
import time
import Hiwonder_IIC
from HW_MechDog import MechDog
# MechDog 객체 초기화
mechdog = MechDog()
# 7-세그먼트 디스플레이 객체 생성
tm = Hiwonder.Digitaltube()
# I2C 통신 객체 생성
i2c1 = Hiwonder_IIC.IIC(1)
# 초음파 센서 객체 생성
i2csonar = Hiwonder_IIC.I2CSonar(i2c1)
# 초기 설정
mechdog.set_default_pose() # 기본 자세 설정
tm.setBrightness(4) # 디스플레이 밝기 설정
time.sleep(1)
def main():
while True:
# 거리 측정
distance = i2csonar.getDistance()
tm.showNum(distance) # 디스플레이에 거리 표시
# 거리에 따른 LED 색상 변경
if distance < 15:
# 15cm 미만: 빨간색 (위험)
i2csonar.setRGB(0, 0xff, 0x00, 0x00)
elif distance > 40:
# 40cm 초과: 파란색 (안전)
i2csonar.setRGB(0, 0x00, 0x00, 0x99)
else:
# 15-40cm: 노란색 (주의)
i2csonar.setRGB(0, 0xfd, 0xd0, 0x00)
time.sleep(0.1)
main()
👆 터치 센서 코드 분석
# 실제 MechDog 터치 센서 코드 (Touch.py)
import Hiwonder
import time
from HW_MechDog import MechDog
# 전역 변수
mechdog = MechDog()
enter_flag = 0 # 버튼 누름 플래그
action_num = 0 # 동작 번호
button2 = Hiwonder.Button(2) # 버튼 객체 생성
mechdog.set_default_pose() # 초기 자세
time.sleep(1)
def main():
global enter_flag, action_num
while True:
if enter_flag == 1: # 버튼이 눌렸을 때
if action_num == 1:
mechdog.action_run("sit_dowm") # 앉기
time.sleep(1.5)
action_num += 1
elif action_num == 2:
mechdog.action_run("go_prone") # 엎드리기
time.sleep(1.5)
action_num += 1
else:
mechdog.action_run("stand_four_legs") # 서기
time.sleep(1.5)
action_num = 1
enter_flag = 0 # 플래그 초기화
else:
time.sleep(0.2)
# 버튼 클릭 콜백 함수
def on_extbutton_clicked():
global enter_flag
enter_flag = 1
# 버튼 이벤트 등록
button2.Clicked(on_extbutton_clicked)
main()
💻 센서 시뮬레이션 실습
센서 시뮬레이션 코드를 실행해보세요!
🎯 고급 도전 과제
다음 기능을 구현해보세요:
- 1. 스마트 경비 시스템: 15cm 이내 물체 감지 시 경고
- 2. 터치 패턴 인식: 연속 터치 횟수에 따른 다른 동작
- 3. 적응형 LED: 시간대별로 다른 색상 표시
- 4. 센서 융합: 거리와 터치를 동시에 고려한 복합 판단
🧠 센서 퀴즈
문제 1: 초음파 센서
거리 5cm일 때 어떤 색 LED가 켜져야 할까요?
빨간색 (위험)
노란색 (주의)
파란색 (안전)
초록색 (정상)
문제 2: 터치 센서
터치 센서 코드에서 콜백 함수의 역할은?
거리를 측정한다
터치 이벤트를 처리한다
LED 색상을 변경한다
모터를 제어한다
문제 3: RGB LED 제어
i2csonar.setRGB(0, 0xff, 0x00, 0x00)는 어떤 색을 나타낼까요?
빨간색
초록색
파란색
흰색
📝 정리
✅ 이번 레슨에서 배운 내용
- • 초음파 센서: getDistance()로 거리 측정
- • 터치 센서: 콜백 함수로 이벤트 처리
- • RGB LED: setRGB()로 색상 제어
- • 실제 하드웨어: Hiwonder 라이브러리 사용법
- • 센서 융합: 다중 센서 데이터 활용
🚀 다음 레슨 미리보기
다음 레슨에서는 색상 인식을 배워봅시다! 카메라 센서로 색상을 감지하고 그에 따라 MechDog이 반응하도록 만들어보겠습니다.