We love Blinka & CircuitPython, and want to share it with the world! But how can we get CircuitPython talking to everyone?

This guide will show you how to connect your CircuitPython board to the Internet, by using an ESP8266 or ESP32 as the ‘Wireless modem’ - we’ll even show you how to upload the required AT command firmware to the chip, all from your CircuitPython board.

Yallah! Let’s go!
The Internet offers wonders beyond belief, but first we have to connect to it. There’s two ways we can do that.

Use a chip with integrated WiFi such as the ESP8266 or ESP32
The all-in-one chips are powerful and low cost, but have some drawbacks. The ESP8266 has very few GPIO pins, and they are limited in functionality - for example only one ADC and it’s not easy to use. A RTOS also takes up a lot of processor time, and makes real-time control difficult for some things like NeoPixels. The ESP32 solves a lot of these issues but doesn’t have the native USB we require for a good CircuitPython experience.”

Link