Created
October 1, 2024 08:43
-
-
Save X-Adam/21de6adf0803ee6f696eefbe66016b57 to your computer and use it in GitHub Desktop.
MicroPython GSM Module Baudrate Finder
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from machine import UART, Pin | |
import time | |
class GSM: | |
def __init__(self, regulator, power): | |
self._regulator = Pin(regulator, mode=Pin.OUT, value=False) | |
self._power = Pin(power, mode=Pin.OUT, value=False) | |
self._uartWizard: callable = None | |
def restart(self): | |
self._regulator.off() | |
self._power.off() | |
time.sleep_ms(100) | |
self._regulator.on() | |
self._power.on() | |
time.sleep_ms(100) | |
self._power.off() | |
time.sleep_ms(50) | |
self._power.on() | |
def setUARTWizard(self, callback: callable): | |
self._uartWizard = callback | |
def setUART(self, baudrate: int): | |
return self._uartWizard(baudrate) | |
def isMeaningful(data): | |
return data == b'\r\n*ATREADY: 1\r\n' | |
def baudrateFind(self, baudrateRange: list[int] | tuple[int] = None): | |
if baudrateRange is None: | |
baudrateRange = [300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, | |
1842000, 3686400] | |
for baudrate in baudrateRange: | |
self.restart() | |
uart = self.setUART(baudrate) | |
while not uart.any(): | |
pass | |
data = uart.read() | |
print(data, baudrate) | |
if data and self.isMeaningful(data): | |
print(f"Meaningful data received with baudrate: {baudrate}") | |
break | |
regulatorPin=7 | |
powerPin=8 | |
uartID = 1 | |
uartRX = 5 | |
uartTX = 6 | |
gsm = GSM(regulatorPin, powerPin) | |
gsm.baudrateFind() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment