This is code is part of a Technion course project in advanced IoT, implementing a device to receive and present sensors data from a Formula racing car built by students at Technion - Israel Institute of Technology.

Dependencies:   mbed Buffer

Fork of DISCO-L072CZ-LRWAN1_LoRa_PingPong by ST

This is code is part of a Technion course project in advanced IoT, implementing a device to receive sensors data from another L072CZ-LRWAN1 installed on a Formula racing car (built by students at Technion - Israel Institute of Technology), and sends it to a GUI presenting the data (GUI project: github.com/ward-mattar/TechnionFormulaGUI).

How to install

  • Create an account on Mbed: https://os.mbed.com/account/signup/
  • Import project into Compiler
  • In the Program Workspace select "Formula_Nucleo_Receiver"
  • Select a Platform like so:
  1. Click button at top-left
  2. Add Board
  3. Search "NUCLEO F103RB" and then "Add to your Mbed Compiler"
  • Finally click "Compile", if the build was successful, the binary would download automatically
  • To install it on device simply plug it in to a PC, open device drive and drag then drop binary file in it
Revision:
12:046346a16ff4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SX1276GenericLib/Arduino-mbed-APIs/arduino-util.cpp	Sat May 19 15:42:38 2018 +0000
@@ -0,0 +1,99 @@
+#ifdef ARDUINO
+
+#include <Arduino.h>
+#include "arduino-util.h"
+#include <cstdarg>
+#include <stdio.h>
+
+
+char tmpbuf[160];
+extern int us_getTicker(void);
+extern int s_getTicker(void);
+extern Stream *ser;
+
+void
+dprintf(const char *format, ...)
+{
+    static volatile bool busy;
+    if (busy)
+        return;
+    busy = true;
+    
+    int secs = s_getTicker();
+    int s = secs % 60;
+    int m = secs / 60;
+    int h = secs / 3600;
+    int us = us_getTicker() % 1000000;
+
+    snprintf(tmpbuf, sizeof(tmpbuf)-1, "%02d:%02d:%02d.%.06d ", h, m, s, us);
+    ser->write(tmpbuf, (int) sizeof "00:00:34.3436868 " -1);
+
+	va_list arg;
+	va_start(arg, format);
+	int len = vsnprintf(tmpbuf, sizeof(tmpbuf)-3, format, arg);
+	tmpbuf[len] = '\r';
+	tmpbuf[len+1] = '\n';
+	tmpbuf[len+2] = 0;
+	ser->write(tmpbuf, len+3);
+	va_end(arg);
+    busy = false;
+}
+
+void
+rprintf(const char *format, ...)
+{
+    va_list arg;
+    va_start(arg, format);
+    int len = vsnprintf(tmpbuf, sizeof(tmpbuf)-3, format, arg);
+    tmpbuf[len] = 0;
+    ser->write(tmpbuf, len+1);
+    va_end(arg);
+}
+
+void
+dump(const char *title, const void *data, int len)
+{
+    dprintf("dump(\"%s\", 0x%x, %d bytes)", title, data, len);
+    
+    int i, j, cnt;
+    unsigned char *u;
+    const int width = 16;
+    const int seppos = 7;
+    
+    cnt = 0;
+    u = (unsigned char *)data;
+    while (len > 0) {
+        rprintf("%08x: ", (unsigned int)data + cnt);
+        cnt += width;
+        j = len < width ? len : width;
+        for (i = 0; i < j; i++) {
+            rprintf("%2.2x ", *(u + i));
+            if (i == seppos)
+                ser->write(' ');
+        }
+        ser->write(' ');
+        if (j < width) {
+            i = width - j;
+            if (i > seppos + 1)
+                ser->write(' ');
+            while (i--) {
+                ser->print("   ");
+            }
+        }
+        for (i = 0; i < j; i++) {
+            int c = *(u + i);
+            if (c >= ' ' && c <= '~')
+                ser->write(c);
+            else
+                ser->write('.');
+            if (i == seppos)
+                ser->write(' ');
+        }
+        len -= width;
+        u += width;
+        ser->print("\r\n");
+    }
+    ser->print("--\r\n");
+    
+}
+#endif