I've mentioned this in a few of my build threads and a couple people have asked for more details. So I figured rather than bury it in one of my existing threads I should just go ahead and start a new one.
I've been experimenting with BLheli instead of Simonk for my ESC's since it supports regenerative braking (well, simonk does as well...but it's easier to setup on BL and seems more supported) and because I was curious what BL was like now that it supports atmel processors as well as silabs. I'm pretty impressed by it so far and one of the big things I like is the BLHeli Suite for programming/flashing. It supports tons of different interface options and makes it really easy to change settings on your ESC's.
You still have to do the initial flash the traditional way - either with a socket tool, or somehow attaching 6 wires from a usbasp ISP programmer to the 6 programming pads. But if you choose to use the blheli bootloader when you do that initial flash you get a lot of flexibility in how to flash and change settings afterwards. You can use a USB Linker like the afro tool, you can use an arduino as a linker, there's code that can be loaded into MW to let a MW board act as a linker (which is a very cool idea I'm shocked hasn't been used more) and you can use a 1-wire interface which is what I'm going to detail here today.
The 1-wire interface uses a standard "FTDI" serial to usb adapter. It just requires one resistor and one diode wired up - the BLheli suite comes with instructions on how to do this and I covered how I made mine in this post from my Twitchity quad.
The way this works is when the ESC first powers up it initially goes into a bootloader mode for a second or so which allows a programmer to attach to it. If no programmer attaches then the ESC continues booting as normal, but if a programmer attaches the ESC stays in bootloader mode and you can reflash it and modify it's settings through the 1-wire interface.
Here's my programmer setup. It's just an FTDI adapter with the 1-wire interface I made attached (see the link above for details on how I built it.) The interface is just a resistor and diode and the resistor is actually optional - but it allows for faster connection speeds having it so it's worth doing right.
My interface terminates in female headers because on the Twitchity quad I built and first used this on I added 2 pins on each ESC for reflashing. Normally you'll have it the other way around with female connections on the ESC's and male on the programming interface...and such is the case on my Knuckle/Tau build I'm updating tonight. So I grabbed some spare wire and pins and wired up an adapter for my adapter. Due to the setup on my Tau I also added another adapter for my adapter for my adapter to convert it back to female for the ground connection. Yeah, it's ugly but it's not like anyone but me has to look at it The white wire is the ground and the one with the red heat shrink is the signal. These can just connect straight to the ESC if you're using normal ESC wiring...my wiring isn't quite "normal"
Here's the inside view of my setup. The orange wires are the ESC signal wires and I put them all on one header so I can connect/disconnect them all at once and not worry about which one goes where. The header has a small triangular mark indicating pin 1 so it's quick and easy to hook up correctly. Since I have all of these on one header connecting to ground for me is a bit trickier than if you're just using normal servo connectors. I figured the one four position connector is lighter than 4 - 3 position headers which are really only needed for 1 position each and I like the ease of one connection for all of my motors instead of 4 individual connections.
And here it is setup ready to flash! The signal wire from the 1-wire interface goes to the socket for the ESC I want to update or flash, and the ground I just connected to a convenient pin on my FC. Since I'm using a DiscoveryF4 developers board there are tons of ground pins to choose from, but just about any flight controller will have a number of ground pins you can use and most people will probably just use the normal servo connector from their ESC with signal/power/ground all right there.
And that's it really! To change settings on my ESC's I just loosen 4 nuts to remove the top plate of my quad, pull off the motor connector and hook up to the socket for the ESC I want to work with. Since I was just making configuration changes today I used a normal flight pack to power things, but normally it would be best to power the ESC's off a current limited source like you do when flashing. Since my ESC power wires are soldered right to my power buss and I didn't feel like making up a pigtail to power my main connector from a better source I choose to just live dangerously and use my normal flight pack tonight.
Common mistakes (for me at least) when doing this are forgetting to select 1-wire as the interface in the BLheli suite since I sometimes use my usbasp for full ISP style flashing, and forgetting that the connection can only occur when the ESC is first powered up. So you have to first hit the "read ESC" button in BLheli suite BEFORE powering the ESC. The suite will sit there with a waiting prompt once you hit read and instruct you to power up the ESC. As soon as power hits that ESC the suite should connect and alert you if it was successful or unsuccessful. If it was successful then you can make your changes and hit write, or reflash. Boom, all done!
When you flash with blheli you can choose to have 1-wire on an alternative pin. If I was planning on messing with my ESC's a lot I'd have done that and run them to a separate header exposed on the outside of the quad. But I don't plan on changing these settings very often so I don't mind opening up the quad and disconnecting the motor wires. Still, it's nice that BL is so flexible since there are so many ways to do this!
I have a video uploading of me changing a setting on all four ESC's and giving a bit of a tour of the guts of this quad...but it's after 1AM, I have a strenuous hike up a mountain first thing in the morning, and there's still over 70 minutes to go on the upload. So I'll come back and add it later. It's set to publish as soon as it uploads so you can always just check my youtube channel if you don't want to wait for me to update this post
As always any questions fire away and I'll do my best to answer!
I've been experimenting with BLheli instead of Simonk for my ESC's since it supports regenerative braking (well, simonk does as well...but it's easier to setup on BL and seems more supported) and because I was curious what BL was like now that it supports atmel processors as well as silabs. I'm pretty impressed by it so far and one of the big things I like is the BLHeli Suite for programming/flashing. It supports tons of different interface options and makes it really easy to change settings on your ESC's.
You still have to do the initial flash the traditional way - either with a socket tool, or somehow attaching 6 wires from a usbasp ISP programmer to the 6 programming pads. But if you choose to use the blheli bootloader when you do that initial flash you get a lot of flexibility in how to flash and change settings afterwards. You can use a USB Linker like the afro tool, you can use an arduino as a linker, there's code that can be loaded into MW to let a MW board act as a linker (which is a very cool idea I'm shocked hasn't been used more) and you can use a 1-wire interface which is what I'm going to detail here today.
The 1-wire interface uses a standard "FTDI" serial to usb adapter. It just requires one resistor and one diode wired up - the BLheli suite comes with instructions on how to do this and I covered how I made mine in this post from my Twitchity quad.
The way this works is when the ESC first powers up it initially goes into a bootloader mode for a second or so which allows a programmer to attach to it. If no programmer attaches then the ESC continues booting as normal, but if a programmer attaches the ESC stays in bootloader mode and you can reflash it and modify it's settings through the 1-wire interface.
Here's my programmer setup. It's just an FTDI adapter with the 1-wire interface I made attached (see the link above for details on how I built it.) The interface is just a resistor and diode and the resistor is actually optional - but it allows for faster connection speeds having it so it's worth doing right.
My interface terminates in female headers because on the Twitchity quad I built and first used this on I added 2 pins on each ESC for reflashing. Normally you'll have it the other way around with female connections on the ESC's and male on the programming interface...and such is the case on my Knuckle/Tau build I'm updating tonight. So I grabbed some spare wire and pins and wired up an adapter for my adapter. Due to the setup on my Tau I also added another adapter for my adapter for my adapter to convert it back to female for the ground connection. Yeah, it's ugly but it's not like anyone but me has to look at it The white wire is the ground and the one with the red heat shrink is the signal. These can just connect straight to the ESC if you're using normal ESC wiring...my wiring isn't quite "normal"
Here's the inside view of my setup. The orange wires are the ESC signal wires and I put them all on one header so I can connect/disconnect them all at once and not worry about which one goes where. The header has a small triangular mark indicating pin 1 so it's quick and easy to hook up correctly. Since I have all of these on one header connecting to ground for me is a bit trickier than if you're just using normal servo connectors. I figured the one four position connector is lighter than 4 - 3 position headers which are really only needed for 1 position each and I like the ease of one connection for all of my motors instead of 4 individual connections.
And here it is setup ready to flash! The signal wire from the 1-wire interface goes to the socket for the ESC I want to update or flash, and the ground I just connected to a convenient pin on my FC. Since I'm using a DiscoveryF4 developers board there are tons of ground pins to choose from, but just about any flight controller will have a number of ground pins you can use and most people will probably just use the normal servo connector from their ESC with signal/power/ground all right there.
And that's it really! To change settings on my ESC's I just loosen 4 nuts to remove the top plate of my quad, pull off the motor connector and hook up to the socket for the ESC I want to work with. Since I was just making configuration changes today I used a normal flight pack to power things, but normally it would be best to power the ESC's off a current limited source like you do when flashing. Since my ESC power wires are soldered right to my power buss and I didn't feel like making up a pigtail to power my main connector from a better source I choose to just live dangerously and use my normal flight pack tonight.
Common mistakes (for me at least) when doing this are forgetting to select 1-wire as the interface in the BLheli suite since I sometimes use my usbasp for full ISP style flashing, and forgetting that the connection can only occur when the ESC is first powered up. So you have to first hit the "read ESC" button in BLheli suite BEFORE powering the ESC. The suite will sit there with a waiting prompt once you hit read and instruct you to power up the ESC. As soon as power hits that ESC the suite should connect and alert you if it was successful or unsuccessful. If it was successful then you can make your changes and hit write, or reflash. Boom, all done!
When you flash with blheli you can choose to have 1-wire on an alternative pin. If I was planning on messing with my ESC's a lot I'd have done that and run them to a separate header exposed on the outside of the quad. But I don't plan on changing these settings very often so I don't mind opening up the quad and disconnecting the motor wires. Still, it's nice that BL is so flexible since there are so many ways to do this!
I have a video uploading of me changing a setting on all four ESC's and giving a bit of a tour of the guts of this quad...but it's after 1AM, I have a strenuous hike up a mountain first thing in the morning, and there's still over 70 minutes to go on the upload. So I'll come back and add it later. It's set to publish as soon as it uploads so you can always just check my youtube channel if you don't want to wait for me to update this post
As always any questions fire away and I'll do my best to answer!