Site Tools


en:tech:dabmodule

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
en:tech:dabmodule [2022/09/26 08:26] – [Hardware] bullaren:tech:dabmodule [2022/11/10 20:56] (current) – [Hardware] bullar
Line 1: Line 1:
 ====== DAB+ Module ====== ====== DAB+ Module ======
 +
 +===== Motivation =====
  
 In the age of 'music streaming', terrestrial radio listening seems antiquated. In the absence of WLAN or mobile communications, however, it can be an alternative to stay connected to the world, at least while consuming. FM (UKW) transmission was first trial took place in Germany almost 100 years ago (1925). And actually FM was supposed to be discontinued in 2012, but this only became reality in the cable network. To the delight of motorists with conventional analogue radios. The current digital successor DAB+ (the previous, incompatible and not very successful DAB was discontinued) is at least visible on the market and there are a number of inexpensive DAB+ receivers under €30. I decided to try out a TechniSat TECHNIRADIO RDR: In the age of 'music streaming', terrestrial radio listening seems antiquated. In the absence of WLAN or mobile communications, however, it can be an alternative to stay connected to the world, at least while consuming. FM (UKW) transmission was first trial took place in Germany almost 100 years ago (1925). And actually FM was supposed to be discontinued in 2012, but this only became reality in the cable network. To the delight of motorists with conventional analogue radios. The current digital successor DAB+ (the previous, incompatible and not very successful DAB was discontinued) is at least visible on the market and there are a number of inexpensive DAB+ receivers under €30. I decided to try out a TechniSat TECHNIRADIO RDR:
Line 51: Line 53:
 My goal was to develop the smallest possible module, which can then be placed anywhere, similar to the KeyStone solution. My goal was to develop the smallest possible module, which can then be placed anywhere, similar to the KeyStone solution.
 The chip manufacturer's Application Note [[https://www.skyworksinc.com/-/media/Skyworks/SL/documents/public/application-notes/AN851.pdf|AN851]] provides an example schematic and some PCB design rules. All the designers of the boards I have have adhered to this. This inhibits willingness to experiment: The chip manufacturer's Application Note [[https://www.skyworksinc.com/-/media/Skyworks/SL/documents/public/application-notes/AN851.pdf|AN851]] provides an example schematic and some PCB design rules. All the designers of the boards I have have adhered to this. This inhibits willingness to experiment:
 +
 +{{ :tech:dab_module_sch.png?direct&400 |DAB+ module}}
  
 The module contains everything for relaxed FM/DAB+ reception and offers the following connectivity: The module contains everything for relaxed FM/DAB+ reception and offers the following connectivity:
Line 85: Line 89:
 ===== Software ===== ===== Software =====
  
 +As already mentioned, the DAB+ module is controlled via an SPI interface. The Arduino does this and at the same time provides a UART terminal (115,200 Bd) where you can call up individual functions via the serial interface:
 +
 +<code>
 +  COMMANDS: 
 +   reset            -> Reset Si4684
 +   test <fm/dab>    -> Test module (FM/DAB Mode)
 +   fm               -> Set FM Mode
 +   dab              -> Set DAB Mode
 +   help             -> display this command list
 +   DAB Mode:
 +    scan            -> scan for available DAB ensembles
 +    tune <n>        -> tune to frequency index
 +    service <n>     -> tune to service ID
 +    info            -> display the ensemble info
 +    time            -> display the current DAB time
 +    version         -> display DAB firmware version
 +    vol <n>         -> set volume 0-63
 +    mute <n>        -> mute 0=off,1=left,2=right,3=all
 +   FM Mode:
 +    scan            -> scan available FM stations
 +    tune <n>        -> tune to frequency in kHz
 +    seek <up/down>  -> seek to next station (up/down)
 +    info            -> display signal quality and RDS data
 +    version         -> display FM firmware version
 +    vol <n>         -> set volume 0-63
 +    mute <n>        -> mute 0=off,1=left,2=right,3=all
 +</code>
 +
 +Don't forget to connect an antenna otherwise it will be quiet. A commercially available DAB+ antenna from an electronics store can be connected to the SMA connector or just a lambda/4-length wire (FM = approx. 80cm and DAB+ approx. 37cm).
 +
 +The test S/W on the Arduino consists of six S/W modules:
 +   - ''DAB_modtest'' main program
 +   - ''DAB_func'' Contains all DAB functions
 +   - ''FM_func'' Contains all FM functions
 +   - ''si4684.h'' All SI4684 definitions
 +   - ''si4684_func'' All implemented SI4684 functions
 +   - ''si4684patch.h'' Patch0016 data
 +
 +A good start is the ''test fm'' which fully initializes the module and selects a FM station of choice (88MHz in the sample code). After successful execution, you should hear the station program from the loudspeakers. If not then the error status can give some indication on the problem and H/W troubleshooting begins. \\
 +
 +**What happens during ''test fm''?** \\
 +
 +With ''test FM'' as well as with every start, the following sequence of functions must be processed:
 +
 +  - ''si468x_reset()'' Hard reset of SI4684
 +  - ''si468x_load_init()'' Prepares the bootloader to receive a new image
 +  - ''si468x_host_load()'' Loads an image from HOST over command interface
 +  - ''si468x_load_init()'' Prepares the bootloader to receive a new image
 +  - ''si468x_flash_set_property(0x0001, 5000)'' Sets the value of a FLASH property (SPI Clock to 10MHz)
 +  - ''si468x_flash_load(FLASH_START_ADDR_FM)'' Loads an image from external FLASH over secondary SPI bus
 +  - ''si468x_boot(&value)'' Boots the image currently loaded in RAM
 +  - ''si468x_set_property(0x0000, 0x0004)'' INT_CTL_ENABLE RDS_INT
 +  - ''si468x_set_property(0x0001, 0x0004)'' INT_CTL_REPEAT RDS_INT
 +  - ''si468x_set_property(0x3900, 0x0001)'' FM_AUDIO_DE_EMPHASIS
 +  - ''si468x_set_property(0x3C00, 0x0001)'' FM_RDS_INTERRUPT_SOURCE
 +  - ''si468x_set_property(0x3C01, 0x0010)'' FM_RDS_INTERRUPT_FIFO_COUNT
 +  - ''si468x_set_property(0x3C02, 0x0001)'' FM_RDS_CONFIG
 +  - ''si468x_fm_tune_freq(freq)'' tune to FM frequency freq
 +
 +After a successful ''test FM'' you can approach individual menu items in FM mode or start the ''test DAB''. The current software still has some gaps, but with a little time and muse, RDS or DAB+ data service functions can also be implemented. \\
 +
 +If anyone wants to extend functionality, the SPI protocol is in [[https://www.skyworksinc.com/-/media/Skyworks/SL/documents/public/application-notes/an649.pdf|AN649]] from the chip manufacturer available.\\
 +
 +===== Conclusion =====
 +
 +Even if not all software functions have been implemented yet, the module's design allows for performance that is comparable to that of a DAB+ series device. This means ready for integration into your own projects.
 +
 +Since the test software was completed in Bangkok (during the quarantine) here is just a FM and DAB+ scan as an example from this city:
 +
 +<code>
 +FM
 +
 +Freq= 88.0MHz: RSSI=26, SNR=27
 +00.00.0000 00:00 PI=-1 PTY=18 ps= sd=Radio Thailand F.M. 88.00 MHz. www.prd.go.th  
 +00.00.0000 00:00 PI=-1 PTY=18 ps=NBT 88   sd=Radio Thailand F.M. 88.00 MHz. www.prd.go.th
 +
 +Freq= 88.5MHz: RSSI=20, SNR=20
 +00.00.0000 00:00 PI=0 PTY=0 ps=GOODTIME sd=
 +
 +Freq= 89.0MHz: RSSI=30, SNR=32
 +Freq= 90.5MHz: RSSI=21, SNR=19
 +Freq= 91.5MHz: RSSI=22, SNR=24
 +Freq= 92.5MHz: RSSI=17, SNR=19
 +
 +Freq= 93.0MHz: RSSI=18, SNR=20
 +00.00.0000 00:00 PI=9483 PTY=12 ps=  COOL   sd=
 +00.00.0000 00:00 PI=9483 PTY=12 ps=  COOL   sd=COOLfahrenheit                                                  
 +
 +Freq= 93.5MHz: RSSI=21, SNR=22
 +
 +Freq= 94.0MHz: RSSI=22, SNR=24
 +00.00.0000 00:00 PI=9485 PTY=10 ps= sd=COOLfahrenheit                                                  
 +00.00.0000 00:00 PI=9485 PTY=10 ps= EFM94   sd=COOLfahrenheit                                                  
 +00.00.0000 00:00 PI=9485 PTY=10 ps= EFM94   sd= www.efm.fm                                                     
 +
 +Freq= 98.0MHz: RSSI=38, SNR=27
 +Freq=101.5MHz: RSSI=26, SNR=28
 +
 +Freq=103.5MHz: RSSI=28, SNR=26
 +00.00.0000 00:00 PI=0 PTY=0 ps= sd=103.5 FM ONE
 +00.00.0000 00:00 PI=0 PTY=0 ps= FM ONE  sd=103.5 FM ONE
 +
 +Freq=104.5MHz: RSSI=16, SNR=17
 +00.00.0000 00:00 PI=11368 PTY=10 ps=  FLEX   sd=
 +00.00.0000 00:00 PI=11368 PTY=10 ps=  FLEX   sd=                                                                
 +
 +Freq=105.5MHz: RSSI=21, SNR=21
 +
 +Freq=106.5MHz: RSSI=24, SNR=21
 +00.00.0000 00:00 PI=-24219 PTY=12 ps= sd=                                                                
 +00.00.0000 00:00 PI=-24219 PTY=12 ps= WAVE    sd=GOOD MUSIC GOOD FEELING                                                                
 +00.00.0000 00:00 PI=-24219 PTY=12 ps= GREEN   sd=GOOD MUSIC GOOD FEELING 
 +00.00.0000 00:00 PI=-24219 PTY=12 ps= WAVE    sd=GOOD MUSIC GOOD FEELING                                                                
 +00.00.0000 00:00 PI=-24219 PTY=12 ps= GREEN   sd=GOOD MUSIC GOOD FEELING 
 +
 +
 +DAB+
 +
 +Ensemble Freq 06 185.360 MHz
 +Bangkok DAB+    
 +
 +Services: 
 +ID Name
 +
 +0: JS.100          
 +1: COOLfahrenheit  
 +2: RROne FM 101    
 +3: Thai PBS Digital
 +4: 103.5 dab+ RADIO
 +5: Looktung Network
 +6: FM 94(TV5)      
 +7: KU RADIO        
 +8: MET 107         
 +9: RadioThailand   
 +10: NBTCtest        
 +11: HITZ 955        
 +12: GreenWave 106.5 
 +13: LTM FM 95       
 +
 +ALL:
 +AM=2 BR=64 SR=48000 SM=4 (Stereo 64Kbps 48000Hz DAB+)
 +</code>  
 +
 +===== Downloads =====
 +
 +  * {{:tech:dab_module_sch.pdf| Schematic (,pdf)}}
 +  * {{:tech:dab_module_bom.csv.zip| Bill of material (BOM) als .csv}}
 +  * {{:tech:dab_module.brd.zip| PCB Eagle File (.brd)}}
 +  * {{:tech:dab_module_adapter.zip | Module Adapter base and clamp (.stl)}}
 +  * {{:tech:dab_modtest.zip| Test software (.ino)}}
 +
 +===== Donate =====
 +
 +If you like my articles feel to donate a cappuccino or so...
 +
 +<html>
 +
 +<form action="https://www.paypal.com/donate" method="post" target="_top">
 +<input type="hidden" name="hosted_button_id" value="49N24HL36GF9U" />
 +<input type="image" src="https://www.paypalobjects.com/en_US/DK/i/btn/btn_donateCC_LG.gif" border="0" name="submit" title="PayPal - The safer, easier way to pay online!" alt="Donate with PayPal button" />
 +<img alt="" border="0" src="https://www.paypal.com/en_DE/i/scr/pixel.gif" width="1" height="1" />
 +</form>
 +
 +</html>
en/tech/dabmodule.1664180813.txt.gz · Last modified: 2022/09/26 09:26 (external edit)