RDK: Comunicazione IIC
Introduzione
Questo repository fornisce codice di esempio Python per la comunicazione tra la piattaforma RDK X5 (Raspberry Pi) e il modulo di interazione vocale AI, con supporto per due modalità di comunicazione: I2C e UART.
Modulo di riconoscimento vocale: supporta il riconoscimento vocale offline e, dopo il riconoscimento, restituisce l'ID del comando
Funzione di riproduzione: supporta la riproduzione passiva, la riproduzione delle parole di funzione e la riproduzione delle parole di comando
Protocollo di comunicazione: indirizzo I2C 0x2A, baud rate UART 115200
Linguaggio di programmazione: Python 3
Connessione hardware
Connessione generale
Nota importante: assicurarsi che tutti i dispositivi abbiano il GND in comune!
Connessione della versione I2C
Nota: per impostazione predefinita viene utilizzato il bus I2C 5 (numerazione BCM)

Configurazione dell'ambiente
Requisiti di sistema
RDK X5
Sistema Ubuntu / Debian
Python 3.7+
Installazione dei pacchetti di dipendenza
# Aggiorna i pacchetti
sudo apt update
sudo apt upgrade -y
# Installa le librerie Python
sudo apt install -y python3-pip python3-smbus i2c-toolsAbilitazione dell'interfaccia I2C
# Apri lo strumento di configurazione
sudo raspi-config
# Seleziona Interface Options → I2C → Enable
# Effettivo dopo il riavvio
sudo rebootTest dell'interfaccia hardware
# Testa il dispositivo I2C
sudo i2cdetect -y 5Utilizzo della versione IIC
Verifica dei file di codice
cd IIC_Voice
ls -la
# Dovresti vedere iic_voice.pyConfigurazione del bus I2C
Modificare il file iic_voice.py e cambiare i parametri necessari:
# Indirizzo del dispositivo I2C
DEVICE_ADDRESS = 0x2A
# Indirizzo del registro
REG_RESULT = 0xDA
# Numero del bus I2C (modifica in base al collegamento effettivo)
bus = smbus.SMBus(5) # Bus I2C 5Esecuzione del programma
# Assegna il permesso di esecuzione
chmod +x iic_voice.py
# Esegui (serve sudo per accedere a I2C)
sudo python3 iic_voice.pyTest di esecuzione
Al termine di un avvio corretto viene visualizzato:
Speech Serial Opened! Baudrate=115200Pronunciando una parola di comando al modulo vocale, viene visualizzato l'ID corrispondente:
Speech Serial Opened! Baudrate=115200
ID:1
ID:4
ID:10Arresto del programma
Premere Ctrl + C per arrestare il programma:
Program terminatedRisoluzione dei problemi
Q1: autorizzazione insufficiente per le operazioni I2C
R: aggiungere l'utente al gruppo utente I2C:
sudo usermod -aG i2c $USER
# Effettivo dopo un nuovo loginOppure eseguire il programma con sudo
Q2: il dispositivo I2C non viene rilevato dalla scansione
R: verificare:
Confermare che I2C sia abilitato (raspi-config)
Verificare se SDA/SCL sono invertiti
Verificare che il GND sia in comune
Verificare che il dispositivo sia alimentato
# Scansiona i dispositivi I2C
sudo i2cdetect -y 5
# Se vedi 0x2A, il dispositivo è collegato correttamenteQ3: l'ID del comando mostra solo 0 o non viene visualizzato
R: fenomeno normale:
0 = nessun comando valido riconosciuto
L'ID viene emesso solo dopo aver pronunciato una parola di comando valida
Attivare prima il modulo, poi pronunciare il comando
Q4: precisione di riconoscimento non elevata
R: suggerimenti di ottimizzazione:
Assicurarsi che l'ambiente sia silenzioso e che il rumore di fondo non sia troppo elevato
Mantenere una distanza adeguata dal microfono (10-50cm)
Ritmo di parlata moderato e pronuncia chiara
Supporto tecnico
In caso di problemi, verificare:
Se il cablaggio hardware è corretto (il GND in comune è molto importante!)
Se il baud rate della porta seriale è 115200
Se l'indirizzo I2C è corretto (0x2A)
Se si dispone di autorizzazioni sufficienti per accedere all'interfaccia hardware
Comandi di debug comuni
ls -l /dev/i2c* # Visualizza i dispositivi I2C
groups # Visualizza i permessi dei gruppi utente
