Nucleo STM32 F401RE , NodeMCU and TCP Conneciton

Dependencies:   BufferedSerial mbed-rtos mbed

Fork of NucleoF401_ESP8622 by Veysel KARADAG

Connection SCHEMA

/media/uploads/veyselka/schema.jpg

SOCKET DATA

/media/uploads/veyselka/portpeeker.jpg

DETAIL DESCRIPTION

http://veyselkaradag.blogspot.com.tr/

Committer:
veyselka
Date:
Thu Feb 19 10:16:04 2015 +0000
Revision:
4:a78539de849b
Parent:
1:4a50b910342c
IP Checked

Who changed what in which revision?

UserRevisionLine numberNew contents of line
veyselka 1:4a50b910342c 1 /* ---------------------------------------------------------------------------
veyselka 1:4a50b910342c 2 ** This software is in the public domain, furnished "as is", without technical
veyselka 1:4a50b910342c 3 ** support, and with no warranty, express or implied, as to its usefulness for
veyselka 1:4a50b910342c 4 ** any purpose.
veyselka 1:4a50b910342c 5 **
veyselka 1:4a50b910342c 6 ** wifi.ccp
veyselka 1:4a50b910342c 7 ** NodeMCU at Commands
veyselka 1:4a50b910342c 8 ** Author: <veyselka@hotmail.com> <v.karadag@gmail.com> Veysel KARADAG
veyselka 1:4a50b910342c 9 ** -------------------------------------------------------------------------*/
veyselka 1:4a50b910342c 10
veyselka 1:4a50b910342c 11 #include "esp8622.h"
veyselka 1:4a50b910342c 12 #include "mbed.h"
veyselka 1:4a50b910342c 13 #include "wifi.h"
veyselka 1:4a50b910342c 14 #include "rtos.h"
veyselka 1:4a50b910342c 15
veyselka 1:4a50b910342c 16
veyselka 1:4a50b910342c 17 esp8622 esp(PA_9, PA_10,9600);
veyselka 1:4a50b910342c 18
veyselka 1:4a50b910342c 19
veyselka 1:4a50b910342c 20 /*******************************************************************************
veyselka 1:4a50b910342c 21 * Function Name : connectRouter
veyselka 1:4a50b910342c 22 * Description : Connect NodeMCU to WIFI Router / AP
veyselka 1:4a50b910342c 23 * Input : SSID, PASSWORD
veyselka 1:4a50b910342c 24 * Output : NONE
veyselka 1:4a50b910342c 25 * Return : 1-COnnected 0-NOT CONCECTED
veyselka 1:4a50b910342c 26 *******************************************************************************/
veyselka 1:4a50b910342c 27
veyselka 1:4a50b910342c 28 int connectRouter(char *ssid, char *password ){
veyselka 1:4a50b910342c 29
veyselka 1:4a50b910342c 30
veyselka 1:4a50b910342c 31 char cmd[32];
veyselka 1:4a50b910342c 32
veyselka 1:4a50b910342c 33 esp.sendCmd("AT+CWMODE=3\r\n");
veyselka 1:4a50b910342c 34
veyselka 1:4a50b910342c 35 Thread::wait(100);
veyselka 1:4a50b910342c 36
veyselka 1:4a50b910342c 37 sprintf(cmd,"AT+CWJAP=\"%s\",\"%s\"\r\n",ssid,password);
veyselka 1:4a50b910342c 38
veyselka 1:4a50b910342c 39 esp.sendCmd(cmd);
veyselka 1:4a50b910342c 40
veyselka 1:4a50b910342c 41 memset(cmd,0,32);
veyselka 1:4a50b910342c 42 esp.readFromBuffer(cmd,DEFAULT_TIMEOUT,10);
veyselka 1:4a50b910342c 43
veyselka 1:4a50b910342c 44 if(strncmp(cmd,"AT\r\r\n\r\nOK",9)==0)
veyselka 1:4a50b910342c 45 return 1;
veyselka 1:4a50b910342c 46 else
veyselka 1:4a50b910342c 47 return 0;
veyselka 1:4a50b910342c 48
veyselka 1:4a50b910342c 49 }
veyselka 1:4a50b910342c 50
veyselka 1:4a50b910342c 51
veyselka 1:4a50b910342c 52 /*******************************************************************************
veyselka 1:4a50b910342c 53 * Function Name : at_TEST
veyselka 1:4a50b910342c 54 * Description : SEND Modem AT and CHECK RESPONSE
veyselka 1:4a50b910342c 55 * Input : NONE
veyselka 1:4a50b910342c 56 * Output : NONE
veyselka 1:4a50b910342c 57 * Return : 1-TESTED 0-FAILED
veyselka 1:4a50b910342c 58 *******************************************************************************/
veyselka 1:4a50b910342c 59
veyselka 1:4a50b910342c 60 int at_TEST(void){
veyselka 1:4a50b910342c 61
veyselka 1:4a50b910342c 62 return esp.sendATTest();
veyselka 1:4a50b910342c 63
veyselka 1:4a50b910342c 64 }
veyselka 1:4a50b910342c 65
veyselka 1:4a50b910342c 66 /*******************************************************************************
veyselka 1:4a50b910342c 67 * Function Name : read_ip
veyselka 1:4a50b910342c 68 * Description : READ MODEM STA IP and, IP
veyselka 1:4a50b910342c 69 * Input : IP & STA_IP
veyselka 1:4a50b910342c 70 * Output : IPi STA_IP
veyselka 1:4a50b910342c 71 * Return : NONE always 1
veyselka 1:4a50b910342c 72 *******************************************************************************/
veyselka 1:4a50b910342c 73 int read_ip(char *ip , char *sta_ip ){
veyselka 1:4a50b910342c 74
veyselka 1:4a50b910342c 75 char rx_buffer[64];
veyselka 1:4a50b910342c 76 char *token;
veyselka 1:4a50b910342c 77
veyselka 1:4a50b910342c 78
veyselka 1:4a50b910342c 79 memset(rx_buffer,0,64);
veyselka 1:4a50b910342c 80
veyselka 1:4a50b910342c 81
veyselka 1:4a50b910342c 82 esp.sendCmd("AT+CIFSR\r\n");
veyselka 1:4a50b910342c 83
veyselka 1:4a50b910342c 84 esp.readFromBuffer(rx_buffer,DEFAULT_TIMEOUT,64);
veyselka 1:4a50b910342c 85
veyselka 1:4a50b910342c 86 printf("CMD:%s:\r\n",rx_buffer);
veyselka 1:4a50b910342c 87
veyselka 1:4a50b910342c 88 token = strtok (rx_buffer,"\n");
veyselka 1:4a50b910342c 89 sprintf(ip,"%s",token);
veyselka 1:4a50b910342c 90 remove_all_chars(ip,'\r');
veyselka 1:4a50b910342c 91
veyselka 1:4a50b910342c 92 token = strtok (NULL,"\n");
veyselka 1:4a50b910342c 93 sprintf(sta_ip,"%s",token);
veyselka 1:4a50b910342c 94 remove_all_chars(sta_ip,'\r');
veyselka 1:4a50b910342c 95
veyselka 1:4a50b910342c 96 return 1;
veyselka 1:4a50b910342c 97 }
veyselka 1:4a50b910342c 98
veyselka 1:4a50b910342c 99
veyselka 1:4a50b910342c 100
veyselka 1:4a50b910342c 101 /*******************************************************************************
veyselka 1:4a50b910342c 102 * Function Name : remove_all_chars
veyselka 1:4a50b910342c 103 * Description : remove char c in string..
veyselka 1:4a50b910342c 104 * Input : Data
veyselka 1:4a50b910342c 105 * Output : None
veyselka 1:4a50b910342c 106 * Return : NONE
veyselka 1:4a50b910342c 107 *******************************************************************************/
veyselka 1:4a50b910342c 108
veyselka 1:4a50b910342c 109 void remove_all_chars(char* str, char c) {
veyselka 1:4a50b910342c 110 char *pr = str, *pw = str;
veyselka 1:4a50b910342c 111 while (*pr) {
veyselka 1:4a50b910342c 112 *pw = *pr++;
veyselka 1:4a50b910342c 113 pw += (*pw != c);
veyselka 1:4a50b910342c 114 }
veyselka 1:4a50b910342c 115 *pw = '\0';
veyselka 1:4a50b910342c 116 }
veyselka 1:4a50b910342c 117
veyselka 1:4a50b910342c 118 /*******************************************************************************
veyselka 1:4a50b910342c 119 * Function Name : send_SOC_DATA
veyselka 1:4a50b910342c 120 * Description : Connect SERVER SOCKET and SEND DATA
veyselka 1:4a50b910342c 121 * Input : SERVER IP, SERVER PORT, DATA
veyselka 1:4a50b910342c 122 * Output : NONE
veyselka 1:4a50b910342c 123 * Return : 1- SENDED 0- FAILED
veyselka 1:4a50b910342c 124 *******************************************************************************/
veyselka 1:4a50b910342c 125 int send_SOC_DATA(char *ip,int soc , char *data ){
veyselka 1:4a50b910342c 126
veyselka 1:4a50b910342c 127 char cmd[128];
veyselka 1:4a50b910342c 128 int len;
veyselka 1:4a50b910342c 129
veyselka 1:4a50b910342c 130 sprintf(cmd,"AT+CIPSTART=\"TCP\",\"%s\",%d\r\n",ip,soc);
veyselka 1:4a50b910342c 131 printf("CMD:%s:\r\n",cmd);
veyselka 1:4a50b910342c 132
veyselka 1:4a50b910342c 133 esp.sendCmd(cmd);
veyselka 1:4a50b910342c 134 memset(cmd,0,128);
veyselka 1:4a50b910342c 135 esp.readFromBuffer(cmd,DEFAULT_TIMEOUT,10);
veyselka 1:4a50b910342c 136
veyselka 1:4a50b910342c 137
veyselka 1:4a50b910342c 138 if( strncmp(cmd,"\r\nOK",4)!=0){
veyselka 1:4a50b910342c 139
veyselka 1:4a50b910342c 140 if(strncmp(cmd,"ALREAY",6)!=0 )
veyselka 1:4a50b910342c 141 return 0;
veyselka 1:4a50b910342c 142 }
veyselka 1:4a50b910342c 143
veyselka 1:4a50b910342c 144 len=strlen(data);
veyselka 1:4a50b910342c 145 memset(cmd,0,128);
veyselka 1:4a50b910342c 146 sprintf(cmd,"AT+CIPSEND=%d\r\n",len);
veyselka 1:4a50b910342c 147 printf("CMD:%s:\r\n",cmd);
veyselka 1:4a50b910342c 148
veyselka 1:4a50b910342c 149 esp.sendCmd(cmd);
veyselka 1:4a50b910342c 150 memset(cmd,0,128);
veyselka 1:4a50b910342c 151 esp.readFromBuffer(cmd,DEFAULT_TIMEOUT,1);
veyselka 1:4a50b910342c 152
veyselka 1:4a50b910342c 153 if(strncmp(cmd,">",1)!=0)
veyselka 1:4a50b910342c 154 return 0;
veyselka 1:4a50b910342c 155 esp.sendCmd(data);
veyselka 1:4a50b910342c 156
veyselka 1:4a50b910342c 157 memset(cmd,0,128);
veyselka 1:4a50b910342c 158 esp.readFromBuffer(cmd,DEFAULT_TIMEOUT,6);
veyselka 1:4a50b910342c 159
veyselka 1:4a50b910342c 160 if(strncmp(cmd,"\r\nSEND OK",9)!=0)
veyselka 1:4a50b910342c 161 return 1;
veyselka 1:4a50b910342c 162
veyselka 1:4a50b910342c 163 return 0;
veyselka 1:4a50b910342c 164 }
veyselka 1:4a50b910342c 165
veyselka 1:4a50b910342c 166
veyselka 1:4a50b910342c 167
veyselka 1:4a50b910342c 168 /*******************************************************************************
veyselka 1:4a50b910342c 169 * Function Name : Echo_OFF
veyselka 1:4a50b910342c 170 * Description : MODEM ECHO OPTION OFF
veyselka 1:4a50b910342c 171 * Input : NONE
veyselka 1:4a50b910342c 172 * Output : NONE
veyselka 1:4a50b910342c 173 * Return : NONE
veyselka 1:4a50b910342c 174 *******************************************************************************/
veyselka 1:4a50b910342c 175
veyselka 1:4a50b910342c 176 void Echo_OFF(void){
veyselka 1:4a50b910342c 177
veyselka 1:4a50b910342c 178 esp.sendCmd("ATE0\r\n");
veyselka 1:4a50b910342c 179
veyselka 1:4a50b910342c 180
veyselka 1:4a50b910342c 181 }
veyselka 1:4a50b910342c 182