ADC Sensor LoRa Demo

Dependencies:   libmDot mbed-rtos mbed-src

Files at this revision

API Documentation at this revision

Comitter:
jamescmaki
Date:
Sat Jul 18 00:02:04 2015 +0000
Commit message:
Initial commit

Changed in this revision

libmDot.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-rtos.lib Show annotated file Show diff for this revision Revisions of this file
mbed-src.lib Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libmDot.lib	Sat Jul 18 00:02:04 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/teams/MultiTech/code/libmDot/#390fc83d588d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Jul 18 00:02:04 2015 +0000
@@ -0,0 +1,110 @@
+/*
+ * ADC Sensor Demo
+ *
+ * Analog inputs are read and pushed to the LoRa gateway.
+ *
+ * Analog sensors should be wired to mDot pins 16 and 17.
+ *
+ */
+
+#include "mbed.h"
+#include "mDot.h"
+#include <string>
+#include <vector>
+
+/*
+ * LoRa settings
+ *
+ * For Conduit AEP settings can be found at:
+ *
+ *   https://<ip-address>/lora_network.html
+ *
+ * For Conduit mlinux:
+ *
+ *   /var/config/lora/lora-network-server.conf
+ *
+ */
+static std::string config_network_name = "testtest";
+static std::string config_network_pass = "memememe";
+static uint8_t config_frequency_sub_band = 5;
+
+enum {
+    MSG_TYPE_ADC0,
+    MSG_TYPE_ADC1,
+};
+
+AnalogIn adc0(PA_1); // PIN16 on mDot
+AnalogIn adc1(PA_4); // PIN17 on mDot
+
+Serial debug(USBTX, USBRX);
+
+int main() {
+    int32_t rc;
+
+    debug.baud(115200);
+
+    mDot *mdot = mDot::getInstance();
+
+    mdot->resetConfig();
+
+    printf("mDot version: %s\r\n", mdot->getId().c_str());
+
+    // Activity Status on UDK2
+    mdot->setActivityLedPin(LED1);
+    mdot->setActivityLedEnable(true);
+
+    if ((rc = mdot->setFrequencySubBand(config_frequency_sub_band)) != mDot::MDOT_OK) {
+        printf("failed to set frequency sub-band: %d\r\n", rc);
+        return 1;
+    }
+
+    if ((rc = mdot->setNetworkName(config_network_name)) != mDot::MDOT_OK) {
+        printf("failed to set network name: %d\r\n", rc);
+        return 1;
+    }
+
+    if ((rc = mdot->setNetworkPassphrase(config_network_pass)) != mDot::MDOT_OK) {
+        printf("failed to set network pass phrase: %d\r\n", rc);
+        return 1;
+    }
+
+    while ((rc = mdot->joinNetwork()) != mDot::MDOT_OK) {
+        printf("failed to join network: %d\r\n", rc);
+        if (mdot->getFrequencyBand() == mDot::FB_868){
+            rc = mdot->getNextTxMs();
+        } else {
+            rc = 0;
+        }
+
+        wait(1);
+    }
+
+    while (true) {
+        std::vector<uint8_t> lora_pl;
+
+        // Read analog inputs
+        uint16_t adc0_value = adc0.read_u16();
+        uint16_t adc1_value = adc1.read_u16();
+
+        // Pack ADC0 TLV
+        lora_pl.clear();
+        lora_pl.push_back(MSG_TYPE_ADC0);
+        lora_pl.push_back(2);
+        lora_pl.push_back(((char *) &adc0_value)[1]);
+        lora_pl.push_back(((char *) &adc0_value)[0]);
+
+        // Pack ADC1 TLV
+        lora_pl.push_back(MSG_TYPE_ADC1);
+        lora_pl.push_back(2);
+        lora_pl.push_back(((char *) &adc1_value)[1]);
+        lora_pl.push_back(((char *) &adc1_value)[0]);
+
+        // Send message
+        while ((rc = mdot->send(lora_pl)) != mDot::MDOT_OK) {
+            printf("failed to send message: %d\r\n", rc);
+            wait(1);
+        }
+
+        wait(5);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-rtos.lib	Sat Jul 18 00:02:04 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed-rtos/#5aed8bae1001
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-src.lib	Sat Jul 18 00:02:04 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed-src/#a274ee790e56