🤖Have you ever tried Chat.M5Stack.com before asking??😎

Categories

  • Firmware updates, Hardware Revisions, New Product info can be found here.

    75 Topics
    826 Posts
    KhanFromNorthK
    You can continue developing on the M5Stack Core2 reliably. The key is to bypass UIFlow entirely and use MicroPython directly through Thonny or VS Code.
  • M5Stack Events

    8 Topics
    31 Posts
    kurikoK
    @Apex574R Does the Userdemo firmware running normally?
  • Wish for a feature that doesn't exist yet? this is the place to ask for it. we will collect all the requirements and enquiry's and who knows ... sometime wish might come true!

    222 Topics
    676 Posts
    R
    I took a closer look and compared M5StampS3A vs M5StampS3 BAT and I must say that it is not possible to do any piggyback for pin mapping at the M5StampS3A level since ESP32-S3FN8 vs ESP32-S3-PICO-1-N8R8 have differences in the number of GPIOs (6 pins error), see the difference table below: [image: 1774204115000-f8a8e80c-1dca-472a-ab48-dac7e6656c42-image.png] So it only remains for M5Stack team to upgrade M5StampS3A for 2/8 PSRAM, i.e. have M5StampS3B version.
  • Forum rules - Announcements - General chit chat (ESP-32, ESP-8266, IoT, Raspberry Pi etc...)

    969 Topics
    3k Posts
    L
    I met the same situation.... any solution?
  • Core and Modules info.

    3k Topics
    14k Posts
    H
    In my case, this symptom occurred when the SSID of the WiFi access point connected to StackChan and my smartphone were not the same. This was because StackChan was connected on 2.4GHz and my smartphone was connected on 5GHz. When I switched my smartphone to 2.4GHz, it connected.
  • Projects Sharing.

    486 Topics
    2k Posts
    M
    Hi everyone, I built Pixel Pets, an open-source virtual pet family for M5Stack devices. It currently supports: Muffin — CoreS3 + Module-LLM, with offline voice interaction Visu — CoreS3 without the LLM module Goo-Goo — Core2 version Pip — StickC PLUS2 / PLUS2 S3 pocket companion The pets have moods, needs, mini-games, sounds, touch/button/IMU interactions, weather and moon-phase awareness, and ESP-NOW friendships. Pip can send treats and gestures to a bigger pet via ESP-NOW. The project started as a father-and-son maker project and is meant to be playful, hackable and parent-friendly. No cloud account, no tracking, no subscription. GitHub: https://github.com/marceld23/Pixel-Pets Demo / project page: https://marceld23.github.io/Pixel-Pets/ I would love feedback from other M5Stack users, especially around hardware setup, flashing instructions and ideas for new interactions.
  • This is the place to discuss driver issues, M5 burner troubleshooting, and development of software compatible with M5Stack

    3k Topics
    10k Posts
    B
    This is the closest I got on a code which provides some sort of acceleration/deaceleration on jumping btw positions. I wonder if is there an official way to achieve this smoothly. Thanks #include "unit_rolleri2c.hpp" #include <M5Unified.h> /* Going to random position every 1 second - trying to move with ease in/out, but very artificial/jittery - not smooth. */ UnitRollerI2C RollerI2C; const int32_t UNITS_PER_DEGREE = 100; const int32_t POSITION_TOLERANCE = 150; // ~1.5° arrival threshold const uint32_t MOVE_DURATION_MS = 3000; // total time per move (ms) — tune 1000–5000 const uint32_t STEP_MS = 40; // trajectory update interval (ms) const uint32_t PAUSE_MS = 1000; // pause at target before next move int32_t basePosition = 0; // ── Ease-in / ease-out using a sine curve ────────────────────────────────── // t=0.0 → 0.0 | t=0.5 → 0.5 | t=1.0 → 1.0 // Accelerates from rest, decelerates to rest — smooth S-curve. float easeInOut(float t) { return (1.0f - cosf(t * PI)) / 2.0f; } // Drives from startUnits → targetUnits over MOVE_DURATION_MS with ease in/out. // Returns true when the motor confirms arrival within tolerance. bool easedMoveTo(int32_t startUnits, int32_t targetUnits) { uint32_t moveStart = millis(); while (true) { uint32_t elapsed = millis() - moveStart; float t = min((float)elapsed / (float)MOVE_DURATION_MS, 1.0f); // Compute eased intermediate setpoint float eased = easeInOut(t); int32_t intermediate = startUnits + (int32_t)((targetUnits - startUnits) * eased); RollerI2C.setPos(intermediate); // Once we've sent the final setpoint, check arrival if (t >= 1.0f) { int32_t actual = RollerI2C.getPosReadback(); if (abs(targetUnits - actual) <= POSITION_TOLERANCE) { return true; // ✅ arrived } // Give a small extra window for the PID to settle if (elapsed > MOVE_DURATION_MS + 1000) { return false; // ⏱️ timed out even after easing finished } } delay(STEP_MS); } } int32_t degreesToUnits(float deg) { return (int32_t)(deg * UNITS_PER_DEGREE); } float unitsToDegrees(int32_t u) { return u / (float)UNITS_PER_DEGREE; } void setup() { M5.begin(); Serial.begin(115200); delay(500); randomSeed(analogRead(0)); bool found = RollerI2C.begin(&Wire, 0x64, 2, 1, 400000); if (!found) { Serial.println("❌ Roller485 NOT found on I2C! Check wiring."); while (true) delay(1000); } Serial.println("✅ Roller485 found!"); Serial.print("Vin (x0.01V): "); Serial.println(RollerI2C.getVin()); Serial.print("ErrorCode: "); Serial.println(RollerI2C.getErrorCode()); RollerI2C.setOutput(0); RollerI2C.setMode(ROLLER_MODE_POSITION); RollerI2C.setPosMaxCurrent(80000); RollerI2C.setOutput(1); delay(100); basePosition = RollerI2C.getPosReadback(); Serial.print("Base position (raw): "); Serial.println(basePosition); Serial.println("Ready. Starting eased random position loop...\n"); delay(500); } int32_t currentTarget = 0; // tracks last target so we ease FROM it void loop() { // Random angle offset from base: -180° to +180° float targetDegrees = random(-180, 181); int32_t targetUnits = basePosition + degreesToUnits(targetDegrees); int32_t fromUnits = RollerI2C.getPosReadback(); // start from actual current pos Serial.print("➡️ "); Serial.print(unitsToDegrees(fromUnits - basePosition), 1); Serial.print("° → "); Serial.print(targetDegrees, 1); Serial.println("° (easing...)"); bool arrived = easedMoveTo(fromUnits, targetUnits); float actualDeg = unitsToDegrees(RollerI2C.getPosReadback() - basePosition); if (arrived) { Serial.print("✅ Arrived at "); } else { Serial.print("⏱️ Stopped at "); } Serial.print(actualDeg, 1); Serial.println("°"); Serial.print(" ErrorCode: "); Serial.println(RollerI2C.getErrorCode()); Serial.println(); delay(PAUSE_MS); // pause 1 second at target }
  • 259 Topics
    565 Posts
    J
    今日、StackChan がやってきました。 まだ AI Agent との会話がぎこちないし、音楽再生を頼むと J-Pop やビートルズは探せず、中国語の歌しか再生できないけど、なかなか楽しんでます。 [image: 20260502_180601613.JPG]