# BLE Light Switch with Feather nRF52840 and Crickit

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/070/960/medium800/circuitpython_IMG_3984_2kb.jpg?1549650724)

https://youtu.be/nlrCnM1yzL0

Build your own Bluetooth, remote-controlled robotic light switch to turn on and off the lights! Using CircuitPython running on the Feather nRF52840 Express and Crickit FeatherWing to flip the switch with a servo motor, you can avoid all of the complexities and dangers of high voltage mains wiring!

The 3D printed actuator, mount, and case makes it reliable and tidy. And the Adafruit Bluefruit app running on your iOS or Android device makes it fun and easy!

https://www.youtube.com/watch?v=PBG_L9RTO0o

## Parts
### Adafruit Feather nRF52840 Express

[Adafruit Feather nRF52840 Express](https://www.adafruit.com/product/4062)
The **Adafruit Feather nRF52840 Express** is the new Feather family member with Bluetooth® Low Energy and _native USB support_ featuring the nRF52840!&nbsp; It's our take on an 'all-in-one' Arduino-compatible + Bluetooth® Low Energy with built-in USB...

Out of Stock
[Buy Now](https://www.adafruit.com/product/4062)
[Related Guides to the Product](https://learn.adafruit.com/products/4062/guides)
![Angled shot of a Adafruit Feather nRF52840 Express. ](https://cdn-shop.adafruit.com/640x480/4062-02.jpg)

### Adafruit CRICKIT FeatherWing for any Feather

[Adafruit CRICKIT FeatherWing for any Feather](https://www.adafruit.com/product/3343)
Sometimes we wonder if robotics engineers ever watch movies. If they did, they'd know that making robots into servants always ends up in a robot rebellion. Why even go down that path? Here at Adafruit, we believe in making robots our&nbsp; **friends!**

So if you find...

Out of Stock
[Buy Now](https://www.adafruit.com/product/3343)
[Related Guides to the Product](https://learn.adafruit.com/products/3343/guides)
![Angled shot of a Adafruit CRICKIT FeatherWing for any Feather](https://cdn-shop.adafruit.com/640x480/3343-02.jpg)

### Micro servo

[Micro servo](https://www.adafruit.com/product/169)
Tiny little servo can rotate approximately 180 degrees (90 in each direction) and works just like the standard kinds you're used to but _smaller_. You can use any servo code, hardware, or library to control these servos. Good for beginners who want to make stuff move without...

Out of Stock
[Buy Now](https://www.adafruit.com/product/169)
[Related Guides to the Product](https://learn.adafruit.com/products/169/guides)
![Micro servo with three pin cable](https://cdn-shop.adafruit.com/640x480/169-06.jpg)

### 5V 2A (2000mA) switching power supply - UL Listed

[5V 2A (2000mA) switching power supply - UL Listed](https://www.adafruit.com/product/276)
This is an FCC/CE certified and UL listed power supply. Need a lot of 5V power? This switching supply gives a clean regulated 5V output at up to 2000mA. 110 or 240 input, so it works in any country. The plugs are "US 2-prong" style so you may need a plug adapter, but you can pick one...

In Stock
[Buy Now](https://www.adafruit.com/product/276)
[Related Guides to the Product](https://learn.adafruit.com/products/276/guides)
![Angled shot of power supply.](https://cdn-shop.adafruit.com/640x480/276-06.jpg)

### Black Nylon Machine Screw and Stand-off Set – M2.5 Thread

[Black Nylon Machine Screw and Stand-off Set – M2.5 Thread](https://www.adafruit.com/product/3299)
Totaling 380 pieces, this **M2.5 Screw Set** &nbsp;is a must-have for your workstation.&nbsp;You'll have enough screws, nuts, and hex standoffs to fuel your maker tendencies&nbsp;for days on end! M2.5 size screws fit almost all of the Adafruit breakout/dev board mounting holes...

In Stock
[Buy Now](https://www.adafruit.com/product/3299)
[Related Guides to the Product](https://learn.adafruit.com/products/3299/guides)
![Black Nylon Screw and Stand-off Set with M2.5 Threads, kit box](https://cdn-shop.adafruit.com/640x480/3299-00.jpg)

## Materials and Tools
In addition to the parts above you'll also need:

- 8 ea. [Heat-set, M2.5 x 0.45mm threaded inserts](https://www.mcmaster.com/94180a321)
- Soldering iron
- Small Philips screwdriver
- Slotted screwdriver
- 3D printer and PLA filament

![](https://cdn-learn.adafruit.com/assets/assets/000/070/895/medium800/circuitpython_threaded_insert2m5.png?1549587202)

# BLE Light Switch with Feather nRF52840 and Crickit

## Build the Switch Bracket

The 3D printed parts are a mashup of a remix! I started with this [Smart light switch with a servo](https://www.thingiverse.com/thing:2848069) by Thingiverse user [pulsar123](https://www.thingiverse.com/pulsar123) (which is a remix of [Servo Switch Plate Mount](https://www.thingiverse.com/thing:1156995) by [carjo3000](https://www.thingiverse.com/carjo3000)).

I combined it with the excellent [Mount for Crickit](https://learn.adafruit.com/mount-for-crickit) by the Ruiz Brothers.

I also modeled a cover for the Cricket that can be screwed in place once everything is set up.

## Download STL Model Files

You'll need to download these three STL files to 3D print the mount, servo arm, and cover. Click the button below to download the files.

[Download STL files from Thingiverse](https://www.thingiverse.com/thing:3412352)
## Slicing in CURA

These settings were used to print the three pieces (not all at once as shown here!):

- 0.4mm Nozzle
- 0.2mm Layer Height
- 0.38 Line Width
- 2 Wall line count
- 70mm/s printing speed
- 10% infill

![circuitpython_slice.png](https://cdn-learn.adafruit.com/assets/assets/000/070/897/medium640/circuitpython_slice.png?1549595789)

Print the three parts and then get ready to add the electronics!

![circuitpython_IMG_4009_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/898/medium640/circuitpython_IMG_4009_2k.jpg?1549596693)

![circuitpython_IMG_4010_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/899/medium640/circuitpython_IMG_4010_2k.jpg?1549596701)

![circuitpython_IMG_4008_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/900/medium640/circuitpython_IMG_4008_2k.jpg?1549596708)

## Prep the Feather and Crickit

Next, solder the plain male header pins into place on the Feather so that it can be mounted onto the Crickit. You can [follow this guide for instructions](https://learn.adafruit.com/introducing-the-adafruit-nrf52840-feather/assembly#soldering-in-plain-headers-3-7).

Then, mount the Feather onto the Crickit's header sockets.

![](https://cdn-learn.adafruit.com/assets/assets/000/070/925/medium800/circuitpython_IMG_3952_2k.jpg?1549598410)

## Threaded Inserts

In order to screw the Crickit in place, as well as the standoffs for the cover, we'll add heat-set threaded inserts to the bracket.

Place the tapered smaller end of an insert into an opening and then use the soldering iron to heat and press the brass insert into place.

![circuitpython_IMG_3946_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/901/medium640/circuitpython_IMG_3946_2k.jpg?1549596816)

![circuitpython_IMG_3947_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/902/medium640/circuitpython_IMG_3947_2k.jpg?1549596823)

![circuitpython_IMG_3948_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/903/medium640/circuitpython_IMG_3948_2k.jpg?1549596831)

![circuitpython_IMG_3949_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/904/medium640/circuitpython_IMG_3949_2k.jpg?1549596837)

![](https://cdn-learn.adafruit.com/assets/assets/000/070/910/medium800/circuitpython_IMG_3950_2k.jpg?1549596857)

## Mount the Crickit into the Bracket

Use four of the M2.5 x 6mm screws in to fasten the Crickit to the top two and bottom two threaded inserts.

Then, screw in four stacks of paired M-F standoffs. Each pair will consist of a 6mm and 12mm standoff to get the proper clearance needed for the cover.

![circuitpython_IMG_3952_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/913/medium640/circuitpython_IMG_3952_2k.jpg?1549597080)

![circuitpython_IMG_3953_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/914/medium640/circuitpython_IMG_3953_2k.jpg?1549597091)

![circuitpython_IMG_3954_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/915/medium640/circuitpython_IMG_3954_2k.jpg?1549597098)

![circuitpython_IMG_4013_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/920/medium640/circuitpython_IMG_4013_2k.jpg?1549598319)

![circuitpython_IMG_4015_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/921/medium640/circuitpython_IMG_4015_2k.jpg?1549598330)

## Servo Arm

The servo arm would have a hard time turning the switch on it's own, so we'll add the 3D printed extension. It has a curved guide with stops that allow it to flip the traditional light switch easily.

Fit the 3D printed arm over the small servo horn supplied with the micro servo.

Place the horn onto the spline shaft of the servo, then turn it to find the range of motion.

Turn the servo to roughly its middle position and then remove and re-seat the arm so it is oriented as shown so that it will be able to flip the switch when mounted.

Use the supplied screw to secure the arm and horn to the shaft.

Secure the servo to the mount with the two small screws.

![circuitpython_IMG_3965_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/926/medium640/circuitpython_IMG_3965_2k.jpg?1549598570)

![circuitpython_IMG_3967_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/927/medium640/circuitpython_IMG_3967_2k.jpg?1549598580)

![circuitpython_IMG_3968_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/928/medium640/circuitpython_IMG_3968_2k.jpg?1549598588)

![circuitpython_IMG_3969_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/929/medium640/circuitpython_IMG_3969_2k.jpg?1549598838)

![circuitpython_IMG_3970_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/930/medium640/circuitpython_IMG_3970_2k.jpg?1549598866)

![circuitpython_IMG_3971_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/931/medium640/circuitpython_IMG_3971_2k.jpg?1549598874)

![circuitpython_IMG_3972_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/932/medium640/circuitpython_IMG_3972_2k.jpg?1549598882)

## Servo Connection

The servo motor uses three pins -- power, ground, and signal. Plug the servo header into the Crickit Servo 1 port with the yellow signal wire facing out as shown.

![](https://cdn-learn.adafruit.com/assets/assets/000/070/933/medium800/circuitpython_IMG_3973_2k.jpg?1549598904)

Next, we'll program the Feather using CircuitPython and test it before mounting it to the switch plate.

# BLE Light Switch with Feather nRF52840 and Crickit

## Code with CircuitPython

## Feather and Crickit Prep

We'll be using CircuitPython for this project. Are you new to using CircuitPython? No worries,&nbsp;[there is a full getting started guide here](https://learn.adafruit.com/welcome-to-circuitpython).

For more info on the Feather nRF52840 Express, [check out this guide](https://learn.adafruit.com/introducing-the-adafruit-nrf52840-feather).

Adafruit suggests using the Mu editor to edit your code and have an interactive REPL in CircuitPython.&nbsp;[You can learn about Mu and its installation in this tutorial](https://learn.adafruit.com/welcome-to-circuitpython/installing-mu-editor).

Follow this guide for instructions on installing the latest release version of CircuitPython for the Feather nRF52840 Express:

[Installing CircuitPython](https://learn.adafruit.com/welcome-to-circuitpython/installing-circuitpython)
Warning: 

## Libraries

You'll also need to add the following libraries for this project. [Follow this guide](https://learn.adafruit.com/adafruit-hallowing/circuitpython-libraries) on adding libraries.

Plug your nRF Feather board into your computer via a USB cable. Please be sure the cable is a good power+data cable so the computer can talk to the board.

A new disk should appear in your computer's file explorer/finder called **CIRCUITPY**. This is the place we'll copy the code and code library. If you can only get a drive named **FTHR840BOOT** , load CircuitPython per the guide above.

Download the latest CircuitPython libraries to your computer using the green button below. **Match the library you get to the version of CircuitPython you are using**. Save to your computer's hard drive where you can find it.

![](https://cdn-learn.adafruit.com/assets/assets/000/070/947/medium800/micropython___circuitpython_circus.png?1549640071)

[Download the latest CircuitPython library bundle](https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/latest)
With your file explorer/finder, browse to the bundle and open it up. Copy the following folders and files from the library bundle to your&nbsp; **CIRCUITPY** &nbsp; **lib** &nbsp;directory you made earlier:

The ones you'll need are:

- **adafruit\_ble** (folder)
- **adafruit\_bluefruit\_connect** (folder)  
- **adafruit\_bus\_device** (folder)
- **adafruit\_cricki**** t.mpy** (file)
- **adafruit\_motor** (folder)
- **adafruit\_seesaw** (folder)  

All of the other necessary code is baked into CircuitPython!

## CircuitPython Code

Copy the program below and paste it into a new document in Mu. Then, save it from Mu onto your **CIRCUITPY** &nbsp;flash drive as **code.py**.&nbsp;As soon as CircuitPython restarts, the servo arm will move into its neutral position and await your Bluetooth connection!

https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/Crickits/BLE_Crickit_Light_Switch/code.py

## How the Program Works

The first part of the program sets up a `UARTServer`, which is a BLE service that wirelessly sends streams of characters between a BLE device and a client computer (which could be a phone or tablet). The program then starts advertising its UART service to anyone listening. The client computer receives the advertisement, and tells the user it's available. The user can then choose to connect as a client of the service.

One a connection is established, the program code waits for incoming command packets from the client, specifically a `ButtonPacket`. When one arrives, the program either adjusts sees which button has been pressed: up-arrow or down-arrow.

### Servo Motion

The servo will initially go to a neutral, half-way position of 120°.

In order to create a nice motion with the servo arm that can stylishly flip the switch, and still allow manual use of it, we'll do a few things when the button packet is received.

First, we'll anticipate the motion. This means that if the goal is to move the switch up, first the arm will swing back 45° away from the neutral position of 120°, sort of like pulling your arm back before a throw, or squatting down before a jump.

Then, we'll rotate to the goal angle of 180° for up or 60° for down. Rather than jump immediately to the goal value, the code moves the servo one degree at a time in the specified direction, until it hits the numerical limit. This gives us a slower, smoother motion.

Once the goal angle is reached, we pause for a brief moment and then return the arm to the neutral angle.

## Control the Light Switch with the Bluefruit LE Connect App

### Download the App

To control the servo and NeoPixels from a client device (phone or tablet), you use the Adafruit&nbsp;[Bluefruit LE Connect App](https://learn.adafruit.com/bluefruit-le-connect-for-ios). Install it from the [Apple App Store](https://itunes.apple.com/us/app/adafruit-bluefruit-le-connect/id830125974) or [Google Play App Store](https://play.google.com/store/apps/details?id=com.adafruit.bluefruit.le.connect).

## Connect to Feather

With the Crickit plugged into DC power and turned on with its on-board power switch, the Feather will also get power and automatically start running your code. Then start up the Bluefruit LE Connect app, and make sure it's in Central Mode (left button on the bottom).&nbsp; When you start the app, you should see a device named **CIRCU** or **CIRCUITPY**. If there's a long list of devices, you can shorten it by turning on the " **Must have UART Service**" switch.

To connect to the Light Switch, touch the **Connect** button. You should see " **Connecting**" and then " **Discovering Services**".

## Troubleshooting

If you don't see **CIRCU** or **CIRCUITPY** right away, try pulling down to refresh. If that doesn't work, try turning Bluetooth off and back on on your phone or tablet and restarting the app.

![](https://cdn-learn.adafruit.com/assets/assets/000/070/952/medium800/micropython___circuitpython_bluefruit-connect_half.png?1549641767)

## Device Menu

After you connect, you'll see a menu of how you can interact with the device.&nbsp;Choose **Controller**.

![](https://cdn-learn.adafruit.com/assets/assets/000/070/953/medium800/micropython___circuitpython_bluefruit-connect-menu_half.png?1549641792)

## Controller Menu

After you choose Controller, you'll see another screen with more choices. **Control Pad** is used for this project.

![](https://cdn-learn.adafruit.com/assets/assets/000/070/954/medium800/micropython___circuitpython_bluefruit-connect-controller-menu_half.png?1549641834)

## Move the Servo Arm

Here's the **Control Pad** screen. Use the **Up** and **Down** buttons to move the servo arm up and down. Later, we'll use this to flip the lights on and off!

You should see the arm start in a neutral center position, and then when you press the **up ↑** button, the arm will travel down a bit and then fully up to the top of the range chosen in the code, finally returning to its neutral position. The same motion pattern applies in reverse for the **down** ↓ button.

![](https://cdn-learn.adafruit.com/assets/assets/000/070/964/medium800thumb/circuitpython_servo_ble.jpg?1549654286)

Next, we'll hook it up to the actual light switch plate!

# BLE Light Switch with Feather nRF52840 and Crickit

## Mount and Use the Remote Switch

Now, we'll mount the remote to the light switch plate and put it to use!

![](https://cdn-learn.adafruit.com/assets/assets/000/070/936/medium800/circuitpython_IMG_3974_2k_b.jpg?1549599272)

Warning: 

## Mounting

Unscrew the two screws from the switchplate.

&nbsp;

Place the mount over the plate and screw back in.

![circuitpython_IMG_3978_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/937/medium640/circuitpython_IMG_3978_2k.jpg?1549599326)

![circuitpython_IMG_3979_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/938/medium640/circuitpython_IMG_3979_2k.jpg?1549599353)

![circuitpython_IMG_3981_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/070/939/medium640/circuitpython_IMG_3981_2k.jpg?1549599383)

Plug the 5V 2A power supply into the wall and then into Crickit's DC power port.

![](https://cdn-learn.adafruit.com/assets/assets/000/070/940/medium800/circuitpython_IMG_3982_2k.jpg?1549599543)

It's ready for testing! Use the Adafruit Bluefruit app to connect to the device, then, use the up and down buttons in the control section to turn the servo up and down.

![](https://cdn-learn.adafruit.com/assets/assets/000/070/941/medium800/circuitpython_IMG_3983_2k.jpg?1549599670)

![](https://cdn-learn.adafruit.com/assets/assets/000/070/942/medium800/circuitpython_IMG_3984_2k.jpg?1549599681)

https://youtu.be/nlrCnM1yzL0

## Cover

Once it's working to your satisfaction, you can neaten up the servo wiring and screw the cover into place.

![](https://cdn-learn.adafruit.com/assets/assets/000/070/943/medium800/circuitpython_IMG_3998_2k.jpg?1549599732)

![](https://cdn-learn.adafruit.com/assets/assets/000/070/944/medium800/circuitpython_IMG_4001_2k.jpg?1549599740)

![](https://cdn-learn.adafruit.com/assets/assets/000/070/945/medium800/circuitpython_IMG_4005_2k.jpg?1549599751)


## Featured Products

### Adafruit Feather nRF52840 Express

[Adafruit Feather nRF52840 Express](https://www.adafruit.com/product/4062)
The **Adafruit Feather nRF52840 Express** is the new Feather family member with Bluetooth® Low Energy and _native USB support_ featuring the nRF52840!&nbsp; It's our take on an 'all-in-one' Arduino-compatible + Bluetooth® Low Energy with built-in USB...

Out of Stock
[Buy Now](https://www.adafruit.com/product/4062)
[Related Guides to the Product](https://learn.adafruit.com/products/4062/guides)
### Adafruit CRICKIT FeatherWing for any Feather

[Adafruit CRICKIT FeatherWing for any Feather](https://www.adafruit.com/product/3343)
Sometimes we wonder if robotics engineers ever watch movies. If they did, they'd know that making robots into servants always ends up in a robot rebellion. Why even go down that path? Here at Adafruit, we believe in making robots our&nbsp; **friends!**

So if you find...

Out of Stock
[Buy Now](https://www.adafruit.com/product/3343)
[Related Guides to the Product](https://learn.adafruit.com/products/3343/guides)
### Micro servo

[Micro servo](https://www.adafruit.com/product/169)
Tiny little servo can rotate approximately 180 degrees (90 in each direction) and works just like the standard kinds you're used to but _smaller_. You can use any servo code, hardware, or library to control these servos. Good for beginners who want to make stuff move without...

Out of Stock
[Buy Now](https://www.adafruit.com/product/169)
[Related Guides to the Product](https://learn.adafruit.com/products/169/guides)
### 5V 2A (2000mA) switching power supply - UL Listed

[5V 2A (2000mA) switching power supply - UL Listed](https://www.adafruit.com/product/276)
This is an FCC/CE certified and UL listed power supply. Need a lot of 5V power? This switching supply gives a clean regulated 5V output at up to 2000mA. 110 or 240 input, so it works in any country. The plugs are "US 2-prong" style so you may need a plug adapter, but you can pick one...

In Stock
[Buy Now](https://www.adafruit.com/product/276)
[Related Guides to the Product](https://learn.adafruit.com/products/276/guides)
### Black Nylon Machine Screw and Stand-off Set – M2.5 Thread

[Black Nylon Machine Screw and Stand-off Set – M2.5 Thread](https://www.adafruit.com/product/3299)
Totaling 380 pieces, this **M2.5 Screw Set** &nbsp;is a must-have for your workstation.&nbsp;You'll have enough screws, nuts, and hex standoffs to fuel your maker tendencies&nbsp;for days on end! M2.5 size screws fit almost all of the Adafruit breakout/dev board mounting holes...

In Stock
[Buy Now](https://www.adafruit.com/product/3299)
[Related Guides to the Product](https://learn.adafruit.com/products/3299/guides)
### Ultimaker 2+ 3D Printer

[Ultimaker 2+ 3D Printer](https://www.adafruit.com/product/2673)
The **Ultimaker 2+** is one of our favorite 3D printers on the market. It's a well-built open-source compact machine with an excellent UX.&nbsp;Every inch of the Ultimaker 2+ is designed to create the most effortless and reliable 3D printing experience ever!&nbsp;<a...></a...>

No Longer Stocked
[Buy Now](https://www.adafruit.com/product/2673)
[Related Guides to the Product](https://learn.adafruit.com/products/2673/guides)
### PLA Filament for 3D Printers - 2.85mm Diameter - Neon Blue - 1Kg

[PLA Filament for 3D Printers - 2.85mm Diameter - Neon Blue - 1Kg](https://www.adafruit.com/product/3736)
Having a 3D printer without filament is sort of like having a regular printer without paper or ink. And while a lot of printers come with some filament there's a good chance you've been printing up a storm and want something new. &nbsp;That's why we carry 3D printing filament in a...

No Longer Stocked
[Buy Now](https://www.adafruit.com/product/3736)
[Related Guides to the Product](https://learn.adafruit.com/products/3736/guides)

## Related Guides

- [Introducing the Adafruit nRF52840 Feather](https://learn.adafruit.com/introducing-the-adafruit-nrf52840-feather.md)
- [PyPortal Weather Station](https://learn.adafruit.com/pyportal-weather-station.md)
- [reef-pi Guide 2: Power Controller](https://learn.adafruit.com/reef-pi-power-controller.md)
- [CircuitPython Powered Sip & Puff with ST LPS33HW Pressure Sensor](https://learn.adafruit.com/st-lps33-and-circuitpython-sip-and-puff.md)
- [NeoTrellis Feather Case Assembly](https://learn.adafruit.com/neotrellis-feather-case-assembly.md)
- [Programmable Wireless BLE Gesture Mouse](https://learn.adafruit.com/ble-wireless-gesture-mouse.md)
- [Deco Two-Key Feather Macro Pad](https://learn.adafruit.com/deco-two-key-keypad-macropad-circuitpython-feather.md)
- [Solderless Robot Toy Xylophone](https://learn.adafruit.com/solderless-robot-toy-xylophone.md)
- [Stand for Feather ESP32 with Reverse TFT](https://learn.adafruit.com/stand-for-feather-esp32-with-reverse-tft.md)
- [NeoPixel Menorah](https://learn.adafruit.com/neopixel-menorah.md)
- [32x32 Square Pixel Art Animation Display](https://learn.adafruit.com/32x32-square-pixel-display.md)
- [Doomscroll and Chill - A Wireless BLE Scroll Wheel Remote](https://learn.adafruit.com/doomscroll-and-chill-wireless-ble-scroll-wheel-rotary-encoder-remote.md)
- [CircusPython: Jump through Hoops with CircuitPython Bluetooth LE](https://learn.adafruit.com/circuspython-jump-through-hoops-with-bluetooth-le.md)
- [BLE Vibration Bracelet](https://learn.adafruit.com/ble-vibration-bracelet.md)
- [Mini Pinball Table with Gemma M0](https://learn.adafruit.com/mini-pinball-table-with-gemma-m0.md)
- [CircuitPython BLE Crickit Rover](https://learn.adafruit.com/circuitpython-ble-crickit-rover.md)
