MakerLab
ArduinoArduino Uno WiFi Rev1

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.

Arduino Uno WiFi Rev1

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 / SoCATmega32U4 (main) + ESP8266 (Wi-Fi module)
Architecture8-bit AVR (ATmega32U4)
Clock speed16 MHz (ATmega32U4)
Flash / Storage32 KB (ATmega32U4) - approx. 4 KB used by bootloader
RAM / SRAM2.5 KB (ATmega32U4)
Operating voltage5V
Digital I/O pins14 (of which 6 can provide PWM output)
Analog / ADC6 (10-bit resolution)
PWM6 pins (3, 5, 6, 9, 10, 11)
ConnectivityWi-Fi 802.11 b/g/n (via ESP8266 module)
USBATmega32U4 built-in USB 2.0 Full Speed interface
Power input7-12V recommended via DC barrel jack or VIN pin, 5V via USB or 5V pin
Dimensions75mm x 70mm (approx.)

Pinout & pin functions

PinFunction
5VPower output (+5V)
3.3VPower output (+3.3V from onboard regulator)
GNDGround
GNDGround
IOREFVoltage Reference for I/O pins (typically 5V)
RESETSystem reset pin
0 (RX)Serial communication receive pin (ATmega32U4 UART)
1 (TX)Serial communication transmit pin (ATmega32U4 UART)
2Digital I/O, can be used as interrupt input
3Digital I/O, PWM output
4Digital I/O
5Digital I/O, PWM output
6Digital I/O, PWM output
7Digital I/O
8Digital I/O
9Digital I/O, PWM output
10Digital I/O, PWM output, SS (SPI slave select)
11Digital I/O, PWM output, MOSI (SPI master out slave in)
12Digital I/O, MISO (SPI master in slave out)
13Digital I/O, LED built-in
A0Analog Input, 10-bit ADC
A1Analog Input, 10-bit ADC
A2Analog Input, 10-bit ADC
A3Analog Input, 10-bit ADC
A4Analog Input, 10-bit ADC, SDA (I2C data line)
A5Analog Input, 10-bit ADC, SCL (I2C clock line)
AREFAnalog Reference voltage
VINPower input (7-12V recommended)
GNDGround
3.3VPower output (+3.3V from onboard regulator)
5VPower 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.

Project ideas

Wi-Fi Connected LED ControlControl an external LED remotely via a web page hosted on the Arduino Uno WiFi Rev1. This project uses digital output pins and the Wi-Fi library to receive commands over the network, teaching basic web server concepts and remote control.
IoT Temperature and Humidity MonitorRead data from a DHT11/DHT22 sensor connected to analog pins and send it to a cloud service (like ThingSpeak or a custom server) over Wi-Fi. This project utilizes analog inputs, digital I/O, and the Wi-Fi library for data logging and IoT integration.
Smart Home Automation HubCreate a simple hub that can receive commands via Wi-Fi to control relays connected to other devices (e.g., lights, fans). This project involves digital outputs, Wi-Fi communication, and potentially I2C for managing multiple relays, teaching about distributed control systems.
Networked Sensor Data LoggerAggregate readings from multiple sensors (e.g., light, sound, motion) connected to various I/O pins and log them to an SD card or transmit them over Wi-Fi at regular intervals. This project combines analog and digital inputs, SPI for SD card access, and Wi-Fi for data transmission.
Remote Firmware Update (OTA)Implement Over-The-Air (OTA) updates for the Arduino Uno WiFi Rev1, allowing you to update its firmware wirelessly without physically connecting to it. This advanced project leverages specific Wi-Fi libraries and understanding of network protocols to enable remote maintenance.
Simple Web Server for Status DisplayHost a basic web page directly on the Arduino Uno WiFi Rev1 that displays the status of various sensors or system parameters. This project focuses on building a web server application on the microcontroller, demonstrating how to serve HTML content and handle HTTP requests.

Buying tips & gotchas

When purchasing the Arduino Uno WiFi Rev1, be aware of potential clones. While clones can be cheaper, they may sometimes have slight variations in components or firmware that can lead to compatibility issues. Always try to buy from reputable distributors. Ensure your Wi-Fi network uses a compatible security protocol (WPA2 is common). For power, consider using a dedicated 9V or 12V power adapter for projects that draw significant current, especially when the Wi-Fi is active, as USB power might be insufficient. Accessories like jumper wires, breadboards, and a variety of sensors (temperature, humidity, light, motion) are essential for expanding your projects.