Zigbee
Interfacing XBee S2C Zigbee with Arduino Uno
What is the XBee S2C?
XBee S2C practical reference
The industry-standard Zigbee module line, offering mature mesh-networking firmware and strong configuration tooling via XCTU. Unlike bare Zigbee chips that require custom firmware development, the XBee S2C ships with Digi's proven Zigbee mesh stack already loaded, and can be configured entirely through Digi's free XCTU desktop application without writing any radio-stack code — making it the go-to choice for reliable, professional-grade mesh sensor networks where development time matters more than per-unit cost.
Key specifications
- Chipset: Digi XBee S2C, Zigbee mesh networking module
- Frequency band: 2.4GHz ISM band, IEEE 802.15.4 / Zigbee
- Operating voltage: 2.1V–3.6V DC (3.3V typical)
- Operating current: ~33 mA TX (typical), ~28 mA RX, µA-level in sleep mode
- Range: ~90m indoor / ~1200m outdoor line-of-sight (module-dependent, PRO variants extend this)
- Network role: Coordinator, router, or end-device, configurable via XCTU or AT/API commands
- Configuration: Digi XCTU desktop tool for firmware updates, network settings, and diagnostics — no custom radio stack coding required
- Interface: UART (AT command mode or binary API frame mode) to the host microcontroller
- Form factor: Standard XBee 20-pin through-hole footprint, compatible with common XBee shields and adapter boards
Pinout and connection notes
XBee modules use a non-breadboard-friendly 2mm pitch pin spacing, so most builders use a dedicated XBee breakout adapter or shield to convert to standard 0.1-inch headers; these adapters also typically include the necessary 3.3V regulation since the module itself is not 5V tolerant. Configuration and firmware are handled through Digi's free XCTU software over a USB-serial adapter before deployment.
- VCC: Power, 3.3V DC (NOT 5V tolerant — most XBee shields include a regulator)
- GND: Ground
- DOUT (TX): UART transmit — connect to microcontroller RX
- DIN (RX): UART receive — connect to microcontroller TX
- RESET: Active-LOW module reset
- ASSOCIATE: Indicates network association status via LED blink pattern
- CTS/RTS: Optional UART hardware flow control pins
Integration checklist
- Confirm the exact part number and breakout-board revision.
- Verify supply voltage, current demand, logic levels, and signal direction against the datasheet.
- Check controller pin assignments and bus address or interface mode against the example code.
- Power up with external loads disconnected, then test signals before full integration.
- If readings or communication fail, check power and ground first, then pin mapping, interface settings, and library initialization.
Troubleshooting and reproducibility
Record the board used, wiring, library/version, supply arrangement, and measured behavior. Use the selected board-specific wiring example as the source of truth. Never assume visually similar modules share identical voltage tolerance or pin order.
Setting Up XBee S2C with Arduino Uno
Library
SoftwareSerial by Arduino core
Built into the Arduino core — no install needed, just #include <SoftwareSerial.h>. An XBee Explorer/adapter board (with level shifting) is the recommended way to wire this, rather than direct jumper wires.
Wiring
| Component pin | Arduino Uno pin | Note |
|---|---|---|
| VCC | — | 3.3V ONLY — this module is not 5V tolerant on power. Use a dedicated 3.3V regulator or an XBee Explorer board, not the Arduino 3.3V pin if driving anything else from it too. |
| GND | GND | |
| DOUT (TX) | D2 (RX) | Module output is 3.3V logic — Arduino reads this fine as HIGH. |
| DIN (RX) | D3 (TX) via divider | Use a voltage divider or logic-level shifter — DIN is not 5V tolerant. |
Swipe sideways to see every column →
- Every XBee S2C ships in a mesh (ZigBee) network role that must be configured in XCTU (coordinator/router/end device) before it will talk to another XBee — fresh out of the box, two XBees will not automatically pair like an HC-05 does.
- This module is strictly 3.3V — unlike some "5V tolerant" sensor modules, feeding 5V into VCC can permanently damage it. An XBee Explorer USB or Explorer Regulated board handles the level shifting and regulation safely.
- In transparent (AT) mode this behaves like a wireless serial cable once configured; API mode gives structured packets with addressing but needs the library-level API frame parsing instead of raw byte pass-through.
Related Components
CC2530
Mesh-networking Zigbee radio module for home-automation sensors.
ESP 01
Minimal ESP8266 breakout for adding Wi-Fi to any microcontroller.
ESP8266 Module
General-purpose ESP8266 breakout with more accessible GPIO.
HC-05 Bluetooth Module
Add Bluetooth Classic serial communication to Arduino projects with a UART connection, safe logic levels, and a practical pairing workflow.
Related Guides & Projects
Arduino Uno R4 Minima Pinout: Every GPIO, ADC, DAC, and Op-Amp Pin Explained
A complete Arduino Uno R4 Minima pinout reference — digital I/O, ADC, DAC, op-amp, CAN, dual UART, and exactly what it leaves out compared to the WiFi variant.
Mastering PWM on Arduino: Dimming LEDs and Controlling Motors
Understand what PWM actually is on Arduino, dim an LED smoothly, and safely control a DC motor's speed with a driver chip -- plus the mistakes (like wiring a motor straight to a pin) that damage boards.
4-Digit 7-Segment Counter with TM1637 & Arduino
Drive a TM1637-based 4-digit 7-segment display with Arduino Uno to show a real-time up/down counter, elapsed timer, and scrolling text. Covers library setup, brightness control, and custom segment mapping.
Arduino Uno R4 Minima vs WiFi: Which One Should You Choose?
Same processor, same memory, different price. Here's what the WiFi variant's extra hardware actually gets you, and when the Minima is the smarter buy.