Connect a Gesture sensor paj7620u2 to an M5Paper



  • Good morning

    I'm trying to connect the gesture sensor unit (https://shop.m5stack.com/collections/m5-sensor/products/unit-gesture-recognition-sensor-paj7620u2) to an M5 Paper.

    To do that I'm just using part of the code of the example but adapting it to the M5paper (just using the M5paper libraries) https://github.com/m5stack/M5Stack/blob/master/examples/Unit/GESTURE_PAJ7620U2/GESTURE_PAJ7620U2.ino

    Unfortunately it fails in the initialization of the sensor (begin function) More info https://github.com/m5stack/M5Stack/blob/master/examples/Unit/GESTURE_PAJ7620U2/GESTURE_PAJ7620U2.ino

    The example says to connect the sensor to port A (G21/G22) on an M5Core but the M5paper uses different pins, I've tried connecting the sensor in Port A, B and C with no success

    Any idea about how to solve this issue?

    the example works without any problem on an M5Stack fire!

    kind regards



  • Hello @jcarolinares

    have a look at this thread explaining the internal I2C bus (using Wire) and external I2C bus (using Wire1) used in M5Paper. You'll need to modify the gesture library to use Wire1 (instead of Wire) with the GPIOs used on port A.

    Thanks
    Felix



  • Hello @jcarolinares

    in case you are still looking for a solution. I've received my gesture unit and did a quick test. The library allows to pass the Wire1 instance so it's quite straight forward.

    #include <M5EPD.h>
    #include <DFRobot_PAJ7620U2.h>
    
    M5EPD_Canvas canvas(&M5.EPD);
    DFRobot_PAJ7620U2 paj(&Wire1);
    
    void setup()
    {
      M5.begin(true, false, true, true, false);
    
      Wire1.begin(25, 32, 400000U);
      while(paj.begin() != 0)
      {
        Serial.println("check PAJ7620U2");
        delay(500);
      }
      Serial.println("PAJ7620U2 success");
      paj.setGestureHighRate(true);
    
      M5.EPD.SetRotation(90);
      M5.EPD.Clear(true);
      M5.RTC.begin();
      canvas.createCanvas(540, 960);
      canvas.setTextSize(3);
      canvas.drawString("Hello World", 10, 10);
      canvas.pushCanvas(0, 0, UPDATE_MODE_DU4);
    }
    
    void loop()
    {
      DFRobot_PAJ7620U2::eGesture_t gesture = paj.getGesture();
      if(gesture != paj.eGestureNone)
      {
        canvas.fillCanvas(0);
        canvas.drawString(paj.gestureDescription(gesture), 10, 10);
        canvas.pushCanvas(0, 0, UPDATE_MODE_DU4);
      }
    }
    

    Thanks
    Felix