The Adafruit Bluefruit LE SPI Friend is a versatile Bluetooth Low Energy (BLE) module that provides wireless communication capabilities to your projects. It is designed to interface with microcontrollers via the Serial Peripheral Interface (SPI) and is capable of acting as either a peripheral or a central BLE device. This module is ideal for adding Bluetooth connectivity to a wide range of applications, such as wearable technology, wireless sensor networks, and IoT devices.
Explore Projects Built with Adafruit Bluefruit LE SPI Friend
Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
This circuit integrates an Adafruit Circuit Playground Bluefruit with an Adafruit Crickit for Circuit Playground Express to control a temperature sensor, a loudspeaker, and a series of WS2812 RGB LED strips. The Crickit board reads temperature data, drives the loudspeaker, and controls the LED strips to create visual effects based on the sensor input.
This circuit integrates an Adafruit MPR121 capacitive touch sensor with an Adafruit Feather 32u4 Bluefruit microcontroller. The MPR121 is powered by the Feather and communicates via I2C (SCL and SDA) to detect touch inputs, which can be processed or transmitted wirelessly by the Feather.
This circuit features an ESP32 microcontroller interfaced with an ADXL343 accelerometer via SPI communication, powered by a 12V battery regulated down to 5V and 8V using 7805 and 7808 voltage regulators. The ESP32 reads accelerometer data and outputs it via serial communication, with additional components including a pushbutton and a rocker switch for user input.
This circuit features an Adafruit QT Py RP2040 microcontroller interfacing with an MPU-6050 accelerometer, an Adafruit APDS-9960 sensor, and a 0.96" OLED display via I2C communication. It is powered by a 3.7V LiPo battery and includes a green LED with a current-limiting resistor connected to an analog pin of the microcontroller.
Voltage Supply: 3.3V to 5V (with onboard voltage regulator)
Current Consumption: 10mA (average), 30mA (peak during transmission)
Communication Interface: SPI
Maximum Data Rate: 1 Mbps
Output Power: +4 dBm
Sensitivity: -93 dBm
Antenna: Integrated PCB antenna
Security: AES-128 encryption
Pin Configuration and Descriptions
Pin Number
Name
Description
1
VIN
Power supply (3.3V to 5V)
2
GND
Ground connection
3
SCK
SPI Clock
4
MISO
Master In Slave Out (SPI Data from Bluefruit to MCU)
5
MOSI
Master Out Slave In (SPI Data from MCU to Bluefruit)
6
CS
Chip Select (Active Low)
7
IRQ
Interrupt Request (Active Low)
8
RST
Reset (Active Low)
Usage Instructions
How to Use the Component in a Circuit
Power Connections: Connect the VIN pin to a 3.3V to 5V power supply and the GND pin to the ground.
SPI Connections: Connect the SCK, MISO, and MOSI pins to the corresponding SPI pins on your microcontroller.
Control Pins: Connect the CS, IRQ, and RST pins to available digital I/O pins on your microcontroller.
Antenna: Ensure the integrated PCB antenna is not obstructed for optimal wireless performance.
Important Considerations and Best Practices
Use a level shifter if your microcontroller operates at a voltage higher than 3.3V.
Keep the SPI bus as short as possible to minimize noise and ensure reliable communication.
Avoid placing the module near metal objects or surfaces that could interfere with the antenna.
Implement proper decoupling with a capacitor close to the VIN pin to stabilize the power supply.
Example Code for Arduino UNO
#include <SPI.h>
#include "Adafruit_BLE_UART.h"
// Create the bluefruit object, using SPI interface
Adafruit_BLE_UART ble(SPI_CS, SPI_IRQ, SPI_RST);
void setup() {
Serial.begin(9600);
ble.begin();
// Set BLE callbacks
ble.setRxCallback(rxCallback);
ble.setDisconnectCallback(disconnectCallback);
// Start advertising for connections
ble.startAdvertising();
}
void loop() {
// Poll the module to process incoming data
ble.poll();
}
// Callback for when data is received
void rxCallback(uint8_t *buffer, uint8_t len) {
Serial.print(F("Received: "));
for (uint8_t i = 0; i < len; i++) {
Serial.print((char)buffer[i]);
}
Serial.println();
}
// Callback for when a connection is dropped
void disconnectCallback(void) {
Serial.println(F("Disconnected!"));
ble.startAdvertising();
}
Note: Replace SPI_CS, SPI_IRQ, and SPI_RST with the actual pin numbers used for Chip Select, Interrupt Request, and Reset pins, respectively.
Troubleshooting and FAQs
Common Issues Users Might Face
Connection Issues: Ensure that the module is powered correctly and that the SPI connections are secure.
Data Transmission Errors: Check for proper grounding and stable power supply to the module.
Intermittent Operation: Verify that the antenna is not obstructed and that the module is not placed near metal objects.
Solutions and Tips for Troubleshooting
Power Supply: Use a multimeter to check that the VIN pin is receiving the correct voltage.
SPI Communication: Use an oscilloscope to verify that the SPI signals are clean and free from noise.
Antenna Placement: Reposition the module to ensure the antenna has a clear line of sight to the paired device.
FAQs
Q: Can the Bluefruit LE SPI Friend be used with a 5V microcontroller?
A: Yes, but ensure that the logic levels for SPI communication are shifted down to 3.3V to avoid damaging the module.
Q: How many devices can the Bluefruit LE SPI Friend connect to at once?
A: The module can maintain a single connection as a peripheral device. As a central device, it can theoretically manage multiple connections, but this is limited by memory and processing constraints.
Q: What is the range of the Bluefruit LE SPI Friend?
A: The range is typically up to 30 meters (100 feet) in open space, but this can be reduced by obstacles and interference.
Q: How do I update the firmware on the Bluefruit LE SPI Friend?
A: Firmware updates can be performed using the Bluefruit LE Connect app available for iOS and Android devices. Instructions are provided in the Adafruit Learning System guides.