Si4703

Ciao a tutti , sto provando alcuni sketch per gestire la radio FM con rds ma ho difficoltà a farli funzionare , faccio tutte le funzioni ma niente rds.
Ho modificato qualche sketch e sono arrivato al punto di vedere sto benedetto rds…
La domanda è : dovrei estrarre il segnale TA (traffic announcement) ma non saprei da dove iniziare…
Se volete provare il mio sketch ne allego 2 che ho modificato e funzionano …
Ogni aiuto è tesoro!!!

Si4703modificato.ino (2 KB)

Si4703_Example.ino (18.8 KB)

Dell’argomento ne so zero tondo, quindi non so fino a che punto potrò aiutarti. Cercando su Internet, ho trovato informazioni frammentarie riguardo la cattura del segnale TA con Arduino. Si trovano i datasheet del Si4703 che trattano dell’argomento TA, ma non sono molto user-friendly da interpretare.

L’unico straccio di sketch che ho trovato è quello che ho allegato al presente messaggio. La funzione che richiama il TA è la displayRDS(void). Fa uso di un’altra libreria, l’hardware non capisco se è leggermente diverso dal tuo, e richiede il collegamento di due ulteriori PIN: resetPin e RDSInterruptPin

Nella pagina del progetto completo vedi i dettagli dello stesso e i collegamenti:
Si4703-FM-Radio-Arduino-Uno-Shield

I link al download delle librerie necessarie li trovi allo step 3 della pagina.

Si4703_Radio_Test_rssi.txt (10.8 KB)

Ti ringrazio ... provo !

Dopo una ricerca in rete sono arrivato al fatto che esiste una libreria che estrae i segnali TA, TP TPY, AF …ma non gestisce correttamente il radiotext ! Infatti mancano alcuni caratteri e si aggiorna a cavolo…
Questa versione utilizza l’interrupt del modulino radio …
Mentre esiste un’altra libreria che estrae correttamente il radiotext e nome della emittente ma senza i segnali TA ,TP ecc… Questa non utilizza l’interrupt del modulo radio.
Bisognerebbe editarle e crearne una efficiente e definitiva …ma ancora non ci riesco :slight_smile:
Allego le 2 librerie e lo scketch che funziona, magari si potesse fare qualcosa …
Lo sketch funziona con la libreria “modified” mentre dentro a quella breakout c’è lo sketch di esempio che estrae tutto regolarmente ma senza radiotext…

RadioRDS.zip (25.7 KB)

Dunque , ho testato alcune librerie ed esempi per arrivare ad uno sketch che gestisse correttamente tutte le informazioni della radio . Non sono un programmatore esperto ma qualche cosa riesco a fare. Nello specifico ci sono due librerie scritte da Nathan Seidle (Spark Fun Electronics) dove una gestisce correttamente il radiotext e nome trasmittente , l’altra funzionando con l’hardware a 3 fili (GPI02 interrupt RDS) gestisce le info TA AF TP EON ecc… ma la gestione del radiotext non è performante…
Quindi tenendo la prima libreria di Nathan Seidle e utilizzando lo sketch di esempio ho fatto il porting inserendo porzioni di codice dell’altra che gestisce le informazioni mancanti.
Il porting l’ho fatto creando dei void nel main program richiamando le funzioni quando necessarie…
Sarebbe bello inserire le funzioni direttamente nella libreria… ma funziona bene lo stesso…
La libreria che gestisce le info TA TP Eon ecc la allego comunque ,
Ne è uscito uno sketch che funziona ,a mio parere pure bene, aggiorna il contenuto visualizzato su seriale ogni secondo , accende un led in porta D8 dell’arduino nano (attiva a stato basso ) quando in TA …
Se qualcuno volesse provarlo lo allego , di seguito le connessioni al nano …la libreria e lo sketch
D6 Reset
A5 Clock
A4 Data
Gnd
3,3V
questa modificata è Si4703_Breakout_Modified-master
mentre l’altra e Si4703_Breakout

Si4703_Breakout_Modified-master.zip (14 KB)

Si4703_Breakout.zip (5.15 KB)

OOps… qui il secondo file , nel post precedente manca lo sketch…

Si4703_Breakout.zip (11.9 KB)