Skip to product information
1 of 4

Axiometa

Axiometa Pixie M1

Axiometa Pixie M1

SKU:MTA0007

The Axiometa Pixie M1 is a small but capable development board that works well for both beginners and experienced makers. It uses the ESP32-S3-Mini-1 chip, giving you dual-core processing, Wi-Fi, and Bluetooth Low Energy in a breadboard-friendly size.

It has 17 programmable pins for reading sensors, detecting button presses, using touch inputs, or connecting to other devices with I2C, SPI, or UART.

Built-in features include:

  • Two buttons (reset + user)
  • Two LEDs for power and activity
  • A NeoPixel RGB LED for color feedback
  • Reverse polarity protection
  • A resettable fuse for overcurrent protection
Regular price $6.29
Regular price Sale price $6.29
Sale Sold out
Taxes included. Shipping calculated at checkout.
View full details
  • Technical Details

    - Module: ESP32-S3-Mini-1 N8 or N4R2
    - Processor: ESP32-S3 32-Bit, Dual Core
    - Clock Speed: 240 MHz
    - Memory: 8 MB Flash (N8) or 4 MB Flash + 2 MB PSRAM (N4R2)
    - Wi-Fi 4 (802.11 b/g/n)
    - Bluetooth 5 (LE)
    - Castellated Holes
    - ADC Resolution: 12 Bits
    - GPIO Pins: 21 programmable (each with ADC, interrupt, touch sensing capability)
    - Communication: I2C, SPI, UART (remappable on any GPIO)
    - Protection: Reverse polarity diode, polyfuse for overcurrent protection
    - External Input 5.0 - 18V
    - USB-C
    - Reset & User Buttons
    - Power & Activity LED
    - NeoPixel LED (WS2812B)

    MCU Datasheet 
  • Top

  • Bottom

Arduino Code Example

example.ino
#include <FastLED.h>

#define LED_PIN     21
#define NUM_LEDS    1
#define BUTTON_PIN  0
#define LED_TYPE    WS2812B
#define COLOR_ORDER GRB

CRGB leds[NUM_LEDS];

// Touch pins configuration
#define NUM_TOUCH_PINS 11
int touchPins[NUM_TOUCH_PINS] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
#define TOUCH_THRESHOLD 50000

// Effect variables
int currentHue = 0;        // Current color in the spectrum (0-255)
int brightness = 128;      // LED brightness
uint8_t breatheValue = 0;  // Breathing animation value
int breatheDirection = 1;  // Breathing direction

void setup() {
  Serial.begin(115200);
  delay(1000);
  
  // Initialize FastLED
  FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
  FastLED.setBrightness(brightness);
  
  Serial.println("Touch Spectrum Breathing LED Ready!");
  Serial.println("Scroll your finger across pins 1-11 to change colors!");
}

void loop() {
  handleTouchInput();
  updateBreathingEffect();
  
  FastLED.show();
  delay(20);
}

void handleTouchInput() {
  static unsigned long lastTouchCheck = 0;
  if (millis() - lastTouchCheck < 50) return;
  lastTouchCheck = millis();
  
  int activeTouchPin = -1;
  int highestTouchValue = 0;
  
  // Find the pin with the strongest touch
  for(int i = 0; i < NUM_TOUCH_PINS; i++) {
    int touchValue = touchRead(touchPins[i]);
    
    if (touchValue > TOUCH_THRESHOLD && touchValue > highestTouchValue) {
      highestTouchValue = touchValue;
      activeTouchPin = i;
    }
  }
  
  // If we have an active touch, map pin position to color spectrum
  if (activeTouchPin >= 0) {
    // Map pin index (0-10) to full color spectrum (0-255)
    // INSTANT color change - no smooth transitions
    currentHue = map(activeTouchPin, 0, NUM_TOUCH_PINS-1, 0, 255);
    
    // Map touch intensity to brightness
    brightness = map(constrain(highestTouchValue, TOUCH_THRESHOLD, TOUCH_THRESHOLD + 200000), 
                    TOUCH_THRESHOLD, TOUCH_THRESHOLD + 200000, 80, 255);
    FastLED.setBrightness(brightness);
    
    Serial.print("Pin: ");
    Serial.print(activeTouchPin + 1);
    Serial.print(" -> Hue: ");
    Serial.print(currentHue);
    Serial.print(" (");
    Serial.print(getColorName(currentHue));
    Serial.print("), Brightness: ");
    Serial.println(brightness);
  }
}

void updateBreathingEffect() {
  // Update breathing animation
  breatheValue += breatheDirection * 3;
  
  if (breatheValue >= 255) {
    breatheValue = 255;
    breatheDirection = -1;
  } else if (breatheValue <= 30) {
    breatheValue = 30;
    breatheDirection = 1;
  }
  
  // Apply current hue with breathing brightness
  leds[0] = CHSV(currentHue, 255, breatheValue);
}

String getColorName(int hue) {
  if (hue < 20) return "Red";
  else if (hue < 40) return "Orange";
  else if (hue < 70) return "Yellow";
  else if (hue < 90) return "Yellow-Green";
  else if (hue < 130) return "Green";
  else if (hue < 160) return "Cyan";
  else if (hue < 190) return "Blue";
  else if (hue < 220) return "Purple";
  else if (hue < 240) return "Magenta";
  else return "Pink-Red";
}
        
  • First time setup

    Pair text with an image to focus on your chosen product, collection, or blog post. Add details on availability, style, or even provide a review.

  • Using Core WiFi with Toit

    Pair text with an image to focus on your chosen product, collection, or blog post. Add details on availability, style, or even provide a review.

  • Making first Web Server

    Pair text with an image to focus on your chosen product, collection, or blog post. Add details on availability, style, or even provide a review.