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.

YOU HAVE ENTERED THE BETA ZONE

Adafruit IO and WipperSnapper are in beta and are actively being developed to add functionality, hardware, and fix bugs.

We encourage you to try out the WipperSnapper firmware 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 Adafruit IO + WipperSnapper Firmware

If you have an Adafruit IO account, you can visit https://io.adafruit.com/wippersnapper/new to browse the boards which have firmware built for WipperSnapper.

Can I add a new development board to Adafruit IO?

You can add a new board to Adafruit IO and make a WipperSnapper firmware image for it by following this guide: https://learn.adafruit.com/how-to-add-a-new-board-to-wippersnapper

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.

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.

We also gladly take community contributions to Adafruit IO - You can add your own component by following this guide.

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 Sep 27, 2022.