Wireless Stick and I2C communication on ports 21/22

Hello, I recently started working with a couple of Heltec Wireless Sticks. I spent some time trying to connect a few I2C peripherals and sensors to this board, but for the most part, I could not get them to work. I’m using the standard Wire library.

Initially, I was unable to detect the devices using the standard address scan app. However, I discovered that if I connected two peripherals (both placed close together on a proto-board), both would be detected. Both of these devices have pull-up resistors, yet when measuring them, the resistance value for pin 21 (SDA) was always lower than that on pin 22 (SCL), even though the pull-up on the peripheral was the same when measured outside the circuit. My conclusion from this is that by having two I2C devices attached, each with its own pull-up resistor, the resistance would be low enough to allow the Wireless Stick to detect both devices.

However, this does not solve my problem. The only way I could get it to detect the I2C device was with either two peripherals on the bus or by adding a 4.7K resistor myself on the SDA line (pin 21) as a pull-up.

My next test was to check the signal through an oscilloscope, and there I found that the signal on the SDA line does not look healthy. It seems the signal is either too weak or there is too much capacitance. I believe this is why a stronger pull-up helped, as it somewhat improves the signal.

I even tried to lower the clock frequency down to 10KHz, but it did not help much, and the SDA signal continued to appear unreliable, causing my device to work intermittently. I also checked the signal without any of my I2C devices connected, and once again, the SDA signal did not look okay. I tested this on both Wireless Sticks I own, and the results were the same.

In case you are wondering, the signal on SCL looks fine.

My question to the community is: Could I perhaps be missing something obvious? Does the I2C require some particular initialization sequence?

Here is a picture showing what the signal looks like on SDA.

I could not get i2c work on this device and what I found appears to indicate a problem with the SDA port. Given both devices I have show the same behavior this might as well be a bug or design issue on this board. I have since moved my project to a nodemcu board and all all worked fine.

In addition I have since watched some online reviews of the wireless stick board and I now conclude this board is not up to par with regards to LoRa (main reason I initially purchased it). Ref.: “ESP32 Lora Boards: What you need to know before you buy” by Andreas Spiess (https://youtu.be/CJNq2I_PDHQ).

TLDR use V3 not these earlier versions and it works fine.

For reference, the above comments, including Andreas’ excellent linked video, refer to old versions of Wireless Sticks that have not been in production for quite some time. The issues in the video don’t apply to the V3 (including the lite version) etc.
There are issues (mostly with the documentation and firm-ware which are both atrocious IMHO) but these are not hardware issues (Heltec has the best hardware IMHO if you can get it working) and can be overcome if required. There are also several confirmed working projects with the V3 boards using:

#define SDA 19
#define SCL 20
Wire.begin(SDA,SCL);

1 Like