RDK: Comunicação IIC
Introdução
Este repositório fornece código de exemplo em Python para a comunicação entre a plataforma RDK X5 (Raspberry Pi) e o módulo de interação por voz AI, com suporte para dois métodos de comunicação: I2C e UART.
Módulo de reconhecimento de voz: suporta reconhecimento de voz offline e apresenta o ID do comando após o reconhecimento
Função de reprodução: suporta reprodução passiva, reprodução de palavras de função e reprodução de palavras de comando
Protocolo de comunicação: endereço I2C 0x2A, débito em bauds UART 115200
Linguagem de programação: Python 3
Ligação do hardware
Ligação geral
Nota importante: certifique-se de que todos os dispositivos partilham a mesma terra!
Ligação da versão I2C
Nota: por predefinição, é utilizado o bus I2C 5 (numeração BCM)

Configuração do ambiente
Requisitos do sistema
RDK X5
Sistema Ubuntu / Debian
Python 3.7+
Instalar os pacotes de dependências
# Atualizar os pacotes
sudo apt update
sudo apt upgrade -y
# Instalar as bibliotecas Python
sudo apt install -y python3-pip python3-smbus i2c-toolsAtivar a interface I2C
# Abrir a ferramenta de configuração
sudo raspi-config
# Selecionar Interface Options → I2C → Enable
# Tem efeito após reiniciar
sudo rebootTestar a interface de hardware
# Testar o dispositivo I2C
sudo i2cdetect -y 5Utilização da versão IIC
Verificar os ficheiros de código
cd IIC_Voice
ls -la
# Deverá ver iic_voice.pyConfigurar o bus I2C
Edite o ficheiro iic_voice.py e altere os parâmetros necessários:
# Endereço do dispositivo I2C
DEVICE_ADDRESS = 0x2A
# Endereço do registo
REG_RESULT = 0xDA
# Número do barramento I2C (alterar conforme a ligação real)
bus = smbus.SMBus(5) # Barramento I2C 5Executar o programa
# Conceder permissões de execução
chmod +x iic_voice.py
# Executar (é necessária permissão sudo para aceder ao I2C)
sudo python3 iic_voice.pyTeste de execução
Após um arranque normal, será apresentado:
Speech Serial Opened! Baudrate=115200Diga uma palavra de comando ao módulo de voz e será apresentado o ID correspondente:
Speech Serial Opened! Baudrate=115200
ID:1
ID:4
ID:10Parar o programa
Prima Ctrl + C para parar o programa:
Program terminatedResolução de problemas
Q1: Permissões insuficientes para operações I2C
R: Adicione o utilizador ao grupo de utilizadores I2C:
sudo usermod -aG i2c $USER
# É necessário iniciar sessão novamente para ter efeitoOu então execute o programa com sudo
Q2: O dispositivo I2C não aparece na análise
R: Verifique:
Confirme se o I2C está ativado (raspi-config)
Verifique se o SDA/SCL estão trocados
Verifique se partilham a mesma terra
Verifique se o dispositivo está alimentado
# Digitalizar os dispositivos I2C
sudo i2cdetect -y 5
# Se vir 0x2A, o dispositivo está ligado corretamenteQ3: O ID do comando só mostra 0 ou não aparece
R: Comportamento normal:
0 = não foi reconhecido nenhum comando válido
o ID só é apresentado quando é dita uma palavra de comando válida
ative primeiro o módulo e só depois diga o comando
Q4: A precisão de reconhecimento não é elevada
R: Sugestões de otimização:
Garanta um ambiente silencioso e um ruído de fundo reduzido
Mantenha uma distância moderada em relação ao microfone (10-50cm)
Fale a um ritmo moderado e articule com clareza
Suporte técnico
Se tiver problemas, verifique:
Se a cablagem do hardware está correta (a terra comum é muito importante!)
Se o débito em bauds da porta série é 115200
Se o endereço I2C está correto (0x2A)
Se existem permissões suficientes para aceder à interface de hardware
Comandos de depuração comuns
ls -l /dev/i2c* # Ver os dispositivos I2C
groups # Ver as permissões do grupo de utilizadores
