Right now, there are two chips you can use and two communications methods.
- UART AT Commands - Just like those old modems you can sent AT control commands to firmware written by Espressif to connect to servers and transfer data. Does it work? Pretty much! Does it work well? Not really. But sometimes you don't have a choice and sometimes its OK if its flakey and inconsistant cause your code can keep re-trying till it works. You can run it on ESP32 or ESP8266/ESP8285. You can use as little as 3 pins (RX, TX and RTS)
- SPI Packetized Commands - This is a way superior method, that was developed by Arduino for use as an Arduino co-processor. Since the code is open source it can be fixed, modded, improved and enhanced. SPI packets are also way easier and faster to handle than UART AT commands. You can only use this with ESP32. It requires at least 5 pins (MOSI, MISO, SCK, CS, BUSY)
- ESP8266/ESP8285 - This is lower cost and can only use the UART AT command set code. Its less expensive, somewhat more common than the ESP32 but is (in our opinion) flakey and with slow connections and inconsistent SSL support. We don't recommend it.
- ESP32- This is a little more expensive but can use both UART AT commands and SPI commands. SSL support is much better, and when used with SPI its all very snappy and a good experience.
If you can choose - use ESP32 with SPI Commands - it's the best experience by far.
If you are using a Particle Argon, you are forced to use ESP32 with AT Commands because SPI pins were not connected inside (if you're a customer, you could ask Particle if they'll fix this on their next revision)
If you are for some reason totally out of luck, you can use ESP8266 or ESP8285 with AT commands, but it can be frustrating.
The first step is to get an ESP8266, ESP32 or a Particle Argon with it built-in ESP32 module. We recommend an ESP32 breakout or Feather.
It is not recommended that the AT Firmware be used with other ESP32 boards since they can support the SPI interface for the Adafuit_CircuitPython_ESP32SPI library
Using the Particle Argon requires that you replace the Particle.IO firmware with the Adafruit Bootlader and Circuitpython. This requires special tools and is for experienced users. See Installing CircuitPython on a Particle Argon