
Sub
google/mozc-devices
Circuit diagrams and firmware source code for Gboard DIY keyboards

[ARCHIVED] NetPuck 5G: A network auditing tool, using the ESP32-S3 and BW16 modules, that can scan for Access Point strength, and read details off an Ethernet connection, as a handheld, battery-operated device.
NetPuck5G is an open-source printed circuit board by leonampa, from the leonampa/netpuck repository on GitHub. It is a 2-layer board of 175 × 65 mm with 15 parts on 50 nets, routed with 165 tracks and 18 vias.
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
It uses:
The NetPuck 5G has two functions; Wireless Access Point strength scanning, and Wired Network details.
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.

| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | Conn_01x06_Socket | Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_Vertical | ETH_L1, ETH_R1, MH-CD42 |
| 3 | MountingHole_3.2mm_M3 | MountingHole:MountingHole_3.2mm_M3 | BotLeft, BotRight, TopLeft |
| 2 | Conn_01x09_Socket | Connector_PinSocket_2.54mm:PinSocket_1x09_P2.54mm_Vertical | BW-16_L1, BW-16_R1 |
| 1 | Conn_01x02 | Connector_Wire:SolderWire-0.75sqmm_1x02_P4.8mm_D1.25mm_OD2.3mm_Relief | BTR1 |
| 1 | Conn_01x04_Socket | Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_Horizontal | USB1 |
| 1 | Conn_01x08_Socket | Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_Vertical | SCR1 |
| 1 | Conn_01x08_Socket | Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_Horizontal | STICK1 |
| 1 | Conn_01x18_Socket | Connector_PinSocket_2.54mm:PinSocket_1x18_P2.54mm_Vertical | ESP_R1 |
| 1 | ESP_L | Connector_PinSocket_2.54mm:PinSocket_1x18_P2.54mm_Vertical | ESP_L1 |
The 14 most common of 15 parts.
It measures 175 × 65 mm and has 2 copper layers, 1.6 mm thick.
15 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the leonampa/netpuck repository on GitHub, at the commit this page was made from: the board is PCB/NetPuck5G.kicad_pcb and its schematic PCB/NetPuck5G.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask leonampa before reusing the design.

google/mozc-devices
Circuit diagrams and firmware source code for Gboard DIY keyboards

hoglet67/RGBtoHDMI
Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

mntmn/amiga2000-gfxcard
MNT VA2000, an Open Source Amiga 2/3/4000 Graphics Card (Zorro II/III), written in Verilog

hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

kenp-io/not-for-airpods-repairs
The content of this repository is licensed under the WTFPL License. Please have a close look at the terms before using this material.

Luos-io/luos_engine
Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.

Chrismettal/EleLab_v2
Cheap DIY lab system for hobbyists and the tinkering folk
