Search Code

저는 이 40달러짜리 ESP32 보드에 회로를 그렸고, AI가 그것을 설명했습니다.

저는 이 40달러짜리 ESP32 보드에 회로를 그렸고, AI가 그것을 설명했습니다.

손가락으로 회로를 스케치하면 AI가 설명해 줍니다

터치스크린에 손가락으로 그림을 그리거나 글씨를 쓰고, ASK를 탭하면 AI가 화면에 그리고 소리로 무엇을 그렸는지 알려줍니다. 세 가지 모드: 모양 이름 말하기, 손글씨 읽기, 손으로 그린 회로 설명하기.

마지막 모드가 가장 흥미롭습니다. 배터리, 저항, LED를 스케치하면 보드가 부품 이름을 말하고 회로가 무엇을 하는지 알려줍니다.

Makerfab_ESP32S3-MaTouch-draw-7-_main

이 프로젝트가 해결해야 했던 문제

SPI를 통해 이 디스플레이에서 픽셀을 다시 읽을 수 없고, 그래픽 라이브러리는 일반적으로 메모리에 복사본 없이 패널에 직접 그리므로 보낼 스크린샷이 없습니다. 해결책은 패널에 직접 그리지 않는 것입니다. 이 스케치는 PSRAM에 전체 프레임버퍼를 유지하는 Arduino_Canvas에 그립니다. 그 버퍼가 이미지이므로 fmt2jpg()가 그것을 JPEG로 직접 변환합니다.

 

잉크가 흰색 바탕에 검은색인 이유

비전 모델은 밝은 배경의 어두운 표시를 그 반대보다 훨씬 더 안정적으로 읽으며, 카메라에서 종이처럼 보입니다. 버튼은 캔버스가 아닌 패널에 그려지므로 AI가 보는 이미지의 일부가 되지 않습니다 - 깨끗한 흰색 필드에 당신의 그림만 표시됩니다.

획이 획처럼 보이게 만들기

그리기가 도트 매트릭스가 아닌 펜처럼 느껴지기 전에 두 가지가 올바르게 되어야 했습니다:

  • 캔버스는 모든 터치 샘플에서 화면으로 플러시되지 않습니다 - 그렇게 하면 매번 SPI를 통해 115 KB를 푸시하여 모든 것을 지연시킵니다. 각 획은 캔버스에 그려지고 패널에 별도로 칠해지며, 거의 비용이 들지 않습니다.
  • 획은 패널이 약 70 밀리초 동안 조용해진 후에만 끝납니다. 터치 컨트롤러는 모든 폴링에서 포인트를 반환하지 않으며, 각 빈 폴링을 손가락을 뗀 것으로 처리하면 선이 끊어진 점으로 분리됩니다.

세 가지 모드, 하나의 그림

그림은 답변 아래에 유지되므로 BACK TO DRAW를 탭하고 모드를 변경한 다음 같은 스케치에 대해 다른 질문을 할 수 있습니다. 그림으로는 선과 모양이고, 엔지니어로 질문하면 회로가 됩니다.

좋은 결과를 위한 팁

  • 저렴한 정전식 스타일러스가 손끝보다 훨씬 잘 작동합니다.
  • 크게 그리세요 - 캔버스는 240×240이므로 미세한 세부 사항이 아닌 몇 개의 큰 요소를 그리세요.
  • 팜 리젝션이 없습니다. 손을 유리에서 떼세요.

MaTouch AI ESP32-S3 2.8" 보드 정보

이 페이지의 모든 프로젝트는 Makerfabs의 MaTouch AI ESP32-S3 2.8" TFT ST7789V에서 실행됩니다. 올인원 보드입니다: 컬러 터치스크린, 3 메가픽셀 카메라, 두 개의 마이크, 실제 스피커 증폭기, 모두 8 MB PSRAM이 있는 ESP32-S3로 구동됩니다. 이 조합이 다른 것을 연결하지 않고 단일 보드에서 이러한 AI 프로젝트를 가능하게 합니다.

8 MB PSRAM은 여기서 다른 어떤 숫자보다 중요합니다. 보드가 카메라 프레임, 몇 초의 녹음된 오디오 또는 base64로 인코딩된 사진을 동시에 메모리에 보관할 수 있게 해주며, 이 중 어느 것도 ESP32의 일반 RAM에 맞지 않습니다.

제조업체 문서: Makerfabs 위키 페이지.

주요 사양

  • 프로세서: ESP32-S3, 듀얼 코어 240 MHz, WiFi 2.4 GHz + Bluetooth 5.0
  • 메모리: 16 MB 플래시, 8 MB PSRAM (여기의 거의 모든 프로젝트에 필요)
  • 디스플레이: 2.8" IPS, 320×240, ST7789V 드라이버, SPI
  • 터치: GT911 정전식, 한 번에 5개 손가락 추적
  • 카메라: OV3660, 3 메가픽셀, 최대 2048×1536
  • 마이크: INMP441 I2S 디지털 마이크 2개 (진정한 스테레오 쌍)
  • 스피커: MAX98357A 클래스 D 증폭기, 4 Ω에서 3.2 W
  • 저장소: microSD 카드 슬롯 (SPI 모드)
  • 전원: USB-C, JST 배터리 커넥터, TP4056 충전기, 전원 스위치
  • 보드에도 포함: WS2812B RGB LED, PCF8563T 배터리 백업 실시간 클록, 공식 사양에 나열되지 않은 MAX17048 배터리 연료 게이지

배터리로 전원을 공급하시나요? 두 USB-C 소켓, TP4056 충전기 및 전원 스위치는 보드 테스트 기사에서 회로도와 함께 완전히 설명되어 있습니다 — 어떤 소켓이 충전되는지, 스위치가 켜져야 하는지 꺼져야 하는지 포함합니다.

Arduino IDE 설정

이 설정이 중요합니다. 사람들이 이 보드에서 보고하는 대부분의 문제는 이 중 하나가 잘못된 것이며, 코어 버전을 변경하면 재설정되므로 변경 후 다시 확인하세요.

설정
보드 ESP32S3 Dev Module
ESP32 코어 버전 2.0.17
PSRAM OPI PSRAM
플래시 크기 16MB (128Mb)
파티션 구성표 16M Flash (3MB APP/9.9MB FATFS)
USB CDC On Boot Disabled
업로드 속도 921600
업로드 전 모든 플래시 지우기 Disabled
포트 CH340K USB-C 포트

필수 라이브러리

이 프로젝트는 아래 표의 모든 라이브러리가 필요합니다 - 더도 말고 덜도 말고. 대부분 Arduino IDE의 Tools → Manage Libraries에서 직접 설치할 수 있지만, GFX Library for Arduino는 ZIP 파일에서 설치해야 합니다. 버전 번호가 중요하므로 정확히 나열된 것을 사용하세요.

라이브러리 버전 작성자 설치 위치
GFX Library for Arduino 1.5.6 moononournation ZIP 파일 - 아래 참조
bb_captouch 1.3.1 Larry Bank 라이브러리 관리자
ArduinoJson 7.x Benoit Blanchon 라이브러리 관리자
Adafruit NeoPixel 최신 버전 Adafruit 라이브러리 관리자

ZIP 파일에서 GFX 라이브러리 설치

  1. ZIP을 다운로드하세요. 이 프로젝트의 다운로드에 포함되어 있거나 Arduino_GFX 저장소에서 얻을 수 있습니다 - 녹색 Code 버튼을 클릭한 다음 Download ZIP을 클릭하세요.
  2. 다시 찾을 수 있는 위치에 저장하세요. 압축을 풀지 마세요.
  3. Arduino IDE에서 SketchInclude LibraryAdd .ZIP Library를 클릭하세요.
  4. 다운로드한 ZIP 파일을 찾아 Open을 클릭하세요.
  5. IDE가 설치하고 창 하단에 확인합니다. 이미 1.6 버전이 설치된 경우 먼저 Documents/Arduino/libraries에서 해당 폴더를 삭제하세요. 그렇지 않으면 두 버전이 충돌합니다.

 

Makerfab_ESP32S3-MaTouch-draw-6-robojax 화면에 손으로 쓴 글씨
Makerfab_ESP32S3-MaTouch-draw-3-손으로 그린 회로
Makerfab_ESP32S3-MaTouch-draw-4-hello 손으로 쓴 단어

secrets.h 설정

WiFi 세부 정보와 API 키는 secrets.h에 넣습니다. 이 파일은 다운로드에 자리 표시자 값과 함께 포함되어 있습니다. Arduino IDE에서 해당 탭을 열고 자신의 값으로 교체하세요.

API 키 얻기

이 프로젝트는 클라우드 AI 서비스와 통신하므로 자체 키가 필요합니다. 이전에 해본 적이 없다면 걱정하지 마세요 - 서비스에 계정을 식별하는 비밀번호와 같은 개념입니다. 한 번만 몇 분이면 됩니다.

OpenAI - 눈

OpenAI는 사진을 보는 비전 모델을 제공합니다. 이미지를 보내는 프로젝트만 이 키가 필요합니다.

  1. platform.openai.com/api-keys로 이동하여 로그인하거나 계정을 만드세요.
  2. Create new secret key를 클릭하고 이름을 지정한 다음 생성하세요.
  3. 즉시 복사하세요 - 한 번만 표시됩니다.
  4. Billing을 열고 소액의 크레딧을 추가하세요. API는 선불이며 이미 가지고 있을 수 있는 ChatGPT 구독과 별개입니다.

키를 secrets.hOPENAI_KEY로 넣으세요.

Microsoft Azure Speech - 듣기 및 말하기용

Azure는 음성을 텍스트로 변환하고 답변을 다시 음성으로 변환합니다. 무료 티어는 이 페이지의 모든 것에 충분히 넉넉합니다.

  1. portal.azure.com으로 이동하여 Microsoft 계정으로 로그인하세요 (무료 계정도 괜찮습니다).
  2. Azure를 처음 사용하는 경우 세 가지 선택을 제공하는 Welcome to Azure 화면이 표시됩니다. Start with an Azure free trial을 선택하세요 - Azure에서 무엇이든 만들기 전에 구독이 필요합니다. (학생은 대신 Azure for Students를 선택하세요: 같은 결과, 카드 불필요.) 완전히 다른 Manage Microsoft Entra ID는 무시하세요.
  3. Create a resource를 클릭하고 Speech를 검색한 다음 Microsoft가 게시한 Speech service를 선택하세요.
  4. 양식을 작성하세요: 리소스 그룹, 이름을 지정하고 가까운 Region을 선택하세요 - 해당 지역을 표시된 대로 정확히 기록하세요, 예: eastus.
  5. Pricing tier에서 F0 (Free)를 선택하세요. 이는 매월 약 5시간의 음성-텍스트 변환과 50만 자의 텍스트-음성 변환을 허용합니다.
  6. Review + create를 클릭한 다음 Create를 클릭하세요. 약 1분 기다린 후 Go to resource를 클릭하세요.
  7. 왼쪽 메뉴에서 Keys and Endpoint를 엽니다. KEY 1Location/Region을 복사하세요.

이를 secrets.hAZURE_SPEECH_KEYAZURE_REGION으로 넣으세요.

실행 비용

매우 적지만 무료는 아닙니다. 프로젝트를 실행하기 전에 대략 얼마를 지출하는지 알아야 합니다.

서비스 대략적인 비용
OpenAI 비전 모델에 따라 사진당 약 1~2센트
Azure Speech 무료 티어는 매월 약 5시간 듣기 및 0.5 M 문자 말하기를 포함

가격은 변경되므로 견적이 아닌 가이드로 취급하세요. 이러한 각 서비스에는 지출을 확인할 수 있는 사용량 페이지가 있으며, 모두 지출 한도를 설정할 수 있습니다 - 첫날에 설정하는 것이 좋습니다.

문제 해결

증상 원인 및 해결책
화면이 검게 유지됨 잘못된 GFX 라이브러리 버전 (1.5.6 사용) 또는 잘못된 보드 설정.
PSRAM alloc failed Tools → PSRAMOPI PSRAM으로 설정되지 않음.
업로드 안 됨 / COM 포트 없음 잘못된 USB-C 포트 또는 CH340 드라이버가 설치되지 않음.

이미지

Makerfab_ESP32S3-MaTouch-draw-7-_main
Makerfab_ESP32S3-MaTouch-draw-7-_main
Makerfab_ESP32S3-MaTouch-draw-2-
Makerfab_ESP32S3-MaTouch-draw-2-
Makerfab_ESP32S3-MaTouch-draw-3-
Makerfab_ESP32S3-MaTouch-draw-3-
Makerfab_ESP32S3-MaTouch-draw-4-
Makerfab_ESP32S3-MaTouch-draw-4-
Makerfab_ESP32S3-MaTouch-draw-5-
Makerfab_ESP32S3-MaTouch-draw-5-
Makerfab_ESP32S3-MaTouch-draw-6-
Makerfab_ESP32S3-MaTouch-draw-6-
Makerfab_ESP32S3-MaTouch-draw-7-_main
Makerfab_ESP32S3-MaTouch-draw-7-_main
Makerfab_ESP32S3-MaTouch-draw-8-
Makerfab_ESP32S3-MaTouch-draw-8-
Makerfab ESP32S3 MaTouch draw 1
Makerfab ESP32S3 MaTouch draw 1
890-Makerfabs MaTouch ESP32-S3 2.8" Camera and Touchscreen: Daraw AI (video 2)
언어: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

파일📁

아두이노 코드 (.ino)