Search Code

我喺呢塊$40 ESP32板上面畫咗個電路,而AI就解釋咗佢

我喺呢塊$40 ESP32板上面畫咗個電路,而AI就解釋咗佢

用手指畫個電路,AI幫你解釋佢係咩

用手指喺觸控屏上面畫或者寫嘢,㩒ASK掣,AI就會話畀你知你畫咗啲乜——喺螢幕上面顯示,仲會出聲講出嚟。有三種模式:認形狀、讀手寫字、或者解釋手畫嘅電路。

最後嗰種最有趣。畫個電池、一個電阻同一個LED,塊板就會講出啲零件係咩,仲會話畀你知個電路做啲乜。

Makerfab_ESP32S3-MaTouch-draw-7-_main

呢個項目要解決嘅問題

你冇辦法透過SPI由呢個顯示屏讀返像素出嚟,而圖形庫通常直接畫落面板度,冇任何記憶體副本——所以冇截圖可以送去任何地方。解決方法係永遠唔好直接畫落面板度。呢個草圖畫入一個Arduino_Canvas,佢會喺PSRAM度保留一個完整嘅幀緩衝區。嗰個緩衝區就係個圖像,所以fmt2jpg()可以直接將佢轉做JPEG。

 

點解墨水係黑底白字

視覺模型讀淺色背景上嘅深色標記,可靠程度遠高過相反情況,而且喺鏡頭睇落似紙。按鈕係畫喺面板度而唔係畫入畫布度,所以佢哋永遠唔會係AI見到嘅圖像一部分——佢只會見到你喺乾淨白色背景上嘅畫。

令筆觸睇落似筆觸

要令畫畫感覺似用筆而唔係點陣,有兩樣嘢一定要做啱:

  • 畫布唔會每次觸摸取樣都刷新去屏幕——咁樣每次會推115 KB過SPI,搞到所有嘢變慢。每一筆都係畫入畫布,然後分別畫上面板,呢個成本幾乎係零。
  • 一筆只會喺面板靜止大約70毫秒之後先至結束。觸摸控制器唔係每次輪詢都會返回一個點,如果將每次空輪詢當成手指抬起,就會將條線斷開做唔相連嘅點。

三個模式,一個圖畫

你嘅圖畫會喺答案下面保留住,所以你可以㩒返回畫畫,轉模式,然後對同一幅草圖問另一個問題。作為一幅圖,佢係線條同形狀;以工程師身份問,佢就變成一個電路。

攞好結果嘅貼士

  • 平價電容觸控筆比手指好用好多。
  • 畫大啲——畫布係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 wiki頁面

主要規格

  • 處理器: ESP32-S3,雙核240 MHz,WiFi 2.4 GHz + 藍牙5.0
  • 記憶體: 16 MB快閃,8 MB PSRAM(呢度幾乎每個項目都需要)
  • 顯示屏: 2.8" IPS,320×240,ST7789V驅動器,SPI
  • 觸控: GT911電容式,同時追蹤5隻手指
  • 相機: OV3660,3百萬像素,最高2048×1536
  • 咪高峰: 兩個INMP441 I2S數碼咪(真正嘅立體聲對)
  • 喇叭: 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 Library Manager
ArduinoJson 7.x Benoit Blanchon Library Manager
Adafruit NeoPixel 任何近期版本 Adafruit Library Manager

由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)。咁每個月大約允許五個鐘語音轉文字同五十萬字符文字轉語音。
  6. Review + create,然後㩒Create。等大約一分鐘,然後㩒Go to resource
  7. 喺左邊選單打開Keys and Endpoint。複製KEY 1Location/Region

將嗰啲放入secrets.hAZURE_SPEECH_KEYAZURE_REGION

運行成本

好少,但唔係免費,你應該喺放一個項目運行之前大概知道你會使幾多錢。

服務 大約成本
OpenAI視覺 每張相大約一兩仙,視乎模型而定
Azure Speech 免費層每個月覆蓋大約5個鐘聆聽同0.5 M字符講嘢

價格會變,所以將呢啲當做參考而唔係報價。呢啲服務每個都有使用頁面,你可以睇住自己使咗幾多,而且全部都可以設定使費上限——呢個值得喺第一日就做。

疑難排解

症狀 原因同解決方法
屏幕保持黑色 GFX函式庫版本錯(用1.5.6)或者板設定錯。
PSRAM alloc failed Tools → PSRAM冇設做OPI 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.

文件📁

Arduino 代碼 (.ino)