ping jin / Mbed OS DISCO_L475VG_IOT01-Sensors-BSP

Dependencies:   MbedJSONValue wifi-ism43362 LSM6DSL HTS221 MQTT

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include <string>
00003 #include "ISM43362Interface.h"
00004 #include "LSM6DSLSensor.h"
00005 #include "HTS221Sensor.h"
00006 #include "MQTTNetwork.h"
00007 #include "MQTTClient.h"
00008 #include "MQTTmbed.h"
00009 #include "MbedJSONValue.h"
00010 char* hostname = "192.168.22.165";
00011 int port = 1883;
00012 #define QOS      MQTT::QOS0
00013 DigitalOut led(LED3);
00014 int main()
00015 {   
00016     Serial pc(SERIAL_TX, SERIAL_RX);
00017     char exchangebuf[50];
00018     ThisThread::sleep_for(10000);
00019     printf("start!");
00020     DevI2C I2C(PB_11, PB_10);
00021     LSM6DSLSensor Lsm(&I2C, 0xD4);
00022     HTS221Sensor Hts(&I2C, 0xBE);
00023     void* init;
00024     int ret;
00025     ret = Hts.init(init);
00026     if (0 == ret)
00027     {
00028         printf("init_hts succeed!!\n "); 
00029     }
00030     else
00031     {
00032         printf("init_hts failed!!\n");
00033         return -1; 
00034     }
00035     ret = Hts.enable();
00036     if (0 == ret)
00037     {
00038         printf("enable_hts succeed!!\n "); 
00039     }
00040     else
00041     {
00042         printf("enable_hts failed!!\n");
00043         return -1; 
00044     }
00045     ret = Lsm.init(init);
00046     if(0 == ret)
00047     {
00048         printf("init succeed!!\n"); 
00049     }
00050     else
00051     {
00052         printf("init failed!!\n"); 
00053         return -1;
00054     }
00055     ret = Lsm.enable_x();
00056      if(0 == ret)
00057     {
00058         printf("enable succeed!!\n"); 
00059     }
00060     else
00061     {
00062         printf("enable failed!!\n");
00063         return -1; 
00064     }
00065     ret = Lsm.set_x_odr(400.0);
00066      if(0 == ret)
00067     {
00068         printf("set_x_odr succeed!!\n"); 
00069     }
00070     else
00071     {
00072         printf("set_x_odr failed!!\n");
00073         return -1; 
00074     }   
00075     ret = Lsm.set_x_fs(8.0);
00076     if(0 == ret)
00077     {
00078         printf("set_x_fs succeed!!\n"); 
00079     }
00080     else
00081     {
00082         printf("set_x_fs failed!!\n");
00083         return -1; 
00084     }  
00085     ISM43362Interface net(PC_12,PC_11,PC_10,PE_0,PE_8,PE_1,PB_13);
00086     ret = net.connect("Google_2.4G","abcd1234",NSAPI_SECURITY_NONE);
00087     if(0 == ret)
00088     {
00089            printf("connect wifi succeed ip = %s\n",net.get_ip_address());    
00090     }
00091     else
00092     {
00093         printf("connect wifi failed!!!");
00094         return -1;
00095     }
00096     NetworkStack* network = &net;
00097     MQTTNetwork mqttNetwork(network);
00098     MQTT::Client<MQTTNetwork, Countdown> client(mqttNetwork);
00099     ret = mqttNetwork.connect(hostname, port);
00100     client.connect();
00101     if (0 == ret)
00102     {
00103         printf("connect succeed!!\n");
00104     }
00105     else
00106     {
00107         printf("connect failed!!\n");
00108     }  
00109     MQTT::Message message;
00110     message.qos = QOS;
00111     message.retained = false;
00112     message.dup = false;
00113     string str;
00114     while(1)
00115     {       
00116         memset(exchangebuf, 0, sizeof(exchangebuf));
00117         float hum,temp;
00118         ret = Hts.get_temperature(&temp);
00119         if(ret != 0)
00120         {
00121             printf("get_temperature failed!\n"); 
00122         }
00123         MbedJSONValue value;
00124         value["temp"] = (int)temp;
00125         str = value.serialize();
00126         message.payload = (void*)str.c_str();
00127         message.payloadlen = str.size();
00128         int rc = client.publish("temp", message);
00129         printf("rc ==== %d",rc);
00130         ret = Hts.get_humidity(&hum);
00131         if(ret != 0)
00132         {
00133             printf("get_humidity failed!\n"); 
00134         }
00135         printf("hum = %.2f temp = %.2f\n", hum, temp); 
00136         str.clear();
00137         MbedJSONValue value_hum;
00138         value_hum["hum"] = (int)hum;
00139         str = value_hum.serialize();
00140         message.payload = (void*)str.c_str();
00141         message.payloadlen = str.size();
00142         rc = client.publish("hum", message);
00143         printf("rc ==== %d",rc);
00144         str.clear();
00145         int32_t buf[3];
00146         ret = Lsm.get_x_axes(buf);
00147         if(0 == ret)
00148         {
00149             printf("get_x_axes succeed!!\n"); 
00150         }
00151         else
00152         {
00153             printf("get_x_axes failed!!\n");
00154             return -1; 
00155         } 
00156         printf("x = %d y = %d z = %d\n",buf[0]/1000,buf[1]/1000,buf[2]/1000);
00157         MbedJSONValue value_xyz;
00158         value_xyz["x"] = buf[0]/1000;
00159         value_xyz["y"] = buf[1]/1000;
00160         value_xyz["z"] = buf[2]/1000;
00161         str = value_xyz.serialize();
00162         message.payload = (void*)str.c_str();
00163         message.payloadlen = str.size();
00164         rc = client.publish("xyz", message);
00165         ThisThread::sleep_for(10);
00166     }  
00167 }