a
Dependencies: stm32l475e_iot01_gps BSP_B-L475E-IOT01
main.cpp
00001 /* WiFi Example 00002 * Copyright (c) 2018 ARM Limited 00003 * 00004 * Licensed under the Apache License, Version 2.0 (the "License"); 00005 * you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 00017 00018 00019 #include "ThisThread.h" 00020 #include "mbed.h" 00021 #include "TCPSocket.h" 00022 //#include "TCPServer.h" 00023 #include "stm32l475e_iot01_accelero.h" 00024 #include "stm32l475e_iot01_gps.h" 00025 00026 00027 #define WIFI_IDW0XX1 2 00028 00029 #if (defined(TARGET_DISCO_L475VG_IOT01A) || defined(TARGET_DISCO_F413ZH)) 00030 #include "ISM43362Interface.h" 00031 ISM43362Interface wifi( false); 00032 00033 #else // External WiFi modules 00034 00035 #if MBED_CONF_APP_WIFI_SHIELD == WIFI_IDW0XX1 00036 #include "SpwfSAInterface.h" 00037 SpwfSAInterface wifi(MBED_CONF_APP_WIFI_TX, MBED_CONF_APP_WIFI_RX); 00038 #endif // MBED_CONF_APP_WIFI_SHIELD == WIFI_IDW0XX1 00039 00040 #endif 00041 00042 #define SCALE_MULTIPLIER 0.004 00043 00044 00045 GPS* gps=new GPS(D1,D0); 00046 00047 const char *sec2str(nsapi_security_t sec) 00048 { 00049 switch (sec) { 00050 case NSAPI_SECURITY_NONE: 00051 return "None"; 00052 case NSAPI_SECURITY_WEP: 00053 return "WEP"; 00054 case NSAPI_SECURITY_WPA: 00055 return "WPA"; 00056 case NSAPI_SECURITY_WPA2: 00057 return "WPA2"; 00058 case NSAPI_SECURITY_WPA_WPA2: 00059 return "WPA/WPA2"; 00060 case NSAPI_SECURITY_UNKNOWN: 00061 default: 00062 return "Unknown"; 00063 } 00064 } 00065 00066 int scan_demo(WiFiInterface *wifi) 00067 { 00068 WiFiAccessPoint *ap; 00069 00070 printf("Scan:\n"); 00071 00072 int count = wifi->scan(NULL,0); 00073 printf("%d networks available.\n", count); 00074 00075 /* Limit number of network arbitrary to 15 */ 00076 count = count < 15 ? count : 15; 00077 00078 ap = new WiFiAccessPoint[count]; 00079 count = wifi->scan(ap, count); 00080 for (int i = 0; i < count; i++) 00081 { 00082 printf("Network: %s secured: %s BSSID: %hhX:%hhX:%hhX:%hhx:%hhx:%hhx RSSI: %hhd Ch: %hhd\n", ap[i].get_ssid(), 00083 sec2str(ap[i].get_security()), ap[i].get_bssid()[0], ap[i].get_bssid()[1], ap[i].get_bssid()[2], 00084 ap[i].get_bssid()[3], ap[i].get_bssid()[4], ap[i].get_bssid()[5], ap[i].get_rssi(), ap[i].get_channel()); 00085 } 00086 00087 delete[] ap; 00088 return count; 00089 } 00090 00091 void acc_server(NetworkInterface *net) 00092 { 00093 /* 00094 TCPServer socket; 00095 TCPSocket* client;*/ 00096 TCPSocket socket; 00097 SocketAddress addr("192.168.43.163",65431); 00098 nsapi_error_t response; 00099 00100 int16_t pDataXYZ[3] = {0}; 00101 char recv_buffer[9]; 00102 char acc_json[64]; 00103 int sample_num = 0; 00104 00105 //analyze 00106 float bufX[80], bufY[80], bufZ[80]; 00107 int saX[80]={0}, saY[80]={0}, saZ[80]={0}; 00108 int fuzX[3]={80,0,0}, fuzY[3]={80,0,0}, fuzZ[3]={80,0,0}; 00109 int stX=0, stY=0, stZ=0; 00110 int ptr=0; 00111 int i=0; 00112 /* 00113 for(i=0;i<80;i++){ 00114 saX[i]=0; 00115 saY[i]=0; 00116 saZ[i]=0; 00117 } 00118 */ 00119 00120 // Open a socket on the network interface, and create a TCP connection to addr 00121 response = socket.open(net); 00122 if (0 != response){ 00123 printf("Error opening: %d\n", response); 00124 } 00125 response = socket.connect(addr); 00126 00127 if (0 != response){ 00128 printf("Error connecting: %d\n", response); 00129 } 00130 00131 00132 socket.set_blocking(1); 00133 while (1){ 00134 ptr=sample_num%80; 00135 ++sample_num; 00136 BSP_ACCELERO_AccGetXYZ(pDataXYZ); 00137 float x = pDataXYZ[0]*SCALE_MULTIPLIER, y = pDataXYZ[1]*SCALE_MULTIPLIER, z = pDataXYZ[2]*SCALE_MULTIPLIER; 00138 int len; 00139 00140 bufX[ptr]=x; 00141 bufY[ptr]=y; 00142 bufZ[ptr]=z; 00143 00144 fuzX[saX[ptr]]-=1; 00145 if(x>1){ 00146 saX[ptr]=2; 00147 fuzX[2]+=1; 00148 }else if(x>-1){ 00149 saX[ptr]=1; 00150 fuzX[1]+=1; 00151 }else{ 00152 saX[ptr]=0; 00153 fuzX[0]+=1; 00154 } 00155 fuzY[saX[ptr]]-=1; 00156 if(y>1){ 00157 saY[ptr]=2; 00158 fuzY[2]+=1; 00159 }else if(y>-1){ 00160 saY[ptr]=1; 00161 fuzY[1]+=1; 00162 }else{ 00163 saY[ptr]=0; 00164 fuzY[0]+=1; 00165 } 00166 fuzZ[saX[ptr]]-=1; 00167 if(z>5){ 00168 saZ[ptr]=2; 00169 fuzZ[2]+=1; 00170 }else if(z>3){ 00171 saZ[ptr]=1; 00172 fuzZ[1]+=1; 00173 }else{ 00174 saZ[ptr]=0; 00175 fuzZ[0]+=1; 00176 } 00177 00178 //fuzzy 00179 //X 00180 if(fuzX[2]>64 || fuzX[0]>64){ 00181 if(stX!=3){ 00182 len = sprintf(acc_json,"x3\n"); 00183 response = socket.send(acc_json,len); 00184 int v=gps->sample(); 00185 if(v){len=sprintf(acc_json,"%f,%f",gps->longitude,gps->latitude);} 00186 else{len=sprintf(acc_json,"N");} 00187 response = socket.send(acc_json,len); 00188 stX=3; 00189 } 00190 }else if((fuzX[2]>32 || fuzX[0]>32) && fuzX[1]>32){ 00191 if(stX!=2){ 00192 len = sprintf(acc_json,"x2\n"); 00193 response = socket.send(acc_json,len); 00194 int v=gps->sample(); 00195 if(v){len=sprintf(acc_json,"%f,%f",gps->longitude,gps->latitude);} 00196 else{len=sprintf(acc_json,"N");} 00197 response = socket.send(acc_json,len); 00198 stX=2; 00199 } 00200 }else if(fuzX[2]>32 && fuzX[0]>32){ 00201 if(stX!=1){ 00202 len = sprintf(acc_json,"x1\n"); 00203 response = socket.send(acc_json,len); 00204 int v=gps->sample(); 00205 if(v){len=sprintf(acc_json,"%f,%f",gps->longitude,gps->latitude);} 00206 else{len=sprintf(acc_json,"N");} 00207 response = socket.send(acc_json,len); 00208 stX=1; 00209 } 00210 }else if(fuzX[1]>64){ 00211 stX=0; 00212 } 00213 //Y 00214 if(fuzY[2]>64 || fuzY[0]>64){ 00215 if(stY!=3){ 00216 len = sprintf(acc_json,"y3\n"); 00217 response = socket.send(acc_json,len); 00218 int v=gps->sample(); 00219 if(v){len=sprintf(acc_json,"%f,%f",gps->longitude,gps->latitude);} 00220 else{len=sprintf(acc_json,"N");} 00221 response = socket.send(acc_json,len); 00222 stY=3; 00223 } 00224 }else if((fuzY[2]>32 || fuzY[0]>32) && fuzY[1]>32){ 00225 if(stY!=2){ 00226 len = sprintf(acc_json,"y2\n"); 00227 response = socket.send(acc_json,len); 00228 int v=gps->sample(); 00229 if(v){len=sprintf(acc_json,"%f,%f",gps->longitude,gps->latitude);} 00230 else{len=sprintf(acc_json,"N");} 00231 response = socket.send(acc_json,len); 00232 stY=2; 00233 } 00234 }else if(fuzY[2]>32 && fuzY[0]>32){ 00235 if(stY!=1){ 00236 len = sprintf(acc_json,"y1\n"); 00237 response = socket.send(acc_json,len); 00238 int v=gps->sample(); 00239 if(v){len=sprintf(acc_json,"%f,%f",gps->longitude,gps->latitude);} 00240 else{len=sprintf(acc_json,"N");} 00241 response = socket.send(acc_json,len); 00242 stY=1; 00243 } 00244 }else if(fuzY[1]>64){ 00245 stY=0; 00246 } 00247 //Z 00248 if(fuzZ[2]>64 || fuzZ[0]>64){ 00249 if(stZ!=3){ 00250 len = sprintf(acc_json,"z3\n"); 00251 response = socket.send(acc_json,len); 00252 int v=gps->sample(); 00253 if(v){len=sprintf(acc_json,"%f,%f",gps->longitude,gps->latitude);} 00254 else{len=sprintf(acc_json,"N");} 00255 response = socket.send(acc_json,len); 00256 stZ=3; 00257 } 00258 }else if((fuzZ[2]>32 || fuzZ[0]>32) && fuzZ[1]>32){ 00259 if(stZ!=2){ 00260 len = sprintf(acc_json,"z2\n"); 00261 response = socket.send(acc_json,len); 00262 int v=gps->sample(); 00263 if(v){len=sprintf(acc_json,"%f,%f",gps->longitude,gps->latitude);} 00264 else{len=sprintf(acc_json,"N");} 00265 response = socket.send(acc_json,len); 00266 stZ=2; 00267 } 00268 }else if(fuzZ[2]>32 && fuzZ[0]>32){ 00269 if(stZ!=1){ 00270 len = sprintf(acc_json,"z1\n"); 00271 response = socket.send(acc_json,len); 00272 int v=gps->sample(); 00273 if(v){len=sprintf(acc_json,"%f,%f",gps->longitude,gps->latitude);} 00274 else{len=sprintf(acc_json,"N");} 00275 response = socket.send(acc_json,len); 00276 stZ=1; 00277 } 00278 }else if(fuzZ[1]>64){ 00279 stZ=0; 00280 } 00281 00282 //int len = sprintf(acc_json,"%f,%f,%f,%d,%d\n",(float)((int)(x*10000))/10000, 00283 // (float)((int)(y*10000))/10000, (float)((int)(z*10000))/10000, sample_num, ptr); 00284 00285 00286 //response = socket.send(acc_json,len); 00287 if (0 >= response){ 00288 printf("Error seding: %d\n", response); 00289 } 00290 ThisThread::sleep_for(0.1); 00291 00292 00293 } 00294 00295 00296 socket.close(); 00297 } 00298 00299 int main() 00300 { 00301 00302 printf("\nConnecting to %s...\n", MBED_CONF_APP_WIFI_SSID); 00303 //wifi.set_network("192.168.130.105","255.255.255.0","192.168.130.254"); 00304 int ret = wifi.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2); 00305 if (ret != 0) { 00306 printf("\nConnection error\n"); 00307 return -1; 00308 } 00309 00310 printf("Success\n\n"); 00311 printf("MAC: %s\n", wifi.get_mac_address()); 00312 printf("IP: %s\n", wifi.get_ip_address()); 00313 printf("Netmask: %s\n", wifi.get_netmask()); 00314 printf("Gateway: %s\n", wifi.get_gateway()); 00315 printf("RSSI: %d\n\n", wifi.get_rssi()); 00316 00317 00318 00319 BSP_ACCELERO_Init(); 00320 00321 00322 acc_server(&wifi); 00323 00324 00325 00326 }
Generated on Mon Sep 5 2022 15:37:26 by
1.7.2