Vlog #66: Let's define a standard ESP8266/ESP32 programming header!
Vložit
- čas přidán 25. 08. 2024
- www.superhouse...
If you don't put USB on your project, you have to decide on a programming header to use. But everyone does it their own way: Sonoff has theirs, wEPS32 has another, many projects have them and they're all different!
That sucks, so let's fix it by deciding what we think should be the conventional programming header format for our projects.
And if we're super-lucky, maybe we can convince ITEAD to fix the incomplete Sonoff programming header and make all our lives easier in future.
Go to the link above to discuss it on the SuperHouse forum or Discord server.
Please support me on Patreon for the opportunity to receive exclusive discount codes and other benefits: / superhouse
Just add the two extra pins. This way it will keep the old standard and be backwards compatible with the the older sonoff gear.
I was thinking the same thing.. have the last two pins on a 2-gang flat cable (or twisted pair) so that the extra pin headers don't get in the way when using as a regular FTDI programmer. Could also have a matching 2-pin male on wires you could solder to the right pads on an ESP board that's missing them.
Why not both: Allow the 2.54mm 6 pin sonoff+2 type header, and the tiny 2x3 pin header. On the programmer, put one on each side of the PCB. This way, it is easier for itead, other companies and your personal projects where you don't care about size, but you'll still be able to use the very small connector when there is just no room
Sonoff + two extra pins. 2.54" pitch. That is good enough.
The 1x6 header would be easier to use by pressing at an angle against the pads on the PCB. It would probably be darn near impossible to reliably hand press a 2x3 header long enough to program the board. (assuming that there aren't actually sockets to plug in to).
It would be possible to have the holes there, and then you just pressfitt a male adapter. No need to hold while programming.
2 extra pins would be perfect and I believe easy to implement for everyone.
I was just thinking about this couple hours ago, when submitting my project to jlcpcb and boom, CZcams shows me your video. +)
I think asking for design changes is like like a kid asking the bus driver to pull over for an ice cream.
What I’d like to see is a printable mount, one for each board type, to which attaches a clampdown unit. On this clampdown unit would be the necessary electronics to flash. Pre located thanks to the exact guidance of the mount, the clampdown unit would have spring mounted pins that are correctly spaced to mate with the holes. Thus no soldering to get good electrical contact. Spring mounted pin will not do damage should there be misalignment. Add or remove pins like detachable teeth and you future proof it for when board designs change. Wiring back to the electronics would be swappable to pick voltage, TX RX etc.
Procedures are
Take units out of housing
Select base locator for that model and attach to clampdown unit
Connect punch down pins to electronics via appropriate wiring
Insert SD card
Insert board to be flashed
Engage punchdown
Lock
Turn on
Start button to begin flash process
Unit indicates complete and turns off
Unlock and remove, repeat for next board “factory style”
Just seems more future proof if it could be done?
I've considered something like this, or maybe something that isn't product dependent, but rather matches up directly with the esp8266.
Part of me envisions a tool that functions like a press of sorts that just lowers a series of "pogo pins" onto the esp8266.
I've already done this for the Sonoff Mini. It's part of what started this whole question. My programming jig uses pogo pins to control GPIO0 and RESET on the Mini, so it can do auto-reset. But the question is, what should the format be for the programming header that connects to the jig? The jigs can all be specific, but the programming header still needs to be standardised. That's what this is trying to solve.
Good idea. I did they same through my designs with ESP32 only with a muuuch smaller header to save space.
What header did you use? I'm currently planning on supporting 1x6 and 2x3 in both 2.54mm and 1.27mm, so a 2x3 1.27mm header is quite small
@@SuperHouseTV I'm using a TAG-connect cable, saving costs on the PCBs for a header but the cable itself is overpriced.
Having a short cable from the programming adapter to the target probably makes it simpler to connect. How about trying to standardize the order, and then provide the 2mm vs. 0.1" pitch connectors on the programming device to make it easier to have inexpensive ribbon cables that are 'straight-through' for both formats.
The other aspect, independent of the physical connectivity is to define the programmer interface. While it can emulate a serial port and support using the usual serial programming tool, wouldn't it be interesting if it looked like an OTA target as well? Something to proxy that first programming step before the target is capable of OTA upgrades.
Part of the recommendation to expressif might be the pad layout with slightly offset alternate holes, so you could insert pins and have them stay in place, rather than needing to populate a header that's only going to be used once.
ITead's Sonoff products all have different headers as it is anyway. The pins locations are defined as much by the position on the board as they are by any "standard."
I think it would make a lot more sense to come up with a standard endorsed by EspressIf than focus ITead. Especially given ITead aren't the only company making products based on the ESP chips any longer. Sonoff are great. I have a lot of them. But I think the focus shouldn't be just that range of products.
Yes, exactly, this is more about standardising for other people (particularly hobbyists) who make their own hardware than it is about Sonoff. That's just an example of a well-known commercial product that could benefit from following the same convention as everyone else.
Very interesting. Put two extra pins on it.
I would vote for both a 1x6 2.54mm pitch and a 2x3 2mm pitch as options. More annoying for the hobbyist who ends up having both adapters lying around; but more flexible for PCB layout, as there are form factors that don't suit 1x6 (2.54mm wide and 15.24mm long) and other form factors don't suit 2x3 (about 4mm x 6mm). 3.3v and a standard order of signals too.
Given the manufacturers at volume are pre-programming their chips and don't strictly need these pins at all, it's somewhat nice that they are offered at all.
Great effort, My view is to add the extra pins you already have the working design and I believe in the KISS approach. I would think the best option is to use the de-facto standard from the majority which is the 4 pins, and add the two pins to make programming easier. This still allows the flexibility to use a daughter board for any of the existing variations that scatter the pins around. Even ITEAD have some that are scattered but you already have a daughter board to fix that.
Really like the idea. One of the other advantages of having usb chipset elements on a seperate board along with the bootloader is evident for projects that look to minimising power requirements. If you have the CPU capable of running at extremely low consumption levels, having to power unnecessary usb interfaces negates the benefits, or you need more complex schematic to switch this extraneous circuitry off when not in use.
I don't have a preference for single in-line or 2x6 interface. If it becomes a standard doing forward it doesn't really matter, but having a 5v to 3.3v regulator on board would be a real boon.
I think we should keep the ITEAD standard and just pitch to add the extra two pins. Certainly a lot easier and it is a format a lot who use ITEAD products are already use to using.
It is more than just lobbying ITEAD though. There is Shelly and a host of other brands that use ESP chips in there various variants. I think it would need to start by lobbying at Espressif as the chip designer to add it as a "recommended practice" to the datasheet.
Being a software engineer I would prefer to see a 'box' that contains everything necessary to control a sonoff using its diy mode. I believe it should have a WiFi access point preconfigured with the sonoff diy ssid/password, an http server and a piece of software that would give the user the interface to discover all sonoff devices and control them by calling all supported DIY API restful commands including flash. This could perhaps be packaged in a USB dongle and it would replace eWeLink while being completely local.
Since Sonoff went the way of the diy mode it may make more sense to try to lobby them into making such a device instead of redesigning their PCBs and changing their whole manufacturing process.
What a great project. Good luck!
Do use 1*6 and 2*3 headers. Allow pitch to be 2.54 mm and 2 mm for future space saving. It could probably use same adapter for the 2*3 header in both pitches.
Mark the 1 pin with a huge mark on the bord, or also cut one pin and plug on adapters, then it can't be turn the wrong way around.
That is what I would do. It will be easy to change to the right plug, and it will work with anyone.
Or to save some more money, just have holes instead of pins, and then you can push a male socket into them. And have one hole not drilled, so you can't turn the plug the wrong way. It will save money, and I guess that will be pleasing.
Priority for me - only requiring highly available parts that is in most people’s ‘junk’ box, and well labeled on the board.
Definitely important. I think 1x6 0.1" pitch headers are about the most common thing that could be used.
2x3 seems a lot better for new projects. For Sonoff a simple cable adapter will do the job (so they will not have to re-design everything)
Here is what I would say, come to a consensus on 2 or 3 options for the pinout design. This way manufacturers have options based on the space available for the esp products. Then the ESProg have it be 3 sided plus USB input and each side is the diff pinout so it can be used with either of the 2-3 "standards"
Simple for the pinout, but not voltage.
Support 1x6 in order you specified for both 2.54 mm and 1 mm spacing.
For 2x3, use same pin order and support in format 2.54 mm and 1 mm. Then programmer can accept straight and 2x3, and then make programmer autodetect if it needs to supply voltage.
Edit: I really like the 3x2 on the edge, but access in system might be limited.
How about a test clip that fits the package? I used to love those back when everything was in a DIP. I'm guessing there would have to be a few variations for different chips/packages, but once made, it would just be a matter of clamping (or pressing/holding) on the test clip (perhaps with integrated buttons for reset & assert) and then pushing the new code to the ESP.
What about all those “unused” headers on the basic? It would be great if they would connect a few more GPIOs to those
shelly has a header that exposes gpio0 - unfortunatly they have been changing the header to add various extra pins based upon developer feedback (I guess!) but the pins are on a standard 2.54 pinout and easy to access (and build a connector for programming).
Whilst not all shelly products can run Tasmota, a number of them can.
i dont think a standard header will be easy across multiple brands, and even EspressIf would struggle to make this happen. BUT you could lobby to get a single vendor to be consistent across their own products. It is a selling point which is why I would consider shelly for certain options over Itead.
Does the format realistically make any difference, it really is a matter of six of one and half a dozen of the other. As you say both formats have their good and bad points. So why not actually try to mandate both, let the project makers choose. You then promote the inclusion of the six pins and their layout. That way if someone really wants to use a JST or a 2x5 you still get straight through pin compatibility.
Yes it makes a difference to the programmer but you could simply put a 6x1 on one end and a 3x2 on the other just increasing the BOM cost slightly. And you can also pragmatically deal with the voltage in the same way put a 3v3 regulator on the programmer board and a switch/jumper pins to choose which you use, you can also allow for the third option of no supplied power if the target has its own power. Again an increase in BOM but this is a 'one-off' cost and not an increase into the project costs which get multiplied.
It may be easier to promote one standard rather than leaving it up to guess work as to what each board will have. It would certainly be easier for those making adaptors as everyone could be guaranteed the pins would be the same for boards that contained a header.
I doubt it will ever be made a standard of any kind as manufacturers have their reasons for wanting us to use their own firmware and not reflash devices, but it's worth a shot.
@@EsotericArctos It is the pin order and placement that I was suggesting is the standard not the actual header. It is so much easier to make an adaptor from say JST if the pin outs match than it is to make it if the pins are in different places. Since this would only amount to a 'recommendation' than the easier you make it for the project the more likely you are to get it adopted. So a little bit of trace routing versus a whole new part which has to be sourced and purchased. Assuming they put the connection on that is.
Exactly. It’s not rocket surgery to make adaptor cables.
The ESP8266 and ESP32 can bit-bang USB low speed. What we need to do is convince espressif to update the firmware to allow a direct USB connection. They could use the GPIO2 strapping pin to indicate UART (low) or USB (high) boot.
Do a universal multipurpose programmer, your proposed standard board with a switch for voltages + adapter boards to extend this to existing standards. Plus points if you label the extension boards clearly and offer straight and right-angle variants.
The problem now is that the sonoff mini now is very hard to flash since they removed all the pins. That was a shock.
I like this idea. Have you considered contacting each of the company's and see if they are interested in building a industry standard? This project could support project well into the future after the esp32 is out of date.
That's exactly the plan.
I don't think it's the form of the header on the device, but the fact that gpio0 and reset are accessible. I have used adapters for years for programming various platforms. For Atmel alone I have a handful of 10 to 6, 6 to 10, jtag to this, and others. I hope manufacturers someday realize that the hacker community can make or break their business.
You really think that a few tens of thousands of off-hours tinkerers (I’m one) can outweigh the buying power of the major clients ordering from Espressif by batches of 10000 ? We are followers here. Ants.
@@ArnaudMEURET Sigh.
wESP32-Prog header, but with 3.3V
would a ribbon cable make it easier to have multiple pin outs and easier to adapt?
The industry seems to have switched to programming headers with 0.05" pin spacing. I'd use something similar to the SWD socket. This might require a ribbon cable to connect the programmer to the board, but that would allow the programming socket to take up less space on the target board.
the simpliest connector would be singelsided keyed pcb edge connector. And both 3v3 and 5v on programmer. If its not compatible with 5v then its not connected
Good morning from the USA!
@Paul Allsopp just waking up here in Texas.
Resembles to the Qwiic Connect System Sparkfun promotes for I2C. I support your proposal!
look into the SOICbite, was featured on hackaday... uses a SOIC-8 test clip for a really small double sided edge connector footprint and the post includes eagle files
you can even use a SOIC-16 clip and/or make it reversible if you need < 4/8 pins
for an end product maybe use a dummy SOIC-8/16 IC for easy vertical access? then the clips are ready made with a row of pins on each side for some kind of ribbon cable
That's a clever idea for a connector, but it doesn't solve the problem of defining a standard pinout for ESPxx boards :-(
wow nice video
If the boards came with OTA update possibility as default, there would be no need of a programming header.. So perhaps another way (or an alternative) is to make the OTA programming standard?
How about an entirely new connector format in the shape of the Open Hardware logo - www.oshwa.org/open-source-hardware-logo/ - but specifically intended for pogo pin flashing. The logo is already keyed (it literally incorporates a keyhole shape) and supports 7 contacts (gear teeth). Your PCB would then only need the logo pattern and maybe some kind of physical orientation key to help align the pogo pins. Just my 2 cents worth. :)
I think universal programmer can have more than one connection header. Let's say sonoff + 2 extra pins 2.54 mm from one side, and 2x3 1mm from another
Manufactures can keep their existing headers, and add a standardize header. The header should be non-symmetric.
Exactly what I was thinking. 4 that exist, empty space, two to add. Extra hard to plug in backwards. One extra part to assemble, but worth it IMO.
It should have both 5V and 3.3V headers. Since at times you may want to only flash the MCU, not power the rest of the device.
Also, standard pins for UART console and troubleshooting.
So why not use one of the pinouts popularised for JTAG already?
I use bare minimum in my projects RX, TX and GND. There is also "BOOT" pushbutton on my board and it triggers flash mode.
Then using RT, TX and GND i am able to program it using PC.
Buttons on the board is fine, but I find it's a huge benefit to have auto-reset when working on projects. Often I'm not even physically near the target board: it can be connected via USB to a machine in my lab, and I might be working on my laptop somewhere else and needing to re-flash remotely. What I need is a header that allows programming with auto-reset.
From what I've heard, Sonoff came close to making their products un-flash-able... Is there really a chance they'd agree to modify their boards to make it easier? True, the reason they didn't was the massive feedback from the Maker community, but still.. @Karinya Fields has a good idea that I took one step further - just add the extra two female pin.. thingys (what are they called?? receptacles?) on a twisted pair or two wires from a flat cable, and have a similar loose 2-pin male on wires to go with the programmer. If the board you want to flash has all the pins, you attach the 2-wire female header, then the programmer on the rest of the pins. If not, solder the loose 2-pin header wires to Reset and GPIO0 pads, and use that to attach the wired female header.
Having the extra two lines loose makes sure those female header pieces won't get in the way of something on the client board when you plug in, and still lets you use it easily for boards that do have the extra pins.
Don't care, but glad to follow once a recommendation is defined.
Hmm standardising the program header... That would be so amazing. What the standard would look like, i'd rather let ppl that are smarter them me decide..
Overall I'm kinda split on this. I really like the idea of the 2x3 header as it's a bit more compact, but I also really like the 1x6 for backwards compatibility... At least with some existing devices. Overall... I think the 2x3 header would be better in general though.
I couldn't decide, so I'm going with both :-)
@@SuperHouseTV two standards are good enough, as a simple switch of adapter cable would be enough. But yes all needed pins should be there.
Good luck.... :P
I need 5V DC pin for ACS712 add to it.
Need to have color system to prevent “Smoke” ex: Red is 5V DC, Yellow is 3.3VDC and Green is Ground etc. ..
This is a super-useful point: boards that require 5V to power peripherals. So the question is, do you need the 5V while the board is being flashed, or could you power your board directly on the 3.3V rail during flashing, and then power it from your normal power source when the programmer isn't plugged in? My use-case is primarily to flash the boards during development or just initially, then in most cases OTA takes care of updates. During the few seconds taken for flashing, I don't normally care if peripherals are running.
Why not asking to be able to upload tasmota-minimal (with wifi manager) straight from the ewelink app ota?
Is it not doable? I think it's much easier to work on software rather than hardware and this way may open the gate for others(tuya) too.
That only solves the problem for Sonoff. This is a much broader question, mostly for people who design their own hardware.
Hello Jonathan an apology for this question in this video I have a couple of doubts regarding sonoff, According to me, there is only one company that manufactures this type of products, however I found videos of you in a company on alibaba Shenzhen FreeShine Technology ltd, They are manufacturers or sellers?
Would sonoff want to make it easy to void thier ACMA, Ctick certification.
sonoff should be coming to us.
@@sbfarmer8 unless changing firmware on hardware doesn't void Ctick or RMA.
.1" headers are better if you don't be the exact programmer, since you can use jumpers. If you have to make a custom programmer anyway, why not make it star-shaped with a different header in each end? It gets less space efficient, but you only need one anyways.
I have a programmer that uses a 10 pin tag connect header to breakout the uart and JTAG
Oh yeah the gpio0 and reset as well. It breaks them out really nicely on one layer
Yes, the Espressif JTAG standard is already set and I'll be following up with a video about that later too
2x3 or 5 inline on programmer, either on boards
What is that low profile pin header on the weps32? Where can I get those?
I'd like to see something standardised, which also supports atmel/atmega chips as well.
That would be ideal, but the reason for this is to work around the specific requirements of the Espressif chips to put them into bootloader mode. Whatever header is used for ESPxx will have to be specific to them.
@@SuperHouseTV That makes sense, one could perhaps just re-use pins (reset, tx/rx, etc) or just have them n/c on the footprint on the product's board if it doesn't use the pins. Otherwise I am a huge fan of edge connectors, and use them on all my PCBs for a home lab programmer.
IMHO the decision is simple: "Don't piss off the 800-lb gorilla." Add 2 pins to the "standard" interface.
Yes, that sounds easy, if you accept that the standard header is what ITEAD use. Then the question is what voltage to supply to the target. Boards such as the wESP32 require 5V, others such as Sonoff require 3.3V.
Hard coded ota code...on chip..no extra hardware required.
Ever heard the phrase "What is a camel? A horse designed by a committee!" Just sayin, lol.
super easy, all ITEAD (or anyone else)has to do is make the break out holes like they use to do and you use a solderless header( www.adafruit.com/product/3413 ) on your board. its your best option because it wont cost ITEAD any money except for the drilling of the holes on the pcb. we just need the gpios broke out, the rest is easy.
Yes, that's the whole point of this question: getting GPIO0 and RESET broken out, what order to put the pins, and what voltage to supply to the target. Connectors are easy.
Espressif already has that: github.com/espressif/esp-iot-solution/blob/master/documents/evaluation_boards/ESP-Prog_guide_en.md
Yes, I know, but their guide doesn't go far enough. It leaves the voltage ambiguous, which I seriously dislike, and it doesn't include a linear format option which most people want. What I've drafted so far is heavily influenced by the ESP-Prog board.
is there an auto detect for voltage levels ie 3.3 and 5 volt ??
Probably not, so I guess 3.3 volt is what is needed to program the device.
3.3 VDC vs 5VDC solution:
www.amazon.com/gp/product/B074M8TM81/ref=ppx_yo_dt_b_asin_title_o07_s01?ie=UTF8&psc=1
Hi Jonathan, I plan to use the wesp32 or www.olimex.com/Products/IoT/ESP32/ESP32-POE/open-source-hardware as a base board for my home automation ( have to finish the house first lots of cat5 and 6 cable ) it going to be POE and MQTT based. (thanks for your previous excellent vids. ) I am all for standards it makes life easy. And to be honest i am not that skilled with hardware so it would be tedious to figure stuff out. I be very interested in what you hardware wizards come up with.
The wESP32 is great, and Patrick has put a lot of time thinking through this exact problem. However, we have different opinions on whether the target should be supplied with 5V or 3.3V.
Check wemos board!
Check what about it? Wemos boards have onboard USB, which isn't relevant here.
Maybe he meant programing with something like this board: www.aliexpress.com/item/32569199462.html?spm=a2g0o.productlist.0.0.68d0502a2kh8dW&algo_pvid=fec7a7c0-3f7b-4701-8572-009d9489e60f&algo_expid=fec7a7c0-3f7b-4701-8572-009d9489e60f-43&btsid=702612f0-81b9-4bb7-a626-34e4213c4add&ws_ab_test=searchweb0_0,searchweb201602_6,searchweb201603_53 coupled with these www.aliexpress.com/item/32594179764.html?spm=a2g0o.productlist.0.0.bc5b3d09BDBHz8&algo_pvid=3552a48f-b014-49e9-9425-f3d62b87734a&algo_expid=3552a48f-b014-49e9-9425-f3d62b87734a-2&btsid=79925cff-4bd1-43bb-87ae-8439999b4a3d&ws_ab_test=searchweb0_0,searchweb201602_6,searchweb201603_53
It's the system I use but it would be awesome if they adopted your standard :)
Use the one with 5v and add a switch to change this when needed to 3.5v.
Hi, can l watch out my tank water level in ewelink with a tool like Kemo M167N Water Level Meter Module?
THANKS.
I don't get it I just use this
rover.ebay.com/rover/0/0/0?mpre=https%3A%2F%2Fwww.ebay.co.uk%2Fulk%2Fitm%2F262285972686
With a switch in the 3v3 line to the sonoff and just hold the sonoff's button down when switching on the 3v3 line to the sonoff ...works every time , I've programmed hundreds of sonoff units... I've only ever played with two of the itead bulbs ..imho.. they're not bright enough to be worth 'hacking'
The point of this is to have a header that supports auto-reset for the target board. Otherwise there wouldn't even be a question.
Give a proper photo of what you make (not just .2 sec of image on the video). Encourage others.
Seriously? Are you saying that I don't provide enough detail with my build videos, which include complete assembly steps, explanations of *why* I did things (not just how to do them), all source code and hardware designs on GitHub, and written documentation with photos to go with the video?
I don't think this will ever have an effect, it never did :) non of the big electronics manufacturers will ever listen to some hackers around the world and put headers on their production grade products cause that's dumb. BUT I'm in, I would like either some 2 by 3 x 1.25mm pitch holes or a header (through hole or surface mounted I don't care) or just make the GPIO0 and Reset(optional), Tx, Rx just available as pads somewhere
Or just don't buy sonoff and design it yourself
This isn't about Sonoff specifically. It's exactly about other people who design their own hardware. I've designed more than 300 boards.