9th May: It’s been 30 days since my latest ticket to Support, and over five weeks since the last human feedback. At this point, the project has shifted from a fun hardware challenge into a lingering chore on my to-do list. The educational ROI has hit its limit - I’ve already learned what I came for: Fusion 360, KiCad, etc. Since the program has stalled on the administrative side, I’m officially archiving the NetPuck to clear my headspace for projects that actually move forward.
The NetPuck 5G is a handheld device, purpose-built to connect the worlds of software-driven network diagnostics and hardware-focused wireless analysis.
Made on Hack Club Blueprint 🚩- https://blueprint.hackclub.com/projects/13740
- I needed a network auditing device. As a beginner IT Support Technician, I have a vast variety of tools for every job, but I've been lacking tools (and knowledge) regarding networking infrastructure. I've been making do with my phone and generic, no-brand WiFi strength scanning applications on my phone, but that is just not reliable for my purpose.
- I wanted to learn about hardware engineering. I've always been interested in the “guts” of the devices around me. From a very young age, with a screwdriver in hand, I started taking devices that would otherwise be trashed apart, curious to see what makes them work. A few months ago, I also bought a soldering iron, and learned the skill of soldering and desoldering. In my curious journey of hardware engineering, the next step would be designing and having a custom PCB made.
- I wanted something to showcase in my portfolio. Projects and contributions are largely important factors in one's portfolio, especially at an age where they cannot work, like me. I wanted to enrich my portfolio with personal projects, and Hack Club’s blueprint was the perfect, guided opportunity for me to do so.
It uses:
- the Waveshare ESP32-S3 Pico, as the main processing unit for the entire device
- a BW16, solely for Access Point scanning, thanks to its 5GHz capabilities
- a W5500 Ethernet module, for listing details about the network it is connected to
- a 1.8’ inch LCD module, for providing all information gathered from the aforementioned boards to the user
- a low-profile 5-way digital navigation joystick, for navigating the menus of the device
- a MH-CD42 charging and boost-up module and two Samsung 18650 batteries, for powering the device from batteries, reliably.
The NetPuck 5G has two functions; Wireless Access Point strength scanning, and Wired Network details.
- Wireless Access Point strength scanning
- This function uses the BW16, which communicates with the ESP32 via UART to list all 2.4GHz and 5GHz Access Points within reach, and the strength of each one, measured in dBm.
- LAN details
- This function detects specific details about the network the W5500 module is plugged into. Specifically: ICMP Echo to 8.8.8.8, Gateway IP (from DHCP Lease), ICMP Echo to Gateway (Confirms local LAN integrity), LLDP (Passive sniff for Link Layer Discovery Protocol packets), Reverse DNS lookup of the Gateway’s Public IP, Gateway Domain Name (from DHCP Option 15), NLA Information, Gateway MAC (ARP-resolved)
Grounds not listed; all grounds connect to each other
The Pin/As/To/For tables are read as: The Pin [Pin] functions as/is labeled as [As], and goes to pin [To], (and is used) for [For].
| Pin | As | To | For |
|---|---|---|---|
| Vbus/40 | +5V | MH-CD42 @ 5V OUT | Powering the ESP |
| GP5/27 | LCD_BL | LCD @ BL | Controlling the backlight |
| GP6/29 | W5500_RST | W5500 @ RST | Resetting the W5500 |
| GP7/31 | LCD_RST | LCD @ RST | LCD’s Resetting the LCD |
| GP8/32 | LCD_DC | LCD @ DC | Data/Command |
| GP9/33 | W5500_CS | W5500 @ CS | W5500’s SPI Chip Select |
| GP10/34 | LCD_CS | LCD @ CS | LCD’s SPI Chip Select |
| 3V3/36 | 3V3 | LCD @ VCC, W5500 @ V | Powering the LCD and W5500 |
| GP11/1 | SPI_MOSI | LCD @ DIN, W5500 @ MO | Transferring data via SPI from the ESP32 (Master), to the LCD and W5500 (Slaves) |
| GP12/2 | SPI_SCK | LCD @ CLK, W5500 @ SCK | Serial Clock for SPI |
| GP13/4 | SPI_MISO | W5500 @ MI | Transferring data via SPI from the W5500 (Slave) to the ESP32 (Master) |
| GP14/5 | BW16_EN | BW16 @ EN | BW16’s Enable Pin |
| GP17/9 | BW16_RX | BW16 @ 7 | UART (ESP32 → BW16) |
| GP18/10 | BW16_TX | BW16 @ 8 | UART (ESP32 ← BW16) |
| GP34/12 | MID | STICK @ MID | Joystick’s Click |
| GP35/14 | UP | STICK @ UP | Joystick’s Up |
| GP36/15 | DOWN | STICK @ DOWN | Joystick’s Down |
| GP37/16 | LEFT | STICK @ LEFT | Joystick’s Left |
| GP38/17 | RIGHT | STICK @ RIGHT | Joystick’s Right |
| Pin | As | To | For |
|---|---|---|---|
| 5V | +5V | MH-CD42 @ 5V OUT | Powering the BW16 |
| PA7/TX | BW16_TX | ESP @ GP17/9 | UART (ESP32 ← BW16) |
| PA8/RX | BW16_RX | ESP @ GP18/10 | UART (ESP32 → BW16) |
| EN | BW16_EN | ESP @ GP14/5 | Enable Pin |
| Pin | As | To | For |
|---|---|---|---|
| RST | W5500_RST | ESP @ GP6/29 | Resetting the W5500 |
| CS | W5500_CS | ESP @ GP9/34 | W5500’s SPI Chip Select |
| V | 3V3 | ESP @ 3V3 | Powering the LCD and W5500 |
| SCK | SPI_SCK | ESP @ GP12/2 | Serial Clock for SPI |
| MI | SPI_MISO | ESP @ GP13/4 | Transferring data via SPI from the W5500 (Slave) to the ESP32 (Master) |
| MO | SPI_MOSI | ESP @ GP11/1 | Transferring data via SPI from the ESP32 (Master), to theW5500 (Slave) |
| Pin | As | To | For |
|---|---|---|---|
| BL | LCD_BL | ESP @ GP5/27 | Controlling the backlight |
| RST | LCD_RST | ESP @ GP7/31 | Resetting the LCD |
| DC | LCD_DC | ESP @ GP8/32 | LCD’s Data/Command |
| CS | LCD_CS | ESP @ GP10/34 | LCD’s SPI Chip Select |
| VCC | 3V3 | ESP @ 3V3/36 | Powering the LCD |
| DIN | SPI_MOSI | ESP @ GP11/1 | Transferring data via SPI from the ESP32 (Master), to the LCD (Slave) |
| CLK | SPI_SCK | ESP @ GP12/2 | Serial Clock for SPI |
| Pin | As | To | For |
|---|---|---|---|
| MID | MID | ESP @ GP34/12 | Joystick’s Click |
| UP | UP | ESP @ GP35/14 | Joystick’s Up |
| DOWN | DOWN | ESP @ GP36/15 | Joystick’s Down |
| LEFT | LEFT | ESP @ GP37/16 | Joystick’s Left |
| RIGHT | RIGHT | ESP @ GP38/17 | Joystick’s Right |
| Pin | As | To | For |
|---|---|---|---|
| 5V OUT | +5V | ESP @ Vbus/40, BW16 @ 5V | Powering the ESP and BW16 |
| VIN | VUSB | USB @ V | Powering the MH-CD42 |
| BAT | VBAT | (external batteries) | Powering the MH-CD42 |
| Pin | As | To | For |
|---|---|---|---|
| V | VUSB | VIN | Powering the MH-CD42 |
I used KiCad to design the PCB. Through a few struggles (as described on Journal), I landed on this design:
I used Autodesk Fusion to make the case (as described on Journal). The enclosure is designed for field durability, featuring a 'Sandwich Mount' architecture. It utilizes M3 heat-set inserts and M3 Nylon screws, instead of Stainless Steel, to avoid signal interference.










