Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: MbedJSONValue wifi-ism43362 LSM6DSL HTS221 MQTT
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 }
Generated on Sun Jul 24 2022 05:14:32 by
1.7.2