Setup പൂർത്തിയാക്കുക
ഇപ്പോൾ controller ബന്ധിപ്പിക്കേണ്ടതില്ല. Python 3.15 മാറ്റേണ്ടതില്ല. Project folder-ൽ തുറന്ന PowerShell-ൽ ആദ്യം ഇത് നൽകുക:
$env:PYYAML_FORCE_LIBYAML = '0'അതേ window-ൽ തുടർന്ന് നൽകുക:
.\bootstrap-windows.cmd --controller esp32_s3 --firmware --compileആദ്യ command PyYAML-ന്റെ optional C extension ഒഴിവാക്കും. പുതുക്കിയ bootstrap ഇത് സ്വയം ചെയ്യുന്നു. നിലവിലുള്ള .venv, private settings, saved memory എന്നിവ delete ചെയ്യരുത്.
കമ്പ്യൂട്ടർ പരിശോധിക്കുക
.\doctor-windows.cmd --controller esp32_s3Controller ബന്ധിപ്പിച്ചിട്ടില്ലാത്തതിനാൽ port/chip/network സംബന്ധിച്ച WARN വരാം. ഇപ്പോൾ അവ പ്രതീക്ഷിക്കാവുന്നതാണ്.
WARN വായിച്ച് ഏത് പരിശോധനയാണ് ബാക്കിയെന്ന് മനസ്സിലാക്കുക.ലാപ്ടോപ്പിൽ Karen പരിശോധിക്കുക
Project folder-ൽ മറ്റൊരു PowerShell തുറക്കുക. അതാണ് Window A — Server. ആദ്യത്തെ window പിന്നീട് board commands-ന് ഉപയോഗിക്കാം.
.\start-windows.cmdഈ window തുറന്നുതന്നെ വയ്ക്കുക. Chrome/Edge-ൽ http://localhost:8080 തുറക്കുക.
- മഴ എങ്ങനെയാണ് ഉണ്ടാകുന്നത്? എന്ന് ചോദിക്കുക. അർത്ഥമുള്ള മലയാളം മറുപടി ലഭിക്കണം.
- “Record a question” അമർത്തി laptop microphone permission അനുവദിക്കുക.
- അഞ്ച് സെക്കൻഡിനുള്ളിൽ ഒരു ചെറിയ ചോദ്യം ചോദിക്കുക. ശബ്ദത്തിലുള്ള മറുപടി ലഭിക്കുന്നുണ്ടോ എന്ന് നോക്കുക.
Controller മാത്രം ബന്ധിപ്പിക്കുക
ബോർഡിലെ COM എന്ന് എഴുതിയ USB-C socket ഉപയോഗിക്കുക. USB data cable വേണം. മൈക്രോഫോൺ, ബട്ടൺ, ആംപ്ലിഫയർ, സ്പീക്കർ എന്നിവ ബന്ധിപ്പിക്കരുത്.
ആദ്യത്തെ PowerShell ആണ് Window B — Board. ഇനി board commands ഇതിൽ നൽകുക; അതേ window തുറന്നുവയ്ക്കുക.
.\.venv\Scripts\python.exe scripts\board.py portsഒന്നിലധികം ports ഉണ്ടെങ്കിൽ USB ഊരി list വീണ്ടും പരിശോധിക്കുക. തിരിച്ചുബന്ധിപ്പിക്കുമ്പോൾ വരുന്ന port ആണ് ബോർഡിന്റേത്. COM number ഊഹിക്കരുത്.
$karenPort = Read-Host "Type the controller's COM port shown above"ചോദിക്കുമ്പോൾ list-ൽ കണ്ട യഥാർഥ COM പേര് നൽകി Enter അമർത്തുക. തുടർന്ന്:
.\doctor-windows.cmd --controller esp32_s3 --port $karenPort --probe-chipWiFi വിവരങ്ങൾ നൽകുക
Window A-യിലെ server പ്രവർത്തിച്ചുകൊണ്ടിരിക്കണം. Window B-ൽ:
ipconfigഉപയോഗിക്കുന്ന WiFi adapter-ന്റെ IPv4 Address കണ്ടെത്തുക. Default Gateway, VPN/virtual adapter address എന്നിവ എടുക്കരുത്.
notepad firmware\karen_ai\config.hNotepad-ൽ നിലവിലുള്ള ഈ മൂന്ന് വരികളിലെ example വിവരങ്ങൾ മാറ്റുക. താഴെയുള്ള block PowerShell-ൽ നൽകേണ്ടതല്ല.
#define WIFI_SSID "YOUR_2_4_GHZ_HOTSPOT"
#define WIFI_PASSWORD "YOUR_HOTSPOT_PASSWORD"
#define SERVER_ORIGIN "http://192.168.1.50:8080"- WiFi-യുടെ യഥാർഥ പേരും password-ഉം നൽകുക. 2.4 GHz WiFi ഉപയോഗിക്കുക.
192.168.1.50ഒരു example ആണ്. പകരം laptop-ന്റെ യഥാർഥ IPv4 നൽകുക.localhostനൽകരുത്.- Quotes,
http://,:8080എന്നിവ നിലനിർത്തുക. അവസാനം slash ചേർക്കരുത്. - മറ്റു settings മാറ്റരുത്. Save ചെയ്ത് Notepad അടയ്ക്കുക. Gemini API key ഈ ഫയലിൽ ഇടരുത്.
ലാപ്ടോപ്പും ബോർഡും പരസ്പരം ബന്ധപ്പെടാൻ കഴിയുന്ന ഒരേ network-ൽ വേണം. Firewall ചോദിച്ചാൽ മുതിർന്നയാളുടെ സഹായത്തോടെ trusted Private network-ൽ Python അനുവദിക്കുക; firewall മുഴുവനായി ഓഫ് ചെയ്യരുത്.
Firmware upload ചെയ്യുക
ബോർഡിൽ ഇപ്പോഴും external വയറുകളൊന്നും ബന്ധിപ്പിക്കരുത്. Monitor തുറന്നിട്ടുണ്ടെങ്കിൽ Ctrl+C ഉപയോഗിച്ച് അടയ്ക്കുക. ഈ upload ബോർഡിലെ നിലവിലുള്ള firmware മാറ്റും.
.\.venv\Scripts\python.exe scripts\firmware.py --controller esp32_s3 --upload --port $karenPort --compile-timeout 1800 --jobs 2 --verboseആദ്യം compile നടക്കും. Credentials: private config.h ഒരു വിവരമാണ്; ഒന്നും ടൈപ്പ് ചെയ്യേണ്ടതില്ല. പുതുക്കിയ tool ഓരോ 20 സെക്കൻഡിലും progress കാണിക്കും. Compile limit 30 മിനിറ്റ്; upload limit 4 മിനിറ്റ്. രണ്ട് compiler jobs ഉപയോഗിക്കും. --verbose നൽകിയാൽ വിശദമായ output ഉടനെ കാണിക്കും; അല്ലെങ്കിൽ അതത് ഘട്ടം അവസാനിക്കുമ്പോൾ കാണിക്കും. Log: .tools/firmware.log.
പഴയ command timeout ആയോ? COM15 retry command
മുൻ command അവസാനിച്ച് PowerShell prompt തിരിച്ചുവന്നശേഷം മാത്രം update ചെയ്യുക:
git pull --ff-only origin mainബോർഡ് ഇപ്പോഴും COM15-ൽ ആണെന്ന് ഘട്ടം 4-ലെ port list ഉപയോഗിച്ച് ഉറപ്പാക്കുക. മറ്റൊരു COM number ആണെങ്കിൽ താഴെ അത് മാറ്റണം. Serial Monitor അടച്ചിരിക്കണം; bare controller COM USB-യിൽ connected ആയിരിക്കണം.
.\.venv\Scripts\python.exe scripts\firmware.py --controller esp32_s3 --upload --port COM15 --compile-timeout 1800 --jobs 2 --verboseഇത് മുകളിലെ upload command-ന് പകരമുള്ള retry ആണ്. രണ്ട് builds ഒരുമിച്ച് തുടങ്ങരുത്. Upload ഇതിനകം വിജയിച്ചാൽ വീണ്ടും upload ചെയ്യേണ്ടതില്ല; താഴെയുള്ള monitor command-ലേക്ക് പോകുക. [compile] Started; limit=1800s. Live tool output follows. കണ്ടാൽ പുതുക്കിയ tool ആണ് പ്രവർത്തിക്കുന്നത്.
Upload വിജയിച്ചശേഷം:
.\.venv\Scripts\python.exe scripts\board.py monitor --port $karenPort --logStartup സന്ദേശങ്ങൾ കാണുന്നില്ലെങ്കിൽ RESET/EN ഒരിക്കൽ അമർത്തുക. ഇവ പരിശോധിക്കുക:
Controller: esp32_s3
flash: 16777216 bytes
PSRAM: 8388608 bytes
[WIFI] Connected
[READY]
മുതിർന്നയാളോടൊപ്പം mic / button wiring
- INMP441 VDD
- 3V3
- GND
- GND
- SCK / BCLK
- GPIO4
- WS
- GPIO5
- SD
- GPIO6
- L/R
- GND
External button-ന്റെ ഒരു contact GPIO7-ലും മറ്റേത് GND-യിലും ബന്ധിപ്പിക്കുക. അമർത്തുമ്പോൾ മാത്രം ഈ രണ്ട് contacts ബന്ധപ്പെടുന്നുണ്ടെന്ന് മുതിർന്നയാൾ പരിശോധിക്കണം. നാല് കാലുള്ള button-ൽ രണ്ട് contacts ഊഹിച്ച് തിരഞ്ഞെടുക്കരുത്. Onboard BOOT question button ആയി ഉപയോഗിക്കരുത്.
USB തിരിച്ചുബന്ധിപ്പിച്ച് monitor തുറക്കുക. Window A-യിലെ server പ്രവർത്തിക്കണം.
.\.venv\Scripts\python.exe scripts\board.py monitor --port $karenPort --logButton ഒരിക്കൽ അമർത്തി വിടുക. [MIC] Recording. Speak now. കണ്ടശേഷം അഞ്ച് സെക്കൻഡിനുള്ളിൽ സംസാരിക്കുക. Button ആവർത്തിച്ച് അമർത്താതെ reply പൂർത്തിയാകുന്നതുവരെ കാത്തിരിക്കുക.
samples=80000/80000, [HTTP] Result: ok എന്നിവ പ്രതീക്ഷിക്കാം. Zero-signal warning അല്ലെങ്കിൽ spoken-error വന്നാൽ test വിജയിച്ചിട്ടില്ല. Laptop-ലെ Karen page refresh ചെയ്ത് തിരിച്ചറിഞ്ഞ ചോദ്യവും മറുപടിയും വായിക്കുക.ആംപ്ലിഫയർ ബന്ധിപ്പിക്കുന്നതുവരെ ബോർഡിൽ നിന്ന് ശബ്ദം വരില്ല. Mic / button test വിജയിച്ചാൽ amplifier, speaker എന്നിവ ബന്ധിപ്പിക്കാൻ ഘട്ടം 8 മുതൽ മുതിർന്നയാളോടൊപ്പം തുടരുക. Speaker നേരിട്ട് GPIO-യിൽ ബന്ധിപ്പിക്കരുത്.
MAX98357A amplifier — power, signal wiring
ഘട്ടം 7-ലെ mic / button test വിജയിച്ചശേഷം മുതിർന്നയാളോടൊപ്പം തുടരുക. MAX98357A I2S module ആണെന്ന് പരിശോധിക്കുക. PAM8403 analog amplifier അല്ലെങ്കിൽ MAX98357B ഇതേ wiring/firmware-ന്റെ പകരമായി ഉപയോഗിക്കരുത്. Module-ന്റെ printed labels വായിക്കുക; pin-കളുടെ ഇടത്–വലത് ക്രമം അനുകരിക്കരുത്.
8A. ഉപയോഗിക്കുന്ന power arrangement
ഈ ആദ്യ പരീക്ഷണത്തിൽ S3-ക്ക് laptop USB (COM) വഴിയും amplifier-ന് വേറൊരു regulated 5 V supply വഴിയും power നൽകാം. Amplifier supply കുറഞ്ഞത് 1 A rated ആയിരിക്കണം; അതിന്റെ polarity, actual module limits എന്നിവ മുതിർന്നയാൾ സ്ഥിരീകരിക്കണം. Labelled 5V/GND terminals ഉള്ള അനുയോജ്യമായ USB power breakout പോലുള്ള ready-made connection ഉപയോഗിക്കുക. Charger തുറക്കുകയോ mains wiring ചെയ്യുകയോ വേണ്ട.
Laptop USB data cable ───────────────→ S3 COM socket
Separate regulated 5 V supply (+) ──→ MAX98357A VIN
Separate supply (− / GND) ──────────→ MAX98357A GND
S3 GND ────────────────────────────→ MAX98357A GND
Positive supply rails തമ്മിൽ ബന്ധിപ്പിക്കരുത്: amplifier-ന്റെ external 5 V, USB-powered S3-യുടെ 5V/VIN/3V3 pin-ലേക്ക് ചേർക്കരുത്. Amplifier-ന് S3-യുടെ 3V3-യിൽ നിന്ന് power എടുക്കരുത്. Grounds മാത്രം common ആക്കണം. എല്ലാ wires-ഉം power ഓഫ് ചെയ്തിരിക്കുമ്പോഴാണ് ചേർക്കേണ്ടത്.
8B. ഓരോ amplifier connection-ഉം
- Verified external supply-യുടെ +5 V → amplifier VIN.
- ആ supply-യുടെ negative / GND → amplifier GND.
- S3 GND → അതേ amplifier GND. വേണമെങ്കിൽ verified common GND rail ഉപയോഗിക്കാം; split breadboard rail തുടർച്ചയുള്ളതാണെന്ന് പരിശോധിക്കുക.
- S3 GPIO16 → amplifier BCLK.
- S3 GPIO17 → amplifier LRC / WS / LRCLK.
- S3 GPIO18 → amplifier DIN. ഇത് amplifier-ന്റെ digital audio input ആണ്.
- SD / EN, GAIN താഴെയുള്ള module-specific നിർദ്ദേശം അനുസരിച്ച് പരിശോധിക്കുക.
- MAX98357A VIN
- Verified external +5 V
- GND
- External supply − / GND + S3 GND
- BCLK
- S3 GPIO16
- LRC / WS / LRCLK
- S3 GPIO17
- DIN
- S3 GPIO18
- SD / EN / MODE
- Module instructions; see 8C
- GAIN
- Confirmed default; see 8C
- MCLK
- Connection ആവശ്യമില്ല
Mic-ന്റെ clock/data pins 4 / 5 / 6 തന്നെയാണ്; amplifier-ന്റേത് 16 / 17 / 18. ഈ firmware-ൽ അവ തമ്മിൽ join ചെയ്യരുത്. I2S signal wires ചെറുതാക്കി വയ്ക്കുക. പുതിയ pin overrides ചേർക്കേണ്ടതില്ല.
8C. SD / EN, GAIN എങ്ങനെ വയ്ക്കണം?
SD ഇവിടെ shutdown / channel-mode control ആണ്; microphone-ന്റെ SD audio pin-ുമായി ബന്ധിപ്പിക്കരുത്. SD-യെ GND-യിൽ ചേർത്താൽ MAX98357A shutdown ആകും.
- Adafruit mono MAX98357A breakout അല്ലെങ്കിൽ അതേ schematic സ്ഥിരീകരിച്ച board: fitted 1 MΩ SD-to-VIN pull-up ഉണ്ടെങ്കിൽ, 5 V ഉപയോഗിക്കുമ്പോൾ SD-ക്ക് അധിക wire ആവശ്യമില്ല; default stereo-average output ഉപയോഗിക്കാം. GAIN unconnected ആയി വച്ചാൽ default 9 dB ആണ്.
- മറ്റൊരു clone / EN label ഉള്ള module: pull-up / enable resistor ഉണ്ടെന്ന് ഊഹിക്കരുത്. അതിന്റെ schematic / seller instructions പ്രകാരം amplifier enabled ആക്കണം. രേഖകൾ വ്യക്തമല്ലെങ്കിൽ module-ന്റെ ഇരുവശവും pin labels-ഉം മുതിർന്നയാൾ തിരിച്ചറിഞ്ഞശേഷം മാത്രം power നൽകുക. SD/GAIN-ലേക്ക് 5 V അല്ലെങ്കിൽ GND ഊഹിച്ച് ചേർക്കരുത്.
References: Adafruit mono breakout pinouts / default resistors · MAX98357A manufacturer specifications. Clone board-ന്റെ power circuitry ഈ references മാത്രം കൊണ്ട് സ്ഥിരീകരിക്കാനാവില്ല.
Speaker ബന്ധിപ്പിക്കുക; എല്ലാ wires-ഉം വീണ്ടും പരിശോധിക്കുക
USB-യും amplifier supply-യും ഇപ്പോഴും disconnected ആയിരിക്കണം. കുറഞ്ഞത് 4 Ω impedance ഉള്ള passive moving-coil speaker ഉപയോഗിക്കുക; 4 Ω / 8 Ω സാധാരണ options ആണ്. Speaker-ന്റെ actual marking നോക്കുക. 4 Ω / 10 W speaker ആണെങ്കിൽ amplifier കുറഞ്ഞ power-ൽ ഉപയോഗിക്കാം; speaker-ൽ 10 W എന്ന് എഴുതിയതുകൊണ്ട് ഈ amplifier 10 W നൽകില്ല.
- Speaker-ന്റെ ഒരു wire / marked + → amplifier SPK+ / OUT+.
- Speaker-ന്റെ മറ്റേ wire / marked − → amplifier SPK− / OUT−.
- Screw terminals ഉണ്ടെങ്കിൽ wires മുറുകെ ഉറപ്പിക്കുക. രണ്ട് terminals തമ്മിൽ copper strand short ഇല്ലെന്ന് പരിശോധിക്കുക. Soldering ആവശ്യമെങ്കിൽ മുതിർന്നയാൾ ചെയ്യണം.
- Speaker-നെ mic-ൽ നിന്ന് അകറ്റി വയ്ക്കുക. Mic opening മൂടരുത്. ആദ്യ test-ൽ speaker ചെവിയോട് ചേർക്കരുത്.
- Speaker +
- Amplifier SPK+ / OUT+
- Speaker −
- Amplifier SPK− / OUT−
Power നൽകുന്നതിന് മുമ്പുള്ള മുഴുവൻ connection list
- Mic: VDD → S3 3V3; GND → common GND; L/R → GND; SCK/BCLK → GPIO4; WS → GPIO5; SD → GPIO6.
- Button: GPIO7 ↔ verified switch contacts ↔ GND; അമർത്തുമ്പോൾ മാത്രം short; BOOT button ഉപയോഗിക്കരുത്.
- Amplifier signals: BCLK → GPIO16; LRC/WS → GPIO17; DIN → GPIO18; SD/GAIN → ഘട്ടം 8C-ൽ സ്ഥിരീകരിച്ച നില.
- Power: amplifier VIN → verified external +5 V; amplifier GND → supply negative + S3 GND. Mic/button grounds-ഉം ഇതേ common GND-യിലാണ്.
- Positive rails: external amplifier +5 V-ക്ക് S3 5V/VIN/3V3-യുമായി wire connection ഇല്ല. Mic-ക്ക് 3V3 മാത്രം.
- Speaker: അതിന്റെ രണ്ട് wires SPK+ / SPK−-ൽ മാത്രം; GND-യിലല്ല.
- Physical check: soldered headers, polarity, button contacts, split rails, loose wires, short circuits എന്നിവ മുതിർന്നയാൾ പരിശോധിച്ചു. എല്ലാ power sources-ഉം ഇതുവരെ off ആണ്.
Power on ചെയ്ത് speaker-ൽ മറുപടി പരിശോധിക്കുക
- Wiring check കഴിഞ്ഞാൽ verified amplifier 5 V supply on ചെയ്യുക. തുടർന്ന് laptop USB data cable S3-യുടെ COM socket-ൽ ബന്ധിപ്പിക്കുക. ഇനി power ഉള്ളപ്പോൾ വയറുകൾ മാറ്റരുത്.
- Window A-യിൽ Karen server പ്രവർത്തിക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക. അതേ WiFi, laptop IPv4 എന്നിവ ഉപയോഗിക്കണം.
- Window B-യിൽ താഴെയുള്ള Serial Monitor command നൽകുക. പഴയ monitor ഇതിനകം പ്രവർത്തിക്കുന്നുണ്ടെങ്കിൽ രണ്ടാമത്തേത് തുടങ്ങേണ്ടതില്ല.
.\.venv\Scripts\python.exe scripts\board.py monitor --port $karenPort --logWindow B അടച്ചുതുറന്നതാണെങ്കിൽ ഘട്ടം 4 പോലെ $karenPort വീണ്ടും നൽകുക. [WIFI] Connected, [READY] എന്നിവ കണ്ടശേഷം external question button ഒരിക്കൽ അമർത്തി വിടുക. [MIC] Recording. Speak now. കണ്ടാൽ അഞ്ച് സെക്കൻഡിനുള്ളിൽ മലയാളത്തിൽ ചെറിയ ചോദ്യം ചോദിക്കുക.
[MIC] Complete ... samples=80000/80000
[HTTP] Result: ok
[PLAY] Decoder finished ...
[READY] Waiting for the next button press.
[PLAY] Decoder finished മാത്രം കാണുന്നത് speaker ശബ്ദം വന്നതിന് തെളിവല്ല.Firmware playback gain ഇപ്പോൾ 0.35 ആണ്. ആദ്യം അത് നിലനിർത്തുക. അതേ pin map ഉള്ള firmware ഇതിനകം upload ചെയ്തിട്ടുണ്ടെങ്കിൽ amplifier ചേർത്തതിനായി മാത്രം വീണ്ടും upload ചെയ്യേണ്ടതില്ല.
ശബ്ദം വരുന്നില്ലെങ്കിൽ / പ്രശ്നമുണ്ടെങ്കിൽ
spoken-error/ HTTP error ആണെങ്കിൽ server-ലെ request ID / error നോക്കുക. Voice-recognition അല്ലെങ്കിൽ AI failure speaker wiring മാറ്റി പരിഹരിക്കാനാവില്ല.Result: okഉണ്ടെങ്കിലും ശബ്ദമില്ലെങ്കിൽ രണ്ട് supplies-ഉം ഓഫ് ചെയ്തശേഷം amplifier VIN/GND, common ground, 16/17/18 signals, SD enable, speaker terminals എന്നിവ വീണ്ടും പരിശോധിക്കുക.- ചൂട്, കത്തുന്ന മണം, repeated reboot, brownout, ശക്തമായ distortion ഉണ്ടെങ്കിൽ power ഓഫ് ചെയ്ത് മുതിർന്നയാൾ പരിശോധിക്കണം. Volume/gain കൂട്ടുന്നത് ആദ്യ പരിഹാരമല്ല.
- ഓരോ turn-ഉം പൂർത്തിയായി അടുത്ത
[READY]വന്നശേഷം മാത്രം അടുത്ത ചോദ്യം ചോദിക്കുക. തുടർച്ചയായി 10 വിജയകരമായ turns പരിശോധിക്കുക; തുടർന്ന് intended exhibition network/power ഉപയോഗിച്ചും പരീക്ഷിക്കുക.
നിർത്തുമ്പോൾ ആദ്യം S3 USB disconnect ചെയ്യുക; തുടർന്ന് amplifier supply off/disconnect ചെയ്യുക. ഏതെങ്കിലും wire മാറ്റുന്നതിന് മുമ്പ് രണ്ട് supplies-ഉം disconnected ആയിരിക്കണം. സഹായത്തിന് ഘട്ടം, request ID, അവസാന error എന്നിവ അയക്കാം; സ്വകാര്യ settings അയക്കരുത്.