An Electric Scooter Community on a Mission to Stamp out Transportation Mediocrity.

Changing mobility one trip at a time.
#52829
MrSpriggs1 wrote:
Fri Dec 06, 2019 10:37 pm
Well, I see my mistake Im working with an Adafruit feather M0 not a Nano. You might want to remove the one from Serial1. Here is a correction below. Im not going to make any promises but hopefully it might help. You might have to get a logic analyzer and hook up to the GPS
electricool wrote:
Fri Dec 06, 2019 7:34 pm
MrSpriggs1 wrote:
Fri Dec 06, 2019 5:29 pm
So after a bunch of time painting my new pretty scooter.
I found out you only need these 5 hex numbers to make it light up and go. Now how do you go fast?
Code: Select all
#include <Arduino.h>

int powerPin = 5;
byte messageA[] = {0xA6, 0x12, 0x02, 0x10, 0x14, 0xCF};
byte messageB[] = {0xA6, 0x12, 0x02, 0x11, 0x14, 0x0B};
byte messageC[] = {0xA6, 0x12, 0x02, 0x15, 0x14, 0x30};

void setup() {
  // initialize Serial:
  Serial.begin(9600);

  pinMode(powerPin, OUTPUT);
  digitalWrite(powerPin, HIGH);

}

void loop() {
  delay(500);
  Serial.write(messageC, sizeof(messageC));
}
hello and thank you for sharing the result of your work, I wanted to know on which ESC you used this code, I have a ESC100 of the company bird but it does not work on

thank you and good luck
heloo this code work for bird zero 2 min and scooter off please help
#52919
I have an Older bird zero that the code below works on is there anyone who can help me set it up for a NodeMCU or a ESP 32-U like how MrSpriggs1 did so I don't need touch or switch.





#include <Arduino.h>

int powerPin = 5;
byte messageA[] = {0xA6, 0x12, 0x02, 0x10, 0x14, 0xCF};
byte messageB[] = {0xA6, 0x12, 0x02, 0x11, 0x14, 0x0B};
byte messageC[] = {0xA6, 0x12, 0x02, 0X05, 0x14, 0xDC};

void setup() {
// initialize Serial:
Serial.begin(9600);

pinMode(powerPin, OUTPUT);
digitalWrite(powerPin, HIGH);

}

void loop() {
delay(500);
Serial.write(messageC, sizeof(messageC));
}
#52927
lexfire wrote:
Sat May 01, 2021 3:39 pm
Hello sir @Gothicgeek502 ,

Get an arduino nano, a button to switch off or on the arduino & a DC-DC converter :mrgreen:

Arduino link : https://www.amazon.com/ELEGOO-Arduino-A ... NrPXRydWU=
Button : https://www.amazon.fr/Aussel-Broches-Po ... FRGL&psc=1
Converter : https://www.amazon.com/dp/B08JCXXVJY/re ... ljaz10cnVl
I was trying to not need a switch/button/touch, I have it running on a nano I just want to use my phone to turn it on.
#52929
couple of general notes I have found etc:
if you want to turn it off and on via your phone, you need an esp32 based Bluetooth chip, not a Nano. different setup, but similar.
the Zener diode setup discussed earlier, as described/wired (as I understand it, and as I tested), does not step down voltage. The problem is the voltage regulators most people are using are 40v and lower and the scooter fully charged can be 42v. In my case I had found it could take 42v and work, but likely result in premature failure of regulator. If you take a Zener diode and wire it on the +42 line with black mark to the +42, it will do nothing, NOT knock off 15v as people have suggested. if you were to put a resistor before it and have Zener go to the -/ground line then across the Zener you would have 15v, so a crude regulator before the main regulator, but that is not how people have described it. Or you could put Zener in "backwards" (black to regulator) and you lose 0.7v. put 3 in a series and you get 42v to about 40v. Not sure how much heat etc that might cause, but that's what I am doing. There are other ways to do this of course.
BMS shock/ temporary killing of scooter. I have found that whether it is 42v or 40v hot stabbing the regulator into the line will sometimes (maybe 1 out of 10?) kill the scooter for a day or 2. I'm guessing a bad high resistance connection caused BMS to shut down and only reset after some time. connecting two wires by hand badly during testing can cause this to happen more often (ask me how I know) which makes me think you are better off putting switch between the nano and the regulator. downside, regulator is always powered up. upside, if you don't "shock" it into shutdown upon you initial hookup, it will always be connected from then on, and you won't have to wait a day to get your scooter back. turning on or off 19mw Nano probably should not cause this problem. (I have not wired it this way, but I plan to make a change to my setup today) This is all for JUMP ES200 models. Hope this helps.
#52931
Hello sir @Gothicgeek502 ,

i didn't read all your last message xd.

Well, that's easy as well ... I did it on Jump Scooter ! Here is the code ( based on VOI SCOOTER CODE ),
Code: Select all
/*  
   This source code of graphical user interface 
   has been generated automatically by RemoteXY editor.
   To compile this code using RemoteXY library 2.4.3 or later version 
   download by link 
HTTP
://
REMOTEXY
.
COM
/
EN
/
LIBRARY
/

   To connect using RemoteXY mobile app by link 
HTTP
://
REMOTEXY
.
COM
/
EN
/
DOWNLOAD
/
                   
     - for ANDROID 4.5.1 or later version;
     - for iOS 1.4.1 or later version;
    
   This source code is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.    
*/

//////////////////////////////////////////////
//        RemoteXY include library          //
//////////////////////////////////////////////

// RemoteXY select connection mode and include library 
#define REMOTEXY_MODE__ESP32CORE_BLE

#include <RemoteXY.h>
#include <Arduino.h>

// RemoteXY connection settings 
#define REMOTEXY_BLUETOOTH_NAME "Scooter Controller V3"
//#define REMOTEXY_ACCESS_PASSWORD "password" //not working


// RemoteXY configurate  
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
  { 255,4,0,0,0,151,0,10,52,1,
  2,1,12,22,39,7,52,8,31,31,
  80,111,119,101,114,0,83,104,117,116,
  32,100,111,119,110,0,2,1,12,34,
  39,7,52,8,31,31,70,97,115,116,
  32,115,112,101,101,100,0,83,108,111,
  119,32,83,112,101,101,100,0,129,0,
  7,4,49,6,16,86,79,73,32,67,
  111,110,116,114,111,108,108,101,114,32,
  86,51,0,2,1,12,46,39,7,52,
  8,31,31,76,105,103,104,116,115,32,
  111,110,0,76,105,103,104,116,115,32,
  111,102,102,0,2,1,12,58,39,7,
  52,8,31,31,80,111,119,101,114,32,
  86,79,73,0,83,104,117,116,32,100,
  111,119,110,32,86,79,73,0 };
  
// this structure defines all the variables and events of your control interface 
struct {

    // input variables
  uint8_t switch_power; // =1 if switch ON and =0 if OFF 
  uint8_t switch_fastspeed; // =1 if switch ON and =0 if OFF 
  uint8_t switch_light; // =1 if switch ON and =0 if OFF 
  uint8_t switch_powervoi; // =1 if switch ON and =0 if OFF 

    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0 

} RemoteXY;
#pragma pack(pop)

////////////////////////////////////////////
//         Scooter Command include        //
///////////////////////////////////////////

byte slowvoi[] = {0xA6, 0x12, 0x02, 0x65, 0x14, 0x86}; // REPLACE BY YOURS
byte slow1[] = {0xA6, 0x12, 0x02, 0XF1, 0x14, 0x7E}; // REPLACE BY YOURS
byte slow2[] = {0xA6, 0x12, 0x02, 0XF5, 0x14, 0x45}; // REPLACE BY YOURS

byte fastvoi[] = {0xA6, 0x12, 0x02, 0x35, 0xFF, 0x38}; // REPLACE BY YOURS
byte fast1[] = {0xA6, 0x12, 0x02, 0XF1, 0xE4, 0x0A}; // REPLACE BY YOURS
byte fast2[] = {0xA6, 0x12, 0x02, 0XF5, 0xE4, 0x31}; // REPLACE BY YOURS

byte off[] = {0xA6, 0x12, 0x02, 0x00, 0xFF, 0xEA}; //Off

void setup()
{
  RemoteXY_Init ();

  Serial.begin(9600);
}

void loop()
{
  RemoteXY_Handler ();
  if((RemoteXY.switch_power == 1) && (RemoteXY.switch_fastspeed == 0) && (RemoteXY.switch_light == 0)) //light off + slow
  {
      Serial.write(slow1, sizeof(slow1));    
  }
  else if((RemoteXY.switch_power == 1) && (RemoteXY.switch_fastspeed) == 0 && (RemoteXY.switch_light == 1)) //light on + slow
  {
      Serial.write(slow2, sizeof(slow2));    
  }
  else if((RemoteXY.switch_power == 1) && (RemoteXY.switch_fastspeed) == 1 && (RemoteXY.switch_light == 0)) //light off + fast
  {
      Serial.write(fast1, sizeof(fast1));
  }
  else if((RemoteXY.switch_power == 1) && (RemoteXY.switch_fastspeed) == 1 && (RemoteXY.switch_light == 1)) //light on + fast
  {
      Serial.write(fast2, sizeof(fast2));
  }
  else if((RemoteXY.switch_power == 1) && (RemoteXY.switch_fastspeed) == 0 && (RemoteXY.switch_powervoi == 1)) //voi slow + light???
  {
      Serial.write(slowvoi, sizeof(slowvoi));
  }
  else if((RemoteXY.switch_power == 1) && (RemoteXY.switch_fastspeed) == 1 && (RemoteXY.switch_powervoi == 1)) //voi fast + light???
  {
      Serial.write(fastvoi, sizeof(fastvoi));
  }
      else
  {
      Serial.write(off, sizeof(off));     
  }
  delay(200);
}
Your just gonna have to replace scooter command include by yours & everything gonna work with BLE on your phone. :mrgreen:

And get this ESP 32 https://www.amazon.com/HiLetgo-ESP-WROO ... s9dHJ1ZQ==
#52936
lexfire wrote:
Mon May 03, 2021 3:37 am
Hello sir @Gothicgeek502 ,

i didn't read all your last message xd.

Well, that's easy as well ... I did it on Jump Scooter ! Here is the code ( based on VOI SCOOTER CODE ),
Code: Select all
/*  
   This source code of graphical user interface 
   has been generated automatically by RemoteXY editor.
   To compile this code using RemoteXY library 2.4.3 or later version 
   download by link 
HTTP
://
REMOTEXY
.
COM
/
EN
/
LIBRARY
/

   To connect using RemoteXY mobile app by link 
HTTP
://
REMOTEXY
.
COM
/
EN
/
DOWNLOAD
/
                   
     - for ANDROID 4.5.1 or later version;
     - for iOS 1.4.1 or later version;
    
   This source code is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.    
*/

//////////////////////////////////////////////
//        RemoteXY include library          //
//////////////////////////////////////////////

// RemoteXY select connection mode and include library 
#define REMOTEXY_MODE__ESP32CORE_BLE

#include <RemoteXY.h>
#include <Arduino.h>

// RemoteXY connection settings 
#define REMOTEXY_BLUETOOTH_NAME "Scooter Controller V3"
//#define REMOTEXY_ACCESS_PASSWORD "password" //not working


// RemoteXY configurate  
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
  { 255,4,0,0,0,151,0,10,52,1,
  2,1,12,22,39,7,52,8,31,31,
  80,111,119,101,114,0,83,104,117,116,
  32,100,111,119,110,0,2,1,12,34,
  39,7,52,8,31,31,70,97,115,116,
  32,115,112,101,101,100,0,83,108,111,
  119,32,83,112,101,101,100,0,129,0,
  7,4,49,6,16,86,79,73,32,67,
  111,110,116,114,111,108,108,101,114,32,
  86,51,0,2,1,12,46,39,7,52,
  8,31,31,76,105,103,104,116,115,32,
  111,110,0,76,105,103,104,116,115,32,
  111,102,102,0,2,1,12,58,39,7,
  52,8,31,31,80,111,119,101,114,32,
  86,79,73,0,83,104,117,116,32,100,
  111,119,110,32,86,79,73,0 };
  
// this structure defines all the variables and events of your control interface 
struct {

    // input variables
  uint8_t switch_power; // =1 if switch ON and =0 if OFF 
  uint8_t switch_fastspeed; // =1 if switch ON and =0 if OFF 
  uint8_t switch_light; // =1 if switch ON and =0 if OFF 
  uint8_t switch_powervoi; // =1 if switch ON and =0 if OFF 

    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0 

} RemoteXY;
#pragma pack(pop)

////////////////////////////////////////////
//         Scooter Command include        //
///////////////////////////////////////////

byte slowvoi[] = {0xA6, 0x12, 0x02, 0x65, 0x14, 0x86}; // REPLACE BY YOURS
byte slow1[] = {0xA6, 0x12, 0x02, 0XF1, 0x14, 0x7E}; // REPLACE BY YOURS
byte slow2[] = {0xA6, 0x12, 0x02, 0XF5, 0x14, 0x45}; // REPLACE BY YOURS

byte fastvoi[] = {0xA6, 0x12, 0x02, 0x35, 0xFF, 0x38}; // REPLACE BY YOURS
byte fast1[] = {0xA6, 0x12, 0x02, 0XF1, 0xE4, 0x0A}; // REPLACE BY YOURS
byte fast2[] = {0xA6, 0x12, 0x02, 0XF5, 0xE4, 0x31}; // REPLACE BY YOURS

byte off[] = {0xA6, 0x12, 0x02, 0x00, 0xFF, 0xEA}; //Off

void setup()
{
  RemoteXY_Init ();

  Serial.begin(9600);
}

void loop()
{
  RemoteXY_Handler ();
  if((RemoteXY.switch_power == 1) && (RemoteXY.switch_fastspeed == 0) && (RemoteXY.switch_light == 0)) //light off + slow
  {
      Serial.write(slow1, sizeof(slow1));    
  }
  else if((RemoteXY.switch_power == 1) && (RemoteXY.switch_fastspeed) == 0 && (RemoteXY.switch_light == 1)) //light on + slow
  {
      Serial.write(slow2, sizeof(slow2));    
  }
  else if((RemoteXY.switch_power == 1) && (RemoteXY.switch_fastspeed) == 1 && (RemoteXY.switch_light == 0)) //light off + fast
  {
      Serial.write(fast1, sizeof(fast1));
  }
  else if((RemoteXY.switch_power == 1) && (RemoteXY.switch_fastspeed) == 1 && (RemoteXY.switch_light == 1)) //light on + fast
  {
      Serial.write(fast2, sizeof(fast2));
  }
  else if((RemoteXY.switch_power == 1) && (RemoteXY.switch_fastspeed) == 0 && (RemoteXY.switch_powervoi == 1)) //voi slow + light???
  {
      Serial.write(slowvoi, sizeof(slowvoi));
  }
  else if((RemoteXY.switch_power == 1) && (RemoteXY.switch_fastspeed) == 1 && (RemoteXY.switch_powervoi == 1)) //voi fast + light???
  {
      Serial.write(fastvoi, sizeof(fastvoi));
  }
      else
  {
      Serial.write(off, sizeof(off));     
  }
  delay(200);
}
Your just gonna have to replace scooter command include by yours & everything gonna work with BLE on your phone. :mrgreen:

And get this ESP 32 https://www.amazon.com/HiLetgo-ESP-WROO ... s9dHJ1ZQ==
Yo thanx I'll try it as is see if it works flat out and if not I'll add the codes I have. I already have a ESP32 (around 20 actually lol) because I'm a maker who loves anything micro controller.
  • 1
  • 72
  • 73
  • 74
  • 75
  • 76
  • 80

Any one got any info on beryl bikes I seen a few i[…]

Hej Guys got my hands on this double battery pac[…]

As this was a rental version whos overstock was ev[…]

This last transistor needs to be soldered. https:[…]