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:
3:8049d7fb27b7
IP Checked

Who changed what in which revision?

UserRevisionLine numberNew contents of line
veyselka 0:515a38e245a4 1 /* ---------------------------------------------------------------------------
veyselka 0:515a38e245a4 2 ** This software is in the public domain, furnished "as is", without technical
veyselka 0:515a38e245a4 3 ** support, and with no warranty, express or implied, as to its usefulness for
veyselka 0:515a38e245a4 4 ** any purpose.
veyselka 0:515a38e245a4 5 **
veyselka 0:515a38e245a4 6 ** main.ccp
veyselka 1:4a50b910342c 7 ** NodeMCU module with STM32F401RE Nucleo Board
veyselka 1:4a50b910342c 8 ** Author: <veyselka@hotmail.com> <v.karadag@gmail.com> Veysel KARADAG
veyselka 1:4a50b910342c 9 ** USB PC for systemout
veyselka 1:4a50b910342c 10 ** NodeMCU is Connected to PA9 , PA10
veyselka 1:4a50b910342c 11 ** PA_6 is Output for RESET NODEMCU
veyselka 1:4a50b910342c 12 ** Thanks sam grove for Buffered Serial Lib.
veyselka 1:4a50b910342c 13 ** USER button is using Interrupt and Toggle LED1 ( For TESTING INTERRUPT ISSUE )
veyselka 0:515a38e245a4 14 ** -------------------------------------------------------------------------*/
veyselka 0:515a38e245a4 15
veyselka 0:515a38e245a4 16
veyselka 0:515a38e245a4 17 #include "mbed.h"
veyselka 0:515a38e245a4 18 #include "rtos.h"
veyselka 1:4a50b910342c 19 #include "BufferedSerial.h"
veyselka 1:4a50b910342c 20 #include "esp8622.h"
veyselka 1:4a50b910342c 21 #include "wifi.h"
veyselka 1:4a50b910342c 22
veyselka 1:4a50b910342c 23
veyselka 1:4a50b910342c 24
veyselka 1:4a50b910342c 25 BufferedSerial pc(USBTX, USBRX);
veyselka 1:4a50b910342c 26
veyselka 1:4a50b910342c 27 InterruptIn button(USER_BUTTON);
veyselka 1:4a50b910342c 28 DigitalOut myled(LED1);
veyselka 1:4a50b910342c 29 DigitalOut wifiRST(PA_6);
veyselka 0:515a38e245a4 30
veyselka 0:515a38e245a4 31
veyselka 0:515a38e245a4 32
veyselka 1:4a50b910342c 33 void WIFI(void const *args);
veyselka 1:4a50b910342c 34 void SYSTEM(void const *args);
veyselka 1:4a50b910342c 35 void button_pressed(void);
veyselka 0:515a38e245a4 36
veyselka 0:515a38e245a4 37
veyselka 0:515a38e245a4 38
veyselka 0:515a38e245a4 39
veyselka 0:515a38e245a4 40 int main()
veyselka 0:515a38e245a4 41 {
veyselka 0:515a38e245a4 42 button.fall(&button_pressed);
veyselka 0:515a38e245a4 43 pc.baud(115200);
veyselka 0:515a38e245a4 44
veyselka 3:8049d7fb27b7 45 printf("\r\nNODEMCU AT COMMAND TEST APP\r\n");
veyselka 3:8049d7fb27b7 46
veyselka 1:4a50b910342c 47
veyselka 3:8049d7fb27b7 48 Thread WIFI_THREAD(WIFI,NULL,osPriorityNormal,1024);
veyselka 3:8049d7fb27b7 49 Thread SYSTEM_THREAD(SYSTEM,NULL,osPriorityNormal,128);
veyselka 3:8049d7fb27b7 50
veyselka 0:515a38e245a4 51
veyselka 0:515a38e245a4 52 while(1);
veyselka 0:515a38e245a4 53
veyselka 0:515a38e245a4 54
veyselka 0:515a38e245a4 55
veyselka 1:4a50b910342c 56 }
veyselka 1:4a50b910342c 57
veyselka 1:4a50b910342c 58 void WIFI(void const *args) {
veyselka 1:4a50b910342c 59
veyselka 1:4a50b910342c 60 int attest=0;
veyselka 1:4a50b910342c 61 int taskcnt=0;
veyselka 1:4a50b910342c 62
veyselka 1:4a50b910342c 63 char my_ip[32];
veyselka 1:4a50b910342c 64 char st_ip[32];
veyselka 1:4a50b910342c 65
veyselka 1:4a50b910342c 66 char data[32];
veyselka 1:4a50b910342c 67
veyselka 0:515a38e245a4 68
veyselka 0:515a38e245a4 69
veyselka 1:4a50b910342c 70 // WIFI MODUL RESTART//
veyselka 1:4a50b910342c 71
veyselka 1:4a50b910342c 72 Thread::wait(1000);
veyselka 1:4a50b910342c 73 wifiRST = 0;
veyselka 1:4a50b910342c 74 Thread::wait(1000);
veyselka 1:4a50b910342c 75 wifiRST = 1;
veyselka 1:4a50b910342c 76
veyselka 1:4a50b910342c 77 while(true) {
veyselka 1:4a50b910342c 78
veyselka 1:4a50b910342c 79 // Read a line from the large rx buffer from rx interrupt routine
veyselka 0:515a38e245a4 80
veyselka 1:4a50b910342c 81 while(attest==0){
veyselka 1:4a50b910342c 82
veyselka 1:4a50b910342c 83 Thread::wait(1000);
veyselka 1:4a50b910342c 84 attest=at_TEST();
veyselka 1:4a50b910342c 85 printf("AT TEST:%d\r\n",attest);
veyselka 1:4a50b910342c 86 Echo_OFF();
veyselka 1:4a50b910342c 87 printf("ECHO OFFd\r\n");
veyselka 1:4a50b910342c 88 }
veyselka 0:515a38e245a4 89
veyselka 1:4a50b910342c 90 while(1){
veyselka 1:4a50b910342c 91
veyselka 1:4a50b910342c 92 Thread::wait(1000);
veyselka 1:4a50b910342c 93 connectRouter("veysel","12345678");
veyselka 1:4a50b910342c 94 Thread::wait(6000);
veyselka 1:4a50b910342c 95
veyselka 1:4a50b910342c 96 read_ip(my_ip,st_ip);
veyselka 1:4a50b910342c 97 printf("MY IP:%s\r\n",my_ip);
veyselka 1:4a50b910342c 98 printf("ST IP:%s\r\n",st_ip);
veyselka 1:4a50b910342c 99
veyselka 1:4a50b910342c 100 int datacnt=0;
veyselka 1:4a50b910342c 101
veyselka 1:4a50b910342c 102 Thread::wait(1000);
veyselka 1:4a50b910342c 103 while(1){
veyselka 1:4a50b910342c 104
veyselka 1:4a50b910342c 105 read_ip(my_ip,st_ip);
veyselka 1:4a50b910342c 106 printf("MY IP:%s\r\n",my_ip);
veyselka 1:4a50b910342c 107 printf("ST IP:%s\r\n",st_ip);
veyselka 1:4a50b910342c 108
veyselka 1:4a50b910342c 109 if( strlen(my_ip)>6 && strlen(my_ip)>6 ){
veyselka 1:4a50b910342c 110
veyselka 1:4a50b910342c 111
veyselka 1:4a50b910342c 112
veyselka 1:4a50b910342c 113 sprintf(data,"Hello World %d\r\n",datacnt++);
veyselka 1:4a50b910342c 114
veyselka 4:a78539de849b 115 if( send_SOC_DATA("192.168.11",28800,data)==1){ // USE YOUR SERVER and IP
veyselka 1:4a50b910342c 116
veyselka 1:4a50b910342c 117 printf("DATA SENDED\r\n");
veyselka 1:4a50b910342c 118
veyselka 1:4a50b910342c 119 }else{
veyselka 1:4a50b910342c 120
veyselka 1:4a50b910342c 121 printf("DATA SEND ERROR\r\n");
veyselka 1:4a50b910342c 122 }
veyselka 0:515a38e245a4 123
veyselka 1:4a50b910342c 124 }
veyselka 1:4a50b910342c 125
veyselka 1:4a50b910342c 126
veyselka 1:4a50b910342c 127
veyselka 1:4a50b910342c 128 Thread::wait(1000);
veyselka 1:4a50b910342c 129 }
veyselka 1:4a50b910342c 130
veyselka 1:4a50b910342c 131
veyselka 1:4a50b910342c 132
veyselka 1:4a50b910342c 133
veyselka 1:4a50b910342c 134 }
veyselka 1:4a50b910342c 135
veyselka 1:4a50b910342c 136
veyselka 1:4a50b910342c 137 printf("Round:%d\r\n",taskcnt++);
veyselka 1:4a50b910342c 138
veyselka 1:4a50b910342c 139
veyselka 1:4a50b910342c 140
veyselka 0:515a38e245a4 141 }
veyselka 0:515a38e245a4 142 }
veyselka 0:515a38e245a4 143
veyselka 0:515a38e245a4 144
veyselka 1:4a50b910342c 145 void SYSTEM(void const *args) {
veyselka 0:515a38e245a4 146
veyselka 0:515a38e245a4 147
veyselka 1:4a50b910342c 148 while(true) {
veyselka 0:515a38e245a4 149
veyselka 1:4a50b910342c 150 Thread::wait(1000);
veyselka 0:515a38e245a4 151
veyselka 0:515a38e245a4 152 }
veyselka 0:515a38e245a4 153 }
veyselka 0:515a38e245a4 154
veyselka 0:515a38e245a4 155
veyselka 0:515a38e245a4 156
veyselka 0:515a38e245a4 157 void button_pressed()
veyselka 0:515a38e245a4 158 {
veyselka 1:4a50b910342c 159
veyselka 1:4a50b910342c 160
veyselka 1:4a50b910342c 161 printf("Button Pressed\r\n");
veyselka 1:4a50b910342c 162 myled = !myled;
veyselka 1:4a50b910342c 163 wifiRST = !wifiRST;
veyselka 0:515a38e245a4 164 }
veyselka 1:4a50b910342c 165