MAXREFDES143#: DeepCover Embedded Security in IoT Authenticated Sensing & Notification

Dependencies:   MaximInterface mbed

The MAXREFDES143# is an Internet of Things (IoT) embedded security reference design, built to protect an industrial sensing node by means of authentication and notification to a web server. The hardware includes a peripheral module representing a protected sensor node monitoring operating temperature and remaining life of a filter (simulated through ambient light sensing) and an mbed shield representing a controller node responsible for monitoring one or more sensor nodes. The design is hierarchical with each controller node communicating data from connected sensor nodes to a web server that maintains a centralized log and dispatches notifications as necessary. The mbed shield contains a Wi-Fi module, a DS2465 coprocessor with 1-Wire® master function, an LCD, LEDs, and pushbuttons. The protected sensor node contains a DS28E15 authenticator, a DS7505 temperature sensor, and a MAX44009 light sensor. The mbed shield communicates to a web server by the onboard Wi-Fi module and to the protected sensor node with I2C and 1-Wire. The MAXREFDES143# is equipped with a standard shield connector for immediate testing using an mbed board such as the MAX32600MBED#. The simplicity of this design enables rapid integration into any star-topology IoT network requiring the heightened security with low overhead provided by the SHA-256 symmetric-key algorithm.

More information about the MAXREFDES143# is available on the Maxim Integrated website.

Revision:
20:cdba71cb5506
Parent:
19:b8b0cd35f7b4
Child:
25:37ea43ff81be
--- a/main.cpp	Mon Aug 15 13:59:17 2016 +0000
+++ b/main.cpp	Tue Sep 06 11:33:14 2016 -0500
@@ -266,7 +266,7 @@
           filterLifeAlarmLed = !sensorData.filterLifeAlarm(); // Active Low
           
           // Send measurements to web if time interval reached
-          if (webPostTimer.read_ms() >= webPostIntervalMs)
+          if (static_cast<unsigned int>(webPostTimer.read_ms()) >= webPostIntervalMs)
           {
             // Format, sign, and transmit data to web server
             result = webIntf.authPostHttpEvent(ds2465, SensorDataEvent, WebServerInterface::formatSensorDataPostBody(sensorData), !useInvalidSecret);
@@ -316,7 +316,7 @@
           break;
         }
         // Try to authenticate and return to normal operation
-        else if (webPostTimer.read_ms() >= webPostIntervalMs)
+        else if (static_cast<unsigned int>(webPostTimer.read_ms()) >= webPostIntervalMs)
         {
           // Send event message to server
           result = webIntf.authPostHttpEvent(ds2465, InvalidSensorEvent, "", !useInvalidSecret);
@@ -343,7 +343,7 @@
             break;
           }
         }
-      } while (retryTimer.read_ms() < webPostIntervalMs);
+      } while (static_cast<unsigned int>(retryTimer.read_ms()) < webPostIntervalMs);
       retryTimer.stop();
       break;