BLE-WiFi with BIOSensors
Dependencies: AS7000 BNO055 NNN50_WIFI_API
DELTA NNN50 (Bluetooth LE 4.X & 802.11 b/g/n) with Bio Sensor (HRM, 9DoF motion Sensor) reference design.
Env. Setup step by step.
- Download or build a TCP Server on you host computer
- Please find out the TCP server code or install TCP server application in your host computer.
- Import this sample application and setup these information about AP & TCP Server
- *char* AP_SSID = "SOG";
- *char* AP_PWD = "1122334455667788";
- *char* TCP_SERVER_ADDRESS = "10.0.1.13";
- *int TCP_SERVER_PORT = 1030;
- Compiler your code and download to your mBed device.
- Control your mBed device
- Please use NORDSemi nRF Tool and setup and watch these information: GATT CMD: 0x00 (connect to AP, TCP Server, and create TCP socket), 0x02 disconnection TCP server, close socket, and WiFi sleep), 0xA1 (send sensor data to tcp server from out_buffer[]) and Status will be update by Bluetooth LE adv through manufacturing information
0x00 | 0x02 | 0xA1 |
---|---|---|
WiFi,AP&TCP Server connect | WiFi,AP, & TCP Server disconnect | Send sensor data to TCP Server |
Diff: main.cpp
- Revision:
- 4:11b81280c65b
- Parent:
- 3:9bd3e863e15b
- Child:
- 5:ffe1a4c4881e
--- a/main.cpp Sun Apr 02 10:16:20 2017 +0000 +++ b/main.cpp Mon Apr 17 14:19:36 2017 +0000 @@ -15,24 +15,20 @@ #include "EthernetInterface.h" #include "WIFIDevice.h" -const char* ECHO_SERVER_ADDRESS = "192.168.1.100"; +const char* ECHO_SERVER_ADDRESS = "192.168.2.13"; const int ECHO_SERVER_PORT = 1030; -Serial uart(p17, p16);//temporary define for alpha release - void scanCallback(tstrM2mWifiscanResult result) { - uart.printf("SSID: %s \n", result.au8SSID); - uart.printf("RSSI: %i \n", result.s8rssi); + printf("SSID: %s \n", result.au8SSID); + printf("RSSI: %i \n", result.s8rssi); } int main() { EthernetInterface eth; WIFIDevice wifi; - - uart.baud(9600); - + eth.init(); wifi.apScan(scanCallback); @@ -42,14 +38,14 @@ eth.connect(); if(wifi.is_AP_connected()) - uart.printf("Connect Success! \n"); + printf("Connect Success! \n"); else - uart.printf("Connect Fail! \n"); + printf("Connect Fail! \n"); - uart.printf("MAC: %s\n", eth.getMACAddress()); - uart.printf("IP: %s\n", eth.getIPAddress()); - uart.printf("Gateway: %s\n", eth.getGateway()); - uart.printf("NetworkMask: %s\n", eth.getNetworkMask()); + printf("MAC: %s\n", eth.getMACAddress()); + printf("IP: %s\n", eth.getIPAddress()); + printf("Gateway: %s\n", eth.getGateway()); + printf("NetworkMask: %s\n", eth.getNetworkMask()); UDPSocket sock; sock.init(); @@ -58,14 +54,18 @@ echo_server.set_address(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT); char out_buffer[] = "Hello World"; - uart.printf("Sending message '%s' to server (%s)\n",out_buffer,ECHO_SERVER_ADDRESS); + printf("Sending message '%s' to server (%s)\n",out_buffer,ECHO_SERVER_ADDRESS); sock.sendTo(echo_server, out_buffer, sizeof(out_buffer)); - char in_buffer[256]; + char in_buffer[256]; //IMPORTANT, array size MUST >= the actual received data size or set to maximum of 1400 if there is uncertainty int n = sock.receiveFrom(echo_server, in_buffer, sizeof(in_buffer)); - in_buffer[n] = '\0'; - uart.printf("Received message from server: '%s'\n", in_buffer); + if(n <0) + in_buffer[0] = '\0';//IMPORTANT, in case n = -1 when set_bloacking is timeout, prevent the illegal array in_buffer[-1] access + else + in_buffer[n] = '\0'; + + printf("Received message from server: '%s'\n", in_buffer); sock.close();