The Adafruit Feather M0 Adalogger is a versatile and portable development board that integrates the power of a microcontroller with the convenience of data logging. Based on the ATSAMD21G18 ARM Cortex M0 processor, it offers a rich set of features including an onboard microSD card slot for data storage and a real-time clock (RTC) for time-stamping data. This makes it an excellent choice for projects requiring data collection, time-sensitive operations, or portable instrumentation.
Explore Projects Built with Adafruit Feather M0 Adalogger
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 is designed for environmental data collection and logging, utilizing an Adafruit Feather M0 Express microcontroller as the central processing unit. It interfaces with a BME280 sensor for atmospheric temperature, humidity, and pressure measurements, an SGP30 sensor for monitoring air quality (eCO2 and TVOC), and a STEMMA soil sensor for detecting soil moisture and temperature. The system is powered by a solar panel and a 3.7v LiPo battery, managed by an Adafruit BQ24074 Solar-DC-USB Lipo Charger, and provides easy access to the microcontroller's connections through an Adafruit Terminal Breakout FeatherWing.
This circuit is designed to interface multiple sensors with an Adafruit Feather M0 Adalogger microcontroller for data logging purposes. The sensors include a MAX30205 temperature sensor, a body dehydration sensor, a MAX30102 pulse oximeter, an Adafruit LSM6DSOX 6-axis accelerometer and gyroscope, and an Adafruit BME680 environmental sensor. All sensors are connected to the microcontroller via an I2C bus, sharing the SDA and SCL lines for communication.
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 Adafruit HUZZAH32 ESP32 Feather board as the central microcontroller, which is connected to an Adafruit Quad AlphaNumeric Featherwing display and an Adafruit ADXL343 accelerometer via I2C communication (SCL and SDA lines). The ESP32 controls a vibration motor connected to one of its GPIO pins (A5_IO4) and shares a common power supply (3.3V) and ground (GND) with the other components. The purpose of this circuit is likely to read acceleration data, display information on the alphanumeric display, and provide haptic feedback through the vibration motor.
Environmental data logging (temperature, humidity, pressure)
Time-lapse photography with time-stamped data
Portable weather stations
Wearable health and fitness trackers
IoT devices with data backup on SD card
Technical Specifications
Key Technical Details
Microcontroller: ATSAMD21G18, 32-bit ARM Cortex M0+
Operating Voltage: 3.3V
Input Voltage: 3.7-6V via battery and USB, 5V via USB
Digital I/O Pins: 20
PWM Channels: 10
Analog Input Channels: 6 (12-bit ADC)
Analog Output Channels: 1 (10-bit DAC)
Flash Memory: 256KB
SRAM: 32KB
Clock Speed: 48 MHz
RTC: With backup battery support
MicroSD Slot: Supports standard and high capacity SD cards
Pin Configuration and Descriptions
Pin Number
Function
Description
1
GND
Ground
2
BAT
Battery positive voltage (3.7-4.2V LiPo)
3
EN
Enable pin for the 3.3V regulator
4
USB
USB power (5V from host computer)
5-14
Digital Pins
Digital I/O, PWM output, or interrupt detection
15-20
Analog Pins
Analog inputs or digital I/O
21
AREF
Analog reference voltage
22
SCK
SPI clock
23
MISO
SPI Master In Slave Out
24
MOSI
SPI Master Out Slave In
25
SDA
I2C Data
26
SCL
I2C Clock
27
RX
UART Receive
28
TX
UART Transmit
29
RST
Reset pin
30
3V
3.3V output from the regulator
Usage Instructions
How to Use the Component in a Circuit
Powering the Board: The Feather M0 Adalogger can be powered via USB, a LiPo battery, or an external power supply. Ensure that the power source is within the specified voltage range.
Connecting Peripherals: Connect sensors and peripherals to the appropriate pins. Use digital or analog pins based on the requirements of the peripheral.
Data Logging: Insert a formatted microSD card into the slot for data logging. Use the onboard RTC to timestamp your data.
Programming: The board can be programmed via the Arduino IDE. Select "Adafruit Feather M0" from the board manager.
Important Considerations and Best Practices
Always disconnect the battery or power supply before making or altering connections.
Use a regulated power supply to prevent damage to the board.
Format the SD card as FAT16 or FAT32 before use.
To maintain accurate time, ensure the RTC battery is charged and properly installed.
Avoid exposing the board to static electricity or physical stress.
Troubleshooting and FAQs
Common Issues
Board not recognized by computer: Check the USB cable and connections. Ensure the correct drivers are installed.
SD card not working: Verify that the SD card is formatted correctly and is not corrupted.
Inaccurate RTC time: Check the RTC battery and replace it if necessary.
Solutions and Tips for Troubleshooting
If the board is not recognized, try using a different USB port or cable.
For SD card issues, try formatting the card on a computer or testing with a different card.
Ensure that the RTC battery is properly installed and making good contact.
FAQs
Q: Can I power the Feather M0 Adalogger with a 5V supply?
A: Yes, you can power it through the USB connection with 5V, but do not apply 5V directly to the 3.3V pin.
Q: How do I set the time on the RTC?
A: You can set the time on the RTC using the Arduino library for the RTC chip. Refer to the example code provided by Adafruit.
Q: What is the maximum size of SD card supported?
A: The Feather M0 Adalogger supports SD cards up to 32GB formatted as FAT16 or FAT32.
Example Code for Arduino UNO
Below is an example code snippet for initializing the RTC and SD card on the Adafruit Feather M0 Adalogger. This code is written for use with the Arduino IDE.
#include <SPI.h>
#include <SD.h>
#include <Wire.h>
#include <RTClib.h>
RTC_PCF8523 rtc;
const int chipSelect = 10; // SD card CS pin
void setup() {
Serial.begin(9600);
// Initialize the RTC
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
// Initialize the SD card
Serial.print("Initializing SD card...");
if (!SD.begin(chipSelect)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
}
void loop() {
// Create or open a file and write data to it
File dataFile = SD.open("datalog.txt", FILE_WRITE);
if (dataFile) {
DateTime now = rtc.now(); // Get current time
dataFile.print(now.unixtime()); // Write the time to the file
dataFile.print(", ");
// Write sensor data here
dataFile.println("Sensor data");
dataFile.close(); // Close the file
} else {
// if the file isn't open, pop up an error:
Serial.println("error opening datalog.txt");
}
delay(1000); // Wait for 1 second before the next loop
}
Remember to wrap the code comments as needed to limit line length to 80 characters. This example assumes you have the necessary libraries installed and that you have set the correct board and port in the Arduino IDE.