# Cheekmate - a Wireless Haptic Communication System

## Overview

![Plastic capsule containing electronics](https://cdn-learn.adafruit.com/assets/assets/000/115/587/medium800/gaming_cheekmate-banner.jpg?1664927537)

Social media is abuzz lately over the prospect of **cheating in tournament strategy games**.&nbsp;Is it happening? How is that possible with officials watching?&nbsp;Could there be a hidden receiver somewhere?&nbsp;What can be done to rectify this? These are probing questions!

We’ll get to the bottom of this by making a simple one-way **hidden communicator** using **Adafruit parts** and the **Adafruit IO service**. _Not for actual cheating_ of course, that would be asinine…in brief, a stain on the sport…but to record for posterity whether this sort of backdoor intrusion is even plausible or just an internet myth.

Warning: 

## Parts

The project requires a **soldering iron** and related paraphernalia, and the following Adafruit items:

### Adafruit QT Py ESP32-S2 WiFi Dev Board with STEMMA QT

[Adafruit QT Py ESP32-S2 WiFi Dev Board with STEMMA QT](https://www.adafruit.com/product/5325)
What has your favorite Espressif WiFi microcontroller, comes with&nbsp;[our favorite connector - the STEMMA QT](http://adafruit.com/stemma), a chainable I2C port, and has lots of Flash and RAM memory for your next IoT project? What will make your next IoT project flyyyyy? What a...

In Stock
[Buy Now](https://www.adafruit.com/product/5325)
[Related Guides to the Product](https://learn.adafruit.com/products/5325/guides)
![Angled shot of small square purple dev board.](https://cdn-shop.adafruit.com/640x480/5325-12.jpg)

### Adafruit DRV2605L Haptic Motor Controller - STEMMA QT / Qwiic

[Adafruit DRV2605L Haptic Motor Controller - STEMMA QT / Qwiic](https://www.adafruit.com/product/2305)
The DRV2605 from TI is a fancy little motor driver. Rather than controlling a stepper motor or DC motor, its designed specifically for controlling **haptic** motors - buzzers and vibration motors. Normally one would just turn those kinds of motors on and off, but this driver has...

In Stock
[Buy Now](https://www.adafruit.com/product/2305)
[Related Guides to the Product](https://learn.adafruit.com/products/2305/guides)
![Video of a haptic controller breakout board with a vibrating motor disc soldered to it. The disc vibrates against the surface.](https://cdn-shop.adafruit.com/product-videos/640x480/2305-05.jpg)

### Vibrating Mini Motor Disc

[Vibrating Mini Motor Disc](https://www.adafruit.com/product/1201)
\*BZZZZZZZZZZ\* Feel that? That's your little buzzing motor, and for any haptic feedback project you'll want to pick up a few of them. These vibe motors are tiny discs, completely sealed up so they're easy to use and embed.  
  
Two wires are used to control/power the vibe....

In Stock
[Buy Now](https://www.adafruit.com/product/1201)
[Related Guides to the Product](https://learn.adafruit.com/products/1201/guides)
![Vibrating Mini Motor Disc with two wires](https://cdn-shop.adafruit.com/640x480/1201-01.jpg)

### Lithium Ion Polymer Battery Ideal For Feathers - 3.7V 400mAh

[Lithium Ion Polymer Battery Ideal For Feathers - 3.7V 400mAh](https://www.adafruit.com/product/3898)
Lithium-ion polymer (also known as 'lipo' or 'lipoly') batteries are thin, light, and powerful. The output ranges from 4.2V when completely charged to 3.7V. This battery has a capacity of **400mAh** for a total of about 1.9 Wh. If you need a larger (or smaller!)...

In Stock
[Buy Now](https://www.adafruit.com/product/3898)
[Related Guides to the Product](https://learn.adafruit.com/products/3898/guides)
![Slim Lithium Ion Polymer Battery 3.7v 400mAh with JST 2-PH connector and short cable](https://cdn-shop.adafruit.com/640x480/3898-05.jpg)

### Adafruit LiIon or LiPoly Charger BFF Add-On for QT Py

[Adafruit LiIon or LiPoly Charger BFF Add-On for QT Py](https://www.adafruit.com/product/5397)
[Is your QT Py all alone](https://www.adafruit.com/?q=qt+py&sort=BestMatch), lacking a friend to travel the wide world with? When you were a kid you may have learned about the "buddy" system, well this product is kinda like that! A board that will watch your QT...

In Stock
[Buy Now](https://www.adafruit.com/product/5397)
[Related Guides to the Product](https://learn.adafruit.com/products/5397/guides)
![Video of a person with white painted nails unplugging a USB cable from a small, black, square-shaped lipo battery breakout board soldered to a similarly shaped microcontroller, which is also connected to a monochrome OLED display breakout. The OLED breakout displays battery and power data.](https://cdn-shop.adafruit.com/product-videos/640x480/5397-05.jpg)

### STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long

[STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long](https://www.adafruit.com/product/4210)
This 4-wire cable is a little over 100mm / 4" long and fitted with JST-SH female 4-pin connectors on both ends. Compared with the chunkier JST-PH these are 1mm pitch instead of 2mm, but still have a nice latching feel, while being easy to insert and remove.

<a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/4210)
[Related Guides to the Product](https://learn.adafruit.com/products/4210/guides)
![Angled shot of STEMMA QT / Qwiic JST SH 4-pin Cable.](https://cdn-shop.adafruit.com/640x480/4210-00.jpg)

# Cheekmate - a Wireless Haptic Communication System

## Hardware

For expediency, we’ll make an assumption that only **one-way** communication is needed.&nbsp;In tournament games like chess, the current state of the board is projected for all to see. An observer **accomplice** &nbsp;in the spectator gallery (or off-site if streamed) could do the work of feeding game state to an AI engine, then relaying moves to the player.&nbsp;Technically there’s nothing preventing&nbsp;input and two-way communication for solo use, but this muddies the waters for testing the core idea.

An **Adafruit QT Py ESP32-S2** provides the brains. Inexpensive, incredibly tiny, and has **built-in WiFi**. This can communicate with a **mobile hotspot** &nbsp;(e.g. cell phone with “WiFi tethering” feature) carried by the accomplice theorized above.

![gaming_5325-02.jpg](https://cdn-learn.adafruit.com/assets/assets/000/115/510/medium640/gaming_5325-02.jpg?1664559190)

How to communicate to the player? A graphical display is right out, as are visible LEDs and audible speakers. It must be silent, but deadly to one’s opponent. So we’ll use the same sort of tiny **vibration motor** that’s in your mobile phone. A small driver board accompanies this, as the motor requires more current than can be driven directly from a microcontroller pin.

![gaming_1201-01.jpg](https://cdn-learn.adafruit.com/assets/assets/000/115/508/medium640/gaming_1201-01.jpg?1664559077)

![gaming_2305-08.jpg](https://cdn-learn.adafruit.com/assets/assets/000/115/509/medium640/gaming_2305-08.jpg?1664559094)

Such a receiver needs to be discreet…watches or jewelry are too conspicuous (and might not be allowed by tournament rules). It must be _concealable,_ perhaps inside a shoe or under one’s armpit. These body parts are naturally prone to _sweat,_ suggesting some kind of _moisture-proof enclosure._

Danger: 

These _soda bottle preforms_ were left over from [a prior project](https://learn.adafruit.com/genesis-poi-dotstar-led-persistence-of-vision-poi). They’re waterproof and practically indestructible…they’ve taken a pounding and we’ve never wrecked ’em. The smooth shape glides easily into…a back pocket.&nbsp;Similar capsules can be found on Amazon, eBay, etc.

![gaming_preforms.jpg](https://cdn-learn.adafruit.com/assets/assets/000/115/521/medium640/gaming_preforms.jpg?1664679024)

## Circuit

Here’s a schematic view of the parts laid out for clarity. In physical reality, the microcontroller and battery charger boards are soldered back-to-back with headers to all pins. The motor controller has identical connectors on either end…it doesn’t matter which way you stick it in.

![](https://cdn-learn.adafruit.com/assets/assets/000/115/514/medium800/gaming_Cheekmate-Wiring.png?1664641207)

And the actual physical circuit. Battery wires are doubled back to fit all parts down the tube:

![](https://cdn-learn.adafruit.com/assets/assets/000/115/522/medium800/gaming_circuit-physical.jpg?1664679277)

The interior of the tube is tapered slightly, and it was necessary to sand about 1/8" width from the motor driver to make it fit down in the narrow end. _Best done on the edge with the motor connections, as the other edge sits close to a PCB trace._

The vibration motor is taped to the haptic controller board, and some craft foam is inserted alongside to keep these firmly pressed against the tube body to better conduct the vibration.

A 100 mm STEMMA cable gives enough slack that the motor and controller can stay put while other parts are removable to access the power switch or for charging and uploading code.

Once capped, the whole circuit is well protected from the elements!

![gaming_capsule-open.jpg](https://cdn-learn.adafruit.com/assets/assets/000/115/523/medium640/gaming_capsule-open.jpg?1664679537)

![gaming_capsule-closed.jpg](https://cdn-learn.adafruit.com/assets/assets/000/115/524/medium640/gaming_capsule-closed.jpg?1664679542)

If expanding on this project to add outside sensor or tactile inputs, one could incorporate a [_cable gland_](https://www.adafruit.com/product/762) to maintain a tight seal.

# Cheekmate - a Wireless Haptic Communication System

## Adafruit IO Setup

We’ll use **Adafruit IO** as a backend, its simplicity is a huge asset to this project.&nbsp;If you’ve not used the service, head to the **[Welcome to Adafruit IO](https://learn.adafruit.com/welcome-to-adafruit-io)** guide&nbsp;for an explainer and to set up an account. The basic service is free and private!

So let’s assume at this point you have an account set up and are at the [io.adafruit.com](https://io.adafruit.com/) home page…

## Create a New Feed

_Feeds_ provide the conduit for getting data to devices like our receiver unit.

From the navigation bar second to top, select “ **Feeds** ,” and then “ **New Feed**.”

Give the feed a useful name (e.g. “Cheekmate” to match this project) and click the “Create” button. You’ll now see it in a list of feeds (or as the sole feed, if first time using the service).

**Note the “Key” name assigned to the feed; typically a lowercase version of the feed name you entered. This key is needed later when setting up the code…or return to the Feeds form later to get it when needed.**

![Screen shot: feed setup step 1](https://cdn-learn.adafruit.com/assets/assets/000/115/511/medium640/gaming_feed1.png?1664990369)

![Screen shot: feed setup step 2](https://cdn-learn.adafruit.com/assets/assets/000/115/512/medium640/gaming_feed2.png?1664990374)

![Screen shot: feed setup step 3](https://cdn-learn.adafruit.com/assets/assets/000/115/703/medium640/gaming_feed3.png?1664990379)

## Create a New Dashboard

A _dashboard_ provides a user interface for entering data into the above feed.

Click “ **Dashboards** ” from the navigation bar, and then “ **New Dashboard** ,” assign it a name (this can be the same as the feed if you want), and “ **Create**.”

The dashboard now appears in a list (or as the sole dashboard to start). Click the **dashboard name** in the list and we’ll create a simple form for entering messages…

![Screenshot: Dashboard initial setup step 1](https://cdn-learn.adafruit.com/assets/assets/000/115/691/medium640/gaming_dashboard1.png?1664990411)

![Screenshot: Dashboard initial setup step 2](https://cdn-learn.adafruit.com/assets/assets/000/115/692/medium640/gaming_dashboard2.png?1664990415)

![Screenshot: Dashboard initial setup step 3](https://cdn-learn.adafruit.com/assets/assets/000/115/693/medium640/gaming_dashboard3.png?1664990419)

## Add a Text Field
Our new “Cheekmate” dashboard is initially blank. Near the top right of the form, click the **gear icon** to pop open the **Dashboard Settings** menu. Select the “ **Create New Block** ” item to add a UI element…

![Screenshot: new block step 1](https://cdn-learn.adafruit.com/assets/assets/000/115/694/medium640/gaming_newblock1.png?1664990453)

![Screen shot: new block step 2](https://cdn-learn.adafruit.com/assets/assets/000/115/695/medium640/gaming_newblock2.png?1664990457)

Choose the simple **Text** block — it provides a single-line field for entering text, that’s all we need here.

You’ll be asked to _connect_ this to a _feed_ (a destination to which any text entered in the field will be sent). Select the “Cheekmate” feed created earlier (or whatever name you chose), and then the “ **Next step** ” button.

Now you can customize the look a little, like selecting the **Large** font so it’s easy to use the dashboard from a mobile phone. Click “ **Create block** ” when it’s all to your liking.

![Screenshot: text block step 1](https://cdn-learn.adafruit.com/assets/assets/000/115/696/medium640/gaming_block3.png?1664990473)

![Screenshot: text block step 2](https://cdn-learn.adafruit.com/assets/assets/000/115/697/medium640/gaming_block4.png?1664990477)

![Screenshot: text block step 3](https://cdn-learn.adafruit.com/assets/assets/000/115/698/medium640/gaming_block5.png?1664990484)

Optional but recommended: from the **Dashboard Settings** menu, select “ **Edit Layout** ” to adjust the size or position of the text field so it’s easier to tap. Click “ **Save Layout** ” when done.

![Screenshot: layout step 1](https://cdn-learn.adafruit.com/assets/assets/000/115/699/medium640/gaming_layout1.png?1664990499)

![Screenshot: layout step 2](https://cdn-learn.adafruit.com/assets/assets/000/115/700/medium640/gaming_layout2.png?1664990503)

## Adafruit IO User Name and Key

This information is needed later when setting up the code.

Click the **Key icon** near the top right of the main Adafruit IO page to access your _Adafruit IO key._

This is a seemingly random long sequence of letters and numbers that uniquely identifies you to the system, and will be inserted into the project code to grant it access.

_Never_ share this key. If you post project code on Github or similar, remember to strip it out before committing.

![Screenshot: Adafruit IO key step 1](https://cdn-learn.adafruit.com/assets/assets/000/115/704/medium640/gaming_key1.png?1664992025)

![Screenshot: Adafruit IO key step 2](https://cdn-learn.adafruit.com/assets/assets/000/115/705/medium640/gaming_key2.png?1664992030)

# Cheekmate - a Wireless Haptic Communication System

## CircuitPython Code

Code for this project is available both for **CircuitPython** and for **Arduino** ; you can use one or the other, whichever is more your programming style. Arduino is on the next page, CircuitPython is below.

If you’ve not used CircuitPython before, begin with the [**Welcome to CircuitPython**](https://learn.adafruit.com/welcome-to-circuitpython) guide which will walk you through downloading and installation.

Click the “ **Download Project Bundle** ” button below to get all the library files packed in along with the project’s main code.py file. **You will still need to create a settings.toml file with WiFi and Adafruit IO credentials, explained later on this page.**

Otherwise, if you want to assemble things manually, the project requires the following CircuitPython libraries, which can be found in the [library bundle](https://circuitpython.org/libraries) matching the version of CircuitPython you’re using:

- adafruit\_drv2605.mpy
- adafruit\_io
- adafruit\_minimqtt
- adafruit\_requests.mpy
- adafruit\_pixelbuf.mpy
- adafruit\_ticks.mpy
- adafruit\_connection\_manager.mpy
- neopixel.mpy

These go inside the **lib** &nbsp;folder on the **CIRCUITPY** drive. “.mpy” items are individual files, others require the full folder.

![CIRCUITPY](https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/folder-images/Cheekmate_CircuitPython.png?raw=true )

https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/Cheekmate/CircuitPython/code.py

## settings.toml

If you’ve previously worked with CircuitPython WiFi projects, you might already have this file on the drive, or another CircuitPython board. If not, it’s easy enough to create anew. Using your text editor of preference, create a new file on the **CIRCUITPY** drive, called **settings.toml**

Copy and paste the following exactly as it is, as a starting point:

```python
CIRCUITPY_WIFI_SSID="your-wifi-ssid"
CIRCUITPY_WIFI_PASSWORD="your-wifi-password"
ADAFRUIT_AIO_USERNAME="your-aio-username"
ADAFRUIT_AIO_KEY="your-super-long-aio-key"
```

This is a list of Python **'key' : 'value'** pairs. _Do not_ edit the keys (the part before the colon : on each line), just the values, being careful to keep both 'quotes' around strings and the comma at the end of each line.

Replace **wifi\_network\_name** and **wifi\_password** with the name or “SSID” of your wireless network and the password for access. If tethering from a phone, one or both might be auto-generated…this information will be somewhere in the phone settings. _Only 2.4 GHz networks are supported; 5 GHz is not compatible with ESP32._

Replace&nbsp; **ADAFRUIT\_AIO\_USERNAME** and&nbsp; **ADAFRUIT\_AIO\_KEY** with your name and unique key as explained on the “Adafruit IO Setup” page.

# Cheekmate - a Wireless Haptic Communication System

## Arduino Code

The **Arduino** version of the code does essentially the same thing; you can use one or the other, whichever is more your programming style.

This requires the **Adafruit DRV2605** and **Adafruit IO** libraries. Installing these using the **Arduino Library Manager** is recommended, as it will take care of all prerequisites:&nbsp; **Sketch→Include&nbsp;Library→Manage&nbsp;Libraries…**

There are **two files** in this project.&nbsp;One contains the bulk of the code, the other has **configurable settings** such as the **WiFi network name and password** , plus the **Adafruit IO account credentials and feed name**. You’ll need to edit the latter file ( **config.h** ) with all your particulars…it’s all named descriptively and should be clear what goes where. Make sure the correct board type is selected before uploading.

You can either download a ZIP with both files:

[Download Arduino “Cheekmate” Code](https://github.com/adafruit/Adafruit_Learning_System_Guides/tree/main/Cheekmate/Arduino/Cheekmate)
Or here they are inline for your perusal:

https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/Cheekmate/Arduino/Cheekmate/Cheekmate.ino

https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/Cheekmate/Arduino/Cheekmate/config.h

# Cheekmate - a Wireless Haptic Communication System

## Testing and Analysis

When powered on, the device will take perhaps 20 seconds to **connect to the wireless network and authenticate** with Adafruit IO. On **success** it will emit a **single long buzz** and light the onboard LED.

**If you do not get this buzz** : there’s an issue with the WiFi or Adafruit IO credentials, or the wiring between board and motor driver. Connecting the board to USB and watching with the Arduino serial monitor or other serial tool (e.g. _tio_ or _screen_) will give some indication of where the problem lies.

So let’s say at this point you’re buzzed and working…

Return to the “ **Dashboards** ” tab of Adafruit IO and pick your Cheekmate dashboard from the list.

**Type** a brief message in the text field and **press return** or **click or tab out of the field**.

Within a few seconds, this should be relayed to the device, which will start to flash and buzz with a **Morse code** version of the message.

The message will **repeat up to three times** , unless a new message is received during that time, in which case the current message finishes and the new one repeats three times.

![gaming_dashboard-in-use.png](https://cdn-learn.adafruit.com/assets/assets/000/115/727/medium640/gaming_dashboard-in-use.png?1665001086)

## Meat and Greet
So we know the code and device work in open air, but what about in a hypothetical use case? There are two things to find here:

- Bodies are mostly water, and **RF energy is greatly attenuated in water**. Can signals penetrate if the device is nestled in, say, one’s armpit?
- Once surrounded by flesh, is the vibration motor sufficiently muffled to **avoid detection** , or does it give away the gag?

Without a willing partner to test and record findings with, it seemed most objective to use a **proxy** with similar characteristics…like a quantity of meat. Initial plan was to shove the device between two large hams,&nbsp;but it turns out ham is _really_ expensive in the off season.

Pound for pound, bone-in pork butt roast is quite affordable!

A channel was cut through the middle, into which the device was firmly lodged.

![gaming_pork-butt.jpg](https://cdn-learn.adafruit.com/assets/assets/000/115/525/medium640/gaming_pork-butt.jpg?1664679831)

![gaming_insertion-diagram.jpg](https://cdn-learn.adafruit.com/assets/assets/000/115/526/medium640/gaming_insertion-diagram.jpg?1664727311)

## In Action

The unit was powered on, sealed, and inserted.&nbsp;A WiFi access point was about 30 feet away, through two walls and a couple inches of meat now.&nbsp;The end cap did protrude slightly, so it’s not a perfect test for WiFi penetration, but fixing this would require a bigger butt roast.

Secret messages were then entered in the project’s Adafruit IO Dashboard. Here’s what happened:

https://youtu.be/AAdLNVp8TWU

## Analysis

While not a thoroughly scientific test, it does shine a light on the tenable aspects of the cheat device theory:

- The circuit, and the internet dashboard, were both incredibly simple to build and code; it does not require extensive engineering skills. The hardest parts would be a bit of soldering, and memorizing Morse code.
- WiFi had no problem penetrating at this distance and through this medium. If an internet connection can be established through an accomplice, and data relayed through wireless, messages _can_ be relayed.

However, working against it…

- The vibration motor, even when muffled through pounds of flesh, is anything but subtle. Officials or other players would be immediately aware. The vibration could be dialed down to a calmer level, but risks messages not being interpreted clearly as they’re harder to sense.

Thus, a reasonable conclusion is that such an idea is _ **plausible, but unlikely.** _&nbsp;With refinement, a more discreet device could surely be developed…but, with the risk still present of being discovered, banned from competition, and being the butt of jokes for generations to come. One’s time is likely better spent learning and practicing game strategy.

A series of **escalating measures and counter-measures** come to mind, and it’s not clear there’s any real endgame to this.

**Metal detectors** are already in use at some events, but these are usually calibrated to ignore small nuisance items like coins or keys…a well-crafted receiver might slip through.

**Blocking** wireless signals would seem an obvious choice…but FCC laws prevent this. A deep-pocketed tournament might manage this by hosting events **offshore** , beyond Federal jurisdiction. Alternately, players might compete inside a **Faraday cage** , _Thunderdome_-style.

These measures might _still_ circumvented by eliminating the off-site component, with **self-contained game AI** carried on one’s person. A Raspberry Pi Zero would be a bit of a stretch…but devices are continually getting smaller and more powerful, and soon (if not already) something could tuck into one’s navel or other cavity.

![gaming_nostril.jpg](https://cdn-learn.adafruit.com/assets/assets/000/115/590/medium640/gaming_nostril.jpg?1664829849)


## Featured Products

### Adafruit QT Py ESP32-S2 WiFi Dev Board with STEMMA QT

[Adafruit QT Py ESP32-S2 WiFi Dev Board with STEMMA QT](https://www.adafruit.com/product/5325)
What has your favorite Espressif WiFi microcontroller, comes with&nbsp;[our favorite connector - the STEMMA QT](http://adafruit.com/stemma), a chainable I2C port, and has lots of Flash and RAM memory for your next IoT project? What will make your next IoT project flyyyyy? What a...

In Stock
[Buy Now](https://www.adafruit.com/product/5325)
[Related Guides to the Product](https://learn.adafruit.com/products/5325/guides)
### Adafruit DRV2605L Haptic Motor Controller - STEMMA QT / Qwiic

[Adafruit DRV2605L Haptic Motor Controller - STEMMA QT / Qwiic](https://www.adafruit.com/product/2305)
The DRV2605 from TI is a fancy little motor driver. Rather than controlling a stepper motor or DC motor, its designed specifically for controlling **haptic** motors - buzzers and vibration motors. Normally one would just turn those kinds of motors on and off, but this driver has...

In Stock
[Buy Now](https://www.adafruit.com/product/2305)
[Related Guides to the Product](https://learn.adafruit.com/products/2305/guides)
### Vibrating Mini Motor Disc

[Vibrating Mini Motor Disc](https://www.adafruit.com/product/1201)
\*BZZZZZZZZZZ\* Feel that? That's your little buzzing motor, and for any haptic feedback project you'll want to pick up a few of them. These vibe motors are tiny discs, completely sealed up so they're easy to use and embed.  
  
Two wires are used to control/power the vibe....

In Stock
[Buy Now](https://www.adafruit.com/product/1201)
[Related Guides to the Product](https://learn.adafruit.com/products/1201/guides)
### Adafruit LiIon or LiPoly Charger BFF Add-On for QT Py

[Adafruit LiIon or LiPoly Charger BFF Add-On for QT Py](https://www.adafruit.com/product/5397)
[Is your QT Py all alone](https://www.adafruit.com/?q=qt+py&sort=BestMatch), lacking a friend to travel the wide world with? When you were a kid you may have learned about the "buddy" system, well this product is kinda like that! A board that will watch your QT...

In Stock
[Buy Now](https://www.adafruit.com/product/5397)
[Related Guides to the Product](https://learn.adafruit.com/products/5397/guides)
### Lithium Ion Polymer Battery Ideal For Feathers - 3.7V 400mAh

[Lithium Ion Polymer Battery Ideal For Feathers - 3.7V 400mAh](https://www.adafruit.com/product/3898)
Lithium-ion polymer (also known as 'lipo' or 'lipoly') batteries are thin, light, and powerful. The output ranges from 4.2V when completely charged to 3.7V. This battery has a capacity of **400mAh** for a total of about 1.9 Wh. If you need a larger (or smaller!)...

In Stock
[Buy Now](https://www.adafruit.com/product/3898)
[Related Guides to the Product](https://learn.adafruit.com/products/3898/guides)
### STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long

[STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long](https://www.adafruit.com/product/4210)
This 4-wire cable is a little over 100mm / 4" long and fitted with JST-SH female 4-pin connectors on both ends. Compared with the chunkier JST-PH these are 1mm pitch instead of 2mm, but still have a nice latching feel, while being easy to insert and remove.

<a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/4210)
[Related Guides to the Product](https://learn.adafruit.com/products/4210/guides)

## Related Guides

- [Adafruit QT Py ESP32-S2 and QT Py ESP32-S2 with uFL Antenna](https://learn.adafruit.com/adafruit-qt-py-esp32-s2.md)
- [Adafruit LiIon or LiPoly Charger BFF Add-On for QT Py](https://learn.adafruit.com/adafruit-qt-py-charger-bff.md)
- [One Key: Single Button Bluetooth Keyboard](https://learn.adafruit.com/onekey.md)
- [BLE Vibration Bracelet](https://learn.adafruit.com/ble-vibration-bracelet.md)
- [Severance Portable Macrodata Refinement Terminal](https://learn.adafruit.com/portable-macrodata-refinement-terminal.md)
- [DeviceScript, TypeScript for Microcontrollers](https://learn.adafruit.com/devicescript.md)
- [LED Noodle Lantern](https://learn.adafruit.com/led-noodle-lantern.md)
- [CircuitPython Web Workflow Code Editor Quick Start](https://learn.adafruit.com/getting-started-with-web-workflow-using-the-code-editor.md)
- [Haptic Headband](https://learn.adafruit.com/haptic-headband.md)
- [I2C Addresses and Troublesome Chips](https://learn.adafruit.com/i2c-addresses.md)
- [Two Way Telegraph with Analog Feedback Servos](https://learn.adafruit.com/two-way-display-with-analog-feedback-servos.md)
- [Scrolling Countdown Timer](https://learn.adafruit.com/scrolling-countdown-timer.md)
- [Video Nub Shank: ESP32 QT Py Composite Video Injector](https://learn.adafruit.com/video-nub-shank-esp32-qt-py-composite-video-injector.md)
- [QT Py S2 Round Display Compass](https://learn.adafruit.com/qt-py-s2-round-display-compass.md)
- [No-Code IoT Soil Sensor](https://learn.adafruit.com/soil-node.md)
- [Blinka LED Sign](https://learn.adafruit.com/blinka-led-sign.md)
