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

Subcategories

  • 551 Topics
    2k Posts
    H
    @Danieldsouza I prefer to use KiCAD for schematic and PCB design. The software is open source It runs on Windows, Linux, Mac there is a strong community there is a ton of libraries for thousands of components some part distributor and assembling factories provide their own library or allow symbol and footprint download making your own symbols and footprints is very easy design rule checking I am not an advanced user but managed to make a 4-layer PCB after watching a few tutorial videos. Independend of the EDA Tool make sure you avoid the common tripping hazard like missing blocking caps or unwanted ground loops.
  • When you meet problems using M5Stack, we help you solve it.

    200 Topics
    989 Posts
    robskiR
    @johnericsutton hard to believe that unit is designed in such way to report value only when measured source is above 0...
  • 505 Topics
    2k Posts
    D
    Hopefully I can shed a little light on this topic. The AIN4-20mA unit uses a STM32 processor to handle the I2C interface in software. For some reason, the timing is not wholly compatible with the Raspberry Pi kernel I2C drivers. However, the Espressif I2C implementation is a lot more tolerant and flexible and works just fine. That's why it works with the M5 controllers. There was a an update to the github repo for this unit's firmware (https://github.com/m5stack/M5Module-4-20mA-Internal-FW) which changed the I2C library that was used. It's possible that this will fix it, but I haven't bothered to set up a STM32 development system to try it. If you really want to use a Pi or other Linux host board, you could use any inexpensive ESP device (like an M5Stamp) as a go-between. Another option is to use something like the Arduino UNO Q, which runs Linux on the main processor and allows you to run C++ code on the STM32 microcontroller to talk to I2C devices. It's really better to run real-time control on a separate microcontroller anyway.
  • 1k Topics
    6k Posts
    ShawnHymelS
    @felmue That helps a lot, thank you!
  • 55 Topics
    203 Posts
    J
    I have been able to get a program to work that uses the M5EchoBase library but no luck using the unified library. For example the simple program below doesn't work. #include <M5Unified.h> void setup() { // 1. Initialize M5Unified delay(1000); // Delay for a moment to allow the system to stabilize. auto cfg = M5.config(); cfg.serial_baudrate = 115200; M5.begin(cfg); // 2. Configure the Speaker for the Atomic Audio Base (ES8311) // We access the speaker configuration directly via M5.Speaker.config() auto spk_cfg = M5.Speaker.config(); // Set pins for Atomic Audio Base (ES8311) spk_cfg.pin_bck = 8; // BCLK spk_cfg.pin_ws = 6; // LRCK (WS) spk_cfg.pin_data_out = 5; // DAC (DOUT) spk_cfg.i2s_port = I2S_NUM_0; // Configure for external codec (not internal DAC) spk_cfg.use_dac = false; spk_cfg.sample_rate = 44100; // Apply the configuration M5.Speaker.config(spk_cfg); // 3. Start the speaker M5.Speaker.begin(); // 4. Set volume (0-255) M5.Speaker.setVolume(128); } void loop() { M5.update(); // Play a 1000 Hz tone for 1000 milliseconds (1 second) M5.Speaker.tone(1000, 1000); // Wait for the tone to finish delay(1000); // Small delay before next loop delay(1000); } Is there no way to set up the ES8311 codec without using M5EchoBase? strangely if I run the program below then load the above program the tone works? But I can't stick the M5.Speaker.tone(1000, 1000); command in the program below and have it work. Does anyone know how to play a tone using only the Unified library from an AtomS3R into a Atomic Audio Base (ES8311 codec)? #include <M5Unified.h> #include <M5EchoBase.h> #if defined(CONFIG_IDF_TARGET_ESP32S3) #define RECORD_SIZE (1024 * 400) #elif defined(CONFIG_IDF_TARGET_ESP32) #define RECORD_SIZE (1024 * 400) #endif #if (ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)) M5EchoBase echobase; #else M5EchoBase echobase(I2S_NUM_0); #endif static uint8_t *buffer = nullptr; // Pointer to hold the audio buffer. void setup() { delay(1000); // Delay for a moment to allow the system to stabilize. auto cfg = M5.config(); cfg.serial_baudrate = 115200; M5.begin(cfg); // Initialize the EchoBase with ATOMS3 pinmap. #if defined(CONFIG_IDF_TARGET_ESP32S3) if (!echobase.init(44100 /*Sample Rate*/, 38 /*I2C SDA*/, 39 /*I2C SCL*/, 7 /*I2S DIN*/, 6 /*I2S WS*/, 5 /*I2S DOUT*/, 8 /*I2S BCK*/, Wire) != 0) { Serial.println("Failed to initialize EchoBase!"); while (true) { delay(1000); } } #elif defined(CONFIG_IDF_TARGET_ESP32) // Initialize the EchoBase with ATOM pinmap. if (!echobase.init(44100 /*Sample Rate*/, 25 /*I2C SDA*/, 21 /*I2C SCL*/, 23 /*I2S DIN*/, 19 /*I2S WS*/, 22 /*I2S DOUT*/, 33 /*I2S BCK*/, Wire) != 0) { Serial.println("Failed to initialize EchoBase!"); while (true) { delay(1000); } } #endif echobase.setSpeakerVolume(80); // Set speaker volume to 70%. echobase.setMicGain(ES8311_MIC_GAIN_0DB); // Set microphone gain to 0dB. buffer = (uint8_t *)malloc(RECORD_SIZE); // Allocate memory for the record buffer. // Check if memory allocation was successful. if (buffer == nullptr) { // If memory allocation fails, enter an infinite loop. while (true) { Serial.println("Failed to allocate memory :("); delay(1000); } } Serial.println("EchoBase ready, start recording and playing!"); // M5.Speaker.tone(2000, 2000); // delay(2000); } void loop() { Serial.println("Start recording..."); // Recording echobase.setMute(false); echobase.record(buffer, RECORD_SIZE); // Record audio into buffer. delay(100); Serial.println("Start playing..."); // Playing echobase.setMute(false); delay(10); echobase.play(buffer, RECORD_SIZE); // Play audio from buffer. //M5.Speaker.playRaw(buffer, RECORD_SIZE, 44100, false, 1, 0); delay(100); }
  • For topics on the M5Stack Atom.

    259 Topics
    847 Posts
    R
    Two years ago I set up 6 atom lites with moister sensors for my raised gardens. This year I added another garden. I have download the same program only with different client name and different topic to publish to. I'm using EMQX intergration within Home Assistant as my MQTT server. The Atom Lite logs into the server but is not publishing the topic for some reason. I went back to the old version of UIFlow that was working on the rest of my beds with the same results. I updated to the latest version of EMOX with the same effect. Does anyone have a clue as to what might be going on?
  • coreink UIflow UI element show() API broken

    1
    2
    0 Votes
    1 Posts
    1k Views
    No one has replied
  • M5 Paper SD image display stopped working

    7
    0 Votes
    7 Posts
    7k Views
    ScheduleDisplayS
    Hello, I am facing the same issue and not able to display the images on to the M5 Paper. I have tried both canvas.drawPngFile(SPIFFS, "/smiley.png", 0, 0); and canvas.drawJpgFile(SPIFFS, "/smiley.jpg", 0, 0); but no luck. I already included #include "SPIFFS.h" and initialized SPIFF using M5.begin(true, true, true, true, false);. The png and jpg files are inside the data folder. SPIFFS.open("/smiley.png") is able to open the file however it is not printing any file content on the console. I think it is required to format the SPIFFS for the first time, as mentioned here so I followed these steps but ESP32 Sketch data upload is not appearing in arduino 2.0. However I am able to display the png image using canvas.drawPngUrl("http://imageUrl"); but it is taking more time and quite slow. Could you please help me in understanding what I am doing wrong? @simonm @felmue
  • DoorSignage with M5Paper: how avoid the ghosting

    m5paper
    1
    0 Votes
    1 Posts
    2k Views
    No one has replied
  • Unable to upload form Arduino to Cardputer

    2
    0 Votes
    2 Posts
    2k Views
    teastainT
    see here, yesterday; https://community.m5stack.com/topic/5918/m5cardputer-com-is-reading-it-as-dfrobot-beetle -Terry
  • Core unit blank screen

    6
    0 Votes
    6 Posts
    5k Views
    robskiR
    @ajb2k3 said in Core unit blank screen: Sounds like the screen may have died. You haven't tried to remove the screen have you? https://www.youtube.com/watch?v=OpwpN1lORMo&t=1s I showed how easy it is to damage the cable in the process of repairing a core. I had it open to check for any sign of damage/bad contact but couldn't find anything,
  • ACSSR and Atom Matrix in UIFlow over I2C

    18
    0 Votes
    18 Posts
    11k Views
    ajb2k3A
    Hi, I have the Dial (in UIFLOW2) now talking to the home IOT server now thanks to your help, Just need to sort out some server side issues. I can get the ACSSR to work with the UIFLOW 1 blocks with the core and core2 but the atom just doesn't want to work.
  • RCT M5Atom Lite

    3
    0 Votes
    3 Posts
    2k Views
    felmueF
    Hello @vgamlc no, the M5Atom Lite doesn't have an integrated RTC (RealTimeClock). Please also see here. That said, you can add one using the RTC unit. Thanks Felix
  • Battery for M5Tough

    1
    0 Votes
    1 Posts
    1k Views
    No one has replied
  • M5Paper, SD card stuck

    2
    0 Votes
    2 Posts
    2k Views
    ajb2k3A
    @steve1 The case is normally only held together with clips around the edge. If you use two thin plates, you can open the clips.
  • How to add font to M5CoreInk.h

    1
    0 Votes
    1 Posts
    2k Views
    No one has replied
  • IoT BASE cycles continuously (Core2 stacked on top)

    5
    0 Votes
    5 Posts
    5k Views
    G
    Cool, thanks, @felmue. I might put the modem on/off on a button instead for a bit more control while testing.
  • M5stack paper not showing German characters "äöü"

    m5paper m5stack-paper
    1
    0 Votes
    1 Posts
    3k Views
    No one has replied
  • How long M5stack-paper can sleep for?

    paper m5stack-paper
    11
    0 Votes
    11 Posts
    11k Views
    ScheduleDisplayS
    @felmue Hello Felix. Thank you very much for your help. I get it working using the hour field with some little changes.
  • Configuration Issue With Edukit.

    8
    0 Votes
    8 Posts
    6k Views
    N
    @ajb2k3 Yes , We Have made it for Core2 UIFlow.
  • M5 stack comparison table

    3
    0 Votes
    3 Posts
    6k Views
    C
    Thanks a lot ! It can be completed and it avoids to start from scratch
  • Core2 with PoE Base

    just
    7
    0 Votes
    7 Posts
    6k Views
    P
    Just a heads up I can get this to work if I use M5Unified.h instead of M5Core2.h
  • 0 Votes
    5 Posts
    6k Views
    ScheduleDisplayS
    @felmue I think 4.35v are somehow coming from the charging cable, because as soon as I connect the charging cable the M5.getBatteryVoltage() / 1000.0 giving me 4.35v but if I remove the charging cable then I get the actual battery voltages e.g 3.8v. Is it possible that somehow I can read the actual battery voltages even if the device is connected to the charging cable?
  • Upcoming products?

    10
    3 Votes
    10 Posts
    11k Views
    I
    @gavin67890 that would be nice. I was planning on printing a water resistant case. I'll share the file when done.
  • StickC (Not Plus) reports RoverC not connected.

    1
    0 Votes
    1 Posts
    1k Views
    No one has replied
  • Any update on the M5Paper "v2" or "-S3"?

    1
    1 Votes
    1 Posts
    3k Views
    No one has replied