I’ve designed a custom RTK Facet PCB by combining three boards into one—mainboard, display board, and connector board—eliminating PCB connectors in the process. The PCB is fully assembled, but I’m facing an issue where the USB port is not showing up when trying to program or install firmware.
I’ve already tried: Changing the data cable Installing the correct CH340 drivers
I suspect it might be a hardware issue. If anyone with embedded systems experience could help review and troubleshoot, I’d really appreciate it!
Your assistance means a lot to me. You can also view the entire project by giving your easyEDA username, which will add you to the team. This way, you can easily see which specific components I used in this project to learn & help in this regard. @TS-Russell@sparky It meant a lot to me that I could reach you personally via LinkedIn or email for assistance.
You need to check if the USB Hub is working correctly. Does it appear in the Device Manager when you connect your board? You should see an extra “Generic USB Hub” appear under “Universal Serial Bus controllers”.
Please check the SCL and SDA jumpers on the Hub chip:
They should be open:
They allow you to connect an I2C EEPROM to the Hub chip, to store the VID, PID etc.. You can not connect them to a normal I2C bus.
Dear @PaulZC Yes, I have checked every USB-related sections in device manager. Additionally, does your suggestion mean there is not any major problem in the schematic I have provided and I must strictly disconnect SCL and SDA jumpers on the Hub chip? The USB hub chip “USB2512B-I/M2” should be checked or replaced if it still does not work. Is that the correct solution?
I don’t have time to study your schematic in detail. And I don’t want to join EasyEDA to look at your design. All I can do is take a quick look at the documents you share openly and comment on the things that ‘jump out at me’.
My advice would be to start fault-finding on the soft power switch. You need to get that working first.
Do you have a battery connected? Or just USB?
What voltage do you see on V_BATT, V_USB and V_RAW?
Is the soft power switch working? What voltage do you see on V_VOUT? Did you press the POWER_BTN?
Is ESP_3V3 3.3V?
The peripheral 3.3V may not yet be 3.3V because you do not yet have code on the ESP32 to enable the regulator.
Have you added enough decoupling capacitors? The SparkFun Facet needs more decoupling capacitors too…!
Then you can start fault-finding on the USB Hub.
Have you checked for continuity of the USB_DM and USB_DP signals? All the way from the USB-C connector to the USB2512 IC?
Have you checked for shorts?
On the PCB, did you route DM and DP as a 90 Ohm differential pair?
Do you have good grounding? Did you use a ground plane? Is your PCB 4-layer, or only 2?
Is V_USB 5.0V?
Is VBUS_DET 2.5V?
What voltage do you see on the XTALOUT and XTAL IN pins? An oscilloscope will help.
Are you sure SJ2 and SJ3 are open? On the schematic, it appears you have traces shorting them closed. SDA and SCL on the USB2512 must be left open.
Then, once the USB Hub is working and appears as a “Generic USB Hub”, you can start to fault-find the ESP32 and the CH340.
Please check DTR# and RST#. They look reversed. RST# should be named RTS# (Ready To Send). RST usually means ReSeT.
@PaulZC Can I get the BOM file so that I can buy the exact component used in the latest RTK facet? It would be helpful if I chose the wrong components, as many of them have multiple options. This led to the completion of my study project.
The Eagle design files are available on GitHub. You can use the Eagle BOM tool to view the BOM for each board. If there are any individual components you need help with, let us know.
Is it possible to directly replace ZED-X20P instead of ZED-F9P in the PCB design of RTK facet? does where will be possible changes in firmware respect to ZED-X20P.
The X20P is a “drop in” replacement for the F9P. The package size and pinout are the same.
To upgrade the X20P firmware, you need access to UART1. It is not possible to upgrade the firmware over USB or UART2.
On the Facet, the GNSS UART1 is connected directly to the ESP32 (GPIO pins 16 and 17) and also to the 74HC4052 multiplexer. To allow the firmware upgrade to take place, I think you would need to do one of two things:
Upload custom firmware onto the ESP32 to “pass through” serial data from the ESP32 USB port to the GNSS UART1. Then use u-center or our update tool to upgrade the firmware. You would almost certainly need to fix the baud rate at 9600 during the upgrade. The upgrade would be slow, but it would be possible.
Upload custom firmware onto the ESP32 to: put GPIO 16 and 17 into INPUT mode; ensure the 74HC4052 multiplexer is directing UART1 to the Data Port (set GPIO 0 and 2 low). Then connect an “FTDI” (USB-UART) cable to the Data Port and perform the upgrade through that.
I have not tried either of these, but I think they should work.
In a custom PCB with an existing design of the RTK Facet, we can replace the ZED-F9P with the UM980? What would be possible changes in terms of firmware?
How can I use the tilt compensation function as an RTK torch in facet, given that LIS2DH12 is available on facet schematics? does it require firmware changes and where?
Facet’s hookup guide suggests using the Holybro SiK Telemetry Radio V3 - 915MHz, 100mW, which is not available locally. Is it possible to use the Holybro SiK Telemetry Radio - 915MHz, 500mW or the Holybro SiK Telemetry Radio - 433MHz, 500mW/433MHz,100mW by direct or by modifying the facet firmware? Where could firmware changes take place?
I used ESP32-WROOM-32E-N8 (8MB flash) instead of ESP32-WROOM-32E-N16 (16MB flash) with 0 PSRAM. Is it enough for the Facet firmware? Does it get stuck in my firmware because it looks like it occasionally freezes the screen and resets the ESP32?
You’ll likely need to develop and debug the code on your own or with developers you are directly engaged with.
For the radios HolyBro are a know vendor of consistent quality. The radios just need to have a clear and reliable connection, ie data sent at one end needs to get to the other, without data loss or addition. You’ll need consistent settings at both ends to achieve this. The bands and power can be whatever you need them to be, you should perhaps validate as a basic comms link you can type messages back and forth.
The SiK firmare provides for AT Command configuration and review. The commands should be consistent across models, but you’ll want the same settings on radios you expect to pair.
The Arduino IDE should give you a feeling as to how large the firmware is becoming. Although I don’t recall it breaking down the WiFi stack vs the user code. You can perhaps find the linker .MAP and .ELF files to inspect.
The more you deviate the design and parts used the more work you create for yourself.
In a custom PCB with an existing design of the RTK Facet, we can replace the ZED-F9P with the UM980? What would be possible changes in terms of firmware?
Yes, but you would need to make extensive changes to both the hardware and the firmware. It is not an easy task.
How can I use the tilt compensation function as an RTK torch in facet, given that LIS2DH12 is available on facet schematics? does it require firmware changes and where?
The Torch runs RTK Everywhere Firmware. The Facet runs RTK Firmware. The two versions of firmware are very different.
The Torch uses the IM19 IMU from Feyman. The IM19 outputs tilt-compensated data. We never used the LIS2DH12 on Facet and it was removed in later versions.
Facet’s hookup guide suggests using the Holybro SiK Telemetry Radio
The Holybro radios should be interchangeable - in pairs. You should not need any firmware changes.
I used ESP32-WROOM-32E-N8 (8MB flash)
That is a problem. The RTK Firmware uses the full 16MB of Flash. There are two “app” partitions to allow Over The Air firmware updates. There is also a “spiffs” partition for file storage. It may be possible to change the firmware so it will fit into 8MB, but you would need to remove the OTA update code and move and reduce the spiffs partition. This is not an easy task.