Challenger RP2040 LTE CircuitPython startup example
Here’s a short example on how to start the modem up using CircuitPython. This example will start the modem and wait for the AT command to return a valid response.
import board
import busio
import digitalio
import time
print ("Test program start !")
# LED
led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT
# SARA LDO enable control signal
sara_pwr = digitalio.DigitalInOut(board.SARA_PWR)
sara_pwr.direction = digitalio.Direction.OUTPUT
# Make sure the modem is fully restarted
sara_pwr.value = 0
time.sleep(1)
sara_pwr.value = 1
# Power on button
sara_btn = digitalio.DigitalInOut(board.SARA_BTN)
sara_btn.direction = digitalio.Direction.INPUT
sara_btn.pull = digitalio.Pull.UP
# Reset pin
sara_rst = digitalio.DigitalInOut(board.SARA_RST)
sara_rst.direction = digitalio.Direction.INPUT
sara_rst.pull = digitalio.Pull.UP
# Perform a SARA power on sequence
print ("Powering the SARA modem on.")
sara_btn.direction = digitalio.Direction.OUTPUT
sara_btn.value = 0
time.sleep(0.15)
sara_btn.direction = digitalio.Direction.INPUT
sara_btn.pull = digitalio.Pull.UP
# A short delay is required here to allow the modem to startup
time.sleep(1)
print ("Reset done, waiting for modem to start.")
uart = busio.UART(tx=board.SARA_TX, rx=board.SARA_RX, rts=board.SARA_RTS, cts=board.SARA_CTS, baudrate=115200, timeout=0.25)
print ("Starting test sequence")
to_count = 20
while to_count:
uart.write(bytes("AT\r\n", 'utf-8'))
result = uart.readline();
print (".", end="")
if type(result) == bytes:
if result.decode('utf-8').startswith("AT"):
result = uart.readline();
if result.decode('utf-8').startswith("OK"):
break
result = uart.readline()
to_count -= 1
if not to_count:
print ("\nThe modem did not start correctly!")
else:
print ("\nModem started !")