Around 2012, low cost WiFi embedded modules started appearing to makers. At first they were $20 each but the introduction of the TI CC3000 broke the $10/ea barrier (in large qty) and so embedded boards with WiFi started coming on the market. Then in 2014, Espressif released a $2 WiFi-inclusive microcontroller called the ESP8266 and competition heated up. Now there's a lot of WiFi options available for makers to create IoT projects!
WiFi is just about everywhere but there's a few things to watch out for:
- Compared to Bluetooth, WiFi uses a ton of power, you can easily end up using 250mA during transmit and receive/listening. Try to use low power modes to reduce that if possible
- Compared to ZigBee, BTLE or LoRa/Packet radio, WiFi can transfer a lot more data a lot faster! You can easily stream compressed audio over WiFi.
- Compared to Ethernet, you may have connectivity problems, just like you do when your laptop has poor reception
- Compared to Cellular, WiFi tends to need a base-station nearby, so you can't use it in the middle of nowhere unless you have a WiFi hotspot
- Compared to just about any other wireless protocol, WiFi is strongly supported by every computer/tablet/phone, has strong encryption built-in, and can reach anywhere around the world!
- Like LoRa & packetized radio, you can create a WiFi ad-hoc network but this usually requires a little extra effort
All of our current WiFi Feather options support WPA PSK passcoding and SSL encryption. The full capabilities of SSL may vary, and you may have to do a little extra work for adding the SSL certificate to the module for true SSL checking.
The Feather Huzzah ESP8266 is a perennial favorite. It features an FCC/CE certified ESP-12 module that contains an ESP8266 chip, 4 MB of SPI flash and antenna.
- The ESP8266 is super popular, has tons of projects, tutorials, guides
- Arduino support is very good, with a community/Espressif supported build that has been updated and maintained
- Can also be used with MicroPython or Lua
- Fast and reliable WiFi connectivity with SSL support
- Speedy chip at 80 MHz
- Very affordable, lower cost than other WiFi chipsets
- High power draw, no easy-to-use sleep modes
- Single core design has a real time component that is not documented but required cycle time, so Arduino code needs to constantly yield() or the RTOS component will reset/crash
- Not a lot of GPIO pins, many have special functions so you can't use them for any purpose
- Only one analog input pin, 1.0V max
- No real datasheet or in-depth documentation. Most information is community-sourced or 'word-of-mouth'. Tech support is minimal.
For the most part, the low cost of the ESP8266 has been enough incentive for people to overlook the drawbacks of the chip and figure out how to create projects with what they've got.
The Feather M0 + ATWINC1500 is a pairing of chips: there's a main processor (the Feather M0 part) and the wifi processor module (the ATWINC1500 part). As such, these Feathers are more expensive than all-in-one WiFi solutions. But, as a positive, they have a really powerful and well-documented main processor that runs separately from WiFi which can give you more control.
- Main chip is ATSAMD21G18, which has solid official Arduino support
- Tons of GPIO and peripherals: analog inputs, I2S audio, DMA and even analog output support
- Proper sleep modes, can shut down WiFi module completely
- ATWINC1500 has some low-power mode support
- Fast and reliable WiFi
- Good SSL support, including SSL certificate uploading for fingerprinting
- Main processor is well-known and documented Cortex M0+ chip. WINC1500 has official support from Atmel/Microchip.
- Can use external antenna with the uFL version
- More expensive than single-chip solutions
- Firmware on the module is opaque, no way to really debug or analyze beyond the firmware provided
- Not as popular as ESP8266 so fewer projects published
- No current MicroPython support for the ATWINC1500
The ESP32 is the 'big sister' the the ESP8266. It has two cores, so that one can take care of the wireless management and data while the other one does processing
- High speed dual chipset has tons of processing capabilites
- Lots of GPIO, analog inputs, two analog outputs, peripherals a-plenty!
- WiFi, Bluetooth LE and Bluetooth Classic all in one chipset, so you can do a wide range of IoT
- Plenty of example code support from Espressif, and they've hired skilled community members to write code, libraries, Arduino core support, and projects
- Low power sleep support
- MicroPython support
- Slow roll-out means not as many projects for this chipset yet, but it's gaining popularity
- No detailed documentation about peripherals. Support is offered as example code.
- As of mid-2017, core WiFi and BTLE functionality is supported but some capabilities like classic BT or dual-wireless projects are still in-the-works
The WICED Feather builds on a Broadcom (now Cypress) module, the same used in the Particle Photon. This chip combines an STM32 and BCM radio. Thanks to Thach's amazing software stack, we've taken a very complex and powerful chipset pair and made it trivially easy to get working within Arduino.
- Powerful ARM Cortex M3 MCU (STM32F205) running at 120MHz
- Works directly from the Arduino IDE, generating native ARM code that runs directly on the target MCU.
- Plenty of GPIO and powerful peripherals, including native USB support with a custom USB DFU bootloader for programming from the Arduino IDE or from the command line.
- Fast throughput due to the efficient WiFi stack and fast multi-lane connection between the MCU and the Broadcom radio.
- Advanced features for various encryption modes, including TLS 1.2 (required for Amazon Web Services, etc.).
- The WiFi stack and security libs are black box closed source solutions, meaning we have little influence over bug fixes and getting changes into the code. We're largely at the mercy of Broadcom (now Cypress) for any bug issues, and like any very complex stack there are known bugs in the security and wireless layers.
- No access to the low level source code since it is under very strict NDA, and we had to bend over backward to implement a layer that sits on top of the NDA code so that we have something we can expose.