메뉴 전체보기

회원메뉴

LUNARA — 살아 있는 달 > 게시판

본문 바로가기

쇼핑몰 검색

NO. 3384
제목 : LUNARA — 살아 있는 달
2026-09-23 14:37

소개: LUNARA — 살아 있는 달


소개: LUNARA — 살아 있는 달


소개: LUNARA — 살아 있는 달


소개: LUNARA — 살아 있는 달



매일 밤, 달은 허락을 구하지 않고 변합니다. 가느다란 초승달이 반달로 자라고, 반달은 은빛 보름달로 부풀어 오른 뒤, 다시 조용히 어둠 속으로 기울어 갑니다. 사람들이 달을 바라보기 전부터 이어져 온 느리고 고요한 리듬입니다. 저는 그 리듬의 일부가 책상 위에 놓여 있기를 바랐습니다. 달 모양의 정적인 장식물이 아니라, 실제로 달처럼 움직이는 무언가를요. 돌처럼 오래되고 거친 표면과, 창밖 밤하늘처럼 현재적인 정신을 지닌 무언가를 만들고 싶었습니다.

LUNARA는 바로 그런 것입니다. 달이죠. 전체를 흰색 시멘트로 주조한실제 달처럼 분화구가 있고 완벽하지 않은 형태로, 프레임에 장착되어 있으며 개별 제어가 가능한 LED 27개가 내부에서 빛을 냅니다. 이 시멘트 표면 아래에서는 ESP32가 시간을 확인하고 하늘을 살피며 지금 달이 어떤 모습이어야 할지 결정합니다. 받침대의 작은 OLED 디스플레이에는 현재 시간과 실제 달의 위상이 함께 표시됩니다. 즉, 위상 이름(초승달, 보름달, 기우는 볼록달 등)과 해당 위상을 나타내는 작은 그래픽 아이콘이 표시되어, 위에서 비추는 빛이 무엇을 하고 있는지 보여 주는 캡션처럼 작동합니다. Wi-Fi에 연결하면 LUNARA는 단순한 램프에서 기기로 변합니다. 자체 웹 서버를 장치에서 직접 호스팅하므로, 어떤 브라우저에서든 27개의 LED에 접근해 색상, 밝기, 애니메이션을 직접 조절할 수 있습니다. 앱도, 클라우드 계정도 필요 없습니다.

이 지점에서 이 프로젝트는 공모전의 주제와 만납니다. 공모전의 취지는 돌, 콘크리트, 시멘트를 사려 깊고 창의적인 방식으로 사용하라는 것입니다. 구조적인 작품뿐 아니라 형태와 질감을 탐구하는 조형 작품도 포함됩니다. LUNARA는 바로 그 긴장을 중심으로 만들어졌습니다. 시멘트는 누구나 보도와 기초, 영속성과 무게를 연상하는 재료이지, 침대 옆 탁자 위에 놓여 빛을 내는 물건과는 거리가 멉니다. 특히 흰색 시멘트 를 선택하고, 틀에 맡기지 않고 직접 손으로 조형한 것은 제작상의 선택인 동시에 하나의 선언이었습니다. 무게와 영속성으로 정의되는 재료도 달빛처럼 섬세하고 끊임없이 변화하는 것을 담아낼 수 있다는 점을 보여 주기 위해서였습니다.

동기: 단순한 조명이 아닌 변환

이 프로젝트를 진짜로 이끈 것은 단순히 “달 램프를 만들고 싶다”는 마음이 아니었습니다. 회색의 생기 없는 시멘트 덩어리가 어둠 속에서 자체 광원이 있는 것처럼 빛나는 존재로 변하는 과정 자체였습니다. 처음 그 모습을 보면 그 변화가 거의 믿기지 않을 정도입니다. 보통 보도에서 그냥 지나칠 법한, 차갑고 밀도 높으며 완전히 무생물인 재료가 갑자기 내부에서 빛을 내며, 실제 달이 풍경을 가로질러 빛을 드리우듯 방 안에 부드러운 빛을 퍼뜨립니다. 죽은 듯한 무게가 살아 있는 빛으로 변한다는 대비가 LUNARA의 정서적 핵심이며, 제작 과정의 느리고 지저분한 부분을 견디게 해 준 원동력이었습니다.

사실 이 변환은 두 번 일어납니다. 먼저 물리적으로 일어납니다. 매끈하게 주조된 평범한 구체를 사포질하고, 회색 표면에 분화구를 하나씩 손으로 새겨, 건축 자재처럼 보이지 않고 하늘의 한 조각처럼 보일 때까지 달 표면으로 바꿉니다. 그리고 두 번째는 전기적으로 일어납니다. 낮에는 어둡고 눈에 띄지 않는 같은 질감의 시멘트가 뒤에서 LED가 켜지는 순간 살아납니다. 분화구 하나하나가 서로 다르게 빛을 받아, 진정한 입체물만이 낼 수 있는 방식으로 표면 전체가 어둠 속에서 빛납니다. 시멘트 같은 “죽은” 재료가 어둠 속에서도 그 존재감을 유지하고, 단순히 빛을 반사하는 것이 아니라 스스로 빛나는 모습을 본 순간, 이 프로젝트는 단순한 제작을 넘어 내가 만들고자 했던 바로 그 물건처럼 느껴지기 시작했습니다.

왜 시멘트인가, 왜 달인가

시작은 단순했습니다. 고개를 들어 바라보는 것. 달은 거의 모든 사람이 의식하든 그렇지 않든 관계를 맺고 있는 천체입니다. 망원경도, 어두운 하늘을 볼 수 있는 장소도, 앱도 필요 없습니다. 그저 그곳에 있으며, 자기만의 주기에 따라 형태를 바꾸고, 대개는 무심코 눈에 들어옵니다. 달의 클로즈업 사진을 더 많이 살펴볼수록, 그림이나 플라스틱 램프 속 매끈한 원으로 축소될 때 얼마나 많은 질감이 사라지는지 깨달았습니다. 실제 달은 매끈하지 않습니다. 분화구 위에 분화구가 겹쳐 있고, 능선은 고르지 않게 빛을 받습니다. 그 거친 표면이야말로 다듬어 없애야 할 세부가 아니라 진짜 주제처럼 느껴졌습니다.

시중의 대부분의 달 램프는 균일한 빛을 내는 3D 프린팅 플라스틱 구체입니다. 보기에는 좋지만 평면적입니다. 저는 실제로 무언가를 겪은 듯한 모습의 물건을 원했고, 그래서 플라스틱은 즉시 제외했습니다. 흰색 시멘트는 다른 어떤 재료보다 효과적으로 질감 문제를 해결했고, 그 과정은 두 단계로 명확히 나뉘었습니다. 달은 먼저 주조되어 틀 안에서 매끈한 구체가 되었습니다. 최종적인 거친 표면은 아직 없는 깔끔한 기본 형태였습니다. 분화구는 그다음에, 시멘트를 아직 다룰 수 있을 때 그 표면을 손으로 깎고 다듬어 만들었습니다 조각가가 형태를 다루듯 눌러 파내며 작업했고, 틀이 형태를 결정하도록 내버려 두지 않았습니다. 주조는 달에 기하학적 형태와 구조적 견고함을 부여했고, 조각은 달만의 정체성을 부여했습니다. 손으로 다듬는 단계를 건너뛰면 그저 평범한 회색 구체로 남습니다. 다른 어떤 시멘트 주조물과도 다를 것이 없습니다.

조형물에서 기기로

질감이 있는 시멘트 구체는 아무리 그럴듯해도 그 자체로는 여전히 조형물일 뿐입니다. LUNARA를 살아 있는 무언가로 바꾸는 것은 그 뒤에 내장된 모든 요소입니다:

  1. 개별 제어가 가능한 LED 27개가 시멘트 외피의 뒤와 주변에 장착되어, 단일 전구로는 불가능한 수준으로 밝기와 색상을 제어할 수 있게 합니다.
  2. 그리고 ESP32 가 두뇌 역할을 합니다. Wi-Fi 연결을 유지하고, 웹 인터페이스를 호스팅하며, LED 애니메이션을 동시에 실행할 수 있을 만큼 충분한 처리 능력을 갖추고 있습니다.
  3. 또한 SSD1306 OLED 디스플레이 가 받침대 전면에 있어 현재 시간과 실제 달의 위상을 보여 줍니다. 위상은 이름으로 표시되고 작은 아이콘으로도 표현되므로, 앱을 열지 않아도 LUNARA가 무엇을 하고 있는지 알 수 있습니다.
  4. 그리고 자체 호스팅 웹 서버 가 ESP32에서 직접 실행됩니다. 네트워크상의 어떤 브라우저에서도 접속할 수 있으며, 27개 LED 전체의 색상, 밝기, 애니메이션을 완전히 수동으로 제어할 수 있습니다. 원한다면 LED를 개별적으로 제어하는 것도 가능합니다.

LUNARA가 Wi-Fi에 연결되는 순간 ESP32는 NTP를 통해 시계를 동기화하고 실제 현재 달의 위상을 계산한 뒤, 그 정보를 OLED에 바로 표시합니다. 차오르는 달, 보름달, 기우는 달, 초승달 등 바깥에서 실제로 진행 중인 주기에 맞춰 추적합니다. 조명 자체는 웹 인터페이스를 통해 수동으로 제어합니다. 이는 달의 색을 과학적으로 정확하게 재현한 것이 아닙니다(RGB LED로는 근사치만 표현할 수 있기 때문입니다). 하지만 OLED에 표시되는 위상과 브라우저에서 직접 조절하는 조명을 결합하면, LUNARA는 하늘을 외면하는 대신 실제 하늘의 변화에 천문학적으로 근거해 반응할 수 있는 방법을 제공합니다.

시멘트는 변하지 않습니다. 유행이 지나갔다고 해서 금이 가거나, 색이 바래거나, 교체할 필요가 없습니다. 이것이 바로 이 공모전이 지향하는 영속성입니다. 변하는 것은 그 아래에서 조용히 작동하는 모든 것입니다. 밤마다 앞으로 나아가는 달의 위상, 업데이트되는 디스플레이, 다음 명령을 기다리는 LED가 그렇습니다. 유행보다 오래 지속되도록 만들어진 정적인 소재가 끊임없이 움직이는 무언가를 담도록 만들어진 것입니다.

실물 달을 만드는 일은 그 자체로 완전히 별개의 프로젝트가 되었습니다. 흰색 시멘트 구체를 주조한 다음 모든 분화구를 손으로 새겨야 했기 때문입니다. 그리고 바로 그 지점에서 이 작품의 진짜 이야기와 이 Instructable의 나머지 내용이 시작됩니다.




STEP 1. 준비물


준비물


준비물


준비물


준비물



전자 부품

  1. ESP32 개발 보드
  2. SSD1306 OLED 디스플레이
  3. 27 × NeoPixel / WS2812B LED
  4. 500 mAh Li-Po 배터리
  5. TP4056 Li-Po 충전 모듈
  6. 슬라이드 스위치
  7. 연결 전선
  8. 납땜용 납 및 열수축 튜브

달 제작

  1. 흰색 시멘트
  2. 흰색 시멘트를 혼합할 용기
  3. 표면 마감용 사포

️ 3D 프린트 부품

  1. 달 트레이
  2. 달 트레이 홀더
  3. 달 스탠드
  4. 달 스탠드 덮개

️ 추가 준비물

  1. 납땜 장비
  2. 나사/고정 부품
  3. 접착제
  4. 혼합/교반 도구
  5. 보호 장갑
  6. 보안경




STEP 2. Fusion 360으로 부품 3D 설계하기


Fusion 360으로 부품 3D 설계하기


Fusion 360으로 부품 3D 설계하기


Fusion 360으로 부품 3D 설계하기


Fusion 360으로 부품 3D 설계하기


Fusion 360으로 부품 3D 설계하기



LUNARA Moon Lamp의 주요 구조 부품은 Autodesk Fusion 360을 사용해 설계했습니다. 주요 목표는 달을 안전하게 지지하면서 모든 전자 부품을 수납할 충분한 공간을 갖춘 맞춤형 구조를 만드는 것이었습니다.

  1. 다음을 설계했습니다: 맞춤형 달 트레이 시멘트 달을 담고 지지하기 위한 것입니다.
  2. 다음을 설계했습니다: 스탠드/베이스 완성된 달 램프를 위한 것입니다.
  3. 스탠드 내부에 다음 부품을 수납할 공간을 만들었습니다: ESP32, OLED 디스플레이, 배터리, TP4056 모듈 및 배선.
  4. 다음 부품을 위한 전용 공간과 지지대를 설계했습니다: NeoPixel LED.
  5. 모든 부품이 제대로 들어맞도록 치수와 배치를 세심하게 계획했습니다.
  6. 부품은 3D 프린팅 을 염두에 두고 설계했습니다.
  7. 완성된 CAD 모델은 이후 3D 프린팅 및 조립을 위해 준비했습니다.

사용한 소프트웨어: Autodesk Fusion 360

결과물: 맞춤형 3D 프린트 달 트레이 및 전자 부품 스탠드.




STEP 3. 부품 3D 프린팅


부품 3D 프린팅


부품 3D 프린팅


부품 3D 프린팅


부품 3D 프린팅


부품 3D 프린팅


부품 3D 프린팅


부품 3D 프린팅



Autodesk Fusion 360에서 설계를 마친 뒤, Bambu Lab A1 Mini를 사용해 맞춤 부품을 3D 프린팅했습니다. Moon 트레이는 Natural White PLA로 출력했고, 스탠드와 나머지 부품은 Pitch Black PLA로 출력했습니다.

출력 설정

  1. 3D 프린터: Bambu Lab A1 Mini
  2. 필라멘트: PLA
  3. Moon 트레이: Natural White PLA
  4. 스탠드 및 기타 부품: Pitch Black PLA
  5. 노즐: 0.4 mm
  6. 레이어 높이: 0.20 mm
  7. 벽 루프: 3
  8. 채우기: 15%
  9. 채우기 패턴: Gyroid
  10. 상단 셸 레이어: 5
  11. 하단 셸 레이어: 5
  12. 서포트: 필요 없음
  13. 빌드 플레이트: Textured PEI Plate
  14. 출력 방향: 해당되는 경우 평평한 면을 빌드 플레이트에 배치
  15. 베드 접착: Brim 불필요
  16. 출력 속도: Standard PLA profile
  17. 노즐 온도: Bambu PLA 프로파일 설정값
  18. 베드 온도: Bambu PLA 프로파일 설정값
  19. 슬라이싱 소프트웨어: Bambu Studio
  20. 디자인 소프트웨어: Autodesk Fusion 360

출력된 부품은 다음 단계로 넘어가기 전에 치수, 맞춤 상태 및 조립 상태가 적절한지 확인했습니다.




STEP 4. Moon용 백색 시멘트 준비


Moon용 백색 시멘트 준비


Moon용 백색 시멘트 준비


Moon용 백색 시멘트 준비


Moon용 백색 시멘트 준비



이 프로젝트에서 가장 중요한 부분은 적절한 백색 시멘트 농도를 찾는 것이었습니다. 최종 Moon을 만들기 전에 여러 시멘트와 물의 배합 비율을 실험하여 성형하기에 충분히 부드러우면서도 양생 후 세밀한 달 표면 질감을 유지할 만큼 강한 혼합물을 만들었습니다.

필요한 재료

  1. 백색 시멘트 – 500 g
  2. 깨끗한 물 – 300 ml
  3. 혼합 용기
  4. 혼합 막대 또는 스패튤러
  5. 장갑(권장)

완벽한 혼합물 찾기

처음 만든 혼합물은 사용하지 않았습니다. 대신 이 프로젝트에 가장 적합한 농도를 찾을 때까지 물과 백색 시멘트의 양을 달리한 여러 배치를 테스트했습니다.

여러 번 시험한 끝에 다음과 같은 결론을 내렸습니다:

백색 시멘트 500 g + 물 300 ml가 달을 만들기에 가장 이상적인 농도를 제공합니다.

이 비율로 만든 혼합물은 다음과 같았습니다:

  1. 매끄럽고 쉽게 섞였습니다.
  2. 형태를 유지할 수 있을 만큼 걸쭉했습니다.
  3. 분화구와 표면 질감을 정교하게 습식 조각할 수 있을 만큼 부드러웠습니다.
  4. 세부 묘사를 잃지 않고 단단한 달로 굳을 만큼 충분히 강했습니다.

혼합 과정

  1. 혼합 용기에 백색 시멘트 500 g을 넣습니다.
  2. 물을 한꺼번에 넣지 말고 깨끗한 물 300 ml를 조금씩 부어 넣습니다.
  3. 혼합물이 매끄럽고 덩어리 없이 될 때까지 계속 저어 줍니다.
  4. 달의 형태를 만들기에 적합한 걸쭉하고 크리미한 농도가 될 때까지 계속 섞습니다.
  5. 혼합물이 준비되면 시멘트가 굳기 시작하기 전에 즉시 습식 조각 과정으로 넘어갑니다.

💡팁

백색 시멘트 500 g + 물 300 ml가 여러 번의 실험 끝에 찾은 가장 좋은 비율이었습니다. 이 비율은 튼튼하고 내구성 있는 최종 구조를 유지하면서 사실적인 달의 분화구를 조각할 수 있는 충분한 작업 시간을 제공했습니다.





STEP 5. 혼합물을 달 트레이에 붓기


혼합물을 달 트레이에 붓기


혼합물을 달 트레이에 붓기


4단계: 혼합물을 달 트레이에 붓기

이 단계는 백색 시멘트 혼합물을 준비한 직후에 진행했습니다. 나중에 제대로 형태를 만들고 조각하려면 시멘트가 작업 가능한 상태를 유지해야 했기 때문에 혼합과 붓기 사이에 기다리지 않았습니다.

붓는 과정

  1. 3단계를 완료한 직후, 준비한 혼합물 전체를 달 트레이에 부었습니다.
  2. 혼합물이 트레이 전체에 고르게 퍼지도록 부었습니다.
  3. 부은 후 트레이의 여러 면을 부드럽게 두드려 혼합물이 모든 모서리로 퍼지도록 했습니다.
  4. 두드리는 과정은 시멘트가 자연스럽게 가라앉고 수평을 이루는 데도 도움이 되었습니다.
  5. 혼합물이 트레이 전체에서 고르게 수평을 이룰때까지 계속 두드렸습니다.
  6. 완성된 달에 구멍이나 약한 부분이 생길 수 있으므로 갇힌 기포를 제거하는 데 특히 신경 썼습니다.
  7. 눈에 띄는 기포가 표면으로 올라오지 않을 때까지 혼합물을 계속 부드럽게 두드리고 가라앉혔습니다.
  8. 혼합물이 모든 모서리와 영역에 고르게 도달했는지트레이 전체를 확인했습니다.
  9. 다음에 대한 결과가 만족스러울 때까지 이 과정을 계속했습니다: 수평, 분포, 그리고 기포 없는 표면.
  10. 혼합물이 제대로 가라앉으면 다음 단계인 달 표면의 습식 조각을 진행할 준비가 된 것입니다.

💡 중요 팁

혼합물을 준비한 후 기다리지 마세요. 즉시 달 트레이에 붓고, 시멘트가 고르게 퍼지며 갇힌 기포가 제거될 때까지 트레이를 부드럽게 두드리고 가라앉히세요.





STEP 6. 달의 질감 만들기 및 시멘트 건조


달의 질감 만들기 및 시멘트 건조


달의 질감 만들기 및 시멘트 건조


달의 질감 만들기 및 시멘트 건조



시멘트 혼합물이 달 트레이 안에서 고르게 가라앉으면, 분화구와 거친 달 표면 질감을 만들기 시작했습니다. 이 단계에서 달이 자연스럽고 사실적인 모습을 갖추게 됩니다.

🌕 분화구 만들기

  1. 분화구를 만들려면 원하는 분화구 크기에 맞는 매끄럽고 둥근 구형 물체 를 사용할 수 있습니다.
  2. 또는 손가락을 사용해 분화구 모양을 직접 만들 수 있습니다.
  3. 물기가 있는 시멘트에 물체나 손가락을 부드럽게 눌러 원형으로 움푹 들어간 부분을 만듭니다.
  4. 서로 다른 크기와 깊이 의 분화구를 만들어 표면이 더 자연스러워 보이게 합니다.
  5. 실제 달 표면에는 불규칙한 지형이 있으므로 분화구를 완벽하게 균일하게 만들지 마세요.

🪨 거친 달 표면 만들기

  1. 달의 거칠고 울퉁불퉁한 질감을 만들려면 시멘트 표면을 손가락으로 부드럽게 톡톡 두드리세요.
  2. 또한 작은 면 조각이나 스펀지 를 사용해 더 불규칙한 질감을 만들 수도 있습니다.
  3. 재료를 끌기보다는 표면을 가볍게 누르거나 두드리세요.
  4. 표면이 다음과 비슷해질 때까지 질감을 계속 추가하세요: 거칠고 울퉁불퉁한 달의 모습.
  5. 질감을 만들 때 제공된 GIF/이미지를 시각적 참고 자료 로 사용하세요.
  6. 시간을 충분히 들이고 질감을 불규칙하게 유지해야 더욱 사실적인 결과를 얻을 수 있습니다.

⏳ 달 건조하기

  1. 원하는 분화구와 표면 질감을 만든 후, 달을 조심스럽게 어둡고 건조한 곳에 놓습니다.
  2. 24시간동안 그대로 두세요.
  3. 이 기간에는 표면의 세부 형태가 손상되지 않도록 달을 움직이거나 만지지 마세요.
  4. 24시간 후 시멘트가 마르고 달이 다룰 수 있을 만큼 단단해졌는지 확인하세요.
  5. 그러면 달은 다음 조립 및 마감 단계를 진행할 준비가 됩니다.
💡 팁: 표면을 완벽하게 매끄럽거나 대칭으로 만들려고 하지 마세요. 작은 결함과 무작위적인 분화구, 고르지 않은 질감이 시멘트로 만든 달에 자연스러운 특징을 부여합니다.





STEP 7. 코드 이해하기


코드 이해하기


코드 이해하기



시멘트로 만든 달이 건조되고 양생되는 동안, 전자 장치와 프로그래밍 작업을 시작했습니다. ESP32는 LUNARA의 두뇌로, 27개의 NeoPixel LED, OLED 디스플레이, Wi-Fi, 달의 위상 계산, 애니메이션 및 웹 제어 인터페이스를 제어합니다.

이해하지 못한 채 단순히 대형 프로그램을 업로드하는 대신, 전체 시스템을 더 쉽게 이해할 수 있도록 코드를 여러 기능 블록으로 나누었습니다.

1. 라이브러리 및 하드웨어 구성

첫 번째 블록에는 Wi-Fi, 웹 서버, NeoPixel, OLED 그래픽 및 시간 기능에 필요한 라이브러리가 포함됩니다.

#include <WiFi.h>
#include <WebServer.h>
#include <Adafruit_NeoPixel.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <time.h>
#include <math.h>

그런 다음 하드웨어 핀과 디스플레이/LED 구성을 정의합니다:

#define LED_PIN 5
#define NUM_LEDS 27

#define OLED_SDA 21
#define OLED_SCL 22

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1

이 설정은 GPIO 5에 연결된 27개의 NeoPixelGPIO 21 및 22에서 I2C를 사용하는 128×64 OLED를 구성합니다.

2. NeoPixel 및 OLED 설정

코드는 LED 스트립, OLED 디스플레이 및 웹 서버를 제어하기 위한 객체를 생성합니다.

Adafruit_NeoPixel strip(
NUM_LEDS,
LED_PIN,
NEO_GRB + NEO_KHZ800
);

Adafruit_SSD1306 display(
SCREEN_WIDTH,
SCREEN_HEIGHT,
&Wire,
OLED_RESET
);

WebServer server(80);

이를 통해 ESP32는 시스템의 세 가지 주요 부분인 조명, 디스플레이 및 웹 인터페이스와 통신할 수 있습니다.

3. 개별 LED 색상 제어

27개의 LED 각각은 배열에 저장된 고유한 RGB 색상 값을 가집니다.

struct RGB {
uint8_t r;
uint8_t g;
uint8_t b;
};

RGB ledColors[NUM_LEDS];

RGB currentColor = {255, 180, 90};

이를 통해 스트립 전체를 하나의 광원으로 취급하는 대신 LED를 개별적으로 제어할 수 있습니다.

4. 달의 위상 계산

코드는 현재 날짜와 율리우스일 기반 계산 을 사용하여 현재 달의 위상을 추정합니다.

double daysSinceNewMoon =
jd - 2451550.1;

double lunations =
daysSinceNewMoon / 29.53058867;

double phase =
lunations - floor(lunations);

계산된 위상은 다음 8가지 달의 위상중 하나로 매핑됩니다:

moonPhaseIndex = 0;
moonPhaseName = "New Moon";
moonPhaseIndex = 1;
moonPhaseName = "Waxing Crescent";
moonPhaseIndex = 2;
moonPhaseName = "First Quarter";
moonPhaseIndex = 3;
moonPhaseName = "Waxing Gibbous";
moonPhaseIndex = 4;
moonPhaseName = "Full Moon";
moonPhaseIndex = 5;
moonPhaseName = "Waning Gibbous";
moonPhaseIndex = 6;
moonPhaseName = "Third Quarter";
moonPhaseIndex = 7;
moonPhaseName = "Waning Crescent";

8가지 위상과 해당 인덱스 매핑은 코드에 직접 구현되어 있습니다.

5. OLED에 달 그리기

OLED는 달 이미지 파일을 사용하지 않습니다. 대신 달 그래픽은 원과 사각형을 사용하여 동적으로 그려집니다.

display.fillCircle(cx, cy, r, SSD1306_WHITE);

그런 다음 현재 위상에 따라 흰색 원의 일부를 가리기 위해 다양한 검은색 도형을 사용합니다.

예를 들어 초승달은 다음을 사용하여 생성됩니다:

display.fillCircle(
cx - r/2,
cy,
r,
SSD1306_BLACK
);

따라서 프로그램은 계산된 위상에 따라 OLED의 달 그래픽을 자동으로 변경합니다.

6. OLED 정보 표시

기본 OLED 화면은 두 부분으로 나뉩니다.

display.drawLine(64, 0, 64, 63, SSD1306_WHITE);

화면의 왼쪽 에는 현재 시각, 달의 위상 이름 및 위상 인덱스가 표시됩니다:

strftime(
timeBuf,
sizeof(timeBuf),
"%H:%M",
&timeinfo
);

화면의 오른쪽 에는 그래픽으로 표현된 달의 위상이 표시됩니다:

drawMoonGraphic(
moonCX,
moonCY,
moonR
);

이를 통해 128×64 OLED에 천문 정보를 간결하게 직접 표시할 수 있습니다.

7. 색상 프리셋

프로그램에는 12개의 기본 제공 색상 프리셋이 포함되어 있습니다. 각 프리셋은 27개의 모든 LED에 RGB 값을 할당합니다.

예를 들면 다음과 같습니다:

if (preset == "white") c = {255, 255, 255};
else if (preset == "warm") c = {255, 180, 90};
else if (preset == "red") c = {255, 50, 30};
else if (preset == "blue") c = {170, 210, 255};
else if (preset == "gold") c = {255, 208, 60};

선택한 색상이 모든 LED에 적용됩니다:

for (int i = 0; i < NUM_LEDS; i++)
ledColors[i] = c;

showAllColors();


8. 웹 기반 제어 패널

LUNARA의 주요 기능 중 하나는 ESP32 자체가 제어 웹페이지를 호스팅한다는 것입니다.

웹페이지에서는 다음을 제어할 수 있습니다:

  1. 사전 설정 색상
  2. 마스터 밝기
  3. 애니메이션
  4. 개별 LED 색상
  5. 모든 LED 색상
  6. 실시간 달의 위상
  7. 현지 시간

웹페이지는 HTML/CSS/JavaScript 형식으로 ESP32 프로그램 내부에 직접 저장됩니다.

27개의 모든 LED에 대한 개별 LED 제어 항목이 생성됩니다:

for(var i=0;i<27;i++){
var d=document.createElement('div');
d.className='led-box';
d.innerHTML='<span class="led-label">LED '+(i+1)+'</span>'
+'<input type="color" onchange="window.setLED('+i+',this.value)">';
lc.appendChild(d);
}


9. 웹 서버 명령

각 기능을 제어하기 위해 서로 다른 URL이 사용됩니다:

server.on("/", handleRoot);
server.on("/preset", handlePreset);
server.on("/led", handleLED);
server.on("/ledAll", handleLEDAll);
server.on("/animation", handleAnimation);
server.on("/brightness", handleBrightness);
server.on("/status", handleStatus);

이를 통해 웹페이지와 ESP32 사이에 간단한 API가 구성됩니다.

예:

/ → 주 제어 페이지
/preset → 색상 프리셋
/led → LED 개별 제어
/ledAll → 전체 LED 제어
/animation → 애니메이션 제어
/brightness → 밝기 제어
/status → 시간 및 달의 위상

10. LED 애니메이션

코드에는 10가지 애니메이션이 포함되어 있습니다:

ANIM_CHASE
ANIM_COMET
ANIM_THEATER
ANIM_RAINBOW
ANIM_PULSE
ANIM_FIRE
ANIM_SPARKLE
ANIM_TWINKLE
ANIM_WAVE
ANIM_METEOR

활성 애니메이션은 다음을 통해 선택됩니다:

void runAnimation() {
switch (currentAnimation) {
case ANIM_CHASE: animationChase(); break;
case ANIM_COMET: animationComet(); break;
case ANIM_THEATER: animationTheater(); break;
case ANIM_RAINBOW: animationRainbow(); break;
case ANIM_PULSE: animationPulse(); break;
case ANIM_FIRE: animationFire(); break;
case ANIM_SPARKLE: animationSparkle(); break;
case ANIM_TWINKLE: animationTwinkle(); break;
case ANIM_WAVE: animationWave(); break;
case ANIM_METEOR: animationMeteor(); break;
default: break;
}
}


11. 밝기 제어

웹 인터페이스를 통해 NeoPixel 스트립의 전체 밝기를 변경할 수 있습니다.

int brightness = server.arg("value").toInt();

brightness = constrain(
brightness,
1,
255
);

strip.setBrightness(brightness);
strip.show();

이를 통해 개별 LED의 색상 값을 변경하지 않고도 밝기를 조정할 수 있습니다.

12. Wi-Fi 및 NTP 시간

시작 시 ESP32는 Wi-Fi에 연결한 다음 NTP 서버를 사용하여 시간을 동기화합니다.

WiFi.mode(WIFI_STA);

WiFi.begin(
WIFI_SSID,
WIFI_PASSWORD
);

시간대는 인도로 설정되어 있습니다:

const long GMT_OFFSET_SEC = 19800;
const int DAYLIGHT_OFFSET_SEC = 0;

NTP 동기화는 다음을 사용합니다:

configTime(
GMT_OFFSET_SEC,
DAYLIGHT_OFFSET_SEC,
"pool.ntp.org",
"time.nist.gov",
"time.google.com"
);


13. 메인 루프

마지막으로 loop() 함수는 LUNARA의 다양한 기능을 모두 지속적으로 관리합니다.

void loop() {

server.handleClient();

// 달의 위상 갱신
// Refresh OLED
// Run animation

runAnimation();
}

루프는 웹 요청을 처리하고, 시작 시 IP 화면이 표시된 후 OLED 디스플레이를 변경하며, 주기적으로 달의 위상을 다시 계산하고, OLED를 새로 고치며, 선택한 애니메이션을 실행합니다.

🧠 전체 코드 흐름

ESP32 START
Connect to Wi-Fi
NTP를 사용해 시간 동기화
달의 위상 계산
Update OLED
Control 27 NeoPixels
웹 서버 시작
사용자 명령 수신
프리셋 / 색상 / 밝기 / 애니메이션
각 기능을 계속 갱신

이 프로그래밍 단계는 LUNARA에 스마트 기능을 부여하는 동시에 시멘트 달은 계속해서 건조되고 경화됩니다.

본문이 길어 아래 덧글 1개로 계속됩니다.


원문: https://www.instructables.com/LUNARA-the-Living-Moon/

좋아요 0
게시판

본문 계속 1/1




STEP 8. ESP32에 코드 업로드하기


ESP32에 코드 업로드하기


ESP32에 코드 업로드하기


ESP32에 코드 업로드하기


ESP32에 코드 업로드하기


ESP32에 코드 업로드하기


ESP32에 코드 업로드하기


ESP32에 코드 업로드하기



코드를 준비하고 이해한 후, ESP32Arduino IDE를 사용해 프로그래밍했습니다. 프로그램을 업로드하기 전에 필요한 ESP32 보드 패키지, USB 드라이버 및 프로젝트에 필요한 라이브러리를 설치했습니다.

💻 필요한 소프트웨어

  1. Arduino IDE
  2. ESP32용 코드를 작성하고, 컴파일하고, 업로드하는 데 사용됩니다.
  3. 컴퓨터와 호환되는 최신 Arduino IDE 버전을 설치합니다.

🔧 ESP32 보드 패키지

  1. 다음 항목을 엽니다: Arduino IDE.
  2. 다음으로 이동합니다: File → Preferences.
  3. 다음 항목을 찾습니다: Additional Boards Manager URLs.
  4. 공식 Espressif ESP32 패키지 URL을 추가합니다:
https://espressif.github.io/arduino-esp32/package_esp32_index.json
  1. 다음을 클릭합니다: OK.
  2. 다음으로 이동합니다: Tools → Board → Boards Manager.
  3. 다음을 검색합니다: esp32.
  4. 다음을 설치합니다: esp32 by Espressif Systems.
  5. 설치 후 다음 경로에서 적절한 ESP32 보드를 선택합니다:
  6. Tools → Board → ESP32 Arduino.

🔌 USB 드라이버

ESP32 개발 보드에서 사용하는 USB-Serial 칩에 따라 적절한 드라이버가 필요할 수 있습니다.

일반적인 USB-Serial 드라이버는 다음과 같습니다:

  1. CP210x USB to UART Driver
  2. CH340/CH341 USB Driver
  3. FTDI Driver — 특정 보드에서 FTDI 인터페이스를 사용하는 경우에만 필요합니다.

적절한 드라이버를 설치한 후:

  1. 다음과 같은 데이터 전송이 가능한 USB 케이블을 사용해 ESP32를 컴퓨터에 연결합니다.
  2. 다음 항목을 엽니다: Device Manager (Windows).
  3. 다음을 확인합니다: Ports (COM & LPT).
  4. ESP32에 할당된 COM 포트를 확인합니다.

📚 필요한 Arduino 라이브러리

LUNARA 코드는 다음 라이브러리를 사용합니다:

  1. WiFi
  2. ESP32를 Wi-Fi 네트워크에 연결하는 데 사용됩니다.
  3. ESP32 Arduino 보드 패키지에 포함되어 있습니다.
#include <WiFi.h>
  1. WebServer
  2. ESP32에서 직접 호스팅되는 웹 서버를 만드는 데 사용됩니다.
  3. ESP32 Arduino 코어에 포함되어 있습니다.
#include <WebServer.h>
  1. Adafruit NeoPixel
  2. 다음을 제어하는 데 사용됩니다: 개별적으로 주소를 지정할 수 있는 NeoPixel LED 27개.
#include <Adafruit_NeoPixel.h>
  1. Adafruit GFX Library
  2. OLED 디스플레이에 필요한 그래픽 기능을 제공합니다.
#include <Adafruit_GFX.h>
  1. Adafruit SSD1306
  2. 다음을 제어하는 데 사용됩니다: 128×64 SSD1306 OLED 디스플레이.
#include <Adafruit_SSD1306.h>
  1. Time
  2. 시간 동기화 및 시간 관련 기능에 사용됩니다.
#include <time.h>
  1. Math
  2. 달의 위상 계산에 필요한 수학적 계산에 사용됩니다.
#include <math.h>

실제 LUNARA 코드에서 사용되는 라이브러리는 프로젝트 소스 파일의 시작 부분에서 확인할 수 있습니다.

📦 라이브러리 설치

ESP32 코어에 포함되지 않은 라이브러리의 경우:

  1. 다음을 엽니다: Arduino IDE.
  2. 다음으로 이동합니다: Tools → Manage Libraries.
  3. 다음을 검색합니다: Adafruit NeoPixel.
  4. 설치합니다.
  5. 다음을 검색합니다: Adafruit GFX Library.
  6. 설치합니다.
  7. 다음을 검색합니다: Adafruit SSD1306.
  8. 설치합니다.
  9. 필요한 경우 Arduino IDE를 다시 시작합니다.

⚙️ ESP32 선택

보드를 연결한 후:

  1. 다음으로 이동합니다: Tools → Board.
  2. 사용 중인 ESP32 보드 모델을 선택합니다.
  3. 다음으로 이동합니다: Tools → Port.
  4. ESP32에 해당하는 COM 포트를 선택합니다.
  5. 나머지 설정은 선택한 보드와 표준 ESP32 구성에 맞게 유지합니다.

⬆️ 코드 업로드

  1. 다음 파일을 엽니다: LUNARA .ino 파일 Arduino IDE에서.
  2. 필요한 모든 라이브러리가 설치되어 있는지 확인합니다.
  3. 올바른 ESP32 보드를 선택합니다.
  4. 올바른 COM 포트를 선택합니다.
  5. 다음을 클릭합니다: Verify 를 클릭하여 프로그램을 컴파일하고 오류를 확인합니다.
  6. 컴파일이 성공하면 Upload를 클릭합니다.
  7. 컴파일 및 업로드 과정이 완료될 때까지 기다립니다.
  8. IDE에서 ESP32를 다운로드/부트 모드로 전환하라는 메시지가 표시되면, 업로드가 시작되는 동안 BOOT 버튼을 길게 누른 다음 프로그래밍이 시작되면 버튼을 놓습니다.
  9. 업로드가 완료되면 ESP32를 다시 시작합니다.
💡 팁: ESP32가 컴퓨터에서 감지되지 않으면 먼저 USB 케이블을 확인한 다음, 사용 중인 ESP32 보드에 맞는 USB-시리얼 드라이버를 설치합니다.





STEP 9. 연결 이해하기


연결 이해하기



ESP32에 코드를 업로드한 후 다음 단계는 모든 전자 부품이 어떻게 연결되어 있는지 이해하는 것입니다. 배선은 ESP32가 27개의 NeoPixel LED와 OLED 디스플레이를 제어할 수 있도록설계되었으며, 배터리와 충전 회로가 휴대용 전원을 제공합니다.

🔌 주요 연결

1. ESP32 → NeoPixel LED

  1. ESP32 GPIO 5 → NeoPixel DIN (데이터 입력)
  2. ESP32 GND → NeoPixel GND
  3. 5V 전원 → NeoPixel 5V/VCC
  4. NeoPixel은 데이터 체인으로 연결되어 있으며, 데이터 신호는 한 LED에서 다음 LED로 전달됩니다.
  5. ESP32는 단일 데이터 라인을 통해 모든 27개의 LED를 개별적으로 제어합니다.
ESP32 GPIO 5
DIN → LED 1 → LED 2 → LED 3 → ... → LED 27

코드는 GPIO 5를 LED 데이터 핀으로 정의하고 LED 개수를 27개로 설정합니다.

2. ESP32 → OLED 디스플레이

SSD1306 OLED는 I2C를 사용하여 ESP32와 통신합니다.

  1. OLED VCC → ESP32 전원
  2. OLED GND → ESP32 GND
  3. OLED SDA → ESP32 GPIO 21
  4. OLED SCL → ESP32 GPIO 22
ESP32 SSD1306 OLED
───── ────────────
GPIO 21 ───────────► SDA
GPIO 22 ───────────► SCL
GND ───────────► GND
VCC ───────────► VCC

코드는 특히 SDA에 GPIO 21을 사용하도록 설정하고 SCL에 GPIO 22를 사용하도록설정합니다.

3. Li-Po 배터리 → TP4056

Li-Po 배터리는 TP4056 충전 모듈 에 연결되어 충전 및 배터리 관리를 수행합니다.

Li-Po 배터리
TP4056
└── 충전/전원 시스템

TP4056을 사용하면 충전 입력을 통해 Li-Po 배터리를 충전할 수 있습니다.

⚠️ 중요: TP4056은 Li-Po 충전 모듈이며, 자체적으로 배터리 전압을 안정화된 5 V 출력으로 변환하지는 않습니다 . NeoPixel에 단일 셀 Li-Po의 전원을 공급하는 경우, 실제 전원 경로에는 적절한 전압 조정/승압 회로가 포함되어야 합니다.

4. 슬라이드 스위치

슬라이드 스위치는 이 프로젝트의 주 전원을 제어하는 장치 로 사용됩니다.

배터리/전원 회로
슬라이드 스위치
LUNARA 전자부품

이를 통해 배터리를 분리하지 않고도 전체 시스템을 켜거나 끌 수 있습니다.

🔗 전체 연결 흐름

┌─────────────────┐
│ Li-Po 배터리 │
└────────┬────────┘
┌──────────┐
│ TP4056 │
└────┬─────┘
┌──────▼──────┐
│ 슬라이드 스위치│
└──────┬──────┘
┌─────────────┐
│ ESP32 │
└───┬─────┬───┘
│ │
GPIO 5 │ │ I2C
│ │
▼ ▼
┌─────────┐ ┌──────────┐
│ 27 × │ │ SSD1306 │
│NeoPixel │ │ OLED │
└─────────┘ └──────────┘

🧠 모든 구성 요소가 함께 작동하는 방식

  1. 다음은 배터리 는 휴대용 전원을 제공합니다.
  2. TP4056 Li-Po 배터리의 충전을 관리합니다.
  3. 슬라이드 스위치는 주 전원을 제어하는 장치이며 시스템 전원을 제어합니다.
  4. 중앙 컨트롤러 역할을 하는 것은 ESP32 입니다.
  5. GPIO 5 는 27개의 NeoPixel로 데이터를 전송합니다.
  6. GPIO 21 및 22 는 I2C를 통해 OLED와 통신합니다.
  7. OLED에는 시간과 현재 달의 위상이 표시됩니다.
  8. NeoPixel은 달의 조명과 애니메이션을 제공합니다.
  9. Wi-Fi를 사용하면 ESP32의 웹 인터페이스 를 통해 조명을 제어할 수 있습니다.

코드에서 다음 하드웨어 구성이 확인됩니다: GPIO 5에 연결된 27개의 LED 및 다음에 연결된 OLED: SDA 21 / SCL 22.




STEP 10. 인클로저에 모든 부품 조립하기


인클로저에 모든 부품 조립하기


인클로저에 모든 부품 조립하기


인클로저에 모든 부품 조립하기


인클로저에 모든 부품 조립하기


인클로저에 모든 부품 조립하기


인클로저에 모든 부품 조립하기


인클로저에 모든 부품 조립하기


인클로저에 모든 부품 조립하기


인클로저에 모든 부품 조립하기


인클로저에 모든 부품 조립하기


인클로저에 모든 부품 조립하기


인클로저에 모든 부품 조립하기



시멘트로 만든 달이 완전히 마르고 모든 전자 부품이 준비되면, 3D 프린팅 인클로저 안에 모든 부품을 이미지에 표시된 것과 정확히 같은 방식으로조립합니다.

  1. NeoPixel 스트립 설치:
  2. 27-LED NeoPixel 스트립을 달 트레이/인클로저의 지정된 안쪽 가장자리를 따라 단단히 부착합니다. LED가 일정한 간격으로 배치되고 확실히 고정되었는지 확인합니다.
  3. 연결 와이어 배선:
  4. NeoPixel 연결 와이어를 인클로저에 마련된 구멍으로통과시킵니다. 이미지에 표시된 것처럼 배선이 정돈되고 연결부가 내부의 전자 부품까지 닿도록 하는 과정입니다.
  5. ESP32 장착:
  6. 인클로저 내부의 지정된 위치에 ESP32를 놓고 단단히 고정합니다.
  7. 부품 고정:
  8. 다음과 같은 것을 사용합니다: M2 나사 및/또는 적합한 접착제 를 사용하여 전자 부품을 제자리에 고정합니다. 이 프로젝트에서는 M2 나사와 접착제를 모두 사용했으며, 부품과 장착 위치에 따라 달리 적용했습니다.
  9. 배터리 배치:
  10. 500 mAh Li-Po 배터리를 인클로저 내부에 단단히 배치하고, 날카로운 모서리와 나사에서 멀리 떨어뜨려 놓습니다.
  11. OLED 디스플레이 설치:
  12. 인클로저 전면의 개구부에 OLED 모듈을 고정하여 외부에서 디스플레이가 잘 보이도록 합니다.
  13. 슬라이드 스위치 설치:
  14. 슬라이드 스위치를 지정된 개구부에 배치하여 외부에서 쉽게 조작할 수 있도록 합니다.
  15. 배선 정리:
  16. 사용 가능한 채널과 개구부를 통해 모든 전선을 주의 깊게 배선하고 정리합니다. 인클로저를 조립했을 때 전선이 눌리거나 막히지 않도록 합니다.
  17. 참조 이미지 따르기:
  18. 모든 부품을 이미지에 표시된 것과 동일한 위치, 방향 및 배열로 조립합니다. 이미지를 ESP32, 배터리, OLED, 슬라이드 스위치, NeoPixel 스트립, 배선 및 기타 부품의 배치를 위한 주요 참조 자료로 사용합니다.
  19. 최종 점검:
  20. 인클로저를 완전히 닫기 전에 시스템 전원을 켜고 OLED, NeoPixel LED, ESP32 및 조작부가 올바르게 작동하는지 확인합니다. 모든 것이 확인되면 인클로저를 고정하고 조립을 완료합니다.




STEP 11. Moon 조립 및 고정


Moon 조립 및 고정


Moon 조립 및 고정


Moon 조립 및 고정


Moon 조립 및 고정



시멘트로 만든 Moon이 완전히 건조되면 Moon을 인클로저에 단단히 고정한 다음 인클로저를 베이스에 부착합니다.

  1. 인클로저 내부에 Moon 고정:
  2. 건조된 Moon을 Moon 인클로저 내부의 지정된 위치에 조심스럽게 배치합니다.
  3. 순간접착제 도포:
  4. 다음 위치에 순간접착제 를 도포하여 Moon을 고정합니다. 특히 LED 스트립이 부착된 주변의 접촉 지점에 바릅니다.
  5. 고정하는 동안 기다리기:
  6. 시멘트로 만든 Moon은 상당히 무거우므로 서두르지 말고 인내심을 가지세요 . 접착제가 굳는 동안 Moon을 제자리에 단단히 잡고, 이동하기 전에 접착제가 제대로 결합되도록 기다립니다.
  7. 정렬 확인:
  8. Moon을 고정한 후 제대로 정렬되어 있고 인클로저에 단단히 고정되어 있는지 확인합니다. 또한 LED 스트립과 배선이 올바른 위치에 그대로 있는지 확인합니다.
  9. Moon 인클로저를 베이스에 고정:
  10. Moon이 인클로저 내부에 단단히 고정되면 Moon 인클로저를 3D 프린트 베이스에부착합니다. 베이스에 맞게 정렬하고 단단히 고정합니다.
  11. 최종 검사:
  12. Moon이 안정적인지, 인클로저가 베이스에 단단히 부착되어 있는지, 프로젝트를 다룰 때 아무것도 움직이거나 헐거워지지 않는지 전체 조립 상태를 확인합니다.





STEP 12. 사용 및 상호작용 방법


사용 및 상호작용 방법



LUNARA를 완전히 조립한 후 다음 단계에 따라 장치를 사용하고 조작합니다.

  1. 장치 켜기:
  2. 전원 스위치를 ON 위치로 밀어 이동합니다. ESP32가 시스템을 시작합니다.
  3. 시작 화면:
  4. 처음 8초동안 OLED에 장치의 IP 주소가 표시됩니다. 동시에 27개의 NeoPixel LED가 자동으로 따뜻한 흰색 Moonlight로 켜집니다.
  5. Moon 정보 표시:
  6. 8초 후 OLED에는 현재 시각과 Moon의 위상및 해당 Moon 위상 그래픽이 표시됩니다.
  7. 웹 서버에 접속:
  8. 휴대폰, 노트북 또는 컴퓨터를 LUNARA와 동일한 Wi-Fi 네트워크 에 연결하세요. 웹 브라우저를 열고 다음을 입력하세요: OLED에 표시된 IP 주소.
  9. Moonlight 제어:
  10. 웹 서버는 다음 항목을 제어할 수 있는 대화형 제어 패널을 제공합니다:
  11. 다양한 Moonlight 색조
  12. 밝기 수준
  13. LED 애니메이션
  14. 개별 LED 색상
  15. 27개의 LED를 개별적으로 모두 제어:
  16. 각각의 27개 NeoPixel LED를 개별적으로 제어할 수 있어, 나만의 맞춤형 Moonlight 패턴과 색상 조합을 만들 수 있습니다.
  17. 다양한 효과 실험:
  18. 서로 다른 색조, 밝기 수준, 애니메이션을 사용해 LUNARA의 다양한 모습을 연출하고 시멘트 Moon에 역동적인 발광 효과를 더해 보세요.





STEP 13. 결론 — 이것이 중요한 이유


결론 — 이것이 중요한 이유


결론 — 이것이 중요한 이유



LUNARA는 단순한 장식용 Moon 램프가 아닙니다. 이 작품은 수작업으로 만든 시멘트 예술, 3D 프린팅, 전자공학, 프로그래밍, IoT, 천문학 을 하나의 인터랙티브 프로젝트로 결합합니다.

이 프로젝트는 시멘트와 같은 평범한 재료가 기술을 통해 어떻게 역동적이고 표현력 있는 무언가로 변할 수 있는지 보여 줍니다. 프로그래밍 가능한 조명을 통해 Moon의 모습을 바꿀 수 있으며, ESP32는 시간과 달의 위상을 추적합니다.

무엇보다 중요한 것은 LUNARA가 모든 위상에는 저마다의 아름다움이 있다는 생각을 나타낸다는 점입니다. Moon처럼 우리도 항상 같은 강도로 빛날 필요는 없습니다. 변화는 여정의 자연스러운 일부입니다.

“Moon은 별을 향한 길의 첫 번째 이정표다.” — Arthur C. Clarke

🌕 마지막으로 전하고 싶은 말

“가장 어두운 밤에도 Moon은 언제나 빛날 작은 빛이 기다리고 있음을 일깨워 줍니다.”

LUNARA — 살아 있는 Moon

시멘트로 주조하고, 빛으로 생명을 불어넣다.

💡 아이디어가 있나요?

이 프로젝트는 훨씬 더 발전시킬 수 있으며, 여러분의 아이디어를 듣고 싶습니다!

만약 새로운 기능, 개선 사항 또는 LUNARA를 더욱 발전시킬 창의적인 방법을 생각하셨다면, 댓글 섹션에 공유해 주세요.

비슷한 것을 이미 만들어 보셨다면, 여러분의 프로젝트도 꼭 보고 싶습니다!

댓글 섹션은 여러분의 공간입니다! 🌕

또 LUNARA를 만드는 동안 어디선가 막히는 부분이 있다면, 댓글로 편하게 질문해 주세요. 문제를 해결하고 함께 방법을 찾아보도록 기꺼이 도와드리겠습니다.

이전에 비슷한 것을 만들어 본 적이 있나요? LUNARA가 다음에 무엇을 해야 할지에 대한 아이디어가 있나요? 아래에 알려 주세요!

회사명 공방유니언 주소 각 공방 주소 참조
사업자 등록번호 0000 대표 공방유니언 전화 019-60105846 팩스 0000 이메일 gongbangunion@gmail.com
통신판매업신고번호 0000 개인정보관리책임자 공방유니언
Copyright © 2017 공방유니언. All Rights Reserved.