Nucleo STM32 F401RE , NodeMCU and TCP Conneciton
Dependencies: BufferedSerial mbed-rtos mbed
Fork of NucleoF401_ESP8622 by
wifi.cpp
00001 /* --------------------------------------------------------------------------- 00002 ** This software is in the public domain, furnished "as is", without technical 00003 ** support, and with no warranty, express or implied, as to its usefulness for 00004 ** any purpose. 00005 ** 00006 ** wifi.ccp 00007 ** NodeMCU at Commands 00008 ** Author: <veyselka@hotmail.com> <v.karadag@gmail.com> Veysel KARADAG 00009 ** -------------------------------------------------------------------------*/ 00010 00011 #include "esp8622.h" 00012 #include "mbed.h" 00013 #include "wifi.h" 00014 #include "rtos.h" 00015 00016 00017 esp8622 esp(PA_9, PA_10,9600); 00018 00019 00020 /******************************************************************************* 00021 * Function Name : connectRouter 00022 * Description : Connect NodeMCU to WIFI Router / AP 00023 * Input : SSID, PASSWORD 00024 * Output : NONE 00025 * Return : 1-COnnected 0-NOT CONCECTED 00026 *******************************************************************************/ 00027 00028 int connectRouter(char *ssid, char *password ){ 00029 00030 00031 char cmd[32]; 00032 00033 esp.sendCmd("AT+CWMODE=3\r\n"); 00034 00035 Thread::wait(100); 00036 00037 sprintf(cmd,"AT+CWJAP=\"%s\",\"%s\"\r\n",ssid,password); 00038 00039 esp.sendCmd(cmd); 00040 00041 memset(cmd,0,32); 00042 esp.readFromBuffer(cmd,DEFAULT_TIMEOUT,10); 00043 00044 if(strncmp(cmd,"AT\r\r\n\r\nOK",9)==0) 00045 return 1; 00046 else 00047 return 0; 00048 00049 } 00050 00051 00052 /******************************************************************************* 00053 * Function Name : at_TEST 00054 * Description : SEND Modem AT and CHECK RESPONSE 00055 * Input : NONE 00056 * Output : NONE 00057 * Return : 1-TESTED 0-FAILED 00058 *******************************************************************************/ 00059 00060 int at_TEST(void){ 00061 00062 return esp.sendATTest(); 00063 00064 } 00065 00066 /******************************************************************************* 00067 * Function Name : read_ip 00068 * Description : READ MODEM STA IP and, IP 00069 * Input : IP & STA_IP 00070 * Output : IPi STA_IP 00071 * Return : NONE always 1 00072 *******************************************************************************/ 00073 int read_ip(char *ip , char *sta_ip ){ 00074 00075 char rx_buffer[64]; 00076 char *token; 00077 00078 00079 memset(rx_buffer,0,64); 00080 00081 00082 esp.sendCmd("AT+CIFSR\r\n"); 00083 00084 esp.readFromBuffer(rx_buffer,DEFAULT_TIMEOUT,64); 00085 00086 printf("CMD:%s:\r\n",rx_buffer); 00087 00088 token = strtok (rx_buffer,"\n"); 00089 sprintf(ip,"%s",token); 00090 remove_all_chars(ip,'\r'); 00091 00092 token = strtok (NULL,"\n"); 00093 sprintf(sta_ip,"%s",token); 00094 remove_all_chars(sta_ip,'\r'); 00095 00096 return 1; 00097 } 00098 00099 00100 00101 /******************************************************************************* 00102 * Function Name : remove_all_chars 00103 * Description : remove char c in string.. 00104 * Input : Data 00105 * Output : None 00106 * Return : NONE 00107 *******************************************************************************/ 00108 00109 void remove_all_chars(char* str, char c) { 00110 char *pr = str, *pw = str; 00111 while (*pr) { 00112 *pw = *pr++; 00113 pw += (*pw != c); 00114 } 00115 *pw = '\0'; 00116 } 00117 00118 /******************************************************************************* 00119 * Function Name : send_SOC_DATA 00120 * Description : Connect SERVER SOCKET and SEND DATA 00121 * Input : SERVER IP, SERVER PORT, DATA 00122 * Output : NONE 00123 * Return : 1- SENDED 0- FAILED 00124 *******************************************************************************/ 00125 int send_SOC_DATA(char *ip,int soc , char *data ){ 00126 00127 char cmd[128]; 00128 int len; 00129 00130 sprintf(cmd,"AT+CIPSTART=\"TCP\",\"%s\",%d\r\n",ip,soc); 00131 printf("CMD:%s:\r\n",cmd); 00132 00133 esp.sendCmd(cmd); 00134 memset(cmd,0,128); 00135 esp.readFromBuffer(cmd,DEFAULT_TIMEOUT,10); 00136 00137 00138 if( strncmp(cmd,"\r\nOK",4)!=0){ 00139 00140 if(strncmp(cmd,"ALREAY",6)!=0 ) 00141 return 0; 00142 } 00143 00144 len=strlen(data); 00145 memset(cmd,0,128); 00146 sprintf(cmd,"AT+CIPSEND=%d\r\n",len); 00147 printf("CMD:%s:\r\n",cmd); 00148 00149 esp.sendCmd(cmd); 00150 memset(cmd,0,128); 00151 esp.readFromBuffer(cmd,DEFAULT_TIMEOUT,1); 00152 00153 if(strncmp(cmd,">",1)!=0) 00154 return 0; 00155 esp.sendCmd(data); 00156 00157 memset(cmd,0,128); 00158 esp.readFromBuffer(cmd,DEFAULT_TIMEOUT,6); 00159 00160 if(strncmp(cmd,"\r\nSEND OK",9)!=0) 00161 return 1; 00162 00163 return 0; 00164 } 00165 00166 00167 00168 /******************************************************************************* 00169 * Function Name : Echo_OFF 00170 * Description : MODEM ECHO OPTION OFF 00171 * Input : NONE 00172 * Output : NONE 00173 * Return : NONE 00174 *******************************************************************************/ 00175 00176 void Echo_OFF(void){ 00177 00178 esp.sendCmd("ATE0\r\n"); 00179 00180 00181 } 00182
Generated on Thu Jul 14 2022 01:59:02 by 1.7.2