Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Component Documentation

Arduino MKR WiFi 1010

Image of Arduino MKR WiFi 1010

Arduino MKR WiFi 1010 Documentation

Introduction

The Arduino MKR WiFi 1010 is a versatile and powerful Internet of Things (IoT) development board that integrates the functionality of the Arduino Zero with robust Wi-Fi connectivity. It is designed around the Microchip SAMD21 microcontroller and the u-blox NINA-W10 series low power 2.4GHz IEEEĀ® 802.11 b/g/n Wi-Fi module. This board is perfect for IoT projects, wireless communication applications, and for those looking to step into the world of connected devices with ease.

Common Applications and Use Cases

  • Smart home devices
  • Remote sensor networks
  • IoT prototypes
  • Wearable technology
  • Wireless control systems

Technical Specifications

Key Technical Details

  • Microcontroller: Microchip SAMD21 Cortex-M0+ 32bit low power ARM MCU
  • Wi-Fi Module: u-blox NINA-W10 series (802.11 b/g/n)
  • Operating Voltage: 3.3V
  • Input Voltage (recommended): 5V via micro USB or Vin pin
  • Input Voltage (limit): 6-20V
  • Digital I/O Pins: 8, with 12 PWM and UART
  • Analog Input Pins: 7 (ADC 8/10/12 bit)
  • Analog Output Pins: 1 (DAC 10 bit)
  • DC Current per I/O Pin: 7 mA
  • Flash Memory: 256 KB (of which 8 KB used by bootloader)
  • SRAM: 32 KB
  • Clock Speed: 48 MHz
  • LED_BUILTIN: 6

Pin Configuration and Descriptions

Pin Number Functionality Description
1 VIN Supply voltage to the board when using an external power source
2 5V Regulated power supply used to power the microcontroller and other components
3 VCC 3.3V supply generated by the onboard regulator
4 GND Ground
5-12 Digital Pins Digital input/output pins, PWM capable (D2-D7), UART (D13-D14)
13-19 Analog Pins Analog input pins (A1-A6)
20 RESET Reset pin, active low
21 3.3V 3.3V output from the onboard regulator
22 AREF Analog reference voltage for the ADC
23 SDA I2C data line
24 SCL I2C clock line
25 SPI Interfaces SPI communication lines (MISO, MOSI, SCK)
26 TX_LED Transmit LED indicator
27 RX_LED Receive LED indicator
28 LORA Reserved for future LoRa module
29 LED_BUILTIN Built-in LED (pin 6)

Usage Instructions

How to Use the Component in a Circuit

  1. Powering the Board: The MKR WiFi 1010 can be powered via the micro USB connection or with an external power supply connected to the VIN pin.

  2. Connecting to Wi-Fi: Utilize the onboard NINA-W10 module to connect to Wi-Fi networks. The WiFiNINA library provided by Arduino is required to enable Wi-Fi functionality.

  3. Programming the Board: The board is programmable with the Arduino Software (IDE) or Arduino Web Editor. Select "Arduino MKR WiFi 1010" from the Board Manager.

  4. Digital and Analog Pins: Use the digital and analog pins to interface with various sensors, actuators, and other components.

  5. I2C/SPI Communication: Utilize the I2C (SDA/SCL) and SPI (MISO/MOSI/SCK) pins for communication with compatible devices.

Important Considerations and Best Practices

  • Always ensure that the power supply is within the recommended voltage range to prevent damage.
  • When using Wi-Fi, take into account the power consumption and ensure a stable power source.
  • Use proper decoupling capacitors close to the power pins if the board is experiencing resets during high-current operations.
  • Avoid exposing the board to static electricity or physical stress.
  • Keep the firmware of the NINA-W10 module updated using the WiFi101 / WiFiNINA Firmware Updater plugin in the Arduino IDE.

Example Code for Arduino UNO

#include <WiFiNINA.h>

// Replace with your network credentials
const char* ssid = "your_network_name";
const char* password = "your_network_password";

void setup() {
  // Initialize serial communication
  Serial.begin(9600);

  // Check for the presence of the WiFi module
  if (WiFi.status() == WL_NO_MODULE) {
    Serial.println("Communication with WiFi module failed!");
    // Don't continue further if the module is not present
    while (true);
  }

  // Attempt to connect to the Wi-Fi network
  while (WiFi.begin(ssid, password) != WL_CONNECTED) {
    Serial.print("Attempting to connect to WPA SSID: ");
    Serial.println(ssid);
    // Wait 5 seconds before retrying
    delay(5000);
  }

  Serial.println("You're connected to the network");
  printCurrentNet();
  printWiFiData();
}

void loop() {
  // Nothing to do here
}

void printWiFiData() {
  // Print the IP address
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);
}

void printCurrentNet() {
  // Print the SSID of the network you're attached to
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // Print the MAC address of the router you're attached to
  byte bssid[6];
  WiFi.BSSID(bssid);
  Serial.print("BSSID: ");
  Serial.print(bssid[5], HEX);
  Serial.print(":");
  Serial.print(bssid[4], HEX);
  Serial.print(":");
  Serial.print(bssid[3], HEX);
  Serial.print(":");
  Serial.print(bssid[2], HEX);
  Serial.print(":");
  Serial.print(bssid[1], HEX);
  Serial.print(":");
  Serial.println(bssid[0], HEX);
}

Troubleshooting and FAQs

Common Issues Users Might Face

  • Wi-Fi Connection Issues: Ensure the network SSID and password are correct. Check the signal strength and router settings.
  • Board Not Recognized: Verify the USB cable is working and the board is selected in the Arduino IDE.
  • Firmware Update Required: The NINA-W10 module may require a firmware update for optimal performance.

Solutions and Tips for Troubleshooting

  • Reset the Board: Press the onboard reset button to restart the board.
  • Update Firmware: Use the WiFi101 / WiFiNINA Firmware Updater from the Arduino IDE.
  • Check Power Supply: Ensure the board is receiving a stable voltage within the recommended range.
  • Serial Monitor: Use the Serial Monitor to debug and check for error messages.

FAQs

Q: Can the MKR WiFi 1010 be powered by a battery? A: Yes, it can be powered by a Li-Po battery connected to the JST connector or other batteries connected to the VIN pin.

Q: Is the board compatible with all Arduino libraries? A: The MKR WiFi 1010 is compatible with most libraries that support the SAMD21 architecture. Some libraries may need updates or modifications.

Q: How do I update the Wi-Fi module firmware? A: Use the WiFi101 / WiFiNINA Firmware Updater plugin available in the Arduino IDE under the Tools menu.

Q: Can I use the MKR WiFi 1010 with the Arduino IoT Cloud? A: Yes, the board is designed to work seamlessly with the Arduino IoT Cloud for easy IoT application development.

Example Projects

voltqge divider
Image of voltqge divider: A project utilizing Arduino MKR WiFi 1010 in a practical application
This circuit features an Arduino MKR WiFi 1010 powered by a 4xAA battery holder, with the battery's positive terminal connected to the Arduino's VIN pin and the negative terminal to GND. Two 100k Ohm resistors are connected in series between the Arduino's A0 analog input and VCC, with their midpoint also tied to GND, forming a voltage divider that could be used for sensing or reference voltage purposes.
Receptor lorawan
Image of Receptor lorawan: A project utilizing Arduino MKR WiFi 1010 in a practical application
This circuit consists of an Arduino MKR WiFi 1010 microcontroller connected to a 5V relay. The Arduino is programmed to receive LoRa wireless communication signals and toggle the relay based on the received data, which controls the connection between the relay's Common terminal and either the Normally Open or Normally Closed terminal. The relay's activation is dependent on the specific message received ('button pressed'), which is intended to switch a connected external load on or off.
Emisor LORAWAN
Image of Emisor LORAWAN: A project utilizing Arduino MKR WiFi 1010 in a practical application
This circuit features an Arduino MKR WiFi 1010 connected to a pushbutton. When the button is pressed, the Arduino detects the input and sends a 'button pressed' message using LoRa communication. The purpose of this circuit is to wirelessly transmit a signal upon a button press, potentially for remote control or notification purposes.
idojaras_allomas
Image of idojaras_allomas: A project utilizing Arduino MKR WiFi 1010 in a practical application
This circuit is designed around an Arduino MKR WiFi 1010 microcontroller and includes a variety of sensors: a water level sensor, an MQ-2 gas sensor, a TEMT6000 ambient light sensor, a steam sensor, a DHT11 temperature and humidity sensor, and a rotary encoder. The sensors are powered by the 5V output from the Arduino and their ground pins are connected to the Arduino's ground. The signal outputs from the sensors are connected to various analog and digital input pins on the Arduino, enabling it to monitor environmental conditions such as gas presence, light levels, temperature, humidity, water level, and user input through the rotary encoder.

Example Projects

Image of voltqge divider: A project utilizing Arduino MKR WiFi 1010 in a practical application
voltqge divider
This circuit features an Arduino MKR WiFi 1010 powered by a 4xAA battery holder, with the battery's positive terminal connected to the Arduino's VIN pin and the negative terminal to GND. Two 100k Ohm resistors are connected in series between the Arduino's A0 analog input and VCC, with their midpoint also tied to GND, forming a voltage divider that could be used for sensing or reference voltage purposes.
Image of Receptor lorawan: A project utilizing Arduino MKR WiFi 1010 in a practical application
Receptor lorawan
This circuit consists of an Arduino MKR WiFi 1010 microcontroller connected to a 5V relay. The Arduino is programmed to receive LoRa wireless communication signals and toggle the relay based on the received data, which controls the connection between the relay's Common terminal and either the Normally Open or Normally Closed terminal. The relay's activation is dependent on the specific message received ('button pressed'), which is intended to switch a connected external load on or off.
Image of Emisor LORAWAN: A project utilizing Arduino MKR WiFi 1010 in a practical application
Emisor LORAWAN
This circuit features an Arduino MKR WiFi 1010 connected to a pushbutton. When the button is pressed, the Arduino detects the input and sends a 'button pressed' message using LoRa communication. The purpose of this circuit is to wirelessly transmit a signal upon a button press, potentially for remote control or notification purposes.
Image of idojaras_allomas: A project utilizing Arduino MKR WiFi 1010 in a practical application
idojaras_allomas
This circuit is designed around an Arduino MKR WiFi 1010 microcontroller and includes a variety of sensors: a water level sensor, an MQ-2 gas sensor, a TEMT6000 ambient light sensor, a steam sensor, a DHT11 temperature and humidity sensor, and a rotary encoder. The sensors are powered by the 5V output from the Arduino and their ground pins are connected to the Arduino's ground. The signal outputs from the sensors are connected to various analog and digital input pins on the Arduino, enabling it to monitor environmental conditions such as gas presence, light levels, temperature, humidity, water level, and user input through the rotary encoder.