GitHub – PegorK/f32

Logo
render

f32 is an ultra-compact ESP32 development board designed to mount directly into the back of a USB-C receptacle. The PCB measures only 9.85 mm x 8.45 mm. It is powered by the ESP32-C3FH4 microcontroller and was created primarily for research and as a stress test for the ESP32, as it intentionally ignores many standard design guidelines. There is only one open GPIO and it is connected to an onboard LED, so most of the development here will be done more for WiFi/Web.

cover

Created an example application to test the F32 that users can interact with. The application turns the f32 into a captive portal, so when it is turned on it will appear as an open access point that the user can select from available WiFi networks. The user is then automatically sent to the f32’s control page where they can interact with some of its basic functionality such as turning on an LED or scanning for nearby WiFi networks. There is also an “About” page that provides a short overview of the device. Below are some screenshots and a GIF of interacting with the device.

main page

Home page of captive portal.
wifi search results

WiFi discovery and LED toggle on.
about page

about page

f32

GIF of the f32 in action.

Initially it appeared that the f32 did not want to work. I couldn’t connect it to any network or broadcast to my own network. I’m 100% sure this is due to bad antenna circuitry or lack thereof, but I managed to make it functional after adding an additional small antenna on the chip antenna, as seen in the picture below. It was simply a piece of twisted wire attached to the last lead and floating above the first lead.

f32

Since I don’t have fancy signal testing equipment, I relied on some manual testing such as seeing if I could still connect to the device and control the LEDs. In clear vision testing with the F32 placed about 3 feet above the ground I was able to connect and scan/control the LED at a height of about 120 feet! This can be seen in my much needed illustration below.

f32

pcb

The PCB was designed using DipTrace and manufactured by PCBWay with a board thickness of 0.6mm, minimum hole size of 0.2mm and minimum track/spacing of 4/4mm. The cost of 5 boards shipped when making this was only $10.75! That still blows my mind. PCBWay also offers assembly services, but I chose to assemble it at home and had a little trouble. With such small parts it took a little trial and error, but I decided the best approach for me was to skip the stencil and let flux be my best friend.

Tools and Parts Used:

Steps to build one:

  • send gerber file f32_gerber.zip found in hardware Folder in PCBWay with the specifications mentioned above.
  • Sort the components mentioned in f32_bom.pdfThese parts, except the antenna, can be found on both DigiKey and Mouser, I don’t remember where I originally ordered them, but I believe they are Crossair CA-C03,
    • **Tip: Always order more than you need, especially with such small components.
f32

01005 blocker

  • Clean the PCB thoroughly with 99% alcohol.
  • Apply a thin layer of soldering flux to the entire board using a tooth pick, starting from the top (antenna side).
  • Using a fine tip soldering iron apply some solder to the tip and then to all the exposed pads.
  • Clean the board again with 99% alcohol and verify that there is some solder on all the pads on this side.
  • Apply another thin layer of flux on the same side.
  • Using tweezers and microscope/loupe begin placing the top components following the reference guide f32_reference.pdf,
    • **Tip: I found that placing larger components last helps.
  • Gently move the board to the soldering hotplate or use a rework station to heat the solder back up and watch the components wiggle into place.
  • Repeat from bottom side.
    • The bottom must be reworked using a hot air gun, this is not possible with a hotplate.
    • Place the USB-C receptacle last.
  • Clean the entire board with alcohol and a fine toothbrush.

After assembly you can use the ESP-IDF VSCode extension or Arduino and upload whatever you want to the board or you can upload my example application using the steps below.

  • Make sure you are in the root directory of this repo and have access to esptool.py,
  • Make sure your esptool version is on v4,
  • Run the following command replacing Whatever port the device is connected to i.e. on Windows it’s usually something like this COM5 or on linux /dev/ttyACM0
esptool.py -p  -b 460800 --before default_reset --after hard_reset --chip esp32c3 write_flash --flash_mode dio --flash_freq 80m --flash_size 2MB 0x0 firmware/bootloader.bin 0x10000 firmware/f32_internal.bin 0x8000 firmware/partition-table.bin 

Well, it’s up to you to decide. I started this project for some personal research and a fun learning experience. I’ve always wanted a project that used 01005 components, since I accidentally ordered one a few years ago. However you choose to use it, please note that this design intentionally neglects many fundamental components such as proper decoupling capacitors, an antenna matching circuit, USB termination resistors, and possibly more. It works, but it’s intentionally incomplete.

  • Display more GPIOs on the sides of the PCB to make it a mountable PCB.
  • Improve antenna circuitry.

Finally, fun coincidence, the ESP32 chip, antenna, and LDO are all “C3” models!



Leave a Comment