4G 03: Get network info
This example shows how to switch on the 4G module and get the network type and the operator name.
Required Materials
1 x Waspmote 1 x Battery 1 x 4G module 1 x 4G antenna 1 x SIM card
Notes
- The battery has to be connected. - This example can be executed in Waspmote v15
Code
/*
--- 4G_03 - Getting network information ---
Explanation: This example shows how to switch on the 4G module
and get the network type and the operator name.
Copyright (C) 2017 Libelium Comunicaciones Distribuidas S.L.
http://www.libelium.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
Version: 3.1
Design: David Gascón
Implementation: Alejandro Gállego
*/
#include <Wasp4G.h>
// APN settings
///////////////////////////////////////
char apn[] = "movistar.es";
char login[] = "movistar";
char password[] = "movistar";
///////////////////////////////////////
uint8_t connection_status;
char operator_name[20];
uint8_t error;
void setup()
{
USB.ON();
USB.println(F("Start program\n"));
//////////////////////////////////////////////////
// 1. sets operator parameters
//////////////////////////////////////////////////
_4G.set_APN(apn, login, password);
//////////////////////////////////////////////////
// 2. Show APN settings via USB port
//////////////////////////////////////////////////
_4G.show_APN();
}
void loop()
{
//////////////////////////////////////////////////
// 1. Switch ON the 4G module
//////////////////////////////////////////////////
error = _4G.ON();
if (error == 0)
{
USB.println(F("1. 4G module ready"));
////////////////////////////////////////////////
// 1.1. Check connection to network and continue
////////////////////////////////////////////////
connection_status = _4G.checkDataConnection(30);
if (connection_status == 0)
{
USB.println(F("1.1. Module connected to network"));
// delay for network parameters stabilization
delay(5000);
//////////////////////////////////////////////
// 1.2. Get RSSI
//////////////////////////////////////////////
error = _4G.getRSSI();
if (error == 0)
{
USB.print(F("1.2. RSSI: "));
USB.print(_4G._rssi, DEC);
USB.println(F(" dBm"));
}
else
{
USB.println(F("1.2. Error calling 'getRSSI' function"));
}
//////////////////////////////////////////////
// 1.3. Get Network Type
//////////////////////////////////////////////
error = _4G.getNetworkType();
if (error == 0)
{
USB.print(F("1.3. Network type: "));
switch (_4G._networkType)
{
case Wasp4G::NETWORK_GPRS:
USB.println(F("GPRS"));
break;
case Wasp4G::NETWORK_EGPRS:
USB.println(F("EGPRS"));
break;
case Wasp4G::NETWORK_WCDMA:
USB.println(F("WCDMA"));
break;
case Wasp4G::NETWORK_HSDPA:
USB.println(F("HSDPA"));
break;
case Wasp4G::NETWORK_LTE:
USB.println(F("LTE"));
break;
case Wasp4G::NETWORK_UNKNOWN:
USB.println(F("Unknown or not registered"));
break;
}
}
else
{
USB.println(F("1.3. Error calling 'getNetworkType' function"));
}
//////////////////////////////////////////////
// 1.4. Get Operator name
//////////////////////////////////////////////
memset(operator_name, '\0', sizeof(operator_name));
error = _4G.getOperator(operator_name);
if (error == 0)
{
USB.print(F("1.4. Operator: "));
USB.println(operator_name);
}
else
{
USB.println(F("1.4. Error calling 'getOperator' function"));
}
}
}
else
{
// Problem with the communication with the 4G module
USB.println(F("4G module not started"));
USB.print(F("Error code: "));
USB.println(error, DEC);
}
//////////////////////////////////////////////////
// 2. Switch OFF the 4G module
//////////////////////////////////////////////////
_4G.OFF();
USB.println(F("2. Switch OFF 4G module"));
//////////////////////////////////////////////////
// 3. Sleep
//////////////////////////////////////////////////
USB.println(F("3. Enter deep sleep..."));
PWR.deepSleep("00:00:00:10", RTC_OFFSET, RTC_ALM1_MODE1, ALL_OFF);
USB.ON();
USB.println(F("4. Wake up!!\n\n"));
}
Output
H#
Start program
*****************************
APN: m2m.tele2.com
LOGIN:
PASSWORD:
*****************************
1. 4G module ready
1.1. Module connected to network
1.2. RSSI: -113 dBm
1.3. Network type: GPRS
1.4. Operator: Movistar
2. Switch OFF 4G module
3. Enter deep sleep...
4. Wake up!
Last updated