Explorer 2350 Notes

Hi all, first time posting here.

I wanted to offer some feedback on the Explorer RP2350. I bought the kit version from Microcenter and have been playing with it.

First off, hats off to the PCB designer. The PCB is gorgeous and sturdy. The screen is a good size, bright and crisp – and connected in parallel so high refresh rates should be possible (more testing to be done here). I appreciate the variety of I/O options.

I’m an embedded systems engineer and I’ve shipped products with firmware written entirely in C/C++; I have experience with Python but I’ve never used Micropython and wasn’t expecting to use it on this board. But it came factory installed with the Micropython core + board demos and so I ended up playing around with it. I was surprised how much I liked it. So, good job on the factory firmware and Micropython support as well.

I’m still getting used to the inline 100 ohm resistors on the GPIO header. I can see the argument for it in a product made for beginners – preventing them from accidentally shorting or otherwise pulling too much current from the pins. I do wish it had been called out somewhere more visible than the schematic – the only reason I noticed is because I found it while searching this forum for previous discussions of the board.

My main criticism: the support for C/C++ is basically non-existent. The product page calls out that it can be programmed in C/C++, and while this is technically true, Pimoroni has not provided any resources to figure out how to do that. Even after digging through the explorer github repo, it wasn’t clear to me how to build the factory firmware, or anything else, for this board. There is no C/C++ board support package or examples for this board.

Thankfully, others before me have faced this issue and somewhat solved it. There is a 3rd party Arduino IDE package if that’s your environment of choice. You can program it with the pico SDK set to vanilla RP2350 for barebones firmware, or you can bring in the pimoroni-pico SDK to unlock their ST7789 driver and graphics libraries. It was definitely not a straightforward process getting it up and running, probably beyond what a novice could figure out even with the instructions in the forum thread above, and requires some CMake finagling and git knowledge to set up properly.

Maybe the 3rd party Arduino IDE package is more straightforward – I haven’t tried it yet – but I’m a bit disappointed by the lack of basic C++ support here. Even the older Pico Explorer Base (RP2040) has a C++ example project with somewhat fleshed out explanations of the code (TODO’s notwithstanding), as well as a pin mapping header.

Overall I’m loving this board and can see myself using it for both quick Micropython idea sketching and more refined C/C++ test code, with live updating info on the screen. I’m elated that I got the C++ side of it working, and the lack of a ready-to-go C++ package is definitely not the end of the world for me personally. It seems like they really did the work going above and beyond with the hardware, a thoughtful kit, and well-designed Micropython library but stopped short of supporting easy C/C++ development or fleshing out all the features of the kit in guides.

Speaking of which, I would also like to lobby for more guides, even if they are in Micropython. The one guide online is fun and useful, and I’d love to see more, using the rest of the features on board and getting into the components included in the kit. For now I will “explore” on my own :)

1 Like

Jumping in here: that is not true. It is a RP2350 board (with attached peripherals) and it can be programmed like any other RP2350 board with the native SDK. You can follow the documentation and the tutorials of the Raspberry Pi Foundation for that. Or any of the other docs you find elsewhere for RP2xxx native programming. So I don’t think this is really something that Pimoroni has to repeat.

What they did not document well: the debug pins are only available as pads on the back. So you need to do some soldering. Without these pins, development is still possible, but tedious.

What is missing (kind of): ready to use libraries for the peripherals. Here you can copy and paste the low-level driver libraries of the MicroPython fork of Pimoroni (instead of providing MicroPython libraries, they bake everything into their C firmware).

I’m not expecting them to repeat “how to program an RP2350”. What I thought I clearly stated was that, if you know what you’re doing, you can program it (without board peripheral drivers or other board support libraries) in the RPi Pico SDK, and if you know a few more things you can rope in the pimoroni-pico libraries for the peripheral drivers – but C++ doesn’t get the same level of “ready-to-go” board level support that Micropython gets. In fact, it gets none. You even acknowledge this, so I’m not sure exactly what you disagree with in my feedback.

In other words: If you want to use it for Micropython, you can follow their guide or example code made specifically for this board and get a hello world on the screen in no time & without much prior knowledge. If you want to use it for C++, there is no guide, there is no example code, and it will require some time & background knowledge of embedded dev to get to the same result.

I agree on this. They don’t even put debug pins on the board. So clearly something targeted at MicroPython tinkerers.

That’s where I disagree.