# Textable Sensor with FONA and CircuitPython

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/091/326/medium800thumb/temperature___humidity_ezgif.com-video-to-gif_%2828%29.jpg?1589834178)

_How humid is my apartment right now?&nbsp;_ **Let me text my FONA!**

While smart-home applications like as Apple's HomeKit are great - they use a large amount of cellular data and take time to load information you may not care about.&nbsp; Instead of using a WiFi connection, an Adafruit FONA cellular module lets you **obtain sensor readings from anywhere with cell reception**.

**In this guide, you will build a text-able environmental monitor** using the Adafruit FONA shield, a Metro M0/M4 development board and a Bosch BME280 precision sensor. Using CircuitPython, the Feather can send and receive SMS messages using the [CircuitPython FONA library](https://github.com/adafruit/Adafruit_CircuitPython_FONA) and read environmental data from the BME280 sensor with the [CircuitPython BME280 library](https://github.com/adafruit/Adafruit_CircuitPython_BME280).&nbsp;

## Code with CircuitPython

CircuitPython is the easiest way to program an Internet of Things project. We've built [a helper library, Adafruit\_CircuitPython\_FONA,](https://github.com/adafruit/Adafruit_CircuitPython_FONA) to make interfacing with the FONA module's SMS capabilities incredibly simple.&nbsp;

![temperature___humidity_Cell_Phone___Blinka.png](https://cdn-learn.adafruit.com/assets/assets/000/091/291/medium640/temperature___humidity_Cell_Phone___Blinka.png?1589815619)

## Adafruit FONA

The [Adafruit FONA](http://adafruit.com/fona) is an all-in-one cellular phone module that lets you add voice, cellar data, location-tracking (FONA-808 and FONA-3G only) and SMS to your project. The FONA shields fit right over shield-compatible CircuitPython boards.

![temperature___humidity_2636-05.jpg](https://cdn-learn.adafruit.com/assets/assets/000/091/295/medium640/temperature___humidity_2636-05.jpg?1589817756)

## Parts
On its own, this shield can't do anything. It requires a microcontroller like a Metro M4 or Metro M0 to drive it!&nbsp;

### Adafruit Metro M4 feat. Microchip ATSAMD51

[Adafruit Metro M4 feat. Microchip ATSAMD51](https://www.adafruit.com/product/3382)
Are you ready? Really ready? Cause here comes the fastest, most powerful Metro ever. The **Adafruit Metro M4** featuring the **Microchip ATSAMD51**. This Metro is like a bullet train, with its 120MHz Cortex M4 with floating point support. Your code will zig and zag...

Out of Stock
[Buy Now](https://www.adafruit.com/product/3382)
[Related Guides to the Product](https://learn.adafruit.com/products/3382/guides)
![Angled shot of a Adafruit Metro M4 feat. Microchip ATSAMD51. ](https://cdn-shop.adafruit.com/640x480/3382-13.jpg)

### Adafruit METRO M0 Express - designed for CircuitPython

[Adafruit METRO M0 Express - designed for CircuitPython](https://www.adafruit.com/product/3505)
Metro is our series of microcontroller boards for use with the Arduino IDE. This new **Metro M0 Express** board looks a whole lot like our&nbsp;[original Metro 328](https://www.adafruit.com/product/2488), but with a huge upgrade. Instead of the ATmega328, this Metro...

In Stock
[Buy Now](https://www.adafruit.com/product/3505)
[Related Guides to the Product](https://learn.adafruit.com/products/3505/guides)
![Angled shot of a Adafruit METRO M0 Express - designed for CircuitPython.](https://cdn-shop.adafruit.com/640x480/3505-10.jpg)

The Bosch BME280 precision sensor can measure humidity with ±3% accuracy, barometric pressure with ±1 hPa absolute accuracy, and temperature with ±1.0°C accuracy.

### Adafruit BME280 I2C or SPI Temperature Humidity Pressure Sensor

[Adafruit BME280 I2C or SPI Temperature Humidity Pressure Sensor](https://www.adafruit.com/product/2652)
Bosch has stepped up their game with their new BME280 sensor, an environmental sensor with temperature, barometric pressure&nbsp;and&nbsp;humidity! This sensor is great for all sorts of indoor environmental sensing and can even be used in both I2C and SPI!

This precision sensor from...

In Stock
[Buy Now](https://www.adafruit.com/product/2652)
[Related Guides to the Product](https://learn.adafruit.com/products/2652/guides)
![small, rectangle-shaped, BME280 temperature humidity pressure sensor breakout board.](https://cdn-shop.adafruit.com/640x480/2652-04.jpg)

You will also need some required accessories to make the FONA work.&nbsp; **These are not included with the FONA shield or breakout!**

**You will need** &nbsp;a Mini SIM card to do anything on the cellular network.

If you're in the USA, we suggest picking up the 2G SIM Card from Ting.

- If you're not in the US, or want to use a different cellular network provider,&nbsp;[please see this page for more information about obtaining a FONA-compatible SIM card.](https://learn.adafruit.com/adafruit-fona-808-cellular-plus-gps-breakout/obtaining-a-sim)

 **You will need** &nbsp;a LiPoly battery (500mAh or larger) to run the FONA module.

### Lithium Ion Polymer Battery - 3.7v 500mAh

[Lithium Ion Polymer Battery - 3.7v 500mAh](https://www.adafruit.com/product/1578)
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 500mAh for a total of about 1.9 Wh. If you need a larger (or smaller!) battery, <a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/1578)
[Related Guides to the Product](https://learn.adafruit.com/products/1578/guides)
![Angled shot of a Lithium Ion Polymer Battery 3.7V 500mAh with JST-PH connector.](https://cdn-shop.adafruit.com/640x480/1578-03.jpg)

### Lithium Ion Polymer Battery - 3.7v 1200mAh

[Lithium Ion Polymer Battery - 3.7v 1200mAh](https://www.adafruit.com/product/258)
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 1200mAh for a total of about 4.5 Wh. If you need a larger battery, <a...></a...>

Out of Stock
[Buy Now](https://www.adafruit.com/product/258)
[Related Guides to the Product](https://learn.adafruit.com/products/258/guides)
![Lithium Ion Polymer Battery 3.7v 1200mAh with JST 2-PH connector](https://cdn-shop.adafruit.com/640x480/258-02.jpg)

 **You will need** &nbsp;a external uFL GSM Antenna, we like this slim sticker-type antenna:

### Slim Sticker-type GSM/Cellular Quad-Band Antenna - 3dBi uFL

[Slim Sticker-type GSM/Cellular Quad-Band Antenna - 3dBi uFL](https://www.adafruit.com/product/1991)
That's one slim cellular antenna! At just 75mm long from tip to tip and and with a thickness of just 2mm, this 3dBi GSM antenna is slim,&nbsp;compact and sensitive, with a 3dBi gain. &nbsp;The antenna juts&nbsp;out from its base with stick-on back so you attach it to an enclosure if...

In Stock
[Buy Now](https://www.adafruit.com/product/1991)
[Related Guides to the Product](https://learn.adafruit.com/products/1991/guides)
![Angled Shot of the Slim Sticker-type GSM/Cellular Quad-Band Antenna - 3dBi uFL.](https://cdn-shop.adafruit.com/640x480/1991-04.jpg)

If you want to use a SMA antenna instead, you'll want to pick up a uFL to SMA adapter cable.

### Part: uFL to SMA Adapter Cable
quantity: 1
SMA to uFL/u.FL/IPX/IPEX RF Adapter Cable
[uFL to SMA Adapter Cable](https://www.adafruit.com/product/851)

## Materials

The supplies listed below are both helpful and necessary for completing this project.&nbsp;&nbsp;

### Part: MicroUSB Cable
quantity: 1
USB cable - USB A to Micro-B - 3 foot long
[MicroUSB Cable](https://www.adafruit.com/product/592)

### Part: Shield Stacking Headers
quantity: 1
Shield stacking headers for Arduino (R3 Compatible)
[Shield Stacking Headers](https://www.adafruit.com/product/85)

# Textable Sensor with FONA and CircuitPython

## Assembly

## Wiring
Next, wire up a BME280 to your board. If you'd like to avoid soldering directly to the FONA shield, you can pick up some [shield stacking headers](https://www.adafruit.com/product/85) and [some jumper cables](https://www.adafruit.com/product/153).&nbsp;

- **Board 3V** &nbsp;to&nbsp; **sensor VIN**
- **Board GND** &nbsp;to&nbsp; **sensor GND**
- **Board SCL** &nbsp;to&nbsp; **sensor SCK**
- **Board SDA** &nbsp;to&nbsp; **sensor SDI**

![temperature___humidity_808_shield_bme_bb.png](https://cdn-learn.adafruit.com/assets/assets/000/091/335/medium640/temperature___humidity_808_shield_bme_bb.png?1589897502)

## Attach Antennas and Battery

A battery and GSM antenna is required to use the Cellular module. If you want to use GPS as well, a passive GPS antenna is also required

![](https://cdn-learn.adafruit.com/assets/assets/000/091/199/medium800/temperature___humidity_adafruit_products_2636_top_demo_ORIG.jpg?1589569720)

 **Check polarity for the battery!**  
Snap the uFL connector on, it will click when placed properly

Danger: 

## Insert SIM Card
![](https://cdn-learn.adafruit.com/assets/assets/000/091/201/medium800/temperature___humidity_adafruit_products_sim.jpg?1589569813)

You&nbsp; **must** &nbsp;insert a SIM card to do anything but the most basic tests. The shield and GPS does work without a SIM but of course you cannot send or receive texts, calls, etc!

- If you have not yet inserted a SIM card into your FONA, [follow the instructions on this page and come back to this guide when you're done.](https://learn.adafruit.com/adafruit-fona-808-cellular-plus-gps-shield-for-arduino/assembly#sim-card-4-11)

# Textable Sensor with FONA and CircuitPython

## CircuitPython Setup

## CircuitPython Installation

Some CircuitPython compatible boards come with CircuitPython installed. Others are&nbsp;_CircuitPython-ready_, but need to have it installed. As well, you may want to update the version of CircuitPython already installed on your board. The steps are the same for installing and updating.&nbsp;

- To&nbsp;**install (or update) your CircuitPython board**,&nbsp;[follow this page and come back here when you've successfully installed (or updated) CircuitPython.](https://learn.adafruit.com/welcome-to-circuitpython/installing-circuitpython)

## Install the Mu Editor

This guide requires you to edit and interact with CircuitPython code. While you can use any text editor of your choosing,&nbsp; **Mu** &nbsp;is a simple code editor that works with the Adafruit CircuitPython boards. It's written in Python and works on Windows, MacOS, Linux and Raspberry Pi. The serial console is built right in, so you get immediate feedback from your board's serial output!

Before proceeding, if you'd like to use Mu,&nbsp; **click the button below to install the Mu Editor**. There are versions for PC, mac, and Linux.

[Install Mu Editor](https://learn.adafruit.com/welcome-to-circuitpython/installing-mu-editor)
## CircuitPython Library Installation

First make sure you are running the&nbsp;[latest version of Adafruit CircuitPython](https://circuitpython.org/board/pyportal/)&nbsp;for your board.

Next you'll need to install the necessary libraries&nbsp;to use the hardware--carefully follow the steps to find and install these libraries from&nbsp;[Adafruit's CircuitPython library bundle](https://github.com/adafruit/Adafruit_CircuitPython_Bundle)&nbsp;matching your version of CircuitPython. The FONA Library requires CircuitPython version 4.0.0 or higher.

Before continuing, make sure your board's&nbsp; **lib** &nbsp;folder has at least the following files and folders **&nbsp;** copied over:

- **adafruit\_fona**
- **adafruit\_bus\_device**
- **adafruit\_simpleio.mpy**
- **adafruit\_bme280.mpy**

Once all the files are copied, your&nbsp; **CIRCUITPY** &nbsp;drive should look like the following screenshot:

![](https://cdn-learn.adafruit.com/assets/assets/000/091/163/medium800/temperature___humidity_lib.png?1589480972)

# Textable Sensor with FONA and CircuitPython

## Code Usage

## Install CircuitPython Code

In the embedded code element below, click on the&nbsp; **Download: Project Zip** &nbsp;link, and save the .zip archive file to your computer.

Then, uncompress the .zip file, it will unpack to a folder named **FONA\_SMS\_Sensor**.

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

Copy the contents of the **FONA\_SMS\_Sensor** &nbsp;directory to your PyPortal's&nbsp; **CIRCUITPY** &nbsp;drive.

![](https://cdn-learn.adafruit.com/assets/assets/000/091/207/medium800/temperature___humidity_codepy_volume.png?1589573810)

This is what the final contents of the&nbsp; **CIRCUITPY** &nbsp;drive will look like:

![](https://cdn-learn.adafruit.com/assets/assets/000/091/210/medium800/temperature___humidity_CIRCUITPY.png?1589574722)

## Obtain FONA's Number

Next, you'll need your SIM card's phone number. This should be available from your carrier's website. Here's an example of the Ting devices page displaying the FONA's number

![](https://cdn-learn.adafruit.com/assets/assets/000/091/212/medium800/temperature___humidity_Ting_is_a_Smarter_way_to_do_mobile__Check_Your_Savings_.png?1589574958)

## Code Usage
After saving the **code.py** to your board, **open the REPL**. After the FONA registers with the network, it will output its received signal strength indicator (RSSI) level and display that the FONA is ready to receive messages from your phone.&nbsp;

![](https://cdn-learn.adafruit.com/assets/assets/000/091/339/medium800/temperature___humidity_Mu_1_0_2_-_code_py.png?1589898604)

 **Text HELP to your device's phone number**.

The FONA should reply with a SMS listing all possible commands.

![temperature___humidity_ezgif.com-video-to-gif_(24).gif](https://cdn-learn.adafruit.com/assets/assets/000/091/321/medium640thumb/temperature___humidity_ezgif.com-video-to-gif_%2824%29.jpg?1589832867)

Let's try texting one of the commands. You can read the temperature by texting TEMP to the FONA.

**Try this by texting TEMP to the FONA**. The FONA will reply with the BME280's temperature reading.

![temperature___humidity_ezgif.com-video-to-gif_(25).gif](https://cdn-learn.adafruit.com/assets/assets/000/091/322/medium640thumb/temperature___humidity_ezgif.com-video-to-gif_%2825%29.jpg?1589833131)

 **Text HUMID to the FONA.** The FONA will reply with the the current relative humidity reading.

![temperature___humidity_ezgif.com-video-to-gif_(26).gif](https://cdn-learn.adafruit.com/assets/assets/000/091/323/medium640thumb/temperature___humidity_ezgif.com-video-to-gif_%2826%29.jpg?1589833650)

 **Text PRES to the FONA**. The FONA will reply with the current pressure.&nbsp;

![temperature___humidity_ezgif.com-video-to-gif_(27).gif](https://cdn-learn.adafruit.com/assets/assets/000/091/324/medium640thumb/temperature___humidity_ezgif.com-video-to-gif_%2827%29.jpg?1589833848)

Want to read all the sensors on the BME280 breakout at once? **Text STATUS to the FONA module**.

The FONA will reply back with readings from all the sensors on the BME280.

![temperature___humidity_ezgif.com-video-to-gif_(28).gif](https://cdn-learn.adafruit.com/assets/assets/000/091/325/medium640thumb/temperature___humidity_ezgif.com-video-to-gif_%2828%29.jpg?1589834114)

# Textable Sensor with FONA and CircuitPython

## Code Walkthrough

The code first creates a serial UART connection with the FONA module and a DigitalInOut object to digitally control IO Pin D4. Then, it initializes the FONA module.&nbsp;

```python
# Create a serial connection for the FONA connection
uart = busio.UART(board.TX, board.RX)
rst = digitalio.DigitalInOut(board.D4)

# Use this for FONA800 and FONA808
fona = FONA(uart, rst)

# Use this for FONA3G
# fona = FONA3G(uart, rst)
```

Then an I2C connection is established with the BME280 sensor.&nbsp;

```python
# Initialize BME280 Sensor
i2c = busio.I2C(board.SCL, board.SDA)
bme280 = adafruit_bme280.Adafruit_BME280_I2C(i2c)
```

The FONA takes some time to register itself with the cellular network. Depending on your location relative to cellular towers, this step may take some time.

Once connected, the received signal strength indicator (RSSI) will be printed to the REPL.

```python
# Initialize Network
while fona.network_status != 1:
    print("Connecting to network...")
    time.sleep(1)
print("Connected to network!")
print("RSSI: %ddB" % fona.rssi)
```

By default, the FONA module does not raise any notifications when it receives a text message. Setting `enable_sms_notification` tells the FONA module to send a message to the microcontroller whenever it receives a new message.&nbsp;

```python
# Enable FONA SMS notification
fona.enable_sms_notification = True
```

On each iteration of the `while True` loop, the code checks if data is available to be read from the FONA module using the `receive_sms()` method.

```python
while True:
    sender, message = fona.receive_sms()
```

The code reads the sender and message from the SIM card's memory slot.&nbsp;

```python
if message:
        print("New Message!")
        print("FROM: ", sender)
        print("MSG: ", message)
```

The BME280 sensor's values are read and stored in temp, humid, and pres.

```python
# Read BME280 sensor values
temp = bme280.temperature
humid = bme280.humidity
pres = bme280.pressure
```

The code selects a response based on the contents of the SMS message.&nbsp;

```python
if message in ['temp', 'temperature', 't']:
    response = "Temperature: %0.1f C" % temp
elif message in ['humid', 'humidity', 'h']:
    response = "Humidity: %0.1f %%" % humid
elif message in ['pres', 'pressure', 'p']:
    response = "Pressure: %0.1f hPa" % pres
elif message in ['status', 's']:
    response = "Temperature: {0:.2f}C\nHumidity: {1:.1f}% \
                Pressure: {2:.1f}hPa".format(temp, humid, pres)
elif message in ['help']:
    response = "I'm a SMS Sensor - txt me with a command:\
                TEMP - Read temperature\
                HUMID - Read humidity\
                PRES - Read pressure\
                STATUS - Read all sensors.\
                HELP - List commands"
else:
    response = "Incorrect message format received. \
                Text HELP to this number for a list of commands."
```

The response is sent back to the sender's phone number.

```python
# Send a response back to the sender
print("Sending response...")
if not fona.send_sms(int(sender), response):
  print("SMS Send Failed")
  print("SMS Sent!")
```

That's it! The code will wait to receive the next text message.


## Featured Products

### Adafruit FONA 808 Shield - Mini Cellular GSM + GPS for Arduino

[Adafruit FONA 808 Shield - Mini Cellular GSM + GPS for Arduino](https://www.adafruit.com/product/2636)
Cellular + GPS tracking, all in one, for your Arduino? Oh yes! Introducing Adafruit FONA 808 GSM + GPS Shield, an all-in-one cellular phone module with that lets you add location-tracking, voice, text, SMS and data to your project, in Arduino shield format for easy use.

**Please...**

No Longer Stocked
[Buy Now](https://www.adafruit.com/product/2636)
[Related Guides to the Product](https://learn.adafruit.com/products/2636/guides)
### Adafruit FONA 800 Shield - Voice/Data Cellular GSM for Arduino

[Adafruit FONA 800 Shield - Voice/Data Cellular GSM for Arduino](https://www.adafruit.com/product/2468)
Ring, Ring! Who's that callin'? It's your Arduino! Introducing Adafruit FONA 800 Shield, an adorable all-in-one cellular phone shield that lets you add voice, text, SMS and data to your project in an easy to use pluggable shield.

This shield fits on top of any classic Arduino...

No Longer Stocked
[Buy Now](https://www.adafruit.com/product/2468)
[Related Guides to the Product](https://learn.adafruit.com/products/2468/guides)
### Adafruit FONA 800 Breakout Board Starter Pack - SMA Version

[Adafruit FONA 800 Breakout Board Starter Pack - SMA Version](https://www.adafruit.com/product/2522)
Build your own cellular project and get off the grid with FONA. This pack comes with an SMA-antenna type FONA and paired with hand-picked accessories. It's the **Adafruit FONA - SMA Starter Pack**.

The FONA miniGSM is&nbsp;an adorable all-in-one cellular phone module...

No Longer Stocked
[Buy Now](https://www.adafruit.com/product/2522)
[Related Guides to the Product](https://learn.adafruit.com/products/2522/guides)
### Adafruit Metro M4 feat. Microchip ATSAMD51

[Adafruit Metro M4 feat. Microchip ATSAMD51](https://www.adafruit.com/product/3382)
Are you ready? Really ready? Cause here comes the fastest, most powerful Metro ever. The **Adafruit Metro M4** featuring the **Microchip ATSAMD51**. This Metro is like a bullet train, with its 120MHz Cortex M4 with floating point support. Your code will zig and zag...

Out of Stock
[Buy Now](https://www.adafruit.com/product/3382)
[Related Guides to the Product](https://learn.adafruit.com/products/3382/guides)
### Adafruit METRO M0 Express - designed for CircuitPython

[Adafruit METRO M0 Express - designed for CircuitPython](https://www.adafruit.com/product/3505)
Metro is our series of microcontroller boards for use with the Arduino IDE. This new **Metro M0 Express** board looks a whole lot like our&nbsp;[original Metro 328](https://www.adafruit.com/product/2488), but with a huge upgrade. Instead of the ATmega328, this Metro...

In Stock
[Buy Now](https://www.adafruit.com/product/3505)
[Related Guides to the Product](https://learn.adafruit.com/products/3505/guides)
### Adafruit BME280 I2C or SPI Temperature Humidity Pressure Sensor

[Adafruit BME280 I2C or SPI Temperature Humidity Pressure Sensor](https://www.adafruit.com/product/2652)
Bosch has stepped up their game with their new BME280 sensor, an environmental sensor with temperature, barometric pressure&nbsp;and&nbsp;humidity! This sensor is great for all sorts of indoor environmental sensing and can even be used in both I2C and SPI!

This precision sensor from...

In Stock
[Buy Now](https://www.adafruit.com/product/2652)
[Related Guides to the Product](https://learn.adafruit.com/products/2652/guides)
### GSM SIM Card from Ting & Adafruit - Data/Voice/Text

[GSM SIM Card from Ting & Adafruit - Data/Voice/Text](https://www.adafruit.com/product/2505)
Adafruit is&nbsp;now a phone company :)&nbsp; Or, well, we've sold [DIY cell phones](https://www.adafruit.com/categories/281) for awhile now but you've never been able to buy your [FONA](https://www.adafruit.com/fona) and a SIM Card all in one place. &nbsp;Now,...

No Longer Stocked
[Buy Now](https://www.adafruit.com/product/2505)
[Related Guides to the Product](https://learn.adafruit.com/products/2505/guides)
### Lithium Ion Polymer Battery - 3.7v 500mAh

[Lithium Ion Polymer Battery - 3.7v 500mAh](https://www.adafruit.com/product/1578)
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 500mAh for a total of about 1.9 Wh. If you need a larger (or smaller!) battery, <a...></a...>

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

## Related Guides

- [Adafruit Metro M0 Express](https://learn.adafruit.com/adafruit-metro-m0-express.md)
- [Adafruit Metro M4 Express featuring ATSAMD51](https://learn.adafruit.com/adafruit-metro-m4-express-featuring-atsamd51.md)
- [CircuitPython I2C and SPI Under the Hood](https://learn.adafruit.com/circuitpython-basics-i2c-and-spi.md)
- [Esenciales para CircuitPython](https://learn.adafruit.com/esenciales-para-circuitpython.md)
- [Experimenting with Conductive Heater Fabric](https://learn.adafruit.com/experimenting-with-conductive-heater-fabric.md)
- [Google Docs Sensor Logging From Your PC](https://learn.adafruit.com/gdocs-sensor-logging-from-your-pc.md)
- [Digital Circuits 6: An EPROM Emulator](https://learn.adafruit.com/digital-circuits-6-eprom-emulator.md)
- [Stand-alone programming AVRs using CircuitPython](https://learn.adafruit.com/stand-alone-programming-avrs-using-circuitpython.md)
- [CircuitPython Powered AT Hand-Raiser](https://learn.adafruit.com/at-hand-raiser.md)
- [Adafruit NeoPXL8 FeatherWing and Library](https://learn.adafruit.com/adafruit-neopxl8-featherwing-and-library.md)
- [CircuitPython Libraries on Linux and ODROID C2](https://learn.adafruit.com/circuitpython-libaries-linux-odroid-c2.md)
- [Multi-Sensor IoT Environmental Sensor Box With CircuitPython](https://learn.adafruit.com/remote-iot-environmental-sensor.md)
- [How to Program SAMD Bootloaders](https://learn.adafruit.com/how-to-program-samd-bootloaders.md)
- [Using DS18B20 Temperature Sensor with CircuitPython](https://learn.adafruit.com/using-ds18b20-temperature-sensor-with-circuitpython.md)
- [DAC Hacks for Circuit Playground Express & other ATSAMD21 Boards](https://learn.adafruit.com/circuit-playground-express-dac-hacks.md)
