Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: X_NUCLEO_IKS01A2
Revision 51:925c07d0d7cf, committed 2019-06-03
- Comitter:
- spadala
- Date:
- Mon Jun 03 10:26:44 2019 +0000
- Parent:
- 50:6e615eea1e6f
- Commit message:
- final
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/OLD_mbed_app.json Mon Jun 03 10:26:44 2019 +0000
@@ -0,0 +1,241 @@
+{
+ "config": {
+ "lora-radio": {
+ "help": "Which radio to use (options: SX1272,SX1276)",
+ "value": "SX1276"
+ },
+ "main_stack_size": { "value": 4096 },
+
+ "lora-spi-mosi": { "value": "NC" },
+ "lora-spi-miso": { "value": "NC" },
+ "lora-spi-sclk": { "value": "NC" },
+ "lora-cs": { "value": "NC" },
+ "lora-reset": { "value": "NC" },
+ "lora-dio0": { "value": "NC" },
+ "lora-dio1": { "value": "NC" },
+ "lora-dio2": { "value": "NC" },
+ "lora-dio3": { "value": "NC" },
+ "lora-dio4": { "value": "NC" },
+ "lora-dio5": { "value": "NC" },
+ "lora-rf-switch-ctl1": { "value": "NC" },
+ "lora-rf-switch-ctl2": { "value": "NC" },
+ "lora-txctl": { "value": "NC" },
+ "lora-rxctl": { "value": "NC" },
+ "lora-ant-switch": { "value": "NC" },
+ "lora-pwr-amp-ctl": { "value": "NC" },
+ "lora-tcxo": { "value": "NC" }
+ },
+ "target_overrides": {
+ "*": {
+ "platform.stdio-convert-newlines": false,
+ "platform.stdio-baud-rate": 115200,
+ "platform.default-serial-baud-rate": 115200,
+ "lora.over-the-air-activation": false,
+ "lora.duty-cycle-on": false,
+ "lora.phy": "EU868",
+ "lora.appskey": "{ 0xCD, 0xA9, 0x0D, 0x58, 0x4A, 0x45, 0x47, 0xE7, 0x77, 0x06, 0x63, 0x7E, 0x7B, 0x0D, 0x88, 0xC1 }",
+ "lora.nwkskey": "{ 0x30, 0xFD, 0x2C, 0xD2, 0x46, 0x06, 0xE5, 0xAE, 0x21, 0x8E, 0xCF, 0x29, 0xCE, 0xFB, 0xC1, 0xA1 }",
+ "lora.device-address": "0x26011BF1"
+ },
+
+ "K64F": {
+ "lora-spi-mosi": "D11",
+ "lora-spi-miso": "D12",
+ "lora-spi-sclk": "D13",
+ "lora-cs": "D10",
+ "lora-reset": "A0",
+ "lora-dio0": "D2",
+ "lora-dio1": "D3",
+ "lora-dio2": "D4",
+ "lora-dio3": "D5",
+ "lora-dio4": "D8",
+ "lora-dio5": "D9",
+ "lora-rf-switch-ctl1": "NC",
+ "lora-rf-switch-ctl2": "NC",
+ "lora-txctl": "NC",
+ "lora-rxctl": "NC",
+ "lora-ant-switch": "A4",
+ "lora-pwr-amp-ctl": "NC",
+ "lora-tcxo": "NC"
+ },
+
+ "DISCO_L072CZ_LRWAN1": {
+ "main_stack_size": 1024,
+ "lora-radio": "SX1276",
+ "lora-spi-mosi": "PA_7",
+ "lora-spi-miso": "PA_6",
+ "lora-spi-sclk": "PB_3",
+ "lora-cs": "PA_15",
+ "lora-reset": "PC_0",
+ "lora-dio0": "PB_4",
+ "lora-dio1": "PB_1",
+ "lora-dio2": "PB_0",
+ "lora-dio3": "PC_13",
+ "lora-dio4": "NC",
+ "lora-dio5": "NC",
+ "lora-rf-switch-ctl1": "NC",
+ "lora-rf-switch-ctl2": "NC",
+ "lora-txctl": "PC_2",
+ "lora-rxctl": "PA_1",
+ "lora-ant-switch": "NC",
+ "lora-pwr-amp-ctl": "PC_1",
+ "lora-tcxo": "PA_12"
+ },
+
+ "MTB_MURATA_ABZ": {
+ "main_stack_size": 1024,
+ "lora-radio": "SX1276",
+ "lora-spi-mosi": "PA_7",
+ "lora-spi-miso": "PA_6",
+ "lora-spi-sclk": "PB_3",
+ "lora-cs": "PA_15",
+ "lora-reset": "PC_0",
+ "lora-dio0": "PB_4",
+ "lora-dio1": "PB_1",
+ "lora-dio2": "PB_0",
+ "lora-dio3": "PC_13",
+ "lora-dio4": "NC",
+ "lora-dio5": "NC",
+ "lora-rf-switch-ctl1": "NC",
+ "lora-rf-switch-ctl2": "NC",
+ "lora-txctl": "PC_2",
+ "lora-rxctl": "PA_1",
+ "lora-ant-switch": "NC",
+ "lora-pwr-amp-ctl": "PC_1",
+ "lora-tcxo": "PA_12"
+ },
+
+ "XDOT_L151CC": {
+ "lora-radio": "SX1272",
+ "lora-spi-mosi": "LORA_MOSI",
+ "lora-spi-miso": "LORA_MISO",
+ "lora-spi-sclk": "LORA_SCK",
+ "lora-cs": "LORA_NSS",
+ "lora-reset": "LORA_RESET",
+ "lora-dio0": "LORA_DIO0",
+ "lora-dio1": "LORA_DIO1",
+ "lora-dio2": "LORA_DIO2",
+ "lora-dio3": "LORA_DIO3",
+ "lora-dio4": "LORA_DIO4",
+ "lora-dio5": "NC",
+ "lora-rf-switch-ctl1": "NC",
+ "lora-rf-switch-ctl2": "NC",
+ "lora-txctl": "NC",
+ "lora-rxctl": "NC",
+ "lora-ant-switch": "NC",
+ "lora-pwr-amp-ctl": "NC",
+ "lora-tcxo": "NC"
+ },
+
+ "MTB_MTS_XDOT": {
+ "lora-radio": "SX1272",
+ "lora-spi-mosi": "LORA_MOSI",
+ "lora-spi-miso": "LORA_MISO",
+ "lora-spi-sclk": "LORA_SCK",
+ "lora-cs": "LORA_NSS",
+ "lora-reset": "LORA_RESET",
+ "lora-dio0": "LORA_DIO0",
+ "lora-dio1": "LORA_DIO1",
+ "lora-dio2": "LORA_DIO2",
+ "lora-dio3": "LORA_DIO3",
+ "lora-dio4": "LORA_DIO4",
+ "lora-dio5": "NC",
+ "lora-rf-switch-ctl1": "NC",
+ "lora-rf-switch-ctl2": "NC",
+ "lora-txctl": "NC",
+ "lora-rxctl": "NC",
+ "lora-ant-switch": "NC",
+ "lora-pwr-amp-ctl": "NC",
+ "lora-tcxo": "NC"
+ },
+
+ "FF1705_L151CC": {
+ "lora-radio": "SX1272",
+ "lora-spi-mosi": "LORA_MOSI",
+ "lora-spi-miso": "LORA_MISO",
+ "lora-spi-sclk": "LORA_SCK",
+ "lora-cs": "LORA_NSS",
+ "lora-reset": "LORA_RESET",
+ "lora-dio0": "LORA_DIO0",
+ "lora-dio1": "LORA_DIO1",
+ "lora-dio2": "LORA_DIO2",
+ "lora-dio3": "LORA_DIO3",
+ "lora-dio4": "LORA_DIO4",
+ "lora-dio5": "NC",
+ "lora-rf-switch-ctl1": "NC",
+ "lora-rf-switch-ctl2": "NC",
+ "lora-txctl": "NC",
+ "lora-rxctl": "NC",
+ "lora-ant-switch": "NC",
+ "lora-pwr-amp-ctl": "NC",
+ "lora-tcxo": "NC"
+ },
+
+ "MTS_MDOT_F411RE": {
+ "lora-radio": "SX1272",
+ "lora-spi-mosi": "LORA_MOSI",
+ "lora-spi-miso": "LORA_MISO",
+ "lora-spi-sclk": "LORA_SCK",
+ "lora-cs": "LORA_NSS",
+ "lora-reset": "LORA_RESET",
+ "lora-dio0": "LORA_DIO0",
+ "lora-dio1": "LORA_DIO1",
+ "lora-dio2": "LORA_DIO2",
+ "lora-dio3": "LORA_DIO3",
+ "lora-dio4": "LORA_DIO4",
+ "lora-dio5": "LORA_DIO5",
+ "lora-rf-switch-ctl1": "NC",
+ "lora-rf-switch-ctl2": "NC",
+ "lora-txctl": "LORA_TXCTL",
+ "lora-rxctl": "LORA_RXCTL",
+ "lora-ant-switch": "NC",
+ "lora-pwr-amp-ctl": "NC",
+ "lora-tcxo": "NC"
+ },
+
+ "MTB_ADV_WISE_1510": {
+ "lora-radio": "SX1276",
+ "lora-spi-mosi": "SPI_RF_MOSI",
+ "lora-spi-miso": "SPI_RF_MISO",
+ "lora-spi-sclk": "SPI_RF_SCK",
+ "lora-cs": "SPI_RF_CS",
+ "lora-reset": "SPI_RF_RESET",
+ "lora-dio0": "DIO0",
+ "lora-dio1": "DIO1",
+ "lora-dio2": "DIO2",
+ "lora-dio3": "DIO3",
+ "lora-dio4": "DIO4",
+ "lora-dio5": "DIO5",
+ "lora-rf-switch-ctl1": "NC",
+ "lora-rf-switch-ctl2": "NC",
+ "lora-txctl": "NC",
+ "lora-rxctl": "NC",
+ "lora-ant-switch": "ANT_SWITCH",
+ "lora-pwr-amp-ctl": "NC",
+ "lora-tcxo": "NC"
+ },
+
+ "MTB_RAK811": {
+ "lora-radio": "SX1276",
+ "lora-spi-mosi": "SPI_RF_MOSI",
+ "lora-spi-miso": "SPI_RF_MISO",
+ "lora-spi-sclk": "SPI_RF_SCK",
+ "lora-cs": "SPI_RF_CS",
+ "lora-reset": "SPI_RF_RESET",
+ "lora-dio0": "DIO0",
+ "lora-dio1": "DIO1",
+ "lora-dio2": "DIO2",
+ "lora-dio3": "DIO3",
+ "lora-dio4": "DIO4",
+ "lora-dio5": "NC",
+ "lora-rf-switch-ctl1": "NC",
+ "lora-rf-switch-ctl2": "NC",
+ "lora-txctl": "ANT_CTX_PA",
+ "lora-rxctl": "ANT_CRX_RX",
+ "lora-ant-switch": "NC",
+ "lora-pwr-amp-ctl": "NC",
+ "lora-tcxo": "RF_TCXO_EN"
+ }
+ },
+ "macros": ["MBEDTLS_USER_CONFIG_FILE=\"mbedtls_lora_config.h\""]
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/X_NUCLEO_IKS01A2.lib Mon Jun 03 10:26:44 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/salvatoregulfo/code/X_NUCLEO_IKS01A2/#98c301bb7d1b
--- a/main.cpp Wed Mar 13 17:30:20 2019 +0000
+++ b/main.cpp Mon Jun 03 10:26:44 2019 +0000
@@ -20,22 +20,42 @@
#include "lorawan/system/lorawan_data_structures.h"
#include "events/EventQueue.h"
+// Sensor headers
+#include "mbed.h"
+#include "XNucleoIKS01A2.h"
+
// Application helpers
#include "trace_helper.h"
#include "lora_radio_helper.h"
using namespace events;
+//#define WITH_SENSORS
+
+#ifdef WITH_SENSORS
+// Instantiate the expansion board
+static XNucleoIKS01A2 *mems_expansion_board = XNucleoIKS01A2::instance(D14, D15, D4, D5);
+
+// Retrieve the composing elements of the expansion board
+static HTS221Sensor *hum_temp = mems_expansion_board->ht_sensor;
+static LPS22HBSensor *press_temp = mems_expansion_board->pt_sensor;
+#endif
+
// Max payload size can be LORAMAC_PHY_MAXPAYLOAD.
// This example only communicates with much shorter messages (<30 bytes).
// If longer messages are used, these buffers must be changed accordingly.
-uint8_t tx_buffer[30];
-uint8_t rx_buffer[30];
+uint8_t tx_buffer[100];
+uint8_t rx_buffer[100];
+
+// Buffers needed to read values from the sensors
+float value_temp, value_hum;
+#define SENSOR_BUFFER_SIZE 32
+char buffer_temp[SENSOR_BUFFER_SIZE], buffer_hum[SENSOR_BUFFER_SIZE];
/*
* Sets up an application dependent transmission timer in ms. Used only when Duty Cycling is off for testing
*/
-#define TX_TIMER 10000
+#define TX_TIMER 11000
/**
* Maximum number of events for the event queue.
@@ -77,11 +97,27 @@
*/
static lorawan_app_callbacks_t callbacks;
+
+static char *print_double(char* str, double v);
+
/**
* Entry point for application
*/
int main(void)
{
+ printf("\r\n Hello, starting...");
+
+ #ifdef WITH_SENSORS
+ // setup sensor stack
+ hum_temp->enable();
+ press_temp->enable();
+
+ // testing sensors
+ hum_temp->get_temperature(&value_temp);
+ hum_temp->get_humidity(&value_hum);
+ printf("\r\n Sensors test:\r\n HTS221: [temp] %7s C, [hum] %s%%\r\n", print_double(buffer_temp, value_temp), print_double(buffer_hum, value_hum));
+ #endif
+
// setup tracing
setup_trace();
@@ -135,26 +171,31 @@
return 0;
}
-/**
+#ifndef WITH_SENSORS
+
+/*
* Sends a message to the Network Server
*/
static void send_message()
{
uint16_t packet_len;
int16_t retcode;
- printf("\n\rHello world");
+ printf("\n\rSending message");
- packet_len = sprintf((char *) tx_buffer, "Hello world");
+ packet_len = sprintf((char *) tx_buffer, "This is a test. LoRa Works! <3");
retcode = lorawan.send(MBED_CONF_LORA_APP_PORT, tx_buffer, packet_len,
MSG_UNCONFIRMED_FLAG);
if (retcode < 0) {
+ printf("retcode < 0 in send\r\n");
+
retcode == LORAWAN_STATUS_WOULD_BLOCK ? printf("send - WOULD BLOCK\r\n")
: printf("\r\n send() - Error code %d \r\n", retcode);
if (retcode == LORAWAN_STATUS_WOULD_BLOCK) {
//retry in 3 seconds
+ printf("LORAWAN_STATUS_WOULD_BLOCK verified, retrying");
if (MBED_CONF_LORA_DUTY_CYCLE_ON) {
ev_queue.call_in(3000, send_message);
}
@@ -166,6 +207,97 @@
memset(tx_buffer, 0, sizeof(tx_buffer));
}
+#else
+
+
+static void send_message()
+{
+ printf("\n\rSending message");
+ uint16_t packet_len;
+ int16_t retcode;
+
+ // reading from sensors
+ memset(buffer_temp, 0, sizeof(buffer_temp));
+ memset(buffer_hum, 0, sizeof(buffer_hum));
+ hum_temp->get_temperature(&value_temp);
+ hum_temp->get_humidity(&value_hum);
+ printf("\r\nSensors reading: [temp] %7s C, [hum] %s%%\r\n",
+ print_double(buffer_temp, value_temp), print_double(buffer_hum, value_hum));
+
+ // format data
+ uint16_t temp_len = sprintf((char *) tx_buffer, buffer_temp);
+ tx_buffer[temp_len] = ':';
+ uint16_t hum_len = sprintf((char *) &tx_buffer[temp_len+1], buffer_hum);
+
+ // set final payload and send
+ packet_len = temp_len + hum_len + 1;
+
+ printf("\r\n Sending to server %s", tx_buffer);
+
+ retcode = lorawan.send(MBED_CONF_LORA_APP_PORT, tx_buffer, packet_len,
+ MSG_UNCONFIRMED_FLAG);
+
+
+
+ if (retcode < 0) {
+ printf("retcode < 0 in send\r\n");
+
+ retcode == LORAWAN_STATUS_WOULD_BLOCK ? printf("send - WOULD BLOCK\r\n")
+ : printf("\r\n send() - Error code %d \r\n", retcode);
+
+ if (retcode == LORAWAN_STATUS_WOULD_BLOCK) {
+ //retry in 3 seconds
+ printf("LORAWAN_STATUS_WOULD_BLOCK verified, retrying");
+ if (MBED_CONF_LORA_DUTY_CYCLE_ON) {
+ ev_queue.call_in(3000, send_message);
+ }
+ }
+ return;
+ }
+
+ printf("\r\n %d bytes scheduled for transmission \r\n", retcode);
+ memset(tx_buffer, 0, sizeof(tx_buffer));
+}
+
+#endif
+
+/* Helper function for printing floats & doubles */
+static char *print_double(char* str, double v)
+{
+ int decimalDigits=2;
+ int i = 1;
+ int intPart, fractPart;
+ int len;
+ char *ptr;
+
+ /* prepare decimal digits multiplicator */
+ for (;decimalDigits!=0; i*=10, decimalDigits--);
+
+ /* calculate integer & fractinal parts */
+ intPart = (int)v;
+ fractPart = (int)((v-(double)(int)v)*i);
+
+ /* fill in integer part */
+ sprintf(str, "%i.", intPart);
+
+ /* prepare fill in of fractional part */
+ len = strlen(str);
+ ptr = &str[len];
+
+ /* fill in leading fractional zeros */
+ for (i/=10;i>1; i/=10, ptr++) {
+ if (fractPart >= i) {
+ break;
+ }
+ *ptr = '0';
+ }
+
+ /* fill in (rest of) fractional part */
+ sprintf(ptr, "%i", fractPart);
+
+ return str;
+}
+
/**
* Event handler
*/
--- a/mbed-os.lib Wed Mar 13 17:30:20 2019 +0000 +++ b/mbed-os.lib Mon Jun 03 10:26:44 2019 +0000 @@ -1,1 +1,1 @@ -https://github.com/ARMmbed/mbed-os/#51d55508e8400b60af467005646c4e2164738d48 +https://github.com/ARMmbed/mbed-os/#73f096399b4cda1f780b140c87afad9446047432
--- a/mbed_app.json Wed Mar 13 17:30:20 2019 +0000
+++ b/mbed_app.json Mon Jun 03 10:26:44 2019 +0000
@@ -28,14 +28,17 @@
"target_overrides": {
"*": {
"platform.stdio-convert-newlines": false,
- "platform.stdio-baud-rate": 115200,
- "platform.default-serial-baud-rate": 115200,
- "lora.over-the-air-activation": false,
+ "platform.stdio-baud-rate": 9600,
+ "platform.default-serial-baud-rate": 9600,
+ "lora.over-the-air-activation": true,
"lora.duty-cycle-on": false,
"lora.phy": "EU868",
- "lora.appskey": "{ 0xCD, 0xA9, 0x0D, 0x58, 0x4A, 0x45, 0x47, 0xE7, 0x77, 0x06, 0x63, 0x7E, 0x7B, 0x0D, 0x88, 0xC1 }",
- "lora.nwkskey": "{ 0x30, 0xFD, 0x2C, 0xD2, 0x46, 0x06, 0xE5, 0xAE, 0x21, 0x8E, 0xCF, 0x29, 0xCE, 0xFB, 0xC1, 0xA1 }",
- "lora.device-address": "0x26011BF1"
+ "lora.application-eui": "{ 0x70, 0xB3, 0xD5, 0x7E, 0xD0, 0x01, 0xC2, 0x3D }",
+ "lora.device-eui": "{ 0x00, 0x96, 0x41, 0xD2, 0x40, 0xD7, 0x23, 0x22 }",
+ "lora.application-key": "{ 0xE6, 0x8B, 0xA4, 0xD7, 0x53, 0x53, 0x95, 0x0A, 0xBB, 0x38, 0xB6, 0x5C, 0xD8, 0x28, 0xB7, 0x6E }",
+ "lora.nwkskey": "{ 0x23, 0xC4, 0xDD, 0x61, 0xE0, 0x91, 0x01, 0x7D, 0x11, 0x4B, 0xEF, 0x27, 0x9C, 0xFE, 0xD9, 0x78 }",
+ "lora.appskey": "{ 0x93, 0xB6, 0x6C, 0xE5, 0x59, 0x4F, 0x21, 0x0F, 0xA4, 0x5E, 0xA6, 0x48, 0x58, 0xBE, 0x0C, 0x37 }",
+ "lora.device-address": "0x26011082"
},
"K64F": {