Nucleo STM32 F401RE , NodeMCU and TCP Conneciton
Dependencies: BufferedSerial mbed-rtos mbed
Fork of NucleoF401_ESP8622 by
Connection SCHEMA
SOCKET DATA
DETAIL DESCRIPTION
http://veyselkaradag.blogspot.com.tr/
wifi.cpp@4:a78539de849b, 2015-02-19 (annotated)
- 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?
User | Revision | Line number | New 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 |