Nucleo STM32 F401RE , NodeMCU and TCP Conneciton

Dependencies:   BufferedSerial mbed-rtos mbed

Fork of NucleoF401_ESP8622 by Veysel KARADAG

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers wifi.cpp Source File

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