# Adafruit Feather 32u4 with LoRa Radio Module

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/031/665/medium800/feather_3078_iso_ORIG.jpg?1460519340)

Feather is the new development board from Adafruit, and like its namesake it is thin, light, and lets you fly! We designed Feather to be a new standard for portable microcontroller cores.

This is the&nbsp;**Adafruit Feather 32u4 LoRa Radio (RFM9x)** - our take on an microcontroller with a "[Long Range (LoRa)](https://www.lora-alliance.org/)" packet radio transceiver with built in USB and battery charging. Its an Adafruit Feather 32u4 with a 433 or 868/915 MHz radio module cooked in! Great for making wireless networks that can go further than 2.4GHz 802.15.4 and similar, are more flexible than Bluetooth LE and without the high power requirements of WiFi. [We have other boards in the Feather family, check'em out here](https://www.adafruit.com/feather)

![](https://cdn-learn.adafruit.com/assets/assets/000/031/666/medium800/feather_3078_quarter_ORIG.jpg?1460519353)

At the Feather 32u4's heart is at ATmega32u4 clocked at 8 MHz and at 3.3V logic, a chip setup we've had tons of experience with as&nbsp;[it's the same as the Flora](https://www.adafruit.com/product/659). This chip has 32K of flash and 2K of RAM, with built in USB so not only does it have a USB-to-Serial program & debug capability built in with no need for an FTDI-like chip, it can also act like a mouse, keyboard, USB MIDI device, etc.

To make it easy to use for portable projects, we added a connector for any of our 3.7V Lithium polymer batteries and built in battery charging. You don't need a battery, it will run just fine straight from the micro USB connector. But, if you do have a battery, you can take it on the go, then plug in the USB to recharge. The Feather will automatically switch over to USB power when its available. We also tied the battery thru a divider to an analog pin, so you can measure and monitor the battery voltage to detect when you need a recharge.

![](https://cdn-learn.adafruit.com/assets/assets/000/031/667/medium800/feather_3077_iso_demo_ORIG.jpg?1460519406)

Here's some handy specs! Like all Feather 32u4's you get:

- Measures 2.0" x 0.9" x 0.28" (51mm x 23mm x 8mm) without headers soldered in
- Light as a (large?) feather - 5.5 grams
- ATmega32u4 @ 8MHz with 3.3V logic/power
- 3.3V regulator with 500mA peak current output
- USB native support, comes with USB bootloader and serial port debugging
- You also get tons of pins - 20 GPIO pins
- Hardware Serial, hardware I2C, hardware SPI support
- 7 x PWM pins
- 10 x analog inputs
- Built in 100mA lipoly charger with charging status indicator LED
- Pin #13 red LED for general purpose blinking
- Power/enable pin
- 4 mounting holes
- Reset button

The&nbsp; **Feather 32u4 Radio** uses the extra space left over to add an RFM9x LoRa 433 or 868/915 MHz radio module. These radios are not good for transmitting audio or video, but they do work quite well for small data packet transmission when you need more range than 2.4 GHz (BT, BLE, WiFi, ZigBee)

- SX1272 LoRa **®** based module with SPI interface
- Packet radio with ready-to-go Arduino libraries
- Uses the amateur or [license-free ISM bands](https://en.wikipedia.org/wiki/ISM_band): 433MHz is ITU "Europe" license-free ISM or ITU "American" amateur with limitations. 900MHz is license free ISM for ITU "Americas"
- +5 to +20 dBm - up to 100 mW Power Output Capability (power output selectable in software)
- ~300uA during full sleep, ~120mA peak during +20dBm transmit, ~40mA during active radio listening.
- Simple wire antenna or spot for uFL connector

Our initial tests with default library settings: over 1.2mi/2Km line-of-sight with wire quarter-wave antennas. ([With setting tweaking and directional antennas, 20Km is possible](http://forum.anarduino.com/posts/list/46.page#2854))

![](https://cdn-learn.adafruit.com/assets/assets/000/031/664/medium800/feather_3078_kit_ORIG.jpg?1460519321)

Comes fully assembled and tested, with a USB bootloader that lets you quickly use it with the Arduino IDE. We also toss in some header so you can solder it in and plug into a solderless breadboard. You will need to cut and solder on a small piece of wire (any solid or stranded core is fine) in order to create your antenna. **Lipoly battery and USB cable not included** but we do have lots of options in the shop if you'd like!

# Adafruit Feather 32u4 with LoRa Radio Module

## Pinouts

![](https://cdn-learn.adafruit.com/assets/assets/000/110/763/medium800/feather_boards_Adafruit_Feather_32u4_RFM69_Pinout.png?1649864913)

[Click here to view a PDF version of the pinout diagram](https://github.com/adafruit/Adafruit-Feather-32u4-RFM-LoRa-PCB/blob/master/Adafruit%20Feather%2032u4%20RFM69%20Pinout.pdf)

![](https://cdn-learn.adafruit.com/assets/assets/000/110/764/medium800/feather_boards_Adafruit_Feather_32u4_RFM9x_Pinout.png?1649864918)

[Click here to view a PDF version of the pinout diagram](https://github.com/adafruit/Adafruit-Feather-32u4-RFM-LoRa-PCB/blob/master/Adafruit%20Feather%2032u4%20RFM9x%20Pinout.pdf)

The Feather 32u4 Radio is chock-full of microcontroller goodness. There's also a lot of pins and ports. We'll take you a tour of them now!

Note that the pinouts are identical for both the Feather 32u4 RFM69 and LoRa radios - you can look at the silkscreen of the Feather to see it says "RFM69" or "LoRa"

Pinouts are also the same for both 433MHz and 900Mhz. You can tell the difference by looking for a colored dot on the chip or crystal of the radio, green/blue is 900MHz & red is 433MHz

![](https://cdn-learn.adafruit.com/assets/assets/000/031/591/medium800/feather_pinouts.jpg?1459966047)

# Power Pins
![](https://cdn-learn.adafruit.com/assets/assets/000/031/592/medium800/feather_powerpins.jpg?1459966140)

- **GND** - this is the common ground for all power and logic
- **BAT** - this is the positive voltage to/from the JST jack for the optional Lipoly battery
- **USB** - this is the positive voltage to/from the micro USB jack if connected
- **EN** - this is the 3.3V regulator's enable pin. It's pulled up, so connect to ground to disable the 3.3V regulator
- **3V** - this is the output from the 3.3V regulator, it can supply 500mA peak

# Logic pins
![](https://cdn-learn.adafruit.com/assets/assets/000/031/593/medium800/feather_logic.jpg?1459966180)

This is the general purpose I/O pin set for the microcontroller. All logic is 3.3V

- **#0 / RX** - GPIO #0, also receive (input) pin for **Serial1** and Interrupt #2
- **#1 / TX** - GPIO #1, also transmit (output) pin for **Serial1** and Interrupt #3  
- **#2 / SDA&nbsp;** - GPIO #2, also the I2C (Wire) data pin. There's no pull up on this pin by default so when using with I2C, you may need a 2.2K-10K pullup. Also Interrupt #1
- **#3 / SCL** - GPIO #3, also the I2C (Wire) clock pin. There's no pull up on this pin by default so when using with I2C, you may need a 2.2K-10K pullup. Can also do PWM output and act as Interrupt #0.
- **#5** - GPIO #5, can also do PWM output
- **#6** - GPIO #6, can also do PWM output and analog input **A7**
- **#9** - GPIO #9, also analog input **A9** &nbsp;and can do PWM output. This analog input is connected to a voltage divider for the lipoly battery so be aware that this pin naturally 'sits' at around 2VDC due to the resistor divider
- **#10** - GPIO #10, also analog input **A10** and can do PWM output.
- **#11** - GPIO #11, can do PWM output.
- **#12** - GPIO #12, also analog input **A11** and can do PWM output.
- **#13** - GPIO #13, can do PWM output and is connected to the **red LED** next to the USB jack
- **A0 thru A5** - These are each analog input as well as digital I/O pins.
- **SCK/MOSI/MISO** - These are the hardware SPI pins, **used by the RFM radio module too!** You can use them as everyday GPIO pins if you don't activate the radio and keep the RFM CS pin high. However, we really recommend keeping them free as they should be kept available for the radio module. If they are used, make sure its with a device that will kindly share the SPI bus! Also used to reprogram the chip with an AVR programmer if you need.

# RFM/SemTech Radio Module
![](https://cdn-learn.adafruit.com/assets/assets/000/031/594/medium800/feather_rfm.jpg?1459966261)

Since not all pins can be brought out to breakouts, due to the small size of the Feather, we use these to control the radio module

- **#8** - used as the radio **CS** (chip select) pin
- **#7** - used as the radio **GPIO0** / **IRQ** (interrupt request) pin.
- **#4** - used as the radio **Reset** pin

Since these are not brought out there should be no risk of using them by accident!

There are also breakouts for 3 of the RFM's GPIO pins ( **IO1, IO2** and **IO3** ). You probably wont need these for most uses of the Feather but they are available in case you need 'em!

# Other Pins!

- **RST** - this is the Reset pin, tie to ground to manually reset the AVR, as well as launch the bootloader manually
- **ARef** - the analog reference pin. Normally the reference voltage is the same as the chip logic voltage (3.3V) but if you need an alternative analog reference, connect it to this pin and select the external AREF in your firmware. Can't go higher than 3.3V!

![](https://cdn-learn.adafruit.com/assets/assets/000/031/595/medium800/feather_others.jpg?1459966323)

# Adafruit Feather 32u4 with LoRa Radio Module

## Assembly

We ship Feathers fully tested but without headers attached - this gives you the most flexibility on choosing how to use and configure your Feather

# Header Options!

Before you go gung-ho on soldering, there's a few options to consider!

The first option is soldering in plain male headers, this lets you plug in the Feather into a solderless breadboard

![feather_3010-05.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/192/medium640/feather_3010-05.jpg?1454100293)

![feather_3010-01.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/201/medium640/feather_3010-01.jpg?1454100690)

Another option is to go with socket female headers. This won't let you plug the Feather into a breadboard but it will let you attach featherwings very easily

A few Feather boards require access to top-side components like buttons or connectors, making stacking impractical. Sometimes you can stack in the opposite order—FeatherWing underneath—or, if _both_ Feather and Wing require top-side access,&nbsp;place the boards side-by-side with a [FeatherWing Doubler](https://www.adafruit.com/product/2890) or [Tripler](https://www.adafruit.com/product/3417).

![feather_2886-01.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/195/medium640/feather_2886-01.jpg?1454100431)

![feather_2886-02.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/196/medium640/feather_2886-02.jpg?1454100477)

![adafruit_products_2890-02.jpg](https://cdn-learn.adafruit.com/assets/assets/000/117/300/medium640/adafruit_products_2890-02.jpg?1672855047)

We also&nbsp; have 'slim' versions of the female headers, that are a little shorter and give a more compact shape

![feather_2940-01.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/197/medium640/feather_2940-01.jpg?1454100533)

![feather_2940-04.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/198/medium640/feather_2940-04.jpg?1454100544)

Finally, there's the "Stacking Header" option. This one is sort of the best-of-both-worlds. You get the ability to plug into a solderless breadboard _and_ plug a featherwing on top. But its a little bulky

![feather_2830-01.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/199/medium640/feather_2830-01.jpg?1454100588)

![feather_2830-00.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/200/medium640/feather_2830-00.jpg?1454100660)

# Soldering in Plain Headers
## Prepare the header strip:

Cut the strip to length if necessary. It will be easier to solder if you insert it into a breadboard - **long pins down**

![feather_headers.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/183/medium640/feather_headers.jpg?1454099573)

## Add the breakout board:

Place the breakout board over the pins so that the short pins poke through the breakout pads

## And Solder!

Be sure to solder all pins for reliable electrical contact.  
  
_(For tips on soldering, be sure to check out our_ [_Guide to Excellent Soldering_](http://learn.adafruit.com/adafruit-guide-excellent-soldering)_)._

![feather_solder1.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/184/medium640/feather_solder1.jpg?1454099592)

![feather_solder2.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/185/medium640/feather_solder2.jpg?1454099649)

![feather_solder3.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/186/medium640/feather_solder3.jpg?1454099655)

Solder the other strip as well.

![feather_solder4.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/187/medium640/feather_solder4.jpg?1454099662)

![feather_solder5.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/188/medium640/feather_solder5.jpg?1454099665)

![feather_solder6.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/189/medium640/feather_solder6.jpg?1454099667)

You're done! Check your solder joints visually and continue onto the next steps

![feather_done.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/190/medium640/feather_done.jpg?1454099807)

# Soldering on Female Header
## Tape In Place

For sockets you'll want to tape them in place so when you flip over the board they don't fall out

![feather_taped.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/203/medium640/feather_taped.jpg?1454101091)

## Flip & Tack Solder

After flipping over, solder one or two points on each strip, to 'tack' the header in place

![feather_tack1.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/204/medium640/feather_tack1.jpg?1454101126)

![feather_tack2.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/205/medium640/feather_tack2.jpg?1454101143)

![feather_tack3.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/206/medium640/feather_tack3.jpg?1454101147)

## And Solder!

Be sure to solder all pins for reliable electrical contact.  
  
_(For tips on soldering, be sure to check out our_ [_Guide to Excellent Soldering_](http://learn.adafruit.com/adafruit-guide-excellent-soldering)_)._

![feather_soldre1.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/207/medium640/feather_soldre1.jpg?1454101162)

![feather_solder2.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/208/medium640/feather_solder2.jpg?1454101165)

![feather_solder3.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/209/medium640/feather_solder3.jpg?1454101168)

You're done! Check your solder joints visually and continue onto the next steps

![feather_soldered.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/210/medium640/feather_soldered.jpg?1454101174)

![feather_done.jpg](https://cdn-learn.adafruit.com/assets/assets/000/030/211/medium640/feather_done.jpg?1454101177)

# Adafruit Feather 32u4 with LoRa Radio Module

## Antenna Options

![](https://cdn-learn.adafruit.com/assets/assets/000/122/013/medium800/feather_boards_RPRFM95_antenna.png?1687370550)

Your Feather Radio does not have a built-in antenna. Instead, you have two options for attaching an antenna. For most low cost radio nodes, a short length of wire works great. If you need to put the Feather into an enclosure, soldering on a uFL connector (on Feathers that don’t already include this) and using a uFL to SMA adapter will let you attach an external antenna.

# Wire Antenna

A wire antenna, aka "quarter wave whip antenna" is low cost and works very well! You just have to cut the wire down to the right length.

Cut a stranded or solid core wire to the proper length for the module/frequency:

- **433 MHz** - 6.5 inches, or 16.5 cm
- **868 MHz** - 3.25 inches or 8.2 cm
- **915 MHz** - 3 inches or 7.8 cm

![feather_antennaready.jpg](https://cdn-learn.adafruit.com/assets/assets/000/031/583/medium640/feather_antennaready.jpg?1459963405)

Strip a mm or two off the end of the wire, tin and solder into the **ANT** pad on the very right hand edge of the Feather.

![feather_antennasolder.jpg](https://cdn-learn.adafruit.com/assets/assets/000/031/584/medium640/feather_antennasolder.jpg?1459963419)

That's pretty much it, you're done!

![feather_antennadone.jpg](https://cdn-learn.adafruit.com/assets/assets/000/031/585/medium640/feather_antennadone.jpg?1459963446)

# uFL Antenna

If you want an external antenna, you need to do a tiny bit more work but its not too difficult.

For Feather Radio boards that don’t already have a surface-mount **uFL connector** installed, [you’ll need to get one](https://www.adafruit.com/products/1661). _Feather RP2040 RFM boards already have this installed. Feather M0 and 32u4 require soldering._

[You'll also need a **uFL to SMA adapter**](https://www.adafruit.com/products/851) (or whatever adapter you need for the antenna you'll be using, SMA is the most common).

Of course, you will also need an **antenna** of some sort, one that matches your radio frequency.

Warning: 

### For Feather M0 and 32u4:

_(this step can be skipped for Feather RP2040 RFM, which already has a uFL connector installed)_

Check the bottom of the uFL connector, note that there's two large side pads (ground) and a little inlet pad. The other small pad is not used!

![feather_uflcheck.jpg](https://cdn-learn.adafruit.com/assets/assets/000/031/587/medium640/feather_uflcheck.jpg?1459964602)

Solder all three pads to the bottom of the Feather

![feather_ufl2.jpg](https://cdn-learn.adafruit.com/assets/assets/000/031/588/medium640/feather_ufl2.jpg?1459964646)

![feather_ufl3.jpg](https://cdn-learn.adafruit.com/assets/assets/000/031/589/medium640/feather_ufl3.jpg?1459964649)

### For all radio-capable Feather boards:
Once done attach your uFL adapter and antenna!

![feather_antennaattach.jpg](https://cdn-learn.adafruit.com/assets/assets/000/031/590/medium640/feather_antennaattach.jpg?1459964666)

# Adafruit Feather 32u4 with LoRa Radio Module

## Power Management

![](https://cdn-learn.adafruit.com/assets/assets/000/113/635/medium800/adafruit_products_feather_3077_iso_demo_ORIG.jpg?1658947534)

# Battery + USB Power

We wanted to make our Feather boards easy to power both when connected to a computer as well as via battery.

There's **two ways to power** a Feather:

1. You can connect with a USB cable (just plug into the jack) and the Feather will regulate the 5V USB down to 3.3V.
2. You can also connect a 4.2/3.7V Lithium Polymer (LiPo/LiPoly) or Lithium Ion (LiIon) battery to the JST jack. This will let the Feather run on a rechargeable battery.

**When the USB power is powered, it will automatically switch over to USB for power, as well as start charging the battery (if attached).** This happens 'hot-swap' style so you can always keep the LiPoly connected as a 'backup' power that will only get used when USB power is lost.

Danger: 

![](https://cdn-learn.adafruit.com/assets/assets/000/113/636/medium800/adafruit_products_feather_batt.jpg?1658947546)

The above shows the Micro USB jack (left), LiPoly JST jack (top left), as well as the 3.3V regulator and changeover diode (just to the right of the JST jack) and the LiPoly charging circuitry (to the right of the Reset button).

There's also a **CHG** LED next to the USB jack, which will light up while the battery is charging. This LED might also flicker if the battery is not connected, it's normal.

Info: 

# Power Supplies

You have a lot of power supply options here! We bring out the **BAT** pin, which is tied to the LiPoly JST connector, as well as **USB** which is the +5V from USB if connected. We also have the **3V** pin which has the output from the 3.3V regulator. We use a 500mA peak regulator. While you can get 500mA from it, you can't do it continuously from 5V as it will overheat the regulator.

It's fine for, say, powering an ESP8266 WiFi chip or XBee radio though, since the current draw is 'spiky' & sporadic.

![](https://cdn-learn.adafruit.com/assets/assets/000/113/637/medium800/adafruit_products_feather_powerpins.jpg?1658947586)

# Measuring Battery

If you're running off of a battery, chances are you wanna know what the voltage is at! That way you can tell when the battery needs recharging. LiPoly batteries are 'maxed out' at 4.2V and stick around 3.7V for much of the battery life, then slowly sink down to 3.2V or so before the protection circuitry cuts it off. By measuring the voltage you can quickly tell when you're heading below 3.7V.

To make this easy we stuck a double-100K resistor divider on the&nbsp; **BAT** &nbsp;pin, and connected it to&nbsp; **D9** (a.k.a analog #9&nbsp; **A9** ). You can read this pin's voltage, then double it, to get the battery voltage.

```cpp
#define VBATPIN A9
   
float measuredvbat = analogRead(VBATPIN);
measuredvbat *= 2;    // we divided by 2, so multiply back
measuredvbat *= 3.3;  // Multiply by 3.3V, our reference voltage
measuredvbat /= 1024; // convert to voltage
Serial.print("VBat: " ); Serial.println(measuredvbat);
```

This voltage will 'float' at 4.2V when no battery is plugged in, due to the lipoly charger output, so its not a good way to detect if a battery is plugged in or not (there is no simple way to detect if a battery is plugged in)

![](https://cdn-learn.adafruit.com/assets/assets/000/113/638/medium800/adafruit_products_feather_vbatdiv.jpg?1658947630)

# ENable pin

If you'd like to turn off the 3.3V regulator, you can do that with the **EN** (able) pin. Simply tie this pin to **Ground** and it will disable the 3V regulator. The **BAT** and **USB** pins will still be powered.

![](https://cdn-learn.adafruit.com/assets/assets/000/113/639/medium800/adafruit_products_feather_pinouts.jpg?1658947711)

# Alternative Power Options

The two primary ways for powering a feather are a 3.7/4.2V LiPo battery plugged into the JST port _or_ a USB power cable.

If you need other ways to power the Feather, here's what we recommend:

- For permanent installations, a [5V 1A USB wall adapter](https://www.adafruit.com/product/501) will let you plug in a USB cable for reliable power
- For mobile use, where you don't want a LiPoly, [use a USB battery pack!](https://www.adafruit.com/product/1959)
- If you have a higher voltage power supply, [use a 5V buck converter](https://www.adafruit.com/?q=5V%20buck) and wire it to a [USB cable's 5V and GND input](https://www.adafruit.com/product/3972)

Here's what you cannot do:

- **Do not use alkaline or NiMH batteries** and connect to the battery port - this will destroy the LiPoly charger
- **Do not use 7.4V RC batteries on the battery port** - this will destroy the board

The Feather _is not designed for external power supplies_ - this is a design decision to make the board compact and low cost. It is not recommended, but technically possible:

- **Connect an external 3.3V power supply to the 3V and GND pins.** Not recommended, this may cause unexpected behavior and the **EN** pin will no longer work. Also this doesn't provide power on **BAT** or **USB** and some Feathers/Wings use those pins for high current usages. You may end up damaging your Feather.
- **Connect an external 5V power supply to the USB and GND pins.** Not recommended, this may cause unexpected behavior when plugging in the USB port because you will be back-powering the USB port, which _could_ confuse or damage your computer.

# Radio Power Draw

You can select the power output you want via software, more power equals more range but of course, uses more of your battery.

For example, here is the feather 32u4 with RFM9x 900MHz radio set up for +20dBm power, transmitting a data payload of 20 bytes. Transmits take about 130mA for 70ms

![](https://cdn-learn.adafruit.com/assets/assets/000/113/640/medium800/adafruit_products_feather_lora32u4normal.png?1658947739)

The ~13mA quiescent current is the current draw for listening (~2mA) plus ~11mA for the microcontroller. This can be reduce to amost nothing with proper sleep modes and not putting the module in active listen mode!

![](https://cdn-learn.adafruit.com/assets/assets/000/113/641/medium800/adafruit_products_feather_lora32u4normal_closeup.png?1658947757)

You can put the module into sleep mode by calling&nbsp;`radio.sleep();`&nbsp;which will save you about 2mA.

![](https://cdn-learn.adafruit.com/assets/assets/000/113/642/medium800/adafruit_products_feather_loram0modulesleep_closeup.png?1658947783)

If you want to reduce even more power, use the&nbsp;[Adafruit Sleepdog&nbsp;](https://github.com/adafruit/Adafruit_SleepyDog)library by installing and adding #include "Adafruit\_SleepyDog.h" at the top of your sketch and replace

`delay(1000); `

with

`radio.sleep();`  
`Watchdog.sleep(1000);`

To put the chip into ultra-low-power mode. Note that USB will disconnect so do this after you have done all your debugging!

![](https://cdn-learn.adafruit.com/assets/assets/000/113/643/medium800/adafruit_products_feather_lora32u4supersleep_closeup.png?1658947811)

During the super sleepy mode you're using only 300uA (0.3mA)!

While its not easy to get the exact numbers for all of what comprise the 300uA there are a few quiescent current items on the Feather 32u4:

- 2 x 100K resistors for VBAT measurement =&nbsp; **25uA**
- AP2112K 3.3V regulator =&nbsp; **55uA**
- MCP73871 batt charger =&nbsp; **up to 100uA** &nbsp;even when no battery is connected

The rest is probably the Atmega32u4 peripherals including the brown-out detect and bandgap circuitry, ceramic oscillator, etc. According to the datasheet, with the watchdog and BrownOutDetect enabled, the lowest possible current is&nbsp; **~30uA** &nbsp;(at 5V which is what we're testing at)

![](https://cdn-learn.adafruit.com/assets/assets/000/113/644/medium800/adafruit_products_feather_quies.png?1658947833)

# Adafruit Feather 32u4 with LoRa Radio Module

## Arduino IDE Setup

The first thing you will need to do is to download the latest release of the Arduino IDE. You will need to&nbsp;be using **version 1.8** or higher for this guide

[Arduino IDE Download](http://www.arduino.cc/en/Main/Software)
After you have downloaded and installed **the latest version of Arduino IDE** , you will need to start the IDE&nbsp;and navigate to&nbsp;the **Preferences** menu. You can access it from the **File** menu in _Windows_ or _Linux_, or the **Arduino** menu on _OS X_.

![](https://cdn-learn.adafruit.com/assets/assets/000/041/549/medium800/flora_prefs.png?1494204209)

A dialog will pop up just like the one shown below.

![](https://cdn-learn.adafruit.com/assets/assets/000/108/455/medium800/trinket_arduino-preferences-before.png?1643387570)

We will be adding a URL to the new **Additional Boards Manager URLs** option. The list of URLs is comma separated, and _you will only have to add each&nbsp;URL once._&nbsp;New Adafruit boards and updates to existing boards&nbsp;will automatically be picked up&nbsp;by the Board Manager each time&nbsp;it is opened. The URLs point to index files that the Board Manager uses to build the list of available & installed boards.

To find the most up to date list of URLs you can&nbsp;add, you can visit the list of [third party board URLs on the Arduino IDE wiki](https://github.com/arduino/Arduino/wiki/Unofficial-list-of-3rd-party-boards-support-urls#list-of-3rd-party-boards-support-urls). We will only need to add one URL to the IDE in this example, but _ **you can add multiple URLS by separating them with commas** _. Copy and paste the link below into the&nbsp; **Additional Boards Manager URLs** option in the Arduino IDE preferences.

### `https://adafruit.github.io/arduino-board-index/package_adafruit_index.json`
![](https://cdn-learn.adafruit.com/assets/assets/000/108/456/medium800/trinket_arduino-preferences.png?1643387643)

Here's a short description of each of the Adafruit supplied packages that will be available in the Board Manager when you add the URL:

- **Adafruit AVR Boards** - Includes support for Flora, Gemma, Feather 32u4, ItsyBitsy 32u4, Trinket, & Trinket Pro.
- **Adafruit SAMD Boards** - Includes support for Feather M0 and M4, Metro M0 and M4, ItsyBitsy M0 and M4, Circuit Playground Express, Gemma M0 and Trinket M0
- **Arduino Leonardo & Micro MIDI-USB** - This adds MIDI over USB support for the Flora, Feather 32u4, Micro and Leonardo using the [arcore project](https://github.com/rkistner/arcore).

If you have multiple boards you want to support, say ESP8266 and Adafruit, have both URLs in the text box separated by a comma (,)

Once done click **OK** to save the new preference settings. Next we will look at installing boards with the Board Manager.

Now continue to the next step to actually install the board support package!

# Adafruit Feather 32u4 with LoRa Radio Module

## Using with Arduino IDE

Since the Feather 32u4 uses an ATmega32u4 chip running at 8 MHz, you can pretty easily get it working with the Arduino IDE. Many libraries (including the popular ones like NeoPixels and display) work great with the '32u4 and 8 MHz clock speed.

Now that you have added the appropriate URLs to the Arduino IDE preferences, you can open the **Boards Manager** by navigating to the **Tools-\>Board** &nbsp;menu.

![](https://cdn-learn.adafruit.com/assets/assets/000/050/496/medium800/adafruit_products_bsp.png?1516824755)

Once the Board Manager opens, click on the category drop down menu on the top left hand side of the window and select **Contributed**. You will then be able to select and install the boards supplied&nbsp;by the URLs added to the prefrences. In the example below, we are installing support for&nbsp; **_Adafruit AVR Boards_** , but the same applies to all boards installed with the Board Manager.

![](https://cdn-learn.adafruit.com/assets/assets/000/028/441/medium800thumb/microcomputers_flora_install.jpg?1448324012)

Next, **quit and reopen&nbsp;the Arduino IDE** to ensure that all of the boards are properly installed. You should now be able to select and upload to the new boards listed in the **Tools-\>Board** menu.

![](https://cdn-learn.adafruit.com/assets/assets/000/028/442/medium800/microcomputers_featherselect.gif?1447995225)

# Install Drivers (Windows 7 Only)

When you plug in the Feather, you'll need to possibly install a driver

**Windows 10 folks can skip this, the drivers now come built into Windows 10!**

Click below to download our Driver Installer

[Download Adafruit Drivers Installer](https://github.com/adafruit/Adafruit_Windows_Drivers/releases/latest/adafruit_drivers_*.exe)
Download and run the installer

![](https://cdn-learn.adafruit.com/assets/assets/000/031/256/medium800/microcomputers_1download.png?1457992465)

Run the installer! Since we bundle the SiLabs and FTDI drivers as well, you'll need to click through the license

![](https://cdn-learn.adafruit.com/assets/assets/000/031/257/medium800/microcomputers_2lic.png?1457992483)

Select which drivers you want to install:

![](https://cdn-learn.adafruit.com/assets/assets/000/046/681/medium800/microcomputers_driver-installer-v2000.png?1505790714)

Click **Install** to do the installin'

![](https://cdn-learn.adafruit.com/assets/assets/000/031/259/medium800/microcomputers_4complete.png?1457992575)

# Blink

Now you can upload your first blink sketch!

Plug in the Feather 32u4 and wait for it to be recognized by the OS (just takes a few seconds). It will create a serial/COM port, you can now select it from the dropdown, it'll even be 'indicated' as Feather 32u4!

![](https://cdn-learn.adafruit.com/assets/assets/000/028/443/medium800/microcomputers_featherport.png?1446677577)

Now load up the Blink example

```
// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}
```

And click upload! That's it, you will be able to see the LED blink rate change as you adapt the **delay()** calls.

# Manually bootloading

If you ever get in a 'weird' spot with the bootloader, or you have uploaded code that crashes and doesn't auto-reboot into the bootloader, **double-click the RST** button to get back into the bootloader. The red LED will pulse, so you know that its in bootloader mode. Do the reset button double-press right as the Arduino IDE says its attempting to upload the sketch, when you see the Yellow Arrow lit and the **Uploading...** text in the status bar.

![](https://cdn-learn.adafruit.com/assets/assets/000/028/444/medium800/microcomputers_adafruit_products_uploading.gif?1447995220)

Don't click the reset button **before** uploading, unlike other bootloaders you want this one to run at the time Arduino is trying to upload

## Ubuntu&nbsp;& Linux Issue Fix

If you're on Linux, and are seeing multi-second delays connecting to the serial console, or are seeing "AT" and other gibberish when you connect,&nbsp;[follow the steps on this page.](../../../../adafruit-arduino-ide-setup/linux-setup#udev-rules)

# Adafruit Feather 32u4 with LoRa Radio Module

## Feather HELP!

Info: 

### 

A lot of our example sketches have a

`while (!Serial);`

line in setup(), to keep the board waiting until the USB is opened. This makes it a lot easier to debug a program because you get to see all the USB data output. If you want to run your Feather without USB connectivity, delete or comment out that line

### 

 **A**  **vast number of Itsy/Feather 'failures' are due to charge-only USB cables**

We get upwards of 5 complaints a day that turn out to be due to charge-only cables!

Use only a cable that you **know** is for data syncing

If you have any charge-only cables, cut them in half throw them out. We are serious! They tend to be low quality in general, and will only confuse you and others later, just get a good data+charge USB cable.

A quality USB port is critical. Avoid plugging into USB keyboards and when possible use a USB-2 HUB to avoid USB3 issues.&nbsp;

### 

No problem! You can 'repair' a bad code upload easily. Note that this can happen if you set a watchdog timer or sleep mode that stops USB, or any sketch that 'crashes' your board

1. Turn on **verbose upload** in the Arduino IDE preferences
2. Plug in Itsy or Feather 32u4/M0, it won't show up as a COM/serial port that's ok
3. Open up the Blink example (Examples-\>Basics-\>Blink)
4. Select the correct board in the Tools menu, e.g. Feather 32u4, Feather M0, Itsy 32u4 or M0 _(physically check_ your board to make sure you have the right one selected!)
5. Compile it (make sure that works)
6. Click Upload to attempt to upload the code
7. The IDE will print out a bunch of COM Ports as it tries to upload. **During this time, double-click the reset button, you'll see the red pulsing LED that tells you its now in bootloading mode**  
8. The board will show up as the Bootloader COM/Serial port
9. The IDE should see the bootloader COM/Serial port and upload properly

![](https://cdn-learn.adafruit.com/assets/assets/000/029/525/medium800/adafruit_products_comfound.png?1452109739)

### 

This seems to happen when people select the wrong board from the Arduino Boards menu.

If you have a Feather 32u4 (look on the board to read what it is you have) Make sure you select **Feather 32u4** for ATMega32u4 based boards! Do not use anything else, do not use the 32u4 breakout board line.

If you have a Feather M0 (look on the board to read what it is you have) Make sure you select **Feather M0** - do not use 32u4 or Arduino Zero

If you have a ItsyBitsy M0 (look on the board to read what it is you have) Make sure you select **ItsyBitsy M0** - do not use 32u4 or Arduino Zero

### 

Theres **two** COM ports you can have with the 32u4/M0, one is the **user port** and one is the **bootloader port**. They are not the same COM port number!

When you upload a new user program it will come up with a user com port, particularly if you use Serial in your user program.

**If you crash your user program, or have a program that halts or otherwise fails, the user COM port can disappear.**

**When the user COM port disappears, Arduino will not be able to automatically start the bootloader and upload new software.**

So you will need to help it by performing the click-during upload procedure to re-start the bootloader, and upload something that is known working like "Blink"

### 

UNO-type Arduinos have a _seperate_ serial port chip (aka "FTDI chip" or "Prolific PL2303" etc etc) which handles all serial port capability seperately than the main chip. This way if the main chip fails, you can always use the COM port.

M0 and 32u4-based Arduinos do not have a seperate chip, instead the main processor performs this task for you. It allows for a lower cost, higher power setup...but requires a little more effort since you will need to 'kick' into the bootloader manually once in a while

### 

This is likely because the bootloader is not kicking in and you are accidentally **trying to upload to the**  **wrong COM port**

The best solution is what is detailed above: manually upload Blink or a similar working sketch by hand by manually launching the bootloader

### 

You probably don't have Feather M0 selected in the boards drop-down. Make sure you selected Feather M0.

### 

You probably don't have Feather M0 / Feather 32u4 selected in the boards drop-down. Make sure you selected Feather M0 (or Feather 32u4).

### 

Make sure your Wing doesn't use pin #9 which is the analog sense for the lipo battery!

### 

The charge LED is automatically driven by the Lipoly charger circuit. It will try to detect a battery and is expecting one to be attached. If there isn't one it may flicker once in a while when you use power because it's trying to charge a (non-existant) battery.

It's not harmful, and its totally normal!

 **The Arduino IDE gives me "Device Descriptor Request Failed"**

This can require "manual bootloading".

If you ever get in a 'weird' spot with the bootloader, or you have uploaded code that crashes and doesn't auto-reboot into the bootloader, **double-click the RST** button to get back into the bootloader. The red LED will pulse, so you know that its in bootloader mode. Do the reset button double-press right as the Arduino IDE says its attempting to upload the sketch, when you see the Yellow Arrow lit and the **Uploading...** text in the status bar.

[![microcomputers_adafruit_products_uploading.gif](https://cdn-learn.adafruit.com/assets/assets/000/028/444/medium800/microcomputers_adafruit_products_uploading.gif?1447995220)](/assets/28444)

Don't click the reset button **before** uploading, unlike other bootloaders you want this one to run at the time Arduino is trying to upload

# Adafruit Feather 32u4 with LoRa Radio Module

## Using the RFM9X Radio

![](https://cdn-learn.adafruit.com/assets/assets/000/031/669/medium800/feather_3076_iso_demo_ORIG.jpg?1460574636)

Before beginning make sure you have your Arduino or Feather working smoothly, it will make this part a lot easier. Once you have the basic functionality going - you can upload code, blink an LED, use the serial output, etc. you can then upgrade to using the radio itself.

Note that the sub-GHz radio is not designed for streaming audio or video! It's best used for small packets of data. The data rate is adjustable but its common to stick to around 19.2 Kbps (thats bits per second). Lower data rates will be more successful in their transmissions

**You will, of course, need at least two paired radios** to do any testing! The radios must be matched in frequency (e.g. two 900 MHz&nbsp; radios are ok, but mixing 900 MHz and 433 MHz is _not_). They also must use the same encoding schemes, you cannot have a 900 MHz **RFM69** packet radio talk to a 900 MHz **RFM9x LoRa** radio.

# Arduino Library

These radios have really excellent code already written, so rather than coming up with a new standard we suggest using existing libraries such as [AirSpayce's Radiohead library](http://www.airspayce.com/mikem/arduino/RadioHead/) which also supports a vast number of other radios.

This is a really great Arduino Library, so please support them in saying thanks for their efforts!

## RadioHead RFM9x Library example

To begin talking to the radio, you will need to download the [RadioHead library](http://www.airspayce.com/mikem/arduino/RadioHead/). You can do that by visiting the GitHub repo and manually downloading or, easier, just click the button below to download as a zip file:

[Download RadioHead Library](https://github.com/adafruit/RadioHead/archive/master.zip)
_Note that while all the code in the examples below are based on this version, you can [visit the RadioHead documentation page to get the most recent version which may have bug-fixes or more functionality](http://www.airspayce.com/mikem/arduino/RadioHead/)_

Uncompress the zip and find the folder named **RadioHead** and check that the **RadioHead** folder contains **RH\_RF95.**** cpp **and** RH\_RF95 ****.h** (as well as a few dozen other files for radios that are supported)  
&nbsp;  
Place the **RadioHead** library folder your **arduinosketchfolder/libraries/** folder.   
You may need to create the **libraries** subfolder if its your first library. Restart the IDE.  
  
We also have a great tutorial on Arduino library installation at:  
[http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use](http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use "Link: http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use")

# Basic RX & TX example

Now to get a basic demo going, where one Feather transmits and the other receives. Start by setting up the transmitter.

## Transmitter example code

This code will send a small packet of data once a second to node address #1.

Open up the example **RadioHead→feather→Feather9x\_TX**

Load this code into your Transmitter Arduino/Feather!

Danger: 

Info: 

https://github.com/adafruit/RadioHead/blob/master/examples/feather/Feather9x_TX/Feather9x_TX.ino

Once the code is uploaded, you should see the following on the serial console:

![](https://cdn-learn.adafruit.com/assets/assets/000/031/671/medium800/feather_loratx.png?1460575392)

Now open up another instance of the Arduino IDE - this is so you can see the serial console output from the TX Feather while you set up the RX Feather.

## Receiver example code

This code will receive and acknowledge a small packet of data.

Open up the example **RadioHead→feather→Feather9x\_RX**

Load this code into your **Receiver** Arduino/Feather!

Danger: 

Info: 

https://github.com/adafruit/RadioHead/blob/master/examples/feather/Feather9x_RX/Feather9x_RX.ino

Now open up the Serial console on the receiver, while also checking in on the transmitter's serial console. You should see the receiver is...well, receiving packets:

![](https://cdn-learn.adafruit.com/assets/assets/000/031/672/medium800/feather_rx.png?1460577454)

You can see that the library example prints out the hex-bytes received `48 65 6C 6C 6F 20 57 6F 72 6C 64 20 23 30 0 20 20 20 20 0`, as well as the ASCII 'string' `Hello World`. Then it will send a reply.

And, on the transmitter side, it is now printing that it got a reply after each transmission `And hello back to you` because it got a reply from the receiver.

![](https://cdn-learn.adafruit.com/assets/assets/000/031/673/medium800/feather_rxed.png?1460577540)

That's pretty much the basics of it! Take a look at the examples so you know how to adapt to your own radio setup.

# Feather Radio Pinout

&nbsp;This is the pinout setup for all **Feather 32u4** RFM9X's:

```
/* for feather32u4 */
#define RFM95_CS 8
#define RFM95_RST 4
#define RFM95_INT 7
```

This is the pinout for all **Feather M0** RFM9X's:

```
/* for feather m0 */
#define RFM95_CS 8
#define RFM95_RST 4
#define RFM95_INT 3
```

And for **RP2040** Feathers:

```cpp
#define RFM95_CS   16
#define RFM95_INT  21
#define RFM95_RST  17
```

# Frequency

You can dial in the frequency you want the radio to communicate on, such as 915.0, 434.0 or 868.0 or any number really. Different countries/ITU Zones have different ISM bands so make sure you're using those or if you are licensed, the frequencies you may use.

```
// Change to 434.0 or other frequency, must match RX's freq!
#define RF95_FREQ 915.0
```

You can then instantiate the radio object with our custom pin numbers.

```
// Singleton instance of the radio driver
RH_RF95 rf95(RFM95_CS, RFM95_INT);
```

# Setup

We begin by setting up the serial console and hard-resetting the radio:

```
void setup() 
{
  pinMode(LED, OUTPUT);     
  pinMode(RFM95_RST, OUTPUT);
  digitalWrite(RFM95_RST, HIGH);

  while (!Serial); // wait until serial console is open, remove if not tethered to computer
  Serial.begin(9600);
  delay(100);
  Serial.println("Feather LoRa RX Test!");
  
  // manual reset
  digitalWrite(RFM95_RST, LOW);
  delay(10);
  digitalWrite(RFM95_RST, HIGH);
  delay(10);
```

Remove the `while (!Serial);` line if you are not tethering to a computer, as it will cause the Feather to halt until a USB connection is made!

## Initializing Radio

The library gets initialized with a call to `init()`. Once initialized, you can set the frequency. You can also configure the output power level, the number ranges from 5 to 23. Start with the highest power level (23) and then scale down as necessary.

```
  while (!rf95.init()) {
    Serial.println("LoRa radio init failed");
    while (1);
  }
  Serial.println("LoRa radio init OK!");

  // Defaults after init are 434.0MHz, modulation GFSK_Rb250Fd250, +13dbM
  if (!rf95.setFrequency(RF95_FREQ)) {
    Serial.println("setFrequency failed");
    while (1);
  }
  Serial.print("Set Freq to: "); Serial.println(RF95_FREQ);

  // Defaults after init are 434.0MHz, 13dBm, Bw = 125 kHz, Cr = 4/5, Sf = 128chips/symbol, CRC on

  // The default transmitter power is 13dBm, using PA_BOOST.
  // If you are using RFM95/96/97/98 modules which uses the PA_BOOST transmitter pin, then 
  // you can set transmitter powers from 5 to 23 dBm:
  rf95.setTxPower(23, false);
```

## Transmission Code

If you are using the transmitter, this code will wait 1 second, then transmit a packet with `Hello World #` and an incrementing packet number.

```
void loop()
{
  delay(1000); // Wait 1 second between transmits, could also 'sleep' here!
  Serial.println("Transmitting..."); // Send a message to rf95_server
  
  char radiopacket[20] = "Hello World #      ";
  itoa(packetnum++, radiopacket+13, 10);
  Serial.print("Sending "); Serial.println(radiopacket);
  radiopacket[19] = 0;
  
  Serial.println("Sending..."); delay(10);
  rf95.send((uint8_t *)radiopacket, 20);

  Serial.println("Waiting for packet to complete..."); delay(10);
  rf95.waitPacketSent();
```

Its pretty simple, the delay does the waiting, you can replace that with low power sleep code. Then it generates the packet and appends a number that increases every transmission. Then it simply calls **send** to transmit the data, and passes in the array of data and the length of the data.

**Note that this does not any addressing or subnetworking** - if you want to make sure the packet goes to a particular radio, you may have to add an identifier/address byte on your own!

Then you call `waitPacketSent()` to wait until the radio is done transmitting. You will not get an automatic acknowledgement from the other radio unless it knows to send back a packet. Think of it like the 'UDP' of radio - the data is sent, but it's not certain it was received! Also, there will not be any automatic retries.

## Receiver Code

The Receiver has the same exact setup code, but the loop is different:

```
void loop()
{
  if (rf95.available())
  {
    // Should be a message for us now   
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];
    uint8_t len = sizeof(buf);
    
    if (rf95.recv(buf, &amp;len))
    {
      digitalWrite(LED, HIGH);
      RH_RF95::printBuffer("Received: ", buf, len);
      Serial.print("Got: ");
      Serial.println((char*)buf);
       Serial.print("RSSI: ");
      Serial.println(rf95.lastRssi(), DEC);
```

Instead of transmitting, it is constantly checking if there's any data packets that have been received. `available()` will return true if a packet with proper error-correction was received. If so, the receiver prints it out in hex and also as a 'character string'.

It also prints out the RSSI which is the receiver signal strength indicator. This number will range from about -15 to about -100. The larger the number (-15 being the highest you'll likely see) the stronger the signal.

Once done it will automatically reply, which is a way for the radios to know that there was an acknowledgement:

```
// Send a reply
      uint8_t data[] = "And hello back to you";
      delay(200);
      rf95.send(data, sizeof(data));
      rf95.waitPacketSent();
      Serial.println("Sent a reply");
```

It simply sends back a string and waits till the reply is completely sent.

# Adafruit Feather 32u4 with LoRa Radio Module

## Radio Module F.A.Q.

### 

All other things being equal (antenna, power output, location) you will get better range with LoRa than with RFM69 modules. We've found 50% to 100% range improvement is common.

### 

The RFM69 radios have a range of approx. 500 meters **line of sight** with tuned uni-directional antennas. Depending on obstructions, frequency, antenna and power output, you will get lower ranges - _especially_ if you are not line of sight.

### 

The RFM9x radios have a range of up to 2 km **line of sight** with tuned uni-directional antennas. Depending on obstructions, frequency, antenna and power output, you will get lower ranges - _especially_ if you are not line of sight.

### 

Your module is probably _not_ broken. Radio range is dependant on _a lot of things_ and all must be attended to make sure you get the best performance!

1. Tuned antenna for your frequency - getting a well-tuned antenna is incredibly important. Your antenna must be tuned for the exact frequency you are using
2. Matching frequency - make sure all modules are on the same exact frequency
3. Matching settings - all radios must have the same settings so they can communicate
4. Directional vs non-directional antennas - for the best range, _directional_ antennas like Yagi will direct your energy in one path instead of all around
5. Good power supply - a nice steady power supply will keep your transmissions clean and strong
6. Max power settings on the radios - they can be set for higher/lower power! Don't forget to set them to max.
7. Line of sight - No obstructions, walls, trees, towers, buildings, mountains, etc can be in the way of your radio path. Likewise, outdoors is way better than indoors because its very hard to bounce radio paths around a building
8. Radio transmission speed - trying to transmit more data faster will be hard. Go for small packets, with lots of retransmissions. Lowering the baud rate on the radio (see the libraries for how to do this) will give you better reliability

### 

Various antennas will cost diferent amounts and give you different directional gain. In general, spending a lot on a large fixed antenna can give you better power transfer if the antenna is well tuned. For most simple uses, a wire works pretty well  
  
[The ARRL antena book is recommended if you want to learn how to do the modeling and analysis](https://www.arrl.org/shop/Antennas/)  
  
But nothing beats actual tests in your environment!

### 

Look for a little colored paint dot on top of the module.

- **GREEN** , **BLUE** or **NO DOT** = **900 MHz**
- **RED** = **433 MHz**

Every now and then the paint dot shows up without a color or with the ink dot burnt. This is just a manufacturing variance and there is nothing wrong with the board. You should get the frequency you ordered though. So if you plan on mixing these up, you may want to add a new mark of your own.

### 

Nope! The radios have an ink dot on them, which sometimes gets toasty when we put the board through the oven, or rework it, so it may have a burnt appearance. The chip is fine!

### 

Each LoRa device from Adafruit should come with a small label that contains a MAC address in the form **98:76:B6:xx:yy:zz**. This might be a sticker attached to the device itself or included separately. This MAC address is needed if using the LoRa device with [LoRaWAN](https://lora-alliance.org/about-lorawan/). For example, [The Things Network](https://www.thethingsnetwork.org/) uses LoRaWAN. For non-LoRaWAN usage, the MAC address is not needed.

# Adafruit Feather 32u4 with LoRa Radio Module

## Downloads

# Datasheets & Files

- [SX127x Datasheet](https://www.semtech.com/products/wireless-rf/lora-transceivers/SX1276#download-resources)&nbsp;- The radio chip itself
- [RFM9X](https://cdn-learn.adafruit.com/assets/assets/000/031/659/original/RFM95_96_97_98W.pdf?1460518717)&nbsp;- The radio module, which contains the SX1272 chipset
- [FCC Test Report](https://cdn-shop.adafruit.com/product-files/3079/3079_RFM98-433S2%2813dBm%29_FCC.pdf)&nbsp;- 13dBm
- [ETSI Test Report](https://cdn-shop.adafruit.com/product-files/3079/3079_RFM98-433S2%2813dBm%29ETSI.pdf)
- [CE Report](https://cdn-shop.adafruit.com/product-files/3079/3079_RFM98-470S2_CE.pdf)
- [FCC Test Report](https://cdn-shop.adafruit.com/product-files/3079/3079_RFM98-470S2_FCC.pdf)
- [RoHS Test Report](https://cdn-shop.adafruit.com/product-files/3079/3079_RFM98-470S2_FCC.pdf)
- [EagleCAD PCB Files on GitHub](https://github.com/adafruit/Adafruit-Feather-32u4-RFM-LoRa-PCB)
- [Fritzing object in Adafruit Fritzing library](https://github.com/adafruit/Fritzing-Library/)

[Feather 32u4 LoRa / RFM Pinout Diagram](https://cdn-learn.adafruit.com/assets/assets/000/046/201/original/feather_32u4_LoRa_v1.3.pdf?1504806229)
# Schematic
The RFM69/RFM9x modules have identical pinouts

![](https://cdn-learn.adafruit.com/assets/assets/000/031/658/medium800/feather_schem.png?1460518302)

# Fabrication Print

Dimensions in Inches

![](https://cdn-learn.adafruit.com/assets/assets/000/031/657/medium800/feather_fabprint.png?1460518264)


## Featured Products

### Adafruit Feather 32u4 RFM95 LoRa Radio- 868 or 915 MHz

[Adafruit Feather 32u4 RFM95 LoRa Radio- 868 or 915 MHz](https://www.adafruit.com/product/3078)
This is the&nbsp;**Adafruit Feather 32u4 LoRa Radio (RFM9x)****. **We call these _RadioFruits** ,**_ our take on an microcontroller with a "[Long Range (LoRa)](https://www.lora-alliance.org/)" packet radio transceiver with built...

Out of Stock
[Buy Now](https://www.adafruit.com/product/3078)
[Related Guides to the Product](https://learn.adafruit.com/products/3078/guides)
### Adafruit Feather 32u4 RFM96 LoRa Radio - 433MHz

[Adafruit Feather 32u4 RFM96 LoRa Radio - 433MHz](https://www.adafruit.com/product/3079)
This is the&nbsp;**Adafruit Feather 32u4 LoRa Radio (RFM9x)****. **We call these _RadioFruits** ,**_ our take on an microcontroller with a "[Long Range (LoRa)](https://www.lora-alliance.org/)" packet radio transceiver with built...

In Stock
[Buy Now](https://www.adafruit.com/product/3079)
[Related Guides to the Product](https://learn.adafruit.com/products/3079/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...>

Out of Stock
[Buy Now](https://www.adafruit.com/product/1578)
[Related Guides to the Product](https://learn.adafruit.com/products/1578/guides)
### Lithium Ion Polymer Battery - 3.7V 350mAh

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

Out of Stock
[Buy Now](https://www.adafruit.com/product/2750)
[Related Guides to the Product](https://learn.adafruit.com/products/2750/guides)
### Lithium Ion Polymer Battery - 3.7v 150mAh

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

Out of Stock
[Buy Now](https://www.adafruit.com/product/1317)
[Related Guides to the Product](https://learn.adafruit.com/products/1317/guides)
### SMA to uFL/u.FL/IPX/IPEX RF Adapter Cable

[SMA to uFL/u.FL/IPX/IPEX RF Adapter Cable](https://www.adafruit.com/product/851)
This RF adapter cable is super handy for anyone doing RF work. Often times, small electronics save space by having a pick-and-placeable u.FL connector (also called uFL, IPEX, IPAX, IPX, MHF, and AM). But most antennas have SMA or RP-SMA connectors on them. This little cable will bridge the...

In Stock
[Buy Now](https://www.adafruit.com/product/851)
[Related Guides to the Product](https://learn.adafruit.com/products/851/guides)
### Header Kit for Feather - 12-pin and 16-pin Female Header Set

[Header Kit for Feather - 12-pin and 16-pin Female Header Set](https://www.adafruit.com/product/2886)
These two&nbsp; **Female&nbsp;Headers** &nbsp;alone are, well, lonely. But pair them with any of our&nbsp;[Feather](https://www.adafruit.com/categories/777)&nbsp;boards and you're in business!

What do they do? They get soldered on either side of the Feather...

In Stock
[Buy Now](https://www.adafruit.com/product/2886)
[Related Guides to the Product](https://learn.adafruit.com/products/2886/guides)
### Short Headers Kit for Feather - 12-pin + 16-pin Female Headers

[Short Headers Kit for Feather - 12-pin + 16-pin Female Headers](https://www.adafruit.com/product/2940)
These two&nbsp; **Short** &nbsp; **Female&nbsp;Headers** &nbsp;alone are, well, lonely. But pair them with any of our&nbsp;[Feather](https://www.adafruit.com/categories/777)&nbsp;boards and you're in business!

These headers are particularly cute and...

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

## Related Guides

- [3D Printed Case for Adafruit Feather](https://learn.adafruit.com/3d-printed-case-for-adafruit-feather.md)
- [Introducing Adafruit Feather](https://learn.adafruit.com/adafruit-feather.md)
- [Remote Effects Trigger Box](https://learn.adafruit.com/remote-effects-trigger.md)
- [Using LoraWAN and The Things Network with Feather](https://learn.adafruit.com/the-things-network-for-feather.md)
- [Adafruit Arcade Bonnet for Raspberry Pi](https://learn.adafruit.com/adafruit-arcade-bonnet-for-raspberry-pi.md)
- [Adafruit Metro M7 with microSD](https://learn.adafruit.com/adafruit-metro-m7-microsd.md)
- [Adafruit 1.44" Color TFT with Micro SD Socket](https://learn.adafruit.com/adafruit-1-44-color-tft-with-micro-sd-socket.md)
- [Pocket Galaxy](https://learn.adafruit.com/pocket-galaxy.md)
- [CYBERDECK Bonnet and HAT for Raspberry Pi 400](https://learn.adafruit.com/cyberdeck-bonnet-and-hat.md)
- [Adafruit 3.5" Capacitive Touch TFT FeatherWing](https://learn.adafruit.com/adafruit-3-5-capacitive-touch-tft-featherwing.md)
- [Introducing Circuit Playground](https://learn.adafruit.com/introducing-circuit-playground.md)
- [Adafruit QT Py ESP32-S2 and QT Py ESP32-S2 with uFL Antenna](https://learn.adafruit.com/adafruit-qt-py-esp32-s2.md)
- [Adafruit ADXL343 + ADT7410 Sensor FeatherWing](https://learn.adafruit.com/adxl343-adt7410-sensor-featherwing.md)
- [Adafruit Mini TFT with Joystick Featherwing](https://learn.adafruit.com/adafruit-mini-tft-featherwing.md)
- [74HC595 Shift Register](https://learn.adafruit.com/74hc595.md)
