Problem that occurs when GroveOLED Yellow&Blue (SSD1315) is connected into the I2C port of the ReSpeaker 2-Mics Pi HAT (RPI Zero2W)

Hello!!
I am working on a project using RPI Zero2W and ReSpeaker 2mics pi hat.
In this project, I will use Raspberry pi Zero 2W and connect the following components to ReSpeaker 2mics pi hat on Zero2W.

Components:
I2C port: connect GroveOLED Yellow&Blue(SSD1315)
(Grove - OLED Yellow&Blue Display 0.96(SSD1315) - SPI/IIC -3.3V/5V | Seeed Studio Wiki)
GPIO12 port: connect Grove Red-LED Button.
MIC_Land MIC_R: Used for audio input
3.5mm AUDIO JACK: Used to output audio from a speaker plugged into this port.

I know of course that the ReSpeaker 2mics pi hat does not officially support the Zero2W.
Nevertheless, I have successfully installed the drivers to the Zero2W and have successfully recorded with 2mics and output from the Audio Jack without any problems.
However, when I connect the GroveOLED Yellow&Blue (SSD1315) to the I2C port, I cannot record the microphone nor output from the Audio Jack.
After a while of disconnecting the OLED, the microphone and Audio Jack return to normal operation.
Furthermore, I do not know under what conditions this is occurring, but it is rare that the RPI freezes the moment the OLED is plugged in.

After connecting the OLED, the following error was left in dmesg during invalid recording or playback.
(Actually there are many more lines. Here is an excerpt)

[ 214.585683] wm8960 1-001a: ASoC: error at snd_soc_component_update_bits on wm8960.1-001a for register: [0x00000005] -121
[ 215.162159] wm8960 1-001a: ASoC: error at soc_component_write_no_lock on wm8960.1-001a for register: [0x00000007] -121

Other information that may be helpful is as follows.

  • I tested this ReSpeaker by plugging it into the RPI4, and the exact same problem occurred.
  • I also measured the voltage of all GPIO pins of RPI Zero2W and there was no problem
    with the output voltage, so I don’t think it is caused by bad soldering.
  • I have tried both the official Seeed driver and the HinTak driver, and this problem occurs
    with both.
  • I am using an adapter that can supply up to 4.8A to the RPI.
  • I have not tried the GPIO12 port yet, but I do not plan to connect the OLED to GPIO12
    because it is essential to implement both the OLED and the Button in this project.

I would like to ask for anyone’s wisdom in resolving this issue.
If there is any information missing for a solution, please do not hesitate to let me know so I can look into it and add it.
Best regards.

Hi there,
Sounds like a I2c resistor issue. Try the display only leave off the speaker, Does it work?
What pins are you using for the pie zero?
HTH
GL :slight_smile: PJ

Thanks for your reply, PJ_Glasso!

I was able to display text on the display both with the OLED connected to the I2C port of the ReSpeaker with the speaker disconnected, and with the OLED connected directly to the RPI Zero2W with the ReSpeaker situation removed, as shown in the pictures below.
Both the code for the OLED in grove.py (grove_oled_display_128x64.py) and the code I wrote using the luma library worked.
(And of course the microphone is not working, as is the error that comes up in dmesg.)

The GPIO pins on the RPI Zero2W are blocked by the ReSpeaker socket and no other components are connected to the ReSpeaker (OLED, Grove button (but this is not connected yet), speaker). There are no plans to connect other components in the future.

Hi there,
AOK, You have verified the connections that’s good, You’ll get it you’re close.
Are you certain the Display is not and SPI unit?.or switching modes.
(may be worth switching it to SPI and try it again.)
I see this in the sales page?
" OLED Yellow&Blue Display 0.96 is built 128*64 resolution with a blue and yellow bi-color display. It can be light up by either I2C or SPI interface."
HTH
GL :slight_smile: PJ

Can you post up the code? We can take a look, unless it’s proprietary… :sweat_smile:

Sorry for the delay in posting the rest of this article.

My friend gave me the “you can’t use long cables with I2C” hint, which solved this problem.
The cause of this problem was that the OLED was connected to the ReSpeaker with a 30cm Grove cable.
The 5cm Grove cable I bought to try it out did not cause this problem at all.
Incidentally, the 20cm Grove cable that came with the OLED did not work.

So far only the 5cm cable has succeeded in making a normal connection, but this is a bit too short for my application.
The problem with the ReSpeaker has been resolved, but if anyone has any good ideas for using a slightly longer Grove cable, I would appreciate it if you could POST them.

Sorry for the very late reply.
As you can see below, the problem with ReSpeaker has been resolved by myself.
Thank you very much for your kind response.

Hi there,
You can probably adjust the resistor size to get more distance, BTW
HTH
GL :slight_smile: PJ