final

Dependencies:   DISCO_L475VG_IOT01A_wifi

Committer:
ascension2
Date:
Wed Aug 21 07:25:27 2019 +0000
Revision:
2:a460007a35c7
Parent:
1:98939393d0db
Child:
3:32b328935a54
44

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