Clipper LTE 4G Breakout

Hi, the 4G module appears to have the wrong price on it:

It should be >£60.

Also, how do I connect to this? Is it serial port? There is no clear explanation on the Pimoroni page.

Thanks.

They are talking about controlling via AT, and that is serial. The SP/CE exposes UART, so that is the way to go.

1 Like

Yeah I was very surprised by that, makes you wonder why everyone else is way over that. It’s very much in “fun tinkering if I had the time for it” territory.

Interesting too that Pimoroni are managing the topups.

1 Like

I googled this SP/CE thing and found no links.

Seems like some ultra-proprietary Pimoroni thing which makes me sad.

It’s more just an arrangement of ordinary GPIO/SPI pins on a connector. If you go to the Plasma 2350 board, there’s a pinout diagram that shows you the order:

5V, 3v3, CS, SCK, TX, RX, BL, GND

I think BL is just a PWM pin for screen backlights. The physical socket looks like JST-SH.

1 Like

Yeah, I had to ask Pimoroni what SP/CE stands for (you can find it somewhere in this forum, I already forgot).

Basically, it is JST-SH (8 pin), so at least this is non proprietary. Sourcing cables with a plug on one side is easy, so it is not that bad. It does expose some GPIOs, but I think it is more or less useless except for Pimoroni stuff. It doesn’t even have enough pins to drive 4-wire SPI displays, and that would really be a good use-case for an external connector.

Biggest drawback: it increases the height of the boards. Look at the Pico Plus 2: you cannot solder it to a support PCB, even when you add headers (I wonder why they produce this board with castellated holes). The headers were enough for the Pico Plus, but now you really need sockets, which increases your build considerably.

1 Like

Has anyone made this work yet? I have the Clipper 4G connected via SP/CE to a Plasma 2350. I’ve loaded the uf2 from here (https://pimoroni.com/mp-temp/pico_plus2_rp2350_wireless-55684ff3bef0191d4a92c22c1a5837d4dbd4e685-pimoroni-micropython.uf2.zip) and tried the example python code. I just get …

  • AT TIMEOUT
    cellular module timed out for command AT
    • AT TIMEOUT
      cellular module timed out for command AT
    • AT TIMEOUT
      cellular module timed out for command AT

I get the same message if the Clipper is not plugged in, incidentally!

1 Like

I think it has to do with the pins used for the SP/CE: they are different for the Plasma2350 compared to the Pico2+. Can you set the UART-pins for the UART-connection to the clipper or is this hard-coded in the library?

Edit: see pimoroni-pico-rp2350/micropython/modules_py/lte.py at feature/can-haz-ppp-plz · pimoroni/pimoroni-pico-rp2350 · GitHub You can pass in your own UART. You need to initialize it the same as for the default.

Argh. I assumed that SP/CE was just SP/CE (i.e. standard!). The UART is hard coded in the library as far as I can tell. But I might be able to twiddle it somewhere. It (the Plasma2350) was the only mcu board I could see with the SP/CE interface.

See my edit above, I added the link.

SP/CE is no standard, it is just a connector that exposes a number of pins.

I’m out of my depth now :-) I’ll see what I can make of that link. Thanks!

The LTE class accepts an uart argument:

myuart = UART(...)
lte = LTE(uart=myuart)

The params to UART are (here a copy of the defaults, you have to change the DEFAULT_PIN_xx-stuff to the pins of the Plasma2350):

myuart = UART(
            DEFAULT_UART_ID,
            tx=Pin(DEFAULT_PIN_TX, Pin.OUT),
            rx=Pin(DEFAULT_PIN_RX, Pin.OUT))

Brilliant! Thanks a million. I’ll give it a go.

My hope was that since the Clipper and Plasma 2350 are together on the shop page, they would just work with the example code!

That would be too simple :-)

I think they just can’t imagine that a Plasma is used for something else then driving LEDs. And to be honest, it is a border-case after all.

All the LTE stuff is in it’s very beginning. For example, there is no available AT command manual. When I click the link on the shop-page, they ask me for a login.

@hel : will you make an AT command manual available for the Clipper? These manuals usually have a few hundred pages. Nobody needs all of that. But once you leave very basic use-cases (and you can expect that your customers will do that sooner or later) you need the manual… and a lot of time to find the one page out of hundreds that solves your use-case ;-)

Software is catching up with hardware as usual, so Plasma 2350 setup are not smooth yet. We’re also a few pull requests ahead of the PPP support in MicroPython, which makes things extra complex for the moment :-)

We’ll get our ducks in a row over the next few days and have better examples and things for everything SP/CE.

The module does have plain 2.54mm pins if you wanna go old skool or attach it to an RPi ahead of the Mini HAT arriving.

1 Like

Can I control the board using C++?

Is it just a serial interface with AT commands on top?

If you check out the MicroPython module code you can see the PPP/AT commands that are happening under the hood: pimoroni-pico-rp2350/micropython/modules_py/lte.py at feature/can-haz-ppp-plz · pimoroni/pimoroni-pico-rp2350 · GitHub

1 Like

Thanks. I’ll hold off a a few days I reckon. Or if I am feeling strong/brave have a crack!

Ok, I am stuck now … I’ve got the Clipper connected to the Plasma 2350 via the SP/CE cable, I’ve traced out what is going where in terms of connections on the SP/CE connectors each end of the cable.

Clipper → Plasmon 2350
3.7-6V → 5V
VDDIO → 3v3
TX → GP9
Netlight → GP10
RESET → GP11
RX → GP8
PWRKEY → GP7
"- " → GND

In terms of the pin definitions in the script fragment below, what the that actual pin numbers I need?

DEFAULT_PIN_RST = 35
DEFAULT_PIN_NETLIGHT = 34
DEFAULT_PIN_RX = 33
DEFAULT_PIN_TX = 32
DEFAULT_UART_ID = 0

Sorry if this is an idiotic question!

@patmolloy Here’s the fairly terrible snippet I’ve used to get online with the Plasma 2350 for now:

# Setting this to True will attempt to resume an existing connection
RESUME = False

PIN_TX = 8
PIN_RST = 11
PIN_NETLIGHT = 10
PIN_RX = 9
UART_ID = 1

plasmauart = UART(UART_ID, tx=Pin(PIN_TX, Pin.OUT), rx=Pin(PIN_RX, Pin.OUT))
plasmareset = Pin(PIN_RST, Pin.OUT)
plasmanetlightpin = Pin(PIN_NETLIGHT, Pin.OUT)

# Fix the eye-searing brightness of the onboard LED with PWM
class Netlight:
    def __init__(self):
        self.pin = PWM(Pin(PIN_NETLIGHT, Pin.OUT), freq=1000)

    def value(self, value):
        self.pin.duty_u16(value * 2000)

con = lte.LTE(MOBILE_APN, uart=plasmauart, reset_pin=plasmareset, netlight_pin=plasmanetlightpin, netlight_led=Netlight(), skip_reset=RESUME)
con.start_ppp(connect=not RESUME)here