[SOLVED] mBot Ranger blinking and not accepting code uploads


#1

My mBot ranger has decided to kick the bucket. The motherboard gives me two blinks every half a second, it will not accept any code, and it will not connect properly to mobile devices. And yes, already tried charging the battery (I have the rechargeable), updated it in 5.4.0 and 5.4.3, and tried uploading code. Also resorted to ChatGPT and it recommended this “bootloader flashing tool,” which I don’t have access to (go-figure, stupid ai! NO CONSUMER has access), and it recommended I check the github, which had nothing. Anybody have any ideas?


#2

Can anyone answer within 3 days?


#3

Hi @Rosco, the best thing to do is probably contact support here, which might take a while:
support@makeblock.com

Also try with non-rechargeable batteries and make sure the batteries are fully charged since dead ones will cause similar behavior.

Try unplugging all the motors and sensors, plugging in the main board to your device, and updating the firmware (remove the batteries while connected via USB, you wouldn’t usually do this but for testing purposes try it.)


#4

Alright, I’ve already tried it with non rechargeables, the robot does the same thing, but unplugging the batteries while the USB power is supplied makes it stop blinking, but it will just stand there in its own personal abyss not doing anything when I send code to it.


#5

Also, the accessories are unplugged, and it still won’t work. ChatGPT recommended this bootloader flash thing, which isn’t publicly available.


#6

It might be the app, uploading corrupt firmware to the robot every time I update it. I have a feeling I should try the web version. Already tried Arduino IDE, and that didn’t work. This is my last hope before I scream at Make block for making a faulty product.


#7

Didn’t work. Time to be petty.

(Just kidding lol)


#8

Yeah, let me know what support has to say. :slight_smile:


#9

Emailed them 3 days ago. Still nothing.


#10

Yeah… support said the same thing you did.


#11

@Rosco Send them the link to this forum post and explain what you’ve already tried so they know; otherwise they’re going to naturally start back at the beginning. :slight_smile:


#12

So, they wanted me to send a video. They also wanted me to put in the order info, so there is a chance I may get a new one for FREE!


#13

Nice! Makeblock is usually pretty good about that; I have gotten a free CyberPi before, but then again I have had to purchase replacements…


#14

Yep, they are sending an Auriga board. So this could be possibly solved?


#15

Yes. :slight_smile:


#16

However, I am going to wait until I receive the board to count this solved.


#17

Alright, waiting for the board to arrive. In the meantime, what should I code for it?


#18

I don’t know, it’s up to you :slight_smile:


#19

Since my robot is dead, and waiting for a transplant, can you test out this code for the mbot ranger for me?

#include “MeAuriga.h” // Includes the MeAuriga library which contains functions to control MakeBlock’s Auriga board
#include <Wire.h> // Includes the Wire library for I2C communication
#include <SoftwareSerial.h> // Includes the SoftwareSerial library for serial communication using digital pins

MeEncoderOnBoard motor1(SLOT1); // Motor at slot1 // Creates an instance of the MeEncoderOnBoard class for motor1, connected to slot 1
MeEncoderOnBoard motor2(SLOT2); // Motor at slot2 // Creates an instance of the MeEncoderOnBoard class for motor2, connected to slot 2

MeUltrasonicSensor ultraSensor(PORT_10); // Creates an instance of the MeUltrasonicSensor class for an ultrasonic sensor connected to port 10

MeGyro gyro(0, 0x69); // Creates an instance of the MeGyro class for a gyro sensor, initialized with address 0x69

void setup() {
Serial.begin(9600); // Begin serial communication at 9600 baud
gyro.begin(); // Initialize the gyro sensor
}

void stop() {
motor1.setMotorPwm(0);
motor2.setMotorPwm(0); // Sets the PWM values of both motors to 0, stopping the robot
}

void fwd() {
motor1.setMotorPwm(-120);
motor2.setMotorPwm(120); // Sets the PWM values to move the robot forward
}

void turnRight() {
int currentAngle = gyro.getAngleZ(); // Gets the current Z-axis angle from the gyro sensor
int targetAngle = (int)(currentAngle + 90) % 360; // Calculates the target angle 90 degrees to the right
while (abs(currentAngle - targetAngle) > 5) {
gyro.update(); // Updates the gyro sensor readings
currentAngle = gyro.getAngleZ(); // Gets the updated current Z-axis angle from the gyro sensor
if (targetAngle > currentAngle) {
motor1.setMotorPwm(195);
motor2.setMotorPwm(195); // Sets the PWM values to turn the robot to the right
}
}
stop(); // Stops the robot after completing the turn
gyro.begin(); // Reinitializes the gyro sensor
}

void turnLeft() {
int currentAngle = gyro.getAngleZ(); // Gets the current Z-axis angle from the gyro sensor
int targetAngle = (int)(currentAngle - 90) % 360; // Calculates the target angle 90 degrees to the left
while (abs(currentAngle - targetAngle) > 5) {
gyro.update(); // Updates the gyro sensor readings
currentAngle = gyro.getAngleZ(); // Gets the updated current Z-axis angle from the gyro sensor
if (targetAngle < currentAngle) {
motor1.setMotorPwm(-195);
motor2.setMotorPwm(-195);// Sets the PWM values to turn the robot to the left
}
}
stop(); // Stops the robot after completing the turn
gyro.begin(); // Reinitializes the gyro sensor
}

void turnAround() {
gyro.begin(); // Initializes the gyro sensor
turnRight(); // Turns the robot to the right by 90 degrees
delay(500); // Short delay to ensure the turn completes
turnRight(); // Turns the robot to the right by another 90 degrees to complete a 180-degree turn
}


#20

Sorry if it is confusing, I got it from a github lol