JLCPCB Assembly Service – A Tiny Review

Visitor

Active Member
I've starting playing with ESP32 modules and TFT_LCD modules and can see great utility in the combo.

I wanted to build a PCB to marry a 2.2" 320×240 ILI9431 module to an ESP32 dev board and decided to include I2C and UART pins for I/O with level shifting to provide 3.3v and 5v connections. These interfaces are wired out to Seeed Studio's "Grove" connectors and Elecrow's "Crowtail" connectors, which seem to be a somewhat of a standard for sensor and other type modules.

The lever shifters are a simple circuit using N-channel mosfets and a couple resistors per channel. I also included a P-channel mosfet for input power reverse polarity protecrion. The board is pretty simple, with a total of 5 mosfets and 8 resistors. I decided to give JLCPCB's assembly service a try.

For those who haven't heard about this, if you design around their preferred parts, assembly is almost free, as you'll see in a moment. "Basic" parts are common parts that they have loaded on rows and rows of pick&place machines. You can also use a limited number of "extended" parts, which are less common parts the LCSC has access to but which aren't normally loaded on the P&P machines. I designed around "basic" parts, but couldn't find a suitable P-channel mosfet in their basic or extended offerings.

I uploaded my Gerber files, BOM and centroid files to JLCPCB. Here's the price breakdown to have 10 boards fabricated, a stencil made, and the surface mount components soldered to those boards:

¤ Fabrication of 10 pcbs: $5 ¤ Engineering fee for assembly:$7

¤ Solderpaste Stencil: $1.50 !¤ Assembly charge:$0,0015 per pad

¤ Component cost total: about $1 The total cost to assemble 10 boards was$10 – a pretty simple circuit, but assmbly worked out to a buck a board.

Oh wait. The cost of assembly pushed the price up to the point where they gave me a discount of \$8, so assembly cost me 20 cents per board!

The limitations:

¤ Only green soldermask may be used for assembly

¤ The service covers only surface mount parts that are in their system.

¤ They will assemble one side of the board only.

¤ There is an up charge for "extended" parts.

The solderpaste stencil is cut only for the parts they will install, so the pads for parts you must install are virgin, without any solder left over from the assembly process.

These boards wouldn't have been difficult for me to assemble myself but this low-cost service does open up the possibly of using smaller components than I can deal with.

I will note – I'm just an amazed customer who has received nothing for this endorsement. It's 4am as I type this, so please pardon any typos I've made.

Last edited:

Nigel Goodwin

Super Moderator
Nice, and incredibly lost cost.

Visitor

Active Member
I try to design my boards with a lot of flexibility built in. In this case it was a tradeoff between flexibility and size. Breaking out the I2C pins with level-shifting is a no-brainer, because it makes the addition of all kinds of sensors and I/O simple. The UART also supports a lot of possibilities – I have a number of point-of-sale VFDs that could be put to good use and they use an RS-232 interface. Of course all four of these pins can be used for GPIO. The I2C level-shifter has 4.7k pullup resistors, so those pins could be used for a 1-Wire interface. The UART level-shifter uses 10k pullups which should be ok for most uses. One application that comes to mind is using an HC-SR04 ultrasonic distance measurement module.

Rev A is already under consideration. I wish I has included one of those impossibly small I2C temperature/humidity chips. They are too small for me to assemble but I know JLC has some variant. I guess I should wait until this batch of boards arrives and gets tested before I do another

Visitor

Active Member
I received the assembled boards Monday but I was out of town until last night. The boards look great, and are as expected.

I was going to install the ESP32 module with sockets but I decided to solder everything directly to the board. This picture shows the back of the assembly with the ESP32 module, and "Grove" connectors for 3.3v and 5v I2C and UART connections. Several of the Chinese suppliers are using this connector for sensor and other modules.

Here's a picture with some example code running. It's hard to believe how sharp and clear these displays are. This is a solidly-constructed module with no jumpers needed for the display.

The only issue I had was remembering that the LED backlight is controlled by a pin and isn't hardwired. There were a few "oh crap" thoughts when I loaded my code and nothing appeared to happen!

Nigel Goodwin

Super Moderator
I've had exactly that same TFT demo running an an ESO32 as well

Great pictures on the displays, and pretty fast with an ESP32 as well - I've had the displays, and the same demo, running on a number of different devices, and the ESP32 was probably the fastest?.

BTW, I liked the way you spaced the UART and I2C sockets apart so they cleared the USB socket and the lead can plug in. It's the sort of thing you suddenly find out when it's just a 'little too tight' because you didn't pay enough attention.

Visitor

Active Member
I
BTW, I liked the way you spaced the UART and I2C sockets apart so they cleared the USB socket and the lead can plug in. It's the sort of thing you suddenly find out when it's just a 'little too tight' because you didn't pay enough attention.
I try to think about things like that...not always successfully!

Another area I used to have problems with was clearance around mounting holes. I solved that problem by creating a mounting hole "component" that has a 3.2mm hole and in the document layer a circled outline of a nut (to show the clearance needed to turn the nut), and a larger circle showing the space needed for a nut driver.

Nigel Goodwin

Super Moderator
I try to think about things like that...not always successfully!

Another area I used to have problems with was clearance around mounting holes. I solved that problem by creating a mounting hole "component" that has a 3.2mm hole and in the document layer a circled outline of a nut (to show the clearance needed to turn the nut), and a larger circle showing the space needed for a nut driver.
I like that as well

MrDEB

Well-Known Member
nice work there Jon.
are you going to offer these boards for sale?

Visitor

Active Member
nice work there Jon.
are you going to offer these boards for sale?
Thanks.

Probably not. They suit my needs nicely but providing even rudimentary support isn't worth the hassle of selling a few boards.

Visitor

Active Member
"Charlie's Rule" applies here.

If it takes one unit of time/effort to make hardware and/or software that's satisfactory for my use,

it takes three units of time/effort to refine it enough for our use (people working together with a shared mindset),

and three times more units of time/effort (9× the original) to refine it for their use (people without a shared mindset).

DerStrom8

Super Moderator
I have been repeatedly impressed by JLCPCB. Not once have I had a significant issue, and their customer support is top-notch. I get very quick responses when I contact them, and if there is any doubt in the design they contact me first and ensure they understand what is intended. I lost count of how many designs I have ordered from them, and not once have I had any issues with their workmanship. Five stars from me - no complaints whatsoever.

Thanks for sharing your experience Jon!

Mickster

Well-Known Member
Great JLCPCB factory tour YouTube video, by Scotty, AKA Strange Parts:

be80be

Well-Known Member
JLCPCB beautiful boards I had my first 10 made by them looked great. My part of the job was wrong but they made some really nice
boards.
I made the files with there PCB software I didn't catch my mistake.
I'm going for the gold the next time.

Nice work John

MrDEB

Well-Known Member
Lately been tinkering with the idea of a line powered DMM and using a colored display as Jon pictured has increased my interest of building such a creature using a pic
LINE POWERED
A PRECISION CURRENT SOURCE
accurate voltage source
some ideas are to display in color, the resistor colors for desired resistor as well as display the code # for smd.
display an ohms law graph with readings of component under test.
using color to designate what is being measured ( green for ohms, blue for volts and red for amps etc).
just some ideas

Visitor

Active Member
Sounds like a very ambitious project. Using a display like this will be challenging using Swordfish and a PIC 18F-series controller.

Nigel Goodwin

Super Moderator
Sounds like a very ambitious project. Using a display like this will be challenging using Swordfish and a PIC 18F-series controller.
I can't comment on Swordfish, but using XC8 on a decent 18F chip will be perfectly fine, I've had numerous 18F projects feeding colour TFT displays, including a small 'picture frame' that displays BMP pictures (of the correct resolution) off an SD card.

Visitor

Active Member
Of course it can be done, and Swordfish generates very efficient code. But it would be a difficult task because (I believe) that drivers don't exist for many TFT driver chips in Swordfish.

Nigel Goodwin

Super Moderator
Of course it can be done, and Swordfish generates very efficient code. But it would be a difficult task because (I believe) that drivers don't exist for many TFT driver chips in Swordfish.
They don't in XC8 either, or pretty well anything else, you have to write them (or download them from someone who already has).

Visitor

Active Member
They don't in XC8 either, or pretty well anything else, you have to write them (or download them from someone who already has).
Have you looked at Arduino? There are a couple well-developed sets of TFT LCD packages (Adafruit GRFX and eSPI_TFT to name two) that support all the routines needed to use a display and make the driver an abstraction layer (forgive me if my terminology is wrong). The code doesn't care what driver you need - it's specified by an include file. If the resolution is set correctly, the code happily runs on a huge number of displays without any changes but the include file.