I completely agree. M5stack is a wonderful product but lack of support and documentation is the issue.
Best posts made by hetzer
-
RE: Lack of support
-
RE: How to read Standard RC signal
Hope it supports in the future. I need a similar function to read sbus signal.
Latest posts made by hetzer
-
RE: Lack of support
I completely agree. M5stack is a wonderful product but lack of support and documentation is the issue.
-
Slow UART
I am working on a tracked platform project where the the servos are controlled by imu of m5stackfire and sbus signal received from an RC receiver. My coding skills are limited so I am using and esp32 to read the sbus signal and transmit it to m5stack fire which I program using uiflow.
My problem is that the reading speed of m5stack fire is very slow and it is loosing synchronization with the ESP32 and crashing the program. I tried different baud rates and different amount of delay and best I could have is 50microseconds delay on the ESP32 side. With this setup m5stack reads the signals with a huge delay and the correction comes late failing making it impossible to control the servos and motor controllers. ESP32 to computer and ESP32 to Arduino works flawlessly but I could not find a solution for m5stack fire with uiflow.
I am adding the codes of both ESP32 and the Uiflow. Any help will be greatly appreciated as I am getting frustrated.![alt text]( image url)
-
RE: How to read Standard RC signal
Hope you still consider adding sbus blocks to uiflow. It would be very useful with all the servo controller units available for m5stack products.
-
Compass Data from M5stack Fire
I have the M5Stack fire (Version:2018.2A) but having difficulties in getting magnometer data.
Previously uiflow had the block get Z but it is removed at a later stage.
I tried below Arduino code but readings are incorrect.
Could anyone assist?#include <M5Stack.h>
#include "utility/MPU9250.h"MPU9250 IMU;
void setup()
{
M5.begin();
Wire.begin();IMU.calibrateMPU9250(IMU.gyroBias, IMU.accelBias);
IMU.initMPU9250();
IMU.initAK8963(IMU.magCalibration);
}void loop()
{
// If intPin goes high, all data registers have new data
// On interrupt, check if data ready interrupt
if (IMU.readByte(MPU9250_ADDRESS, INT_STATUS) & 0x01)
{
IMU.readAccelData(IMU.accelCount);
IMU.getAres();IMU.ax = (float)IMU.accelCount[0] * IMU.aRes; // - accelBias[0]; IMU.ay = (float)IMU.accelCount[1] * IMU.aRes; // - accelBias[1]; IMU.az = (float)IMU.accelCount[2] * IMU.aRes; // - accelBias[2]; IMU.readGyroData(IMU.gyroCount); // Read the x/y/z adc values IMU.getGres(); // Calculate the gyro value into actual degrees per second // This depends on scale being set IMU.gx = (float)IMU.gyroCount[0] * IMU.gRes; IMU.gy = (float)IMU.gyroCount[1] * IMU.gRes; IMU.gz = (float)IMU.gyroCount[2] * IMU.gRes; IMU.readMagData(IMU.magCount); // Read the x/y/z adc values IMU.getMres(); // User environmental x-axis correction in milliGauss, should be // automatically calculated //IMU.magbias[0] = +470.; // User environmental x-axis correction in milliGauss TODO axis?? //IMU.magbias[1] = +120.; // User environmental x-axis correction in milliGauss //IMU.magbias[2] = +125.; // Calculate the magnetometer values in milliGauss // Include factory calibration per data sheet and user environmental // corrections // Get actual magnetometer value, this depends on scale being set IMU.mx = (float)IMU.magCount[0] * IMU.mRes * IMU.magCalibration[0] - IMU.magbias[0]; IMU.my = (float)IMU.magCount[1] * IMU.mRes * IMU.magCalibration[1] - IMU.magbias[1]; IMU.mz = (float)IMU.magCount[2] * IMU.mRes * IMU.magCalibration[2] - IMU.magbias[2]; int x=64+10; int y=128+20; int z=192+30; M5.Lcd.fillScreen(BLACK); M5.Lcd.setTextColor(GREEN , BLACK); M5.Lcd.setTextSize(2); M5.Lcd.setCursor(0, 0); M5.Lcd.print("MPU9250/AK8963"); M5.Lcd.setCursor(0, 32); M5.Lcd.print("x"); M5.Lcd.setCursor(x, 32); M5.Lcd.print("y"); M5.Lcd.setCursor(y, 32); M5.Lcd.print("z"); M5.Lcd.setCursor(0, 64 * 2); M5.Lcd.print((int)(IMU.gx)); M5.Lcd.setCursor(x, 64 * 2); M5.Lcd.print((int)(IMU.gy)); M5.Lcd.setCursor(y, 64 * 2); M5.Lcd.print((int)(IMU.gz)); M5.Lcd.setCursor(z, 64 * 2); M5.Lcd.print("o/s"); M5.Lcd.setCursor(0, 80 * 2); M5.Lcd.print((int)(IMU.mx)); M5.Lcd.setCursor(x, 80 * 2); M5.Lcd.print((int)(IMU.my)); M5.Lcd.setCursor(y, 80 * 2); M5.Lcd.print((int)(IMU.mz)); M5.Lcd.setCursor(z, 80 * 2); M5.Lcd.print("mG"); float headingRadians = atan2((IMU.my), (IMU.mx)); float headingDegrees = headingRadians * 180 / PI;
if (headingDegrees < 0) {
headingDegrees += 360;
}
M5.Lcd.setTextColor(YELLOW , BLACK);
M5.Lcd.setCursor(0, 48 * 2); M5.Lcd.print(headingDegrees);delay(100);
}
}
-
Serial Coms issue with jetson nano
I would like to use some servos based on the object detection coordinates coming from jetson nano through USB.
Somehow coordinates are being updated later and later as the time passes.
I have added the simple test code.( image url) -
issue with lego+ aka DC Motor module
I cant make lego+ aka dc motor module.
It gives error" moduel' object has no attribute Legoboard.
Can anyone assist? -
Uiflow and loramodule
Do the blocks in uiflow also support lora modue? https://m5stack.com/collections/m5-module/products/lora-module I always get an error loranwan not connect.
-
RE: M5STICK OLED cant turn on
Just to confirm. I am using M5stick OLED, not M5stickC. Does latest firmware also work with M5stick OLED?
-
RE: M5STICK OLED cant turn on
I erased the firmware a couple of times and managed to have it working with firmware version 1.2.3. Other versions did not work. Am I doing sth wrong or m5strick oled is only working with version 1.2.3
I am using windows 10 and uiflow. -
M5STICK OLED cant turn on
My M5stick C arrived. Plugged the USB and saw led blinking. Updated the firmware via m5burner and now cant switch it on. Led also does not blink. m5 burner and arduino can detect it. I can upload the code. but screen is off. Can anyone help?