IoT Dashboard Control: Arduino Uno R4 WiFi with TME EDU ARD Rev2 & Arduino IoT Cloud
Discover how to use the contemporary Arduino Uno R4 WiFi to communicate with the TME EDU ARD Rev2 board! You may use a web dashboard or mobile app to display custom event messages on the built-in I2C LCD and toggle an onboard LED by connecting your board to the Arduino IoT Cloud.

Components Used
- Arduino Uno R4 WiFi
- Educational board: TME EDU ARD Rev2 Shield
- Integrated 16×2 I2C LCD (powered by MCP23008 expander)
- Status Indicator: Onboard LED (Connected to Pin 13)
- Interface: USB-C Cable for power and programming

What is the TME EDU ARD 2 Board?
TME (Transfer Multisort Elektronik) developed the TME EDU ARD 2, an all-in-one educational baseboard, to facilitate the study of embedded systems. The TME EDU ARD 2 eliminates the need for unprotected jumper wires and breadboards by integrating all required input and output components directly onto a single PCB.

The board’s primary onboard features consist of:
- 5x Addressable RGB LEDs (NeoPixels): Connected to Digital Pin 12.
- Potentiometer: Connected to Analog Pin A1 for analog voltage control.
- User Pushbuttons & Navigation Switches: For digital inputs.
- LCD Display & 7-Segment Display: For visual outputs.
- Environmental Sensors: Light, temperature, and microphone modules.
- Standard Arduino Uno Header: Allows seamless mounting of any Arduino Uno-compatible mainboard underneath.

The Brain: Arduino Uno R4 WiFi
Our setup is powered by the Arduino Uno R4 WiFi. Despite having the standard Uno R3 physical dimensions and 5V logic headers, it offers a notable performance improvement under the hood:

- 32-bit Microcontroller: Powered by the Renesas RA4M1 (Arm Cortex-M4) running at 48 MHz (16x faster than the Uno R3).
- ESP32-S3 Co-processor: Handles 2.4 GHz Wi-Fi and Bluetooth 5.0 connectivity.
- 12×8 LED Matrix: Onboard red LED matrix for displaying icons and animations.
- Expanded Memory: 256 KB Flash and 32 KB SRAM for complex software libraries.
The Uno R4 WiFi fits directly into the TME EDU ARD 2 board without any modifications since it retains complete hardware pin compatibility with conventional Uno shields.
Circuit Wiring & Schematic Description
A plug-and-play shield made especially for Arduino form-factor boards is the TME EDU ARD Rev2.
- Shield Connection: Place the TME EDU ARD Rev2 straight onto the Arduino Uno R4 WiFi’s top headers. Breadboards and external jumper wires are not necessary.
- I2C Bus: The shield uses the SDA and SCL pins on the Uno R4 WiFi to transport the 16×2 LCD through an MCP23008 I2C port expander fixed at address 0x20.
- LED Connection: The controlled LED aligns with Digital Pin 13 on the Arduino header.
Required Libraries
hd44780 library
Extensible LCD library supporting the MCP23008 expander on the TME shield.

ArduinoIoTCloud library
Handles cloud synchronization and Wi-Fi connection parameters.

Arduino IoT Cloud Setup
First, go to Arduino IoT Cloud, create an account, and then log in to create a project and configure it.
Create a Thing in Arduino IoT Cloud

After creating a thing, click “Add variable.”

Give a name to the variable, and you can also change the name of the Thing, and then click on Create.

Add a Device in Arduino IoT Cloud
Click on “Devices” and then click on “New device.”

After your board is detected by Arduino IoT Cloud, click on “Continue” to configure the microcontroller.

You can edit the name of your device in the device configuration.

Pick your network, provide its name and its password, click Connect, and then move to cloud provisioning.

Configure Web & Mobile Dashboard
On the left of the Arduino IoT Cloud, click on “Dashboards,’ and then click on “CREATE DASHBOARD.”

Then, on the Dashboard, click Edit to edit the Dashboard.

On the Dashboard, add a widget to the dashboard; in our case, it will be a switch widget.

You can change the name of your dashboard.

Then link the variable “door” that you have created to the Switch widget so you can control the door remotely.

You can now control your door.

Arduino Code
#include <Wire.h>
#include <hd44780.h>
#include <hd44780ioClass/hd44780_I2Cexp.h>
#include "thingProperties.h"
// LCD configuration
hd44780_I2Cexp lcd(0x20, I2Cexp_MCP23008, 7, 6, 5, 4, 3, 2, 1, HIGH);
#define mydoor 13
void setup() {
// Initialize serial and wait for port to open:
Serial.begin(9600);
delay(1500);
// Defined in thingProperties.h
initProperties();
// Connect to Arduino IoT Cloud
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
pinMode(mydoor, OUTPUT);
// Initialize the LCD
lcd.begin(16, 2);
lcd.clear();
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
}
;
void loop() {
ArduinoCloud.update();
}
/*
Since Door is READ_WRITE variable, onDoorChange() is
executed every time a new value is received from IoT Cloud.
*/
void onDoorChange() {
if (door == 1) {
digitalWrite(mydoor, HIGH);
// Print message on LCD when door/LED goes HIGH
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("TME EDUCATION");
lcd.setCursor(0, 1);
lcd.print("DAY 2026");
} else {
digitalWrite(mydoor, LOW);
// Clear LCD so nothing appears when door/LED goes LOW
lcd.clear();
}
}
How It Works
By using ArduinoCloud.update() in the main execution loop to ask for status updates, the Arduino Uno R4 WiFi keeps a constant Wi-Fi connection to the Arduino IoT Cloud servers.
The callback function onDoorChange() is triggered by the cloud sending an update signal when you flip the switch widget on your Cloud Dashboard to ON (door == 1). In order to display “TME EDUCATION” and “DAY 2026” on the 16×2 LCD screen, the microcontroller sets Pin 13 HIGH to activate the LED and sends I2C commands to the MCP23008 port expander on the TME EDU ARD Rev2 shield.

The onDoorChange() function drives Pin 13 LOW to extinguish the LED and issues a lcd.clear() instruction, instantly clearing the screen until the next trigger, when the switch is turned to OFF (door == 0).

