WipperSnapper is a firmware designed to turn any WiFi-capable board into an Internet-of-Things device without programming a single line of code. WipperSnapper connects to Adafruit IO, a web platform designed (by Adafruit!) to display, respond, and interact with your project's data.

Simply load the WipperSnapper firmware onto your board, add credentials, and plug it into power. Your board will automatically register itself with your Adafruit IO account.

From there, you can add components to your board such as buttons, switches, potentiometers, sensors, and more! Components are dynamically added to hardware, so you can immediately start interacting, logging, and streaming the data your projects produce without writing code.

This guide walks you through the process of installing WipperSnapper on a development board, a brief overview of the WipperSnapper platform, and instructions for adding (and interacting with) physical components from the web. All without writing a line of code.

YOU HAVE ENTERED THE BETA ZONE

WipperSnapper is in beta and actively being developed to add functionality, hardware, and fix bugs.

We encourage you to try out WipperSnapper with the understanding that it is not final release software and is still in development.

If you encounter any bugs, glitches, or difficulties during the beta period, or in this guide, please file an issue on the Adafruit IO support page.

Works with WipperSnapper

If you have one of the following boards, you can immediately get started using the WipperSnapper beta.

ESP32-S2

Top-down video of Adafruit Funhouse PCB. The TFT display shows a data readout, and the NeoPixel LEDs glow rainbow colors.
Home is where the heart is...it's also where we keep all our electronic bits. So why not wire it up with sensors and actuators to turn our house into an electronic wonderland....
$34.95
In Stock
Angled shot of small square purple dev board.
What has your favorite Espressif WiFi microcontroller, comes with our favorite connector - the STEMMA QT, a chainable I2C port, and has...
$12.50
In Stock
Top view of rectangular microcontroller.
What's Feather-shaped and has an ESP32-S2 WiFi module? What has a STEMMA QT connector for I2C devices and a built in ambient sensor? What has your favorite Espressif WiFi...
$24.95
In Stock
Angled shot of rectangular microcontroller.
What's Feather-shaped and has an ESP32-S2 WiFi module? What has a STEMMA QT connector for I2C devices? What has your favorite Espressif WiFi microcontroller and lots of Flash and...
$17.50
In Stock
Adafruit ESP32-S2 TFT Feather powered on by a USB- C power source displaying the product tittle in a red, yellow, green, white and blue.
We've got a new machine here at Adafruit, it can uncover your deepest desires. Don't believe me? I'll turn it on right now to prove it to you! What, you want unlimited...
Out of Stock
Angled shot of a Adafruit Metro ESP32-S2.
What's Metro shaped and has an ESP32-S2 WiFi module? What has a STEMMA QT connector for I2C devices, and a Lipoly charger circuit? What has your favorite Espressif WiFi...
$19.95
In Stock
Angled shot of Adafruit MagTag development board with ESP32-S2 and E-Ink display.
The Adafruit MagTag combines the new ESP32-S2 wireless module and a 2.9" grayscale E-Ink display to make a low-power IoT display that can show data on its screen even when power...
$34.95
In Stock

ESP32

Angled shot of rectangular microcontroller.
Aww yeah, it's the Feather you have been waiting for! The HUZZAH32 is our ESP32-based Feather, made with the official WROOM32 module. We packed everything you love...
$19.95
In Stock

SAMD51 ("M4")

Adafruit Metro M4 Airlift Lite dev board with SAMD51 an ESP32 Wifi Co-processor.
Give your next project a lift with AirLift - our witty name for the ESP32 co-processor that graces this Metro M4. You already know about the Adafruit Metro...
Out of Stock
Front view of a Adafruit PyPortal - CircuitPython Powered Internet Display with a pyportal logo image on the display.
PyPortal, our easy-to-use IoT device that allows you to create all the things for the “Internet of Things” in minutes. Make custom touch screen interface...
$54.95
In Stock
The development board I own is not on this list

We're actively developing Adafruit IO Wippersnapper and will be adding new boards over time. Follow the Adafruit Blog and @AdafruitIO on Twitter to keep updated.

Can I add a new development board to Wippersnapper

Our goal is to allow people to contribute their boards to Adafruit IO WipperSnapper. We're still building out a process for this and will have steps for it in the future.

Updating WipperSnapper

Adafruit WipperSnapper is in active development. To avoid encountering bugs or problems with WipperSnapper, you'll want to keep the firmware on your WipperSnapper device up-to-date 

When you visit the WipperSnapper device list or the WipperSnapper device page, you'll notice the WipperSnapper device has a badge indicating the device's firmware version. When we release a new WipperSnapper firmware version, the badge will have an x next to the version number and appear red.

To update WipperSnapper - download the latest version of WipperSnapper for your board and follow the installation steps for your hardware.

WipperSnapper is BETA software

WipperSnapper is in beta and actively being developed to add functionality, hardware, and fix bugs.

We encourage you to try out WipperSnapper with the understanding that it is not final release software and is still in development.

If you encounter any bugs, glitches, or difficulties during the beta period, or in this guide, please file an issue on the Adafruit IO support page.

Sign up for Adafruit IO

Adafruit IO is a platform designed by Adafruit to displayrespond, and interact with your project's data. You will need an Adafruit IO account to use the Adafruit.io Wippersnapper platform.

If you do not already have an Adafruit IO account set up, head over to io.adafruit.com to link your Adafruit.com account to Adafruit IO.

Download the latest version

If you were previously running CircuitPython on your board - ALWAYS BACK UP YOUR CODE BEFORE INSTALLING OR UPDATING WIPPERSNAPPER BETA.

Download the UF2 file for your board below:

Next, plug your board into a USB cable. Make sure the USB cable is a data cable!

Install WipperSnapper

Double-tap the RESET button on your board to enter the UF2 bootloader. You may need to try this a few times to get the timing right.

A new drive will show up on your computer as boardnameBOOT, where boardname is the name of your specific board.

Next, drag the UF2 file you downloaded to the boardnameBOOT drive.

The boardnameBoot drive will disappear from your computer and a new drive will show up on your computer named WIPPER.

You'll also see the LEDs blink yellow 4 times to indicate the file system is initialized.

  • NOTE - If you've used this board previously with CircuitPython, it'll be named CIRCUITPY instead of WIPPER.

Configure the WipperSnapper Secrets File

You do not need to repeat the following steps each time you upgrade the WipperSnapper firmware file - once the board is registered with Adafruit IO, WipperSnapper will remember it until you delete the board.

We expect educators, scientists, artists, and makers to need quick and easy access to their WiFi network credentials, along with a way of storing their Adafruit IO credentials. WipperSnapper uses a secrets.json file on the WIPPER drive to hold your Adafruit IO and network credentials.

Open the WIPPER drive on your computer, you should see a new file named secrets.json.

Open the secrets.json file using a text editor.

Inside is a JSON-formatted text file with a line for each item. Each item has a name (such as your Adafruit IO username, io_username) and then a colon to separate it from the item key (such as YOUR_IO_USERNAME_HERE) and finally a comma.

The network_type_wifi_ key written to your file will depend on which type of WiFi interface your hardware uses. This will be set automatically!

{
    "io_username": "YOUR_IO_USERNAME_HERE",
    "io_key": "YOUR_IO_KEY_HERE",
    "network_type_wifi_native": {
      "network_ssid": "YOUR_WIFI_SSID_HERE",
      "network_password": "YOUR_WIFI_PASS_HERE"
    }
}

To obtain your Adafruit IO credentials, navigate to the Adafruit IO WipperSnapper page and click "My Key". A modal will pop up with your Adafruit IO username and the active key.

In the secrets.json file, replace YOUR_IO_USERNAME_HERE with your Adafruit IO username.

Then, replace YOUR_IO_KEY_HERE with the value of your Adafruit IO active key.

Replace YOUR_WIFI_SSID_HERE with your WiFi SSID and replace YOUR_WIFI_PASS_HERE with your WiFi network password.

Registering a board with Wippersnapper

On a web browser, navigate to the Adafruit IO WipperSnapper page. Keep this page open during this step.

Next, eject the WIPPER drive.

Then, press your board's RESET button once.

The RGB LED (if your board has one) should turn cyan as it connects to your WiFi network, then blue as it connects to the Adafruit IO service. It'll briefly turn yellow as it sends details about the board's hardware to Adafruit IO.

Finally, the RGB LED will blink green three times to indicate that it's fully connected. It'll turn off to conserve power. 

On your browser, you should see a new modal pop-up with a picture of your board! Give your board a name and click Continue to Device Page.

Congrats, your board is registered with WipperSnapper! The LED(s) or NeoPixel(s) will periodically flash to alert you that the board is still connected to Adafruit.io WipperSnapper.

Next, let's add some components to your board and start playing around! 

WipperSnapper is BETA software

WipperSnapper is in beta and actively being developed to add functionality, hardware, and fix bugs.

We encourage you to try out WipperSnapper with the understanding that it is not final release software and is still in development.

If you encounter any bugs, glitches, or difficulties during the beta period, or in this guide, please file an issue on the Adafruit IO support page.

Sign up for Adafruit IO

Adafruit IO is a platform designed by Adafruit to displayrespond, and interact with your project's data. You will need an Adafruit IO account to use the Adafruit.io Wippersnapper platform.

If you do not already have an Adafruit IO account set up, head over to io.adafruit.com to link your Adafruit.com account to Adafruit IO.

Download the latest version

If you were previously running CircuitPython on your board - ALWAYS BACK UP YOUR CODE BEFORE INSTALLING OR UPDATING WIPPERSNAPPER BETA.

Download the UF2 file for your board below:

Next, plug your board into a USB cable. Make sure the USB cable is a data cable!

Install WipperSnapper

Double-tap the RESET button on your board to enter the UF2 bootloader. You may need to try this a few times to get the timing right.

A new drive will show up on your computer as boardnameBOOT, where boardname is the name of your specific board.

Next, drag the UF2 file you downloaded to the boardnameBOOT drive.

The boardnameBoot drive will disappear from your computer and a new drive will show up on your computer named WIPPER. You'll also see the LEDs blink yellow 4 times to indicate the file system is initialized.

  • NOTE - If you've used this board previously with CircuitPython, it'll be named CIRCUITPY instead of WIPPER.

 

Configure the WipperSnapper Secrets File

You do not need to repeat the following steps each time you upgrade the WipperSnapper firmware file - once the board is registered with Adafruit IO, WipperSnapper will remember it until you delete the board.

We expect educators, scientists, artists, and makers to need quick and easy access to their WiFi network credentials, along with a way of storing their Adafruit IO credentials. WipperSnapper uses a secrets.json file on the WIPPER drive to hold your Adafruit IO and network credentials.

Open the WIPPER drive on your computer, you should see a new file named secrets.json.

Open the secrets.json file using a text editor.

Inside is a JSON-formatted text file with a line for each item. Each item has a name (such as your Adafruit IO username, io_username) and then a colon to separate it from the item key (such as YOUR_IO_USERNAME_HERE) and finally a comma.

The network_type_wifi_ key written to your file will depend on which type of WiFi interface your hardware uses. This will be set automatically!

{
   "io_username":"YOUR_IO_USERNAME_HERE",
   "io_key":"YOUR_IO_KEY_HERE",
   "network_type_wifi_airlift":{
      "network_ssid":"YOUR_WIFI_SSID_HERE",
      "network_password":"YOUR_WIFI_PASS_HERE"
   }
}

To obtain your Adafruit IO credentials, navigate to the Adafruit IO WipperSnapper page and click "My Key". A modal will pop up with your Adafruit IO username and the active key.

In the secrets.json file, replace YOUR_IO_USERNAME_HERE with your Adafruit IO username.

Then, replace YOUR_IO_KEY_HERE with the value of your Adafruit IO active key.

Replace YOUR_WIFI_SSID_HERE with your WiFi SSID and replace YOUR_WIFI_PASS_HERE with your WiFi network password.

Registering your Hardware to Wippersnapper

On a web browser, navigate to the Adafruit IO WipperSnapper page. Keep this page open during this step.

Eject the WIPPER drive.

Then, press your board's RESET button once.

The RGB LED (if your board has one) should turn cyan as it connects to your WiFi network, then blue as it connects to the Adafruit IO service. It'll briefly turn yellow as it sends information about the board to Adafruit IO.

Finally, the RGB LED will blink green three times to indicate that it's fully connected. It'll turn off to conserve power. 

On your browser, you should see a new modal pop-up with a picture of your board! Give your board a name and click Continue to Device Page.

Congrats, your board is registered with WipperSnapper! The LED(s) or NeoPixel(s) will periodically flash to alert you that the board is still connected to Adafruit.io WipperSnapper.

Next, let's add some components to your board and start playing around! 

WipperSnapper is BETA software

The WipperSnapper user experience is optimized for microcontrollers such as the ESP32-S2, ESP32, and SAMD51 (with QSPI flash and AirLift). These hardware configurations allow for easy firmware installation and configuration through either the web (using Adafruit's Web ESPTool for ESP32-S2, ESP32) or your operating system (using TinyUSB). 

Some IoT hardware, such as the Arduino Nano 33 IoT, Arduino MKR WiFi 1010 will not work with the existing provisioning methods because they lack external flash storage and/or native USB which allows them to be used as a USB volume.

HOWEVER, you can use a board that lacks these properties, it'll just be a bit trickier to get set up and will require the usage of Arduino IDE.

The following boards are supported by following the instructions on this page:

  • Arduino Nano 33 IoT
  • Arduino MKR WiFi 1010

Sign up for Adafruit IO

Adafruit IO is a platform designed by Adafruit to displayrespond, and interact with your project's data. You will need an Adafruit IO account to use the Adafruit.io Wippersnapper platform. 

If you do not already have an Adafruit IO account set up, head over to io.adafruit.com to create one for free.

Arduino Setup

First - you should go through the setup guides associated with your selected set of hardware, and make sure you have established internet connectivity using the hardware before continuing

Next, install the Adafruit WipperSnapper library for Arduino using the Library Manager in the Arduino IDE.

Click the Manage Libraries ... menu item, search for WipperSnapper, and select the Adafruit WipperSnapper Beta library, and install the latest version:

When asked to install the dependencies, click Install all.

Load Example

Open up File -> Examples -> Adafruit WipperSnapper Beta -> Wippersnapper_NoFS

// Adafruit IO WipperSnapper Beta
//
//
// NOTE: This software is a BETA release and in active development.
// Please report bugs or errors to
// https://github.com/adafruit/Adafruit_Wippersnapper_Arduino/issues
//
// This sketch is for devices which lack USB-MSD or LittleFS support such
// as the Arduino MKR WiFi 1010, Arduino Nano 33 IoT.
//
// Adafruit invests time and resources providing this open source code.
// Please support Adafruit and open source hardware by purchasing
// products from Adafruit!
//
// Brent Rubell for Adafruit Industries, 2021
//
// All text above must be included in any redistribution.

#include "Wippersnapper_Networking.h"

/************************ Adafruit IO Config *******************************/

// Visit io.adafruit.com if you need to create an account,
// or if you need your Adafruit IO key.
#define IO_USERNAME "YOUR_AIO_USERNAME"
#define IO_KEY "YOUR_AIO_KEY"

/**************************** WiFi Config ***********************************/
#define WIFI_SSID "YOUR_WIFI_SSID"
#define WIFI_PASS "YOUR_WIFI_PASSWORD"

#include "Wippersnapper_Networking.h"
Wippersnapper_WiFi wipper(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);

void setup() {
  // Provisioning must occur prior to serial init.
  wipper.provision();

  Serial.begin(115200);
  // while (!Serial) delay(10);

  wipper.connect();
}

void loop() { wipper.run(); }

Configure Example

In the code, replace YOUR_AIO_USERNAME and YOUR_AIO_KEY with your Adafruit IO Username and Adafruit IO Key

  • If you need to find these credentials, visit io.adafruit.com and click "My Key" on the top right.

Then, replace YOUR_WIFI_SSID with your wireless network's name and YOUR_WIFI_PASSWORD with your wireless network's password.

Save the sketch.

Register your Hardware with WipperSnapper

On a web browser, navigate to the Adafruit IO WipperSnapper page. Keep this page open during this step.

In the Arduino IDE, verify and upload the sketch to your hardware.

On your browser, you should see a new modal pop-up with a picture of your board! Give your board a name and click Continue to Device Page.

Congrats, your board is registered with WipperSnapper! The LED(s) or NeoPixel(s) will periodically flash to alert you that the board is still connected to Adafruit.io WipperSnapper.

Next, let's add some components to your board and start playing around! 

Ok - you've connected your board to WipperSnapper. Now what?

This page will give you a quick tour of Adafruit IO WipperSnapper and its core features.

WipperSnapper Device List

The Device List page provides a list of the devices you've connected to Adafruit IO WipperSnapper along with their connection status.

Think of it as a virtual inventory for your boards! 

You can visit this page at any time by navigating to https://io.adafruit.com/wippersnapper.

Wippersnapper Device Page

Clicking on a device from the Devices List page will bring you to its device page. This page is an interface to configure and interact with anything physically connected to your device.

You may think of it as the state of your device at any given time. 

When you register a device for the first time, this page will be empty, it's a clean slate!

WipperSnapper Components 

A "component" in WipperSnapper denotes anything which is physically connected to your hardware.

This can include sensors, buttons, LEDs, NeoPixels, displays, and more!

When you click New Component, your hardware will automatically connect to and configure the component using the settings you specified. No coding required! 

Additionally, a component also sets up a unique Adafruit IO feed to store the component's data stream on the web.

Do I need to set up my components every time I use WipperSnapper?

Nope! WipperSnapper remembers each component's configuration for each of your boards. The "state" of your board's configuration is saved to its device page.

When you re-connect a board to WipperSnapper, it will automatically re-configure every component listed on the Device Page. The most recent value stored on each component's feed will be sent to the device.

I do not see my the component I want to use listed in the component picker pop-up

We're actively working towards adding more components and component types to Adafruit Wippersnapper. If you'd like to suggest a component to add, please leave feedback on the Adafruit IO "Contact Us" form and include the product URL and a datasheet (if applicable).

Getting something to blink is the first step for most hardware projects. We'll start learning WipperSnapper by adding a LED component to your board and blinking it! 

Component Wiring

Most development boards include a built-in LED which you don't need to wire up. 

On the Adafruit FunHouse, this LED is found below the display, and slightly to the right.

For other development boards, refer to the board's wiring diagram for the location of the built-in LED or wire up an externally connected LED.

Add a LED Component

First, navigate to the WipperSnapper device list and select the board you'd like to use.

On the device page, next to the device's name, there should be a green "Online" badge indicating that the device is connected to Adafruit IO.

I see a red, "Offline", badge

First, verify your Wireless Network's connectivity by navigating to https://io.adafruit.com/wippersnapper from your browser. If your wireless network is up and you can access Adafruit IO, please contact Adafruit IO support for further troubleshooting steps.

Click the + New Component button to bring up the component picker. 

From the component picker, click the LED.

Next, we're going to configure the LED component. Set the component's name.

Then, open the LED Pin dropdown and select the pin to which the LED is physically connected.

Once you've configured the LED, click Create Component

A new toggle button "component" should appear on the device page.

Click the button to toggle the LED!

Wait...what just happened?

When you clicked "Create Component" Adafruit IO WipperSnapper sent a message to your board to configure the LED using the settings you configured. It also created a new Adafruit IO Feed for storing the component's history and saving its state. Toggling the button sends a "toggle the LED" message to the device. This is the core of how digital outputs work in Adafruit IO WipperSnapper.

WipperSnapper RGB Status Light

Most WipperSnapper-capable boards have a single NeoPixel or DotStar RGB LED on the board. During the boot process, the LED is used to signal the hardware's status.

Here's what the colors and blinking means:

  • YELLOW Blinking - There is a new secrets.json file on the WIPPER drive. Edit this file to contain your credentials and RESET the device for the changes to take effect.
  • PINK - Connecting to Network.
    • If the device reboots while displaying this color, there's an issue connecting to the wireless network you specified in secrets.json.
  • BLUE - Connecting to Adafruit.io MQTT Broker
    • If the device reboots while displaying this color, please verify your Adafruit.io in the secrets.json file.
  • GREEN Solid - Connected to Network and Adafruit IO.
  • YELLOW Solid - Registering and configuring your hardware with WipperSnapper.
  • GREEN Blinking (3x) - Bootup complete, you can proceed to use your device with the WipperSnapper website.

Encountering issues?

If you are having trouble with your hardware, technical support is provided in the Adafruit customer forums for all Adafruit customers by our dedicated team of engineers and staff. To get help, post a new topic on the WipperSnapper forum.

If you are having a problem with the WipperSnapper website - vist http://io.adafruit.com/support and click Contact Adafruit IO Support.

Adafruit IO Data Rate

If you are using Adafruit IO Plus, you will be able to send 60 data points per minute to Adafruit IO. If you are using the free Adafruit IO account, you will be able to send 30 data points per minute.

Sending more than this will result in your account temporarily timing out ("throttled"). 

This means that if you're using a Free Adafruit IO account, you will need to be more conscious of how you set up your components. We suggest IO Free users configure their components to send data on a periodic basis, rather than immediately. 

Adafruit IO Feed Limit

Free Adafruit IO accounts are limited to ten total components and up to two Wippersnapper devices per account.

Adafruit IO Plus accounts do not have a limit on the number of devices that may connect to Wippersnapper or feeds. However, you must adhere to sending 60 data points per minute, across all your WipperSnapper devices.

If this data rate limit is too low, we offer upgrades to the Adafruit IO Plus plan to increase your data rate limit. 

This guide was first published on Sep 27, 2021. It was last updated on 2022-04-13 12:31:26 -0400.