Skip to content

psy1218/blink

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔽 임베디드통신 과제 목록


🎮 10주차 과제 내용 포표 🎮 RC 기반 LED 제어 시스템 (R9DS + Arduino + 조종기 AT9)

이 프로젝트는 RadioLink AT9 조종기 + R9DS 수신기 + Arduino를 사용하여
PWM 신호를 통해 3가지 LED 동작을 무선으로 실시간 제어하는 시스템입니다.

🎯 구현 목표

  • RC 조종기의 채널 입력값을 해석하여,
  • 모드 스위치(PWM)로 LED 동작을 선택하고,
  • 3가지 기능을 각각 수행

📷 시연 영상

프로젝트 시연 영상

⚙️ 사용 부품

항목 모델 설명
조종기 RadioLink AT9 CH3, CH5, CH6, CH9 채널 사용
수신기 RadioLink R9DS 9채널 PWM 출력 수신기
마이크로컨트롤러 Arduino Uno
LED 1 빨간색 단색 LED On/Off 전용
LED 2 노란색 단색 LED 밝기 제어용
LED 3 RGB 공통 음극 모듈 색상 제어용
저항 LED 보호용
점퍼선 연결용

🔌 배선도

수신기(R9DS) → Arduino

수신기 채널 용도 Arduino 핀
CH3 (Signal) 제어 입력 값 A0
CH5 (Signal) On/Off 모드 A1
CH6 (Signal) 밝기 제어 모드 A2
CH9 (Signal) 색상 제어 모드 A3
CH3 (VCC) 전원 공유 5V
CH3 (GND) 공통 GND GND

Arduino → LED

Arduino 핀 연결 대상 설명
D3 빨간 LED + 저항 On/Off
D5 노란 LED + 저항 밝기 PWM
D6 RGB 모듈 R핀 + 저항 색상 제어
D9 RGB 모듈 G핀 + 저항 색상 제어
D10 RGB 모듈 B핀 + 저항 색상 제어

웹 UI 웹 UI


🧠 기능 요약

기능 조종기 채널 작동 조건 설명
🔴 빨간 LED On/Off Ch5 (모드), Ch3 (입력값) Ch5 > 1500 → Ch3 > 1500이면 ON 단순 ON/OFF 제어
🟡 노란 LED 밝기 조절 Ch6 (모드), Ch3 (입력값) Ch6 > 1500 Ch3(10002000μs) → PWM(0255)
🌈 RGB 색상 제어 Ch9 (모드), Ch3 (입력값) Ch9 > 1500 Ch3(10002000μs) → Hue(0360°) → HSV → RGB 출력

🔄 동작 방식

  1. 조종기 조작 → 수신기 PWM 출력 (CH3, CH5, CH6, CH9)
  2. 아두이노가 PinChangeInterrupt로 모든 PWM 신호 실시간 수신
  3. CH5/CH6/CH9 각각의 모드가 ON일 때만 CH3의 제어값을 적용
  4. 각 LED에 맞는 출력 방식으로 제어 수행
  5. 모드가 꺼지면 해당 LED 즉시 OFF

✅ 시스템의 장점

  • 3개의 기능이 완전히 독립적으로 동작
    → On/Off, 밝기 조절, 색상 전환이 동시에 가능

  • 하나의 조종기 다이얼로 3가지 기능을 모두 제어 가능
    → 입력 채널(CH3) 재사용으로 자원 효율 극대화

  • 실시간 반응 속도
    → PinChangeInterrupt 기반으로 polling 없이 정확한 PWM 처리

  • 모드 스위치를 통한 명확한 제어 분리
    → 의도하지 않은 작동 방지 + 디버깅 편리


🛠️ 시리얼 모니터 디버깅

  • 115200bps로 설정 시 아래와 같이 정보 출력됨:

웹 UI



✋ 4주차 과제 내용 포표 ✋[임베디드통신 - 4주차 과제] 손 제스처 기반 인터랙티브 캔버스 UI

본 프로젝트는 P5.js와 ml5.js의 handPose 모델을 활용하여 손 제스처로 드로잉 및 UI 제어가 가능한 인터랙티브 웹 애플리케이션입니다.


📷 시연 영상

프로젝트 시연 영상

🧰 사용 기술

  • P5.js: 그래픽 및 인터페이스 구현
  • ml5.js (handPose): 실시간 손 인식 및 제스처 분석
  • HTML/CSS/JS: UI 및 이미지 업로드 처리

📐 화면 구성

위치 크기 설명
상단 (640x480) 웹캠 영상 + 손 인식 + 모드 버튼 제스처 기반 인터랙션
하단 (640x120) 색상 슬라이더 + 이미지 업로드 버튼 드로잉 색상 및 이미지 삽입

🎮 주요 기능

1. 🎛️ 모드 선택 UI

  • 화면 상단 중앙에 good, sad, ok, image 모드 버튼 배치
  • 오른손 검지로 버튼 클릭 시 모드 활성화
  • 활성화된 박스는 파란색(blue), 비활성화는 회색(gray)
  • 활성화된 박스는 2초 뒤 비활성화 (image 모드 제외)

2. 📦 모드별 기능

모드 설명
👍 good 이모지(👍) 다수 생성, 화면 위에서 아래로 낙하하며 흔들림 효과
😢 sad 이모지(😢) 다수 생성, 낙하 효과
👌 ok 이모지(👌) 다수 생성, 낙하 효과
🖼️ image 보자기 제스처(모든 손가락 펼침) 시 손바닥 위에 업로드된 이미지 표시 (양손 가능능)

3. ✏️ 그리기 기능

  • 오른손 엄지 + 검지 접촉 → 실시간 드로잉
  • 접촉 해제 시 → 그리기 종료 및 경로 저장
  • 선 색상: 현재 선택된 HSL 색상 - 삼각형 및 색상 미리보기 존재
  • 선 두께: 왼손 엄지+검지 거리로 실시간 조절

4. 🧽 지우기 기능

  • 오른손 엄지 + 중지 접촉 → 접촉 지점 근처의 그림 일부 삭제
  • 반경 20px 내 그림만 제거
  • 지우는 중에는 표시

5. 🤘 전체 지우기

  • 오른손 락앤롤 제스처
    (엄지와 새끼손가락만 펼침, 나머지 손가락 접힘)
  • 전체 그림 즉시 삭제

6. 📏 선 두께 조절

  • 왼손 엄지 + 검지 간 거리에 따라 2px ~ 20px로 실시간 조절
  • 그림을 그리고 있을 때만 두께를 시각적으로 원형으로 표시

7. 🎨 색상 조절

  • 오른손 엄지 + 약지 접촉 시 색상 슬라이더 제어 모드 활성화
  • 약지의 x좌표에 따라 색상(hue) 값 변경
  • 현재 색상은 엄지 위에 원으로 미리보기 표시

8. 🖼️ 이미지 삽입

  • 이미지 업로드 버튼 클릭 → 로컬 이미지 업로드
  • image 모드 클릭 + 보자기 제스처 → 손바닥에 이미지 표시
  • 이미지 크기는 자동으로 축소되어 표시됨 (최대 400px)

💬 제스처 커맨드 정리

제스처 손 위치 기능
검지로 박스 클릭 오른손 모드 선택
엄지 + 검지 접촉 오른손 그림 그리기
엄지 + 중지 접촉 오른손 일부 지우기
락앤롤 포즈 오른손 전체 그림 삭제
엄지 + 검지 거리 왼손 선 두께 조절
엄지 + 약지 접촉 오른손 색상 조절 (슬라이더 이동)
보자기 제스처 한 손 또는 양손 손바닥에 이미지 표시

⚠️ 예외 처리

  • 이미지 업로드 없이 image 모드 클릭 시 → 화면 중앙에 텍스트: "업로드 된 이미지가 없습니다"


🚦 3주차 과제 내용 포표 🚦 [임베디드통신 - 3주차 과제] 핸드포즈로 신호등 제어하기

📌 개요

기존 아두이노 LED 신호 제어 시스템에 손동작(핸드포즈) 기반 UI를 추가하여,
마우스나 키보드 없이도 체스처로도 LED 신호등을 단계별 제어할 수 있게 만든 프로젝트입니다.

참고 사항: 아두이노 코드는 변경 사항이 없고 UI 디자인 코드에 변경사항이 있습니다.


📷 시연 영상

프로젝트 시연 영상

💡 핵심 기능

기능 설명
✋ 핸드포즈 기반 UI 제어 손 제스처만으로 선택/조작 가능
🤖 단계별 질문 인터페이스 선택지 형태의 질문 UI와 연동된 제스처 선택 시스템
🎨 슬라이더 → 제스처 치환 기존의 밝기 슬라이더 조정을 제스처로도 가능
🔄 동기화된 제어 방식 버튼 클릭/제스처 입력 모두 동일하게 작동되도록 완벽 동기화
↩️ 락앤롤 포즈로 '뒤로가기' 언제든 손동작으로 이전 단계로 이동 가능
🖐️ 양손 지원(각 손마다 독립) 좌우 손 제스처 모두 인식 → 편의성 향상
🔁 프레임 간 변화 감지 기반 작동 손 제스처를 유지하더라도, 처음 인식된 순간에만 한 번만 동작하도록 구현 (오작동 방지)
🎯 LED 사이클 제어 3가지 LED 밝기를 제스처로 직접 조정 가능

🧠 시스템 흐름

  1. 🤖 질문이 UI에 표시됨
  2. ✋ 사용자가 해당 질문에 맞는 손 제스처로 응답
  3. ✅ 선택된 항목에 배경 강조
  4. 🔄 슬라이더 조정, 색상 선택 등 모든 제어가 제스처로 수행
  5. 🤘 락앤롤 포즈로 언제든 이전 단계로 복귀 가능

✋ 제스처 매핑 패턴

제스처 기능 설명 적용 단계
🖐️ 보자기 버튼 모드 선택 / 버튼1 / 빨강 선택 기능 / 버튼 / 색상
✌️ 브이 슬라이더 모드 선택 / 버튼2 / 노랑 선택 기능 / 버튼 / 색상
👌 오케이 버튼3 / 초록 선택 버튼 / 색상
☝️ 검지 위 슬라이더 값 증가 신호 지속 시간 조절
👇 검지 아래 슬라이더 값 감소 신호 지속 시간 조절
🤘 락앤롤 뒤로 가기 모든 단계에서 사용 가능

📷 UI 시연 이미지

  • 화면에는 질문과 선택지가 순서대로 출력됨
  • 선택한 항목은 배경 강조로 시각적 피드백 제공
  • 우측 상단에는 현재 인식된 손동작 이모지가 출력되어 실시간 반응 확인 가능

🖼 웹 UI

웹 UI



🚦 2주차 과제 내용 포표 🚦 [임베디드통신 - 2주주차 과제] 신호등 제어 시스템 (Arduino + p5.js)

이 프로젝트는 아두이노(Arduino)와 p5.js를 활용하여 신호등을 제어하는 시스템입니다.
사용자는 버튼 입력 및 웹 인터페이스를 통해 신호등을 조작할 수 있으며,
LED 밝기 및 지속 시간을 조절할 수 있습니다.


📷 시연 영상

프로젝트 시연 영상

🛠 기능 구현

✅ 1. 실시간 LED 상태 표시 (Arduino → p5.js)

  • 아두이노에서 각 LED(Red, Yellow, Green)의 상태를 p5.js에 실시간 전송
  • 가변저항(Potentiometer) 값을 읽어 LED 밝기를 조절
  • p5.js에서는 투명도(alpha 값)를 이용하여 LED 밝기 표현

✅ 2. LED 지속 시간 조절 (p5.js → Arduino)

  • 웹에서 슬라이더를 사용하여 각 LED(빨강, 노랑, 초록)의 지속 시간(0~4초) 설정 가능
  • 설정된 값은 시리얼 통신을 통해 아두이노에 전송
  • 아두이노에서 전달받은 지속 시간에 따라 LED 점등 시간 변경

✅ 3. 신호등 모드 변경 (Arduino ↔ p5.js)

  • 아두이노 버튼 또는 p5.js의 버튼 UI를 통해 신호등 모드 변경
  • 4가지 모드 지원
    • Normal Mode (기본 신호등 동작)
    • Button 1 Mode (빨간불 고정)
    • Button 2 Mode (모든 LED 깜빡임)
    • Button 3 Mode (LED OFF)
  • p5.js에서 모드 버튼 클릭 시 Arduino에도 실시간 반영 (양방향 통신)

✅ 4. 신호등 밝기 인디케이터 (Arduino → p5.js)

  • 가변저항(Potentiometer) 값(01023)을 0255로 매핑하여 LED 밝기 조절
  • p5.js에서 원형 게이지(arc)를 사용하여 밝기 표시
  • 사용자가 가변저항을 조작하면 실시간으로 밝기 게이지 업데이트

✅ 5. p5.js에서 신호등 모드 버튼을 두 번 클릭하면 원래 상태로 복귀

  • 아두이노처럼 모드 버튼을 다시 누르면 원래 상태(Normal)로 복귀하는 기능 구현
  • 토글 방식 지원
    • 첫 번째 클릭: 해당 모드 활성화
    • 두 번째 클릭: 원래 상태 (Normal)로 복귀

🔗 사용 기술

하드웨어

  • Arduino Uno
  • LED x3 (빨강, 노랑, 초록)
  • 푸시 버튼 x3
  • 가변저항 (Potentiometer) x1
  • 저항 (330Ω ~ 1kΩ) x3
  • 브레드보드 & 점퍼 와이어

소프트웨어

  • Arduino C++ (TaskScheduler 활용)
  • p5.js (Web Serial API 사용)
  • HTML / JavaScript

📌 회로 구성

📍 핀 연결

부품 아두이노 핀 번호
버튼 1 (Button1) D2
버튼 2 (Button2) D3
버튼 3 (Button3) D4
빨간 LED (Red LED) D9
노란 LED (Yellow LED) D10
초록 LED (Green LED) D11
가변저항 (Potentiometer) A0 (아날로그 입력)

📍 하드웨어 연결

🟢 가변저항 (Potentiometer)

  • 왼쪽 핀GND 연결
  • 오른쪽 핀5V 연결
  • 가운데 핀A0 (아날로그 입력) 연결

🟢 LED (Red, Yellow, Green)

  • LED (+) 핀 → 아두이노 D9, D10, D11 연결
  • LED (-) 핀330Ω ~ 1kΩ 저항을 거쳐 GND 연결

🟢 버튼 (Push Button)

  • 버튼의 한쪽(+)D2, D3, D4 (각 버튼별)
  • 버튼의 반대쪽(-)GND 연결

🟢 전원

  • 아두이노 5V → 회로 내 부품(가변저항, 버튼, 센서 등)에 전원 공급
  • 아두이노 GND → 모든 부품과 연결하여 회로 완성

📷 시연 이미지

🖼 웹 UI

웹 UI

🖼 회로도

회로 연결도

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published