ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Italiano → Wenchenghua (Daxue), con la pronuncia scritta "all'italiana". Web app statica (Next.js export) con BYOK: la chiave LLM dell'utente va direttamente dal browser al provider. Piano e fasi (in inglese): PLAN.md. 1. Apri il sito e prova un esempio: funziona anche senza chiave. 2. Per tradurre frasi nuove scegli un provider nel riquadro "Chiave API" e inserisci la tua API key: • Anthropic (Claude): console.anthropic.com, modello predefinito Claude Haiku 4.5; • OpenAI (GPT): platform.openai.com, modello predefinito GPT-5.4 nano; • xAI (Grok): console.x.ai, modello predefinito Grok 4.7.檢視完整 README ↗
Italiano → dialetti dell'area di Wenzhou (温州话): Wencheng (Daxue) e Qingtian, con la pronuncia scritta "all'italiana". Web app statica (Next.js export) con BYOK: la chiave LLM dell'utente va direttamente dal browser al provider.
Piano e fasi (in inglese): PLAN.md.
Apri il sito, scegli il dialetto (Wencheng o Qingtian) e una delle frasi pronte: una ventina di frasi di tutti i giorni in casa (a tavola, in casa, uscire e rientrare, il tempo, soldi e spesa, risposte veloci). Puoi cercarle o filtrarle per categoria e funzionano anche senza chiave. Le frasi segnate "da verificare" sono state scritte senza un parlante del dialetto: correggile in src/data/phrases.json quando le senti dire da qualcuno. Le frasi sono scritte per Wencheng: in Qingtian vengono lette con la pronuncia di Qingtian e sono tutte da verificare. Cambiando dialetto, la frase già mostrata viene riletta con la pronuncia dell'altro, senza una nuova traduzione.
Per tradurre frasi nuove scegli un provider nel riquadro "Chiave API" e inserisci la tua API key:
Con "Altro modello…" puoi scrivere a mano l'ID di qualsiasi modello del provider (con Groq solo i modelli che supportano lo "structured output" rigoroso, come GPT-OSS). Anthropic, OpenAI e xAI sono a pagamento a consumo (con i modelli predefiniti, meno di un centesimo per frase); l'app gratuita di Grok non include l'API. Groq ha anche un piano gratuito, con un limite di richieste al giorno più che sufficiente per questa app.
Tocca una sillaba per vedere le pronunce alternative e la fonte (per Wencheng: Daxue, Wencheng; per Qingtian: Wenxi, Beishan, Qingtian; per entrambi: Wenzhou).
Premi Ascolta per sentire la pronuncia letta da una voce vietnamita, con i toni (spunta "Lento" per rallentare). Nel riquadro di una sillaba, l'altoparlante fa lo stesso per la singola sillaba.
Nessuna voce sintetica parla i dialetti di Wencheng o di Qingtian. Il vietnamita è la lingua con le voci già presenti nei telefoni che gli somiglia di più: ha i toni e molti suoni del dialetto (ng-, nh, ư, ơ, đ, gi). Per questo la pronuncia IPA viene riscritta in ortografia vietnamita (per esempio 你 ȵi4 → nhĩ, "Hai mangiato?" → nhĩ và chỉ cụ não) con le regole di src/data/vi-rules.json, e i toni vengono resi con i toni vietnamiti più vicini (con i contorni di Wenzhou per Wencheng, con quelli di Qingtian per Qingtian). Il vietnamita serve solo come voce: non è una traduzione in vietnamita. Resta un'approssimazione. L'audio funziona senza chiave e senza connessione; se manca la voce vietnamita, aggiungila nelle impostazioni di sintesi vocale del telefono o del computer.
Le registrazioni di un parlante sono il passo successivo (vedi PLAN.md, §12).
La chiave è salvata solo in locale, nel localStorage del tuo browser (una per provider), e va solo all'API di quel provider (api.anthropic.com, api.openai.com, api.x.ai o api.groq.com) quando traduci: il sito è statico, non ha un server e non la vede mai. Togliendo la spunta "Salva la chiave su questo dispositivo" resta solo in memoria; "Cancella chiave" la elimina.
Il cinese nel sito è sempre in caratteri semplificati. Le tabelle restano in tradizionale e vengono convertite solo per la visualizzazione (src/data/simplified.json, generato con npm run build:simplified).
Il modello traduce la frase italiana nel cinese come si parla nel dialetto scelto (una sola chiamata, più al massimo un nuovo tentativo se usa caratteri che non sono nelle tabelle di quel dialetto).
Il testo viene convertito in caratteri tradizionali (opencc).
Ogni carattere viene cercato nelle tabelle del dialetto, con priorità:
Le tabelle di Qingtian segnano la lettura colloquiale (白讀) e quella letteraria (文讀): viene usata per prima la colloquiale.
Per i caratteri che solo Wenzhou conosce, la pronuncia viene stimata dalle corrispondenze regolari tra i due dialetti: si prende la lettura più frequente tra i caratteri che a Wenzhou si leggono allo stesso modo. Nel sito queste sillabe sono tratteggiate ("Stimata da Wenzhou · non verificata"); la lettura di Wenzhou resta tra le alternative. Nelle prove sui caratteri noti la stima dà le lettere giuste circa 3 volte su 4 (Qingtian 77%, Wencheng 70%), contro il 61% e il 40% della lettura di Wenzhou.
La pronuncia IPA diventa lettere italiane con le regole di src/data/ita-rules.json.
Le correzioni manuali vanno in src/data/overrides.json, divise per dialetto (non modificare wencheng.json e qingtian.json, che sono generati):
{
"wencheng": {
"chars": { "謝": { "ipa": "zi6", "note": "verificato" } },
"phrases": { "你飯吃過冇": { "ita": "gni va ci cu nau", "note": "frase tipica" } }
},
"qingtian": { "chars": {}, "phrases": {} }
}
Nel sito, il riquadro delle alternative di ogni sillaba ha uno snippet pronto da copiare. Nelle phrases ci vuole una sillaba per ogni carattere. Le chiavi si possono scrivere in semplificato o in tradizionale.
src/data/wencheng.json e src/data/qingtian.json si rigenerano a mano dalle tabelle di MCPDict:
npm run build:data # scarica le tabelle e scrive wencheng.json e qingtian.json
npm run check:data # controlla che i file siano validi
Il sito carica la tabella di un dialetto solo quando viene usato.
Il logo (fumetto giallo con il carattere 温) sta in src/data/logo.json: il carattere è un tracciato preso da Noto Sans SC (licenza OFL), quindi appare uguale su ogni dispositivo. Favicon, icona per iPhone e immagine di anteprima per WhatsApp, Telegram e social si rigenerano con:
npm run build:icons # scrive icon.svg, favicon.ico, apple-icon.png, opengraph-image.png in src/app
npm install
npm run dev # http://localhost:3000
npm test # Vitest (watch); in CI: npm test -- --run
npm run lint
npm run build # export statico in out/
npm run test:e2e # smoke test Playwright sulla build in out/
Il sito è pubblicato su https://wenzhouhua.clicktoconnect.dev/ dal workflow .github/workflows/pages.yml, a ogni push su main (oppure a mano da Actions → Pages → Run workflow). Il vecchio indirizzo danizhou.github.io/wencheng-italian-translator reindirizza qui.
Configurazione una tantum:
wenzhouhua → danizhou.github.io (DNS only), e in Settings → Pages → Custom domain wenzhouhua.clicktoconnect.dev con Enforce HTTPS. Con il dominio personalizzato il sito sta alla radice: il workflow lo rileva da solo e costruisce senza prefisso.Senza dominio personalizzato il sito starebbe sotto /wencheng-italian-translator; per provare in locale la build con quel prefisso:
PAGES_BASE_PATH=/wencheng-italian-translator npm run build