Example of using the mDot UDK with the X-NUCLEO-IKS01A1 shield
Dependencies: mDot_X_NUCLEO_IKS01A1 libmDot-dev-mbed5-deprecated
Hardware
Hardware List
- Multiconnect mDot with programming header (MTDOT-xxx-X1P)
- Multiconnect mDot Developer kit (MTUDK2-ST-MDOT) or SocketModem and Dragonfly Developer kit (MTUDK2-ST-CELL)
- Motion MEMS and environmental sensor expansion board for STM32 Nucleo X-NUCLEO-IKS01A1
Setup
- Install the mDot on the developer board.
- Install the IKS01A1 on the developer board.
- If using a MTUDK-ST-CELL (white board) plug in the AC power adapter
- Connect the microusb power to your development PC
- if using a MTUDK-ST-CELL there are 2 microusb ports. Use the one closest to the serial port.
Your developer board should look like the following:
Software
This example program uses LoRa utility functions from Dot-Examples and the IKS01A1 library from ST Micro.
LoRa Configuration
Senet
By default this program is configured to connect to the Senet network. To connect to Senet you will need to register your mDot's Node ID with the Senet developer portal and change the network_key array in main.cpp.
Others
To connect to a different LoRa gateway change the arrays network_id and network_key. If you are using passphrases, edit the strings network_name and network_key, uncomment the function "update_ota_config_name_phrase" and comment out the function "update_ota_config_id_key".
Diff: main.cpp
- Revision:
- 8:bfbc3dd47166
- Parent:
- 7:d2052933ebcb
- Child:
- 9:e642e8f9ea37
--- a/main.cpp Thu Dec 15 23:50:05 2016 +0000 +++ b/main.cpp Fri Dec 16 04:24:54 2016 +0000 @@ -23,6 +23,7 @@ // True for Senet, false for your Conduit. static bool public_network = true; static uint8_t ack = 0; +static uint8_t tx_datarate = mDot::DR3; // deepsleep consumes slightly less current than sleep // in sleep mode, IO state is maintained, RAM is retained, and application will resume after waking up @@ -53,7 +54,8 @@ /* Initialize mDot */ dot = mDot::getInstance(); - dot->setAdr(true); + + //dot->setAdr(true); mts::MTSLog::setLogLevel(mts::MTSLog::INFO_LEVEL); dot->setEvents(&events); @@ -73,6 +75,14 @@ logError("failed to set network join mode to AUTO_OTA"); } } + + uint32_t current_tx_datarate = dot->getTxDataRate(); + if (current_tx_datarate != tx_datarate) { + logInfo("changing TX datarate from %u to %u", current_tx_datarate, tx_datarate); + if (dot->setTxDataRate(tx_datarate) != mDot::MDOT_OK) { + logError("failed to set TX datarate to %u", tx_datarate); + } + } // in OTA and AUTO_OTA join modes, the credentials can be passed to the library as a name and passphrase or an ID and KEY // only one method or the other should be used! // network ID = crc64(network name)