Wireless
Wireless communication turns your microcontroller into something that can talk to phones, the internet, other boards, and cloud services. CircuitPython supports three major wireless approaches, and choosing the right one depends on what you are trying to do.
BLE vs WiFi vs Radio — when to use each
Bluetooth Low Energy (BLE)
BLE is designed for short-range, low-power, device-to-device communication. Think of it as a cable replacement. Your board can act as a peripheral (advertising data that phones or computers pick up) or as a central (scanning for and connecting to other BLE devices like heart rate monitors or keyboards).
Use BLE when:
- You want to talk directly to a phone, tablet, or laptop without a router
- You need low power — BLE advertising can run for hours on a LiPo battery
- You are building a wearable, a wireless controller, or a sensor that a phone will read
- You want to use HID profiles (keyboard, mouse, gamepad) without a USB cable
Boards that support BLE: Feather nRF52840 Express, Circuit Playground Bluefruit, CLUE, ItsyBitsy nRF52840
WiFi
WiFi connects your board to a local network router and from there to the internet. It enables HTTP requests, MQTT messaging, and cloud integrations. WiFi uses more power than BLE, but the bandwidth and reach are far greater.
Use WiFi when:
- You want to fetch data from an API (weather, stock prices, NASA picture of the day)
- You want to publish sensor readings to a cloud dashboard like Adafruit IO
- You need to communicate between boards on the same network via MQTT
- You are building something that stays plugged in
Boards that support WiFi: Feather ESP32-S2, Feather ESP32-S3, Raspberry Pi Pico W, PyPortal, Metro M4 AirLift, QT Py ESP32
RFM Radio (Sub-GHz)
RFM modules (RFM69 at 433/868/915 MHz, LoRa RFM95 at 915 MHz) use license-free radio bands to transmit small packets over very long distances — sometimes miles — without any infrastructure. There is no router, no phone, no internet required. Two boards with matching radios can communicate directly.
Use RFM radio when:
- You need range well beyond Bluetooth (parking lot, across a building, across a field)
- There is no WiFi infrastructure available
- You are building a sensor node that only sends a few bytes at a time
- You want a completely offline, self-contained link between two boards
Boards/modules: Any Feather with an RFM69 or RFM95 LoRa radio wing, Feather M0 RFM69, Feather M0 RFM95 LoRa
Choosing at a glance
| Need | Best choice |
|---|---|
| Talk to a phone directly | BLE |
| Send data to the internet | WiFi |
| Long range, no router | RFM radio |
| Low power wearable | BLE |
| Frequent sensor updates to a dashboard | WiFi (MQTT) |
| Two boards communicating in a field | RFM radio |
| Wireless keyboard or gamepad | BLE HID |
| Fetch a web API | WiFi |
Board requirements at a glance
| Board | BLE | WiFi | Notes |
|---|---|---|---|
| Feather nRF52840 Express | Yes | No | Strong BLE support, large flash |
| Circuit Playground Bluefruit | Yes | No | Built-in NeoPixels, great for learning |
| CLUE | Yes | No | Built-in display and many sensors |
| ItsyBitsy nRF52840 | Yes | No | Compact, breadboard-friendly |
| Feather ESP32-S2 | No | Yes | Native USB, good memory |
| Feather ESP32-S3 | No | Yes | More flash and RAM than S2 |
| Raspberry Pi Pico W | No | Yes | Affordable, CYW43439 chip |
| PyPortal | No | Yes | Built-in TFT display + ESP32 co-processor |
| Metro M4 AirLift | No | Yes | Arduino-form-factor + ESP32 AirLift |
| QT Py ESP32 | No | Yes | Tiny, great for embedded projects |
Project progression
Start with the level that matches your experience. Each project links forward to more advanced ones.
BLE projects
| Level | Project | What you build |
|---|---|---|
| Starter | Getting Started with Bluetooth | Board broadcasts name and counter — visible in Bluefruit LE Connect |
| Builder | BLE Heart Rate Display | Connect to a chest strap, pulse NeoPixels to your heartbeat |
| Builder | Wireless BLE Keyboard | 5 buttons send keystrokes wirelessly to any device |
| Hacker | BLE MIDI Controller | Capacitive touch pads + NeoPixels = wireless instrument for GarageBand |
WiFi projects
| Level | Project | What you build |
|---|---|---|
| Starter | Adafruit IO Basics | Publish a sensor reading to a live cloud dashboard |
| Starter | Pico W WiFi Quick Start | Fetch a JSON API and print results in the REPL |
| Builder | Connected Weather Lamp | Cloud lamp that changes color based on live weather data |
| Builder | MQTT Dashboard with Home Assistant | Touchscreen that publishes sensors and receives commands |
| Hacker | IoT Plant Monitor | Soil moisture + temp, local display, cloud logging, remote pump |
Not sure where to start?
If you have a phone and a BLE board, start with Getting Started with Bluetooth. If you have a Pico W and a USB cable, start with Pico W WiFi Quick Start. Both projects require no extra hardware.