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:
17:41be4896ed6d
Parent:
6:b6bafd0a7013
Child:
32:0a09505a656d
--- a/Display.cpp	Wed Jun 15 15:16:15 2016 -0500
+++ b/Display.cpp	Thu Jul 21 11:06:13 2016 -0500
@@ -34,6 +34,7 @@
 #include <sstream>
 #include "Display.hpp"
 #include "I2C.h"
+#include "wait_api.h"
 
 //LCD Commands
 //If the RS bit is set to logic 1, these display bytes are stored in the display RAM at the address specified by the data pointer. The data pointer is
@@ -172,7 +173,6 @@
   m_I2C_intf.start();
   m_I2C_intf.write(m_LCD_I2C_addr);
   m_I2C_intf.write(ControlByte);    //No more control bytes will be sent
-  //************************************************************************************
   m_I2C_intf.write(0x38);               //Function Set IS[2:1] = 0,0 (&h38 = Single height font, 0x3C = double height font)
   m_I2C_intf.write(0x39);               //Function Set IS[2:1] = (0,1)
   //When IS[2:1]=(0,0): normal instruction be selected(refer instruction table 0)
@@ -182,10 +182,14 @@
   m_I2C_intf.write(0x70);               //CONTRAST (was 0x78)
   m_I2C_intf.write(0x5E);               //POWER/ICON CONTROL/CONTRAST (upper two bits)
   m_I2C_intf.write(0x6D);               //FOLLOWER CONTROL
-  m_I2C_intf.write(Display_ON);      //Display on, cursor on, cursor position on
-  m_I2C_intf.write(ClearDisplay);    //Clear Display
-  m_I2C_intf.write(0x06);            //ENTRY MODE
-  //************************************************************************************
+  m_I2C_intf.stop();
+  wait_ms(200);                         //Wait for power stable
+  m_I2C_intf.start();
+  m_I2C_intf.write(m_LCD_I2C_addr);
+  m_I2C_intf.write(ControlByte);        //No more control bytes will be sent
+  m_I2C_intf.write(Display_ON);         //Display on, cursor on, cursor position on
+  m_I2C_intf.write(ClearDisplay);       //Clear Display
+  m_I2C_intf.write(0x06);               //ENTRY MODE
   m_I2C_intf.stop();
 }