I am trying to do this but I do not know what GPIO pins are used for this. If if try to use the pins shown on the schematic (RX26,TX34) the Serial2.begin instruction crashes. I am using the CORE2 AWS CPU.
Thanks
Kurt
I am trying to do this but I do not know what GPIO pins are used for this. If if try to use the pins shown on the schematic (RX26,TX34) the Serial2.begin instruction crashes. I am using the CORE2 AWS CPU.
Thanks
Kurt
Created a new sketch directory and added libraries one by one and as soon it makes it to the linker it has this same error.
I am compiling a project that was hosted on the CORE device on the AtomS3 and I am getting this error
In member function 'void M5AtomS3::begin(bool, bool, bool, bool)': 'USBSerial' was not declared in this scope.
Thanks
Kurt
My M5STACK CORE started behaving like this. It seems if I hit the power button just after the Arduino IDE starts the "connecting..." dialog then it will upload. This is kind of a pain because the device is in another building and I am remoted in.
Any Ideas?
What are the various defined values that identify the various M5STACK controllers. I would like to automatically change the SDL,SCK.
Yes. That looks to be the case that it crashed after one or two Wire1 commands. Usually one period is printed but sometimes two. Also the internal I2C does not work is I call M5.begin but it does if I just call Wire.begin.
Felix
Yes. I just tried that. I get the same behavior. I moved the script to a new Windows computer and installed the IDE there. I get
13:10:21.290 -> I2C Scan - Port A
13:10:21.290 -> .M5EPD initializing...OK
13:10:25.790 -> I2C Scan - Port A
I can actually scan the internal ports correctly if I don't call M5.begin(); and I just do a Serial.begin() and the wire commands.
BTW the boards.txt has an error in it for the M5-Paper and you cannot upload code from the Arduino IDE. I fixed that and I can upload ok now.
Kurt
Felix
Thanks for the code . For scanning the I2C. The code produces the following output:
M5EPD initializing...OK
I2C Scan - internal
.M5EPD initializing...OK
I2C Scan - internal
.M5EPD initializing...OK
I2C Scan - internal
.M5EPD initializing...OK
Yes. I tested the very code you have here with just to include and M5.begin() and I get M5EPD initializing... followed by a 4 second pause and then the OK
If I comment out the internal I2C section so I only have the PORT-A scan I get the following:
Scanning external I2C (PortA)
..............................................................................................................................Done Scanning PortA I2C
It takes about one second for each address scanned. This is probably the default timeout.
Kurt
Thanks. I'll try that. When I call M5.begin(); I get the following behavior.
M5EPD initializing...OK
M5EPD initializing...OK
M5EPD initializing...OK
M5EPD initializing...OK
M5EPD initializing...OK
M5EPD initializing...OK
M5EPD initializing...OK
M5EPD initializing...OK
M5EPD initializing...OK
M5EPD initializing...OK
M5EPD initializing...OK
M5EPD initializing...OK
M5EPD initializing...OK
M5EPD initializing...OK
M5EPD initializing...OK
M5EPD initializing...OK
M5EPD initializing...OK
continues forever.
I am trying to use the Paper and I can't get any of the ports to work. The code I am using in below. One strange thing in this code is if I comment out M5.begin() I see the internal i2C devices but if I include it I don't see any devices.
#include <M5EPD.h>
// I2C (internal) - SDA: 21, SCL: 22
// I2C (external - Port A) - SDA: 25, SCL: 32
#define PortA_SDA 25 // Port A
#define PortA_SCL 32
#define PortB_SDA 26 // Port B
#define PortB_SCL 33
#define PortC_SDA 18 // Port C
#define PortC_SCL 19
#define INTERNAL_SDA 21
#define INTERNAL_SCL 22
void setup()
{
// M5.begin();
Serial.begin(115200);
Wire.begin(INTERNAL_SDA, INTERNAL_SCL);
}
void loop()
{
int address;
int error;
/********** Internal ********/
Serial.println("Scanning internal I2C");
for(address = 1; address < 127; address++)
{
Wire.beginTransmission(address);
error = Wire.endTransmission();
if(error == 0)
{
Serial.printf("Internal Device Found %#04x\n",address);
}
delay(10);
}
Serial.println("Done Scanning internal I2C");
delay(500);
/********** PortA ********/
Serial.println("Scanning external I2C (PortA)");
Wire1.begin(PortA_SDA, PortA_SCL);
for(address = 1; address < 127; address++)
{
Wire1.beginTransmission(address);
error = Wire1.endTransmission();
if(error == 0)
{
Serial.printf("PORT-A Device Found %#04x\n",address);
} else Serial.print("."); //Serial.printf("No Device Found PORT-A %#04x\n",address);
delay(10);
}
Serial.println("Done Scanning PortA I2C");
delay(500);
/********** PortB ********/
Serial.println("Scanning external I2C (PortB)");
// M5.begin();
Wire1.begin(PortB_SDA, PortB_SCL);
for(address = 1; address < 127; address++)
{
Wire1.beginTransmission(address);
error = Wire1.endTransmission();
if(error == 0)
{
Serial.printf("PORT-B Device Found %#04x\n",address);
} else Serial.print("."); //Serial.printf("No Device Found PORT-B %#04x\n",address);
delay(10);
}
Serial.println("Done Scanning PortB I2C");
delay(500);
/********** PortC ********/
Serial.println("Scanning external I2C (PortC)");
// M5.begin();
Wire1.begin(PortC_SDA, PortC_SCL);
for(address = 1; address < 127; address++)
{
Wire1.beginTransmission(address);
error = Wire1.endTransmission();
if(error == 0)
{
Serial.printf("PORT-C Device Found %#04x\n",address);
} else Serial.print("."); //Serial.printf("No Device Found PORT-C %#04x\n",address);
delay(10);
}
delay(5000);
}
I would not know where to set that is but since the same error occurs in the Windows version of the IDE I am thinking that it isn't a problem with the MAC. Also this only fails with the Paper device if I select the Core 2 I can program the Paper just fine however the external I2C doesn't work so IDK if this is because I said the Paper was a Core 2 or not.
Thanks. I did this and also dug out an old windows laptop running Arduino 1.8.19. I downloaded the M5Stack boards file using https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json and then installed the M5STACK libraries and the M5EPD library from GitHub. This setup gives the very same error.
Your are correct. I have a Mac running Monterey 12.3.1. python --version returns 2.7.14. Xcode is 13.4.1
I am having problems with the IDE 2.0 uploading to a M5STACK Paper. I researched this error and found one fix. The first fix said to download the Nightly Build so I did.
The error is:
esptool write_flash: error: argument : Address "{upload.erase_cmd}" must be a number
I have a problem with the I2C version of the Ultrasonic distance measuring unit. If I connect it together with the MLX90640 Thermal Camera Unit the Camera data is corrupted. If I load and run the Demo and only connect the Ultrasonic distance measuring unit every other sample has the distance 4500mm. If I use this code it works fine in the demo but still corrupts the Thermal camera
uint32_t data;
Wire.beginTransmission(0x57); // Transfer data to 0x57.
Wire.write(0x01);
Wire.endTransmission(); // Stop data transmission with the Ultrasonic Unit.
delay(120);
Wire.requestFrom(0x57,3); // Request 3 bytes from Ultrasonic Unit.
data = Wire.read();data <<= 8;
data |= Wire.read();data <<= 8;
data |= Wire.read();
Why doesn't this code work. It used to work fine. Any attempt to set the rate to 9600 hangs no matter where the Serial.begin is placed in the code it runs fine until it hits the Serial.begin();
#include <M5Stack.h>
void setup() {
M5.begin();
Serial.begin(9600);
while (true) {Serial.println("works");}
}
void loop() {
}
The result I get with debug verbose and 115200 baud on the Serial Monitor is
[D][esp32-hal-psram.c:47] psramInit(): PSRAM enabled
09:24:43.911 -> M5Stack initializing...O⸮
Then nothing