cc3000 simple socket demo (not using EthernetInterface) !

Dependencies:   NVIC_set_all_priorities cc3000_hostdriver_mbedsocket mbed

Info

Simple Socket demo application for the wireless CC3000 module.

Warning

The on-board Firmware must be updated to mbed enable the wireless module.
Goto the Component page to get the FirmwareUpdate tool (scroll down to the FirmwareUpdate topic).

Setup

Note

It is recommended to run an initial test WITHOUT security settings.

Changing network parameters in main.h

  • Setup a wireless router with a non-secure wireless connection using the wireless settings stored in main.h
    or set SSID to your wireless router SSID. For now, do not change USE_SMART_CONFIG and AP_KEY,
    only change AP_SECURITY to NONE.

// use smart config
#define USE_SMART_CONFIG 0

 // Default SSID Settings
#define AP_KEY       "test"
#define AP_SECURITY  NONE
#define SSID         "test"
  • By default, DHCP is used to obtain the IP address.
    When you want to use a fixed IP address, set IP_ALLOC_METHOD USE_STATIC_IP and enter your preferred values for STATIC_IP_OCT_x (device IP address) and STATIC_GW_OCT4 (4th number of your gateway IP address) .
    See the next chapter on how to use USE_SMART_CONFIG.

Setting up the Python script

  • Download Python 2.7 from http://www.python.org/download/
    Install it on a computer connected to the router you previously set up (wireless or wired).
  • Download this Python script to the Python2.7 folder (credit : Jim Carver from Avnet).
  • Compile the CC3000_Simple_Socket_demo code and save it to your board.

Running the application for the first time

  • Open a terminal program (eg: TeraTerm) and connect to your board (serial speed : 115200 baud).
  • Press the reset button on your board.
  • Following startup screen will appear :

Note

The version info can be different.
the dots in the MAC address will show your CC3000's real MAC address.

cc3000 simple socket demo.
MAC address + cc3000 info
 MAC address ..:..:..:..:..:..

 FTC        0
 PP_version 3.4
 SERV_PACK  1.11
 DRV_VER    7.14.24
 FW_VER     7.12.14
User's AP setup: SSID: "test", Password: "test", Security: 3

<0> Normal run. SmartConfig will
    start if no valid connection exists.
<1> Connect using fixed SSID without AP_KEY: test
<2> Connect using fixed SSID with AP_KEY: test
<8> Erase all stored profiles.
<9> SmartConfig.


  • For the initial test, select option <1> (Connect using fixed SSID without AP_KEY: ...).
  • If all goes well, the following screen is shown (the IP address can be different):
Attempting SSID Connection.
DHCP request
  Waiting for dhcp to be set.
  Waiting for dhcp to be set.
DHCP assigned IP Address = 192.168.1.100


  • On the computer where you installed Python2.7:
    • Make sure the connection between your computer and the wireless router is active.
    • Open a DOS prompt and go to the folder where Python2.7 is installed.
    • Type following command :
python wigo_test.py -a 192.168.0.101 -p 15000


Note

Don't forget to replace the IP address with the real IP address assigned by DHCP to the CC3000 module.

If a connection is established, the DOS window will show

-----------------
run tcp client
-----------------
connected to  remote ip=192.168.0.101 remote port=15000
Press ENTER ....


In return the controller board will send following info to the serial port:

Connection from: 192.168.1.101


When we press Enter in the DOS window, the controller board will send following info to the serial port:

Connection from: 192.168.0.10
Received: Hello Wi-Go
Sending the message to the server.


And the DOS window will show:

recv from :  data:  Hello Python


Using option <2>

  • In your wireless router, change the non-secure wireless connection to WEP, WPA or WPA2 and enter a security key.
  • In main.h, update AP_SECURITY and AP_KEY with the values you set in your wireless router.
    Valid values for AP_SECURITY are : NONE, WEP, WPA and WPA2
  • Recompile the code and save it to your board. Reconnect the terminal program and press reset on your board.
  • When the selection menu appears, choose option <2>.
    The communication sequence for option <2> is identical as described for option <1> but now a secure connection is used.

Using the application's options <0>, <8> and <9>

  • Options <0> (Normal run) and <9> (SmartConfig) are very similar.
    They both allow us to connect the CC3000 to another wireless network, without changing the pre-configured wireless settings stored in main.h.
    Option <0> will only start SmartConfig if no valid connection exists (First Time Config),
    but if the CC3000 was previously configured using SmartConfig, it will automatically connect using the stored wireless network profile.
  • Option <8> : As there are only 7 profile slots available, this option can be used to erase all stored profiles.
  • Option <9> allows the user to switch to another wireless connection.
    This connection is stored in one of the 7 profiles. More info on profile priorities is available here.


See TI's pages on how to use the SmartConfig tool:

Committer:
Kojto
Date:
Sun Sep 08 18:31:33 2013 +0000
Revision:
0:ce33c63eefe5
initial version of new simple socket

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kojto 0:ce33c63eefe5 1 /****************************************************************************
Kojto 0:ce33c63eefe5 2 *
Kojto 0:ce33c63eefe5 3 * doTCPIP.h - CC3000 TCP/IP
Kojto 0:ce33c63eefe5 4 * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
Kojto 0:ce33c63eefe5 5 *
Kojto 0:ce33c63eefe5 6 * Redistribution and use in source and binary forms, with or without
Kojto 0:ce33c63eefe5 7 * modification, are permitted provided that the following conditions
Kojto 0:ce33c63eefe5 8 * are met:
Kojto 0:ce33c63eefe5 9 *
Kojto 0:ce33c63eefe5 10 * Redistributions of source code must retain the above copyright
Kojto 0:ce33c63eefe5 11 * notice, this list of conditions and the following disclaimer.
Kojto 0:ce33c63eefe5 12 *
Kojto 0:ce33c63eefe5 13 * Redistributions in binary form must reproduce the above copyright
Kojto 0:ce33c63eefe5 14 * notice, this list of conditions and the following disclaimer in the
Kojto 0:ce33c63eefe5 15 * documentation and/or other materials provided with the
Kojto 0:ce33c63eefe5 16 * distribution.
Kojto 0:ce33c63eefe5 17 *
Kojto 0:ce33c63eefe5 18 * Neither the name of Texas Instruments Incorporated nor the names of
Kojto 0:ce33c63eefe5 19 * its contributors may be used to endorse or promote products derived
Kojto 0:ce33c63eefe5 20 * from this software without specific prior written permission.
Kojto 0:ce33c63eefe5 21 *
Kojto 0:ce33c63eefe5 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
Kojto 0:ce33c63eefe5 23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
Kojto 0:ce33c63eefe5 24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
Kojto 0:ce33c63eefe5 25 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
Kojto 0:ce33c63eefe5 26 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
Kojto 0:ce33c63eefe5 27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
Kojto 0:ce33c63eefe5 28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
Kojto 0:ce33c63eefe5 29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
Kojto 0:ce33c63eefe5 30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
Kojto 0:ce33c63eefe5 31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Kojto 0:ce33c63eefe5 32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Kojto 0:ce33c63eefe5 33 *
Kojto 0:ce33c63eefe5 34 *****************************************************************************/
Kojto 0:ce33c63eefe5 35
Kojto 0:ce33c63eefe5 36 #ifndef DOTCPIP_H
Kojto 0:ce33c63eefe5 37 #define DOTCPIP_H
Kojto 0:ce33c63eefe5 38
Kojto 0:ce33c63eefe5 39 #include "cc3000.h"
Kojto 0:ce33c63eefe5 40
Kojto 0:ce33c63eefe5 41 /** TCP/IP Functions
Kojto 0:ce33c63eefe5 42 *
Kojto 0:ce33c63eefe5 43 */
Kojto 0:ce33c63eefe5 44 #ifndef FALSE
Kojto 0:ce33c63eefe5 45 #define FALSE 0
Kojto 0:ce33c63eefe5 46 #endif
Kojto 0:ce33c63eefe5 47
Kojto 0:ce33c63eefe5 48 #ifndef TRUE
Kojto 0:ce33c63eefe5 49 #define TRUE 1
Kojto 0:ce33c63eefe5 50 #endif
Kojto 0:ce33c63eefe5 51
Kojto 0:ce33c63eefe5 52 #define SMART_CONFIG_SET 0x55
Kojto 0:ce33c63eefe5 53 #define TCPIP_PORT 15000
Kojto 0:ce33c63eefe5 54
Kojto 0:ce33c63eefe5 55 #define USE_DHCP 1
Kojto 0:ce33c63eefe5 56 #define USE_STATIC_IP 2
Kojto 0:ce33c63eefe5 57
Kojto 0:ce33c63eefe5 58 #define NONE 0
Kojto 0:ce33c63eefe5 59 #define WEP 1
Kojto 0:ce33c63eefe5 60 #define WPA 2
Kojto 0:ce33c63eefe5 61 #define WPA2 3
Kojto 0:ce33c63eefe5 62
Kojto 0:ce33c63eefe5 63 // Modify the following settings as necessary for your Wi-Fi Network setup:
Kojto 0:ce33c63eefe5 64 #define IP_ALLOC_METHOD USE_DHCP // for DHCP assigned IP address
Kojto 0:ce33c63eefe5 65 //#define IP_ALLOC_METHOD USE_STATIC_IP // for static IP address
Kojto 0:ce33c63eefe5 66
Kojto 0:ce33c63eefe5 67 // Default SSID Settings
Kojto 0:ce33c63eefe5 68 #define AP_KEY "87654321"
Kojto 0:ce33c63eefe5 69 #define AP_SECURITY WPA2 // WPA2 must be enabled for use with iPhone or Android phone hotspot!
Kojto 0:ce33c63eefe5 70 #define SSID "test"
Kojto 0:ce33c63eefe5 71 //#define AP_SECURITY NONE // no security but will connect quicker!
Kojto 0:ce33c63eefe5 72 #define STATIC_IP_OCT1 192
Kojto 0:ce33c63eefe5 73 #define STATIC_IP_OCT2 168
Kojto 0:ce33c63eefe5 74 #define STATIC_IP_OCT3 0
Kojto 0:ce33c63eefe5 75 #define STATIC_IP_OCT4 103
Kojto 0:ce33c63eefe5 76
Kojto 0:ce33c63eefe5 77 #define STATIC_GW_OCT4 1 // Static Gateway address = STATIC_IP_OCT1.STATIC_IP_OCT2.STATIC_IP_OCT3.STATIC_GW_OCT4
Kojto 0:ce33c63eefe5 78
Kojto 0:ce33c63eefe5 79 #define REQ_BUFFER_SIZE 400
Kojto 0:ce33c63eefe5 80
Kojto 0:ce33c63eefe5 81 // typedef struct {
Kojto 0:ce33c63eefe5 82 // uint8_t FTC; // First time config performed
Kojto 0:ce33c63eefe5 83 // uint8_t PP_version[2]; // Patch Programmer version
Kojto 0:ce33c63eefe5 84 // uint8_t SERV_PACK[2]; // Service Pack Version
Kojto 0:ce33c63eefe5 85 // uint8_t DRV_VER[3]; // Driver Version
Kojto 0:ce33c63eefe5 86 // uint8_t FW_VER[3]; // Firmware Version
Kojto 0:ce33c63eefe5 87 // uint8_t validCIK; // CIK[] is valid (Client Interface Key)
Kojto 0:ce33c63eefe5 88 // uint8_t CIK[40];
Kojto 0:ce33c63eefe5 89 // } userFS_t;
Kojto 0:ce33c63eefe5 90
Kojto 0:ce33c63eefe5 91 extern mbed_cc3000::tUserFS userFS;
Kojto 0:ce33c63eefe5 92
Kojto 0:ce33c63eefe5 93 // extern volatile uint32_t ulSmartConfigFinished,ulCC3000DHCP, OkToDoShutDown, ulCC3000DHCP_configured;
Kojto 0:ce33c63eefe5 94 // extern int32_t server_running;
Kojto 0:ce33c63eefe5 95 // extern volatile uint8_t newData;
Kojto 0:ce33c63eefe5 96 // extern uint8_t ForceFixedSSID;
Kojto 0:ce33c63eefe5 97 // extern int8_t runSmartConfig;
Kojto 0:ce33c63eefe5 98 // extern int8_t requestBuffer[];
Kojto 0:ce33c63eefe5 99 extern uint8_t myMAC[8];
Kojto 0:ce33c63eefe5 100 extern uint8_t SmartConfigProfilestored;
Kojto 0:ce33c63eefe5 101
Kojto 0:ce33c63eefe5 102 // extern void StartSmartConfig(void);
Kojto 0:ce33c63eefe5 103
Kojto 0:ce33c63eefe5 104 bool check_dhcp(void);
Kojto 0:ce33c63eefe5 105 void start_smart_config(void);
Kojto 0:ce33c63eefe5 106 void create_tcp_connection(int32_t port);
Kojto 0:ce33c63eefe5 107 void init_tcp(void);
Kojto 0:ce33c63eefe5 108 void run_tcp_server(void);
Kojto 0:ce33c63eefe5 109 void do_FTC(void);
Kojto 0:ce33c63eefe5 110
Kojto 0:ce33c63eefe5 111 #endif // DOTCPIP_H