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.

  1. Download or build a TCP Server on you host computer
    1. Please find out the TCP server code or install TCP server application in your host computer.
  2. Import this sample application and setup these information about AP & TCP Server
    1. *char* AP_SSID = "SOG";
    2. *char* AP_PWD = "1122334455667788";
    3. *char* TCP_SERVER_ADDRESS = "10.0.1.13";
    4. *int TCP_SERVER_PORT = 1030;
  3. Compiler your code and download to your mBed device.
  4. Control your mBed device
    1. 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
0x000x020xA1
WiFi,AP&TCP Server connectWiFi,AP, & TCP Server disconnectSend sensor data to TCP Server
Committer:
tsungta
Date:
Mon Apr 17 14:19:36 2017 +0000
Revision:
4:11b81280c65b
Parent:
3:9bd3e863e15b
Child:
5:ffe1a4c4881e
This revision is based on mbed-os (mbedOS 5); NNN50_WIFI_API need to update to 22:5b38592 at least ; Add mbed_app.json for proper platform setting; Add .mbedignore (may not shown in IDE)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tsungta 0:b5f183111420 1 /******************** (C) COPYRIGHT 2016 Delta Electronics, Inc. ***************
tsungta 0:b5f183111420 2 *
tsungta 0:b5f183111420 3 * File Name : main.cpp
tsungta 0:b5f183111420 4 * Authors : Tsungta Wu - CPBG (tsungta.wu@deltaww.com)
tsungta 0:b5f183111420 5 * Version : V.1.0.0
tsungta 0:b5f183111420 6 * Date : 2016/Nov/24
tsungta 0:b5f183111420 7 *
tsungta 0:b5f183111420 8 * This example only show the most basic WiFi operation include AP scan and connect
tsungta 0:b5f183111420 9 * The usage of TCP/UDP socket please refer to the mbed Handbook from the link below
tsungta 0:b5f183111420 10 * https://developer.mbed.org/handbook/Socket
tsungta 0:b5f183111420 11 *
tsungta 0:b5f183111420 12 *******************************************************************************/
tsungta 0:b5f183111420 13
tsungta 0:b5f183111420 14 #include "mbed.h"
tsungta 0:b5f183111420 15 #include "EthernetInterface.h"
tsungta 0:b5f183111420 16 #include "WIFIDevice.h"
tsungta 0:b5f183111420 17
tsungta 4:11b81280c65b 18 const char* ECHO_SERVER_ADDRESS = "192.168.2.13";
tsungta 1:a357a8f9ac8b 19 const int ECHO_SERVER_PORT = 1030;
tsungta 1:a357a8f9ac8b 20
tsungta 0:b5f183111420 21 void scanCallback(tstrM2mWifiscanResult result)
tsungta 0:b5f183111420 22 {
tsungta 4:11b81280c65b 23 printf("SSID: %s \n", result.au8SSID);
tsungta 4:11b81280c65b 24 printf("RSSI: %i \n", result.s8rssi);
tsungta 0:b5f183111420 25 }
tsungta 0:b5f183111420 26
tsungta 0:b5f183111420 27 int main() {
tsungta 0:b5f183111420 28
tsungta 0:b5f183111420 29 EthernetInterface eth;
tsungta 0:b5f183111420 30 WIFIDevice wifi;
tsungta 4:11b81280c65b 31
tsungta 0:b5f183111420 32 eth.init();
tsungta 0:b5f183111420 33
tsungta 0:b5f183111420 34 wifi.apScan(scanCallback);
tsungta 0:b5f183111420 35
tsungta 1:a357a8f9ac8b 36 wifi.setNetwork(M2M_WIFI_SEC_WPA_PSK, "TP-LINK_2.4G_TTWU", "0972753720");
tsungta 3:9bd3e863e15b 37
tsungta 3:9bd3e863e15b 38 eth.connect();
tsungta 0:b5f183111420 39
tsungta 0:b5f183111420 40 if(wifi.is_AP_connected())
tsungta 4:11b81280c65b 41 printf("Connect Success! \n");
tsungta 0:b5f183111420 42 else
tsungta 4:11b81280c65b 43 printf("Connect Fail! \n");
tsungta 3:9bd3e863e15b 44
tsungta 4:11b81280c65b 45 printf("MAC: %s\n", eth.getMACAddress());
tsungta 4:11b81280c65b 46 printf("IP: %s\n", eth.getIPAddress());
tsungta 4:11b81280c65b 47 printf("Gateway: %s\n", eth.getGateway());
tsungta 4:11b81280c65b 48 printf("NetworkMask: %s\n", eth.getNetworkMask());
tsungta 1:a357a8f9ac8b 49
tsungta 1:a357a8f9ac8b 50 UDPSocket sock;
tsungta 1:a357a8f9ac8b 51 sock.init();
tsungta 1:a357a8f9ac8b 52
tsungta 1:a357a8f9ac8b 53 Endpoint echo_server;
tsungta 1:a357a8f9ac8b 54 echo_server.set_address(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT);
tsungta 1:a357a8f9ac8b 55
tsungta 1:a357a8f9ac8b 56 char out_buffer[] = "Hello World";
tsungta 4:11b81280c65b 57 printf("Sending message '%s' to server (%s)\n",out_buffer,ECHO_SERVER_ADDRESS);
tsungta 1:a357a8f9ac8b 58 sock.sendTo(echo_server, out_buffer, sizeof(out_buffer));
tsungta 1:a357a8f9ac8b 59
tsungta 4:11b81280c65b 60 char in_buffer[256]; //IMPORTANT, array size MUST >= the actual received data size or set to maximum of 1400 if there is uncertainty
tsungta 1:a357a8f9ac8b 61 int n = sock.receiveFrom(echo_server, in_buffer, sizeof(in_buffer));
tsungta 1:a357a8f9ac8b 62
tsungta 4:11b81280c65b 63 if(n <0)
tsungta 4:11b81280c65b 64 in_buffer[0] = '\0';//IMPORTANT, in case n = -1 when set_bloacking is timeout, prevent the illegal array in_buffer[-1] access
tsungta 4:11b81280c65b 65 else
tsungta 4:11b81280c65b 66 in_buffer[n] = '\0';
tsungta 4:11b81280c65b 67
tsungta 4:11b81280c65b 68 printf("Received message from server: '%s'\n", in_buffer);
tsungta 1:a357a8f9ac8b 69
tsungta 1:a357a8f9ac8b 70 sock.close();
tsungta 1:a357a8f9ac8b 71
tsungta 1:a357a8f9ac8b 72 eth.disconnect();
tsungta 2:92946804ed6f 73
tsungta 2:92946804ed6f 74 wifi.sleep();
tsungta 1:a357a8f9ac8b 75
tsungta 0:b5f183111420 76 while(1) {
tsungta 0:b5f183111420 77 }
tsungta 0:b5f183111420 78 }
tsungta 0:b5f183111420 79