If you want to make a device that connects to the internet, you probably want WiFi.
Free wireless connections to the internet have become common enough that devices to use them are becoming popular. The boards below are good choices for portable, internet-connected projects.
The ESP8266 was made for WiFi, and is extremely popular in that space. It has a 32-bit microcontroller, 4MB of Flash for program and data storage, and a built-in operating system that keeps the Wifi radio running.
The OS handles all WiFi communication, so your code gets WiFi for free.. with some limits mentioned below. You don't have to write any low-level network code or allocate RAM for the WiFi hardware, you just call functions provided by the OS.
The Flash memory array is large enough to hold the support files used by Python code, so Adafruit has built CircuitPython to work on the ESP8266.
If you're trying to choose a WiFi development board, there are two points to remember:
- The ESP8266 has relatively few GPIO pins. It can talk to a couple of external sensors and read a couple of buttons, but if you plan to pile on the hardware, you'll run into the hardware's limits quickly.
- The ESP8266's operating system has to check the WiFi radio every few milliseconds. If it can't, its watchdog timer will crash the system and report a 'wdt error'. Unlike other microcontrollers, you don't have complete control of the hardware, and have to make your code cooperate with the rest of the system.
The WINC1500 is a Wifi peripheral that can talk to a microcontroller through its SPI interface. In the Arduino programming environment, it's supported by the Wifi101 library.
Unlike the ESP8266, a microcontroller connected to the WINC1500 has to run all the WiFi and low-level network code itself. You retain complete control of the hardware, but you do have to leave time for that code to run, and it does consume RAM.
The Feather pairs the WINC1500 with a 48MHz SAMD21G microcontroller, which has plenty of power and RAM for additional code.