It’s possible to manually pull the pins up using resistors (4.7-10K) connecting the pin and 3v3, but at a glance Sandy doesn’t seem to have used those.
The board itself (the keypad) has I2C pullups, so it’s weird that that error is coming up. Not sure what could be going on. Is it definitely connected properly and is the soldering good?
I had no problem running the MicroPython demo code for the RGB Keypad so I re-flashed the Pico with the Pimoroni MicroPython firmware to see if that code was still running as should but now I can’t get the lights to light up anymore.
While running MP, when I print the button number on press I get the correct number, so I guess the I2C connection is still working. I don’t know anything about the difference between MP en CP but I would think that they connect in the same way to the keypad?
And now that my RGB lights aren’t working anymore I really hope I didn’t destroy them while trying different things.
After some test with continuity test of my tester I found 2 problems: in my case the 4.7k ohm resistor soldered in the board has some soldering problem, so after re-soldered on the board the continuity test works pretty well. The second problem is that the RUN pin makes shor-circuit to the ground. Playing around with pins I’ve found a solution to make a middle socket between the Raspberry PICO and the keyboard socket itself. It seems to work for now, but probably we are bad lucky and we met some production problem? We remain in waiting for some news
Well I believe so. the micro python example runs perfectly. I have the issue only with the CircuitPython one.
I soldered it today and all looks fine but if you know a way to check them to be 100% sure I’ll do it.
EDIT: I tried with another pico and have the same error :(
Yeah, I’m getting the same now too. You can disable that warning but it requires rebuilding CircuitPython, which I’m currently trying to do… I’ll get back to you when I’ve got it sorted, hopefully…
We had a discussion about using the internal pullups for I2C in CircuitPython in this proposed CircuitPython PR: RP2040: Add support for using internal i2c pullups. The internal pullups are 50k-80k, which are really too high to be adequate I2C pullups. MicroPython does enable the internal pullups for I2C as a backstop, and CircuitPython does not. All Adafruit I2C breakouts include pullups.
I just wanted to chime in and say I’m also facing this issue with the RGB Keypad. I’ve tried it on two different Picos, one with presoldered headers and one that I soldered myself. Both throw this error.
@danhalbert is this something that could be fixed by forking the repo, merging the changes in PR #4488 and rebuilding the UF2 file from that?
TL;DR: I added my own pullups and it all works, but it’s messy.
I’m getting the same error about the pullup, and searching around on Github for the error message, I found the PR where the wording was changed.
The code that checks the pullups looks like it compares the value of the SDA and SCL pullups and fails if they aren’t the same, so I guess that means with the keypad they aren’t the same.
Now, I’m only just about good enough at electronics to be dangerous, but I could only find one obvious resistor on the board, so my uneducated guess is that the board might only be pulling up the SDA line and there must be some sort of weak pullup in the Pico already for SCL but for some reason it’s not enough for CircuitPython to register that both lines are pulled up.
I stuck the Pico on a breadboard and jumpered across to the keypad on GP4/GP5 (I2C for the buttons) and GP17/GP18/GP19 (SPI for the pixels), plus a few power (VBUS along to VREF) and a couple of ground pins. I then put a pair of 3k (no maths involved - that’s all I had laying around) pullup resistors of my own on the breadboard, attached to GP4/GP5 and +3V3.
The wildestpixel demo code works just fine now for me.
So I guess the next question is what we do about it because breaking the Pico out on to a breadboard to put extra pullups in kinda defeats the neatness of the RGB Keypad. If I’m right, is this a hardware problem, or do we need the Pico’s internal pullups handled in circuitpython?
I just added 2 resistors on the RGB keypad itself, since there are free pads. I added the resistors between normal digital pins and SCL/SDA and enabled the pins in code. This works fine and takes about 3 seconds to solder.
I also emailed Pimoroni about this but got no real answer yet, apart from the fact that the RGB keypad should have pullup resistors!
On my RGB keypad, the resistance is infinite if I measure it without a Pico plugged in.
This is something we’re looking into, please could anyone who hasn’t already send a ticket to support@ with their order number so we can arrange a replacement and if you’re in the UK a return of the faulty one as well?
Same issue with “one” of mine. One works fine in both Circuit Python and Micro Python. The other one works fine in Micro Python, runs the demo just fine, but gives the i2c pullup error in Circuit Python.