For this adapter I used the least amount of parts I could. Some/most of the components I decided to not add are meant to improve stability, so I expect this adapter is going to fail from time to time to program the chip.
My experience has been so far (after a few hunderd writes) that it is sufficiently stable for hobby level work. So far I don't plan making it more complex.
I only had one occurence when it failed to write the chip and, upon retrying, it succesfully flasthed the new firmware. I consider this a sufficiently small annoyance so I kept the the adapter simple.
The voltage from the ESP (3.3V) seems to be enough to register as HIGH for the Arduino so using a voltage divider to adapt the logic levels from Arduino to ESP and no adapter from ESP to Arduino works fine.
This adapter needs just a few components.
Note: Prices are as of Dec 2019.
- Arduino UNO $2.99/1 pcs.
- Header pins $6.39/20 sets of male/female pairs
- 1K rezistor $1.78/10pcs
- 2.2K rezistor $1.78/10pcs
This is the circuit diagram manually drawn because it is a bit easier to follow when you're trying to verify your connections.
I have used KiCad for designing the PCB and using DRCNow (free version) for validating them.
Manufacturing the PCB takes about 1.5 weeks, so it is worth 'optimizing for high latency' here. That means:
- Go over the circuit multiple times. I also printed the circuits on paper and went over them with a pen.
- Use any verification you can before sending the design for manufacturing.
- Run the 'rule checks' and also go over the circuit multiple times looking for errors.
The KiCad project containing the schematic and the PCB design of the adapters you see in the pictures (the one I have made and currently using).
Note: Once I had the PCBs, in my hand I realized to things (maybe they save you some money/effort):
- I had a few places where I noticed things can be improved, when trying to use the boards.
- I could have been a bit more efficient by putting all the boards on the same panel.
This way I could have ordered 5x of a little bigger pannel rather tha 5x 3 different small pannels.
This KiCad project contains all boards with fixes to the minor issues above. I just did not order new PCBs yet so they're not really tested.
I have used the following two chinese manufacturers, and I think both deliver good results:
- JLCPCB seems to be a little cheaper, it has fewer color options for boards and maybe a tad faster in delivering the boards (I tried them when the COVID-19 outbreak was going on and it is possible that messed with the first impression).
- PCBWay I think it has better ordering UI, it is a bit more expensive than JlcPCB.com, and it has more color options.
Additionally I found this european one:
- EuroCircuits. They can produce single boards, but my impression was that even for single boards they are more expensive than the Chinese ones above, so I did not actually tried them.
Also maybe interesting to note there is this site that compares offers from multiple manufacturers. It might be worth a look. and they both produced excellent quality PCBs at relatively reasonable prices.
In all my projects I try to preserve the Gerber files, which is what you need to order the PCBs (I might forget for some projects for which I did not order PCB boards).
Look for a folder called Gerber in the project you are intersted in.
Basically the ordering is in three steps:
- First you upload your Gerber files, define the parameters (i.e. colors, number of layers, size, etc.)
- Then somebody checks your submission and if there is anything wrong with it, they'll email you to let you know.
- If the check passes on your Gerber files, the manufacturing starts (which takes 1-2 days, depending on which one you used)
- Then the boards are shipped and they take around a week to get to you (if you paid for the reasonable fast shipping, otherwise it takes around a month).
The boards they arrived from JlcPcb.com
Front of the board, after soldering the socket and header pins
Back of the board, after soldering the socket and header pins