Lora4MakerFaire

Dependencies:   HC_SR04_Ultrasonic_Library X_NUCLEO_IKS01A2 mbed LoRaWAN-lib SX1272Lib

Fork of LoRaWANdemo72 by FabLab LoRa

Files at this revision

API Documentation at this revision

Comitter:
rschiano
Date:
Fri Dec 01 10:21:46 2017 +0000
Parent:
9:85c85c65299a
Commit message:
LoraMakerFaire;

Changed in this revision

app/Commissioning.h Show annotated file Show diff for this revision Revisions of this file
app/main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 85c85c65299a -r 88f1c052f9e9 app/Commissioning.h
--- a/app/Commissioning.h	Fri Nov 17 12:29:00 2017 +0000
+++ b/app/Commissioning.h	Fri Dec 01 10:21:46 2017 +0000
@@ -32,10 +32,6 @@
  */
 #define IEEE_OUI                                    0x11, 0x22, 0x33
 
-/*!
- * Mote device IEEE EUI (big endian)
- */
-#define LORAWAN_DEVICE_EUI                          { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x13 }
 
 /*!
  * Application IEEE EUI (big endian)
@@ -52,20 +48,47 @@
  */
 #define LORAWAN_NETWORK_ID                          0
 
+#define NODE99 // NODE13 NODE88 NODE99
+
+#ifdef  NODE13
+/*!
+ * Mote device IEEE EUI (big endian)
+ */
+#define LORAWAN_DEVICE_EUI                          { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x13 }
+
 /*!
  * Device address on the network (big endian)
  */
-#define LORAWAN_DEVICE_ADDRESS                      0x00000006
+//#define LORAWAN_DEVICE_ADDRESS                      0x00000006
 
 /*!
  * AES encryption/decryption cipher network session key
  */
-#define LORAWAN_NWKSKEY                             { 0xA2, 0x5D, 0x17, 0x57, 0xF9, 0x9C, 0xC1, 0x95, 0xE6, 0xD3, 0xD8, 0xD7, 0xF1, 0xAE, 0x9B, 0xF0 }
+#define LORAWAN_NWKSKEY                             { 0xA2, 0x5D, 0x17, 0x57, 0xF9, 0x9C, 0xC1, 0x95, 0xE6, 0xD3, 0xD8, 0xD7, 0xF1, 0xAE, 0x9B, 0xF1 }
+                                                    //{ 0xA2, 0x5D, 0x17, 0x57, 0xF9, 0x9C, 0xC1, 0x95, 0xE6, 0xD3, 0xD8, 0xD7, 0xF1, 0xAE, 0x9B, 0xF0 } 0x65, 0x6a, 0x43, 0x5e, 0x15, 0x3e, 0x5f, 0x23, 0xcf, 0x0c, 0x11, 0x77, 0x30, 0x83, 0xa3, 0x5d}; //
 
 /*!
  * AES encryption/decryption cipher application session key
  */
-#define LORAWAN_APPSKEY                             { 0xFC, 0x43, 0x3B, 0x31, 0x8E, 0x17, 0x7C, 0x78, 0x44, 0xFF, 0x5B, 0x4D, 0x0B, 0x3A, 0xDD, 0x56 }
+#define LORAWAN_APPSKEY                             { 0x65, 0x6a, 0x43, 0x5e, 0x15, 0x3e, 0x5f, 0x23, 0xcf, 0x0c, 0x11, 0x77, 0x30, 0x83, 0xa3, 0x5d} //
+                                                    //{ 0x3c, 0xc4f, 0xea, 0xd9, 0xbc, 0x77, 0xd9, 0xfc, 0xf9, 0xd0, 0xae, 0x09, 0x62, 0xff, 0x1fd }
+
+#endif  //NODESELECTION
+
+#ifdef  NODE88
+#define LORAWAN_DEVICE_EUI                          { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88 }
+#define LORAWAN_DEVICE_ADDRESS                      0x00000002
+#define LORAWAN_NWKSKEY                             {0x2A, 0x91, 0xD4, 0xE6, 0x6B, 0x55, 0x4A, 0x40, 0x1A, 0xE7, 0xD3, 0x7D, 0x47, 0x95, 0xD2, 0x37}
+#define LORAWAN_APPSKEY                             {0x6D, 0x31, 0xDF, 0x5B, 0x8B, 0x8E, 0x87, 0x00, 0x20, 0xBC, 0x1C, 0x2F, 0x89, 0xA6, 0xAD, 0x9D}
+#endif  //NODESELECTION
+
+#ifdef  NODE99
+#define LORAWAN_DEVICE_EUI                          { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x99 }
+#define LORAWAN_DEVICE_ADDRESS                      0x00000001
+#define LORAWAN_NWKSKEY                             {0x65, 0x6A, 0x43, 0x5E, 0x15, 0x3E, 0x5F, 0x23, 0xCF, 0x0C, 0x11, 0x77, 0x30, 0x83, 0xA3, 0x5D}
+#define LORAWAN_APPSKEY                             {0x3C, 0xC4, 0xFE, 0xAD, 0x9B, 0xC7, 0x7D, 0x9F, 0xCF, 0x9D, 0x0A, 0xE0, 0x96, 0x2F, 0xF1, 0xFD}
+#endif  //NODESELECTION
+
 
 #endif // __LORA_COMMISSIONING_H__
 
diff -r 85c85c65299a -r 88f1c052f9e9 app/main.cpp
--- a/app/main.cpp	Fri Nov 17 12:29:00 2017 +0000
+++ b/app/main.cpp	Fri Dec 01 10:21:46 2017 +0000
@@ -22,17 +22,19 @@
 #include "XNucleoIKS01A2.h"
 #include "string.h"
 #include "ultrasonic.h"
+#include "vt100.h"
 
 /* Instantiate the expansion board */
 static XNucleoIKS01A2 *mems_expansion_board = XNucleoIKS01A2::instance(D14, D15, D4, D5);
 ultrasonic usensor(D8, D9, .1, 1);
+DigitalOut led(LED2);
 //static HCSR04 *myUS = ultrasonic::ultrasonic(D8,D9,.1,1) //set the trigger pin to D8 and the Echo pin to D9
 
 /* Retrieve the composing elements of the expansion board */
-//static HTS221Sensor *hum_temp = mems_expansion_board->ht_sensor;
+static HTS221Sensor *hum_temp = mems_expansion_board->ht_sensor;
 //static LSM303AGRAccSensor *accelerometer = mems_expansion_board->accelerometer;
 //static LSM6DSLSensor *acc_gyro = mems_expansion_board->acc_gyro;
-//static LPS22HBSensor *press_temp = mems_expansion_board->pt_sensor;
+static LPS22HBSensor *press_temp = mems_expansion_board->pt_sensor;
 /*!
  * Defines the application data transmission duty cycle. 5s, value in [ms].
  */
@@ -47,7 +49,7 @@
 /*!
  * Default datarate
  */
-#define LORAWAN_DEFAULT_DATARATE                    DR_0                      //SF 12
+#define LORAWAN_DEFAULT_DATARATE                    DR_5                      //SF 12
 
 /*!
  * LoRaWAN confirmed messages
@@ -91,7 +93,7 @@
 /*!
  * LoRaWAN application port
  */
-#define LORAWAN_APP_PORT                            13
+#define LORAWAN_APP_PORT                            13  // 0x44 //  
 
 /*!
  * User application data buffer size
@@ -248,6 +250,12 @@
  * SerialDisplay managment variables
  */
 
+/*
+ * Seriale per comunicare con BBB
+*/
+ RawSerial mySerial(PC_10,PC_11,115200);
+
+
 /*!
  * Indicates if the MAC layer network join status has changed.
  */
@@ -335,7 +343,7 @@
 /*!
  * \brief   Prepares the payload of the frame
  */
-    float value1, value2;
+    float value1, value2,value3;
     char buffer1[32];
     long dist1;
   //  int16_t Myaxes_int[3];
@@ -345,28 +353,55 @@
     char Cont[64];
  //  uint32_t Cont[64];
  // InterruptIn BlueButton(USER_BUTTON);  
- 
+
+    extern VT100 vt;
+    char myChar;
 static void PrepareTxFrame( uint8_t port )
 {
     
     switch( port )
     {
-        
+    case 0x44:
+        //<key:Geiger:192.168.1.1: timestamp: 1425243676924 conteggi: 8.70 stato: attivo>
+        vt.PutStringAt(70,2,"Ci arriva?");
+        while(!mySerial.readable());
+        if(mySerial.getc()=='{'){
+        int i=0;
+        do
+            Cont[i] = mySerial.getc();
+        while (Cont[i++]!='}');
+        Cont[--i]=0x0;
+        }
+        vt.PutStringAt(70,2,(char*) Cont);
+        AppDataSize = sprintf((char*)AppData, (char*)Cont);
+        /*int i=0;
+        do
+            Cont[i] = mySerial.getc();
+        while (Cont[i++]!='>');
+        AppDataSize = sprintf((char*)AppData, (char*)Cont);*/
+        //<key:Geiger:192.168.1.1,TS:1425243676924,count:8.70,stato: attivo>"); */
+    break;
     case 13:
     
        
-        //  hum_temp->get_temperature(&value1);
-     //     hum_temp->get_humidity(&value2);
-      //    press_temp->get_pressure(&value1);
-          dist1 = usensor.getCurrentDistance();
+          hum_temp->get_temperature(&value1);
+          hum_temp->get_humidity(&value2);
+          press_temp->get_pressure(&value3);
+          //dist1 = usensor.getCurrentDistance();
          // usensor->getCurrentDistance(&dist1); 
-          strcpy((char*)Cont, (char*) print_double(buffer1,dist1) );
-//       strcat((char*)Cont, " " );
- //       strcat((char*)Cont, print_double(buffer1,value2) );
- //       strcat((char*)Cont, " ");
-    //    strcat((char*)Cont,  print_double(buffer1,value2));
-   //     strcat((char*)Cont, " ");
-        
+          //strcpy((char*)Cont, (char*) print_double(buffer1,(double)dist1) );
+          //SerialDisplayDrawTitle("Ricchione!!!!");
+          /*strcpy((char*)Cont, (char*) "Ricchione!!!" );
+          led = !led;*/
+          vt.PutStringAt(70,2,"Ci arriva?");
+          strcpy((char*)Cont, "{Temperatura:" );
+          strcat((char*)Cont, print_double(buffer1,value1) );
+          strcat((char*)Cont, ",Umidità:");
+          strcat((char*)Cont,  print_double(buffer1,value2));
+          strcat((char*)Cont, ",Pressione:");
+          strcat((char*)Cont,  print_double(buffer1,value3));
+          strcat((char*)Cont, "}");
+          vt.PutStringAt(70,2,(char*) Cont);
  /*          acc_gyro->get_x_axes(axes);   
            strcpy(Cont,(char*) print_double(buffer1,axes[0]));
            strcat(Cont, " ");
@@ -891,9 +926,9 @@
     MibRequestConfirm_t mibReq;
     
     //enable sensors
-  //  accelerometer -> enable();
-  //  hum_temp -> enable();
- //   press_temp -> enable();
+    //accelerometer -> enable();
+    hum_temp -> enable();
+    press_temp -> enable();
    // acc_gyro->enable_x();
    // acc_gyro->enable_g();
     usensor.startUpdates();