final

Dependencies:   DISCO_L475VG_IOT01A_wifi

Committer:
ascension2
Date:
Tue Aug 20 09:30:12 2019 +0000
Revision:
0:dc1150daf908
Child:
1:98939393d0db
22;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ascension2 0:dc1150daf908 1 #include "mbed.h"
ascension2 0:dc1150daf908 2 #include "wifi.h"
ascension2 0:dc1150daf908 3 #include "Motorcontrol.h"
ascension2 0:dc1150daf908 4 #include "datacheck.h"
ascension2 0:dc1150daf908 5 /*------------------------------------------------------------------------------
ascension2 0:dc1150daf908 6 Hyperterminal settings: 115200 bauds, 8-bit data, no parity
ascension2 0:dc1150daf908 7
ascension2 0:dc1150daf908 8 This example
ascension2 0:dc1150daf908 9 - connects to a wifi network (SSID & PWD to set in mbed_app.json)
ascension2 0:dc1150daf908 10 - Connects to a TCP server (set the address in RemoteIP)
ascension2 0:dc1150daf908 11 - Sends "Hello" to the server when data is received
ascension2 0:dc1150daf908 12
ascension2 0:dc1150daf908 13 This example uses SPI3 ( PE_0 PC_10 PC_12 PC_11), wifi_wakeup pin (PB_13),
ascension2 0:dc1150daf908 14 wifi_dataready pin (PE_1), wifi reset pin (PE_8)
ascension2 0:dc1150daf908 15 ------------------------------------------------------------------------------*/
ascension2 0:dc1150daf908 16
ascension2 0:dc1150daf908 17 /* Private defines -----------------------------------------------------------*/
ascension2 0:dc1150daf908 18 #define WIFI_WRITE_TIMEOUT 10000
ascension2 0:dc1150daf908 19 #define WIFI_READ_TIMEOUT 10000
ascension2 0:dc1150daf908 20 #define CONNECTION_TRIAL_MAX 10
ascension2 0:dc1150daf908 21
ascension2 0:dc1150daf908 22 /* Private typedef------------------------------------------------------------*/
ascension2 0:dc1150daf908 23 /* Private macro -------------------------------------------------------------*/
ascension2 0:dc1150daf908 24 /* Private variables ---------------------------------------------------------*/
ascension2 0:dc1150daf908 25 Serial pc(SERIAL_TX, SERIAL_RX);
ascension2 0:dc1150daf908 26 uint8_t RemoteIP[] = {MBED_CONF_APP_SERVER_IP_1,MBED_CONF_APP_SERVER_IP_2,MBED_CONF_APP_SERVER_IP_3, MBED_CONF_APP_SERVER_IP_4};
ascension2 0:dc1150daf908 27 uint8_t RxData [500];
ascension2 0:dc1150daf908 28 char* modulename;
ascension2 0:dc1150daf908 29 uint8_t TxData[100] = "011000255255255\n";
ascension2 0:dc1150daf908 30 uint16_t RxLen;
ascension2 0:dc1150daf908 31 uint8_t MAC_Addr[6];
ascension2 0:dc1150daf908 32 uint8_t IP_Addr[4];
ascension2 0:dc1150daf908 33
ascension2 0:dc1150daf908 34
ascension2 0:dc1150daf908 35 void update_state();
ascension2 0:dc1150daf908 36
ascension2 0:dc1150daf908 37 Ticker tick;
ascension2 0:dc1150daf908 38
ascension2 0:dc1150daf908 39 int wifi_connect()
ascension2 0:dc1150daf908 40 {
ascension2 0:dc1150daf908 41 int32_t Socket = -1;
ascension2 0:dc1150daf908 42 uint16_t Datalen;
ascension2 0:dc1150daf908 43 uint16_t Trials = CONNECTION_TRIAL_MAX;
ascension2 0:dc1150daf908 44
ascension2 0:dc1150daf908 45 pc.baud(115200);
ascension2 0:dc1150daf908 46
ascension2 0:dc1150daf908 47 printf("\n");
ascension2 0:dc1150daf908 48 printf("************************************************************\n");
ascension2 0:dc1150daf908 49 printf("*** STM32 IoT Discovery kit for STM32L475 MCU ***\n");
ascension2 0:dc1150daf908 50 printf("*** WIFI Module in TCP Client mode demonstration ***\n\n");
ascension2 0:dc1150daf908 51 printf("*** TCP Client Instructions :\n");
ascension2 0:dc1150daf908 52 printf("*** 1- Make sure your Phone is connected to the same network that\n");
ascension2 0:dc1150daf908 53 printf("*** you configured using the Configuration Access Point.\n");
ascension2 0:dc1150daf908 54 printf("*** 2- Create a server by using the android application TCP Server\n");
ascension2 0:dc1150daf908 55 printf("*** with port(8002).\n");
ascension2 0:dc1150daf908 56 printf("*** 3- Get the Network Name or IP Address of your phone from the step 2.\n\n");
ascension2 0:dc1150daf908 57 printf("************************************************************\n");
ascension2 0:dc1150daf908 58
ascension2 0:dc1150daf908 59 /*Initialize WIFI module */
ascension2 0:dc1150daf908 60 if(WIFI_Init() == WIFI_STATUS_OK) {
ascension2 0:dc1150daf908 61 printf("> WIFI Module Initialized.\n");
ascension2 0:dc1150daf908 62 if(WIFI_GetMAC_Address(MAC_Addr) == WIFI_STATUS_OK) {
ascension2 0:dc1150daf908 63 printf("> es-wifi module MAC Address : %X:%X:%X:%X:%X:%X\n",
ascension2 0:dc1150daf908 64 MAC_Addr[0],
ascension2 0:dc1150daf908 65 MAC_Addr[1],
ascension2 0:dc1150daf908 66 MAC_Addr[2],
ascension2 0:dc1150daf908 67 MAC_Addr[3],
ascension2 0:dc1150daf908 68 MAC_Addr[4],
ascension2 0:dc1150daf908 69 MAC_Addr[5]);
ascension2 0:dc1150daf908 70 } else {
ascension2 0:dc1150daf908 71 printf("> ERROR : CANNOT get MAC address\n");
ascension2 0:dc1150daf908 72 }
ascension2 0:dc1150daf908 73
ascension2 0:dc1150daf908 74 if( WIFI_Connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, WIFI_ECN_WPA_PSK)== WIFI_STATUS_OK) {
ascension2 0:dc1150daf908 75
ascension2 0:dc1150daf908 76 printf("> es-wifi module connected \n");
ascension2 0:dc1150daf908 77 if(WIFI_GetIP_Address(IP_Addr) == WIFI_STATUS_OK) {
ascension2 0:dc1150daf908 78 printf("> es-wifi module got IP Address : %d.%d.%d.%d\n",
ascension2 0:dc1150daf908 79 IP_Addr[0],
ascension2 0:dc1150daf908 80 IP_Addr[1],
ascension2 0:dc1150daf908 81 IP_Addr[2],
ascension2 0:dc1150daf908 82 IP_Addr[3]);
ascension2 0:dc1150daf908 83
ascension2 0:dc1150daf908 84 printf("> Trying to connect to Server: %d.%d.%d.%d:8002 ...\n",
ascension2 0:dc1150daf908 85 RemoteIP[0],
ascension2 0:dc1150daf908 86 RemoteIP[1],
ascension2 0:dc1150daf908 87 RemoteIP[2],
ascension2 0:dc1150daf908 88 RemoteIP[3]);
ascension2 0:dc1150daf908 89
ascension2 0:dc1150daf908 90 while (Trials--){
ascension2 0:dc1150daf908 91 if( WIFI_OpenClientConnection(0, WIFI_TCP_PROTOCOL, "TCP_CLIENT", RemoteIP, 8002, 0) == WIFI_STATUS_OK){
ascension2 0:dc1150daf908 92 //if( WIFI_OpenClientConnection(0, WIFI_TCP_PROTOCOL, "TCP_CLIENT", RemoteIP, 80, 0) == WIFI_STATUS_OK){
ascension2 0:dc1150daf908 93 printf("> TCP Connection opened successfully.\n");
ascension2 0:dc1150daf908 94 Socket = 0;
ascension2 0:dc1150daf908 95 }
ascension2 0:dc1150daf908 96 }
ascension2 0:dc1150daf908 97 if(!Trials) {
ascension2 0:dc1150daf908 98 printf("> ERROR : Cannot open Connection\n");
ascension2 0:dc1150daf908 99 }
ascension2 0:dc1150daf908 100 } else {
ascension2 0:dc1150daf908 101 printf("> ERROR : es-wifi module CANNOT get IP address\n");
ascension2 0:dc1150daf908 102 }
ascension2 0:dc1150daf908 103 } else {
ascension2 0:dc1150daf908 104 printf("> ERROR : es-wifi module NOT connected\n");
ascension2 0:dc1150daf908 105 }
ascension2 0:dc1150daf908 106 } else {
ascension2 0:dc1150daf908 107 printf("> ERROR : WIFI Module cannot be initialized.\n");
ascension2 0:dc1150daf908 108 }
ascension2 0:dc1150daf908 109
ascension2 0:dc1150daf908 110 while(1){
ascension2 0:dc1150daf908 111 tick.attach(&update_state,5);
ascension2 0:dc1150daf908 112 if(Socket != -1) {
ascension2 0:dc1150daf908 113 if(WIFI_ReceiveData(Socket, RxData, sizeof(RxData), &Datalen, WIFI_READ_TIMEOUT) == WIFI_STATUS_OK){
ascension2 0:dc1150daf908 114 if(Datalen > 0) {
ascension2 0:dc1150daf908 115 printf("%s \n",RxData);
ascension2 0:dc1150daf908 116 Data_Receive(RxData);
ascension2 0:dc1150daf908 117 if(WIFI_SendData(Socket, TxData, sizeof(TxData), &Datalen, WIFI_WRITE_TIMEOUT) != WIFI_STATUS_OK) {
ascension2 0:dc1150daf908 118 printf("> ERROR : Failed to send Data.\n");
ascension2 0:dc1150daf908 119 }
ascension2 0:dc1150daf908 120 }
ascension2 0:dc1150daf908 121 } else {
ascension2 0:dc1150daf908 122 printf("> ERROR : Failed to Receive Data.\n");
ascension2 0:dc1150daf908 123 }
ascension2 0:dc1150daf908 124 }
ascension2 0:dc1150daf908 125 }
ascension2 0:dc1150daf908 126 }
ascension2 0:dc1150daf908 127
ascension2 0:dc1150daf908 128
ascension2 0:dc1150daf908 129 int update_flag=0;
ascension2 0:dc1150daf908 130 void update_state()
ascension2 0:dc1150daf908 131 {
ascension2 0:dc1150daf908 132 update_flag++;
ascension2 0:dc1150daf908 133 printf("%d\n",update_flag);
ascension2 0:dc1150daf908 134 }