Creative Commons images are CC BY-NC-SA 3.0

Description: This is a breakout board for the CC3000 WiFi Module. The CC3000 from TI (Texas Instruments) is a self-contained wireless network processor that makes incorporating internet connectivity into your project simple. Instead of the more standard UART communication method, the CC3000 module utilizes an SPI interface allowing you, the user, to control the flow of data as you please. What makes the CC3000 unique is its ability to associate to a WiFi access point using a cell phone app in the Texas Instruments process called SmartConfig.

This breakout even provides an optional feature that allows you to attach an external antenna, just in case you need a little extra power. This is a handy feature if you want to route an antenna to the outside of an enclosure or to increase your WiFi gain. We’ve broken out the GND, Vcc, 3.3V, MOSI, MISO, CS, INT, SCK, and EN pins from the CC3000 module to give you easy access to making a great WiFi enabled project.

Dimensions: 1.83 x 1.03 x 0.14 in (46.4 x 26.2 x 3.6 mm)

Features:

  • Supply Voltage: 3.3V - 12V
  • Host Interface: SPI @ 16MHZ
  • Throughput (TCP): ~4Mbps
  • IEEE 802.11 b/g Compliant
  • WEP, WPA/WPA2 (AES and TKIP - Personal) Security Modes
  • FCC, IC, CE, and TELEC Certified
  • Onboard WIMAX Antenna
  • Optional External Antenna Connection

Documents:

Recommended Products

Customer Comments

  • Just so everyone knows, here’s what I have for pins on the SainSmart (yeah, yeah, boo, hiss, I know) Arduino Mega 2560: MISO: 50 MOSI: 51 SCK: 52 All other pins are as normal.

  • I’ve built a replacement driver for the CC3000, https://github.com/wadetb/tinyhci. It’s roughly half the size.

    It doesn’t offer the C++ interface of the SFE library, instead it’s at the socket level. But if someone wanted to, the SFE library could be ported to sit on top of it.

  • Hello! I hope everyone out there is having a great day!

    1.) Here is how the CC3000 wants to be wired up to the Arduino MEGA 2560 board.

    • GND → GND • VCC → 5V • MOSI → 11 (ATmega 2560 PB5 / pin 24) • MISO → 12 (ATmega 2560 PB6 / pin 25) • CS → 10 (ATmega 2560 PB4 / pin 23) • INT → 2 (ATmega 2560 PE4 / pin 6) • SCK → 13 (ATmega 2560 PB7 / pin 26) • EN → 7 (ATmega 2560 PH4 / pin 16)

    If I want to change the pins for INT, SCK and EN how will I be able to do this with the CC3000 library? To work on our custom board we want to make the following changes shown below. Last three lines for INT, SCK and EN. Will the changes below be possible?

    • GND → GND • VCC → 5V • MOSI → 11 (ATmega 2560 PB5 / pin 24) • MISO → 12 (ATmega 2560 PB6 / pin 25) • CS → 10 (ATmega 2560 PB4 / pin 23) • INT → 2 (ATmega 2560 PE4 / pin 6) changed to D14. • SCK → 13 (ATmega 2560 PB7 / pin 26) changed to D42 • EN → 7 (ATmega 2560 PH4 / pin 16) changed to D15.

    2.) Any tips on integrating this into an existing sketch that has been ported to a purely C/C++ project?

  • Can any of the WiFi modules available from Sparkfun connect to a HTTPS host? All the TCP/IP stacks mention HTTP support, but it’s not clear if they support SSL/TLS.

    • Supposedly, the CC3000 can support SSL/TLS, but it’s not something I’ve tested with the library yet.

      • The CC3000 does not directly support either HTTP or HTTPS. It works at a lower level - it provides a sockets based API. Higher level protocols like HTTP or HTTPS have to be implemented on top of this API in MCU code. Plain HTTP requests are trivial - you open a socket connection to the relevant host, write a “GET …” request and then just read the result. HTTPS however is completely different. Your MCU will almost certainly have neither the memory nor processing power for the necessary TLS support. A cheap MCU, like the ATmega328 in an Arduino, could handle e.g. the AES encryption often used once a secure HTTPS session is established but it won’t be able to handle the initial steps involving X.509 certificates and in particular the asymmetric cryptography required to exchange the relevant symmetric key. So TLS support is technically possible, if you have a high end MCU, but in practice something like a Pi (with a cheap wifi-dongle) makes more sense for HTTPS.

        • I’m using an ARM micro, the STM32F4. It looks like ST has an application note on using the PolarSSL library with this micro. I’ll post back if I successfully get it working.

  • So now we have the Xbee wifi, E-Imp, WiFly and the CC3000 to pick from. You guys really know how to spoil us with choices. altough this one seems more suitable in projects where one prefers their controller of choice to do its job rather then having to configure the module itself. To me this one seems good for those looking to migrate from wired solutions such as the Wiznet network modules.

    I especially like the SPI interface. Fast and efficient which is a plus for network modules of any kind.

  • Hey guys, i have an Arduino RedBoard and a SparkFun WiFi Breakout - CC3000, and i need to control my RedBoard from a mobile app. that sends characters to the connected SparkFun WiFi Breakout’s IP on my network. Does any one have an idea about it?! is it something like wifi.read() & wifi.print(“anything lol”). Thanks in advance.

  • I am having an issue getting the code to function on my Arduino Mega board. Without anything connected to the board, when I upload and run the BoardTest code, the serial monitor only reports these lines.

    ----------------------------
    SparkFun CC3000 - Board Test
    ----------------------------
    

    Shouldn’t it atleast fail to initialize and report that back in the serial monitor? When the breakboard is hooked up, there is no change, still does not report back a failed or success on the init. What version of Arduino Software should be used with the CC3000 library?

    • The gotcha with the Mega is that SPI is not on pins 10-13, like on the UNO. You’ll need to populate the 2x3 ISCP header, which has SPI.

      • I thought pins 50, 51, and 52 had the SPI broken out to them on the Mega. http://arduino.cc/en/Reference/SPI

        • Oops! I thought this was the shield. You are correct. Those pins should also work.

          I tested the library with Arduino v1.0.5, if that helps.

  • Hi, Will you release any breakout board for the CC3100 any time soon?

  • hi i need your help, i connect cc3000 wifi breakout on ARDUINO UNO i follow your guides and i run the code webclient but in serial monitor i read only this result: SparkFun CC3000 - WebClient what wrong?

  • How do I connect to the internet in raspberry pi with this board.

    • You would need to connect it to the SPI pins on the Raspberry Pi and write a device driver in Linux tha communicates to the CC3000 over SPI.

  • How do I connect to the internet in raspberry pi with this board.

  • Hello, I’m having a bit of trouble getting the examples to work. The board and scan test work just fine, but when I try to use the Web Client example I run into issues. For an unsecured network the example works as expected, but when I try to use my normal WiFi (a NAT router with WEP) the chip cannot connect to the AP. I changed the ssid, the security setting, and double checked the password, but it is still no good. Do you have any suggestions as to how to proceed? Thank you.

    Edit: I was able to use my phone as a hotspot (WPA2) and the cc3000 could connect through that

  • can CC3000 WiFi Breakout Board be interfaced with Phillips P89V51RD2 micro-controller which has an SPI interfacing ability

  • Hi, I was just wondering if Sparkfun is working on a breakout for TI’s CC3100/CC3200. the 3100 has a lot of advantages including SSL/TLS support. I’ve heard other companies similar to Sparkfun are working on this and I would love to purchase it from Sparkfun.

    Thanks for all you do guys!! Hiva Javaher

  • I did the tutorial fine, now I’m trying to post data to a different server. How do I post the timestamp at the time a request is sent? Is there anyway to do it without Time.h (from Arduino) or even better is there a way to do it WITH Time.h , cause currently the SFE_CC3000 library is not compatible with Time.h .

  • Has anyone gotten this to work with the mbed microcontroller? debugging doesnt work for me so I dont know why the module isnt connecting to the Access Point. Im pretty sure my pins are right and I have an external 5v power source supplying power to the module.

    • I have gotten the CC3000 to work with mbed. My problem was making sure it was getting enough power (it kept resetting if I tried to use the LPC1768’s onboard supply). It sounds like you’ve already tackled that with the external supply, though.

      • This is really odd. Can you confirm my pins? Connection-wise how I am connecting the sparkfun cc3000 to the LPC1768:

        MOSI - > mbed p5

        MISO -> mbed p6

        SCK -> mbed p7

        CS -> mbed p8

        INT -> mbed p9

        EN -> mbed p10

        cc3000 wifi(p9, p10, p8, SPI(p5, p6, p7), "ssid", "password", WPA2, false);
        

        Power Supply-wise: I have a usb powering the mbed and providing serial output. I have a SEPARATE USB female breakout that ONLY provides power to the cc3000 module at 5v 1A. This should be more than enough power for the module. I have switched out my wires multiple times to make sure it isn’t my wires that are causing the disconnect. Since I am getting serial readout, I doubt it’s a connection issue, the problem is though when I turn on debugging only this appears:

        cc3000 Hello World demo. [CC3000 : HCI TX] Command Sent : 0x4000

        and it stops. Has this happened to you before? This is so weird because it works perfectly on an arduino uno

        • Pinout looks correct. Which library are you using? I used Martin Kojtal’s library. Also, do you have a common ground running between the mbed and the CC3000? This has bitten me before.

          • sir…thank you so much. I didn’t realize it needed a common ground!!! why is this may I ask? I’ve spend two days looking into this!

            • While you might have the same neutral line running between your power supplied (the things plugged into the wall), the common (or “ground”) between the mbed and the CC3000 is not the same. If you look at a basic AC to DC circuit, you’ll see that they use a rectifier (4 diodes) to convert AC to DC. The common (white down arrow in the circuit) is unique to only that part of the DC circuit. Now imagine two separate AC/DC converters, one for the mbed and another for the CC3000. There is nothing to guarantee that the two commons are the same voltage. As a result, all your other voltages (VCC, IO lines, etc.) will be referenced to their local common. If your mbed is transmitting what it thinks is 3.3V over SPI, it might be 0.2V on the CC3000 because the common is at a completely different voltage! The way to fix that is to run a physical wire between the commons. Hope that helps :)

  • I’d like to use this, replacing a Bluetooth Mate Gold, to transmit data from a wearable wireless motion sensor. What’s the broadcast range of the CC3000?

    • It depends a lot on the antenna you are using. With the onboard chip antenna, I had no problems connecting to an access point a few rooms away. It had issues if I tried across our building (about 10 rooms away). We’re also talking about multi-path propagation. I have not tried it outside, so I can’t comment on its line-of-sight range, but I imagine it’s decent (probably a little less than something like a laptop).

      Now, if you put on a directional antenna (like a Yagi-Uda), you could probably get a few hundred yards.

  • Hello. I am using Arduino Mega, Sparkfun’s CC3000 with Adafruit library. Can someone tell me what changes i need to make in adafruit library and connections of Mega with CC3000? Any help? Thank you !

  • Is this board fcc certified? Or is it just inheriting the certification from the cc3000 module?

  • I’ve been having trouble using this as a web server. I’ve been trying to integrate some devices into OpenRemote and it will poll devices for status with REST requests every 5 to 10 seconds. I’ve confirmed that my sketches aren’t leaking memory or overrunning buffers, but after running for a relatively short period the device drops off the wifi network. I’m using the Adafruit library to implement a web server, and while I can ping the radio on its static IP address, the port 80 server stops responding to connection requests after a while.

    I’m wondering if anyone else has successfully used this to implement a reliable web server that runs for weeks?

  • Will this work with an Arduino Pro Mini 328 (5v - 16mhz)?

    Thanks!

  • Hi,

    There is a bug somewhere in the library.

    If you use a 64 byte password with WPA2 it does not connect. If you use 63 bytes or smaller then it works fine.

    It seems that for a 64 byte password one of the characters is lost somewhere in the library.

    Regards,

    John.

  • Hi,

    I’m really interested in this product, does anyone know if the library / board works with the Arduino Leonardo / ATmega32u4? I asked about the Adafruit library, but they said that they only had support for the UNO / MEGA, not the Leonardo or Due. They said it had something to do with the SPI pins - but I’m not sure. Has anyone tested this board + library with the Arduino Leonardo?

    Thanks, Quin

  • What antennas would you recommend for this board?

    Also, what other components are required to mount an antenna to this board?

    • Anything that is tuned for 2.4GHz and can be connected through a u.FL connector. It really depends on what your application is.

      • Not so great in almost all directions with smallest size, stick with the chip antenna already on the board.
      • Decent in almost all directions, use one of the rubber duck antennas (like the one we sell: https://www.sparkfun.com/products/145)
      • Good in a hemisphere above the antenna, use a patch antenna
      • High gain but directional, look into a cantenna or a Yagi-Uda

      To mount the antenna like in the hookup guide, you’ll need 2x angle brackets, 2x #4-40 screws and nuts along with a piece of plastic/wood with 3 holes drilled in it.

  • Hi, everyone

    Has anyone used the CC3000 as a web server? The library supports this feature?

    Best regards

  • how to use your library to connect to local host? client.connect(server,80,TCP). what should i put in the place of server? I cannot find tutorials regarding this board. All i found is adafruit. I want to control led from my localhost webserver. Please help !!!

    • Here is the getting started tutorial with our library and board https://learn.sparkfun.com/tutorials/cc3000-hookup-guide.

      What do you mean by localhost? I don’t think the CC3000 has a way to connect to itself (loopback) like most computers have. If you’re trying to connect to another computer, you need to have both the CC3000 and computer on a WiFi network. You will need to have the computer hosting a webpage and then connect the CC3000/microcontroller to the webpage via TCP. Hope that helps!

      • Sorry about local host. yah, you are right, i will run a webserver on my laptop . And then , i want to control led or sensors from the webserver using CC3000. But i don’t know how to connect to the webpage via TCP. That’s exactly what i’m asking for. client.connect(server,80,TCP) as in the webclient.ino is to connect to specific webpage. How should i put IP address in the place of server so that it will connect to my laptop IP address which will then connect to web server running on my laptop?

        Here is the tutorial that i’m following. sparfun and adafruit hv different libraries. So, i’m having a hard time trying to follow this tutorial which is meant for adafruit wifi breakout board.

        https://learn.adafruit.com/wifi-weather-station-arduino-cc3000/introduction

        • If you’re following the Adafruit tutorial, you’ll probably have to use their library (as the function calls are different between SparkFun’s and Adafruit’s libraries). Their library should still work with our board.

          You need to figure out the IP address of your laptop. This can be done by opening a command prompt and typing “ipconfig” for Windows or “ifconfig” for Linux/Mac.

          • If i’m using your library, how can i connect to certain IP address, let’s say to my laptop which is running a webserver?

            thank you.

            • Check out the “WebClient” example in the SFE_CC3000_Library. You can replace “server” in client.connect(server, 80, TCP) with an IP address (such as the IP address of your laptop). The IP address needs to be in the form of an “IPAddr” struct (the definition for the struct is found in SFE_CC3000.h), which is just 4 unsigned char (each char represents the 0-255 number for the IP address).

              For example, if you want to use the WebClient example and connect to www.example.com (whose IP address is 93.184.216.119) using just the IP address, replace the section under “// Make a TCP connection to remote host” with:

                // Make a TCP connection to remote host
                IPAddr ip_addr;
                ip_addr.address[0] = 93;
                ip_addr.address[1] = 184;
                ip_addr.address[2] = 216;
                ip_addr.address[3] = 119;
                if ( !client.connect(ip_addr, 80, TCP) ) {
                    Serial.println("Error: Could not make a TCP connection");
                }
              

              Give that a shot. Make sure that the IP address and port number (port 80 in the above example) match the address of your laptop and port number of your listening web server.

  • Shawn,

    Have you been able to test this breakout board with the Ardurino Mega 2560?

    The comment below about the wiring of the CC3000 to the Arduino MEGA 2560 board was more of a statement (untested) to transition to the topic of having custom pins. I wasn’t saying that it works but I can see how it was unclear. :)

    We have been unsuccessful on having the Sparkfun CC3000 work with the Ardurino Mega 2560.

    Things look to fail right from the start:


    SparkFun CC3000 - Ping Test

    Something went wrong during CC3000 init! Connecting to: bluedog Error: Could not connect to AP Error: Could not obtain connection details Looking up IP address of: 192.168.1.124 Error: Could not lookup host by name Pinging 116.101.115.116 3 times… Error: no ping response Error: Could not disconnect from network Finished ping test

    The webclient and Smartconfig also fail.

    There may be some issues with the SPI pin definitions between the UNO and the Mega. Would it be possible for you to try the MEGA 2560 on your end and let us know?

    Thank you so much!

    • Hi,

      I have it working on an Arduino Mega 2560, works like a charm.

      Of course you have to use different pins on the mega board for the SPI pins (SCLK, MOSI, MISO), they are in pins 50 to 52.

      Regards,

      John.

    • I recently updated the library to support the Mega. Try again and let me know if you have any issues!

  • I followed the hookup guide exactly the same, i tried both iphone and sumsung tablet. But why the breakout board didn’t connect to smartconfig app. why? it never connect. Help me!!! FYI . Security = WPA2-personal Encryption type = AES Is it because of the aes?

    • Please try the following, in order, and let me know of the outcome:

      1) Connect the CC3000 to an Arduino and run the “BoardTest” example from the SFE_CC3000_Library 2) If that works, run the “ScanTest” example sketch 3) Run the “WebClient” example sketch

      Don’t forget to change the pin numbers, SSID, and AP password in the sketches.

      WPA2 AES encryption should work, so long as you provide the correct password in the SmartConfig app. Do not use the “Key” function in the app, as it is currently not supported in the library.

      • Hey shawn,

        I’ve tried step 1,2 and 3. All worked fine. But smartconfig sketch didn’t work. The iphone app never connects to the wifi module. if ( !wifi.startSmartConfig(timeout) ) { Serial.println(“Error: Could not connect with SmartConfig”);

        Starting from this step. Here is the outcome from the serial monitor.

        SparkFun CC3000 - SmartConfig

        CC3000 initialization complete Starting SmartConfig Send connection details from app now! Waiting to connect… Error: Could not connect with SmartConfig Error: Could not obtain connection details Looking up IP address of: www.sparkfun.com Error: Could not lookup host by name Pinging 12.201.140.72 3 times… Error: no ping response Error: Could not disconnect from network Finished SmartConfig test

        I pressed the START button in the app as soon as i saw Waiting to connect in serial monitor

        • I have tried exactly the same as above. And I cannot seem to connect to any network? Did you ever find a solution for this problem?

          I can do scantest which is just fine, it just that smartConfig that does not work. Using the app from an iPhone 5S if that matters. Hope somebody can help.

        • Not sure why but when I used some LEDs to check the connectivity of the module, tx and rx to gnd on the debug pins, everything worked fine after that.

        • Hmm…..weird. Is your phone connected to the same WiFi network that you’re trying to connect the CC3000 to?

          • thx…bro, help me. i bought this board because i like this special phone network configuration feature that allows me not to make changes inside my program.

          • Yes,exactly. There is only one wifi network that i can connect.

  • I have downloaded smartconfig and run it on my smartphone, but I am anable to connect to the cc3000 wifi breakout. Can I have some input on how to connect it? Read read several time the hookup guide with no luck. Is my intention to use the cc3000 for a TCP/IP connection using a pic 18F2620 @ 40 MHz.

    More info: I tryed to connect cc3000 with smartconfig with cc3000 only connected to +5 volts and ground. Do I need to ENABLE something for the connection?

    Thank you in advance for any help given .

    Alberto

    • Unfortunately, the CC3000 does not default to SmartConfig on power up. You need to send special SPI commands to the CC3000 to tell it to enter the SmartConfig state. If you are using looking at TI’s MSP430 example library for the CC3000, you’ll see that wlan_smart_config_start() is called to enable the SmartConfig process in the CC3000.

      If you are trying to control the CC3000 from a PIC, you’ll have to port TI’s CC3000 library (written for the MSP430). Information on that can be found here: http://processors.wiki.ti.com/index.php/CC3000_Host_Driver_Porting_Guide. On the other hand, SparkFun’s CC3000 library was written for the Arduino (i.e. Atmel ATmega processor).

      Hope that helps!

      • Thank you for the reply. Yes your answer did help a lot, at least now I know that cc3000 must be enabled via SPI. Got to study the communication protocol and see if I am able to port it.

        Thank you again.

        Cheers

        Alberto

  • Is it a WIMAX or WiFi antenna?

  • Is the C3000 capable of operating in host mode? For robots I like to have the WiFi and DHCP served from the robot, so that any device that wants to talk to it doesn’t need to rely on external WiFi infrastructure. Of course, you’d also need to run a DHPC server on whatever is talking to the C3000 module to make it all work.

  • How does this compare to the Adafruit shield? It looks exactly the same to me!

  • Spark.io also has a good product using the same CC3000 chip.

  • I really hope this board fixes the CC3000 SPI MISO bug, which prevents us from using the CC3000 from sharing the SPI with other devices (see the conversation at http://forums.adafruit.com/viewtopic.php?f=19&t=49934)

    This sounds easy to fix. I’d like to use the CC3000 with an SPI based display. Can’t do it with Adafruit’s implementation.

    • hi clinton - the SPI MISO bug is fixed in the current adafruit versions of the CC3000 breakout!

    • Negative, sadly. The Shield has an IC that tri-states the MISO line to prevent those issues, but not the Breakout. You would have to use something like the 74AHC125 or a MUX to fix that issue.

      • Darn it. Seems like a low cost/footprint thing to fix. I’d encourage doing that.

        Thanks for letting me know.

Customer Reviews

No reviews yet.

Related Tutorials

CC3000 Hookup Guide

April 3, 2014

Getting started guide for the CC3000 shield and breakout board.