

ATARI CTRL PCB 1.25A UNTESTED BUT FIXED
Neuropong project files
- Size
- 38.1 × 27.9 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 4
- Nets
- 26
- Pads
- 50
- Tracks, vias
- 74, 4
- Routed
- Yes
- KiCad
- KiCad 7 (file 20221018)
- Created
- 24 Feb 2025
- Updated
- 5 Mar 2025
Overview
ATARI CTRL PCB 1.25A UNTESTED BUT FIXED is an open-source printed circuit board by TENNLab-UTK, from the TENNLab-UTK/neuropong repository on GitHub, published under the BSD-3-Clause licence. It is a 2-layer board of 38.1 × 27.9 mm with 4 parts on 26 nets, routed with 74 tracks and 4 vias.
It is built around the ULN2003A. Its parts include 2 ICs and 2 connectors. It belongs with the retro computing and games boards of this library.
Main components
1README
README.mdNeuropong
This is the repo contains the NeuroPong project files. NeuroPong is an embedded, neuromorphic Atari (Pong) agent. It marries an event-based camera, TENNLab's Neuromorphic Starter Kit (https://arxiv.org/abs/2211.04526), and an Atari 2600 console. Spiking neural networks are trained on simulated events created from frames generated by the Arcade Learning Environment, and then, those spiking neural networks are put on hardware to examine how they perform in a live setting using real event camera inputs.
Prerequisites
Repositories needed to run existing spiking neural network agents:
- TENNLab Open-Source Framework: https://github.com/TENNLab-UTK/framework-open
- Inivation
dv-processingLibrary: https://gitlab.com/inivation/dv/dv-processing - TENNLab Embedded Neuromorphic repository(*):
- Needed to compile code for Neuromorphic Starter Kit's Raspberry Pi Picos
(*) You will need to get access to this repo from Jim Plank (jplank@utk.edu) until it is open-sourced.
You will also need Python and a shell of some kind (bash/zsh) on Linux or Mac. It is recommended to set up a python virtual environment (Python <= 3.9) for compatability with Inivation event camera library.
Contents
-
/models: STL models of 3D printed objects used in this project for the presented prototype
-
/kit-code: Contains code used by
embedded-neuromorphic/repo to compile kit code. -
/pcb: Repo containing KiCad files for the PCB that contains the Atari Translator circuit
-
/scripts: Scripts used to assist with flashing Picos and compiling kit code.
calibration.pyandevent_server.pyare used on the Raspberry Pi (or whatever is communicating with the Neuromorphic Starter Kit) -
/imgs: Contains various diagrams and images detailing parts of the NeuroPong system
-
/networks: Contains the networks generated for the Neuropong paper.
Table of Hardware Materials/Components
| Part | Quantity | Cost | |
|---|---|---|---|
| PCB Design | 1 | $4.11 | |
| AD5242 | 1 | $4.55 | |
| ULN2008 | 1 (unused) | $3.95 | |
| Female pin strips | 2 | $26.00 | |
| Raspberry Pi 4 | 1 | $75.00 | |
| MicroSD Card | 1 | $13.50 | |
| Breakout Cable | 1 | $20.00 | |
| Neuromorphic Starter Kit | |||
| PCB Design | 1 | $10.65 | |
| Raspberry Pi Pico | 3 | $15.00 | |
| Power Supply | 1 | $7.69 | |
| Total | $180.45 |
- The Atari 2600 console and VideoOlympics cartridge together were ~$20.00.
- The DAVIS346 camera used for this project was purchased from [Inivation] (https://shop.inivation.com/).
Running the Hardware Setup
- Turn on monitor, put VideoOlympics cartridge in Atari 2600 console, and turn on the Atari console.
- You should see the Pong game appear on the screen.
- Plug NeuroPong controller into the back of one of the Atari controller ports.
- NOTE: you will need to make the NeuroPong cable. An detailed construction diagram can be found in the
/imgsfolder
- NOTE: you will need to make the NeuroPong cable. An detailed construction diagram can be found in the
- Power on the Raspberry Pi, and plug DAVIS346 camera into one of the USB ports on the Raspberry Pi.
- Compile the network using
app_compilefrom theembedded_neuromorphic/repo- Ex:
./bin/app_compile -j network_file -o kit-code/pico-pong_observations.c -a kit-code/pico-pong_actions[2,3].c -s
- Ex:
- Flash the three Raspberry Pi Picos on the kit with the appropriate encoder, decoder, and network.
- Power on the Neuromorphic Kit
- On the Raspberry Pi, run
scripts/calibration.pyto assist with focusing the lens and cropping the camera's FOV to the screen.- The output produced by
scripts/calibration.pyis the command that is used to runscripts/event_server.py.- It figures out what the crop coordinates are and what the downsampling parameters need to be to match whatever the target downsampled resolution is. Target resolution is specified via global variables in the
scripts/calibration.pyprogram.
- It figures out what the crop coordinates are and what the downsampling parameters need to be to match whatever the target downsampled resolution is. Target resolution is specified via global variables in the
- The output produced by
- Run the command output by
scripts/calibration.py- Ex:
python3 event_server.py --crop ...
- Ex:
- Wait 20-30 seconds for the system to initialize. If it's unreponsive, CTRL-C the event_server process and rerun it.
- Begin the Atari game by toggling the ``Game Reset'' switch on the Atari system.
Running the networks in the framework-open processor_tool
You may want to run the networks using framework-open/bin/processor_tool in order to view spike rasters for a network at each timestep during an episode of that network playing Pong in the Arcade Learning Environment. In networks/processor_tool_commands are the commands for the processor tool, for each of the 32 networks, for one 2000 frame Pong episode each. Each file in networks/processor_tool_commands contains the Apply_Spike (AS) commands that communicate the event simulated and downsampled representation of each frame as they're generated by the ALE online. To run, do the following:
```
UNIX> pwd
.../neuropong
UNIX> ./framework-open/bin/processor_tool_risp < networks/processor_tool_commands/pong0.txt
0 INPUT : // No inputs are provided to the network during the first frame or timestep, so the spike raster is empty
1 INPUT :
2 INPUT :
3 INPUT :
4 INPUT :
5 INPUT :
6 INPUT :
7 INPUT :
8 INPUT :
9 INPUT :
10 INPUT :
11 INPUT :
12 INPUT :
13 INPUT :
14 INPUT :
15 INPUT :
16 INPUT :
17 INPUT :
18 INPUT :
19 INPUT : More information about processor_tool_risp can be found in the framework-open/markdown/ directory. This is provided as a method for you to see how the network acts when provided event-simulated and downsampled ALE frames.
Parts
4| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | Conn_01x09_Socket | Connector_PinSocket_2.00mm:PinSocket_1x09_P2.00mm_Vertical | J1, J2 |
| 1 | AD5282 | Package_SO:TSSOP-16_4.4x5mm_P0.65mm | U2 |
| 1 | ULN2003A | Package_SO:SOIC-16_3.9x9.9mm_P1.27mm | U1 |
More from TENNLab-UTK/neuropong
1- 2 layers38.1 × 27.9 mm

Similar boards
- 2 layers107 × 54 mm

- 4 layers93.3 × 60.3 mm

Arduino 386EX V5
dbalsom/arduinoX86
An interface between an Arduino Due or Arduino GIGA and 8088, 8086, V20, V30, 186 or 286 CPUs
56 parts114 - 2 layers52 × 61 mm

Arduino motorfocus
fehlfarbe/arduino-motorfocus
Arduino motorfocus with moonlite protocol for telescopes
23 parts58MIT - 4 layers199.9 × 69.3 mm

Zaphod controller
Scottapotamas/zaphod-bot
A DIY high performance delta-bot for fun, and lightpainting...
251 parts53 - 4 layers285.1 × 48.1 mm

Ayab esp32
AllYarnsAreBeautiful/ayab-hardware
Contains the schematics and layouts for the AYAB Arduino shield
246 parts50CC-BY-SA-4.0 - 2 layers

- 2 layers40 × 80 mm

Splitflappcb
codingcatgirl/split-flap-fae-pcb
Alternative drop-in replacement PCB for David Kingsman's split-flap display
46 parts31Apache-2.0 - 2 layers177.9 × 187.4 mm

Audio board 0033 rev.a
palazzol/CyberamicControlCenter
Repo for docs and info about the Cyberamic Control Center
105 parts16
Questions
How big is the ATARI CTRL PCB 1.25A UNTESTED BUT FIXED PCB?
It measures 38.1 × 27.9 mm and has 2 copper layers, 1.6 mm thick.
What parts does the ATARI CTRL PCB 1.25A UNTESTED BUT FIXED use?
4 parts, built around the ULN2003A. 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 ATARI CTRL PCB 1.25A UNTESTED BUT FIXED KiCad files?
From the TENNLab-UTK/neuropong repository on GitHub, at the commit this page was made from: the board is pcb/pcb_v1_25A/ATARI_CTRL_PCB_1.25A_UNTESTED_BUT_FIXED.kicad_pcb and its schematic pcb/pcb_v1_25A/ATARI_CTRL_PCB_1.25A_UNTESTED_BUT_FIXED.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the ATARI CTRL PCB 1.25A UNTESTED BUT FIXED design in my own project?
Its repository publishes it under the BSD-3-Clause licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).