Skip to the content
PCBKitNew board
4 layers30 × 51.9 mmPCB FINAL2.1, the printed circuit board in 3D

A group project in our Master: making a unity game with tangible controllers

Size
30 × 51.9 mm
Copper layers
4
Thickness
1.6 mm
Parts
12
Nets
24
Pads
64
Tracks, vias
98, 6
Pours
7
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
4 Oct 2024
Updated
11 Nov 2025

Overview

PCB FINAL2.1 is an open-source printed circuit board by ItsAlphie, from the ItsAlphie/TermiteTerminator repository on GitHub. It is a 4-layer board of 30 × 51.9 mm with 12 parts on 24 nets, routed with 98 tracks and 6 vias.

It is built around the WEMOS D1 MINI. Its parts include 3 capacitors, 3 resistors, 3 ICs, 2 connectors and 1 inductor. It belongs with the ESP8266 boards of this library.

Main components

1

README

README.md

Termite Terminator

For a more in-depth dive into the working and development of this project, we refer to the paper also available in this repository. Below is brief summary on how to set up the game yourself.

The game

The player manages a coin budget and uses a spell 3 types of tangible towers to face off waves of ants attempting to pass by and eat your picknick. There is a heavy hitting tower with a long cooldown, a tower with a continuisly hitting but low damage laser and a tower that shoots as fast as the player presses its button. Additionally, there is a Freeze spell to hold enemies in place for a few seconds. The ants get increasingly stronger and come in larger groups, but the more enemies are held back, the more coins you earn for more defenses. 🎥 Watch a demo video on YouTube

Credits

Both repositories below have been used as a foundation for the python script used for the marker and gesture detection:

Setup Instruction

The following instructions are open to adjustments, if the operator deems themselves worthy and knowleadgable enough to customize the setup. But for the others, these next few sections explain how to duplicate our specific setup rather than reconfigure everything.

Software requirements

Unity Version:

  • 2022.3.49f1

python libraries: (Python 3.9 works)

  • opencv-contrib-python==4.6.0.66
  • imutils
  • tensorflow
  • mediapipe

Wireless Connection

Background Information

UDP is used to communicate between the main processing computer running the Unity and camera vision, and a set of ESP8266 microcontrollers processing and controlling everything concerning the individual towers.

During the design procedure, hardcoded IP's are used to easily indentify towers and communicate with them accordingly. To set up the wireless network we rely on a mobile hotspot from a modern phone, with a preset 255.255.255.0 subnetmask.

Configuration

Following table shows all IP-addresses used:

Device/ServiceIPUse
Towers192.168.24.TowerIDSend "b" for boosts, receive "k" and "r" to control servo
Unity (For Towers)192.168.24.60Receive "b" for boosts and identify tower, send "k" and "r" to selected towers
Unity (For Camera)127.0.0.1Unity listens to this IP, to locate and place the towers and spells within the playing field

The easiest way to set this network up on new devices is duplicate the original network. Specifically, the network name should be "Galaxy S22A88A" and its password should be "uzjw7402". It is also essential to turn off roaming and internet sevices on the mobile phone, to avoid any external DHCP server to set IP's rendering them unable to be overwritten. Next, the IP of the main computer should be set to match the one in the table above.

Camera Vision & Towers

This part of the setup refers to the physical configuration. The fundamentals come down to a TV being laid flat on a table (projector would work, but the shadows mess with the gesture recognition) with a camera of any sort hanging above it. Ideally, the camera hangs straight above the center of the screen.

Within Unity, more specifically in scene "Wave1" in the "LevelManager" the setup can be calibrated. Under the TowerSpawner script skewFactorX, skewFactorY, skewFactorXX, skewFactorYY and heightLimit can be adjusted to conform to the height of the camera, causing a paralax error.

As for the towers, they work on 9V batteries. So, these batteries have to be connected, after which the pins from the connector have to be put in the correct pinheader. The program on the microcontrollers should still be programmed and continue sending and receiving data as normal. As for the recognition of the towers, original aRuCo markers are used with towers ranging from 1 to 7 and the corners of the TV being 21, 22 and 23.

Start the Game

After you managed to follow all the instruction above, you can now finally launch the game. Simply follow the next few steps to start everything up:

  • launch the Unity game
  • go to /TermiteTerminator/Python/Gestures/ and launch the python Camera Vision script combinedScripts.py
  • make sure to place the three corner markers on your play area
  • start the unity game

With this, the script should be sending all required information to the Unity game. Have fun!

Parts

12
QtyValueFootprintReferences
2Conn_01x10_PinConnector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_VerticalJ1, J2
1100nCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC2
1118kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1
12.2µCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC3
122.1kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR2
122µCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1
1LInductor_SMD:L_Bourns-SRN4018L1
1MCP6042-E_SNMCP6042-E_SN:SOIC127P600X175-8NU3
1PLMR51610XDBVRbuck:SOT-23-6_DBV_TEXU1
1RResistor_SMD:R_0805_2012MetricR3
1WeMos_D1_miniModule:WEMOS_D1_mini_lightU2

Questions

How big is the PCB FINAL2.1 PCB?

It measures 30 × 51.9 mm and has 4 copper layers, 1.6 mm thick.

What parts does the PCB FINAL2.1 use?

12 parts, built around the WEMOS D1 MINI. 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.

Where can I download the PCB FINAL2.1 KiCad files?

From the ItsAlphie/TermiteTerminator repository on GitHub, at the commit this page was made from: the board is PCB_FINAL2.1/PCB_FINAL2.1.kicad_pcb and its schematic PCB_FINAL2.1/PCB_FINAL2.1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the PCB FINAL2.1 design in my own project?

Its repository states no licence, so its author keeps all rights: ask ItsAlphie before reusing the design.

Similar boards

  • 2 layers70.1 × 43.2 mmIaq device, the printed circuit board in 3D

    Iaq device

    nkitanov/iaq_board

    IAQ Board is a DIY (Do-It-Yourself) device for measuring internal air quality

    19 parts396
  • 2 layers32.1 × 40.8 mmPower Monitor Version 1, the printed circuit board in 3D

    Power Monitor Version 1

    alcar21/WemosEM

    Cheap power monitor (STC013) with Home Assistant Discover and Wemos D1 Mini / PRO (esp8266)

    8 parts122
  • 2 layers91 × 49 mmWled, the printed circuit board in 3D

    Wled

    wladwnt/wled

    Simple WLED Board (SW: https://github.com/Aircoookie/WLED)

    9 parts102
  • 2 layers97.5 × 59.3 mmControl Board, the printed circuit board in 3D

    Control Board

    kholia/Easy-Digital-Beacons-v1

    A simple and easy Arduino / Pi Pico / ESP8266-powered WSPR, FT8, and FT4 beacon system which uses NTP + DS3231 RTC for timing. Super extensible! Now comes with optional GPS support.

    17 parts89
  • 2 layers64.6 × 36.9 mmNavien latest, the printed circuit board in 3D

    Navien latest

    htumanyan/navien

    Navien water heater wire protocol for communication with NaviLink and other attached devices

    30 parts65
  • 2 layers49.5 × 30 mmAirpcb smd old, the printed circuit board in 3D

    Airpcb smd old

    issalig/toshiba_air_cond

    AB protocol decoder for toshiba air conditioners

    30 parts65
  • 2 layersTcsmonitor pcb, the printed circuit board in 3D

    Tcsmonitor pcb

    Syralist/tcs-monitor

    ein Bus-Monitor für TCS Klingelanlagen

    14 parts37MIT