- Getting started with the Arduino Uno WiFi Rev2
- Use your Arduino Uno WiFi Rev2 on the Arduino Web IDE
- Use your Arduino Uno WiFi Rev2 on the Arduino Desktop IDE
- Installing Drivers for the Uno WiFi
- Open your first sketch
- Select your board type and port
- Upload the program
- Tutorials
- Please Read.
- Serial ports
- SPI
- I2C
- Analog
- RGB LED
- Integrated IMU
- Interrupts
- UNO R4 WiFi
- Software & Cloud
- Hardware
- Arduino with WiFi: A How-To Guide for Adding and Using
- How much an Arduino with WiFi Costs
- WiFi Project Examples
Getting started with the Arduino Uno WiFi Rev2
The Arduino Uno WiFi Rev2 is an Arduino Uno with an integrated WiFi module. The board is based on the Microchip MEGA4809 with an ESP32 u-blox NINA-W13 WiFi Module integrated. The NINA-W13 Module is a self contained SoC with integrated TCP/IP protocol stack that can give access to your WiFi network (or the device can act as an access point).
The Arduino Uno WiFi Rev2 is programmed using the Arduino Software (IDE), our Integrated Development Environment common to all our boards and running both online and offline. For more information on how to get started with the Arduino Software visit the Getting Started page.
Use your Arduino Uno WiFi Rev2 on the Arduino Web IDE
All Arduino boards, including this one, work out-of-the-box on the Arduino Web Editor, you only need to install Arduino Create Agent to get started.
The Arduino Web Editor is hosted online, therefore it will always be up-to-date with the latest features and support for all boards. Follow this simple guide to start coding on the browser and upload your sketches onto your board.
Use your Arduino Uno WiFi Rev2 on the Arduino Desktop IDE
If you want to program your Arduino Uno WiFi Rev2 while offline you need to install the Arduino Desktop IDE. Full instructions on how to install it can be found in our Getting Started page.
You will need to add the Arduino megaAVR Core to the Arduino IDE. This simple procedure is done selecting Tools menu, then Boards and last Boards Manager, as documented in the Arduino Boards Manager page.
Installing Drivers for the Uno WiFi
macOS No drivers are needed for the Arduino UNO WiFi Rev2 on macOS.
Windows (tested on XP, 7, Vista and 10) At this point of this Getting Started guide you already have installed the drivers together with the Arduino Software (IDE) and the board will be recognized automatically.
Linux There is no need to install drivers for Ubuntu 10.0.4 and later, but make sure port 5353 is not being blocked by a firewall. Users with Linux need to run this code in the terminal: ~/.arduino15/packages/arduino/hardware/megaavr/1.8.1/scripts/create_dfu_udev_rule
You need to be admin on the computer to do so.
Open your first sketch
Open the LED blink example sketch: File > Examples >01.Basics > Blink.
Select your board type and port
You’ll need to select the entry in the Tools > Board menu that corresponds to your Arduino Uno WiFi Rev2 board.
Select the serial device of the board from the Tools | Serial Port menu. This is likely to be COM3 or higher (COM1 and COM2 are usually reserved for hardware serial ports). To find out, you can disconnect your board and re-open the menu; the entry that disappears should be the Arduino Uno WiFi Rev2 board. Reconnect the board and select that serial port.
Upload the program
Now, simply click the «Upload» button in the environment.
Wait a few seconds — you should see the green progress bar on the right of the status bar. If the upload is successful, the message «Done uploading.» will appear on the left in the status bar.
A few seconds after the upload finishes, you should see the on-board LED start to blink. If it does, congratulations! You’ve gotten your Uno WiFi board up-and-running for the USB programming. If you have problems, please see the troubleshooting suggestions.
Tutorials
Now that you have set up and programmed your Uno WiFi board, you may find inspiration in our Project Hub tutorial platform, or have a look to the tutorial pages that explain how to use the various features of your board. We suggest that you visit the WiFi Nina Library page that explains the network functions of this board.
Please Read.
This board uses the new Microchip MEGA4809 microcontroller that has a different memory layout compared to the usual ATmega 328P. You now have 48K of Flash memory, 6K of RAM and 256 bytes of EEPROM, therefore you have more Flash and more memory than the Arduino UNO (16K Flash and 2K RAM). The programming of the MEGA4809 happens through an ATmega 32U4 programmed with the mDBG code and creates a virtual COM port when connected to a PC.
Serial ports
The Arduino Uno WiFi Rev. 2 has 3 hardware serial ports. Serial is connected to the USB interface, Serial1 is connected to Pin 0 (RX) and 1 (TX), Serial 2 is connected to the u-blox NINA-W13 module. This allows the usage of pins 0 and 1 without issues: on the original Arduino UNO, the usage of Pins 0 and 1 disrupts the sketch upload.
SPI
The SPI interface is available on the ICSP connector with the usual layout for MISO, MOSI, SCK and CS. The IMU and the WiFi module are connected to the SPI bus and have individuale and dedicated pins for Chip Select (CS)
I2C
The I2C interface is available on the SDA and SCL pins. Unlike the classic Arduino Uno, these pins are not alternatives to pins A4 and A5. This means you are still free to use the Uno WiFi Rev2’s A4 and A5 for anything you like when an I2C device is connected to SDA and SCL.
Analog
The new core has 5 PWM pins and the pin 11 doesn’t support PWM. The resolution of the 6 A/D pins is the usual, with 10 bits and values from 0 to 1023.
RGB LED
Close to the Nina module and the ICSP connector there is a square RGB SMD LED. This LED is directly connected to the NINA-W13 WiFi module and it is driven by the module itself. It will be used for future applications and developments.
Integrated IMU
On the SPI bus, with a dedicated CS connection (pin D30 or SPIIMU_SS) and a dedicated interrupt pin (SPIIMU_INT), the Arduino UNO WiFi Rev.2 has a LSM6DS IMU with 3-axis accelerometer and 3-axis gyroscope. This chip, made by ST Microelectronics, is a standard component that you can use with our own library Arduino_LSM6DS3. To get the library, you can use our Library Manager available in the Arduino Software (IDE) .
The library contains two examples to show you how to read acceleration and rotational speed.
Interrupts
The new MEGA4809 microcontroller allows you to attach any digital pin to an interrupt, therefore you may have as many Interrupt Service Routines (ISR) as the available digital pins. You still define the interrupts with the usual function attachInterrupt(digitalPinToInterrupt(pin), ISR, mode); . Please refer to the attachInterrupt() page for further details.
Note: the WiFi antenna built in in the U-blox NINA-W13 module is made for embedded products and should NOT be touched. Applying pressure or force on it could cause damage. Be very careful when you detach shields on this board because you may pull the WiFi antenna.
The text of the Arduino getting started guide is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the guide are released into the public domain.
UNO R4 WiFi
The Arduino UNO R4 WiFi is designed around the 32-bit microcontroller RA4M1 from Renesas while also featuring a ESP32 module for Wi-Fi® and Bluetooth® connectivity. Its distinctive 12×8 LED matrix makes it possible to prototype visuals directly on the board, and with a Qwiic connector, you can create projects plug-and-play style.
The MCU on the board is the high performance Renesas RA4M1 (Arm® Cortex®-M4) with a 48 MHz clock speed, 32 kB SRAM and 256 kB flash memory. This MCU features an RTC, a DAC and a CAN bus and has support for HID via USB.
The UNO R4 WiFi also features an ESP32-S3 for Wi-Fi®/Bluetooth® connectivity, which can also be separately programmed via a specific header.
Here you will find the technical specifications for the Arduino® UNO R4 WiFi.
Note on ESP header: the ESP32-S3 module on this board operates on 3.3 V. The ESP header located close to the USB-C® connector is 3.3V only and should not be connected to 5 V. This may damage your board.
Note on Qwiic connector: the Qwiic connector on this board is connected to a secondary I2C bus on this board, IIC0. This connector is 3.3 V only, connecting higher voltages may damage your board. To initialize this bus, use
Maximum current draw per pin: the UNO R4 series’ maximum current draw per GPIO is 8 mA, which is significantly lower than previous versions. Exceeding this limit may damage your pin / board.
Board | Name | Arduino® UNO R4 WiFi |
---|---|---|
SKU | ABX00087 | |
Microcontroller | Renesas RA4M1 (Arm® Cortex®-M4) | |
Radio Module | ESP32-S3-MINI-1-N8 | |
USB | USB-C® | Programming Port |
Pins | Digital I/O Pins | 14 |
Analog input pins | 6 | |
DAC | 1 | |
PWM pins | 6 | |
Communication | UART | Yes, 1x |
I2C | Yes, 1x | |
SPI | Yes, 1x | |
CAN | Yes 1 CAN Bus | |
Power | Circuit operating voltage | 5 V (ESP32-S3 is 3.3 V) |
Input voltage (VIN) | 6-24 V | |
DC Current per I/O Pin | 8 mA | |
Clock speed | RA4M1 | 48 MHz |
ESP32-S3-MINI-1-N8 | up to 240 MHz | |
Memory | RA4M1 | 256 kB Flash, 32 kB RAM |
ESP32-S3-MINI-1-N8 | 384 kB ROM, 512 kB SRAM | |
Dimensions | Width | 68.85 mm |
Length | 53.34 mm |
Software & Cloud
The following software tools allow you to program your board both online and offline.
Hardware
The hardware listed below is compatible with this product.
Arduino with WiFi: A How-To Guide for Adding and Using
I found the MKR family to be a strong supporter of connectivity, WiFi in particular. This seems to be in-line with their design intent of being for “makers”, IoT applications, sensor networks, cloud connectivity, and similar applications. Particularly if you need more power than the Nano family.
The built-in WiFi supports 802.11 b/g/n and operates at 2.4Ghz. These Arduino can connect to a WiFi network or act as a WiFi access point.
Mega, Due, and other Uno boards do not come with WiFi built in. WiFi can be added to these boards using a shield or via serial/UART communications, which typically cost about $10. I’ve included more detail below on how WiFi can be added to an Arduino.
To identify if an Arduino has WiFi built in, look for the u-blox chip or the ATSAMW25. The u-blox chip is the more common one as the ATSAMW25 is only found on the MKR 1000 (which, for reference, appears to be using an ATWINC1500 to do the WiFi communication).
The WiFiNINA library should be used with the boards listed above, except perhaps the MKR 1000 which uses a different chip (please reach out if you have experience with this board and I’ll update this guide to include the library for the MKR 1000). If adding a WiFi shield, then Arduino’s WiFi library can be used instead.
In this guide I’ve looked at:
- Cost of Arduino boards that have WiFi included
- How to add WiFi to an Arduino (and how much that costs)
- How to use the Arduino WiFi
- Example projects that take advantage of WiFi
How much an Arduino with WiFi Costs
An Arduino with WiFi can cost can cost as little as $18, however the cost can go over $100 depending on other features of the board. For most WiFi-related projects, expect to spend $20 and $45 on an Arduino with WiFi built in.
The table below lists the popular Arduino models that come with WiFi built-in, and how much they typically cost:
The following functions are the typical process I go through when using WiFi on an Arduino:
Task | Useful Functions |
---|---|
To start a client connection (Arduino reads from another computer) | begin() starts the WiFi connection and returns a status if connected to a network. Parameters include the SSID, password, or WEP details (if using WEP). WiFiClient() creates the client that can be used to talk to a server (locally or over the internet). Use this one if you started the connection with begin() . Once connected to a server, you can issue it commands with println() and read the results with read() . |
To start a server for other devices to connect to (other computers can receive data from Arduino) | beginAP() starts the Access Point mode allowing other devices/computers to connect using WiFi broadcast from the Arduino. Parameters include the SSID, password, and channel number (if applicable). WiFiServer() creates the server that can serve data to clients connected via the WiFi (locally, or if your WiFi Access Point allows, over the internet). Use this one with the beginAP() function. Once a client connects to the Arduino, you can issue it commands with println() and read its requests with read() . |
Common Arduino WiFi tasks and the functions that support them.
Full sketch examples and instructions on how to use can be found on Arduino’s website here.
WiFi Project Examples
Some interesting WiFi project examples I’ve found:
- Send an Arduino message to a message to Discord: Send a Message on Discord – Arduino Project Hub
- Tweeting from an Arduino keypad: Tweet using Arduino, ESP and Keypad – Arduino Project Hub
- Using the internet to keep an accurate clock: Self-Setting Super Accurate Clocks – Arduino Project Hub