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.
This skill defines how difficult the soldering is on a particular product. It might be a couple simple solder joints, or require special reflow tools.
Skill Level: Noob - Some basic soldering is required, but it is limited to a just a few pins, basic through-hole soldering, and couple (if any) polarized components. A basic soldering iron is all you should need.
See all skill levels
If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.
Skill Level: Competent - The toolchain for programming is a bit more complex and will examples may not be explicitly provided for you. You will be required to have a fundamental knowledge of programming and be required to provide your own code. You may need to modify existing libraries or code to work with your specific hardware. Sensor and hardware interfaces will be SPI or I2C.
See all skill levels
If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.
Skill Level: Rookie - You may be required to know a bit more about the component, such as orientation, or how to hook it up, in addition to power requirements. You will need to understand polarized components.
See all skill levels
We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.
No reviews yet.
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.
Cool! Thanks for sharing. I'll have to check it out!
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?
this is very wrong, all your pins are mismatched
Thank you for testing this! Great to know that the Mega works!
For a purely C++ solution, check out the embed library: https://mbed.org/cookbook/cc3000
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.
Hi, did you have any luck implementing SSL/TLS security using ARM with CC3000.
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.
Has anyone had any issues when trying to connect to a host on the local network via its IP address?
I am using an Arduino Mega with the breakout CC3000. I have no issues when I connect to an external website via hostname. However when I try to connect to a Beaglebone Black via it's IP address it fails. The BeagleBone Black can ping the CC300 and get replies back. When the CC3000 initiates a TCP connection it hangs. Doing a TCP dump on the beaglebone, shows that a syn is never sent from the CC3000.
I can run the "Test Ping" example and ping sparkfun.com, when I change the url to the internal address of the beaglebone it fails. It shows 0 packets sent.
I am looking at this WiFi module as my application is not supported by the ESP8266, can this module connect directly to a URL? Not just an IP address? In my project it must be able to connect to a URL
done
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.
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?
Check out http://www.ti.com/tool/cc3100boost
There are no plans for the CC3100 for now, but we are working on some other WiFi modules.
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?
Does the BoardTest.ino example work?
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
Yes, but you will need to port the library to the other microcontroller.
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
We're definitely looking at them :)
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
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 :)
Yup this was so helpful :) thank you so much xD. I think I might write a comprehensive guide for those trying to do the same thing I did.
Any news on that guide?
Not a problem! A guide would definitely be really helpful :)
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?
It is 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!
It should work with any of the 328p-based Arduinos.
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.
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
It looks like it is possible, but our library does not have it implemented. Adafruit's library looks like it has web server capabilities.
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:
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.
That is really strange...those TX and RX pins have nothing to do with connectivity - they're really only meant for debugging the internals of the CC3000 module:
http://processors.wiki.ti.com/index.php/CC3000_Radio_Tool
Yeah. Just disconnected the LEDs and everything still works. Not sure why it started working in the first place then. Gonna try to recreate the issue.
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.
Is your network 802.11n and/or 5GHz?
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?
The antenna is tuned for 2.4 GHz. The CC3000 only works on WiFi, specifically 802.11 b/g.
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.
The CC3000 cannot act as an access point. It needs a separate AP to connect to.
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.