This is the initial version of the IIoT quickstart program implemented on the AT&T IoT kit.

Dependencies:   WNCInterface mbed-rtos mbed

IBM Watson IoT Platform Quickstart program using the AT&T/Avnet IoT Starter Kit

Using the AT&T Cellular IoT Starter Kit from Avnet the this program publishes temperature and/or humidity to the IBM Watson IoT Platform Quickstart site. The user can switch between temperature or humidity. The user can select which data series to display by selecting the event at the bottom of the display.

NOTE: This doc is specific to using the AT&T Cellular IoT Starter Kit which contains a FRDM-K64F from NXP. Ensure that the mbed online compiler has the platform set to FRDM-K64F.

1. Launch mbed online compiler in your browser

2. In a seperate browser Tab, goto the Avnet BluemixQS site and select the Import into Compiler button in the upper right portion of the window.

3. With the example program imported into you work-space, you have all the components needed. Simply execute the Compile button.

Expected execution outcome

Once the program is compiled and downloaded to the IoT Kit, perform the following steps:

1. Using a terminal program such as Hyperterm or Putty, connect to the Kit (select comm parameters of 115200-N81)

2. Press the `reset` button, then you should see the program start running! When it runs, the output will look similar to:

Sample Ouput

HTS221 Detected (0xBC)
  Temp  is: 89.66 F 
  Humid is: 08 %
      _____
     *     *
    *____   *____             Bluemix Quick Start example
   * *===*   *==*             using the AT&T IoT Starter Kit
  *___*===*___**  AVNET
       *======*
        *====*

This demonstration program operates the same as the original 
MicroZed IIoT Starter Kit except it only reads from the HTS221 
temp sensor (no 31855 currently present and no generated data).

Local network info...
IP address is 10.61.23.226
MAC address is 11:02:72:14:95:91
Gateway address is 10.61.23.225
Your <uniqueID> is: IoT-11027214-2016

To run the demo, go to 'https://quickstart.internetofthings.ibmcloud.com/#/'
and enter 'IoT-11027214-2016' as your device ID.  The temperature data will then be displayed
as it is received. You can switch between temperature and humidity by depressing SW2.
---------------------------------------------------------------


(0) Attempting TCP connect to quickstart.messaging.internetofthings.ibmcloud.com:1883:  Success!
(0) Attempting MQTT connect to quickstart.messaging.internetofthings.ibmcloud.com:1883: Success!
Publishing MQTT message '{"d" : {"temp" : " 90.2" }}' (27)

3. Once the program is running, go to https://quickstart.internetofthings.ibmcloud.com/# and enter your device ID (this is IoT-11027214-2016 in the above sample output) and select the GO button. As data is received it will automatically graphed and displayed below the graph. If you want to switch and display humidity rather than temperature (temperature is the default), depress SW2 on the FRDM-K64F board and select humid in the data under the graph.

License

This library is released under the Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License and may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Committer:
root@developer-sjc-cyan-compiler.local.mbed.org
Date:
Thu Nov 17 18:28:43 2016 +0000
Revision:
2:d6c16dd96091
Parent:
0:6a929f0d0e58
Added tag att_cellular_K64_wnc_14A2A_20161117 for changeset d8d4c57daaad

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JMF 0:6a929f0d0e58 1 /* ===================================================================
JMF 0:6a929f0d0e58 2 Copyright © 2016, AVNET Inc.
JMF 0:6a929f0d0e58 3
JMF 0:6a929f0d0e58 4 Licensed under the Apache License, Version 2.0 (the "License");
JMF 0:6a929f0d0e58 5 you may not use this file except in compliance with the License.
JMF 0:6a929f0d0e58 6 You may obtain a copy of the License at
JMF 0:6a929f0d0e58 7
JMF 0:6a929f0d0e58 8 http://www.apache.org/licenses/LICENSE-2.0
JMF 0:6a929f0d0e58 9
JMF 0:6a929f0d0e58 10 Unless required by applicable law or agreed to in writing,
JMF 0:6a929f0d0e58 11 software distributed under the License is distributed on an
JMF 0:6a929f0d0e58 12 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
JMF 0:6a929f0d0e58 13 either express or implied. See the License for the specific
JMF 0:6a929f0d0e58 14 language governing permissions and limitations under the License.
JMF 0:6a929f0d0e58 15
JMF 0:6a929f0d0e58 16 ======================================================================== */
JMF 0:6a929f0d0e58 17
JMF 0:6a929f0d0e58 18 #ifndef HTS221_H_
JMF 0:6a929f0d0e58 19 #define HTS221_H_
JMF 0:6a929f0d0e58 20
JMF 0:6a929f0d0e58 21 class HTS221 {
JMF 0:6a929f0d0e58 22 public:
JMF 0:6a929f0d0e58 23 HTS221(void);
JMF 0:6a929f0d0e58 24 int init(void);
JMF 0:6a929f0d0e58 25 int activate(void);
JMF 0:6a929f0d0e58 26 int deactivate(void);
JMF 0:6a929f0d0e58 27
JMF 0:6a929f0d0e58 28 int bduActivate(void);
JMF 0:6a929f0d0e58 29 int bduDeactivate(void);
JMF 0:6a929f0d0e58 30
JMF 0:6a929f0d0e58 31 int readHumidity(void);
JMF 0:6a929f0d0e58 32 double readTemperature(void);
JMF 0:6a929f0d0e58 33 private:
JMF 0:6a929f0d0e58 34 int storeCalibration(void);
JMF 0:6a929f0d0e58 35 unsigned char _h0_rH, _h1_rH;
JMF 0:6a929f0d0e58 36 unsigned int _T0_degC, _T1_degC;
JMF 0:6a929f0d0e58 37 unsigned int _H0_T0, _H1_T0;
JMF 0:6a929f0d0e58 38 unsigned int _T0_OUT, _T1_OUT;
JMF 0:6a929f0d0e58 39 double _temperature;
JMF 0:6a929f0d0e58 40 int _humidity;
JMF 0:6a929f0d0e58 41 unsigned char _address;
JMF 0:6a929f0d0e58 42
JMF 0:6a929f0d0e58 43 unsigned char readRegister(unsigned char slaveAddress, unsigned char regToRead);
JMF 0:6a929f0d0e58 44 int writeRegister(unsigned char slaveAddress, unsigned char regToWrite, unsigned char dataToWrite);
JMF 0:6a929f0d0e58 45 };
JMF 0:6a929f0d0e58 46
JMF 0:6a929f0d0e58 47 #define HTS221_ADDRESS 0xBF
JMF 0:6a929f0d0e58 48
JMF 0:6a929f0d0e58 49 //Define a few of the registers that we will be accessing on the HTS221
JMF 0:6a929f0d0e58 50 #define WHO_AM_I 0x0F
JMF 0:6a929f0d0e58 51 #define WHO_AM_I_RETURN 0xBC //This read-only register contains the device identifier, set to BCh
JMF 0:6a929f0d0e58 52
JMF 0:6a929f0d0e58 53 #define AVERAGE_REG 0x10 // To configure humidity/temperature average.
JMF 0:6a929f0d0e58 54 #define AVERAGE_DEFAULT 0x1B
JMF 0:6a929f0d0e58 55
JMF 0:6a929f0d0e58 56 /*
JMF 0:6a929f0d0e58 57 * [7] PD: power down control
JMF 0:6a929f0d0e58 58 * (0: power-down mode; 1: active mode)
JMF 0:6a929f0d0e58 59 *
JMF 0:6a929f0d0e58 60 * [6:3] Reserved
JMF 0:6a929f0d0e58 61 *
JMF 0:6a929f0d0e58 62 * [2] BDU: block data update
JMF 0:6a929f0d0e58 63 * (0: continuous update; 1: output registers not updated until MSB and LSB reading)
JMF 0:6a929f0d0e58 64 The BDU bit is used to inhibit the output register update between the reading of the upper
JMF 0:6a929f0d0e58 65 and lower register parts. In default mode (BDU = ?0?), the lower and upper register parts are
JMF 0:6a929f0d0e58 66 updated continuously. If it is not certain whether the read will be faster than output data rate,
JMF 0:6a929f0d0e58 67 it is recommended to set the BDU bit to ?1?. In this way, after the reading of the lower (upper)
JMF 0:6a929f0d0e58 68 register part, the content of that output register is not updated until the upper (lower) part is
JMF 0:6a929f0d0e58 69 read also.
JMF 0:6a929f0d0e58 70 *
JMF 0:6a929f0d0e58 71 * [1:0] ODR1, ODR0: output data rate selection (see table 17)
JMF 0:6a929f0d0e58 72 */
JMF 0:6a929f0d0e58 73 #define CTRL_REG1 0x20
JMF 0:6a929f0d0e58 74 #define POWER_UP 0x80
JMF 0:6a929f0d0e58 75 #define BDU_SET 0x4
JMF 0:6a929f0d0e58 76 #define ODR0_SET 0x1 // setting sensor reading period 1Hz
JMF 0:6a929f0d0e58 77
JMF 0:6a929f0d0e58 78 #define CTRL_REG2 0x21
JMF 0:6a929f0d0e58 79 #define CTRL_REG3 0x22
JMF 0:6a929f0d0e58 80 #define REG_DEFAULT 0x00
JMF 0:6a929f0d0e58 81
JMF 0:6a929f0d0e58 82 #define STATUS_REG 0x27
JMF 0:6a929f0d0e58 83 #define TEMPERATURE_READY 0x1
JMF 0:6a929f0d0e58 84 #define HUMIDITY_READY 0x2
JMF 0:6a929f0d0e58 85
JMF 0:6a929f0d0e58 86 #define HUMIDITY_L_REG 0x28
JMF 0:6a929f0d0e58 87 #define HUMIDITY_H_REG 0x29
JMF 0:6a929f0d0e58 88 #define TEMP_L_REG 0x2A
JMF 0:6a929f0d0e58 89 #define TEMP_H_REG 0x2B
JMF 0:6a929f0d0e58 90 /*
JMF 0:6a929f0d0e58 91 * calibration registry should be read for temperature and humidity calculation.
JMF 0:6a929f0d0e58 92 * Before the first calculation of temperature and humidity,
JMF 0:6a929f0d0e58 93 * the master reads out the calibration coefficients.
JMF 0:6a929f0d0e58 94 * will do at init phase
JMF 0:6a929f0d0e58 95 */
JMF 0:6a929f0d0e58 96 #define CALIB_START 0x30
JMF 0:6a929f0d0e58 97 #define CALIB_END 0x3F
JMF 0:6a929f0d0e58 98 /*
JMF 0:6a929f0d0e58 99 #define CALIB_T0_DEGC_X8 0x32
JMF 0:6a929f0d0e58 100 #define CALIB_T1_DEGC_X8 0x33
JMF 0:6a929f0d0e58 101 #define CALIB_T1_T0_MSB 0x35
JMF 0:6a929f0d0e58 102 #define CALIB_T0_OUT_L 0x3C
JMF 0:6a929f0d0e58 103 #define CALIB_T0_OUT_H 0x3D
JMF 0:6a929f0d0e58 104 #define CALIB_T1_OUT_L 0x3E
JMF 0:6a929f0d0e58 105 #define CALIB_T1_OUT_H 0x3F
JMF 0:6a929f0d0e58 106 */
JMF 0:6a929f0d0e58 107
JMF 0:6a929f0d0e58 108 #endif