Created
October 1, 2024 08:44
-
-
Save X-Adam/b923210956b08022d2955962f7cb8216 to your computer and use it in GitHub Desktop.
MicroPython GSM Module Baudrate Fixed
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, baudrate=115200): | |
self._regulator = Pin(regulator, mode=Pin.OUT, value=False) | |
self._power = Pin(power, mode=Pin.OUT, value=False) | |
self._baudrate = baudrate | |
self._uartWizard: callable = None | |
self._uart = 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 getUART(self): | |
if not self._uart: | |
self.setUART(self._baudrate) | |
return self._uart | |
def setUART(self, baudrate: int): | |
self._baudrate = baudrate | |
self._uart = self._uartWizard(baudrate) | |
def baudrateFixed(self, baudrate: int): | |
self.restart() | |
while True: | |
if self.getUART().any(): | |
print(data := self.getUART().read()) | |
if data == b'\r\n+CPIN: SIM REMOVED\r\n': | |
print('AT Ready') | |
break | |
self.getUART().write('AT+IPREX=' + str(baudrate) + '\r\n') | |
self.getUART().flush() | |
while True: | |
if self.getUART().any(): | |
print(data := self.getUART().read()) | |
if data == b'\r\nOK\r\n': | |
print('Baudrate set') | |
break | |
self.restart() | |
self.setUART(baudrate) | |
while True: | |
if self.getUART().any(): | |
print(data := self.getUART().read()) | |
if data == b'\r\n+CPIN: SIM REMOVED\r\n': | |
print('AT Ready') | |
break | |
regulatorPin=7 | |
powerPin=8 | |
uartID = 1 | |
uartRX = 5 | |
uartTX = 6 | |
gsm = GSM(regulatorPin, powerPin, 115200) | |
gsm.setUARTWizard(lambda baudrate: UART(uartID, baudrate=baudrate, rx=uartRX, tx=uartTX)) | |
gsm.baudrateFixed(460800) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment