🤖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?
  • Sleep but leave display on ?

    4
    0 Votes
    4 Posts
    10k Views
    felmueF
    Hello all or try this. Thanks Felix
  • This topic is deleted!

    1
    0 Votes
    1 Posts
    168 Views
    No one has replied
  • m5paper charging issues?

    5
    0 Votes
    5 Posts
    10k Views
    felmueF
    Hello again Update: in the above experiment my M5Paper successfully came out of deep sleep for the last time at about 3.31V (multimeter value) / 3.284 (ADC value). Next time I checked it died during boot. Thanks Felix
  • COLOR_TCS3472 on Atom Lite cannot find sensor

    2
    0 Votes
    2 Posts
    3k Views
    felmueF
    Hello @Alban_T the sketch you linked is for M5Stack devices. M5Atom Lite is a bit different. For instance: I assume you modified #include <M5Stack.h> to #include <M5Atom.h>. did you also adapt the M5.begin() call to enable I2C? E.g. M5.begin(true, true, true) - the second true enables I2C on Atom Lite. is your sensor connected to the proper GPIOs? E.g. SDL - GPIO25 and SCL - GPIO21. excerpt from M5Atom.cpp as reference: void M5Atom::begin(bool SerialEnable , bool I2CEnable , bool DisplayEnable ) { if( _isInited ) return; _isInited = true; if( I2CEnable ) { Wire.begin(25,21,10000); } Hope this helps. If not, feel free to post the full sketch. Good luck. Felix
  • M5Paper Canvas Rendering Artifacts

    2
    0 Votes
    2 Posts
    5k Views
    M
    My question is, if the behavior is required or an artifact of the integration with the driver? I think this is required. When actually transferring data to the screen, this is done 4 pixels at a time. Shouldn't the library simply forbid creating a canvas that is not a multiple of 4? Probably, yes.
  • Proto Module could be more useful

    4
    0 Votes
    4 Posts
    10k Views
    Z
    Fully agree on this one. Having access to the bus signal would be a minimum.
  • Is Wifi Direct available for any of the M5Stack esp32 devices?

    4
    0 Votes
    4 Posts
    7k Views
    world101W
    @kees Blynk works well for controlling devices with smartphones. Just an option for you.
  • "Error 22 bat val error"

    7
    0 Votes
    7 Posts
    10k Views
    T
    @zontex Thank You So Much.
  • M5Paper unique device identifier?

    4
    0 Votes
    4 Posts
    6k Views
    G
    Here is a solution to create an unique identifier that is based on the device's MAC address (but is not easy to guess and is not the MAC address itself): /** Returns a hashed uint64_t */ uint64_t getHashedInt64(uint64_t u) { uint64_t v = u * 3935559000370003845 + 2691343689449507681; v ^= v >> 21; v ^= v << 37; v ^= v >> 4; v *= 4768777513237032717; v ^= v << 20; v ^= v >> 41; v ^= v << 5; return v; } /** Return a device unique identifier based on device's mac address, eg. 6C4080B51A5D3659 */ String getUniqueId() { uint64_t mac = ESP.getEfuseMac(); uint64_t hash = getHashedInt64(mac); uint32_t msb = hash >> 32; uint32_t lsb = hash & 0xFFFFFFFF; char unique_id[20]; sprintf(unique_id, "%08X%08X", msb, lsb); return String(unique_id); } Calling: getUniqueId() returns something like 6C4080B51A5D3659
  • CardKB powered by 3.3V not working?

    2
    0 Votes
    2 Posts
    3k Views
    ZontexZ
    @hillsh_vi hello, do you mean you power the CardKB using 3.3V? it might be the reason as the requirement is 5V. what you can do is power it by 5V and then downstep to 3.3V for the FPGA.
  • why stepper motor driver module suitable for Atom Lite only

    3
    0 Votes
    3 Posts
    6k Views
    felmueF
    Hi guys if you look closely you'll find that the schematics for M5Atom Matrix and M5Atom Lite are not completely the same. Apart from the RGB LEDs (25 vs 1) only the M5Atom Matrix has an MPU6886 internally which is controlled via I2C using GPIO21 and GPIO22. However with the ATOM Stepper Motor Driver GPIO21 and GPIO22 are used for RST (Reset) and EN (Enable). Therefore only M5Atom Lite can be used to control the ATOM Stepper Motor Driver. Thanks Felix
  • M5Paper sd card issues

    5
    0 Votes
    5 Posts
    10k Views
    sambartleS
    @yellowelise You have to do / when referencing the root in Arduino SD libraries.. I've modified your example to output to the screen instead of serial and fixed it for you.. (I left the syntactically redundant exists, try create anyways, exists code in as that's what the original example did, it probably needs another if) #include <M5EPD.h> M5EPD_Canvas canvas(&M5.EPD); File myFile; void setup(void) { M5.begin(); M5.EPD.SetRotation(90); M5.EPD.Clear(true); M5.RTC.begin(); canvas.createCanvas(540, 400); canvas.setTextSize(3); bool ret = SD.begin(4, SPI, 20000000); if(ret == false) canvas.drawString("SD ERROR...", 45, 100); else { canvas.drawString("SD OK...", 45, 100); if (SD.exists("/screen.txt")) canvas.drawString("Screen.txt Exists...", 45, 150); else canvas.drawString("Screen.txt Not Exists...", 45, 150); canvas.drawString("Try create Screen.txt", 45, 200); myFile = SD.open("/screen.txt", FILE_WRITE); myFile.println("Some text..."); myFile.close(); if (SD.exists("/screen.txt")) canvas.drawString("Screen.txt Exists...", 45, 250); else canvas.drawString("Screen.txt Still Not Exists...", 45, 250); } canvas.pushCanvas(0,0,UPDATE_MODE_DU4); } void loop(void) { }
  • M5 paper GSM module

    1
    0 Votes
    1 Posts
    3k Views
    No one has replied
  • M5Paper internal LiPO battery discharge data

    1
    0 Votes
    1 Posts
    3k Views
    No one has replied
  • machine learning v-training

    unitv v-training
    1
    0 Votes
    1 Posts
    5k Views
    No one has replied
  • Constantly increasing magnetometer reading

    2
    0 Votes
    2 Posts
    5k Views
    C
    @butch Did you ever figure this out? I am having the same issue. ChristopherO
  • Remote Control of BALA2?

    1
    0 Votes
    1 Posts
    3k Views
    No one has replied
  • M5Paper and M5Burner fails

    1
    1
    0 Votes
    1 Posts
    3k Views
    No one has replied
  • Retain WLAN config

    1
    0 Votes
    1 Posts
    3k Views
    No one has replied
  • M5Paper and WLAN

    2
    0 Votes
    2 Posts
    6k Views
    SkinkS
    have now checked it with the second M5Paper but this can also log on to the WLAN and also syncronize. But just the first time, then I am also with this an active connection on the M5Paper displayed but in the WLAN of the router but he is grayed out (so no longer connected) and a second syncronisieren fails!