Research on hardware selection
For the project, BLE hardware needs to be chosen. I’ve considered 2 options: using a ready-made BLE board and custom-made PCB.
Option 1. Use ready-made BLE module, add general-purpose MCU
-
BLE-SER-A-ANT, CH9140 IC inside ( datasheet in Chinese, in English, mirror). The size is 10.2x10.6mm, the board includes a PCB antenna (which is very good). Programming not possible (the IC is not an MCU). Configuration is also extremely limited, no AT commands or anything like that is provided, there is also a mode selection pin. So the module is good for single experiments, but not so much when you have several projects with it (e.g. you can’t change its Bluetooth name, so it will be difficult to differentiate them). There is a similar CH9141-BLE-TPT module of same dimensions, based on CH9141DS1 IC that has AT commands support, but it’s not available on LCSC (and a bit more expensive than BLE-SER-A-ANT on AliExpress).
-
JDY-06 mini, based on TI CC2541. It’s 14.6x13.2mm, more expensive (by a small margin). Can only be used as a bridge for another MCU (theoretically, it’s programmable, but has obscure architecture with no freely available toolchains and documentation).
-
E104-BT5005A, based on nRF52805 (ARM). Size is 9x9mm, very attractive, but more expensive. This MCU lacks PWM, so the modules can only be used as a UART bridge for another MCU if motor control applications are considered. Downside is that the pads are not on edges, so it’s not hand-solderable (and could be not heatgun-solderable).
-
E104-BT5010A, nRF52810-based (also E104-BT5011A with nRF52811). Larger (11x16mm), more expensive. In theory, can be used standalone without extra MCU (it has enough PWM channels to attach H-bridges directly, and PWM can be remapped to any pin).
-
Ai-Thinker Ai-WB2-01F, based on BL602 (RISC-V). Very attractive (10x11mm, very cheap), but lacks antenna unfortunately (Datasheet states "requires external antenna"). Can be used standalone (though it is RISC-V, so some learning curve included). Seems to come with AT-commands firmware by default. There are BL602 modules with antennas, very cheap but larger (they seem to mimic ESP8266 modules like ESP-12). I might try antenna-less variant in future to see what range it has. There is no need to control a 3cm car from tens of meters anyway.
-
RN4871U from Microchip. Does not come with antenna, but still works for one guy on YouTube (he does wonders, just check him out). Relatively pricey, not available from AliExpress or LCSC. Really tiny, 6x8mm. Assuming that it’s not programmable, hence cannot be used standalone.
-
HJ-580LA, based on DA14580 (ARM). Smallest of them all, 5x6.3mm including chip antenna. Does not come with firmware, not widely available. Here is an a somewhat shallow and dated video about flashing DA’s serial port firmware onto it. If considering this MCU for standalone development, the board only has an MCU, 2 crystals, 4 capacitors and antenna, but the MCU only has no flash (only OTP). So the MCU is very unfriendly for custom firmware development. There is an HJ-580XP module with a firmware on board (seemingly no purchase options). I’ve found a github repository with some details: https://github.com/GiorgosXou/HJ-580XP-BLE.
Some other options I briefly looked at:
-
E104-BT08: 10x10 incl chip antenna, no MCU, cheap on LCSC, contacts on bottom surface, so not hobbyist-friendly.
-
E104-BT52: 10x14.5mm, PCB antenna, DA14531 inside (no flash!), BLE-UART firmware,
-
E104-BT55SP: 10x14.5, CC2340R5
Résumé so far
Out of these modules, CH9141-BLE-TPT is an overall winner in terms of size, price, availability and ease of soldering. It’s not available on LCSC nor JLCPCB, but seems to be solderable by hand.
Also it would be interesting to see how Ai-Thinker Ai-WB2-01F works without an antenna or with a quarter-wavelength wire antenna. Otherwise good in terms of size and price and solderable by hand (also available on JLCPCB).
Lastly, HJ-580LA can be used, but manual flashing of OTP can be problematic. Couple of them can be wasted during learning, which is problematic considering it’s more expensive than contenders. It is very small though, and can be hand-soldered.
Option 2. Use a BLE MCU, develop the whole board
Plus: only one board with everything. Smaller, especially in height. Minus: a lot of complexity designing RF side.
Requirements:
-
PWM (at least 2 channels)
-
BLE
-
solderable by JLCPCB,
-
minimal size (QFN48 at most, preferable 5x5mm)
-
onboard flash (not a given, as it turns out)
Nice to have:
-
BLE long range
-
ADC (to read battery voltage)
-
hand-solderable
-
powered from battery directly
Nordic Semiconductor
nRF51. Seems dated in general. Price is the same as nRF52 (or outright more expensive), but has less features (e.g. 16/32Kb RAM)
nRF52. The middle of nRF range. Here is a good comparison table from Nordic.
nRF52805: lacks PWM
nRF52810: Available on JLCPCB ($2), QFN32 5x5mm available
nRF52811: Compared to 810, supports Long range, less available on JLCPCB ($3.4, only QFN48)
nRF52820: lacks PWM
nRF52832: Compared to 810 lacks QFN32 package. Good availability on JLCPCB ($2.8)
nRF52833: Can be powered from battery, 5x5mm package available, except worse availability at JLCPCB ($4)
nRF52840: Adds nothing relevant compared to 833, lacks 5x5 package.
nRF53. Seems like an overkill feature-wise (dual core, 1Mb flash)
nRF54. Have just appeared, no general availability, also seems like an overkill.
Out of these, nRF52810, 811 and 833 can be considered further.
Dialog Semiconductor / Renesas
Product selector: https://www.renesas.com/us/en/products/wireless-connectivity/bluetooth-low-energy/product-selector
Interestingly, there are very few devices with built-in flash memory.
DA14586, QFN40 (5x5mm). 0 on JLCPCB, expensive.
DA14592. FCQFN (5.1x4.3mm). Not found on JLCPCB
DA14682. AQFN60 (6x6mm), 0 on JLCPCB, way too expensive.
None of the above support Long range.
RA4W1, RL78/G1D, RX23W - not found on JLCPCB.
STM32
Expensive on JLCPCB, unfriendly or large packages.
WCH
It seems that all WCH products can connect to antenna without a matching pi network (which is good).
The only options I’ve found:
CH32V208 (RISC-V).
It looks very good on paper, but only large package is available on JLCPCB, and documentation is as you’d expect from a Chinese company (reference schematic?)
CH582 (RISC-V)
Looks even better, as QFN28 package available on JLCPCB. Same documentation quality in cryptic English (and does not even have a Reference Manual).
Both support BLE Long range.
CH579 (ARM-M0)
Available on JLCPCB in QFN28 package. Same problem with documentation. Doesn’t look better than RISC-V options.
Bouffalo lab
BL602/BL604 - BLE+WiFi ICs, almost 0 on JLCPCB (19 of QFN32 BL602C at the time of writing)
BL702/BL706 - BLE+Zigbee ICs, almost 0 on JLCPCB (5 of QFN48 BL706C at the time of writing)
BL606P - not available on JLCPCB.
In general, documentation and support seem much better than WCH’s, reference design is present in datasheet.
BL706 is used in Pinecil v2, so at least some open source designs are available. Also, a lot of modules are available from AiThinker (who popularized ESP8266), seemingly compatible to ESP-NN modules.
Résumé so far
Out of these MCUs, nRF52810 (or nRF52811) is the best overall in terms of features, availability, price. Though its RF side requires matching and in general a lot of capacitors and stuff.
BL60x, BL70x would be good if they were more available on JLCPCB.
Antenna
In case of custom-made RF circuit, antenna is required.
Requirements for antenna:
-
Corner-mounted
-
Minimal GND clearance
-
Small size
-
Available and solderable by JLCPCB
There are not a lot of options on JLCPCB, so this is the only one I’ve found so far: https://jlcpcb.com/partdetail/Shenzhen_KinghelmElec-KH_1608H08/C2925416. It needs 5x3mm clearance on the corner of PCB and has size 0603.