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:
Fri Sep 13 18:02:03 2013 +0000
Revision:
1:99076f2d9408
Parent:
0:ce33c63eefe5
Child:
5:12ea15b9c2f4
tcp server addition

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kojto 1:99076f2d9408 1 /* mbed Microcontroller Library
Kojto 1:99076f2d9408 2 * Copyright (c) 2006-2013 ARM Limited
Kojto 1:99076f2d9408 3 *
Kojto 1:99076f2d9408 4 * Licensed under the Apache License, Version 2.0 (the "License");
Kojto 1:99076f2d9408 5 * you may not use this file except in compliance with the License.
Kojto 1:99076f2d9408 6 * You may obtain a copy of the License at
Kojto 1:99076f2d9408 7 *
Kojto 1:99076f2d9408 8 * http://www.apache.org/licenses/LICENSE-2.0
Kojto 1:99076f2d9408 9 *
Kojto 1:99076f2d9408 10 * Unless required by applicable law or agreed to in writing, software
Kojto 1:99076f2d9408 11 * distributed under the License is distributed on an "AS IS" BASIS,
Kojto 1:99076f2d9408 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Kojto 1:99076f2d9408 13 * See the License for the specific language governing permissions and
Kojto 1:99076f2d9408 14 * limitations under the License.
Kojto 1:99076f2d9408 15 */
Kojto 0:ce33c63eefe5 16 #ifndef MAIN_H
Kojto 0:ce33c63eefe5 17 #define MAIN_H
Kojto 0:ce33c63eefe5 18
Kojto 1:99076f2d9408 19 #define WIGO_BOARD 1
Kojto 1:99076f2d9408 20
Kojto 1:99076f2d9408 21 #if (WIGO_BOARD == 1)
Kojto 1:99076f2d9408 22
Kojto 0:ce33c63eefe5 23 extern DigitalOut ledr;
Kojto 0:ce33c63eefe5 24 extern DigitalOut ledg;
Kojto 0:ce33c63eefe5 25 extern DigitalOut ledb;
Kojto 0:ce33c63eefe5 26 extern DigitalOut led1;
Kojto 0:ce33c63eefe5 27 extern DigitalOut led2;
Kojto 0:ce33c63eefe5 28 extern DigitalOut led3;
Kojto 0:ce33c63eefe5 29
Kojto 0:ce33c63eefe5 30 #define RED_OFF ledr = 1;
Kojto 0:ce33c63eefe5 31 #define RED_ON ledr = 0;
Kojto 0:ce33c63eefe5 32 #define RED_TOGGLE ledr = !ledr;
Kojto 0:ce33c63eefe5 33 #define GREEN_OFF ledg = 1;
Kojto 0:ce33c63eefe5 34 #define GREEN_ON ledg = 0;
Kojto 0:ce33c63eefe5 35 #define GREEN_TOGGLE ledg = !ledg;
Kojto 0:ce33c63eefe5 36 #define BLUE_OFF ledb = 1;
Kojto 0:ce33c63eefe5 37 #define BLUE_ON ledb = 0;
Kojto 0:ce33c63eefe5 38 #define BLUE_TOGGLE ledb = !ledb;
Kojto 0:ce33c63eefe5 39 #define LED_D1_OFF led1 = 1;
Kojto 0:ce33c63eefe5 40 #define LED_D1_ON led1 = 0;
Kojto 0:ce33c63eefe5 41 #define LED_D1_TOGGLE led1 = !led1;
Kojto 0:ce33c63eefe5 42 #define LED_D2_OFF led2 = 1;
Kojto 0:ce33c63eefe5 43 #define LED_D2_ON led2 = 0;
Kojto 0:ce33c63eefe5 44 #define LED_D2_TOGGLE led2 = !led2;
Kojto 0:ce33c63eefe5 45 #define LED_D3_OFF led3 = 1;
Kojto 0:ce33c63eefe5 46 #define LED_D3_ON led3 = 0;
Kojto 0:ce33c63eefe5 47 #define LED_D3_TOGGLE led3 = !led3;
Kojto 0:ce33c63eefe5 48
Kojto 1:99076f2d9408 49 #define SET_PWR_EN1 PWR_EN1 = 0
Kojto 1:99076f2d9408 50 #define SET_PWR_EN2 PWR_EN2 = 1
Kojto 1:99076f2d9408 51
Kojto 1:99076f2d9408 52 #define WLAN_ISF_PCR PORTA->PCR[16]
Kojto 1:99076f2d9408 53 #define WLAN_ISF_ISFR PORTA->ISFR
Kojto 1:99076f2d9408 54 #define WLAN_ISF_MASK (1<<16)
Kojto 1:99076f2d9408 55
Kojto 1:99076f2d9408 56 #define CLEAR_PCR_INTERRUPT WLAN_ISF_PCR|=PORT_PCR_ISF_MASK;
Kojto 1:99076f2d9408 57 #define CLEAN_PORT_INTERRUPT WLAN_ISF_ISFR|=WLAN_ISF_MASK;
Kojto 1:99076f2d9408 58
Kojto 1:99076f2d9408 59 #else
Kojto 1:99076f2d9408 60
Kojto 1:99076f2d9408 61 #define CLEAR_PCR_INTERRUPT
Kojto 1:99076f2d9408 62 #define CLEAN_PORT_INTERRUPT
Kojto 1:99076f2d9408 63
Kojto 1:99076f2d9408 64 #define RED_OFF
Kojto 1:99076f2d9408 65 #define RED_ON
Kojto 1:99076f2d9408 66 #define RED_TOGGLE
Kojto 1:99076f2d9408 67 #define GREEN_OFF
Kojto 1:99076f2d9408 68 #define GREEN_ON
Kojto 1:99076f2d9408 69 #define GREEN_TOGGLE
Kojto 1:99076f2d9408 70 #define BLUE_OFF
Kojto 1:99076f2d9408 71 #define BLUE_ON
Kojto 1:99076f2d9408 72 #define BLUE_TOGGLE
Kojto 1:99076f2d9408 73 #define LED_D1_OFF
Kojto 1:99076f2d9408 74 #define LED_D1_ON
Kojto 1:99076f2d9408 75 #define LED_D1_TOGGLE
Kojto 1:99076f2d9408 76 #define LED_D2_OFF
Kojto 1:99076f2d9408 77 #define LED_D2_ON
Kojto 1:99076f2d9408 78 #define LED_D2_TOGGLE
Kojto 1:99076f2d9408 79 #define LED_D3_OFF
Kojto 1:99076f2d9408 80 #define LED_D3_ON
Kojto 1:99076f2d9408 81 #define LED_D3_TOGGLE
Kojto 1:99076f2d9408 82
Kojto 1:99076f2d9408 83 #define SET_PWR_EN1
Kojto 1:99076f2d9408 84 #define SET_PWR_EN2
Kojto 1:99076f2d9408 85
Kojto 1:99076f2d9408 86 #define WLAN_ISF_PCR
Kojto 1:99076f2d9408 87 #define WLAN_ISF_ISFR
Kojto 1:99076f2d9408 88 #define WLAN_ISF_MASK
Kojto 1:99076f2d9408 89
Kojto 0:ce33c63eefe5 90 #endif
Kojto 1:99076f2d9408 91
Kojto 1:99076f2d9408 92 #endif