Replies: 1 comment
-
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
As there’s a lot of people asking about this, I decided to concentrate here all the info I gathered about this topic, what is possible and what is not.
BEWARE: This info applies to ATS-MINI style receivers of the V1/V2 revisions and the AMNVOLT V1, V2 and V3. Further chip redesigns might introduce new features that could make this info obsolete.
TL;DR / In a nutshell
Explanation: Audio connection to the ESP32S3
There is no connection between the audio output of the SI4732 radio chipset and the ESP32S3 main processing unit. There’s only I²C bus communication between both chips and this is only used for issuing control commands to the radio chip, like changing freqs.
The SI4732 has the capability to output audio in normal analog stereo modulation, or via some digital modes like I²S.
Connecting I²S or Inter-IC Sound, is not possible. The SI4732 has the option of an external clock reference, or an internal oscillator mode. When in internal mode, it requires the addition of an external crystal, which is connected using one of the pins that carries the I²S protocol if activated (GPO3/DCLK pin 2). The ATS-MINI uses the internal osc mode, therefore no digital audio option is possible due to pin 2 being used for the crystal.
Only analog feed is achievable via a (relatively) simple mod, as I will explain further below. For this, one of the Analog to Digital converter inputs of the ESP32S3 must be used. The ESP32S3 has 2 ADC units, called ADC1 and ADC2, and both have up to 10 input pins, or “channels”.
The use of ADC2 would be desirable because the design of ATS-MINI left free/unused pins only for ADC2 channels, but this is not possible for these reasons:
Only ADC1 is left as an option and this requires a further challenge, because no free ADC1 pin is left on the ATS-MINI design. The only simple way is to relocate the battery voltage sensing to an ADC2 pin, because it is done via one-shot sampling, and that would leave us with GPIO4/ADC1_Ch3 pin for use to sample audio. Check below for the explanation.
Explanation: Audio streaming from the ESP32S3
Bluetooth audio is not possible at the moment, because the ESP32S3 wonderful and futuristic (and cost cutting!) feature-set left us with NO Bluetooth Classic support. Between the features of BT Classic, there’s the A2DP audio streaming profile that is what powers all the Bluetooth speakers/headphones/music-emitting-whatever of the world. We only have the newest BLE, or Bluetooth Low Energy on this chip. There’s of course a new profile called BLE Audio but its adoption is yet to be widespread; there are circa none BLE Audio products like speakers, and there are no libraries nor official support from ESPRESSIF to use the protocol on the chip. Even if ESPRESSIF releases the library tomorrow, it would cost you a little fortune to buy a compatible device to use it, as they are yet too novel.
The other wireless capability of the ESP32 is of course WiFi. The easiest way to do it is to use the already implemented webserver on the ATS-MINI project and do streaming on another port, so you can listen in a web browser. This is the only thing that has being done by me and is explained below.
The only possible and relatively easy mod
This will only get us LOW SAMPLE RATE and HIGH NOISE audio because the ADC modules on an ESP32 are not suitable for audio sampling. This is ONLY useful for voice broadcasts.
As we can’t use ADC2, we’ll use the ADC1 module of the ESP32, as explained above. For this, we need to get a pin free because all of the ADC1 ones are in use. The only candidate is GPIO4 which does the battery voltage sampling to calculate the battery level on screen, and this can be relocated to a free ADC2 pin as we can use it to recover it’s function.
PROCEDURE:
1- Cut the trace going to GPIO4 (BAT_ADC) to effectively disconnect it from the pin, using a sharp point knife. Before continuing, turn on the radio and use a multimeter to verify there’s no longer a voltage present at this pin (is usually 2 volts or so on normal conditions).
2- Solder a jumper wire between PIN 8 of the NS4160 amplifier chip (VOP pin) to the recently freed PIN 4 on the ESP32S3 (GPIO4/ADC1).
3- To recover battery status functionality, solder a jumper wire between BAT_ADC point (R8, R10 or C12) to PIN 19 on the ESP32S3 (GPIO11/ADC2).
Now you need to make modifications to the firmware:
1- Use Arduino Audio Tools library to sample ADC1 channel 3 in continuous mode.
2- Start a webstream on another port, like port 81.
3- Reconfigure BAT_ADC pin on the firmware to GPIO11.
I can provide such modifications but you’ll have to wait another week or two, as I’m currently without my ATS-MINI, I’ve got a broken screen.
DEMO VIDEO
https://youtube.com/shorts/P2JalmDXG0s
Well, I hope this answers all the questions regarding wireless audio on our beloved receiver, and makes good and interesting reading for some people.
Cheers!
Humberto
Beta Was this translation helpful? Give feedback.
All reactions