Arduino MKR1000 WiFi: Your Gateway to IoT Projects
The Arduino MKR1000 WiFi is a compact, powerful board designed for IoT applications, featuring built-in Wi-Fi connectivity and a low-power microcontroller.

The Arduino MKR1000 WiFi is a microcontroller board developed by Arduino.cc, specifically designed to simplify the creation of Internet of Things (IoT) projects. Released around 2016, it bridges the gap between the simplicity of the Arduino ecosystem and the demands of connected devices. Its primary strength lies in its integrated Wi-Fi module, allowing it to connect to wireless networks without requiring external shields or modules, making it an excellent choice for makers, students, and engineers looking to build connected prototypes quickly.
At the heart of the MKR1000 WiFi is the Atmel (now Microchip) SAME70J20A, a powerful 32-bit ARM Cortex-M0+ microcontroller. This SoC provides ample processing power for typical IoT tasks, along with integrated Wi-Fi capabilities. The board is designed to be user-friendly, adhering to the familiar Arduino form factor and pin mapping conventions, which lowers the barrier to entry for those already acquainted with the Arduino platform. Its low power consumption also makes it suitable for battery-operated IoT devices.
Compared to other Arduino boards, the MKR1000 WiFi occupies a niche focused on wireless connectivity and moderate processing demands. While not as powerful as some of the higher-end Arduino boards or companion boards like the ESP32, it offers a robust and reliable Wi-Fi solution with a well-supported software ecosystem. It's particularly well-suited for projects that need to send sensor data to the cloud, control devices remotely over the internet, or act as a simple web server.
The history of the MKR family, including the MKR1000 WiFi, is rooted in Arduino's effort to provide specialized boards for emerging trends like IoT and LoRaWAN. The MKR1000 WiFi was one of the earlier iterations in this family, offering a compelling combination of a capable microcontroller and integrated Wi-Fi at a competitive price point. It appeals to makers who want to build smart home devices, environmental monitors, or remote control systems without the complexity of managing separate Wi-Fi modules.
Watch
Related video, embedded from YouTube.
Specifications
| Microcontroller / SoC | Atmel SAME70J20A (Microchip) |
| Architecture | 32-bit ARM Cortex-M0+ |
| Clock speed | 48 MHz |
| Flash / Storage | 256 KB |
| RAM / SRAM | 32 KB |
| Operating voltage | 3.3V |
| Digital I/O pins | 12 |
| Analog / ADC | 7 (10-bit) |
| PWM | 12 (software-controlled) |
| Connectivity | 802.11 b/g/n Wi-Fi |
| USB | Micro USB (for programming and power) |
| Power input | 5V via Micro USB or VIN pin, 3.3V via 3.3V pin |
| Dimensions | 67.64mm x 25mm |
Pinout & pin functions
| Pin | Function |
|---|---|
| 3.3V | Power output (regulated 3.3V) |
| GND | Ground |
| G0 | Digital I/O, Button Input |
| G1 | Digital I/O, UART RX |
| G2 | Digital I/O |
| G3 | Digital I/O |
| G4 | Digital I/O |
| G5 | Digital I/O, PWM |
| G6 | Digital I/O, PWM |
| G7 | Digital I/O, PWM |
| G8 | Digital I/O, PWM |
| G9 | Digital I/O, PWM |
| G10 | Digital I/O, PWM, SPI MOSI |
| G11 | Digital I/O, PWM, SPI MISO |
| G12 | Digital I/O, PWM, SPI SCK |
| G13 | Digital I/O, PWM, SPI CS |
| G14 | Digital I/O, I2C SDA |
| G15 | Digital I/O, I2C SCL |
| A0 | Analog Input (ADC), Digital I/O |
| A1 | Analog Input (ADC), Digital I/O |
| A2 | Analog Input (ADC), Digital I/O |
| A3 | Analog Input (ADC), Digital I/O |
| A4 | Analog Input (ADC), Digital I/O |
| A5 | Analog Input (ADC), Digital I/O |
| A6 | Analog Input (ADC), Digital I/O |
| RESET | Reset button |
| VIN | Power input (typically 5V) |
| USB | Micro USB connector (power and programming) |
Wiring & circuit basics
Powering the Arduino MKR1000 WiFi is straightforward. You can supply power via the Micro USB port, which is ideal for programming and testing, typically providing 5V. Alternatively, the VIN pin can accept a voltage between 5V and 12V, which is then regulated down to 3.3V by the onboard regulator. The 3.3V pin is an output and should not be used for input power unless you are powering external components that require exactly 3.3V and you are certain about current draw. Always ensure your power supply can provide sufficient current, typically at least 500mA for USB, to avoid brownouts or instability, especially when the Wi-Fi is active.
The Arduino MKR1000 WiFi operates at a logic level of 3.3V. This is a critical distinction from boards like the Arduino Uno which use 5V logic. When connecting external components, especially sensors or modules, ensure they are compatible with 3.3V logic. If you need to connect a 5V device, you will need a logic level shifter. For example, to connect a standard LED, you would connect its anode to a digital pin (e.g., G5), its cathode to one end of a current-limiting resistor (typically 220-330 ohms), and the other end of the resistor to GND. This prevents drawing too much current through the pin.
Connecting an I2C sensor, such as a BME280 environmental sensor, is a common task for the MKR1000 WiFi. You would connect the sensor's VCC pin to the MKR1000's 3.3V pin, its GND pin to a GND pin on the MKR1000, its SDA pin to the MKR1000's G14 (SDA) pin, and its SCL pin to the MKR1000's G15 (SCL) pin. The Arduino IDE's Wire library can then be used to communicate with the sensor over the I2C bus.
Programming & getting started
The primary toolchain for programming the Arduino MKR1000 WiFi is the Arduino IDE. Download and install the latest version from the official Arduino website. After installation, you'll need to add support for the MKR family of boards. Go to File > Preferences, and in the 'Additional Boards Manager URLs' field, add the URL: 'https://downloads.arduino.cc/packages/package_arduino_index.json'. Then, go to Tools > Board > Boards Manager, search for 'Arduino SAMD Boards (64-bit AV R, SAMD, ESP32, etc.)', and install it. Select 'Arduino MKR WiFi 1010' (note: this board is often grouped with the MKR WiFi 1010 in the Boards Manager, despite being the MKR1000 WiFi) from the Tools > Board menu.
To upload your first program, connect the MKR1000 WiFi to your computer via the Micro USB port. The board should appear as a COM port in the Arduino IDE (check Tools > Port). Open the 'Blink' example sketch (File > Examples > 01.Basics > Blink). Modify the LED pin number if necessary (though the onboard LED is usually mapped to G6). Click the Upload button. The IDE will compile the sketch and upload it to the board. Once uploaded, the onboard LED should start blinking, confirming your setup is working.