Low profile hitbox-layout fightstick

Overview

Flatbox: Low profile hitbox-layout fightstick

This repository contains 3D-printable models, PCB design files and Arduino code needed to make an arcade controller that looks like this:

Assembled Flatbox

To make one you will need:

  • 3D printed case parts - top and bottom
  • the custom PCB
  • Arduino Pro Micro
  • 12x Kailh low profile (choc v1) switches of your choice
  • (optionally) 12x Kailh low profile hotswap sockets
  • 3D printed buttoncaps
  • 6x 6x6x8mm tact switches
  • 5x 3x10mm wood screws
  • a soldering iron

The case should be printed at 0.20mm layer height. The top part should be printed upside-down, the bottom part should be printed as-is. They don't require supports.

The PCB can be ordered from a number of online services using the included Gerber files, I used JLCPCB (leave all the settings at default, you can choose the PCB color). PCB thickness should be 1.6mm.

The switches can be soldered in directly to the PCB or you can use hotswap sockets. If you want to use hotswap sockets, you will have to print the appropriate bottom part of the case (it's 1mm thicker).

The Arduino has to be soldered directly on top of the PCB, otherwise it won't fit in the case (the plastic base of the pin header can't go between the Arduino and the PCB).

You don't have to use the code included here, you can use any other ATmega32U4-compatible firmware. The included firmware works with the PS3 and PC.

Flatbox PCB

Issues
  • About the choice of switch

    About the choice of switch

    hello. Thanks to your work, I am having fun making controllers. I have a question about the choice of switch. Please forgive me for my lack of knowledge about PCB.

    1. Can I use Kailh Low Profile Backlight Switch on your PCB?
    2. If 1 is possible, does the LED work normally?

    Wait for your reply. thank you

    opened by swhan111 8
  • release the working files for the cases?

    release the working files for the cases?

    I'm building a few of rev 1.1 Flatboxes but I've bought usb-c version of the pro micro. it is slightly longer than the original pro micro so it wont fit. im thinking if you can release the working files so i can modify it to fit. thanks!

    opened by satorusaka 5
  • 3D Printing Question

    3D Printing Question

    Hi,

    Just a quick question about 3D printing the case. Did you opt for 100% infil on the print or did you find a lower infill % was good enough?

    Many thanks,

    Lumi

    opened by LuminarySC 2
  • Repo history rewrite..?

    Repo history rewrite..?

    Hi there, it appears you just rewrote the repo history 2 days ago erasing everything from before? I notice that you changed the tactile buttons to be 5x5x5mm now, with the case being redesigned to have parts that flex and act as button tops. Are there any other changes?

    Would have been a lot nicer to preserve history and have commit messages describing what has changed, because I didn't even realise for a while. I just ordered 5 of the rev1 PCB the other day and I also ordered 5x5x8mm tactile switches already, so the new case design won't work with those and the old one seems to be gone now.

    Thanks for sharing this project by the way, it's really awesome!

    opened by JonnyHaystack 2
  • Rev 2 additional material requirements

    Rev 2 additional material requirements

    when making the rev2, the list of materials needed seem incomplete. It looks like you need a usb-c female header. Is there any other materials needed to make this board?

    opened by huynhwi 1
  • Differences between Rev1 and Rev1.1

    Differences between Rev1 and Rev1.1

    I saw the model was updated, I assume at a quick glance that the size of the case was standarized vs. newer revisions? If so, is the PCB size also changed? Thanks for your time!

    opened by KaneBlueriverCL 1
  • Error to compile the firmware.

    Error to compile the firmware.

    It's probably my mistake somewhere BUT when I try to compile I am getting this issue.

    Flatbox.ino: In function 'void sendReport()':
    
    Flatbox:192:5: error: 'HID' was not declared in this scope
    
         HID().SendReport(1, &report, sizeof(report));
    
         ^~~
    
    Flatbox.ino:192:5: note: suggested alternative: 'PIND'
    
         HID().SendReport(1, &report, sizeof(report));
    
         ^~~
    
         PIND
    
    Flatbox.ino: In function 'void setup()':
    
    Flatbox:198:10: error: 'HIDSubDescriptor' does not name a type; did you mean 'hidReportDescriptor'?
    
       static HIDSubDescriptor node(hidReportDescriptor, sizeof(hidReportDescriptor));
    
              ^~~~~~~~~~~~~~~~
    
              hidReportDescriptor
    
    Flatbox:199:3: error: 'HID' was not declared in this scope
    
       HID().AppendDescriptor(&node);
    
       ^~~
    
    Flatbox.ino:199:3: note: suggested alternative: 'PIND'
    
       HID().AppendDescriptor(&node);
    
       ^~~
    
       PIND
    
    Flatbox:199:27: error: 'node' was not declared in this scope
    
       HID().AppendDescriptor(&node);
    
                               ^~~~
    
    Flatbox.ino:199:27: note: suggested alternative: 'tone'
    
       HID().AppendDescriptor(&node);
    
                               ^~~~
    
                               tone
    
    exit status 1
    
    'HID' was not declared in this scope
    
    
    opened by levibarrocas 1
  • Struggling to find 3x10mm wood screws

    Struggling to find 3x10mm wood screws

    I've been sitting on this project for a while now, trying to figure out where to find these screws. They're not available anywhere in my city.

    I was wondering if there's somewhere I can order them from, preferrably in europe.

    opened by YoinksX2 0
  • Won't Detect or Power After Firmware Flash and Unplug

    Won't Detect or Power After Firmware Flash and Unplug

    Expected Behavior:

    After flashing the firmware, I should be able to unplug the controller and have the controller be detected once it is plugged in again.

    Actual Behavior:

    It initially detects the controller immediately after flashing the firmware according to the instructions. Once device is unplugged form PC, Flatbox is not detected by computer.

    Steps to Reproduce the Problem:

    1. Plug USB into Flatbox PCB and PC
    2. Press the RESET switch while holding down the BOOT switch
    3. Mount and open "RPI-RP2"
    4. Copy "flatbox-rev4.uf2" to "RPI-RP2"
    5. Unplug controller from PC
    6. Plug controller back into PC

    Specifications

    Version: Flatbox Rev4 Platform: Windows 10 21H2 & EndeavourOS

    opened by ktrieun 2
  • PCB design alternatives?

    PCB design alternatives?

    Don't have much experience with PCB design. I've been checking JLCPCB the past couple months, and a couple parts have been out of stock. Would it be possible to replace some of the parts with alternatives? Would it require a new gerber file? (this is specifically for rev4) JLCPCB

    opened by PutPasswordHere 2
  • Consider Kailh v2/Cherry/Gateron low profile cross style switches

    Consider Kailh v2/Cherry/Gateron low profile cross style switches

    These switches can use the keycap with the cross-style form. This opens much more options to choose from, like these:

    Which could help people without access to good quality 3d printers and make their enclosures from wood, cardboard or other materials.

    image

    enhancement 
    opened by CallMeAreks 2
  • Centered-thumb design?

    Centered-thumb design?

    I'd love a variant of this that has the thumb button centered on the panel. This requires essentially adding some padding to the left side of the chassis. See for example the original HitBox Arcade.

    enhancement 
    opened by henrebotha 0
  • Consider RP2040-Zero variant

    Consider RP2040-Zero variant

    I've just seen this tiny Pico alternative https://www.aliexpress.com/item/1005003504006451.html which looks like it should be easy to design around and would allow for a much cheaper non-SMD RP2040 version of the flatbox. It has a variant that comes with pin headers as well, which would make the soldering really easy because if you had holes for all the pins on your PCB the builder would only have to solder on one side. Also it has USB C!

    enhancement 
    opened by JonnyHaystack 0
Owner
Jacek Fedoryński
Jacek Fedoryński
CC2500 Low-Cost Low-Power 2.4 GHz RF Transceiver driver for esp-idf

esp-idf-cc2500 CC2500 Low-Cost Low-Power 2.4 GHz RF Transceiver driver for esp-idf. I ported from this. 2.00mm pitch External Antena 1.27mm pitch PCB

null 3 May 29, 2022
A fast and fun layout manager for FLTK

Fl_Flow A fast and fun layout manager for FLTK Fl_Flow is a layout manager for FLTK which works in a largely different manner to existing systems you

null 33 May 20, 2022
Miryoku is an ergonomic, minimal, orthogonal, and universal keyboard layout.

Miryoku is an ergonomic, minimal, orthogonal, and universal keyboard layout. This is the Miryoku implementation for QMK.

Manna Harbour 57 Jun 21, 2022
Config files for my GitHub profile.

Files to build the PicoMite. MMBasic running on the Raspberry Pi Pico NB: This should be built against pico-sdk version 1.3. Previous versions were bu

null 78 Jun 27, 2022
Qtile ISO profile for building Woof OS using `archiso` with zen kernel

iso-profile ISO profile for Woof OS ISO profile for building Woof OS using archiso Building the ISO profile into an ISO If you are on an Arch based sy

Woof OS 0 Jan 27, 2022
A simple website layout.

my_website A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if th

Alireza 2 Nov 16, 2021
Miryoku is an ergonomic, minimal, orthogonal, and universal keyboard layout

Miryoku is an ergonomic, minimal, orthogonal, and universal keyboard layout. Miryoku KMonad is the Miryoku implementation for KMonad.

Manna Harbour 16 May 30, 2022
Monitor based on perf_event: split-lock, irq-off, profile, task-state, watchdog, kmemleak, kvm-exit, mpdelay

基于perf的监控框架 基于libperf和libtraceevent库实现简单的监控框架,提供比perf更灵活的特性。 数据不落盘。 数据过滤,基于tracepoint的过滤机制,减少数据量。 数据实时处理并输出。不需要存盘后再处理。 基于perf_event_open系统调用。 虽然比perf更

null 8 Jun 24, 2022
Config files for my GitHub profile.

#include <stdio.h> #include <math.h> #include <stdlib.h> int main() { // declaration of local variable op; int op, n1, n2; float res; char ch; do { //

null 1 Dec 22, 2021
MK7_Speedometer - Sources used for the CTGP-7 speedometers, including the layout files and the C++ code

Mario Kart 7 Speedometer Here are the sources used in CTGP-7 to load extra UI elements. This sources can be used in a standaolne plugin as long as you

PabloMK7 4 Feb 8, 2022
Registry viewer, editor and profile saver

Registry Profiler This app allows certain registry values like the ones for brightness & volume to change and saved into profiles. The first menu give

Codiak 4 Feb 6, 2022
RemixDB: A read- and write-optimized concurrent KV store. Fast point and range queries. Extremely low write-amplification.

REMIX and RemixDB The REMIX data structure was introduced in paper "REMIX: Efficient Range Query for LSM-trees", FAST'21. This repository maintains a

Xingbo Wu 72 Jun 26, 2022
🪴💧 A Bluetooth Low Energy (BLE) soil moisture sensor.

b-parasite b-parasite is an open source Bluetooth Low Energy (BLE) soil moisture and ambient temperature/humidity sensor. Features Soil moisture senso

null 487 Jun 24, 2022
esp32 cam digital low latency fpv

esp32-cam-fpv esp32 cam digital, low latency FPV This project uses a modified esp-camera component running on an AI Thinker board to send low-latency

null 92 Jun 28, 2022
mCube's ultra-low-power wake-on-motion 3-axis accelerometer

MC3635 mCube's ultra-low-power wake-on-motion 3-axis accelerometer Based on mCube's Arduino demo driver, this sketch is specific for the MC3635 3-axis

Kris Winer 3 Jun 2, 2021
frost is a programming language with a focus on low-friction systems programming.

❄️ frost frost programming language About frost is a programming language with a focus on low-friction systems programming.

null 4 Nov 12, 2021
Bluetooth low energy (BLE) tracker for ESP32

BLEcker Bluetooth low energy (BLE) tracker for ESP32 This software is written for ESP32 boards to track BLE devices. It can be used for your smart hom

Vörös Ákos 39 Jun 23, 2022
A couple of demos showing how to use the Ultra Low Power coprocessor on the ESP32

ESP32 Ultra Low Power (ULP) coprocessor You can watch a video explanation of this code here This repo contains two demo project: ulp-gpio Shows you ho

atomic14 5 Jan 21, 2022
High-level interface for low-level programming

Singeli Singeli is now able to compile useful programs to C, but it's very rough around the edges, with poor error reporting. We are beginning to use

Marshall Lochbaum 27 Jun 14, 2022