🤖Have you ever tried Chat.M5Stack.com before asking??😎
    M5Stack Community
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    M5 StickC Plus2 Grove port not working

    M5 Stick/StickC
    5
    11
    2.2k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • teastainT
      teastain @A0Cyber
      last edited by

      @A0Cyber What language/IDE are you using?
      I have a Plus2 and use Arduino IDE if that is helpful.

      Cheers, Terry!

      100% M5Stack addict with several drawers full of product!

      felmueF A 2 Replies Last reply Reply Quote 1
      • felmueF
        felmue @teastain
        last edited by felmue

        Hello @A0Cyber

        both GPIO32 and GPIO33 work for me in UIFlow2. Please find an example in the Project Zone called: M5StickCPlus2_GPIO32_GPIO33_ON_OFF_UiFlow2.2.0
        If you are using Arduino instead then could you share your code?

        Thanks
        Felix

        GPIO translation table M5Stack / M5Core2
        Information about various M5Stack products.
        Code examples

        A 1 Reply Last reply Reply Quote 1
        • A
          A0Cyber @teastain
          last edited by

          @teastain I am using Arduino and Arduino IDE as well. However, I wasnt able to use the grove Port A for I2C in UI Flow 2 either.

          I started with this code to do an I2C wire scan. It returns Error 5 at all addresses, No I2C devices found when I have I2C devices connected.

          #include <Arduino.h>
          #include <Wire.h>
          
            // Board Pin Definitions
          #define PIN_POWER_HOLD 4
          #define PIN_LCD_BL 27
            //Internal I2C BUS 6-Axis posture sensor (MPU6886) & RTC (BM8563)
          #define PIN_INTERNAL_SDA 21
          #define PIN_INTERNAL_SCL 22
            //Grove Connector I2C BUS (Port A)
          #define PIN_GROVE_SDA 32
          #define PIN_GROVE_SCL 33
          
          void wireScanTest() {
            Wire.begin(PIN_GROVE_SDA, PIN_GROVE_SCL, 400000);
            //Wire.begin(PIN_INTERNAL_SDA, PIN_INTERNAL_SCL, 400000);
          
            byte error, address;
            int nDevices = 0;
          
            delay(5000);
          
            Serial.println("Scanning for I2C devices ...");
            for (address = 0x01; address < 0x7f; address++) {
              Wire.beginTransmission(address);
              error = Wire.endTransmission();
              if (error == 0) {
                Serial.printf("I2C device found at address 0x%02X\n", address);
                nDevices++;
              } else if (error != 2) {
                Serial.printf("Error %d at address 0x%02X\n", error, address);
              }
            }
            if (nDevices == 0) {
              Serial.println("No I2C devices found");
            }
          }
          
          void setup() {
            pinMode(PIN_POWER_HOLD, OUTPUT);
            digitalWrite(PIN_POWER_HOLD, HIGH);
            pinMode(PIN_LCD_BL, OUTPUT);
            digitalWrite(PIN_LCD_BL, HIGH);
            Serial.begin(115200);
          
            wireScanTest();
          }
          
          void loop() {}
          

          So I made this to test the pins and i get the strange voltage on pin 32.

          #include <Arduino.h>
          #include <Wire.h>
          
            // Board Pin Definitions
          #define PIN_POWER_HOLD 4
          #define PIN_LCD_BL 27
            //Grove Connector I2C BUS (Port A)
          #define PIN_GROVE_SDA 32
          #define PIN_GROVE_SCL 33
          
          void setup() {
            pinMode(PIN_POWER_HOLD, OUTPUT);
            digitalWrite(PIN_POWER_HOLD, HIGH);
            pinMode(PIN_LCD_BL, OUTPUT);
            digitalWrite(PIN_LCD_BL, HIGH);
            pinMode(PIN_GROVE_SDA, OUTPUT);
            digitalWrite(PIN_GROVE_SDA, HIGH);
            pinMode(PIN_GROVE_SCL, OUTPUT);
            digitalWrite(PIN_GROVE_SCL, HIGH);
          
            Serial.begin(115200);
          }
          
          void loop() {
            delay(5000);
            digitalWrite(PIN_GROVE_SDA, LOW);
            digitalWrite(PIN_GROVE_SCL, LOW);
            delay(5000);
            digitalWrite(PIN_GROVE_SDA, HIGH);
            digitalWrite(PIN_GROVE_SCL, HIGH);
          }
          
          1 Reply Last reply Reply Quote 0
          • A
            A0Cyber @felmue
            last edited by

            @felmue I looked at the example . Thanks for that. I created something similar in Arduino for my testing earlier.

            felmueF 1 Reply Last reply Reply Quote 0
            • felmueF
              felmue @A0Cyber
              last edited by

              Hello @A0Cyber

              your I2C scan code works for me (internal and Grove).
              Internal I get:

              Scanning for I2C devices ...
              I2C device found at address 0x51
              I2C device found at address 0x68
              

              Grove (with ENV IV attached) I get:

              Scanning for I2C devices ...
              I2C device found at address 0x44
              I2C device found at address 0x76
              

              and your Groove GPIO test works for me as well, both GPIO32 and GPIO33 toggle between 0 and 3.3 V.

              Just to clarify; does the internal I2C scan work with your M5StickCPlus2?

              If yes, then the failing Grove I2C scan and the GPIO test showing a too low voltage on GPIO32 would indicate that GPIO32 got damaged somehow.

              But then again, you tested with two M5StickCPlus2 and they both exhibit this behavior, so I am not sure.

              Thanks
              Felix

              GPIO translation table M5Stack / M5Core2
              Information about various M5Stack products.
              Code examples

              A 1 Reply Last reply Reply Quote 0
              • A
                A0Cyber @felmue
                last edited by

                @felmue The internal I2C bus scan works for me, I get the same result as you for that one. But the grove Port A fails with the low voltage on pin 32. I can even use jumper pins to run I2C devices from the top header by using jumper cables. I tested it with 2 brand new StickC Plus2 so the chances that both of them were damaged in the same way by me is unlikely. I am also somewhat experienced with ESP32 and other microcontrollers. I am out of ideas, I guess I can try to contact M5 support.

                teastainT 1 Reply Last reply Reply Quote 0
                • teastainT
                  teastain @A0Cyber
                  last edited by

                  @A0Cyber Your code works on my Plus2!
                  Both pins 32 and 33 normal 3.3V.
                  Sorry.

                  Cheers, Terry!

                  100% M5Stack addict with several drawers full of product!

                  1 Reply Last reply Reply Quote 0
                  • kurikoK
                    kuriko
                    last edited by

                    @A0Cyber
                    Maybe this is a potential circuit design problem. Can you tell me all the hardware operations you have done? I'm gonna have a test

                    Good morning, and welcome to the Black Mesa Transit System.

                    1 Reply Last reply Reply Quote 0
                    • P
                      paulgrevink @A0Cyber
                      last edited by

                      @A0Cyber I am experiencing the same situation. I have just started experimenting with M5 gear. I got 2 x M5 Stick C Plus2. The HAT works fine, however Grove ports worked for a short time and failed on both sticks.
                      I Started doing some tests in UIFlow 2.2, version 2.3.8 with a Unit, that went well. Proceeding some tests with ESP Home on the same devices, Noticing that the Unit did not respond. Back to UIFlow, and now the Unit failed.
                      I ran the Project Zone called: M5StickCPlus2_GPIO32_GPIO33_ON_OFF_UiFlow2.2.0 and noticed that PIN32 was less than 1 Volt. So to me looks like some hardware issue, but what went wrong? Still not clear to me.

                      felmueF 1 Reply Last reply Reply Quote 0
                      • felmueF
                        felmue @paulgrevink
                        last edited by

                        Hello @paulgrevink

                        have you tried to disconnect everything from M5StickCPlus2 and fully powering it off by pressing and holding the power button?

                        Also have you tried to erase flash using M5Burner before installing UIFlow2 firmware?

                        BTW: I did a test and installed ESPHome basic firmware, then installed UIFlow2.3.8 firmware and then ran M5StickCPlus2_GPIO32_GPIO33_ON_OFF_UiFlow2.2.0 from Project Zone without issue, e.g GPIO32 and GPIO33 toggle just fine between 0 V and 3.3 V.

                        Note: While ESPHome was installed GPIO32 measured something like 0.2 V.

                        Thanks
                        Felix

                        GPIO translation table M5Stack / M5Core2
                        Information about various M5Stack products.
                        Code examples

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post