test_wifi_client
Dependencies: DISCO_L475VG_IOT01A_wifi AX12
main.cpp@4:6624d4af08d1, 2019-11-15 (annotated)
- 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?
User | Revision | Line number | New 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 | } |