Challenger M0 WiFi Feather


37 in stock

SKU: 98-00168-1

Tags: ,


Challenger M0 WiFi information

The Challenger M0 WiFi is an Arduino/Micropython compatible Adafruit Feather format micro controller board packed with loads of functionality for your more real time sensitive projects that require a WiFi connection.

For this board we took Adafruit’s Feather M0 Express, which also happens to be a personal favorite of ours, and added an ESP8285 chip to it, to give it extensive WiFi capability. With the experience that we already have with the ESP8266 we knew it was the right way to go.

So the main controller of this board is the trusty SAMD21 with 256KByte of FLASH memory and 32KByte of SRAM. And just like the Feather M0 Express there is also an external 2Mbyte flash memory where you can store files systems or python scripts or what ever that you need.


To the Challenger M0 WiFi we also added an ESP8285 chip. For those of you that is unfamiliar with this device, it is basically an ESP8266 device with an integrated 1MByte of flash memory. This allows us to have an AT command interpreter inside this chip that the main controller can talk to and connect to you local WiFi network. The communications channel between the two devices is an unused UART on the main controller and the standard UART on the ESP8285. As simple as it can be.

The ESP8285 chip comes pre-flashed with Espressif’s AT command interpreter stored in the internal 1MByte of the ESP8285. This interpreter support all of the operating and sleep modes of the standard ESP8266 framework which makes it easy to work with. Talking to the device is as easy as opening the second serial port (Serial2), resetting the ESP8285 and start listening for events and sending commands. To simplify this process we are also developing a library that is compatible with the standard ESP8266 environment.

USB Type C

In the recent years we have noticed that we are seeing more and more USB Type C cable laying around the lab due to the fact that all new phones and accessories use them. As of yet we haven’t seen any shortage of micro USB cables but we are not getting any new ones any more and old ones do break occasionally. So we decided to go for a USB Type C connector for this board. A bonus of this is that they are quite bit more durable and you don’t have to fiddle with the cable before plugging it in.

Challenger M0 WiFi Features

So, the board is packed with hardware features, here’s a short list of its most prominent ones.

– Sturdy USB Type C connector
– ATSAMD21G18 @ 48MHz with 3.3V power
– 256KB FLASH + 32KB RAM
– 2 MByte of NOR FLASH memory
– 32.768 KHz crystal for clock generation & RTC
– 3.3V regulator with 600mA peak current output, most of which is reserved for the board itself
– USB native support, comes with UF2 USB bootloader
– 20 GPIO pins
– Hardware Serial, hardware I2C, hardware SPI support
– PWM outputs on all pins
– 6 x 12-bit analog inputs
– 1 x 10-bit analog ouput (DAC)
– Built in 250mA lipoly charger with charging status indicator LED
– Pin #13 red LED for general purpose blinking
– Power/enable pin
– 4 mounting holes
– Reset button
– ESP8285 WiFi chip with onboard antenna
– Neopixel LED that indicates board status but that can be used by the programmer

Challenger M0 WiFi Software

The Challenger M0 WiFi board is 100% compatible with the Arduino framework. It has a unique board support package that fully supports all the features of the board. You can also install and run MicroPython on the board if this is what you want to do. We are in the process of verifying that everything works as it should and will present a tutorial on how to do this real soon.

Challenger M0 WiFi Arduino support

In order to be able to program it using the Arduino environment you need to install an Arduino board support package from our website and here’s a short step by step instruction on how to do this.

Note: You should not rely on Adafruit Feather software packages as there are subtle differences between the boards.

– Start your Arduino IDE (It needs to be 1.8.5 or higher)
– Select menu choice “File” and then “Preferences”. You can also type Ctrl+comma (Ctrl-,) on your keyboard.
– Now add the URL “” into the “Additional Boards Manager URLs” field.
– Click OK to close the preferences dialog.
– Now open the Boards Manager by selecting it in the “Tools->Board:” menu
– Scroll down until you see “Invector SAMD Boards” or search for Invector.
– Move your mouse to the box and click on install.
That is it, when the process is done you are ready to select the “Invector Labs Challenger M0 WiFi” board in the boards menu and start writing software for it.

Challenger M0 WiFi library support

A library that will minimize your efforts in running the WiFi stack is currently being developed. It will basically be compatible with the already existing ESP8266 environment making it very easy to migrate software to your board.

You can check the progress in our Gitlab repository here: and if you like you can also chip in to improve on it.


The boards comes with loose headers that can be soldered to the board if your application requires it.


We can also do customized version of this board for you. Check out our electronics page with more information.

Additional information

Weight 0.009 kg
Dimensions 5.07 × 2.28 × 0.72 cm



Here’s a short step by step instruction on how to install the Arduino board support package that you need to be able to access all the features of the board.

  1. Start your Arduino IDE (It needs to be 1.8.5 or higher)
  2. Select menu choice “File” and then “Preferences”. You can also type Ctrl+comma (Ctrl-,) on your keyboard.
  3. Now add the URL “” into the “Additional Boards Manager URLs” field.
  4. Click OK to close the preferences dialog.
  5. Now open the Boards Manager by selecting it in the “Tools->Board:” menu
  6. Scroll down until you see “Invector SAMD Boards” or search for Invector.
  7. Move your mouse to the box and click on install.

That is it, when the process is done you are ready to select the “Invector Labs Challenger M0 WiFi” board in the boards menu and start writing software for it.


We’re still making sure that all works using micropython and will update this section as soon as we are fully confident that it all  works.



Short initialization example

Here’s an example on how to reset the ESP8285 (wifi modem) and wait for it to return the ready prompt.

digitalWrite(39, HIGH);
digitalWrite(33, LOW);
pinMode(33, OUTPUT);
pinMode(39, OUTPUT);
// The modem is connected to Serial2
// Release reset
digitalWrite(33, HIGH);
// Wait for ready prompt
String rdy = Serial2.readStringUntil('n');
while(!rdy.startsWith("ready")) {
  rdy = Serial2.readStringUntil('n');

After these step the modem is initialized and is ready to accept your commands.

Sending and AT command

After the modem has been initialized and it has reported that it is ready you can now send a command to it. Here’s an example on how a simple command can be sent.


This command simply tells the modem not to repeat everything back that you send to it. If you want to enable this again you would simply send the following command:


Complete documentation of the command set can be found here.

Using the library

The example below shows how to use the library that is in development.

int attempts = 4;
while (cWiFi.begin(true, "<ssid>", "<password>") != WL_CONNECTED && attempts)
if (!attempts) {
  Serial.println("Could not connect to the network !");
if (cWiFi.hostByName("", ip1)) {
  Serial.printf(" IP: %d.%d.%d.%dn", ip1[0], ip1[1], ip1[2], ip1[3]);
Serial.printf("Using channel: %dn",;
Serial.printf("RSSI: %dn", cWiFi.RSSI());
Serial.print("MAC Address: ");
Serial.printf("Sleep Mode: %dn", cWiFi.getSleepMode());
cWiFi.setSleepMode(WIFI_LIGHT_SLEEP, 5);
Serial.printf("Sleep Mode: %dn", cWiFi.getSleepMode());
Serial.printf("Phy Mode: %dn", (int)cWiFi.getPhyMode());
Serial.printf("Output power: %.2f dBmn", cWiFi.getOutputPower());
Serial.printf("Persistent mode is %sn", cWiFi.getPersistent() ? "on" : "off");
Serial.printf("Persistent mode is %sn", cWiFi.getPersistent() ? "on" : "off");

As you can see, using the library makes it really easy to access the WiFi modem.



Arduino board package source files

Simple AT command library and example to get started using the Challenger with AT commands.

ESP8266 compatible WiFi Library (Still in development)

Hardware files

Espressif AT Command set


Technical details

Main Processor

  • SAMD21G18A 3.3V
  • 256 KByte FLASH Memory.
  • 32 KByte SRAM Memory.
  • 1 Hardware I2C channel.
  • 1 Hardware SPI channel.
  • 1 Hardware UART for the user.
  • 1 Hardware UART connected to the network processor.
  • 12 Bit ADC.
  • 32.768 Crystal ocillator for low power operation.

Network Processor

  • ESP8285 with internal 1MByte FLASH Memory
  • WiFi (2.4GHz)
  • Espressif AT Interpretor

RF Tuning

RF tuning tableThe RF tuning was optimized with the unit placed on a breadboard sitting on top of an IKEA desk, which seemed to be a common use case for this module. Should you want to include the unit in a product it may require a different tuning. Let us know if that is the case.

Board functions

  • 2 MByte external SPI FLASH memory
  • Neopixel LED
  • LiPo charger circuit with 250mA charging current
  • USB Type C connector


2 Replies to “Challenger M0 WiFi Feather”

  1. Hej,

    Very interesting board! What is the lowest current possi le to achieve during deep sleep on both MCUs?

    Thanks in advance!

    1. Hej Jonas,

      That is a very good question. Now i haven’t had the time yet to experiment with this but the board is prepared to handle sleeping on both the ESP and the SAMD21 side.
      Theoretically the ESP8285 can be brought into deep sleep where it only consumes around 20uA. It also have a few different power down modes where it still is active but with a considerably higher power consumption.
      Sleep modes

      The SAMD21 current consumption very much depends on how many of the peripherals that your application allows you to shut down. But in theory if everything is brought down you can reach levels of around 10uA.

      Then you will have the quiescent power consumption from the voltage regulator as well as the charger chip on the board, but that will require some actual measuring.


Leave a Reply

Your email address will not be published. Required fields are marked *

Please reload

Please Wait

Den här sajten använder cookies. Genom att fortsätta att använda sajten så har Du accepterat våra cookies.