For years we've seen all sorts of microcontroller-friendly WiFi modules but none of them were really Adafruit-worthy. Either they were too slow, or too difficult to use, or required signing an NDA, or had limited functionality, or too expensive, or too large. So we shied away from carrying any general purpose microcontroller-friendly WiFi boards.
NO LONGER!
The CC3000 hits that sweet spot of usability, price and capability. It uses SPI for communication (not UART!) so you can push data as fast as you want or as slow as you want. It has a proper interrupt system with IRQ pin so you can have asynchronous connections. It supports 802.11b/g, open/WEP/WPA/WPA2 security, TKIP & AES. A built in TCP/IP stack with a "BSD socket" interface. TCP and UDP in both client and server mode, up to 4 concurrent sockets. It does not support "AP" mode, it can connect to an access point but it cannot be an access point.
We wrapped this little silver modules in a tidy breakout board. It has an onboard 3.3V regulator that can handle the 350mA peak current, and a level shifter to allow 3 or 5V logic level. The antenna layout is identical to TI's suggested layout and we're using the same components, trace arrangement, and antenna so the board maintains its FCC emitter compliance (you'll still need to perform FCC validation for a finished product, but the WiFi part is taken care of). Even though it's got an onboard antenna we were pretty surprised at the range, as good as a smartphone's.
New! As of 3/20/2014 we are shipping v1.1 which adds a tri-state buffer to the MISO pin so that you can use the CC3000 with other SPI devices on the same bus.
Each order comes with one fully assembled and tested breakout and a small stick of header you can use to solder in and plug into a breadboard. We don't have a detailed tutorial yet but to get you started, we've got a fully working Arduino library that is based off of TI's codebase but adapted for use with the AVR. We also have example code showing how to scan the SSID's, connect to your access point and run DHCP, do a DNS lookup to IP address, ping a site and connect to a remote TCP socket such as a website and print out the page.
Please note the hardware is good, but the library code does not yet support all of the CC3000's functionality. At this moment, SSID scanning, connection, DHCP, DNS lookup, ping, and UDP/TCP client & TCP server connections (eg connect to a website and grab data or host a very short website) all work and are tested with example code. Check out our tutorial for wiring and Arduino library downloads
For use with Arduino Uno, Leonardo/Micro & Mega only at this time - we'll try to get the code ported to the Due at some point but no ETA.
Specifications
- Dimensions: 26.22mm / 1.03" x 40.45mm / 1.59" x 2.95mm / 0.11"
- Weight: 3.46g
Documents
- List of wifi access points used to test the CC3000 (by TI, not verified by Adafruit)
- Using an Apple Airport? Check this thread for details on how to set it up for use with the CC3000
- Tutorial Adafruit CC3000 WiFi
- Tutorial WiFi Weather Station
- Tutorial Adafruit CC3000 WiFi and Xively
- Tutorial WiFi Candy Bowl Monitor
- Tutorial WiFi Controlled Mobile Robot
- Tutorial Cloud Thermometer