BG96 Cat.M1 basic sample for WIZnet IoT Shield based on Mbed-OS Cellular APIs (SK telecom network in Korea)

Overview

This code could be access via Cat.M1(BG96 module) of SK telecom network in Korea. Need a WIZnet IoT Shield BG96 board and development board. The code forked Daniel_Lee's mbed-os-example-cellular-BG96 repository and added some features.

/media/uploads/hkjung/wiznetiotshield_bg96_nucleo-l476rg_stacking.png /media/uploads/hkjung/wiznetiotshield_bg96_nucleo-l476rg_separate.png

Tested with

  • NUCLEO_L476RG
  • DISCO_L475VG_IOT01A
  • K64F

Example functionality

This example showcases the following device functionality:

1. Import the application into your desktop:

mbed import https://os.mbed.com/users/hkjung/code/mbed-os-example-cellular-BG96/
 
cd mbed-os-example-cellular-BG96

2. Compile and program:

mbed compile -t <toolchain> -m <TARGET_BOARD>

(supported toolchains : GCC_ARM / ARM / IAR)

3. Download binary to a target board

If need more information such as how to test, please look at https://os.mbed.com/teams/mbed-os-examples/code/mbed-os-example-cellular/.

Revision:
38:8e4d8ba30f9f
Parent:
36:6294a71c9e9e
--- a/main.cpp	Thu Apr 25 08:19:34 2019 +0000
+++ b/main.cpp	Mon Apr 29 00:37:57 2019 +0000
@@ -19,6 +19,15 @@
 #include "UDPSocket.h"
 #include "CellularLog.h"
 
+/* Pin configuraiton */
+// Cat.M1
+#define MBED_CONF_IOTSHIELD_CATM1_RESET             D7
+#define MBED_CONF_IOTSHIELD_CATM1_PWRKEY            D9
+// On-board sensors
+#define MBED_CONF_IOTSHIELD_SENSOR_CDS              A0
+#define MBED_CONF_IOTSHIELD_SENSOR_TEMP             A1
+
+
 #define UDP 0
 #define TCP 1
 
@@ -35,6 +44,24 @@
 
 static rtos::Mutex trace_mutex;
 
+void iotshield_modem_init(void)
+{
+    DigitalOut _RESET_IOTSHIELD(MBED_CONF_IOTSHIELD_CATM1_RESET);
+    DigitalOut _PWRKEY_IOTSHIELD(MBED_CONF_IOTSHIELD_CATM1_PWRKEY);
+
+    _RESET_IOTSHIELD = 1;
+    _PWRKEY_IOTSHIELD = 1;
+    wait_ms(300);
+
+    _RESET_IOTSHIELD = 0;
+    _PWRKEY_IOTSHIELD = 0;
+    wait_ms(400);
+
+    _RESET_IOTSHIELD = 1;
+    wait_ms(1000);
+}
+
+
 #if MBED_CONF_MBED_TRACE_ENABLE
 static void trace_wait()
 {
@@ -219,6 +246,9 @@
     dot_thread.start(dot_event);
 #endif // #if MBED_CONF_MBED_TRACE_ENABLE
 
+    // Cat.M1 module init: Hardware reset and power on
+    iotshield_modem_init();
+
     // sim pin, apn, credentials and possible plmn are taken atuomtically from json when using get_default_instance()
     iface = NetworkInterface::get_default_instance();
     MBED_ASSERT(iface);