Arduino Giga R1 WiFi Getting Started

Welcome to the Arduino Giga R1 WiFi—a powerhouse development board built around the dual-core STM32H747XI microcontroller. With its ARM Cortex-M7 processor running at 480 MHz, integrated WiFi and Bluetooth connectivity, and an impressive array of I/O capabilities, the Giga R1 WiFi represents a significant leap forward in Arduino's professional-grade offerings.

This comprehensive guide walks you through the complete setup process, from initial board installation to creating your first networked application. Whether you're transitioning from smaller Arduino boards or starting fresh with embedded development, you'll find everything needed to harness the Giga R1 WiFi's capabilities.

What You'll Accomplish:

The Giga R1 WiFi opens doors to advanced applications that demand both processing power and connectivity—from real-time data acquisition systems to IoT edge computing nodes. Let's get your board up and running.

Arduino Giga R1 WiFi

Hardware Preparation

1×Arduino Giga R1 WiFi
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (for USB-C PC)
1×Recommended: Screw Terminal Block Shield for Arduino Uno/Mega/Giga
1×Recommended: Breadboard Shield for Arduino Mega/Giga
1×Recommended: Enclosure for Arduino Giga
1×Recommended: Power Splitter for Arduino Giga

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Disclosure: Some of the links provided in this section are Amazon affiliate links. We may receive a commission for any purchases made through these links at no additional cost to you.
Additionally, some of these links are for products from our own brand, DIYables .

Board Package Installation

Before you can program the Arduino Giga R1 WiFi, the Arduino IDE requires the appropriate board support package. This package contains the compiler toolchain, core libraries, and board definitions specific to the STM32H747XI microcontroller architecture.

Installation Steps:

  • Launch the Arduino IDE (version 2.0 or newer recommended)
  • Navigate to the Boards Manager icon in the left sidebar
  • Type Arduino Giga into the search field at the top
  • Locate Arduino Mbed OS Giga Boards in the results list
  • Click the Install button next to the package
Arduino IDE 2 Boards Manager Giga

The download process may take several minutes depending on your internet connection, as the package includes the complete ARM GCC compiler toolchain and mbed OS libraries. The IDE will display installation progress with a status indicator.

Once installation completes, the Arduino Giga R1 WiFi will appear in the board selection menu, ready for use.

Your First Program: Serial Communication

Let's verify the complete toolchain installation by uploading a simple serial communication program. This foundational example demonstrates how to establish bidirectional communication between the Giga R1 WiFi and your computer—a critical debugging and monitoring capability for virtually all Arduino projects.

Upload Process:

Step 1: Physical Connection

Connect the Arduino Giga R1 WiFi to your computer using a USB Type-C cable. The board draws power from the USB connection and enumerates as a virtual COM port for programming and serial communication.

Step 2: Board and COM Port Selection

In the Arduino IDE, select the appropriate COM port from the board selector dropdown menu. The port typically displays as "Arduino Giga R1 WiFi" followed by the COM port identifier (e.g., COM3 on Windows, /dev/ttyACM0 on Linux).

Arduino IDE 2 Giga R1 WiFi port

Step 3: Code Implementation

Copy the following code into a new Arduino IDE sketch:

/* * This Arduino Giga R1 WiFi code was developed by newbiely.com * * This Arduino Giga R1 WiFi code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/arduino-giga/arduino-giga-r1-wifi-getting-started */ void setup() { // Initialize serial communication at 115200 bits per second // Giga R1 WiFi's high-speed processor supports faster baud rates Serial.begin(115200); // Wait for serial port to connect (useful for native USB boards) while (!Serial) { ; // Wait loop } Serial.println("Arduino Giga R1 WiFi initialized successfully!"); Serial.println("======================================"); } void loop() { // Output timestamp and message every second Serial.print("System running - Timestamp: "); Serial.print(millis()); Serial.println(" ms"); // 1000 millisecond delay between transmissions delay(1000); }

Step 4: Upload and Monitor

Click the Upload button (right arrow icon) in the Arduino IDE toolbar. The IDE compiles your code and transfers it to the Giga R1 WiFi's flash memory. During upload, the board's status LED blinks rapidly as data transfers.

Arduino IDE 2 - Upload to Giga

Once upload completes, open the Serial Monitor by clicking its icon in the top-right corner of the IDE. Ensure the baud rate selector at the bottom matches 115200 baud.

Expected Output:

COM6
Send
Arduino Giga R1 WiFi initialized successfully! ====================================== System running - Timestamp: 1045 ms System running - Timestamp: 2046 ms System running - Timestamp: 3047 ms System running - Timestamp: 4048 ms System running - Timestamp: 5049 ms
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

The increasing timestamp values confirm the Giga R1 WiFi's system clock is operational and the main program loop executes continuously. This simple test validates your development environment setup.

WiFi Web Server Implementation

Now let's leverage the Giga R1 WiFi's integrated wireless capabilities to create a functional web server. This example demonstrates network stack initialization, HTTP request handling, and dynamic HTML content generation—fundamental concepts for IoT and connected device development.

※ NOTE THAT:

Important: The Arduino Giga R1 WiFi requires WiFi firmware to be installed in a separate partition before WiFi functionality works. If you encounter a "Failed to mount the filesystem containing the WiFi firmware" error, refer to the Troubleshooting section below for firmware installation instructions.

Complete Web Server Code:

/* * This Arduino Giga R1 WiFi code was developed by newbiely.com * * This Arduino Giga R1 WiFi code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/arduino-giga/arduino-giga-r1-wifi-getting-started */ #include <WiFi.h> // Network credentials - replace with your network information const char* ssid = "YOUR_WIFI_SSID"; const char* password = "YOUR_WIFI_PASSWORD"; // Create server instance listening on port 80 (standard HTTP) WiFiServer server(80); // Connection tracking int connectionCount = 0; void setup() { // Initialize serial communication for debugging Serial.begin(115200); while (!Serial) { ; // Wait for serial port initialization } Serial.println("\n=== Arduino Giga R1 WiFi Web Server ==="); Serial.println("Initializing WiFi module..."); // Attempt network connection Serial.print("Connecting to: "); Serial.println(ssid); WiFi.begin(ssid, password); // Wait for connection establishment with timeout int attempts = 0; while (WiFi.status() != WL_CONNECTED && attempts < 30) { delay(500); Serial.print("."); attempts++; } if (WiFi.status() == WL_CONNECTED) { Serial.println("\n\nConnection successful!"); Serial.println("======================================"); printNetworkInfo(); Serial.println("======================================"); Serial.println("Server ready - waiting for clients..."); // Start the HTTP server server.begin(); } else { Serial.println("\n\nConnection failed!"); Serial.println("Please verify network credentials and try again."); } } void loop() { // Check for incoming client connections WiFiClient client = server.available(); if (client) { connectionCount++; Serial.println("\n>>> New client connected"); Serial.print("Total connections: "); Serial.println(connectionCount); String currentLine = ""; boolean requestComplete = false; while (client.connected() && !requestComplete) { if (client.available()) { char c = client.read(); if (c == '\n') { // Empty line signals end of HTTP request headers if (currentLine.length() == 0) { // Send HTTP response headers client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); client.println(); // Generate HTML response client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<head>"); client.println(" <title>Arduino Giga R1 WiFi</title>"); client.println(" <meta name='viewport' content='width=device-width, initial-scale=1'>"); client.println(" <style>"); client.println(" body { font-family: Arial, sans-serif; margin: 40px; background: #f0f0f0; }"); client.println(" .container { background: white; padding: 30px; border-radius: 10px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }"); client.println(" h1 { color: #00979D; }"); client.println(" .info { background: #e8f5f7; padding: 15px; border-radius: 5px; margin: 20px 0; }"); client.println(" .stat { margin: 10px 0; }"); client.println(" </style>"); client.println("</head>"); client.println("<body>"); client.println(" <div class='container'>"); client.println(" <h1>Arduino Giga R1 WiFi Web Server</h1>"); client.println(" <p>Server Status: <strong style='color: green;'>Active</strong></p>"); client.println(" <div class='info'>"); client.print(" <div class='stat'>Board: <strong>Arduino Giga R1 WiFi</strong></div>"); client.print(" <div class='stat'>Processor: <strong>STM32H747XI Dual Core</strong></div>"); client.print(" <div class='stat'>Uptime: <strong>"); client.print(millis() / 1000); client.println(" seconds</strong></div>"); client.print(" <div class='stat'>Total Connections: <strong>"); client.print(connectionCount); client.println("</strong></div>"); client.println(" </div>"); client.println(" <p><em>Refresh the page to update statistics</em></p>"); client.println(" </div>"); client.println("</body>"); client.println("</html>"); requestComplete = true; } else { currentLine = ""; } } else if (c != '\r') { currentLine += c; } } } // Close the connection client.stop(); Serial.println("<<< Client disconnected"); } } void printNetworkInfo() { IPAddress ip = WiFi.localIP(); Serial.print("IP Address: "); Serial.println(ip); Serial.print("Subnet Mask: "); Serial.println(WiFi.subnetMask()); Serial.print("Gateway: "); Serial.println(WiFi.gatewayIP()); long rssi = WiFi.RSSI(); Serial.print("Signal Strength (RSSI): "); Serial.print(rssi); Serial.println(" dBm"); Serial.print("MAC Address: "); Serial.println(WiFi.macAddress()); }

Deployment Instructions:

1. Code Preparation

Copy the complete web server code above into a new Arduino IDE sketch. Modify the network credentials in lines 4-5 to match your WiFi network:

const char* ssid = "YourActualNetworkName"; const char* password = "YourActualPassword";

2. Upload Process

Click the Upload button to compile and transfer the code to your Giga R1 WiFi. The compilation process may take longer than the previous example due to the WiFi library dependencies.

3. Monitor Connection Status

Open the Serial Monitor and set baud rate to 115200. You'll observe the connection sequence:

COM6
Send
=== Arduino Giga R1 WiFi Web Server === Initializing WiFi module... Connecting to: YourNetworkName .......... Connection successful! ====================================== IP Address: 192.168.1.145 Subnet Mask: 255.255.255.0 Gateway: 192.168.1.1 Signal Strength (RSSI): -42 dBm MAC Address: A8:42:E3:XX:XX:XX ====================================== Server ready - waiting for clients...
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

4. Access Web Interface

Note the IP address displayed in the Serial Monitor (e.g., 192.168.1.145). Open a web browser on any device connected to the same WiFi network and enter this IP address in the address bar.

The styled web interface displays real-time board statistics including uptime and connection count. Each page refresh increments the connection counter and updates the runtime.

Arduino Giga R1 WiFi Web Server

5. Monitor Server Activity

The Serial Monitor logs each client connection with detailed request information:

COM6
Send
>>> New client connected Total connections: 1 <<< Client disconnected >>> New client connected Total connections: 2 <<< Client disconnected
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

What's Next?

You've successfully configured the Arduino Giga R1 WiFi development environment and deployed both serial communication and network-enabled applications. This foundation enables exploration of the board's advanced capabilities:

Hardware Interfaces:

  • Leverage the 76 digital I/O pins for complex sensor arrays
  • Implement high-speed ADC sampling with 12 analog inputs
  • Control motors and actuators using PWM-enabled pins
  • Utilize I2C, SPI, and UART interfaces for peripheral communication

Wireless Connectivity:

  • Build MQTT clients for IoT data publishing
  • Create REST API endpoints for mobile app integration
  • Implement secure HTTPS servers with TLS encryption
  • Develop Bluetooth Low Energy peripherals for device pairing

Processing Power Applications:

  • Execute real-time signal processing with the 480 MHz M7 core
  • Implement computer vision algorithms with camera module integration
  • Deploy machine learning inference models using TensorFlow Lite
  • Process audio streams with the integrated audio codec

Development Resources:

Explore the Arduino Giga R1 WiFi documentation and example library for detailed tutorials on specific peripherals and protocols. The official Arduino forums provide community support for troubleshooting and project guidance.

The combination of processing power, memory capacity, and connectivity makes the Giga R1 WiFi suitable for professional embedded systems development. Start experimenting with your specific application requirements and scale complexity as you master the platform's capabilities.

Troubleshooting Common Issues

WiFi Firmware Not Found Error:

If you see this error in the Serial Monitor:

Failed to mount the filesystem containing the WiFi firmware. Usually that means that the WiFi firmware has not been installed yet or was overwritten with another firmware.

The Arduino Giga R1 WiFi requires separate WiFi firmware to be installed on its dedicated WiFi partition. Follow these steps to install it:

Method 1: Using Arduino IDE Firmware Updater (Recommended)

  1. In Arduino IDE, go to ToolsWiFi Firmware Updater
  2. Select your Arduino Giga R1 WiFi board and COM port
  3. Click Update Firmware button
  4. Wait for the firmware installation to complete (may take 2-3 minutes)
  5. Reset your board and try the WiFi example again

Method 2: Manual Firmware Installation

  1. Download the WiFi firmware updater sketch from Arduino's GitHub repository:

- Navigate to: Arduino Giga WiFi Firmware Examples

- Or use Arduino IDE: FileExamplesSTM32H747_SystemWiFiFirmwareUpdater

  1. Upload the WiFiFirmwareUpdater sketch to your Giga R1 WiFi
  2. Open Serial Monitor at 115200 baud and follow the on-screen instructions
  3. Once firmware installation completes successfully, upload your web server sketch again

Verifying Firmware Installation:

After installing the firmware, create a simple test sketch to verify WiFi is working:

#include <WiFi.h> void setup() { Serial.begin(115200); while (!Serial); Serial.println("WiFi Firmware Check"); Serial.print("WiFi Firmware Version: "); Serial.println(WiFi.firmwareVersion()); } void loop() { }

If the firmware version displays (e.g., "1.0.0" or similar), the WiFi module is working correctly.

Board Not Detected:

  • Verify USB cable supports data transfer (some cables are charge-only)
  • Install CP210x USB-to-UART bridge drivers if COM port doesn't appear
  • Try a different USB port or cable
  • Check Device Manager (Windows) or system logs for enumeration errors

Upload Failures:

  • Ensure correct board and port selection in Arduino IDE
  • Close other applications that may access the COM port
  • Press the reset button twice rapidly to enter bootloader mode manually
  • Verify adequate USB power supply (some hubs provide insufficient current)

WiFi Connection Issues:

  • First, ensure WiFi firmware is properly installed (see WiFi Firmware error above)
  • Confirm network credentials are correct (SSID and password are case-sensitive)
  • Verify the network uses WPA2 encryption (WEP and enterprise networks may require additional configuration)
  • Check 2.4 GHz WiFi availability (board doesn't support 5 GHz networks)
  • Ensure router doesn't employ MAC address filtering
  • Try moving closer to the access point to rule out signal strength issues
  • Increase the connection timeout attempts in code if needed (change attempts < 30 to higher value)

Serial Monitor Shows Garbled Text:

  • Verify baud rate matches code configuration (115200 in examples above)
  • Select proper line ending settings (Newline or Both NL & CR)
  • Ensure no other application is accessing the serial port simultaneously

For persistent issues, consult the official Arduino Giga R1 WiFi hardware documentation or seek assistance in the Arduino community forums with specific error messages and console output.

Learn More

※ OUR MESSAGES

  • As freelancers, We are AVAILABLE for HIRE. See how to outsource your project to us
  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!