Arduino Nano 33 BLE: Your Tiny Hub for Wireless IoT
The Arduino Nano 33 BLE is a compact yet powerful microcontroller board featuring Bluetooth Low Energy connectivity, making it ideal for portable and wireless projects.
The Arduino Nano 33 BLE is a small form-factor board designed for makers and engineers who need a compact microcontroller with wireless capabilities. It's part of the Arduino Nano family, known for its small size and versatility, but with the significant addition of Bluetooth Low Energy (BLE) and a more powerful microcontroller. This board bridges the gap between simple microcontrollers and more complex IoT platforms, offering a robust solution for projects requiring low-power wireless communication.
At its heart lies the nRF52840 System-on-Chip (SoC) from Nordic Semiconductor. This 32-bit ARM Cortex-M4F processor is highly capable, offering a good balance of performance and power efficiency, crucial for battery-powered applications. The nRF52840 is also a popular choice for its integrated BLE 5.0 radio, along with support for other wireless protocols like ANT and 802.15.4, although the Arduino Nano 33 BLE primarily exposes BLE functionality.
Released around 2019, the Arduino Nano 33 BLE was a significant step up for the Nano line, bringing modern wireless connectivity and a more advanced processor to the familiar Nano footprint. It's particularly well-suited for projects that need to communicate with smartphones, other BLE devices, or create small, distributed sensor networks. Its small size makes it perfect for wearable technology, remote sensing, and IoT devices where space is at a premium.
This board appeals to a wide range of users, from students learning about embedded systems and wireless communication to experienced engineers prototyping low-power IoT devices. Its ease of use, thanks to the Arduino IDE, combined with the powerful nRF52840, makes it an excellent choice for both beginners taking their first steps into BLE and advanced users looking for a compact, efficient wireless microcontroller.
Watch
Related video, embedded from YouTube.
Specifications
| Microcontroller / SoC | Nordic Semiconductor nRF52840 |
| Architecture | 32-bit ARM Cortex-M4F |
| Clock speed | 64 MHz |
| Flash / Storage | 1 MB |
| RAM / SRAM | 256 KB |
| Operating voltage | 3.3V |
| Digital I/O pins | 21 |
| Analog / ADC | 7 |
| PWM | 6 (on digital pins) |
| Connectivity | Bluetooth Low Energy (BLE) 5.0 |
| USB | Micro-USB (for power and programming) |
| Power input | 5V via Micro-USB or VIN pin (3.3V regulator onboard) |
| Dimensions | 48mm x 18mm |
Pinout & pin functions
| Pin | Function |
|---|---|
| 3V3 | Power output (3.3V) |
| GND | Ground |
| VIN | Power input (typically 5V, regulated to 3.3V) |
| D0 (RX) | Digital I/O, UART RX |
| D1 (TX) | Digital I/O, UART TX |
| D2 | Digital I/O |
| D3 | Digital I/O, PWM |
| D4 | Digital I/O |
| D5 | Digital I/O, PWM |
| D6 | Digital I/O, PWM |
| D7 | Digital I/O |
| D8 | Digital I/O |
| D9 | Digital I/O, PWM |
| D10 | Digital I/O, SPI MOSI, PWM |
| D11 | Digital I/O, SPI MISO |
| D12 | Digital I/O, SPI SCK |
| D13 | Digital I/O, SPI CS |
| A0 | Analog Input (ADC) |
| A1 | Analog Input (ADC) |
| A2 | Analog Input (ADC) |
| A3 | Analog Input (ADC) |
| A4 | Analog Input (ADC), I2C SDA |
| A5 | Analog Input (ADC), I2C SCL |
| A6 | Analog Input (ADC) |
| A7 | Analog Input (ADC) |
| RESET | System reset pin |
| USB D- | USB Data - |
| USB D+ | USB Data + |
Wiring & circuit basics
The Arduino Nano 33 BLE operates at a logic level of 3.3V. This means any components you connect directly to its digital I/O pins should also be 3.3V compatible. Connecting 5V devices directly can damage the board. If you need to interface with 5V components, use a logic level shifter. Powering the board is typically done via the Micro-USB port, which supplies 5V. Alternatively, you can use the VIN pin, which also accepts a 5V input and routes it through the onboard 3.3V regulator. Avoid applying more than 5V to VIN to prevent overheating the regulator.
For a simple LED project, connect the anode (longer leg) of an LED to a digital pin (e.g., D5) through a current-limiting resistor (typically 220-330 ohms). Connect the cathode (shorter leg) of the LED to a GND pin. When the digital pin is HIGH (3.3V), current flows through the resistor and LED, illuminating it. When the pin is LOW (0V), the LED turns off.
For an I2C sensor, like a BME280 or an MPU-6050, you'll need to connect its VCC to the 3.3V pin on the Nano 33 BLE, its GND to a GND pin, its SDA line to A4, and its SCL line to A5. Ensure the sensor itself is 3.3V compatible or uses a logic level shifter if it's a 5V device. The Nano 33 BLE's nRF52840 has robust I2C support, making it easy to integrate multiple I2C devices by using their unique addresses.
Programming & getting started
The primary toolchain for the Arduino Nano 33 BLE is the Arduino IDE. After installing the board support package for the nRF52840 (available through the Board Manager), you can write and upload sketches using C++. The board also supports MicroPython and CircuitPython, offering more flexible, high-level programming options. For advanced users, the Nordic nRF Connect SDK or PlatformIO can be used for more complex firmware development, providing access to a wider range of libraries and debugging tools.
To upload your first sketch: 1. Install the Arduino IDE. 2. Go to Tools > Board > Boards Manager. Search for 'nRF52' and install the package. 3. Select 'Arduino Nano 33 BLE' from Tools > Board. 4. Connect the Nano 33 BLE via Micro-USB. 5. Select the correct COM port under Tools > Port. 6. Open the 'Blink' example sketch (File > Examples > 01.Basics > Blink). 7. Click the Upload button. The onboard LED (often labeled L) should start blinking.