Working on a custom tailsitter build using ESP32 and running into a strange split issue depending on how I build the firmware:
When I flash my own compiled build and connect via Misionplanner, I get no heartbeat at all.
When I use a precompiled firmware instead, I do get a heartbeat and can connect fine — but then the MPU6050 (IMU) and NEO-6M (GPS) don’t work.
So it feels like something in my build config is either breaking MAVLink output entirely, or breaking sensor init/drivers, depending on the path. Has anyone hit this before or knows what typically causes a no-heartbeat situation on a custom ESP32 build vs a precompiled one? Wondering if it’s a board config (hwdef/.h) mismatch, missing HAL feature flags, or something in how I2C/UART are being initialized differently between the two builds.
Separately ,has anyone tried using ESP-NOW as a telemetry link
Any pointers, similar experiences, or board config files to compare against would be a huge help.
What is the precompiled FW.
Which FW version is your custom build based on?
Which HWDEF you are using.
I didn’t yet installed ArduPlane but ArduRover which work ok with MPU6050, and Holybro M10 GPS. Also I added successful my own ESP-NOW to the FW.
So to solve your problem you have to give more details.
@Juergen-Fahlbusch Good news is I’ve been able to flash ardupilot to the board. The main issue I was getting was the heartbeat error and I solved this by pressing boot after the flash and it worked well.
I have landed on another mine which is the Mpu6050 and neo6m.
Neo6m is on uart1 and the mpu6050 is on i2c
One to two seconds after startup the mpu6050 seems to load gyro data but then everything is still afterwards. My gps too fixes( blue light blinking) but I don’t get any data on mission planner. I’m not home at the moment ; I’ll share my hwdef immediately I get home.
Could you tell me how you implemented the espnow: I used a c3 supermini as my esp link. So it receives from ground and forwards the data through uart to the esp fc.
First I have to understand your setup.
So which ESP32 version and board you are using as FC. Is it one of the standard develoment boards or a custom build.
Which ESP IDF setup you are using, the version downloaded with Ardupilot or some other?
How you connect the ESP FC to the PC with Mission Planer, via direct USB or via a telemetry link?
How is your ESP_NOW setup. ESP_FC with modified firmware for ESP_NOW. Is this modification something you built by your own? On the other side PC with Mission Planer connected via USB to the c3 supermini. Also here what ESP_NOW software?
@Juergen-Fahlbusch I’m using a standard Esp32 devkit v1 board. I followed the instructions on GitHub to flash so the ESP IDF comes with ardupilot.
For my setup I have a standard Esp32 devkit v1 board connected to mission planner via serial. On the drone I have the Esp32 standard board flashed with ardupilot and an Esp32 c3 supermini connected to the fc via uart.
So basically my ground esp and air c3 supermini communicate via espnow.
I would like to know how you implemented the espnow onto the fc. If I’m able to do that then I can omit the c3 supermini
Esp32 devkit v1 is fine, which USB to Serial converter is onboard of your module.
Some of these boards have a problem with te reset after flashing. Maybe thats the reason why you had to press the button. If so you also can try to add a additional 10uF capacitor between pin EN and GND.
Did you tried to connect your FC directly via USB to PC mission planner. This would be the best first to see if your system is working correct.
Let us first solve the general problem with our FC an mission planner. Than we can look to telemetry ether via normal TCP, UDP or ESP_NOW running directly on the ESP_FC.
So, do I understand correct that this problems disappeared and your last question just onl regarding ESP_NOW
If so I need sometime to prepare some SW for you as I am not on my normal workstation
Do you have some other indication that the connection between FC and Mission Planner is all the time running correct. For example how you control your system. Via RC?
Hello @Juergen-Fahlbusch
I have actually been able to figure it out after nosing about.
i wrote a custom code to implement espnow and its working perfectly.GPS and mpu6050 readings aree showing now.
The issue was my ground wire
i am currently getting it ready for first testing
@Juergen-Fahlbusch No, right now Mission Planner’s telemetry link is my only indicator, so I can’t independently confirm the FC is running correctly when the link drops.
I have connected a bt controller to my computer and pass commands through serial to a ground esp32.
both telemetry and commands are via espnow and i have a reconnect function which scans and reconnects
For general first system testing and setup a direct serial (USB) connection between FC and PC(Mission Planner) is best. This link must be stable also over longer times with no resets or reinitialisation indicated by the FC.
@Juergen-Fahlbusch Indeed, it’s very important to test. To update you on the status ; the initial test was positive i.e fc connected via espnow and the connection held for a long time. I did not record the time but also with usb it was stable.
Now I have configured my esc and my motors run, but the fc keeps restarting; I notice because the espnow link drops after some seconds connected and reconnects. I verified this by using usb serial and got the same results.
I did a lot of troubleshooting last night to figure out why. I’m still trying to find a solution
It all started after I configured the motors to run
Also, I want my plane to be a tailsitter, so I did the Q_ENABLE = 1. now my esp was very slow after that and connection dropped almost every 5s also params took about 15-20mins to load
my plan is to go back to the bare fc with no wireless capability and reattach my c3 supermini as my radio(espnow)
@Anthony_Ampah Can you share your PARAMs. On which rate is your scheduler running. On Rover this value is low.
I have also sometimes noticed these resets. All this can be tested on the bench (best without props) and a direct USB connection between PC and FC. No extra internal or external telemetrie is needed therefore.
To find out this resets I use a normal terminal software like TeraTerm to monitor and log the USB connection instead of using Mission Planner. Are you able to do the same?
On the terminal window during startup lot of readable information are shown. After successfull startup the Mavlink binary data starts which not all but some human readable. If a reset ouccours this can be identified and logged. I am interested to get such logs.
@Juergen-Fahlbusch I started the scheduler with 200,then 100 now, 50 also runs fine but i cant arm with 50hz. i wanted to use the arduino ide to monitor errors but most of the serial messages from the fc are gibberish
I think if i upload my code you would find something. i have this feeling it will run fine when i check my code