Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gen2.1.12 (ex2.14) - PPM and PWM RC remote? #36

Open
dexterbot80 opened this issue Nov 11, 2023 · 143 comments
Open

Gen2.1.12 (ex2.14) - PPM and PWM RC remote? #36

dexterbot80 opened this issue Nov 11, 2023 · 143 comments

Comments

@dexterbot80
Copy link

Hello, First of all I want to congratulate you on this project. Very useful for bringing broken hoverboards back to life....
I have two pieces of this model and would like to be able to actuate them simultaneously from an RC remote control to create a 4-motor RC platform.
Have you seen this model before? Can someone guide me?
Thank you
GD32F
GD32F130
MASTER
SLAVE

@pacraf
Copy link

pacraf commented Nov 11, 2023

It seems to be different from photos on main page. So could be different layout. Controller looks like ok (gd32f130 c6t6?); battery 24V
I would start with identifying all important pins, so mosfets , halls all others. Look into thread with 2_10. Pin by pin identified what is where connected.
Anyway I can not say that your work will make it happen that Robo will create new layout.
I barely compile prepared firmware, select options, but newer added anything new… but this info for sure will be necessary to start.
Btw in this thread 2-10 board you will see that I did such 4 wheeler. Rc version.

@dexterbot80
Copy link
Author

dexterbot80 commented Nov 12, 2023

It seems to be different from photos on main page. So could be different layout. Controller looks like ok (gd32f130 c6t6?); battery 24V I would start with identifying all important pins, so mosfets , halls all others. Look into thread with 2_10. Pin by pin identified what is where connected. Anyway I can not say that your work will make it happen that Robo will create new layout. I barely compile prepared firmware, select options, but newer added anything new… but this info for sure will be necessary to start. Btw in this thread 2-10 board you will see that I did such 4 wheeler. Rc version.

Hello @pacraf, Thank you for your very quick reply, I saw your 4-wheel vehicle and I want to do roughly the same thing, only I want to attach a flight controller and GPS to it so that it can work autonomously.
It would be extremely useful if you could make a step-by-step tutorial and a wiring diagram for your machine.
Thank you 💯

@pacraf
Copy link

pacraf commented Nov 15, 2023

Wiring is shown here, as it is lolin s2 connected to 4 boards, with diodes , as you can see on main page of this repo. Additionally you will connect your receiver or FC. I also experimented with pixhawk, but finally I have it only with RC receiver.
diagram makes no sense, as it is only one pin from FRsky receiver connected to lolin S2…

I am stuck now with hardware making, so proper box , installing motors , making it rain proof…
But this will take for me long time…

@dexterbot80
Copy link
Author

dexterbot80 commented Nov 16, 2023

Wiring is shown here, as it is lolin s2 connected to 4 boards, with diodes , as you can see on main page of this repo. Additionally you will connect your receiver or FC. I also experimented with pixhawk, but finally I have it only with RC receiver. diagram makes no sense, as it is only one pin from FRsky receiver connected to lolin S2…

I am stuck now with hardware making, so proper box , installing motors , making it rain proof… But this will take for me long time…

Hello, Thank you for your answer.

  1. The Lolin code is located here ?
  2. Just Master board 1 and Master board 2 is connected to Lolin board like this?
  3. PWM output of the RC Receiver is connected to Master board 1 USART BUS? ?
  4. I hve just one connector 3.3V - RX - TX - GND on the SLAVE board ....
    Thank you

@pacraf
Copy link

pacraf commented Nov 16, 2023

  1. Yes, there are sketches, I play with this 4wheeler where author of this repo did nice example of 4 wheeler control.
    Then you have sketch ESP ppm . This one shows example of using ppm library, which is typical RC receiver (all channels on one wire) .
    So if you want 4 wheeler with RC, then add this example from ESP PPM to 4Wheeler.

But if you want other control than PPM, then you need to transfer values from your RC to iSpeed and iSteer… this is generally idea.

2 yes and no. All boards are connected like on diagram. 4 in my case. In this scenario there is no master and slave (remove this cable) , but all boards are connected like this diagram shows. All are “singles” addressable one by one , with unique ID. This ID you have to compile with Keil so each bin file is different. Don’t load everywhere the same file because this will be mess. All will want to respond to lolin on the same time so this will not work. Take your time and read some threads on thin git. You will understand all aspects, there are other options to control 4 wheeler but I did not use them .

  1. No. Rc signal goes to lolin. This board need to translate Rc signal to send properly commands to all boards . Read inside sketch esp ppm, there is written as I remember that ppm signal goes to input 3? Not sure. Read it there.
  2. Don’t understand your statement. All boards (what I know) have 2 uart. One is used normally to connect between master slave (in original unmodified hardware) this you don’t need (in scenario that each is “single” with unique ID.
    Second uart is normally not soldered, this one you have to identify on your board, solder pins, and connect like shown on diagram you have above.

@dexterbot80
Copy link
Author

dexterbot80 commented Nov 16, 2023

  1. Yes, there are sketches, I play with this 4wheeler where author of this repo did nice example of 4 wheeler control.
    Then you have sketch ESP ppm . This one shows example of using ppm library, which is typical RC receiver (all channels on one wire) .
    So if you want 4 wheeler with RC, then add this example from ESP PPM to 4Wheeler.

But if you want other control than PPM, then you need to transfer values from your RC to iSpeed and iSteer… this is generally idea.

2 yes and no. All boards are connected like on diagram. 4 in my case. In this scenario there is no master and slave (remove this cable) , but all boards are connected like this diagram shows. All are “singles” addressable one by one , with unique ID. This ID you have to compile with Keil so each bin file is different. Don’t load everywhere the same file because this will be mess. All will want to respond to lolin on the same time so this will not work. Take your time and read some threads on thin git. You will understand all aspects, there are other options to control 4 wheeler but I did not use them .

  1. No. Rc signal goes to lolin. This board need to translate Rc signal to send properly commands to all boards . Read inside sketch esp ppm, there is written as I remember that ppm signal goes to input 3? Not sure. Read it there.
  2. Don’t understand your statement. All boards (what I know) have 2 uart. One is used normally to connect between master slave (in original unmodified hardware) this you don’t need (in scenario that each is “single” with unique ID.
    Second uart is normally not soldered, this one you have to identify on your board, solder pins, and connect like shown on diagram you have above.
  1. I have just one unsoldered UART on the SLAVE board that corespond with pins PB6 and PB7.
  2. Maybe i need to identify pins PB6 and PB7 on the MASTER board to - here i do not have a connector place for this pins...
  3. I have an extra white wire to the MASTER MOTOR that is connected with this red wire on the board
    whitew1
    whitew2
    whitew3

If the SLAVE board copies everything the MASTER board does, could I load the firmware for the SLAVE in the MASTER and vice versa?
Could I keep the boards connected to each other on UART 1 and control only the boards that have the PB6 and PB7 pins exposed using the Lolin S2 board?
my case

@pacraf
Copy link

pacraf commented Nov 17, 2023

Hmm scenario like you proposed on diagram (but one thing different, that in fact master connecting with lolin , and then slave connected to master. You know what I mean? Just change on your diagram words master and slave). So this scenario is possible, however not tested by me.

Regarding pins for uart , I am pretty sure that you have them. These are the small pads not soldered close to uC. Visible on your photo.

@dexterbot80
Copy link
Author

dexterbot80 commented Nov 17, 2023

Hmm scenario like you proposed on diagram (but one thing different, that in fact master connecting with lolin , and then slave connected to master. You know what I mean? Just change on your diagram words master and slave). So this scenario is possible, however not tested by me.

Regarding pins for uart , I am pretty sure that you have them. These are the small pads not soldered close to uC. Visible on your photo.

Hello professor :)
If you mean these small pads on the MASTER board, I found them, but I expected there to be a dedicated connector for this.
I wouldn't really want to use such thin wires around here - I catch my fingers :)
smalluartpins

Regarding my diagram, I was saying to write the firmware for the SLAVE board on the microcontroller on the MASTER board and vice versa.
In this way, I still have the possibility to mount a connector for UART and I think it would be much more resistant.
my case2
It would be very good if this could be done, but I still have no idea what this white wire that enters the motor from the MASTER board is used for.
whitew2
whitew3

I have no idea if the operation of the motor/board would be affected if I installed the firmware dedicated to the SLAVE board on the MASTER board.
Thank you

@pacraf
Copy link

pacraf commented Nov 18, 2023

Oh not the small control pads. I mean this connector pads
image
Regarding white wire, I have also no idea. Can you measure voltage there? When board works of course.

regarding scenarios, as I said, my is different than your intended. I have all of them separate ID, and threat them as singles. Lolin makes calculation for turning .

@pacraf
Copy link

pacraf commented Nov 18, 2023

Wait… I think that I also mixed things. The pins I marked are for programming… not for uart. Sorry for confusing.

@dexterbot80
Copy link
Author

dexterbot80 commented Nov 18, 2023

Wait… I think that I also mixed things. The pins I marked are for programming… not for uart. Sorry for confusing.

Hello @pacraf, I loaded the firmware in both boards and now I need the code for ESP32.
I only have the Olimex ESP32-GATEWAY board and Radiolink R4FG RC receiver.
I tried to change the UART pins to 36 and 39 but without success - it keeps resetting after i upload the code.

Can you please send me your functional code for ESP32 and explain a little where I connect the PWM pin of the RC receiver?
Also, if you have one, please send a code for the ESP32 that starts the motors without the remote control.
Thank you

@pacraf
Copy link

pacraf commented Nov 18, 2023

Yes, better start with the test sketch, and get it working. This sketch works on lolin for me. It is just generator of set values for drive. So no receiver, it just sends commands to drive.
you have to pick correct communication, for me it is with uncommented UartBus, as this is the firmware I use.

Firmware is here and it works.
Arduino Examples/TestSpeed/TestSpeed.ino
I don’t know if it will work on your board, but should work… anyway I am not good in all that stuff.

Regarding pwm - here I can’t help either, I suppose on net you will find something working easy to modify. My receiver works with PPM (this is different than your single channel PWM), and I just found example sketch and it works on lolin. It also - as I already wrote- in this repo as ready to test . But for you it will not help.

But start with test, first of all you have to see communication alive.

@pacraf
Copy link

pacraf commented Nov 18, 2023

@dexterbot80
Copy link
Author

dexterbot80 commented Nov 18, 2023

Yes, better start with the test sketch, and get it working. This sketch works on lolin for me. It is just generator of set values for drive. So no receiver, it just sends commands to drive. you have to pick correct communication, for me it is with uncommented UartBus, as this is the firmware I use.

Firmware is here and it works. Arduino Examples/TestSpeed/TestSpeed.ino I don’t know if it will work on your board, but should work… anyway I am not good in all that stuff.

Regarding pwm - here I can’t help either, I suppose on net you will find something working easy to modify. My receiver works with PPM (this is different than your single channel PWM), and I just found example sketch and it works on lolin. It also - as I already wrote- in this repo as ready to test . But for you it will not help.

But start with test, first of all you have to see communication alive.

Something is wrong here, the ESP32 keeps resetting after I upload the code. This is the Serial Monitor output

ELF file SHA256: e33092a70d7d9f2a

Rebooting...
ets Jul 29 2019 12:21:46

rst:0xc (SW_CPU_RESET),boot:0x1a (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1184
load:0x40078000,len:13260
load:0x40080400,len:3028
entry 0x400805e4
Hello Hoverbaord V2.x :-)
E (15) uart: uart_set_pin(692): tx_io_num error
ESP_ERROR_CHECK failed: esp_err_t 0xffffffff (ESP_FAIL) at 0x40087f38
file: "C:\Users\mproz\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\cores\esp32\esp32-hal-uart.c" line 215
func: uartBegin
expression: uart_set_pin(uart_nr, txPin, rxPin, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE)

abort() was called at PC 0x40087f3b on core 1


Backtrace: 0x40083349:0x3ffc5000 0x40087f45:0x3ffc5020 0x4008cd21:0x3ffc5040 0x40087f3b:0x3ffc50c0 0x400d2b9e:0x3ffc50e0 0x400d1cc4:0x3ffc5140 0x400d157a:0x3ffc5190 0x400d239e:0x3ffc51c0




ELF file SHA256: e33092a70d7d9f2a

Rebooting...
ets Jul 29 2019 12:21:46

rst:0xc (SW_CPU_RESET),boot:0x1a (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1184
load:0x40078000,len:13260
load:0x40080400,len:3028
entry 0x400805e4
Hello Hoverbaord V2.x :-)
E (15) uart: uart_set_pin(692): tx_io_num error
ESP_ERROR_CHECK failed: esp_err_t 0xffffffff (ESP_FAIL) at 0x40087f38
file: "C:\Users\mproz\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\cores\esp32\esp32-hal-uart.c" line 215
func: uartBegin
expression: uart_set_pin(uart_nr, txPin, rxPin, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE)

abort() was called at PC 0x40087f3b on core 1


Backtrace: 0x40083349:0x3ffc5000 0x40087f45:0x3ffc5020 0x4008cd21:0x3ffc5040 0x40087f3b:0x3ffc50c0 0x400d2b9e:0x3ffc50e0 0x400d1cc4:0x3ffc5140 0x400d157a:0x3ffc5190 0x400d239e:0x3ffc51c0
esp32 speed

Please send me the code in the configuration that works for you.
Thank you

@pacraf
Copy link

pacraf commented Nov 18, 2023

sure, below is the example code, it waits until you send in console to lolin new values of speed and steer.
so in console you just enter for example 100,200,0 (and enter to send it) and is should command to board.

But i am pretty sure you will also have the same error, as example from this repo works.

some serial example from arduino work for your board? you know, some basic serial communication, examples maybe... I don't know what is the problem...

//    Tested with Arduino Pro Mini 3.3V and Hoverboard-TX to pin 9 and Hoverboard-RX to pin 8
//
//    PB6 (Hoverboard-TX) and PB7 (Hoverboard-RX) can handle 5V I/O-Level :-)
//
//    please share feedback to https://github.com/RoboDurden/Hoverboard-Firmware-Hack-Gen2.x



#define _DEBUG      // debug output to first hardware serial port
#define DEBUG_RX    // additional hoverboard-rx debug output
#define REMOTE_UARTBUS

#include "util.h"
#include "hoverserial.h"

#ifdef ESP32
  #define oSerialHover Serial1    // ESP32
#else
  #include <SoftwareSerial.h>    // not compatible with RCReceiver because of interrupt conflicts.
  SoftwareSerial oSerialHover(9,8); // RX, TX 
  #define oSerialHover Serial    // Arduino
#endif
SerialHover2Server oHoverFeedback;
char myData[30] = { 0 };
int iSteer = 0;
int iSpeed = 10;

void setup()
{
  #ifdef _DEBUG
    Serial.begin(115200);
    Serial.println("Hello Hoverbaord V2.x :-)");
  #endif
  
  #ifdef ESP32
    HoverSetupEsp32(oSerialHover,19200,39,37);      // baud, rx, tx
  #else
    HoverSetupArduino(oSerialHover,19200);    //  8 Mhz Arduino Mini too slow for 115200 !!!
  #endif


  pinMode(LED_BUILTIN, OUTPUT);
}

unsigned long iLast = 0;
unsigned long iNext = 0;
void loop()
{
  unsigned long iNow = millis();
  digitalWrite(LED_BUILTIN, (iNow%2000) < 500);

  //int iSpeed = 3 * (ABS( (int)((iNow/20+100) % 400) - 200) - 100);   // repeats from +300 to -300 to +300 :-)
  //int iSteer = 3 * (ABS( (int)((iNow/400+100) % 400) - 200) - 100);   // repeats from +100 to -100 to +100 :-)

  
  byte n = Serial.available();
  if (n != 0) {
    byte m = Serial.readBytesUntil('\n', myData, 30);
    myData[m] = '\0';  //null-byte // (sscanf(myData, "%d,%d,%d", &y1, &y2, &y3) == 3) {
    int y1, y2;  //, y3;
    if (sscanf(myData, "%d,%d", &y1, &y2) == 2) { 
      Serial.println("new iSpeed/iSteer values are:");
      Serial.print("iSpeed = ");
      Serial.println(y1);
      Serial.print("iSteer = ");
      Serial.println(y2);
      //Serial.print("int y3 = ");
      //Serial.println(y3);
      iSpeed = y1;
      iSteer = y2;
    } else Serial.println("error in input!");
  }

  boolean bReceived = Receive(oSerialHover,oHoverFeedback);   
  if (bReceived)
  {
    DEBUGT("millis",iNow-iLast);
    DEBUGT("iSpeed",iSpeed);
    DEBUGT("iSteer",iSteer);
    HoverLog(oHoverFeedback);
    iLast = iNow;
   }

  #ifdef REMOTE_UARTBUS
    if (iNow > iNext)
    {
      iNext = iNow + 100;
      //DEBUGLN("time",iNow)
      int iSpeedL = CLAMP(iSpeed + iSteer,-1000,1000);
      int iSpeedR = -CLAMP(iSpeed - iSteer,-1000,1000);
      
      HoverSend(oSerialHover,0,iSpeedL);  // hoverboard will answer immediatly on having received this message ...
      delay(10);
      HoverSend(oSerialHover,1,iSpeedR);  // but wait 10 ms for the RX line to be clear again
    }
  #else
    if (bReceived)  // Reply only when you receive data
      HoverSend(oSerialHover,iSteer,iSpeed);
  #endif

}

@dexterbot80
Copy link
Author

dexterbot80 commented Nov 18, 2023

Thanks @pacraf i have the same error / reboot
Shouldn't it also work with arduino UNO? Do I need to make other settings to use Arduino instead of ESP32?

@pacraf
Copy link

pacraf commented Nov 18, 2023

I have no idea. I was also like you playing with different boards, not successful. Finally bought lolin. It is only 4-5 euros… but I know, always better utilize what we have…

@pacraf
Copy link

pacraf commented Nov 18, 2023

Don’t give up with your esp32. It’s far better than uno. Try other examples with two serials utilization. Did you choose correctly settings for your board in IDE?

@dexterbot80
Copy link
Author

Don’t give up with your esp32. It’s far better than uno. Try other examples with two serials utilization. Did you choose correctly settings for your board in IDE?

I can't find Lolin S2 here, but I found a board that has the same ESP32-S2FN4R2 microcontroller.
I will buy it and keep you updated - I never give up :)

@dexterbot80
Copy link
Author

dexterbot80 commented Nov 28, 2023

Don’t give up with your esp32. It’s far better than uno. Try other examples with two serials utilization. Did you choose correctly settings for your board in IDE?

Hello @RoboDurden, Hello @pacraf
In the end, the S2 mini also arrived, but I couldn't start the robot :)
I think I have a different configuration of the pins on the board because after I upload any of the firmware versions here, the Buzzer is no longer heard. In the videos presented by @RoboDurden I noticed that the Buzzer is heard after each firmware upload.
I also noticed that my boards are very similar to V2.5 but I didn't find a special dedicated firmware for V2.5...
So we have to discover Schematics_2.14 together - now winter is coming so we need to make a snow robot quickly :)

This is the TX signal from S2 mini
s2mini

And this is the nervous S2 mini
s2brightstar

STM32CubeProgrammer errors received every time when i upload the firmware.
image

@RoboDurden
Copy link
Owner

Oh sorry, without the @RoboDurden I would not have noticed this new issue. Sorry for that.
Will read this issue tomorrow.
If this is indeed a new layout, please upload high resolution photos of front and back with cables bent outside. So all components and circuit lines can be seen.

Good night from Germany. I am living outdoor again and this night temperature will drop to -6°C. No big deal, my coldest night was -22 °C :-)

@dexterbot80
Copy link
Author

dexterbot80 commented Nov 28, 2023

Oh sorry, without the @RoboDurden I would not have noticed this new issue. Sorry for that. Will read this issue tomorrow. If this is indeed a new layout, please upload high resolution photos of front and back with cables bent outside. So all components and circuit lines can be seen.

Good night from Germany. I am living outdoor again and this night temperature will drop to -6°C. No big deal, my coldest night was -22 °C :-)

Nice to meet you @RoboDurden - come on whatsapp too, +40762654488
In the summer we both make a solar car :)

@RoboDurden
Copy link
Owner

Yes, this will be 2.14.
But please upload high resolution photos of front and back with cables bent out of view. So all components and circuit lines can be seen.

@RoboDurden
Copy link
Owner

RoboDurden commented Nov 29, 2023

Do not upload binaries for a different layout. This can kill your board.
As this is a new layout, there do not exist any binaries yet.
With a new layout 2.14 it will be very very helpful if you install the Keil IDE and can compile für hitting F7 and upload to hoverboard with F8.
It will require many compilations until we have a working binary.
I will not do that for you.

And forget about the esp32 and rc remote for now.

First we need to identify the 3 hall input pins and make sure that the 6 MOSFET output pins are as usual.

Then we(you) can compile the first single_test.bin that makes the motor spin forward and backward without any esp32.

Yes it would be good if you have traced the pb6 and pb7 pins so you can establish a serial communication to the lolin32 S2 Mini. This will help to receive log data from the hover firmware.

Some boards only offer one serial port because these split boards only need a communication between each other.

Then you will need single_uartBus binaries an control each Motor individually from Esp32 like @pacraf has successfully done :-)

If you have a second serial port header on your board, you could control only two masters and they in turn control their attached slaves.
In the image you posted above you did this with two master_Uart binaries . This will need two serial ports on the Esp32.
Older Esp have three hardware ports , so after using the first for Arduino debug Output Ther would still be two hardware UART ports left for your sketch.
But Esp32 S2 does only have two UART hardware ports. So you better go with my uartBus protocol.
But this is future talk.

Please upload hires photos of front and back without any cables blocking the view.

Big thanks to Pacraf for being active here :-)

@dexterbot80
Copy link
Author

Do not upload binaries for a different layout. This can kill your board. As this is a new layout, there do not exist any binaries yet. With a new layout 2.14 it will be very very helpful if you install the Keil IDE and can compile für hitting F7 and upload to hoverboard with F8. It will require many compilations until we have a working binary. I will not do that for you.

And forget about the esp32 and rc remote for now.

First we need to identify the 3 hall input pins and make sure that the 6 MOSFET output pins are as usual.

Then we(you) can compile the first single_test.bin that makes the motor spin forward and backward without any esp32.

Yes it would be good if you have traced the pb6 and pb7 pins so you can establish a serial communication to the lolin32 S2 Mini. This will help to receive log data from the hover firmware.

Some boards only offer one serial port because these split boards only need a communication between each other.

Then you will need single_uartBus binaries an control each Motor individually from Esp32 like @pacraf has successfully done :-)

If you have a second serial port header on your board, you could control only two masters and they in turn control their attached slaves. In the image you posted above you did this with two master_Uart binaries . This will need two serial ports on the Esp32. Older Esp have three hardware ports , so after using the first for Arduino debug Output Ther would still be two hardware UART ports left for your sketch. But Esp32 S2 does only have two UART hardware ports. So you better go with my uartBus protocol. But this is future talk.

Please upload hires photos of front and back without any cables blocking the view.

Big thanks to Pacraf for being active here :-)

Hello @RoboDurden,
Please tell me if you can see the pictures well enough.

20231129_123749
20231129_123825
20231129_123620
20231129_123708
Thank you

@RoboDurden
Copy link
Owner

Great, i now will compile them into a front-back image and add the 2.14 layout to my repo :-)

@dexterbot80
Copy link
Author

Great, i now will compile them into a front-back image and add the 2.14 layout to my repo :-)

I powered the hoverboard from a laboratory source and limited the current to 0.7Ah - I did not notice an increase in consumption after loading several firmware versions, but I noticed from the first loaded firmware that the buzzer stopped working and that makes me think I have a different configuration of the pins.
Thank you @RoboDurden

@RoboDurden
Copy link
Owner

Yes the pins are very likely different from other layouts.
As @pacraf suggested, read some other layout issues here to learn how to trace the pins.

@RoboDurden
Copy link
Owner

okay i have added 2.14.

the 5 led pins should be no problem as the 5 transistors with its 5 gate resistors are clearly to be seen and it should be easy to trace them on the photos:
grafik

@RoboDurden
Copy link
Owner

uart0 mostly is

	#define USART0_TX	PB6
	#define USART0_RX	PB7

uart1 mostly

	#define USART1_TX		PA2
	#define USART1_RX		PA3

I guess, PA2/PA3 will be the master-slave serial.

Only the slave has a second uart header:

grafik
That could be PB6 and PB7

Most important for now are the 3 hall pins. It seems they trace only on the front as i do not see vertical traces on the backside:
grafik

As you have a CC constant current power supply we can risk it to assume that the 6 mosfet output pins are as usual.

So if we have a clue on the 3 hall pins, i can create a new defines_2-14.h and you can start compiling a first single_test.bin

@dexterbot80
Copy link
Author

dexterbot80 commented Dec 1, 2023

wapping phases by simply swapping two of the big green yellow blue motor phase cables. They usually have single connectors.

Pffff.... only now I understood which permutations to check.
Seems that I have found a combination in which the engine does not sound bad and does not consume only 0.45A when rotating without load.
The sound is much smoother with the #define DEAD_TIME 120 option activated

MOTOR- GREEN WIRE <> YELLOW WIRE CONTROLLER
MOTOR YELLOW WIRE <> BLUE WIRE CONTROLLER
MOTOR BLUE WIRE <> GREEN WIRE CONTROLLER

With #define REMOTE_UART and Lolin board connected the motor is not rotating at all
If I change the supply voltage, I see the changed battery voltage on the serial
I am very sure that I am doing something wrong here as well

@RoboDurden RoboDurden changed the title New board PPM and PWM RC remote? Layout 2.14 (PPM and PWM RC remote?) Dec 1, 2023
@RoboDurden
Copy link
Owner

go to remoteDummy.c line 15 and set a constant speed between 300 and 500 (1000 is max):

speed = 300;

Then step by step (= comile by compile ) optimize the DEAD_TIME so the the current drawn from the power supply is lowest = no shortcut current when high-side and low-side mosfets are both conducting.

Good to hear hat swaping / permutating the phase cables did the job:

MOTOR- GREEN WIRE <> YELLOW WIRE CONTROLLER
MOTOR YELLOW WIRE <> BLUE WIRE CONTROLLER
MOTOR BLUE WIRE <> GREEN WIRE CONTROLLER

Still it would be better if you can achieve the same effect by swaping the hall sensors:

#define HALL_A	PA1		// dexterbot80: CHINESE LOGIC A !
#define HALL_B	PB11	// dexterbot80: CHINESE LOGIC A !
#define HALL_C	PC14	// dexterbot80: CHINESE LOGIC A !

try

#define HALL_A	PA1		// dexterbot80: CHINESE LOGIC A !
#define HALL_C	PB11	// dexterbot80: CHINESE LOGIC A !
#define HALL_B	PC14	// dexterbot80: CHINESE LOGIC A !
#define HALL_C	PA1		// dexterbot80: CHINESE LOGIC A !
#define HALL_B	PB11	// dexterbot80: CHINESE LOGIC A !
#define HALL_A	PC14	// dexterbot80: CHINESE LOGIC A !
#define HALL_B	PA1		// dexterbot80: CHINESE LOGIC A !
#define HALL_A	PB11	// dexterbot80: CHINESE LOGIC A !
#define HALL_C	PC14	// dexterbot80: CHINESE LOGIC A !
#define HALL_C	PA1		// dexterbot80: CHINESE LOGIC A !
#define HALL_A	PB11	// dexterbot80: CHINESE LOGIC A !
#define HALL_B	PC14	// dexterbot80: CHINESE LOGIC A !

and the fifth is ?

The arduino log shows that iSpeed is received by hoverboard. So i currently have no idea why motor not spinning.
You could try my RemoteUartBus. It is especially designed for Single boards instead of master/slave. Maybe i have a bug when using RemoteUart with Single.
You have to actived UartBus protocol in the arduino code as well as flashing a RemoteUartBus to the hoverboard..

If I change the supply voltage, I see the changed battery voltage on the serial

Then this define is correct: #define VBATT PA4 // todo

Try to check all other possible adc pins for this and put a hand on the motor (best with constant speed) to increase the load until you see amps above 1A in the arduino log:

#define CURRENT_DC PA6 // todo

	available for analog input:
	A0 A2 A3 A5 A6 A7 B0 B1 	

A2, A3 is probably the master-slave serial communication.

Here you have PB6 and PB7 for remote serial communication on the master board:
grafik

This is porbably a dual op-amp, either for two phase currents (not need for this firmware but for advanced FOC firmware), or the overall currentDC:
grafik
DIO2032 dual op-amp
Would be nice if you can trace the mcu pins.

For the master board, you still need to trace the buzzer, onoff button and hold output...

@dexterbot80
Copy link
Author

dexterbot80 commented Dec 1, 2023

After I activate #define DEBUG_RX in the arduino code (TestSpeed), some additional messages appear on the serial - you can see it in the video.
I connected the oscilloscope to the RX TX communication between the Lolin board and the Hoverboard, and when the LEDs light up on the hoverboard, the signals on the oscilloscope start jumping.
The signals on the oscilloscope change their amplitude and move irregularly even if I don't activate #define DEBUG_RX.
The motor does not spin, so something is wrong here

https://drive.google.com/file/d/1FzGNwilz4I1YDhg0I1dSfp4Rj4NfZHZ_/view?usp=sharing

Try to check all other possible adc pins for this and put a hand on the motor (best with constant speed) to increase the load until you see amps above 1A in the arduino log:

I think we should first make it spin when it receives commands from the Lolin board

Would be nice if you can trace the mcu pins.
Here I have the operational TP2272 which seems to take care of those two photocells on the back of the board.
TP2271.PDF

TP2271 CIRCUIT

@dexterbot80
Copy link
Author

dexterbot80 commented Dec 2, 2023

Hello @RoboDurden & @pacraf, I found the problem guys !
I was fooled by a 0 ohm resistor mounted between the RX TX pins.
I removed the "virus" and now it works controlled by the Lolin board :)
WhatsApp Image 2023-12-02 at 07 01 57_b9ddef29
image

Do you recommend a resistance of another value between the RX and TX pins?

I reversed the hall sensor pins a little and now it works with the motor connected, respecting the colors of the wires.

#define HALL_A PB11 // GREEN <> GREEN
#define HALL_B PC14 // BLUE<> BLUE
#define HALL_C PA1 // YELLOW <> YELLOW

Could the function for RC remote controls with PWM signal be implemented?

`#define RCPin 3
volatile long StartTime = 0;
volatile long CurrentTime =0;
volatile long Pulses =0;
int PulseWidth = 0;

void setup() {
Serial.begin(9600);
pinMode (RCPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(RCPin),PulseTimer,CHANGE);
}

void loop() {
if (Pulses < 2000){
PulseWidth = Pulses;
}
Serial.println(PulseWidth);
}

void PulseTimer(){
CurrentTime = micros();
if (CurrentTime > StartTime){
Pulses = CurrentTime - StartTime;
StartTime = CurrentTime;
}
}`

@RoboDurden
Copy link
Owner

You are getting better and better.
Nice to witness your progress :-)

Some boards have a 4 pin header with the two middle pin short cut and labeled as DATA :-(
This 0 ohm resistor did the same job.
No we do not want any resistor between Rx and TX.

Please post your complete defines_2-14.h file here so I can upload it to the repo . Post as CODE.

The speed command ranges from -1000 to +1000. If your pwm code works nicely it is easy to map your pwm value to 0-1000 and send it to hoverboard.
Please post final working Arduino code here - again as CODE :-)

@dexterbot80
Copy link
Author

dexterbot80 commented Dec 2, 2023

#ifdef MASTER_OR_SINGLE		// layout 2.2 and 2.7 have buzzer on the slave board.
	#define HAS_BUZZER
#endif

/* GD32F130 48pin possible IO pins: 
	C13 C14 C15 F0 F1 A0 A1 A2 
	A3 A4 A5 A6 A7 B0 B1 B2 B10 B11
	B12 B13 B14 B15 A8 A9 A10 A11 A12 A13 F6 F7
	A14 A15 B3 B4 B5 B6 B7 B8 B9 
	
	mostly used for 6 BLDC mosfet pins: B13 B14 B15 A8 A9 A10
	mostly used for USART0: B6 B7
	mostly used for USART1: A2 A3
	ST-Flash pins: A13 A14 (also used as green and red led on 2.2)
	
	so mostly available for other use:	
	C13 C14 C15 F0 F1 A0 A1 A4 A5 A6 A7 B0 B1 B2 B10 B11 B12 A11 F6 F7 A12 A15 B3 B4 B5 B8 B9 
	so available for analog input:
	A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 	
*/

#define TODO_PIN PF4	// PF4 is only accessible on the largest GD32F130Rx LQFP64 pinouts mcu

// LED defines

#define LED_ORANGE PA15	// ORANGE LED 
#define LED_GREEN PB3	  // GREEN LED
#define LED_RED PB4			// RED LED

#define UPPER_LED	PB5			// LED 
#define LOWER_LED	PC13	// IN THE AIR


// Mosfet output, little onboard led
#define MOSFET_OUT	PF4	//<<<<<<<<<<<<-----------??????????????

// Brushless Control DC (BLDC) defines
#define BLDC_GH PA10		// green	, Tommyboi2001 all bldc pins same as 2.0
#define BLDC_GL PB15		
#define BLDC_BH PA9			// blue 
#define BLDC_BL PB14		
#define BLDC_YH PA8			// yellow
#define BLDC_YL PB13		
#define TIMER_BLDC_PULLUP	GPIO_PUPD_NONE	// robo: not sure if some boards indeed nned GPIO_PUPD_PULLUP like 2.2 or 2.3


// Timer BLDC short circuit emergency shutoff define
#define TIMER_BLDC_EMERGENCY_SHUTDOWN	PB12

// Hall sensor defines
#define HALL_A	PB11		   //  CONFIRMED
#define HALL_B	PC14       //  CONFIRMED
#define HALL_C	PA1        //  CONFIRMED

// GD32F130 USART0 TX/RX:	(PA9/PA10)AF1	, (PB6/PB7)AF0 , 	(PA2/PA3)AF1 , (PA14/PA15)AF1 GD32F130x4 only!
#define HAS_USART0	// uncomment if this layout has a usart0
#ifdef HAS_USART0
	#define USART0_TX	PB6
	#define USART0_RX	PB7
	
	//#define USART0_MASTERSLAVE		// uncomment if this usart is used for master-slave communication
	#define USART0_REMOTE						// uncomment if this usart is used for optional remote control
#endif


// GD32F130 USART1 GD32F130 TX/RX: (PA14/PA15)AF1 , (PA2,PA3)AF1	, (PA8/PB0)AlternateFunction4
#define HAS_USART1	// uncomment if this layout has a usart1
#ifdef HAS_USART1
	#define USART1_TX		PA2
	#define USART1_RX		PA3
	
	#define USART1_MASTERSLAVE		// uncomment if this usart is used for master-slave communication
	//#define USART1_REMOTE				// uncomment if this usart is used for optional remote control
#endif



// ADC defines
#define VBATT	PA4					// CONFIRMED
#define CURRENT_DC	PA6	 // CONFIRMED

// Self hold defines
#define SELF_HOLD	PB2  //todo

// Button defines
#define BUTTON	 PC15 //todo

#ifdef HAS_BUZZER
	// Buzzer defins
	#define BUZZER	PB10		// todo
#endif

#ifdef MASTER
	// Charge state defines
	#define CHARGE_STATE	PF0	// todo
#endif

// Debug pin defines -  no longer has any function in code !
#define DEBUG_PIN TODO_PIN

I still haven't identified the pin for the buzzer on the master board, which is now a slave for me :)

This code only reads the PWM values received from the RC remote control,
I think it would be very useful to be able to connect PWM remote controls to.
I tested it on the Lolin board and it works....

#define RCPin 3
volatile long StartTime = 0;
volatile long CurrentTime =0;
volatile long Pulses =0;
int PulseWidth = 0;

void setup() {
Serial.begin(9600);
pinMode (RCPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(RCPin),PulseTimer,CHANGE);
}

void loop() {
if (Pulses < 2000){
PulseWidth = Pulses;
}
Serial.println(PulseWidth);
}

void PulseTimer(){
CurrentTime = micros();
if (CurrentTime > StartTime){
Pulses = CurrentTime - StartTime;
StartTime = CurrentTime;
}
}

@RoboDurden
Copy link
Owner

If you plan to power every single board directly you might not need to care about the onoff button and the hold output pin of the original master board.
But I do not know how this layout usually gets connected to the battery.

@dexterbot80
Copy link
Author

dexterbot80 commented Dec 2, 2023

If you plan to power every single board directly you might not need to care about the onoff button and the hold output pin of the original master board.

You have to teach me what this hold output pin does.
I have no idea how to find it on the board.
I would like to make this version 2.14 compatible with all the functions in the code + PWM RC :)

@RoboDurden
Copy link
Owner

The onoff button controls a transistor that powers the 5V and 3.3V for the MCU.
But with release of the onoff button the power stops.
With the hold output, the MCU can control another Transistor that emulates the onoff button. Therefore the MCU can shutoff itself by setting the hold output to low.
Search main.c for usage of BUTTON and HOLD.

@RoboDurden
Copy link
Owner

Would be nice if you can integrate your pwm code into the Esp_ppm example.
Add a #define RC_PWM in the beginning and then #ifdef ... your pwm code instead of the ppm code.

@dexterbot80
Copy link
Author

dexterbot80 commented Dec 2, 2023

Would be nice if you can integrate your pwm code into the Esp_ppm example. Add a #define RC_PWM in the beginning and then #ifdef ... your pwm code instead of the ppm code.

Yes but my code just read the pwm data from RC - I think it's much more complicated than that :)

I now understand what the hold output pin does - maybe I can find it by groping and disconnecting the power button after uploading the code.
I'm thinking now that only the master board could have the hold power function ...

@dexterbot80
Copy link
Author

dexterbot80 commented Dec 2, 2023

I think this #define SELF_HOLD PB2 pin is correct because I disconnected the button and it didn't stop :).
I reconnected the button without retention and after a short press it starts.
The problem is that if I press the button one more time, the hoverboard stays on.

If I disconnect the power it stops and if I connect it back the power only starts if I press the start button.

@RoboDurden
Copy link
Owner

Then the BUTTON pin definition is wrong and the code does not recognize a button press to shutoff and release the HOLD output.

@dexterbot80
Copy link
Author

dexterbot80 commented Dec 2, 2023

Then the BUTTON pin definition is wrong and the code does not recognize a button press to shutoff and release the HOLD output.

Ok, i identify the button pins right away

@dexterbot80
Copy link
Author

I think that if you implement the RC PWM remote control it will be much easier to implement in the future and the possibility of connecting an accelerator pedal, a brake pedal and a direction change button
​And look, this is how we turn this project into a multifunctional one :)

@RoboDurden
Copy link
Owner

I do not really want that.
Not so many Variant_xy as the EFeru firmware.

@dexterbot80
Copy link
Author

dexterbot80 commented Dec 2, 2023

Not so many Variant_xy as the EFeru firmware.

I respect your decision - you are the boss here :)

Does it have to work only with the retaining button?
If the button is ON does it work and if it is OFF does it stop?

I discovered the pin for the button, this would be #define BUTTON PA0 and if I set #define SELF_HOLD PB1 for hold power, it works exactly as I described above.
If the button is ON, it starts and if the button is OFF, it stops.

@RoboDurden
Copy link
Owner

I can add a #define option to config.h that will make the board shutoff when the onoff button is released. It would simply disable the SelfHold functionality.

If this is already the behavior of your setup then I fear, the HOLD pin definition is still wrong.

@RoboDurden
Copy link
Owner

I do not want to add pwm or ppm to the Keil firmware at the moment.
But you could add your code to the esp_ppm example so others can use own on the Arduino side.
But these ino files are just meant as examples and not the main firmware.

You could fork this repo and add a RemotePwm.c to the Keil firmware.
Should be quite easy to port your little interrupt routine as you can see how it is done in it.c and setup.c

@dexterbot80
Copy link
Author

Does the button have to activate/deactivate the hold function even if I set the board with the button as SLAVE?

Until I encountered two scenarios when setting the pins for the hold and button functions:

  1. If I set any other pin apart from PB2 for SELF_HOLD the hover function just if i hold the POWER BUTTON ON.

  2. If I set PB2 for SELF_HOLD and PA5 for BUTTON, the hover works in the following scenario.
    If I connect the power, it only starts if I press the POWER BUTTON once, but it doesn't stop if I press the POWER BUTTON once more.

I do not want to add pwm or ppm to the Keil firmware at the moment.
But you could add your code to the esp_ppm example so others can use own on the Arduino side.
But these ino files are just meant as examples and not the main firmware.

I wanted to say that codes should be created for Lolin's ESP32 to allow us to operate the hoverboard with the RC PWM remote control.

Likewise, a separate ESP32 code for operating the hoverboard using two pedals, brake and accelerator + a button to change the direction of travel.

@RoboDurden
Copy link
Owner

Search main.c for the usage of BUTTON and SELF_HOLD and understand how it works :-)

Ppm and pwm are both connected to RC, so it would be good to have them in one Esp_PpmPwm.ino
I do not like to update the hoverserial.h in too many .ino projects ..

@dexterbot80
Copy link
Author

dexterbot80 commented Dec 3, 2023

Hello @RoboDurden & @pacraf
Please confirm if this code works with a PWM signal :)
Probably for your remote control you need to adjust the 'a' and 'b' values in the code as follows:
Increasing the 'a' value will amplify the effect of the PWM signal on speed, and adjusting the 'b' value will set the baseline speed when the PWM signal is low.

////DX_PWM.ino\\\\

#define ESP32
#define _DEBUG      // debug output to first hardware serial port
//#define DEBUG_RX    // additional hoverboard-rx debug output

//#define REMOTE_UARTBUS  // uncomment to connect multiple SINGLE boards to the same UART_BUS

#include "util.h" // you need to add this file in your code folder
#include "hoverserial.h" // you need to add this file in your code folder

#include <PPMReader.h>
byte interruptPin = 3;
byte channelAmount = 4;
PPMReader ppm(interruptPin, channelAmount);
const float a = 1.35; // Increase this value to increase speed
const int b = -2000; // Adjust this value to set the baseline speed 
int result = 0;

#ifdef ESP32
  #define oSerialHover Serial1    // ESP32
#else
  #include <SoftwareSerial.h>    // not compatible with RCReceiver because of interrupt conflicts.
  SoftwareSerial oSerialHover(9,8); // RX, TX 
  #define oSerialHover Serial    // Arduino
#endif
SerialHover2Server oHoverFeedback;

void setup() {
  #ifdef _DEBUG
    Serial.begin(115200);
    delay(2000); // wait some time after reset - to see below message
    Serial.println("Hello Hoverbaord V2.x :-)");
  #endif
  
  #ifdef ESP32
    HoverSetupEsp32(oSerialHover,19200,39,37);      // baud, rx, tx
  #else
    HoverSetupArduino(oSerialHover,19200);    //  8 Mhz Arduino Mini too slow for 115200 !!!
  #endif

  pinMode(LED_BUILTIN, OUTPUT);
}

unsigned long iLast = 0;
unsigned long iNext = 0;
unsigned long iTimeNextState = 3000;
uint8_t  wState = 1;   // 1=ledGreen, 2=ledOrange, 4=ledRed, 8=ledUp, 16=ledDown   , 32=Battery3Led, 64=Disable, 128=ShutOff

void loop() {
  unsigned long iNow = millis();
  digitalWrite(LED_BUILTIN, (iNow % 2000) < 500);

  int iSteer = -100;
  int iSpeed = 0;

  if (iNow > iTimeNextState) {
    iTimeNextState = iNow + 3000;
    wState = wState << 1;
    if (wState == 128) wState = 1;  // remove this line to test Shutoff()
  }

  // Read PWM value from the remote control
  result = pulseIn(3, HIGH, 25000);  // Assuming the PWM signal is on pin 3 and timeout is set to 25ms

  if (result > 995) {
    iSpeed = (result * a) + b;
  } else {
    iSpeed = 0;
    Serial.println("dead RClink"); 
  }

  boolean bReceived = Receive(oSerialHover, oHoverFeedback);
  if (bReceived) {
    DEBUGT("millis", iNow - iLast);
    DEBUGT("iSpeed", iSpeed);
    DEBUGT("iSteer", iSteer);
    HoverLog(oHoverFeedback);
    iLast = iNow;
  }

  #ifdef REMOTE_UARTBUS
    if (iNow > iNext) {
      iNext = iNow + 100;
      int iSpeedL = CLAMP(iSpeed + iSteer, -1000, 1000);
      int iSpeedR = -CLAMP(iSpeed - iSteer, -1000, 1000);
      
      HoverSend(oSerialHover, 0, iSpeedL, wState);
      delay(10);
      HoverSend(oSerialHover, 1, iSpeedR, wState);
    }
  #else
    if (bReceived)  // Reply only when you receive data
      HoverSend(oSerialHover, iSteer, iSpeed, wState, wState);
  #endif
}

pwm_rc_v1.0.zip

@dexterbot80
Copy link
Author

dexterbot80 commented Dec 13, 2023

Hello @RoboDurden
Can you tell me how ugly this board is? :)
Please take a look and tell me what else I should add to make it as universal as possible - so that everyone here can use it.
Screenshot 2023-12-13 154529

Now it has TX-RX output for ten motors on pins 39/37 and input from an RC receiver on pin 3.
Also, the RC receiver can be replaced with an accelerator pedal with analog output and the other pins can be used for left-right signaling, headlights (high beam-low beam), horn, direction change switch and other functions that can be added...

For example, would I need to put a power supply module based on this circuit for a wider range of supply voltage?
https://www.ti.com/product/LM2576HV

@RoboDurden
Copy link
Owner

My uartBus is still very experimental..
But if you enjoy making PCB, please watch my YouTube videos on that nice 80V 20A step up down converter like https://youtu.be/KYcyNHunJU8

I still have not found the happiness to make circuit boards.

So you are very welcome to stay here.

You should use the hvs version of that lm2596 converter which can handle 36 volt battery.
And why not add the 3A cc constant current limit ! Then every user could test the motor with new binaries ..
Normally, the esp32 can be powered by the hoverboard 3.3V ..
So maybe a jumper which either sets the lm2596hvs to 5V and power the esp s2 mini or not power it and then ouputs 26V with 2A limit.

12 hoverboards is overkill. A 6 axis robot arm might be all people ask for.
And smd diodes on board ..

But I do not really think people want auch a board...
And maybe move the gpio headers closer to the esp and out a prototyping area in the free space. Then you also do not need the many optional resistors at the gpio pins..

Maybe add a 4 pin i2c header that is compatible with this cheap OLED.

@dexterbot80
Copy link
Author

dexterbot80 commented Dec 13, 2023

@RoboDurden

But I do not really think people want auch a board...
And maybe move the gpio headers closer to the esp and out a prototyping area in the free space. Then you also do not need the many optional resistors at the gpio pins..

Maybe add a 4 pin i2c header that is compatible with this cheap OLED.

Can you post the electronic schematic diagram for the board in the picture?
Send me an email - I will give you a replay with a software that will help you draw the electronic diagram quickly.
dexterbot80@gmail.com

Screenshot 2023-12-13 170159

We couldn't make better use of the ESP32S3-based WT32-SC01-PLUS screen - it could probably replace the LolinS2 board and that screen you're using now.
WT32-SC01+PLUS+Datasheet-V1.5+EN.pdf

I think we could make a very nice interface using this screen and if it goes to replace the LolinS2 board it will be perfect.
Let's study this a little :)

@RoboDurden
Copy link
Owner

RoboDurden commented Dec 13, 2023

The lolin s2 mini is outstanding cheap. But no FCC certificate because not shielded..
The esp32 s3 is a risc processor and not as powerful as the S2.

If you guide me to a nice schematics drawing program, I will happily work with you.

But either create a new issue here or send email to roland@robo4future.de
Or you or I create a new GitHub repo with free PCB layout and source code.
Here my mppt based in this 20€ dcdc converter: unlisted.

@dexterbot80
Copy link
Author

dexterbot80 commented Dec 13, 2023

@RoboDurden

But either create a new issue here or send email to roland@robo4future.de

I sent you an email - please confirm by email if you received it.
The program is very easy to use and you can find all the information here.
https://www.electronic-software-shop.com/lng/en/electronic-software/splan-80.html?language=en&xoid=illi7sa2dbf08egbake58cfrpc

@dexterbot80
Copy link
Author

Hello @RoboDurden
Do you recommend ESP32-S2-SOLO-N4R2 or ESP32-S2-SOLO-2-N4R2?

esp32-s2-solo_esp32-s2-solo-u_datasheet_en.pdf

esp32-s2-solo-2_esp32-s2-solo-2u_datasheet_en.pdf

@RoboDurden RoboDurden changed the title Layout 2.14 (PPM and PWM RC remote?) Gen2.1.12 (ex2.14) - PPM and PWM RC remote? Feb 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants