MakerLab
ArduinoArduino MKR1000 WiFi

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.

Arduino MKR1000 WiFi

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 / SoCAtmel SAME70J20A (Microchip)
Architecture32-bit ARM Cortex-M0+
Clock speed48 MHz
Flash / Storage256 KB
RAM / SRAM32 KB
Operating voltage3.3V
Digital I/O pins12
Analog / ADC7 (10-bit)
PWM12 (software-controlled)
Connectivity802.11 b/g/n Wi-Fi
USBMicro USB (for programming and power)
Power input5V via Micro USB or VIN pin, 3.3V via 3.3V pin
Dimensions67.64mm x 25mm

Pinout & pin functions

PinFunction
3.3VPower output (regulated 3.3V)
GNDGround
G0Digital I/O, Button Input
G1Digital I/O, UART RX
G2Digital I/O
G3Digital I/O
G4Digital I/O
G5Digital I/O, PWM
G6Digital I/O, PWM
G7Digital I/O, PWM
G8Digital I/O, PWM
G9Digital I/O, PWM
G10Digital I/O, PWM, SPI MOSI
G11Digital I/O, PWM, SPI MISO
G12Digital I/O, PWM, SPI SCK
G13Digital I/O, PWM, SPI CS
G14Digital I/O, I2C SDA
G15Digital I/O, I2C SCL
A0Analog Input (ADC), Digital I/O
A1Analog Input (ADC), Digital I/O
A2Analog Input (ADC), Digital I/O
A3Analog Input (ADC), Digital I/O
A4Analog Input (ADC), Digital I/O
A5Analog Input (ADC), Digital I/O
A6Analog Input (ADC), Digital I/O
RESETReset button
VINPower input (typically 5V)
USBMicro 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.

Project ideas

Wi-Fi Connected Weather StationMonitor temperature, humidity, and pressure using an external sensor (e.g., BME280 connected via I2C) and send the data wirelessly to a cloud service like ThingSpeak or Adafruit IO. This project utilizes the board's Wi-Fi capabilities and I2C communication.
Remote Controlled LED StripControl a WS2812B addressable LED strip connected to a digital pin. Build a simple web interface hosted on the MKR1000 WiFi to turn LEDs on/off, change colors, or create dynamic patterns remotely via Wi-Fi.
IoT Motion DetectorUse a PIR motion sensor connected to a digital input pin. When motion is detected, send an alert notification (e.g., via email or a messaging service) using the board's Wi-Fi connection. This project teaches basic sensor input and network communication.
Smart Home Temperature MonitorDeploy multiple MKR1000 WiFi boards in different rooms, each with a temperature sensor (e.g., DS18B20 or analog thermistor). Aggregate the temperature readings from all boards onto a central dashboard accessible over the internet.
Low-Power Wi-Fi Sensor NodeOptimize the board's power consumption by putting the microcontroller into deep sleep modes between sensor readings. Wake up periodically, take a reading from an analog sensor (e.g., soil moisture), send it over Wi-Fi, and go back to sleep. Ideal for battery-powered applications.
MQTT Client for Home AutomationIntegrate the MKR1000 WiFi into an existing home automation system (like Home Assistant) by implementing an MQTT client. Publish sensor data to an MQTT broker and subscribe to topics to control actuators connected to the board.

Buying tips & gotchas

When purchasing the Arduino MKR1000 WiFi, be aware that it operates at 3.3V logic, so ensure any external components are compatible or use a logic level converter. Avoid powering it directly from a high-voltage source through the 3.3V pin, as this bypasses the onboard regulator and can damage the board. The onboard Wi-Fi module can consume significant power, so consider power management techniques for battery-operated projects. Genuine Arduino boards are recommended for reliable performance and community support; be cautious of cheaper clones which may have inferior components or firmware. Accessories like small breadboards, jumper wires, and appropriate power supplies are essential for prototyping.