More actions
imported>ucyang No edit summary |
(Repair transclusion html wrappers and FootNote macro v4) |
||
| (12 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
{{:틀:계절메타}} | |||
{| class="wikitable" | {| class="wikitable" style="border:1px solid #88ccff; margin-left:auto; display:table;" | ||
|- | |- | ||
| [[File:TryTree__20181224_030802_small.jpg|300]] | | style="background:#88ccff;" | [[File:TryTree__20181224_030802_small.jpg|300]] | ||
|- | |- | ||
| | | style="background:#88ccff;" | <span style="color:white">'''영롱한 자태'''</span> | ||
|} | |} | ||
| Line 15: | Line 15: | ||
= 개요 = | = 개요 = | ||
{| class="wikitable" style="border:1px solid #88ccff; margin-left:auto; margin-right:auto; display:table;" | |||
|- | |||
| style="background:#88ccff;" | [https://www.youtube.com/embed/DDW-GZYvPB0 YouTube 영상] | |||
| style="background:#88ccff;" | <span style="color:white">'''작동 영상''' ''(배경 음악이 있으나 영상 소리가 작으니 음량을 높이길 바란다.)''</span> | |||
|} | |||
: '''Try Tree! 메리 트리스마스!''' | : '''Try Tree! 메리 트리스마스!''' | ||
: [[ZeroPage]] 성탄절 임베디드 트리 만들기 단기 프로젝트 ~~그래프 이론의 트리가 아니다.~~ | : [[ZeroPage]] 성탄절 임베디드 트리 만들기 단기 프로젝트 ~~그래프 이론의 트리가 아니다.~~ | ||
| Line 21: | Line 27: | ||
* ~~만드는 이유? 그저 '''로망'''일 뿐...~~ | * ~~만드는 이유? 그저 '''로망'''일 뿐...~~ | ||
* '''프로젝트가 성공리에 종료되었다.''' | * '''프로젝트가 성공리에 종료되었다.''' | ||
* GitHub: https://github.com/ZeroPage/TryTree | |||
= 감성 주입 = | = 감성 주입 = | ||
| Line 50: | Line 57: | ||
* '''케이블의 접촉 상태가 영 좋지 않은 듯하니 부디 조심히 다루어주기를 바란다.''' | * '''케이블의 접촉 상태가 영 좋지 않은 듯하니 부디 조심히 다루어주기를 바란다.''' | ||
* ~~설마 불나는 건 아니겠지?~~ | * ~~설마 불나는 건 아니겠지?~~ | ||
== 트리 조명 자동 제어 프로그램 == | |||
#!/usr/bin/env python3 | |||
# | |||
# Christmas Tree Lighting | |||
# | |||
import time | |||
import signal | |||
import sys | |||
import RPi.GPIO as GPIO | |||
def sigint_handler(sig, frame): | |||
GPIO.cleanup() | |||
print() | |||
sys.exit(0x1) | |||
signal.signal(signal.SIGINT, sigint_handler) | |||
pins = (6, 13, 19, 26) | |||
pairs = ((0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)) | |||
idxs = tuple(range(8)) | |||
star_idx = len(idxs) - 1 | |||
divtime = 1000 | |||
def light_on(led_idx): | |||
pin1 = pins[pairs[led_idx // 2][0]] | |||
pin2 = pins[pairs[led_idx // 2][1]] | |||
for pin in pins: | |||
if pin == pin1: | |||
GPIO.setup(pin, GPIO.OUT) | |||
GPIO.output(pin, False if led_idx % 2 else True) | |||
elif pin == pin2: | |||
GPIO.setup(pin, GPIO.OUT) | |||
GPIO.output(pin, True if led_idx % 2 else False) | |||
else: | |||
GPIO.setup(pin, GPIO.IN) | |||
GPIO.setmode(GPIO.BCM) | |||
while True: | |||
for i in range(3 * divtime): | |||
for idx in idxs: | |||
light_on(idx) | |||
time.sleep(1 / divtime) | |||
for i in range(3): | |||
for i in range(divtime): | |||
for idx in idxs[::2]: | |||
light_on(idx) | |||
light_on(star_idx) | |||
time.sleep(1 / divtime) | |||
for i in range(divtime): | |||
for idx in idxs[1::2]: | |||
light_on(idx) | |||
light_on(star_idx) | |||
time.sleep(1 / divtime) | |||
t = 100 | |||
while (t > 10): | |||
for i in range(3): | |||
for i in range(int(divtime / (len(idxs) * t))): | |||
for idx in idxs: | |||
light_on(idx) | |||
time.sleep(t / divtime) | |||
t /= 2 | |||
# GPIO.cleanup() | |||
= 회고 = | = 회고 = | ||
| Line 89: | Line 168: | ||
= 방명록 = | = 방명록 = | ||
* 죄송합니다 ㅠㅠ - [[우준혁]] | * 죄송합니다 ㅠㅠ - [[우준혁]] | ||
Latest revision as of 13:32, 27 March 2026
| 계절메타 | |||
| 봄 | 여름 | 가을 | 겨울 |
| 미정 | 분수 | 미정 | 트리 |
|
| 영롱한 자태 |
개요
| YouTube 영상 | 작동 영상 (배경 음악이 있으나 영상 소리가 작으니 음량을 높이길 바란다.) |
- Try Tree! 메리 트리스마스!
- ZeroPage 성탄절 임베디드 트리 만들기 단기 프로젝트 ~~그래프 이론의 트리가 아니다.~~
- 본 문서가 작성되는 시점에 이미 성탄절까지 초읽기에 돌입한 상황! 약간 해커톤 느낌이 나지 않을까...?
- ~~참여를 희망하는 사람은 어서 아래 참가자 목록에 이름을 남기자. 성탄절은 연인 X 트리와 함께!~~
- ~~만드는 이유? 그저 로망일 뿐...~~
- 프로젝트가 성공리에 종료되었다.
- GitHub: https://github.com/ZeroPage/TryTree
감성 주입
- 자, 떠올려보자.
- 야심한 밤, 뚝딱뚝딱 공들여 완성한 성탄절 Tree...
- 셋, 둘, 하나! 두근거림 속에 온 세상을 밝힐 듯 환히 켜지는 Bool...
- 동시에 은은히 흘러나오는 캐롤...
- 아름답게 반짝이는 ZP 트리 완성!
- 그 자리에서 성공을 자축하며 박수치는 ZP인들...
- 어떤가? 참으로 보람찬 일 년의 마무리가 아닌가?
진행
- 임베디드 트리를 만든다.
- 필요한 것: 맵시 있는 나무, LED(많이), 저항(많이), 전선(이것도 많이), ~~사랑의~~ 배터리 또는 AC/DC 전원, 임베디드 보드(아두이노 또는 라즈베리 파이, 임베디드 칩셋 등) 등
- 필요할 수도 있는 것: EL Wire(네온사인 느낌의 발광 플라스틱 와이어), 하얀 솜, 산타 할아버지 인형 등
- ~~트리를 놓을 장소는 나중에 정한다.~~
결과
- 성공
- 라즈베리 파이 2 모델 B를 사용해 GPIO로 트리 LED 제어.
- 적색 LED 4개와 녹색 LED 3개를 트리에 얹었고 황색 LED 5개는 별 모양으로 연결해 트리에 붙임.
- 찰리 플렉싱을 활용해 적은 케이블로 다수의 LED를 효율적으로 제어.
- LED는 총 3가지의 ~~흔한~~ 유형으로 계속 변하면서 Bool 들어옴.
- 전체 점등.
- 적색, 녹색 교대 점등(별은 항상 점등).
- 전체 LED 하나씩 순서대로 점등하되 점점 속도가 빨라져 동시에 반짝이는 상태가 됨.
- 라즈베리 파이 OS에서 부팅 시 자동으로 트리 조명 프로그램이 실행되도록 설정함.
- 라즈베리 파이에 전원을 연결하고 잠시 부팅을 기다리기만 하면 곧 자동으로 트리가 빛난다.
- 케이블의 접촉 상태가 영 좋지 않은 듯하니 부디 조심히 다루어주기를 바란다.
- ~~설마 불나는 건 아니겠지?~~
트리 조명 자동 제어 프로그램
#!/usr/bin/env python3
#
# Christmas Tree Lighting
#
import time
import signal
import sys
import RPi.GPIO as GPIO
def sigint_handler(sig, frame):
GPIO.cleanup()
print()
sys.exit(0x1)
signal.signal(signal.SIGINT, sigint_handler)
pins = (6, 13, 19, 26)
pairs = ((0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3))
idxs = tuple(range(8))
star_idx = len(idxs) - 1
divtime = 1000
def light_on(led_idx):
pin1 = pins[pairs[led_idx // 2][0]]
pin2 = pins[pairs[led_idx // 2][1]]
for pin in pins:
if pin == pin1:
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, False if led_idx % 2 else True)
elif pin == pin2:
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, True if led_idx % 2 else False)
else:
GPIO.setup(pin, GPIO.IN)
GPIO.setmode(GPIO.BCM)
while True:
for i in range(3 * divtime):
for idx in idxs:
light_on(idx)
time.sleep(1 / divtime)
for i in range(3):
for i in range(divtime):
for idx in idxs[::2]:
light_on(idx)
light_on(star_idx)
time.sleep(1 / divtime)
for i in range(divtime):
for idx in idxs[1::2]:
light_on(idx)
light_on(star_idx)
time.sleep(1 / divtime)
t = 100
while (t > 10):
for i in range(3):
for i in range(int(divtime / (len(idxs) * t))):
for idx in idxs:
light_on(idx)
time.sleep(t / divtime)
t /= 2
# GPIO.cleanup()
회고
- 시기가 좋지 않았다.
- 늦은 시험 기간 + 성탄절이 코 앞인 연말 ≒ 프로젝트 공중분해
- 자금난으로 부품이 너무 부족했다.
- 적외선 수신부 센서와 리모컨으로 원격 조종 트리를 만들고 싶었으나 부품 확보 실패.
- 버저를 이용해 캐럴 재생 기능도 넣고 싶었지만 역시 부품 확보 실패.
- 트리에 이런저런 장식을 달고 싶었으나 그럴 겨를이 없었다.
- 인력난으로 프로젝트가 심히 지루했다.
- 다 같이 연말연시를 기념하는 분위기를 꿈꿨으나 좌절...
- 내년에는 좀 더 제대로 트리를 만들어보고프다.
진행 상황
2018/12/20
- 프로젝트가 생겼다. ~~응애~~
2018/12/22
- ~~장렬하게 기말고사 종료.~~
- 상도역 근처의 모든 게 다 있다는 그곳에서 가성비 갑 성탄절 나무(2000원, 장식 없음)와 충전기(5000원) 구매.
- ZP실의 ~~아두이노가 새것이라 못 뜯고~~ 라즈베리 파이 2 모델 B를 사용하기로 결정.
- ZP실 아두이노 상자 속 LED(황색 5개, 적색 4개, 녹색 3개, 총합 12개), 저항(4개), 점퍼 케이블(좀 많이), 빵판을 확보.
- 라즈베리 파이 GPIO 정상 동작 확인.
- 시범 삼아 LED 몇 개 연결함. 멀쩡히 Bool 들어옴.
- LED 별을 붙이는 건 다음날을 기약.
2018/12/23
- 적색, 녹색 LED 전체를 각각 점퍼 케이블로 연결. 접촉이 조금 안 좋은 듯...
- ~~정말 힘들게~~ 별 모양으로 황색 LED 5개 연결. ~~하라는 납땜은 안 하고 테이프 덕지덕지 붙임.~~
- 나무에 LED 얹고 빵판에 케이블 연결.
- 찰리 플렉싱 기술을 활용해 적은 케이블로 효율적인 조명 처리 프로그램 개발.
- 라즈베리 파이에 부팅 시 자동 시작 프로그램으로 조명 프로그램을 등록.
- ~~영상&사진 찍어서 대화방에 올림. 근데 칭찬 별로 못 받음.~~
참가자
방명록
- 죄송합니다 ㅠㅠ - 우준혁
