test_wifi_client

Dependencies:   DISCO_L475VG_IOT01A_wifi AX12

Committer:
ajuton
Date:
Fri Nov 15 08:14:08 2019 +0000
Revision:
4:6624d4af08d1
Parent:
2:9a54ede37c7e
test_wifi_client

Who changed what in which revision?

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