출처는 아래 유튜브 참고!


1. 동기
 Esp32와 60mm 아케이드 버튼을 이용해서 사이먼게임(기억력 게임)을 만들려던 프로젝트가 있었다. 인스트럭터블 사이트에서 사이먼게임 pcb를 만드는 법이 있어서, pcb와 부품들을 주문해서 만들었는데 안타깝게 작동이 안 되었다. 아마, 회로와 전자부품에 대한 지식과 이해가 부족해서 실패한 것 같다.

2년전 실패한 사이먼게임

 그래서, 오랫동안 보류중이었던 계획이었는데 최근에 바이브코딩으로 여러가지를 만들어보고 나서, pcb를 만들지 않아도 개발보드에 코딩으로 충분히 구현이 가능할 것으로 생각이 들어서 만들 마음을 먹었다.(프로젝트 진행에서 이게 제일 중요한 것 같다. ㅋㅋ)

2. 사이먼 게임 코딩 
 그래서, 원래 계획은 부품은 60mm 아케이드 버튼과 2인치 정도의 OLED, ESP32보드, led 4종류, 피에조 부저를 사용하고, 외형은 모델링해서 3D프린팅해서 손바닥 2개 크기 정도로 만들 생각이었다. 그래서, 부품들을 사용해서 브레드보드에 꼽아서 바이브 코딩으로 구현을 했다.

 이렇게 만들고 보니까, 작게 만들어서 열쇠고리 정도의 크기가 된다면 들고 다니면서 심심할때마다 하면 좋을 것 같았다. 그리고, 나중에 체험용 아이템으로 써도 훌륭할 것 같아서, 미니 버전으로 방향을 바꿨다. 그런데, 미니 버전으로 구상을 해보니 생각보다 들어가야 하는 부품들이 많고 배터리도 추가되어서, 이 상태로는 도저히 안 미니해서 대체가능한 작은 부품들을 찾기 시작했다.

3. 검색
 부피를 줄이기 위한 첫 번째는 전선들을 없애는 것이었다. 그래서, pcb를 만들어야겠다고 생각하고 pcb 설계하는 유튜브 강좌를 보기 시작했다.(하지만, 아직 4강 ...) 그래서, pcb를 만들면 전선들은 해결되므로 잠정적으로 해결되었다고 생각하고 두번째로 부품들의 크기를 줄이거나 여러 부품이 결합되어 있는 부품을 찾아보았다. 일단, 택트 스위치와  LED를 해결하고 싶어서 검색하다가 LED 내장 택트스위치를 발견하였다. 이것만 하더라도 LED 자리를 줄일 수 있어서 기분이 좋았다.

알리에서 찾을 수 있고, 국내에는 디바이스마트에도 있다.(물론 비싸지)

 세번째, OLED와 ESP32를 열쇠고리 형태로 배치한다고 했을때, 배터리도 포함해야 하기 때문에(충전모듈도 추가) 아무리 생각해도 미니하지 않게 크기가 나올 것 같았다. 그러다가 문득, 알리에서 화면이 있는 개발보드를 본 기억이 났다.

LILYGO® TTGO T-Display 1.14 Inch이 정품이고 이 사진의 제품은 호환품인 것 같다.(기능 상의 차이는 없고 어쨋든 싸다! 평소엔 9000원 정도)

 이 제품의 스펙을 보니, 3.7v 리튬배터리 충전칩도 포함이어서, '배터리+ TTGO T-DISPLAY + LED 택트스위치 + 저항'으로 미니 버전으로 만들 수 있게 되었다. 그리고, 사용법을 알기 위해 유튜브를 찾아보던 중~~~~

4. 테트리스 in TTGO T-DISPLAY
 이 영상을 보고 말았다, 왠지 카레향이 나는 유튜브 인트로라니~, 인도 출신 개발자들이 많긴 한가보다.

 영상을 보고 따라하면서, 내가 잘못한 부분도 알 수 있었다. 이 영상에는 아두이노 IDE 설정부터 라이브러리, 코드 등 자세하게 올라와 있어서 그냥 보고 따라만 하면 완성할 수 있다.(자세한 설명은 영상에 있으므로 생략!)
 그리고, 영상 목록들 중에 보면 초기화면에 Volos Projects라고 있는 게 이상해서 검색해봤다. 알고 보니 위 영상의 주인도 다른 채널에서 만들 코드를 가져와서 자세한 설명을 덧붙인 거였다.(그게 가장 위에 출처 표시한 채널이다.)

5. 3D모델링
 그리고 이제 외형을 모델링해야 하는데, 역시 모델링은 귀찮으니 검색을 해보았다. TTGO T-DISPLAY가 나온지가 꽤 되어서 왠지 모델링이 어딘가에 있을 것 같았다. 일단은 메이커월드에서 검색해봤는데 결과가 신통치가 않았다. 그래서, 그냥 구글에서 검색을 해보니, 왠걸 딱 적당한 것들을 찾을 수가 있었다. 이걸 찾아보고 깨달은 것 하나는 예전 제품들의 모델링은 싱기버스에 더 많다는 것을 알 수 있었다.

*수정 : 아래에 첫번째 모델링이 보드를 케이스에 넣는데 요령이 필요하지만 가장 좋다. 2, 3번째 모델링은 버튼이 부서지는 단점이 있으므로 참고만 하자.

https://www.thingiverse.com/thing:4501444/files

 

TTGO T-Display Cases by pjmi

A box/case/enclosure for a TTGO T-Display microcontroller, with a deeper option for 10mm thick LiPo battery.Update 2025-07-16 I now uploaded a STEP file for you to modify for your own needs. Contains the top, the buttons, the slim base, a deep baseWARNING

www.thingiverse.com

 

 

TTGO T-Display case for 503450 LiPo battery by stevesch

TTGO T-Display case for a 503450 LiPo batteryModified from the original "battery options" thing located here:https://www.thingiverse.com/thing:4183337

www.thingiverse.com

 

 

TTGO T-Display Cases, with battery options by stevesch

Please encourage further development by donating at:https://www.paypal.com/paypalme/stevesch17Thanks in advance!These cases are designed to fit the TTGO T-Display or similar HiLetgo microcontroller modules with 1.14 inch LCD screens.The microcontroller boa

www.thingiverse.com


6. 완성 (코드 포함)
 조립이라 할 것도 없고, TTGO T-DISPLAY의 충전포트가 JST 1,25mm라서 그 선만 납땜해서 연결해줬다.(보드를 사면 JST 1,25mm 전선이 하나 들어있다.)
 조작법은 왼쪽 버튼은 왼쪽으로 이동, 오른쪽 버튼은 오른쪽 이동, 동시에 누르면 조각이 회전한다.

 

 오른쪽 그림의 왼쪽은 버튼 노출된 버전이고 오른쪽은 버튼까지 커버된 버전이다. 왼쪽은 버튼이 잘 눌러지지 않아서, 오른쪽 버전이 더 좋고 디자인도 깔끔하다. 
 *수정 : 아래 그림이 현재 선택된 모델링 출력물이다. 버튼이 부서지지 않고 더 디자인이 좋다.

배터리 크기에 따라 모델링을 고르면 된다. 참고로 TTGO T-DISPLAY 1.14inch 버전의 크기는 아래 사진을 참고하고, 그 크기에 맞게 배터리를 선택하면 된다.
 *수정 : 현재 선택된 모델링에서 배터리는 폭이 20mm 인것을 추천한다. 25mm를 초과하면 안 들어간다고 생각하자.

 

 끝으로, 기존 코드는 딥슬립 모드(절전모드라고 생각하자.)가 없어서 화면이 계속 켜져있다보니 금방 배터리가 소모되었다. 바이브코딩으로 딥슬립 모드를 넣은 버전이 아래 코드이다. 1분간 입력이 없으면 자동으로 딥슬립모드로 들어가고 왼쪽 버튼을 누르면 부팅을 하며 화면이 켜진다. 이렇게 테스트해보니, 하루 이상 배터리가 가는 것을 확인하였다.

https://github.com/biscuitbox/Tetris-Game-in-TTGO-T-DISPLAY-1.14inch

 

GitHub - biscuitbox/Tetris-Game-in-TTGO-T-DISPLAY-1.14inch: Tetris in TTGO T-DISPLAY 1.14inch

Tetris in TTGO T-DISPLAY 1.14inch. Contribute to biscuitbox/Tetris-Game-in-TTGO-T-DISPLAY-1.14inch development by creating an account on GitHub.

github.com

 

7. 개선 사항
 열쇠고리 형태로 만드는 것이 목표라 모델링을 수정하여 고리를 만들어야 한다. 그리고, lcd가 약하므로 충격에 주의할 것. 보호필름을 짤라서 덧대는 것도 고려해볼만하다.

끝.

반응형

유튜브를 기웃기웃거리다가, 몇 개월 전에 영상 하나를 보게 되었다. https://www.youtube.com/watch?v=o3HoVoon7ro&t=12s

'파이브레인' 이라는 채널이었는데, 내가 3D프린터랑 메이커 작업을 하다보니 알고리즘이 추천으로 띄워준 것 같았다. 처음에는 '조금 흥미롭네' 정도로 생각하고 넘어갔었다.

그러다, 최근에 이분 영상이 다시 추천되어 보게 되었다. https://www.youtube.com/watch?v=fToUPQ_WRaY

이 영상을 보다가 이 로봇팔이 개인 프로젝트가 아니라 오픈소스 프로젝트라는 것을 알고, 도전을 해보고 싶어졌다. 이유는 지금까지 아두이노, 라즈베리파이로 구동하는 로봇팔을 3가지 정도 만들어봤는데, 뭔가 만족스럽지 않았었다. 그런데, 이 영상과 외국의 영상들을 보니 매우 빠르게 정확하게 작동하고, 비전 센서와 인공지능이 결합되어 있어서 매우 재미있어 보였다.

그래서, 오픈소스 프로젝트 사이트인 https://huggingface.co/lerobot 에 들어가서 대충 영한 번역시켜서 읽어보고, https://huggingface.co/docs/lerobothttps://github.com/huggingface/lerobot 를 추가해서, lerobot 프로젝트 도우미 GPT(https://chatgpt.com/g/g-68ff19cc34f481918c0a4875f3ed0f5e-lerobot-peurojegteu-doumi)를 만들었다. ㅋㅋ

이제 시작해보자~!

반응형

1. 동기

 연제도서관 입구에 있는 문학 자판기를 보고, 라즈베리파이랑 영수증 프린터기를 이용하면 만들 수 있겠다고 생각을 함.
 대신 메커니즘만 가져오고, 내용은 다르게 바꿔봐야겠다고 생각했다. 가끔 기분이 나쁠 때, 글귀나 명언 등을 보고 마음을 추슬렀던 경험이 있는데 이걸 적용해서 학생들이 기분이 좋지 않을 때 도움이 되는 글을 출력하면 정서적으로 약간이나 도움이 될 것 같았다.
 그래서, 그날의 기분(특히, 우울하거나 화가 날 때)을  고르고 정서 안정에 도움을 주는 문학 글귀가 나오도록 대략적인 구상을 했다.
 그리고 학교 도서관에 비치해 놓으면 학생들이 도서관에 대한 유인책도 되고, 글귀를 보고 그 책을 찾아보기도 하지 않을까 하고~

2. 알고리즘

 (1) 여러 감정 중 하나를 선택하여 입력한다.
 (2) 선택된 감정에 해당하는 여러 가지 글 중 하나를 무작위로 선택한다.
 (3) 선택된 글을 영수증 프린터로 출력한다.

3. 아이디어

 (1) 하드웨어
    1) 7인치 터치 모니터(라즈베리파이용 사용) - 터치 스크린을 사용해서 버튼을 사용하지 않아도 되고, 외관이 간소해짐.
    2) 라즈베리파이5 - 라즈베리파이5를 사용하지 않고 3, 4도 될 것 같은데, 그냥 성능 좋은 거 썼다.(아키텍처가 달라서 라즈3, 4에 쓰려면 처음부터 다시 짜야 할 것 같다.)
   3)영수증 프린터  - 원래 셀카머신에 사용하던 출력장치로 추가로 하나 더 구매해났었다. 유지비, 기기값이 저렴하고 빠른 출력이 가능한 프린터. (원래는 빅솔론 SRP-350III 이었는데, 세우 TS-200이 더 저렴하다. 이걸 추천함. 제조사 홈페이지에서 리눅스용 드라이버를 제공한다.). 출력된 감열지의 단점은 보관을 잘못하면 사라져버린다는 건데, 이번 프로젝트에서 출력물은 보관용이 아니라서 관계가 없다.

 

4. 설계

전체 이미지

3D모델링 - 프린터기로 1회에 출력이 불가능하여, 모니터쪽과 프린터쪽 2군데로 나눠서 설계함. 모니터 쪽에는 라즈베리파이와 전원부가 함께 들어감. 뒷 판은 220v 소켓이 들어가도록 설계하고 공기 순환이 되도록 환기구를 만듦.

프린터쪽은 프린터기의 크기로 프린터만 들어감. 아래쪽에서 공기가 순환 되도록 환기구를 만듦. 앞판은 종이가 나오는 곳의 높이 맞춰 설계하고, 옆에 구멍을 뚫어 필라멘트를 잘라서 고정할 수 있도록 함.

5. 출력과 조립

라즈베리파이 5와 모니터는 7인치 라즈베리파이용 터치 모니터를 사용하여서, 물리적 스위치를 줄임.

인렛 소켓 조립할때 극성을 주의하고 절연될 수 있도록 캡톤테이프로 노출된 금속 부분을 감쌈. 압착단자가 오래되서 피막이 입혀진 경우에는 전류가 통하지 않을 수도 있어서 조심할 것. 콘센트부와 인렛 소켓 연결함.

조립하면 대충 이런 모습임.

7. 코딩

gpt5와 vsc를 이용해서 코딩함. gpt로 바이브코딩하고 vsc로 파이썬 파일을 저장해서, 메일로 보내서, 라즈베리파이에서 받아서 실행해서 테스트함. 그래서, 라즈베리파이용 키보드와 마우스가 따로 필요함. 대략적인 틀이 나오면 프런트엔드 부분은 코드를 직접 수정해서 완성함. 한 일주일은 걸린 것 같음.

https://youtube.com/shorts/mT1Gz2HuWoA

 

8. 주의점

영수증 프린터기의 경우 제조사에서 리눅스용 드라이버를 제공하는지 확인해야함. 라즈베리파이에선느 리눅스용 드라이버로 CUPS로 프린터를 인식시켜서 사용해야함. 경우에 따라서 32bit, 64bit에 따라 사용이 안되는 경우도 있으므로 드라이버를 잘 바꿔야함.

 

 

반응형

반응형

반응형

+ Recent posts