22

Dependencies:   DISCO_L475VG_IOT01A_wifi

Committer:
ascension2
Date:
Tue Aug 20 10:45:16 2019 +0000
Revision:
1:98939393d0db
Parent:
0:dc1150daf908
33

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 1:98939393d0db 29 uint8_t TxData[100];
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 1:98939393d0db 33 extern int cds_state;
ascension2 1:98939393d0db 34 extern int motor1_state;
ascension2 1:98939393d0db 35 extern int motor2_state;
ascension2 1:98939393d0db 36 extern int led_state;
ascension2 0:dc1150daf908 37 void update_state();
ascension2 0:dc1150daf908 38
ascension2 0:dc1150daf908 39 Ticker tick;
ascension2 0:dc1150daf908 40
ascension2 0:dc1150daf908 41 int wifi_connect()
ascension2 0:dc1150daf908 42 {
ascension2 0:dc1150daf908 43 int32_t Socket = -1;
ascension2 0:dc1150daf908 44 uint16_t Datalen;
ascension2 0:dc1150daf908 45 uint16_t Trials = CONNECTION_TRIAL_MAX;
ascension2 0:dc1150daf908 46
ascension2 0:dc1150daf908 47 pc.baud(115200);
ascension2 0:dc1150daf908 48
ascension2 0:dc1150daf908 49 printf("\n");
ascension2 0:dc1150daf908 50 printf("************************************************************\n");
ascension2 0:dc1150daf908 51 printf("*** STM32 IoT Discovery kit for STM32L475 MCU ***\n");
ascension2 0:dc1150daf908 52 printf("*** WIFI Module in TCP Client mode demonstration ***\n\n");
ascension2 0:dc1150daf908 53 printf("*** TCP Client Instructions :\n");
ascension2 0:dc1150daf908 54 printf("*** 1- Make sure your Phone is connected to the same network that\n");
ascension2 0:dc1150daf908 55 printf("*** you configured using the Configuration Access Point.\n");
ascension2 0:dc1150daf908 56 printf("*** 2- Create a server by using the android application TCP Server\n");
ascension2 0:dc1150daf908 57 printf("*** with port(8002).\n");
ascension2 0:dc1150daf908 58 printf("*** 3- Get the Network Name or IP Address of your phone from the step 2.\n\n");
ascension2 0:dc1150daf908 59 printf("************************************************************\n");
ascension2 0:dc1150daf908 60
ascension2 0:dc1150daf908 61 /*Initialize WIFI module */
ascension2 0:dc1150daf908 62 if(WIFI_Init() == WIFI_STATUS_OK) {
ascension2 0:dc1150daf908 63 printf("> WIFI Module Initialized.\n");
ascension2 0:dc1150daf908 64 if(WIFI_GetMAC_Address(MAC_Addr) == WIFI_STATUS_OK) {
ascension2 0:dc1150daf908 65 printf("> es-wifi module MAC Address : %X:%X:%X:%X:%X:%X\n",
ascension2 0:dc1150daf908 66 MAC_Addr[0],
ascension2 0:dc1150daf908 67 MAC_Addr[1],
ascension2 0:dc1150daf908 68 MAC_Addr[2],
ascension2 0:dc1150daf908 69 MAC_Addr[3],
ascension2 0:dc1150daf908 70 MAC_Addr[4],
ascension2 0:dc1150daf908 71 MAC_Addr[5]);
ascension2 0:dc1150daf908 72 } else {
ascension2 0:dc1150daf908 73 printf("> ERROR : CANNOT get MAC address\n");
ascension2 0:dc1150daf908 74 }
ascension2 0:dc1150daf908 75
ascension2 0:dc1150daf908 76 if( WIFI_Connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, WIFI_ECN_WPA_PSK)== WIFI_STATUS_OK) {
ascension2 0:dc1150daf908 77
ascension2 0:dc1150daf908 78 printf("> es-wifi module connected \n");
ascension2 0:dc1150daf908 79 if(WIFI_GetIP_Address(IP_Addr) == WIFI_STATUS_OK) {
ascension2 0:dc1150daf908 80 printf("> es-wifi module got IP Address : %d.%d.%d.%d\n",
ascension2 0:dc1150daf908 81 IP_Addr[0],
ascension2 0:dc1150daf908 82 IP_Addr[1],
ascension2 0:dc1150daf908 83 IP_Addr[2],
ascension2 0:dc1150daf908 84 IP_Addr[3]);
ascension2 0:dc1150daf908 85
ascension2 0:dc1150daf908 86 printf("> Trying to connect to Server: %d.%d.%d.%d:8002 ...\n",
ascension2 0:dc1150daf908 87 RemoteIP[0],
ascension2 0:dc1150daf908 88 RemoteIP[1],
ascension2 0:dc1150daf908 89 RemoteIP[2],
ascension2 0:dc1150daf908 90 RemoteIP[3]);
ascension2 0:dc1150daf908 91
ascension2 0:dc1150daf908 92 while (Trials--){
ascension2 0:dc1150daf908 93 if( WIFI_OpenClientConnection(0, WIFI_TCP_PROTOCOL, "TCP_CLIENT", RemoteIP, 8002, 0) == WIFI_STATUS_OK){
ascension2 0:dc1150daf908 94 //if( WIFI_OpenClientConnection(0, WIFI_TCP_PROTOCOL, "TCP_CLIENT", RemoteIP, 80, 0) == WIFI_STATUS_OK){
ascension2 0:dc1150daf908 95 printf("> TCP Connection opened successfully.\n");
ascension2 0:dc1150daf908 96 Socket = 0;
ascension2 0:dc1150daf908 97 }
ascension2 0:dc1150daf908 98 }
ascension2 0:dc1150daf908 99 if(!Trials) {
ascension2 0:dc1150daf908 100 printf("> ERROR : Cannot open Connection\n");
ascension2 0:dc1150daf908 101 }
ascension2 0:dc1150daf908 102 } else {
ascension2 0:dc1150daf908 103 printf("> ERROR : es-wifi module CANNOT get IP address\n");
ascension2 0:dc1150daf908 104 }
ascension2 0:dc1150daf908 105 } else {
ascension2 0:dc1150daf908 106 printf("> ERROR : es-wifi module NOT connected\n");
ascension2 0:dc1150daf908 107 }
ascension2 0:dc1150daf908 108 } else {
ascension2 0:dc1150daf908 109 printf("> ERROR : WIFI Module cannot be initialized.\n");
ascension2 0:dc1150daf908 110 }
ascension2 0:dc1150daf908 111
ascension2 0:dc1150daf908 112 while(1){
ascension2 1:98939393d0db 113 tick.attach(&update_state,1);
ascension2 0:dc1150daf908 114 if(Socket != -1) {
ascension2 0:dc1150daf908 115 if(WIFI_ReceiveData(Socket, RxData, sizeof(RxData), &Datalen, WIFI_READ_TIMEOUT) == WIFI_STATUS_OK){
ascension2 0:dc1150daf908 116 if(Datalen > 0) {
ascension2 0:dc1150daf908 117 printf("%s \n",RxData);
ascension2 0:dc1150daf908 118 Data_Receive(RxData);
ascension2 0:dc1150daf908 119 if(WIFI_SendData(Socket, TxData, sizeof(TxData), &Datalen, WIFI_WRITE_TIMEOUT) != WIFI_STATUS_OK) {
ascension2 0:dc1150daf908 120 printf("> ERROR : Failed to send Data.\n");
ascension2 0:dc1150daf908 121 }
ascension2 0:dc1150daf908 122 }
ascension2 0:dc1150daf908 123 } else {
ascension2 0:dc1150daf908 124 printf("> ERROR : Failed to Receive Data.\n");
ascension2 0:dc1150daf908 125 }
ascension2 0:dc1150daf908 126 }
ascension2 0:dc1150daf908 127 }
ascension2 0:dc1150daf908 128 }
ascension2 0:dc1150daf908 129
ascension2 0:dc1150daf908 130
ascension2 0:dc1150daf908 131 int update_flag=0;
ascension2 0:dc1150daf908 132 void update_state()
ascension2 0:dc1150daf908 133 {
ascension2 1:98939393d0db 134 TxData[0]='1';
ascension2 1:98939393d0db 135 TxData[1]=motor1_state;
ascension2 1:98939393d0db 136 TxData[2]=motor2_state;
ascension2 1:98939393d0db 137 TxData[3]='0';
ascension2 1:98939393d0db 138 TxData[4]=cds_state;
ascension2 1:98939393d0db 139 TxData[5]=led_state;
ascension2 1:98939393d0db 140
ascension2 1:98939393d0db 141 TxData[6]='2';
ascension2 1:98939393d0db 142 TxData[7]='5';
ascension2 1:98939393d0db 143 TxData[8]='5';
ascension2 1:98939393d0db 144 TxData[9]='2';
ascension2 1:98939393d0db 145 TxData[10]='5';
ascension2 1:98939393d0db 146 TxData[11]='5';
ascension2 1:98939393d0db 147 TxData[12]='2';
ascension2 1:98939393d0db 148 TxData[13]='5';
ascension2 1:98939393d0db 149 TxData[14]='5';
ascension2 1:98939393d0db 150
ascension2 0:dc1150daf908 151 }