Sobre o projeto

O JarvisNano é um firmware que transforma o Waveshare ESP32-S3-Touch-AMOLED-1.75C num pequeno assistente de secretária sempre disponível. Em modo autónomo, o ESP32-S3 transmite os microfones para o Gemini Live, reproduz as respostas pelo caminho do altifalante ES8311 a 24 kHz nativos e controla um AMOLED redondo de 466x466 com um único compositor; não é necessário telefone nem hub. Um telefone ZeroChat explicitamente emparelhado pode, em alternativa, reclamar um código de emparelhamento de seis dígitos apresentado no ecrã, deter uma concessão privada de operador Wi-Fi, receber PCM de microfone a 16 kHz, executar o seu próprio cérebro e devolver PCM de fala a 24 kHz para o altifalante do dispositivo. O 1.75C é o produto e o único alvo de compilação suportado; o Waveshare 1.75 original e as variantes Seeed XIAO são mantidos como referências de hardware. A interação é voz em primeiro lugar: diga "Jarvis" ou pressione PWR, depois fale, e uma resposta pode ser interrompida falando por cima dela. Um deslize central percorre um anel de ecrãs (JARVIS, WATCH, WEATHER, STATUS, ACTIVITY, mais DESK enquanto um companheiro está ativo), cada um mostrando uma leitura em direto em vez de uma página de definições. Tocar numa folha aberta faz o Jarvis dizer o que o ecrã mostra. O STATUS reporta bateria, carregador, barras de Wi-Fi com dBm, lâmpadas de sessão e de ferramentas, endereço, temperatura do chip, engrenagem da CPU, modo de rádio e tempo de atividade. A privacidade é física: segurar o vidro, virar o dispositivo para baixo ou pressionar o controlo central silencia o microfone, indicado por um anel dourado e uma fenda dourada fechada. Deixado sozinho com bateria, o dispositivo repousa, escurece e entra em sono profundo, acordando ao ser levantado ou tocado. O hardware inclui um SoC ESP32-S3R8 dual-core a 240 MHz, AMOLED QSPI CO5300, toque CST9217, áudio ES7210 mais ES8311, IMU QMI8658 com Wake-on-Motion, PMIC AXP2101, 8 MB de PSRAM octal e 32 MB de flash com dois slots OTA de 4 MB. A revisão C não tem TCA9554, RTC nem slot microSD; a hora é suportada por SNTP. As capacidades em direto incluem uma sessão duplex direta Gemini Live com palavra de ativação WakeNet, VAD do servidor e AEC; um buffer de jitter adaptativo atrás do altifalante; três watchdogs de sessão (keepalive, sem resposta, expressão sem resposta); ferramentas de voz para pesquisa web e notícias, meteorologia, Wikipédia, preços, taxas de câmbio, fusos horários, tradução, artigos de investigação e níveis do dispositivo, atrás de uma lista de permissões apenas de leitura aplicada no dispositivo; modo companheiro ZeroChat opcional; uma escada de repouso que termina em sono profundo; autoridade física que a entrada sintética não pode sobrepor; e OTA de slot duplo com pré-verificação, período de prova e reversão. A renderização testada no anfitrião cobre 556 verificações no anel, folhas e HUD. O repositório está organizado em torno de main/ como raiz de composição e autoridade de rotas HTTP, com components/jr_core (estado puro de sessão e escada de repouso), jr_transport (enquadramento Gemini e WebSocket), jr_audio, jr_display, jr_tools, jr_imu, jr_power e jr_net, além de uma definição de placa, scripts para compilação/flash/OTA/QA e documentação extensa. As compilações usam Docker fixado em espressif/idf:v5.5.4 através de scripts/build-v5.sh e scripts/flash-v5.sh; um dispositivo em execução é atualizado por Wi-Fi com scripts/jarvisctl.py ota em vez de USB-JTAG. As notas de segurança são explícitas: os segredos residem na NVS do dispositivo ou no keychain do anfitrião, mas a NVS não está encriptada atualmente, pelo que o acesso físico à flash expõe as credenciais de Wi-Fi, Gemini e JarvisMCP. As ferramentas alcançam o JarvisMCP através de uma rota legada /act com um bearer que transporta autoridade total de gateway, pelo que o dispositivo aplica uma lista de permissões apenas de leitura; uma rota tipada /device/v1/invoke com política de capacidades do lado do servidor está prevista mas não provisionada. JR_DEV_OPEN_DIAGNOSTICS deve ser 0 antes do lançamento, e imagens assinadas, upload encriptado autenticado e encriptação de NVS/flash continuam a ser portões de lançamento. O projeto é Apache-2.0.