Sequans Monarch VZM20Q module
Introduction
The Sequans Monarch VZM20Q is another LTE CatM1 chip. It's available in "Skywire" (XBee-like) format from Nimbelink.
Monarchs and Mayflys
To my knowledge, there are not any Sequans modules available that can directly connect to a Mayfly. Although the Nimbelink board linked above would fit the physical XBee footprint on the Mayfly, it will not work without some additional interface or other modifications. The power supply on the Mayfly is insufficient, the voltage reference is not implemented on the Mayfly, and the Nimbelink board requires 3 extra ground pins that aren't available on the Mayfly.
Manufacturer Documentation
The module datasheet and AT commands are available here: https:/
Modem Constructor
Construct a new Sequans Monarch object. The constuctor initializes all of the provided member variables, constructs a loggerModem parent class with the appropriate timing for the module, calls the constructor for a TinyGSM modem on the provided modemStream, and creates a TinyGSM Client linked to the modem. Should be set to a negative number if the modem should be continuously powered or the power cannot be controlled by the MCU. Should be set to a negative number if the modem status pin cannot be read. This could be the pin called either the Should be set to a negative number if the modem reset pin is not connected to the MCU. This should be the pin called Should be set to a negative number if there is no pin usable for deep sleep modes or it is not accessible to the MCU. This should be the pin called
SequansMonarch(Stream* modemStream,
int8_t powerPin,
int8_t statusPin,
int8_t modemResetPin,
int8_t modemSleepRqPin,
const char* apn)
Parameters
modemStream
The Arduino stream instance for serial communication.
powerPin
The digital pin number of the mcu pin controlling power to the modem (active
HIGH
).
statusPin
The digital pin number of the mcu pin connected to the modem status output pin.
modemResetPin
The digital pin number of the pin on the mcu attached the the hard or panic reset pin of the modem.
modemSleepRqPin
The digital pin number of a pin on the mcu used to request the modem enter its lowest possible power state.
apn
The Access Point Name (APN) for the SIM card.
GPIO3/STATUS_LED
or POWER_MON
in the Sequans Monarch integration guide.RESETN
in the Sequans Monarch integration guide.RTS
or RTS0
in the Sequans Monarch integration guide.
Example Code
The monarch is used in the menu a la carte example.
// For the Nimbelink LTE-M Verizon/Sequans or other boards based on the Sequans // Monarch series #include <modems/SequansMonarch.h> // NOTE: Extra hardware and software serial ports are created in the "Settings // for Additional Serial Ports" section const int32_t modemBaud = 921600; // Default baud rate of SVZM20 is 921600 // NOTE: This baud rate is much too fast for many Arduinos! The module should // be programmed to a slower baud rate or set to auto-baud using the AT+IPR // command. // Modem Pins - Describe the physical pin connection of your modem to your board // NOTE: Use -1 for pins that do not apply // Nimbelink Skywire (NOT directly connectable to a Mayfly!) const int8_t modemVccPin = 18; // MCU pin controlling modem power const int8_t modemStatusPin = 19; // MCU pin used to read modem status const int8_t modemResetPin = 20; // MCU pin connected to modem reset pin const int8_t modemSleepRqPin = 23; // MCU pin for modem sleep/wake request const int8_t modemLEDPin = redLED; // MCU pin connected an LED to show modem // status // Network connection information const char* apn = "xxxxx"; // APN for GPRS connection // Create the modem object SequansMonarch modemSVZM(&modemSerial, modemVccPin, modemStatusPin, modemResetPin, modemSleepRqPin, apn); // Create an extra reference to the modem by a generic name SequansMonarch modem = modemSVZM;
Classes
- class SequansMonarch
- The loggerModem subclass for Nimbelink or other modules based on the Sequans Monarch VZM20Q.
Defines
- #define TINY_GSM_MODEM_SEQUANS_MONARCH
- The modem type for the underlying TinyGSM library.
- #define VZM20Q_STATUS_LEVEL = HIGH
- The loggerModem::
_statusLevel. Depending on firmware, you MIGHT be able to monitor the status on either
GPIO2/POWER_MON
orGPIO3/STATUS_LED
The module integration guide says:
GPIO3: Optional STATUS_LED. Note that the LED function is currently not available.
GPIO2: GPIO or Power monitor (Output) in option. POWER_MON is high right after POWER_ON, then remains high until shutdown procedure is completed. Module can be safely electrically power off as soon as POWER_MON goes low. Note that this feature is currently not available.
Very useful, right?
The Nimbelink manual for their breakout lists a status pin, but doesn't disclose which of these it is and the time for reporting isn't mentioned either.
- #define VZM20Q_STATUS_TIME_MS = 5000
- The loggerModem::
_statusTime_ms. Depending on firmware, you MIGHT be able to monitor the status on either
GPIO2/POWER_MON
orGPIO3/STATUS_LED
The module integration guide says:
GPIO3: Optional STATUS_LED. Note that the LED function is currently not available.
GPIO2: GPIO or Power monitor (Output) in option. POWER_MON is high right after POWER_ON, then remains high until shutdown procedure is completed. Module can be safely electrically power off as soon as POWER_MON goes low. Note that this feature is currently not available.
Very useful, right?
The Nimbelink manual for their breakout lists a status pin, but doesn't disclose which of these it is and the time for reporting isn't mentioned either.
- #define VZM20Q_RESET_LEVEL = LOW
- The loggerModem::
_resetLevel. Reset for VZM20Q with a minimum 1µs
LOW
pulse onRESETN
. The maximum time is not documented.- #define VZM20Q_RESET_PULSE_MS = 1
- The loggerModem::
_resetPulse_ms. Reset for VZM20Q with a minimum 1µs
LOW
pulse onRESETN
. The maximum time is not documented.- #define VZM20Q_WAKE_DELAY_MS = 0
- The loggerModem::
_wakeDelayTime_ms. Module automatically boots when power is applied, no further command is needed.
To enter PSM (power save mode), you need to do the following :
- Request timers from the network
- Register on the network
- Pull the
RTS
pin logic - levelHIGH
- device will enter PSM a minimum of 100s later
To exit PSM, you need to do the following :
- Pull the
RTS
pin logic - levelLOW
- #define VZM20Q_WAKE_LEVEL = LOW
- The loggerModem::
_wakeLevel. The Sequans Monarch/VZM20Q wakes at
LOW
level.- #define VZM20Q_WAKE_PULSE_MS = 0
- The loggerModem::
_wakePulse_ms. The Sequans Monarch/VZM20Q wakes at
LOW
level.- #define VZM20Q_ATRESPONSE_TIME_MS = 15000L
- The loggerModem::
_max_atresponse_time_ms. Time to UART availability not documented for the VZM20Q; allowing a long 15s buffer.
- #define VZM20Q_DISCONNECT_TIME_MS = 15000L
- The loggerModem::
_disconnetTime_ms. Shutdown time for VZM20Q is undocumented. We allow 15sec in case it is not monitored.