Arduino Uno WiFi Rev1: Your Gateway to Connected Projects
The Arduino Uno WiFi Rev1 brings wireless connectivity to the familiar Uno form factor, ideal for IoT and networked projects.
The Arduino Uno WiFi Rev1 is a microcontroller board based on the ATmega32U4 microcontroller, featuring integrated Wi-Fi connectivity. It builds upon the widely popular Arduino Uno R3 design, maintaining a similar footprint and pinout for ease of transition, but crucially adds an ESP8266 Wi-Fi module. This combination allows makers to easily create projects that can connect to the internet, communicate with other devices on a local network, or be controlled remotely.
At its core, the ATmega32U4 is an 8-bit AVR microcontroller running at 16 MHz. It provides a robust set of peripherals, including USB functionality, which eliminates the need for a separate USB-to-serial converter chip as seen on earlier Uno boards. The integrated ESP8266 module (specifically, the ESP-01 module) handles all the Wi-Fi communication, allowing the ATmega32U4 to focus on the main application logic while offloading the network tasks. This separation of concerns makes developing connected projects more manageable.
Released around 2016, the Uno WiFi Rev1 was Arduino's answer to the growing demand for connected hardware within the maker community, offering a more integrated solution than requiring separate shields. It sits as a bridge between the classic, standalone Arduino boards and more advanced, Wi-Fi-centric platforms like the ESP32. This board is particularly suited for hobbyists, students, and engineers looking to prototype Internet of Things (IoT) devices, remote sensor monitoring systems, or simple web-controlled gadgets without the complexity of managing external Wi-Fi modules separately.
While the ATmega32U4 handles the primary processing and I/O, the ESP8266 is responsible for Wi-Fi protocols (802.11 b/g/n). The two communicate via a serial interface. This board is programmed using the Arduino IDE, leveraging the familiar Arduino programming language and libraries, with specific libraries available to manage the Wi-Fi module. This makes it accessible to users already familiar with the Arduino ecosystem.
Watch
Related video, embedded from YouTube.
Specifications
| Microcontroller / SoC | ATmega32U4 (main) + ESP8266 (Wi-Fi module) |
| Architecture | 8-bit AVR (ATmega32U4) |
| Clock speed | 16 MHz (ATmega32U4) |
| Flash / Storage | 32 KB (ATmega32U4) - approx. 4 KB used by bootloader |
| RAM / SRAM | 2.5 KB (ATmega32U4) |
| Operating voltage | 5V |
| Digital I/O pins | 14 (of which 6 can provide PWM output) |
| Analog / ADC | 6 (10-bit resolution) |
| PWM | 6 pins (3, 5, 6, 9, 10, 11) |
| Connectivity | Wi-Fi 802.11 b/g/n (via ESP8266 module) |
| USB | ATmega32U4 built-in USB 2.0 Full Speed interface |
| Power input | 7-12V recommended via DC barrel jack or VIN pin, 5V via USB or 5V pin |
| Dimensions | 75mm x 70mm (approx.) |
Pinout & pin functions
| Pin | Function |
|---|---|
| 5V | Power output (+5V) |
| 3.3V | Power output (+3.3V from onboard regulator) |
| GND | Ground |
| GND | Ground |
| IOREF | Voltage Reference for I/O pins (typically 5V) |
| RESET | System reset pin |
| 0 (RX) | Serial communication receive pin (ATmega32U4 UART) |
| 1 (TX) | Serial communication transmit pin (ATmega32U4 UART) |
| 2 | Digital I/O, can be used as interrupt input |
| 3 | Digital I/O, PWM output |
| 4 | Digital I/O |
| 5 | Digital I/O, PWM output |
| 6 | Digital I/O, PWM output |
| 7 | Digital I/O |
| 8 | Digital I/O |
| 9 | Digital I/O, PWM output |
| 10 | Digital I/O, PWM output, SS (SPI slave select) |
| 11 | Digital I/O, PWM output, MOSI (SPI master out slave in) |
| 12 | Digital I/O, MISO (SPI master in slave out) |
| 13 | Digital I/O, LED built-in |
| A0 | Analog Input, 10-bit ADC |
| A1 | Analog Input, 10-bit ADC |
| A2 | Analog Input, 10-bit ADC |
| A3 | Analog Input, 10-bit ADC |
| A4 | Analog Input, 10-bit ADC, SDA (I2C data line) |
| A5 | Analog Input, 10-bit ADC, SCL (I2C clock line) |
| AREF | Analog Reference voltage |
| VIN | Power input (7-12V recommended) |
| GND | Ground |
| 3.3V | Power output (+3.3V from onboard regulator) |
| 5V | Power output (+5V) |
| TX (ESP8266) | Serial transmit pin for ESP8266 Wi-Fi module |
| RX (ESP8266) | Serial receive pin for ESP8266 Wi-Fi module |
Wiring & circuit basics
Powering the Arduino Uno WiFi Rev1 is straightforward. You can supply power via the USB port, which is convenient for programming and low-power applications. For standalone projects, use the DC barrel jack or the VIN pin, providing a voltage between 7V and 12V. The board has an onboard regulator to step this down to 5V for the ATmega32U4 and other 5V components, and a separate regulator for the 3.3V components, including the ESP8266 module. Avoid powering the board directly with voltages higher than 12V, as this can overheat the regulator and damage the board. Ensure your power supply can provide sufficient current, typically at least 500mA, especially when the Wi-Fi is active.
The Arduino Uno WiFi Rev1 operates at a logic level of 5V. This means its digital pins HIGH state is 5V and LOW state is 0V. When interfacing with external components, especially sensors or modules that operate at 3.3V, it is crucial to use level shifting. Connecting a 5V output directly to a 3.3V input can damage the 3.3V device. Conversely, a 3.3V output from a sensor might not be reliably read as HIGH by the 5V ATmega32U4, though many 3.3V devices are 5V tolerant. Always check the specifications of your external components.
For a simple LED project, connect an LED's anode (longer leg) to a digital pin (e.g., D13, which also has an onboard LED) through a current-limiting resistor (typically 220-330 ohms). Connect the LED's cathode (shorter leg) to a GND pin. For an I2C sensor, connect its SDA pin to A4 (or D14) and its SCL pin to A5 (or D15). Ensure the sensor is also powered correctly, usually from the 5V or 3.3V pins, depending on the sensor's requirements, and connect its GND to the Arduino's GND. Remember to include pull-up resistors on SDA and SCL lines if not already present on the sensor module.
Programming & getting started
The primary toolchain for the Arduino Uno WiFi Rev1 is the Arduino IDE. Download and install the latest version from the Arduino website. Once installed, you'll need to add support for the ATmega32U4-based boards. Go to File > Preferences, and in the 'Additional Boards Manager URLs' field, add the URL for the Arduino AVR Boards (if not already present). Then, go to Tools > Board > Boards Manager, search for 'Arduino AVR Boards', and install it. After installation, you can select 'Arduino Uno WiFi Rev1' from the Tools > Board menu. Connect the board via USB, select the correct COM port, and upload your sketch.
For the Wi-Fi functionality, you will use libraries provided within the Arduino IDE. The board typically comes with pre-installed libraries or you can install them via the Library Manager (e.g., 'WiFiNINA' library). These libraries abstract the communication with the ESP8266 module, allowing you to use functions like `WiFi.begin(ssid, password)` to connect to a network and `client.connect(host, port)` to establish a connection to a server. Your first program could involve connecting to your Wi-Fi network and blinking the onboard LED, or sending sensor data to a web server.